1. 07 Aug, 2000 1 commit
    • qrczak's avatar
      [project @ 2000-08-07 23:37:19 by qrczak] · 4b172698
      qrczak authored
      Now Char, Char#, StgChar have 31 bits (physically 32).
      "foo"# is still an array of bytes.
      
      CharRep represents 32 bits (on a 64-bit arch too). There is also
      Int8Rep, used in those places where bytes were originally meant.
      readCharArray, indexCharOffAddr etc. still use bytes. Storable and
      {I,M}Array use wide Chars.
      
      In future perhaps all sized integers should be primitive types. Then
      some usages of indexing primops scattered through the code could
      be changed to then-available Int8 ones, and then Char variants of
      primops could be made wide (other usages that handle text should use
      conversion that will be provided later).
      
      I/O and _ccall_ arguments assume ISO-8859-1. UTF-8 is internally used
      for string literals (only).
      
      Z-encoding is ready for Unicode identifiers.
      
      Ranges of intlike and charlike closures are more easily configurable.
      
      I've probably broken nativeGen/MachCode.lhs:chrCode for Alpha but I
      don't know the Alpha assembler to fix it (what is zapnot?). Generally
      I'm not sure if I've done the NCG changes right.
      
      This commit breaks the binary compatibility (of course).
      
      TODO:
      * is* and to{Lower,Upper} in Char (in progress).
      * Libraries for text conversion (in design / experiments),
        to be plugged to I/O and a higher level foreign library.
      * PackedString.
      * StringBuffer and accepting source in encodings other than ISO-8859-1.
      4b172698
  2. 26 Apr, 2000 1 commit
  3. 25 Apr, 2000 1 commit
  4. 05 Apr, 2000 1 commit
  5. 04 Apr, 2000 1 commit
  6. 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.
      
      rts/parallel/:
        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.
      
      rts/:
        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)
      
      includes/:
        Updated GranSim macros in PrimOps.h.
      
      lib/std:
        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.
      
      hslibs/lang/:
        Same as above (in Foreign(Obj).lhs, Weak.lhs, IOExts.lhs etc).
      
      -- HWL
      dd4c28a9
  7. 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
      way.
      
      	- 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.
      3ddfe34b
  8. 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
      #include).
      0d5d32bf
  9. 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
  10. 15 Oct, 1999 1 commit
    • sewardj's avatar
      [project @ 1999-10-15 11:02:06 by sewardj] · dfb12323
      sewardj authored
      Added basic support for foreign export dynamic.
      
      Many aspects of it are still broken:
      * Only supports x86-linux.
      * The range of allowable types is small: Char Int Float Double
        Addr and Word.
      * Adjustor thunks are never freed.
      * Returning Doubles or Floats doesn't work at all.
      
      I expect to fix some of these shortly.  foreign import also
      needs redoing, so it can accept any number of arguments of
      any type.
      
      Also:
      * Fixed setRtsFlags in Evaluator.c to make it endian-independent.
      * Fixed raisePrim in Evaluator.c so things like division by zero,
        array index errors, etc, throw an exception instead of
        terminating StgHugs.  raisePrim is renamed makeErrorCall.
      dfb12323
  11. 06 Jul, 1999 1 commit
    • sof's avatar
      [project @ 1999-07-06 09:42:38 by sof] · f86b9ce4
      sof authored
      Redo previous commit to cut down on the use of COMPILING_RTS where
      possible - SchedAPI.h is now an RTS internal header file which
      RtsAPI.h no longer includes.
      f86b9ce4
  12. 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
  13. 04 May, 1999 1 commit
  14. 03 Mar, 1999 1 commit
  15. 05 Feb, 1999 1 commit
  16. 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
  17. 02 Dec, 1998 1 commit