1. 30 Mar, 2010 1 commit
  2. 07 Apr, 2010 5 commits
  3. 06 Apr, 2010 5 commits
  4. 01 Apr, 2010 3 commits
    • Simon Marlow's avatar
      fix bug in migrateThread() · 20fcaaba
      Simon Marlow authored
      20fcaaba
    • Simon Marlow's avatar
      Remove the IND_OLDGEN and IND_OLDGEN_PERM closure types · 70a2431f
      Simon Marlow authored
      These are no longer used: once upon a time they used to have different
      layout from IND and IND_PERM respectively, but that is no longer the
      case since we changed the remembered set to be an array of addresses
      instead of a linked list of closures.
      70a2431f
    • Simon Marlow's avatar
      Change the representation of the MVar blocked queue · f4692220
      Simon Marlow authored
      The list of threads blocked on an MVar is now represented as a list of
      separately allocated objects rather than being linked through the TSOs
      themselves.  This lets us remove a TSO from the list in O(1) time
      rather than O(n) time, by marking the list object.  Removing this
      linear component fixes some pathalogical performance cases where many
      threads were blocked on an MVar and became unreachable simultaneously
      (nofib/smp/threads007), or when sending an asynchronous exception to a
      TSO in a long list of thread blocked on an MVar.
      
      MVar performance has actually improved by a few percent as a result of
      this change, slightly to my surprise.
      
      This is the final cleanup in the sequence, which let me remove the old
      way of waking up threads (unblockOne(), MSG_WAKEUP) in favour of the
      new way (tryWakeupThread and MSG_TRY_WAKEUP, which is idempotent).  It
      is now the case that only the Capability that owns a TSO may modify
      its state (well, almost), and this simplifies various things.  More of
      the RTS is based on message-passing between Capabilities now.
      f4692220
  5. 30 Mar, 2010 1 commit
  6. 01 Apr, 2010 1 commit
  7. 29 Mar, 2010 1 commit
  8. 30 Mar, 2010 1 commit
  9. 29 Mar, 2010 3 commits
    • Simon Marlow's avatar
    • Simon Marlow's avatar
      tiny GC optimisation · 1373cd30
      Simon Marlow authored
      1373cd30
    • 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
  10. 01 Apr, 2010 2 commits
  11. 26 Mar, 2010 1 commit
  12. 25 Mar, 2010 2 commits
  13. 31 Mar, 2010 1 commit
  14. 29 Mar, 2010 1 commit
  15. 30 Mar, 2010 1 commit
  16. 03 Apr, 2010 3 commits
  17. 01 Apr, 2010 1 commit
  18. 31 Mar, 2010 2 commits
    • Ian Lynagh's avatar
      Pass "-i org.haskell.GHC" to packagemaker when building the OS X installer · db9f94f7
      Ian Lynagh authored
      This seems to fix this failure:
      [...]
      ** BUILD SUCCEEDED **
      rm -f -f GHC-system.pmdoc/*-contents.xml
      /Developer/usr/bin/packagemaker -v --doc GHC-system.pmdoc\
                   -o /Users/ian/to_release/ghc-6.12.1.20100330/GHC-6.12.1.20100330-i386.pkg
      2010-03-31 15:08:15.695 packagemaker[13909:807] Setting to : 0 (null)
      2010-03-31 15:08:15.709 packagemaker[13909:807] Setting to : 0 org.haskell.glasgowHaskellCompiler.ghc.pkg
      2010-03-31 15:08:15.739 packagemaker[13909:807] relocate: (null) 0
      2010-03-31 15:08:15.740 packagemaker[13909:807] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSXMLDocument initWithXMLString:options:error:]: nil argument'
      2010-03-31 15:08:15.741 packagemaker[13909:807] Stack: (
          2511962091,
          2447007291,
          2511961547,
          2511961610,
          2432803204,
          453371,
          447720,
          436209,
          435510,
          9986,
          9918
      )
      make[1]: *** [framework-pkg] Trace/BPT trap
      make: *** [framework-pkg] Error 2
      db9f94f7
    • Ian Lynagh's avatar
      Use machdepCCOpts when compiling the file to toggle -(no-)rtsopts · 07846c5a
      Ian Lynagh authored
      Should fix toggling on OS X "Snow Leopard". Diagnosed by Roman Leshchinskiy.
      07846c5a
  19. 30 Mar, 2010 5 commits