cvs commit: hugs98/lib Prelude.hs hugs98/lib/exts ConcBase.hs

Alastair Reid reid@glass.cse.ogi.edu
Tue, 3 Apr 2001 12:29:27 -0700


reid        2001/04/03 12:29:27 PDT

  Modified files:
    lib                  Prelude.hs 
    lib/exts             ConcBase.hs 
  Log:
  When a thread blocks on an MVar, we have to take the complete state of
  the thread and store it in the MVar.  This used to be easy because the
  state was all in the success continuation but exception handlers live
  on the stack so we have to unwind the stack making a list of all the
  exception handlers and store that list of exception handlers into the
  MVar too.  This is done by returning a Hugs_BlockThread object.  When
  catch sees one of these, it adds a Hugs_Catch into the object and
  returns Hugs_BlockThread again.  Eventually, this gets up to the top
  thread loop which, finally, does the write into the MVar.
  
  Trivial changes:
  o Improved error messages if a forked thread ends in error or exception
  o Replaced the word "process" with "thread" in comments.
    "process" implies some measure of isolation (namespace, heap, file
    descriptors, etc.) whereas "thread" just impliues a separate thread of
    control.  These are _not_ processes!
    [Hey, I work on operating systems these days - they're fussy about
    these definitions.]
  
  Revision  Changes    Path
  1.8       +8 -3      hugs98/lib/Prelude.hs
  1.4       +10 -10    hugs98/lib/exts/ConcBase.hs