- 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
-
- 16 Mar, 2009 1 commit
-
-
dias@eecs.tufts.edu authored
1. Stack overflow fixed by making dataflow monad strict in the state. 2. Out of memory fixed by "forgetting" lastoutfacts in the dataflow monad where we should. We were creating an unnecessarily long list that grew exponentially...
-
- 03 Mar, 2009 1 commit
-
-
dias@eecs.harvard.edu authored
Among others: - Fixed Stg->C-- translation of let-no-escapes -- it's important to use the right continuation... - Fixed infinite recursion in X86 backend (shortcutJump mishandled infinite loops) - Fixed yet another wrong calling convention -- primops take args only in vanilla regs, but they may return results on the stack! - Removed StackInfo from LGraph and Block -- now in LastCall and CmmZ - Updated avail-variable and liveness code
-
- 17 Oct, 2008 1 commit
-
-
dias@eecs.harvard.edu authored
The interesting examples talk about our story with heap checks in case alternatives and our story with the case scrutinee as a Boolean.
-
- 16 Oct, 2008 1 commit
-
-
dias@eecs.harvard.edu authored
o The linear-scan register allocator sometimes allocated a block before allocating one of its predecessors, which could lead to inconsistent allocations. Now, we allocate a block only if a predecessor has set the "incoming" assignments for the block (or if it's the procedure's entry block). o Also commented out some tracing code on the new codegen path.
-
- 14 Oct, 2008 1 commit
-
-
dias@eecs.harvard.edu authored
Before: building a closure that would build an SRT given the top-level SRT. It was somewhat difficult to understand the control flow, and it may have had held onto some data structures long after they should be dead. Now, I just bundle the info we need about CAFs along with the procedure and directly call a new top-level function to build the SRTs later.
-
- 13 Oct, 2008 2 commits
-
-
dias@eecs.harvard.edu authored
-
dias@eecs.harvard.edu authored
-