1. 08 Feb, 2006 1 commit
    • Simon Marlow's avatar
      make the smp way RTS-only, normal libraries now work with -smp · beb5737b
      Simon Marlow authored
      We had to bite the bullet here and add an extra word to every thunk,
      to enable running ordinary libraries on SMP.  Otherwise, we would have
      needed to ship an extra set of libraries with GHC 6.6 in addition to
      the two sets we already ship (normal + profiled), and all Cabal
      packages would have to be compiled for SMP too.  We decided it best
      just to take the hit now, making SMP easily accessible to everyone in
      GHC 6.6.
      Incedentally, although this increases allocation by around 12% on
      average, the performance hit is around 5%, and much less if your inner
      loop doesn't use any laziness.
  2. 27 Mar, 2005 1 commit
    • panne's avatar
      [project @ 2005-03-27 13:41:13 by panne] · 03dc2dd3
      panne authored
      * Some preprocessors don't like the C99/C++ '//' comments after a
        directive, so use '/* */' instead. For consistency, a lot of '//' in
        the include files were converted, too.
      * UnDOSified libraries/base/cbits/runProcess.c.
      * My favourite sport: Killed $Id$s.
  3. 07 Sep, 2004 1 commit
  4. 11 Dec, 2002 1 commit
    • simonmar's avatar
      [project @ 2002-12-11 15:36:20 by simonmar] · 0bffc410
      simonmar authored
      Merge the eval-apply-branch on to the HEAD
      This is a change to GHC's evaluation model in order to ultimately make
      GHC more portable and to reduce complexity in some areas.
      At some point we'll update the commentary to describe the new state of
      the RTS.  Pending that, the highlights of this change are:
        - No more Su.  The Su register is gone, update frames are one
          word smaller.
        - Slow-entry points and arg checks are gone.  Unknown function calls
          are handled by automatically-generated RTS entry points (AutoApply.hc,
          generated by the program in utils/genapply).
        - The stack layout is stricter: there are no "pending arguments" on
          the stack any more, the stack is always strictly a sequence of
          stack frames.
          This means that there's no need for LOOKS_LIKE_GHC_INFO() or
          LOOKS_LIKE_STATIC_CLOSURE() any more, and GHC doesn't need to know
          how to find the boundary between the text and data segments (BIG WIN!).
        - A couple of nasty hacks in the mangler caused by the neet to
          identify closure ptrs vs. info tables have gone away.
        - Info tables are a bit more complicated.  See InfoTables.h for the
        - As a side effect, GHCi can now deal with polymorphic seq.  Some bugs
          in GHCi which affected primitives and unboxed tuples are now
        - Binary sizes are reduced by about 7% on x86.  Performance is roughly
          similar, some programs get faster while some get slower.  I've seen
          GHCi perform worse on some examples, but haven't investigated
          further yet (GHCi performance *should* be about the same or better
          in theory).
        - Internally the code generator is rather better organised.  I've moved
          info-table generation from the NCG into the main codeGen where it is
          shared with the C back-end; info tables are now emitted as arrays
          of words in both back-ends.  The NCG is one step closer to being able
          to support profiling.
      This has all been fairly thoroughly tested, but no doubt I've messed
      up the commit in some way.
  5. 09 Aug, 2001 1 commit
  6. 02 Aug, 2001 1 commit
  7. 21 Mar, 2001 1 commit
    • sewardj's avatar
      [project @ 2001-03-21 10:56:04 by sewardj] · 44f0f21f
      sewardj authored
      RTS support for the ugly tagToEnum# hack.  Actually a very general
      thing -- just a bytecode unconditional jump, so we can do more general
      control-flow in BCOs.
  8. 06 Feb, 2001 1 commit
  9. 19 Dec, 2000 1 commit
  10. 12 Dec, 2000 1 commit
  11. 08 Dec, 2000 2 commits
  12. 06 Dec, 2000 1 commit
  13. 09 Oct, 2000 1 commit
    • daan's avatar
      [project @ 2000-10-09 11:18:46 by daan] · 91229807
      daan authored
      Lots of changes for Xmlambda. all changes are between
      #ifdef XMLAMBDA blocks.
      - new bytecodes for Inj constructors and witnesses
      - new primops for rows
      - code for calling foreign functions. This only works with
      'dynamic.c' but that is not checked in yet.
  14. 15 Jun, 2000 1 commit
    • daan's avatar
      [project @ 2000-06-15 13:23:51 by daan] · 3d124552
      daan authored
      Added new primitives and bytecodes that support
      code generation for XMLambda. All additions are
      surrounded by #ifdef XMLAMBDA.
      Most important additions:
      - Rows (n-tuples) which are implemented on top of Frozen Mutarrays
      - Inj (variant sums), which is implemented using a new constructor
      called Inj which contains both the value and an unboxed int
      which represents the index.
  15. 11 Apr, 2000 1 commit
    • panne's avatar
      [project @ 2000-04-11 20:44:17 by panne] · cd6055bc
      panne authored
      Cleaning up the foreign object naming mess:
         * Renamed the primop from makeForeignObj# to mkForeignObj#, this
           is more consistent with the old Foreign.mkForeignObj.
         * PrelForeign now exports makeForeignObj with the new signature.
         * freeFile.c now uses StgAddr instead of StgForeignObj, this
           removes the need for some fixIOs.
         * Lots of import tweaking to prepare The Big Foreign Renamer,
           which will move most of Foreign to ForeignObj, and FFI to Foreign.
      Note: I've tried to track the changes in the interpreter sources, but
      didn't test them.
  16. 20 Mar, 2000 1 commit
    • andy's avatar
      [project @ 2000-03-20 04:26:23 by andy] · b32b2d43
      andy authored
      Second attack at supporting threads inside STG Hugs.
      We now support most of the concurrency primitives.
      Also a wibble in Evaluator.c, letting Hugs compile.
  17. 07 Dec, 1999 1 commit
    • sewardj's avatar
      [project @ 1999-12-07 11:49:09 by sewardj] · eaf6532a
      sewardj authored
      Add i_ALLOC_CONSTR_big (== i_ALLOC_CONSTR with a 16-bit field
      denoting offset of into table).  The large constant tables in
      nofib/spectral/hartel/nucleic2 need this.
  18. 18 Nov, 1999 1 commit
  19. 16 Nov, 1999 1 commit
  20. 01 Nov, 1999 1 commit
  21. 29 Oct, 1999 1 commit
  22. 26 Oct, 1999 1 commit
    • sewardj's avatar
      [project @ 1999-10-26 17:27:25 by sewardj] · 6642714e
      sewardj authored
      Add foreign import/export implementations for x86 stdcall convention.
      Make parser notice calling conventions on f-i and f-x declarations,
      check they are supported on the platform Hugs is compiled on.  Pass
      them all the way through the code generator to the interpreter.
      Allow f-i/f-x decls to omit the calling convention, in which case
      ccall is used.  Remove calling convention from all such decls
      in the Prelude so it will work on any platform.
  23. 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.
      * 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.
  24. 27 Apr, 1999 1 commit
    • sewardj's avatar
      [project @ 1999-04-27 10:06:47 by sewardj] · b9ad54f9
      sewardj authored
      Changes to improve runtime performance of STG Hugs.
      -- Reorganisation of the evaluator (Evaluator.c).
      -- Changes to code emission (Assembler.c) to support peephole opts
      -- An experimental simplifier (optimise.c).
      -- Many supporting bug fixes and minor changes.
      -- Experimental implementation of integer for standalone hugs (sainteger.c).
  25. 09 Mar, 1999 1 commit
    • sewardj's avatar
      [project @ 1999-03-09 14:51:03 by sewardj] · 9da01c71
      sewardj authored
      Many improvements resulting from first attempt to run nofib suite:
      -- More libraries (lib/*.hs) brought into operation
      -- Prelude error handling and basic I/O improved
      -- Changed bytecode immediate value fields so large constant
      --   tables can be compiled
      -- Fixed bugs: translation of FATBAR, negative floating point
      --   literals, strict constructors, handling of CAFs
  26. 01 Mar, 1999 1 commit
  27. 05 Feb, 1999 1 commit
  28. 02 Dec, 1998 1 commit