1. 19 Sep, 2010 1 commit
    • Edward Z. Yang's avatar
      Interruptible FFI calls with pthread_kill and CancelSynchronousIO. v4 · 83d563cb
      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.
      83d563cb
  2. 14 Sep, 2010 1 commit
    • Ian Lynagh's avatar
      Remove (most of) the FiniteMap wrapper · e95ee1f7
      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.
      e95ee1f7
  3. 13 Sep, 2010 2 commits
  4. 09 Mar, 2010 1 commit
  5. 18 Sep, 2009 2 commits
  6. 06 Nov, 2009 1 commit
    • Ben.Lippmeier@anu.edu.au's avatar
      * Refactor CLabel.RtsLabel to CLabel.CmmLabel · a02e7f40
      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
         
      a02e7f40
  7. 18 Oct, 2009 1 commit
  8. 24 Jul, 2009 1 commit
  9. 07 Jul, 2009 1 commit
  10. 16 Mar, 2009 1 commit
    • dias@eecs.tufts.edu's avatar
      stack overflows and out of memory's · 5dc8b425
      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...
      5dc8b425
  11. 03 Mar, 2009 1 commit
    • dias@eecs.harvard.edu's avatar
      A few bug fixes; some improvements spurred by paper writing · 31a9d048
      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
      31a9d048
  12. 17 Oct, 2008 1 commit
  13. 16 Oct, 2008 1 commit
    • dias@eecs.harvard.edu's avatar
      Fixed linear regalloc bug, dropped some tracing code · c62b824e
      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.
      c62b824e
  14. 14 Oct, 2008 1 commit
    • dias@eecs.harvard.edu's avatar
      Clarify the SRT building process · e367ebeb
      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.
      e367ebeb
  15. 13 Oct, 2008 2 commits