1. 15 Jun, 2013 2 commits
    • aljee@hyper.cx's avatar
      Allow multiple C finalizers to be attached to a Weak# · d61c623e
      aljee@hyper.cx authored
      The commit replaces mkWeakForeignEnv# with addCFinalizerToWeak#.
      This new primop mutates an existing Weak# object and adds a new
      C finalizer to it.
      
      This change removes an invariant in MarkWeak.c, namely that the relative
      order of Weak# objects in the list needs to be preserved across GC. This
      makes it easier to split the list into per-generation structures.
      
      The patch also removes a race condition between two threads calling
      finalizeWeak# on the same WEAK object at that same time.
      d61c623e
    • ian@well-typed.com's avatar
      Optimization for takeMVar/putMVar when MVar left empty; fixes #7923 · 5d9e686c
      ian@well-typed.com authored
      We only need to apply the write barrier to an MVar when it acquires
      a reference to live data; when the MVar is left empty in the case
      of a takeMVar/putMVar, we can save a memory reference.
      
      Patch from Edward Z. Yang.
      5d9e686c
  2. 14 Jun, 2013 2 commits
  3. 13 Jun, 2013 2 commits
  4. 12 Jun, 2013 4 commits
  5. 11 Jun, 2013 6 commits
  6. 10 Jun, 2013 4 commits
  7. 09 Jun, 2013 10 commits
  8. 08 Jun, 2013 1 commit
  9. 07 Jun, 2013 1 commit
  10. 06 Jun, 2013 8 commits