1. 16 Jan, 2001 1 commit
  2. 19 Dec, 2000 1 commit
  3. 11 Dec, 2000 1 commit
  4. 04 Dec, 2000 1 commit
  5. 13 Nov, 2000 1 commit
  6. 01 Nov, 2000 1 commit
    • simonmar's avatar
      [project @ 2000-11-01 11:41:47 by simonmar] · 39a99171
      simonmar authored
      Add a basic "front panel" for GHC-compiled programs.
      
      How to use it:
      
      	- re-autoconf & configure to detect GTK+
      
      	- add "GhcRtsWithFrontPanel = YES" to mk/build.mk
      
      	- rebuild the RTS
      
      	- compile up a program, add `gtk-config --libs` to the
      	  link command line
      
      	- run with program with +RTS -f,
      
      	- sit back & watch the show :-)  Programs with lots of
      	  heap-resident data are the most interesting.  For extra
      	  kicks, turn up the number of generations & steps like so:
      	  +RTS -f -G5 -T3.
      
      	- Bootstrap your compiler, and see in glorious technicolor
      	  just how much of a lumbering beast GHC really is.
      
      This is a work in progress.  There's lots more stuff we could display
      on the panel: suggestions/comments are of course welcome.  The window
      layout was designed with GLADE, I'll commit the config file shortly.
      
      I haven't quite figured out how we're going to integrate this with the
      release yet (ie. whether we'll distribute two separate RTS's or what).
      39a99171
  7. 14 Jul, 2000 1 commit
  8. 26 Apr, 2000 1 commit
  9. 14 Apr, 2000 1 commit
    • sewardj's avatar
      [project @ 2000-04-14 15:18:05 by sewardj] · 9ff75d08
      sewardj authored
      Clean up the runtime heap before deleting modules (and, currently, after
      every evaluation) so that the combined system can safely throw away
      modules and info tables without creating dangling refs from the heap.
      9ff75d08
  10. 14 Feb, 2000 1 commit
  11. 12 Jan, 2000 1 commit
  12. 09 Nov, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-11-09 15:46:49 by simonmar] · 30681e79
      simonmar authored
      A slew of SMP-related changes.
      
       - New locking scheme for thunks: we now check whether the thunk
         being entered is in our private allocation area, and if so
         we don't lock it.  Well, that's the upshot.  In practice it's
         a lot more fiddly than that.
      
       - I/O blocking is handled a bit more sanely now (but still not
         properly, methinks)
      
       - deadlock detection is back
      
       - remove old pre-SMP scheduler code
      
       - revamp the timing code.  We actually get reasonable-looking
         timing info for SMP programs now.
      
       - fix a bug in the garbage collector to do with IND_OLDGENs appearing
         on the mutable list of the old generation.
      
       - move BDescr() function from rts/BlockAlloc.h to includes/Block.h.
      
       - move struct generation and struct step into includes/StgStorage.h (sigh)
      
       - add UPD_IND_NOLOCK for updating with an indirection where locking
         the black hole is not required.
      30681e79
  13. 02 Nov, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-11-02 15:05:38 by simonmar] · f6692611
      simonmar authored
      This commit adds in the current state of our SMP support.  Notably,
      this allows the new way 's' to be built, providing support for running
      multiple Haskell threads simultaneously on top of any pthreads
      implementation, the idea being to take advantage of commodity SMP
      boxes.
      
      Don't expect to get much of a speedup yet; due to the excessive
      locking required to synchronise access to mutable heap objects, you'll
      see a slowdown in most cases, even on a UP machine.  The best I've
      seen is a 1.6-1.7 speedup on an example that did no locking (two
      optimised nfibs in parallel).
      
      	- new RTS -N flag specifies how many pthreads to start.
      
      	- new driver -smp flag, tells the driver to use way 's'.
      
      	- new compiler -fsmp option (not for user comsumption)
      	  tells the compiler not to generate direct jumps to
      	  thunk entry code.
      
      	- largely rewritten scheduler
      
      	- _ccall_GC is now done by handing back a "token" to the
      	  RTS before executing the ccall; it should now be possible
      	  to execute blocking ccalls in the current thread while
      	  allowing the RTS to continue running Haskell threads as
      	  normal.
      
      	- you can only call thread-safe C libraries from a way 's'
      	  build, of course.
      
      Pthread support is still incomplete, and weird things (including
      deadlocks) are likely to happen.
      f6692611
  14. 13 Oct, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-10-13 16:39:10 by simonmar] · 5c67176d
      simonmar authored
      Crude allocation-counting extension to ticky-ticky profiling.
      
      Allocations are counted against the closest lexically enclosing
      function closure, so you need to map the output back to the STG code.
      5c67176d
  15. 15 Sep, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-09-15 13:45:14 by simonmar] · 17315bf6
      simonmar authored
      Heap Profiling
      --------------
      
      This commit adds simple hp2ps-style heap profiling.  Just the '-h'
      option is supported so far.
      
      Heap profiles will show the top two cost centres on each cost centre
      stack.
      
      Time/Alloc profiles have been extended to aggregate the costs on a
      per-cost-centre basis and show the table of highest consuming cost
      centres before the full table of cost centre stacks.
      
      Profiles work best if '-caf-all' is used, especially when using
      one of the '-auto' flags.
      17315bf6
  16. 16 Mar, 1999 1 commit
    • simonm's avatar
      [project @ 1999-03-16 13:20:07 by simonm] · 456eca73
      simonm authored
      Improvements to the threading model.
      
         - asynchronous exceptions supported.
      
      	- killThread# can now raise an exception in the specified
      	  thread.  It's new type is
      
      		killThread# :: ThreadId# -> Exception -> IO ()
      
      	  High-level versions:
      
      		killThread :: ThreadId -> IO ()
      		raiseInThread :: ThreadId -> Exception -> IO ()
      
      	  (killThread raises a 'ThreadKilled' exception in the
      	   specified thread).
      
      	  If the thread has no exception handler, it is killed
      	  as before.  Otherwise, the exception is passed to
      	  the innermost CATCH_FRAME and the thread is woken up
      	  if it was blocked.  The current computation is
      	  suspended, instead of being replaced by the exception
      	  (as is the case with throw).
      
      	  Sending an exception to the current thread works too.
      
         - new primitive: myThreadId# :: IO ThreadId# and corresponding
           high-level version myThreadId :: IO ThreadId.
      
         - new primitive: yield# :: IO (), and yield :: IO ().
      
         - the TSO now contains a pointer to the resource currently blocked
           on (MVAR or BLACKHOLE_BQ).
      
        - Add a giant comment to TSO.h about what the various link fields
          are supposed to do, and invariants etc.
      456eca73
  17. 02 Mar, 1999 1 commit
  18. 26 Feb, 1999 1 commit
  19. 23 Feb, 1999 1 commit
  20. 17 Feb, 1999 1 commit
  21. 05 Feb, 1999 3 commits
  22. 02 Feb, 1999 1 commit
    • simonm's avatar
      [project @ 1999-02-02 14:21:28 by simonm] · bf739c10
      simonm authored
      - Add ticky counter for total bytes copied during GC.
      - Separate mutable list into two lists, a "mut once" list for
        old generation indirections and MUT_CONS cells, and a "mut many"
        list for mutable arrays, TSOs etc.  Objects on the "mut once" list
        will be eagerly promoted.
      bf739c10
  23. 28 Jan, 1999 1 commit
    • simonm's avatar
      [project @ 1999-01-28 15:04:00 by simonm] · f939293c
      simonm authored
      - Be a bit more accurate about +RTS -H<size>, now we attempt to estimate
        the amount of memory that will be needed at the next GC based on
        the amount of promotion going on, and adjust the size of the allocation
        area appropriately.
      
      - tidy up, move some stuff into Storage.c.
      f939293c
  24. 26 Jan, 1999 1 commit
  25. 21 Jan, 1999 1 commit
  26. 19 Jan, 1999 2 commits
  27. 13 Jan, 1999 1 commit
    • simonm's avatar
      [project @ 1999-01-13 17:25:37 by simonm] · 4391e44f
      simonm authored
      Added a generational garbage collector.
      
      The collector is reliable but fairly untuned as yet.  It works with an
      arbitrary number of generations: use +RTS -G<gens> to change the
      number of generations used (default 2).
      
      Stats: +RTS -Sstderr is quite useful, but to really see what's going
      on compile the RTS with -DDEBUG and use +RTS -D32.
      
      ARR_PTRS removed - it wasn't used anywhere.
      
      Sanity checking improved:
      	- free blocks are now spammed when sanity checking is turned on
      	- a check for leaking blocks is performed after each GC.
      4391e44f
  28. 02 Dec, 1998 1 commit