This project is mirrored from https://gitlab.haskell.org/ghc/ghc.git. Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
Last successful update .
  1. 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
  2. 01 Nov, 1999 1 commit
  3. 27 Oct, 1999 2 commits
  4. 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.
      6642714e
  5. 20 Oct, 1999 2 commits
  6. 19 Oct, 1999 1 commit
  7. 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
  8. 14 Oct, 1999 1 commit
  9. 13 Oct, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-10-13 16:39:10 by simonmar] · 5c67176d
      simonmar authored
      Crude allocation-counting extension to ticky-ticky profiling.
      
      Allocations are counted against the closest lexically enclosing
      function closure, so you need to map the output back to the STG code.
      5c67176d
  10. 15 Sep, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-09-15 13:45:14 by simonmar] · 17315bf6
      simonmar authored
      Heap Profiling
      --------------
      
      This commit adds simple hp2ps-style heap profiling.  Just the '-h'
      option is supported so far.
      
      Heap profiles will show the top two cost centres on each cost centre
      stack.
      
      Time/Alloc profiles have been extended to aggregate the costs on a
      per-cost-centre basis and show the table of highest consuming cost
      centres before the full table of cost centre stacks.
      
      Profiles work best if '-caf-all' is used, especially when using
      one of the '-auto' flags.
      17315bf6
  11. 14 Sep, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-09-14 12:16:36 by simonmar] · 8e346b86
      simonmar authored
      A couple of fixes and cleanups to ticky-ticky profiling:
      
      	- remove UPD_EXISTING (doesn't make sense)
      	- add UPD_CON_IN_PLACE, now that we have in-place updates
      	- clean up the output a little.
      8e346b86
  12. 25 Aug, 1999 2 commits
    • 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
      programs.
      
      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).
      c6ab4bfa
    • simonmar's avatar
      [project @ 1999-08-25 10:23:51 by simonmar] · 68146c5b
      simonmar authored
      Eq and Ord instances for ThreadId.
      68146c5b
  13. 24 Aug, 1999 2 commits
  14. 03 Aug, 1999 1 commit
  15. 29 Jul, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-07-29 10:00:22 by simonmar] · fad03b44
      simonmar authored
      Shift operations where the shift count is greater than the width of
      the type being shifted are now defined as returning zero (or -1 in the
      case of a negative integer being shifted right with iShiftRA).
      fad03b44
  16. 16 Jul, 1999 1 commit
  17. 15 Jul, 1999 1 commit
    • panne's avatar
      [project @ 1999-07-15 16:11:29 by panne] · a61ce4a4
      panne authored
      We have to be very careful with numeric literals in the C part, in
      this case 0xff (of type int = 4 bytes on Alpha) was shifted left 56
      times => always zero  :-{  Using an L or UL suffix is not always
      practical, because the needed size depends on conditional typedefs
      somewhere else. Solution: Cast!  :-P  ghc/includes contains some more
      suspicious literals, but I did not have a look at them yet.
      a61ce4a4
  18. 14 Jul, 1999 1 commit
  19. 06 Jul, 1999 4 commits
  20. 05 Jul, 1999 1 commit
    • sof's avatar
      [project @ 1999-07-05 17:25:23 by sof] · 45adecbe
      sof authored
      Stg.h contains all the defs and protos that are visible when compiling
      .hc code (==> .hs code). Augment this set with the externally visible
      RTS API.
      45adecbe
  21. 03 Jul, 1999 1 commit
    • sof's avatar
      [project @ 1999-07-03 18:39:40 by sof] · d1a47b32
      sof authored
      New RTS entry point, shutdownHaskellAndExit(), which does what the name
      implies - used when you want to exit from within Haskell code (e.g.,
      System.exitWith.)
      d1a47b32
  22. 25 Jun, 1999 3 commits
  23. 24 Jun, 1999 1 commit
  24. 03 Jun, 1999 1 commit
  25. 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
  26. 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
  27. 11 May, 1999 2 commits
    • 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
    • keithw's avatar
      [project @ 1999-05-11 16:46:20 by keithw] · 29b65248
      keithw authored
      (this is number 8 of 9 commits to be applied together)
      
        The CPP flag LAZY_BLACKHOLING has been moved up from options.h into
        Stg.h, so GHC can see it as well as the interpreter, and
        EAGER_BLACKHOLING has been added.  The default is still
        LAZY_BLACKHOLING && !EAGER_BLACKHOLING.
      29b65248
  28. 10 May, 1999 3 commits