1. 11 Oct, 2007 1 commit
    • Simon Marlow's avatar
      Add a proper write barrier for MVars · 1ed01a87
      Simon Marlow authored
      Previously MVars were always on the mutable list of the old
      generation, which meant every MVar was visited during every minor GC.
      With lots of MVars hanging around, this gets expensive.  We addressed
      this problem for MUT_VARs (aka IORefs) a while ago, the solution is to
      use a traditional GC write-barrier when the object is modified.  This
      patch does the same thing for MVars.
      
      TVars are still done the old way, they could probably benefit from the
      same treatment too.
      1ed01a87
  2. 10 Oct, 2007 2 commits
    • Simon Marlow's avatar
      we need to #include "Stg.h" first, we can't rely on GHC to inject it · 53d57aa3
      Simon Marlow authored
      This fixes the unreg build, and in general building the RTS code
      via-C. I'm not sure at what stage this was broken, but I think it
      was working accidentally before.
      53d57aa3
    • Simon Marlow's avatar
      GHCi: use non-updatable thunks for breakpoints · 27779403
      Simon Marlow authored
      The extra safe points introduced for breakpoints were previously
      compiled as normal updatable thunks, but they are guaranteed
      single-entry, so we can use non-updatable thunks here.  This restores
      the tail-call property where it was lost in some cases (although stack
      squeezing probably often recovered it), and should improve
      performance.
      27779403
  3. 09 Oct, 2007 2 commits
  4. 05 Oct, 2007 2 commits
  5. 27 Sep, 2007 3 commits
  6. 26 Sep, 2007 1 commit
  7. 25 Sep, 2007 1 commit
  8. 17 Sep, 2007 1 commit
    • Simon Marlow's avatar
      FIX #1038: failure of selector-thunk machinery to do its job · 2018c430
      Simon Marlow authored
      After a couple of abortive attempts, I think I've got this right.
      When the GC sees a chain of the form 
      
         snd (_, snd (_, snd (_, ...)))
      
      it can now deal with an arbitrary nesting depth, whereas previously it
      had a depth limit which was necessitated by the use of recursion.  Now
      we chain all the selector thunks together in the heap, and go back and
      update them all when we find the value at the end of the chain.
      
      While I was here I removed some old cruft in eval_thunk_selector()
      which was carefully manintaing invariants that aren't necessary any
      more, the main one being that evacuate() can safely be passed a
      to-space pointer now.
      
      In addition to validate I've tested building a stage3 compiler with
      and without +RTS -c, so I'm reasonably sure this is safe.
      2018c430
  9. 14 Sep, 2007 1 commit
  10. 16 Sep, 2007 2 commits
  11. 17 Sep, 2007 3 commits
  12. 16 Sep, 2007 1 commit
    • sven.panne@aedion.de's avatar
      Keep valgrind happy when calling timer_create · 3db3a003
      sven.panne@aedion.de authored
      Fill all of the sigevent structure with zeroes before individual fields are
      set. Although not strictly necessary, this keeps tools like valgrind from
      complaining about passing uninitialized data, which is a good thing.
      
      MERGE TO STABLE
      3db3a003
  13. 12 Sep, 2007 1 commit
  14. 06 Aug, 2007 1 commit
  15. 11 Sep, 2007 1 commit
    • Simon Marlow's avatar
      FIX #1466 (partly), which was causing concprog001(ghci) to fail · 066f1028
      Simon Marlow authored
      An AP_STACK now ensures that there is at least AP_STACK_SPLIM words of
      stack headroom available after unpacking the payload.  Continuations
      that require more than AP_STACK_SPLIM words of stack must do their own
      stack checks instead of aggregating their stack usage into the parent
      frame.  I have made this change for the interpreter, but not for
      compiled code yet - we should do this in the glorious rewrite of the
      code generator.
      066f1028
  16. 10 Sep, 2007 2 commits
  17. 06 Sep, 2007 2 commits
  18. 05 Sep, 2007 3 commits
  19. 04 Sep, 2007 1 commit
  20. 03 Sep, 2007 6 commits
  21. 02 Sep, 2007 2 commits
  22. 30 Aug, 2007 1 commit