- 17 Jul, 2012 2 commits
-
-
Simon Marlow authored
-
Simon Marlow authored
-
- 05 Jul, 2012 1 commit
-
-
Simon Marlow authored
-
- 04 Jul, 2012 1 commit
-
-
Simon Marlow authored
-
- 22 Jun, 2012 1 commit
-
-
Ian Lynagh authored
Technically the behaviour of sortWith has changed, as it used x `le` y = get_key x < get_key y (note "<" rather than "<="), but I assume that that was just a mistake.
-
- 13 Jun, 2012 2 commits
-
-
Ian Lynagh authored
-
Ian Lynagh authored
We can now get the Platform from the DynFlags inside an SDoc, so we no longer need to pass the Platform in.
-
- 05 Jun, 2012 1 commit
-
-
Ian Lynagh authored
By using Haskell's debugIsOn rather than CPP's "#ifdef DEBUG", we don't need to kludge things to keep the warning checker happy etc.
-
- 15 Mar, 2012 2 commits
-
-
Simon Marlow authored
-
Simon Marlow authored
Also, do removeDeadAssignments instead of cmmLiveness before stack allocation, because the former also does liveness analysis, and we can do just one liveness analysis instead of two. The stack layout algorithm doesn't introduce any dead assignments, so this doesn't affect the generated code.
-
- 06 Mar, 2012 1 commit
-
-
Simon Marlow authored
We also generate much better code for safe foreign calls (and maybe also unsafe foreign calls) than previously. See the two new Notes: Note [lower safe foreign calls] Note [safe foreign call convention]
-
- 26 Feb, 2012 1 commit
-
-
Ian Lynagh authored
-
- 14 Feb, 2012 1 commit
-
-
Simon Marlow authored
-
- 08 Feb, 2012 2 commits
-
-
Simon Marlow authored
-
Simon Marlow authored
Also: - improvements to code generation: push slow-call continuations on the stack instead of generating explicit continuations - remove unused CmmInfo wrapper type (replace with CmmInfoTable) - squash Area and AreaId together, remove now-unused RegSlot - comment out old unused stack-allocation code that no longer compiles after removal of RegSlot
-
- 26 Jan, 2012 1 commit
-
-
Simon Marlow authored
This is so that we can process the Stg code in constant space. Before we were generating all the C-- up front, leading to a large space leak. I haven't converted the LLVM or C back ends to the incremental scheme, but it's not hard to do.
-
- 25 Jan, 2012 1 commit
-
-
Simon Marlow authored
-
- 19 Jan, 2012 1 commit
-
-
Simon Marlow authored
-
- 17 Jan, 2012 1 commit
-
-
Simon Marlow authored
-
- 05 Nov, 2011 1 commit
-
-
Ian Lynagh authored
-
- 04 Nov, 2011 1 commit
-
-
Ian Lynagh authored
We only use it for "compiler" sources, i.e. not for libraries. Many modules have a -fno-warn-tabs kludge for now.
-
- 02 Oct, 2011 1 commit
-
-
Ian Lynagh authored
And some knock-on changes
-
- 25 Aug, 2011 3 commits
-
-
Simon Marlow authored
-
CmmTop -> CmmDecl CmmPgm -> CmmGroup
-
Simon Marlow authored
-
- 07 Jul, 2011 1 commit
-
-
batterseapower authored
This is safe because GHC never generates a fast call to a data constructor worker: if the call is seen statically it will be eta-expanded and the allocation of the data will be inlined. We still need to export the _closure in case the constructor is used in an unapplied fashion.
-
- 05 Jul, 2011 1 commit
-
-
batterseapower authored
I observed that the [CmmStatics] within CmmData uses the list in a very stylised way. The first item in the list is almost invariably a CmmDataLabel. Many parts of the compiler pattern match on this list and fail if this is not true. This patch makes the invariant explicit by introducing a structured type CmmStatics that holds the label and the list of remaining [CmmStatic]. There is one wrinkle: the x86 backend sometimes wants to output an alignment directive just before the label. However, this can be easily fixed up by parameterising the native codegen over the type of CmmStatics (though the GenCmmTop parameterisation) and using a pair (Alignment, CmmStatics) there instead. As a result, I think we will be able to remove CmmAlign and CmmDataLabel from the CmmStatic data type, thus nuking a lot of code and failing pattern matches. This change will come as part of my next patch.
-
- 24 Jan, 2011 1 commit
-
-
Simon Marlow authored
This changes the new code generator to make use of the Hoopl package for dataflow analysis. Hoopl is a new boot package, and is maintained in a separate upstream git repository (as usual, GHC has its own lagging darcs mirror in http://darcs.haskell.org/packages/hoopl). During this merge I squashed recent history into one patch. I tried to rebase, but the history had some internal conflicts of its own which made rebase extremely confusing, so I gave up. The history I squashed was: - Update new codegen to work with latest Hoopl - Add some notes on new code gen to cmm-notes - Enable Hoopl lag package. - Add SPJ note to cmm-notes - Improve GC calls on new code generator. Work in this branch was done by: - Milan Straka <fox@ucw.cz> - John Dias <dias@cs.tufts.edu> - David Terei <davidterei@gmail.com> Edward Z. Yang <ezyang@mit.edu> merged in further changes from GHC HEAD and fixed a few bugs.
-
- 15 Dec, 2010 1 commit
-
-
Ian Lynagh authored
-
- 19 Sep, 2010 1 commit
-
-
Edward Z. Yang authored
This is patch that adds support for interruptible FFI calls in the form of a new foreign import keyword 'interruptible', which can be used instead of 'safe' or 'unsafe'. Interruptible FFI calls act like safe FFI calls, except that the worker thread they run on may be interrupted. Internally, it replaces BlockedOnCCall_NoUnblockEx with BlockedOnCCall_Interruptible, and changes the behavior of the RTS to not modify the TSO_ flags on the event of an FFI call from a thread that was interruptible. It also modifies the bytecode format for foreign call, adding an extra Word16 to indicate interruptibility. The semantics of interruption vary from platform to platform, but the intent is that any blocking system calls are aborted with an error code. This is most useful for making function calls to system library functions that support interrupting. There is no support for pre-Vista Windows. There is a partner testsuite patch which adds several tests for this functionality.
-
- 14 Sep, 2010 1 commit
-
-
Ian Lynagh authored
We still have insertList, insertListWith, deleteList which aren't in Data.Map, and foldRightWithKey which works around the fold(r)WithKey addition and deprecation.
-
- 13 Sep, 2010 2 commits
-
-
Ian Lynagh authored
-
simonpj@microsoft.com authored
This major patch implements the new OutsideIn constraint solving algorithm in the typecheker, following our JFP paper "Modular type inference with local assumptions". Done with major help from Dimitrios Vytiniotis and Brent Yorgey.
-
- 09 Mar, 2010 1 commit
-
-
simonpj@microsoft.com authored
-
- 18 Sep, 2009 2 commits
-
-
dias@cs.tufts.edu authored
-
dias@cs.tufts.edu authored
Wrote a generic function to extend dataflow results for safe foreign calls. Should be able to throw it away when we change the representation of safe foreign calls.
-
- 06 Nov, 2009 1 commit
-
-
Ben.Lippmeier@anu.edu.au authored
The type of the CmmLabel ctor is now CmmLabel :: PackageId -> FastString -> CmmLabelInfo -> CLabel - When you construct a CmmLabel you have to explicitly say what package it is in. Many of these will just use rtsPackageId, but I've left it this way to remind people not to pretend labels are in the RTS package when they're not. - When parsing a Cmm file, labels that are not defined in the current file are assumed to be in the RTS package. Labels imported like import label are assumed to be in a generic "foreign" package, which is different from the current one. Labels imported like import "package-name" label are marked as coming from the named package. This last one is needed for the integer-gmp library as we want to refer to labels that are not in the same compilation unit, but are in the same non-rts package. This should help remove the nasty #ifdef __PIC__ stuff from integer-gmp/cbits/gmp-wrappers.cmm
-
- 18 Oct, 2009 1 commit
-
-
Ben.Lippmeier@anu.edu.au authored
-
- 24 Jul, 2009 1 commit
-
-
Ian Lynagh authored
-
- 07 Jul, 2009 1 commit
-
-
Ian Lynagh authored
-