1. 21 Sep, 2010 4 commits
  2. 20 Sep, 2010 1 commit
  3. 14 Sep, 2010 1 commit
  4. 13 Sep, 2010 1 commit
  5. 26 Aug, 2010 1 commit
  6. 24 Jul, 2010 1 commit
  7. 05 Aug, 2010 1 commit
  8. 23 Jul, 2010 2 commits
  9. 20 Jul, 2010 1 commit
  10. 13 Jul, 2010 1 commit
  11. 08 Jul, 2010 1 commit
    • Simon Marlow's avatar
      New asynchronous exception control API (ghc parts) · ad3b79d2
      Simon Marlow authored
      As discussed on the libraries/haskell-cafe mailing lists
        http://www.haskell.org/pipermail/libraries/2010-April/013420.html
      
      This is a replacement for block/unblock in the asychronous exceptions
      API to fix a problem whereby a function could unblock asynchronous
      exceptions even if called within a blocked context.
      
      The new terminology is "mask" rather than "block" (to avoid confusion
      due to overloaded meanings of the latter).
      
      In GHC, we changed the names of some primops:
      
        blockAsyncExceptions#   -> maskAsyncExceptions#
        unblockAsyncExceptions# -> unmaskAsyncExceptions#
        asyncExceptionsBlocked# -> getMaskingState#
      
      and added one new primop:
      
        maskUninterruptible#
      
      See the accompanying patch to libraries/base for the API changes.
      ad3b79d2
  12. 01 Jun, 2010 1 commit
  13. 29 May, 2010 4 commits
  14. 19 May, 2010 1 commit
  15. 28 Apr, 2010 1 commit
  16. 29 Mar, 2010 1 commit
    • Simon Marlow's avatar
      New implementation of BLACKHOLEs · 5d52d9b6
      Simon Marlow authored
      This replaces the global blackhole_queue with a clever scheme that
      enables us to queue up blocked threads on the closure that they are
      blocked on, while still avoiding atomic instructions in the common
      case.
      
      Advantages:
      
       - gets rid of a locked global data structure and some tricky GC code
         (replacing it with some per-thread data structures and different
         tricky GC code :)
      
       - wakeups are more prompt: parallel/concurrent performance should
         benefit.  I haven't seen anything dramatic in the parallel
         benchmarks so far, but a couple of threading benchmarks do improve
         a bit.
      
       - waking up a thread blocked on a blackhole is now O(1) (e.g. if
         it is the target of throwTo).
      
       - less sharing and better separation of Capabilities: communication
         is done with messages, the data structures are strictly owned by a
         Capability and cannot be modified except by sending messages.
      
       - this change will utlimately enable us to do more intelligent
         scheduling when threads block on each other.  This is what started
         off the whole thing, but it isn't done yet (#3838).
      
      I'll be documenting all this on the wiki in due course.
      5d52d9b6
  17. 30 Mar, 2010 1 commit
  18. 03 Apr, 2010 1 commit
  19. 22 Jan, 2010 2 commits
  20. 20 Jan, 2010 3 commits
  21. 16 Dec, 2009 1 commit
    • howard_b_golden@yahoo.com's avatar
      FIX #2615 (linker scripts in .so files) · e020e387
      howard_b_golden@yahoo.com authored
      This patch does not apply to Windows. It only applies to systems with
      ELF binaries.
      
      This is a patch to rts/Linker.c to recognize linker scripts in .so
      files and find the real target .so shared library for loading.
      e020e387
  22. 03 Dec, 2009 1 commit
  23. 02 Dec, 2009 1 commit
  24. 01 Dec, 2009 1 commit
    • Simon Marlow's avatar
      Make allocatePinned use local storage, and other refactorings · 5270423a
      Simon Marlow authored
      This is a batch of refactoring to remove some of the GC's global
      state, as we move towards CPU-local GC.  
      
        - allocateLocal() now allocates large objects into the local
          nursery, rather than taking a global lock and allocating
          then in gen 0 step 0.
      
        - allocatePinned() was still allocating from global storage and
          taking a lock each time, now it uses local storage. 
          (mallocForeignPtrBytes should be faster with -threaded).
          
        - We had a gen 0 step 0, distinct from the nurseries, which are
          stored in a separate nurseries[] array.  This is slightly strange.
          I removed the g0s0 global that pointed to gen 0 step 0, and
          removed all uses of it.  I think now we don't use gen 0 step 0 at
          all, except possibly when there is only one generation.  Possibly
          more tidying up is needed here.
      
        - I removed the global allocate() function, and renamed
          allocateLocal() to allocate().
      
        - the alloc_blocks global is gone.  MAYBE_GC() and
          doYouWantToGC() now check the local nursery only.
      5270423a
  25. 14 Nov, 2009 1 commit
  26. 11 Nov, 2009 3 commits
    • Simon Marlow's avatar
      Second attempt to fix #1185 (forkProcess and -threaded) · 2d5e052d
      Simon Marlow authored
      Patch 1/2: second part of the patch is to libraries/base
      
      This time without dynamic linker hacks, instead I've expanded the
      existing rts/Globals.c to cache more CAFs, specifically those in
      GHC.Conc.  We were already using this trick for signal handlers, I
      should have realised before.
      
      It's still quite unsavoury, but we can do away with rts/Globals.c in
      the future when we switch to a dynamically-linked GHCi.
      2d5e052d
    • Simon Marlow's avatar
      Support for DragonFly BSD · a35d65c3
      Simon Marlow authored
      Patches from Goetz Isenmann <info@goetz-isenmann.de>, slightly updated
      for HEAD (the method for configuring platforms in configure.ac has
      changed).
      a35d65c3
    • chak@cse.unsw.edu.au.'s avatar
      Barf on unhandled Mach-O relocations in the ghci linker · 0b2de035
      chak@cse.unsw.edu.au. authored
      - It might be worthwhile to MERGE this to 6.12, BUT somebody should validate
        it on PPC/Mac OS X first.
      0b2de035
  27. 06 Nov, 2009 1 commit
    • Simon Marlow's avatar
      Rollback #1185 fix · c3685050
      Simon Marlow authored
      As far as I can tell, the hack I was using in rts/Linker.c won't work
      on OS X.  Back to the drawing board.
      
      rolling back:
      
      Tue Nov  3 16:05:47 GMT 2009  Simon Marlow <marlowsd@gmail.com>
        * Fix #1185 (RTS part, also needs corresponding change to libraries/base)
        GHC.Conc.ensureIOManagerIsRunning now creates an IO manager thread if
        one does not exist or has died/exited.
        
        Unfortunately this exposed a problem caused by the fact that we have
        two base packages, and hence two IO managers, in GHCi: see NOTE
        [io-manager-ghci] in rts/Linker.c.  The workaround can go away if/when
        we switch to a dynamically linked GHCi.
        
      
          M ./rts/Linker.c -6 +47
          M ./rts/Schedule.c +4
          M ./rts/package.conf.in +16
          M ./rts/posix/Signals.c -1 +7
          M ./rts/posix/Signals.h +2
      
      Wed Nov  4 10:11:03 GMT 2009  Simon Marlow <marlowsd@gmail.com>
        * hopefully fix validate breakage on OS X and Windows
      
          M ./rts/Linker.c -1 +1
      
      Wed Nov  4 16:27:40 GMT 2009  Simon Marlow <marlowsd@gmail.com>
        * fix build failure on Windows
      
          M ./rts/Linker.c -1 +1
      c3685050
  28. 04 Nov, 2009 1 commit