1. 23 Mar, 2001 1 commit
    • simonmar's avatar
      [project @ 2001-03-23 16:36:20 by simonmar] · 50027272
      simonmar authored
      Changes to support bootstrapping the compiler from .hc files.  It's
      not quite working yet, but it's not far off.
        - the biggest change is that any injected #includes are now placed in
          the .hc file at generation time, rather than compilation time.  I
          can't see any reason not to do this - it makes it clear by looking at
          the .hc file which files are being #included, it means one less
          temporary file at compilation time, and it means the .hc file is more
        - all the gruesomeness is in mk/bootstrap.mk, which handles building
          .hc files without a ghc driver.
  2. 15 Feb, 2001 1 commit
  3. 11 Feb, 2001 1 commit
    • simonmar's avatar
      [project @ 2001-02-11 17:51:07 by simonmar] · 6d35596c
      simonmar authored
      Bite the bullet and make GHCi support non-optional in the RTS.  GHC
      4.11 should be able to build GHCi without any additional tweaks now.
      - the Linker is split into two parts: LinkerBasic.c, containing the
        routines required by the rest of the RTS, and Linker.c, containing
        the linker proper, which is not referred to from the rest of the RTS.
        Only Linker.c requires -ldl, so programs which don't make use of the
        linker (everything except GHC, in other words) won't need -ldl.
  4. 08 Feb, 2001 1 commit
  5. 31 Jan, 2001 1 commit
  6. 29 Jan, 2001 1 commit
  7. 16 Jan, 2001 2 commits
  8. 15 Jan, 2001 1 commit
  9. 10 Jan, 2001 1 commit
  10. 15 Dec, 2000 1 commit
  11. 14 Dec, 2000 2 commits
  12. 11 Dec, 2000 1 commit
  13. 04 Dec, 2000 1 commit
  14. 14 Nov, 2000 1 commit
  15. 13 Nov, 2000 1 commit
  16. 09 Oct, 2000 1 commit
  17. 11 Sep, 2000 1 commit
    • sewardj's avatar
      [project @ 2000-09-11 11:17:09 by sewardj] · d4993e8b
      sewardj authored
      Initial primop support for the metacircular interpreter (GHCI).
      Only appears if you compile with -DGHCI; if not, the world is
      new primops:
         dataToTag#   -- now dereferences indirections before extracting tag
      new entry code
         mci_constr_entry          and
      being the direct and vectored return code fragments for interpreter
      created constructors.  Support for static constructors is not yet
      New handwritten .hc functions:
      being code to create various flavours of constructors from args
      on the stack.  An interface file to describe these will follow in
      a later commit.
  18. 02 Aug, 2000 1 commit
    • rrt's avatar
      [project @ 2000-08-02 14:13:26 by rrt] · 567b2505
      rrt authored
      Many fixes to DLLisation. These were previously covered up because code was
      leaking into the import libraries for DLLs, so the fact that some symbols
      were thought of as local rather than in another DLL wasn't a problem.
      The main problems addressed by this commit are:
      1. Fixes RTS symbols working properly when DLLised. They didn't before.
      2. Uses NULL instead of stg_error_entry, because DLL entry points can't be
         used as static initialisers.
      3. PrelGHC.hi-boot changed to be in package RTS, and export of PrelNum and
         PrelErr moved to PrelBase, so that references to primops & the like
         are cross-DLL as they should be.
      4. Pass imports around as Modules rather than ModuleNames, so that
         ModuleInitLabels can be checked to see if they're in a DLL or not.
  19. 17 Jul, 2000 1 commit
  20. 25 Jun, 2000 1 commit
  21. 27 Apr, 2000 1 commit
  22. 19 Apr, 2000 1 commit
  23. 18 Apr, 2000 1 commit
  24. 05 Apr, 2000 1 commit
  25. 03 Apr, 2000 1 commit
  26. 31 Mar, 2000 1 commit
    • hwloidl's avatar
      [project @ 2000-03-31 03:09:35 by hwloidl] · dd4c28a9
      hwloidl authored
      Numerous changes in the RTS to get GUM-4.06 working (currently works with
      parfib-ish programs). Most changes are isolated in the rts/parallel dir.
        The most important changes are a rewrite of the (un-)packing code (Pack.c)
        and changes in LAGA, GALA table operations (Global.c) expecially in
        rebuilding the tables during GC.
        Minor changes in Schedule.c, GC.c (interface to par specific root marking
        and evacuation), and lots of additions to Sanity.c (surprise ;-)
        Main.c change for startup: I use a new function rts_evalNothing to
        start non-main-PEs in a PAR || SMP setup (RtsAPI.c)
        Updated GranSim macros in PrimOps.h.
        Few changes in PrelHandle.c etc replacing ForeignObj by Addr in a PAR
        setup (we still don't support ForeignObjs or WeakPtrs in GUM).
        Typically use
          #define FILE_OBJECT	    Addr
        when dealing with files.
        Same as above (in Foreign(Obj).lhs, Weak.lhs, IOExts.lhs etc).
      -- HWL
  27. 14 Mar, 2000 1 commit
    • simonmar's avatar
      [project @ 2000-03-14 09:55:05 by simonmar] · 3ddfe34b
      simonmar authored
      Handle references from the RTS to the Prelude in a more consistent
      	- For statically-linked binaries, nothing has changed.
      	- For the interpreter, refs from the RTS to the Prelude
      	  are now indirected.  The indirections need to be
      	  filled in at some point during startup by calling
      	  fixupPreludeRefs (in Prelude.c).
      	- The CHARLIKE and INTLIKE tables are now handled in
      	  the same way for both Hugs and DLLs.
      Hugs will be broken for a short while until Julian sorts out the Hugs
      parts of this change.
  28. 13 Mar, 2000 1 commit
    • simonmar's avatar
      [project @ 2000-03-13 10:53:55 by simonmar] · 0d5d32bf
      simonmar authored
      Move Prelude.h from ghc/includes into ghc/rts.  It's essentially a
      list of the things from the Prelude that the RTS depends on, and isn't
      relevant to STG code.  Furthermore, this helps to clarify which parts
      of the RTS depend on things from the Prelude (by an explicity
  29. 01 Mar, 2000 1 commit
  30. 04 Feb, 2000 1 commit
    • simonmar's avatar
      [project @ 2000-02-04 11:18:05 by simonmar] · 7a463ddd
      simonmar authored
      Fix bug #2 in unregisterised RTS:
      forceIO had the same problem as catch#.  This bug has been here for a
      long time, not sure why we haven't noticed it before.
      Jules: that should get you back on the road.
  31. 30 Jan, 2000 1 commit
    • simonmar's avatar
      [project @ 2000-01-30 10:25:27 by simonmar] · ca2ab438
      simonmar authored
      Change the type of catch# to
      	catch# :: (W# -> (# W#, a #))
      	       -> (b -> W# -> (# W#, a #))
      	       -> W# -> (# W# , a #)
      where W# == State# RealWorld.  In other words, make it explicit that
      catch# is an IO operation and takes IO operations as arguments.  The
      previous type was too general, and resulted in catch# having the wrong
      arity which could cause mis-optimisations.
      The down side is that we now have to pass the state token around
      inside the primop instead of doing it in the Haskell wrapper, and
      raiseAsync() also has to build a PAP(handler,exception,realworld)
      instead of just a PAP(handler,exception) when it invokes a handler as
      a result of an async exception.
      I also added some optimisations to (un)?blockAsyncException to not
      grow the stack if it can be avoided, such as when we're about to block
      async exceptions and there's a blockAsyncExceptions_ret stack frame on
      the top of the stack.
  32. 14 Jan, 2000 2 commits
  33. 13 Jan, 2000 1 commit
    • hwloidl's avatar
      [project @ 2000-01-13 14:33:57 by hwloidl] · 1b28d4e1
      hwloidl authored
      Merged GUM-4-04 branch into the main trunk. In particular merged GUM and
      SMP code. Most of the GranSim code in GUM-4-04 still has to be carried over.
  34. 30 Nov, 1999 1 commit
  35. 02 Nov, 1999 2 commits
    • simonmar's avatar
      [project @ 1999-11-02 17:17:47 by simonmar] · 4ada7d7d
      simonmar authored
      Fix CAF_BLACKHOLE and BLACKHOLE_BQ entry code for SMP case (it was
      going into a busy locking state through comparing against the wrong
      info pointer)
    • 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
      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
      	- 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.
  36. 25 Aug, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-08-25 16:11:43 by simonmar] · c6ab4bfa
      simonmar authored
      Support for thread{WaitRead,WaitWrite,Delay}.  These should behave
      identically to the 3.02 implementations.
      We now have the virtual timer on during all program runs, which ticks
      at 50Hz by default.  This is used to implement threadDelay, so you
      won't get any better granularity than the tick frequency
      unfortunately.  It remains to be seen whether using the virtual timer
      will have a measurable impact on performance for non-threadDelaying
      All operations in the I/O subsystem should now be non-blocking with
      respect to other running Haskell threads.  It remains to be seen
      whether this will have a measurable performance impact on
      non-concurrent programs (probably not).