1. 21 May, 1999 1 commit
    • sof's avatar
      [project @ 1999-05-21 14:46:19 by sof] · 263aaaa5
      sof authored
      Made rts_evalIO() stricter, i.e.,
      
         rts_evalIO( action );
      
      will now essentially cause `action' to be applied
      to the following (imaginary) defn of `evalIO':
      
          evalIO :: IO a -> IO a
          evalIO action = action >>= \ x -> x `seq` return x
      
      instead of just
      
          evalIO :: IO a -> IO a
          evalIO action = action >>= \ x -> return x
      
      The old, lazier behaviour is now available via rts_evalLazyIO().
      263aaaa5
  2. 13 May, 1999 1 commit
    • simonm's avatar
      [project @ 1999-05-13 17:30:50 by simonm] · 589b7946
      simonm authored
      Support for "unregisterised" builds.  An unregisterised build doesn't
      use the assembly mangler, doesn't do tail jumping (uses the
      mini-interpreter), and doesn't use global register variables.
      
      Plenty of cleanups and bugfixes in the process.
      
      Add way 'u' to GhcLibWays to get unregisterised libs & RTS.
      
      [ note: not *quite* working fully yet... there's still a bug or two
        lurking ]
      589b7946
  3. 11 May, 1999 1 commit
    • keithw's avatar
      [project @ 1999-05-11 16:47:39 by keithw] · eb407ca1
      keithw authored
      (this is number 9 of 9 commits to be applied together)
      
        Usage verification changes / ticky-ticky changes:
      
        We want to verify that SingleEntry thunks are indeed entered at most
        once.  In order to do this, -ticky / -DTICKY_TICKY turns on eager
        blackholing.  We blackhole with new blackholes: SE_BLACKHOLE and
        SE_CAF_BLACKHOLE.  We will enter one of these if we attempt to enter
        a SingleEntry thunk twice.  Note that CAFs are dealt with in by
        codeGen, and ordinary thunks by the RTS.
      
        We also want to see how many times we enter each Updatable thunk.
        To this end, we have modified -ticky.  When -ticky is on, we update
        with a permanent indirection, and arrange that when we enter a
        permanent indirection we count the entry and then convert the
        indirection to a normal indirection.  This gives us a means of
        counting the number of thunks entered again after the first entry.
        Obviously this screws up profiling, and so you can't build a ticky
        and profiling compiler any more.
      
        Also a few other changes that didn't make it into the previous 8
        commits, but form a part of this set.
      eb407ca1
  4. 04 May, 1999 1 commit
  5. 23 Apr, 1999 1 commit
  6. 18 Mar, 1999 1 commit
  7. 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
  8. 15 Mar, 1999 1 commit
  9. 09 Mar, 1999 1 commit
  10. 02 Mar, 1999 1 commit
  11. 11 Feb, 1999 1 commit
    • simonm's avatar
      [project @ 1999-02-11 14:22:53 by simonm] · b41f38a4
      simonm authored
      - s/finalise/finalize/g
      - make finalize run the finalizer immediately, and wait for its completion
      - make mkWeak take a (Maybe (IO ())) for the finalizer argument
      - remove mkWeakNoFinalizer
      b41f38a4
  12. 05 Feb, 1999 2 commits
  13. 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
  14. 01 Feb, 1999 1 commit
  15. 27 Jan, 1999 1 commit
    • simonpj's avatar
      [project @ 1999-01-27 14:51:14 by simonpj] · 18976e61
      simonpj authored
      Finally!  This commits the ongoing saga of Simon's hygiene sweep
      
      FUNCTIONALITY
      ~~~~~~~~~~~~~
      a) The 'unused variable' warnings from the renamer work.  
      b) Better error messages here and there, esp type checker
      c) Fixities for Haskell 98 (maybe I'd done that before)
      d) Lazy reporting of name clashes for Haskell 98 (ditto)
      
      HYGIENE
      ~~~~~~~
      a) type OccName has its own module.  OccNames are represented
         by a single FastString, not three as in the last round.  This
         string is held in Z-encoded form; a decoding function decodes
         for printing in user error messages.  There's a nice tight
         encoding for (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
      
      b) type Module is a proper ADT, in module OccName
      
      c) type RdrName is a proper ADT, in its own module
      
      d) type Name has a new, somwhat tidier, representation
      
      e) much grunting in the renamer to get Provenances right.
         This makes error messages look better (no spurious qualifiers)
      18976e61
  16. 26 Jan, 1999 1 commit
    • simonm's avatar
      [project @ 1999-01-26 11:12:41 by simonm] · ed4cd6d4
      simonm authored
      - Add Stable Names
      
      - Stable pointers and stable names are now both provided by the
        "Stable" module in ghc/lib/exts.  Documentation is updated, and Foriegn
        still exports the stable pointer operations for backwards compatibility.
      ed4cd6d4
  17. 21 Jan, 1999 1 commit
  18. 18 Jan, 1999 1 commit
    • simonm's avatar
      [project @ 1999-01-18 15:21:37 by simonm] · c5a9b776
      simonm authored
      - BLACKHOLE_BQ is a mutable object, because new threads get added to
        its blocking_queue field.  Hence add a mut_link field and treat it
        as mutable in the garbage collector.
      
      - Change StgBlackHole to StgBlockingQueue while I'm at it.
      
      - Optimise evacuation of black holes: don't copy the padding
        words, just skip over them.
      
      - Several garbage collection fixes.
      
      - Improve sanity checking: now the older generations are fully checked
        at each GC.
      c5a9b776
  19. 15 Jan, 1999 2 commits
    • simonm's avatar
      [project @ 1999-01-15 17:57:03 by simonm] · 4ec89230
      simonm authored
      - Add new object BLACKHOLE_BQ: now a BLACKHOLE is defined as having an
        empty blocking queue, and the first time a thread blocks on a BLACKHOLE
        it is changed into a BLACKHOLE_BQ.
      
      - Remove UPD_INPLACE1 and replace it with UPD_IND in the two places it
        was used.  UPD_INPLACE1 wouldn't have worked in a generational setting.
      4ec89230
    • sewardj's avatar
      [project @ 1999-01-15 12:47:19 by sewardj] · f77b5a62
      sewardj authored
      Remove 'const' modifier from static closure declarations.  Static
      closures are meant to live in R/W data space.
      f77b5a62
  20. 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
  21. 02 Dec, 1998 1 commit