1. 05 Nov, 1999 2 commits
  2. 04 Nov, 1999 3 commits
  3. 03 Nov, 1999 4 commits
  4. 02 Nov, 1999 10 commits
    • simonmar's avatar
      [project @ 1999-11-02 17:19:15 by simonmar] · c6ff5639
      simonmar authored
      Time the shutdown code as well as the initialisation code.  This
      figure is sometimes significant for SMP, because the tasks are all
      killed by a signal (at the moment) and it might take a while for the
      signal to be delivered.
      c6ff5639
    • 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)
      4ada7d7d
    • simonmar's avatar
      [project @ 1999-11-02 17:08:28 by simonmar] · 05ae92d8
      simonmar authored
      Remove accidental wibble that made it in with the last commit
      05ae92d8
    • simonmar's avatar
      [project @ 1999-11-02 17:04:28 by simonmar] · 85b05cb2
      simonmar authored
      make the prototypes of suspendThread and resumeThread available to the RTS.
      85b05cb2
    • 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
    • sof's avatar
      [project @ 1999-11-02 13:58:57 by sof] · 947d2e36
      sof authored
      expected output
      947d2e36
    • simonmar's avatar
      [project @ 1999-11-02 11:57:15 by simonmar] · c6f67e94
      simonmar authored
      Add simple "raw" style callback example (i.e. not using the FFI).  Just
      for testing _ccall_GC really.
      c6f67e94
    • sof's avatar
      [project @ 1999-11-02 11:55:02 by sof] · ceb975cd
      sof authored
      Simple example of callback'ery in action
      ceb975cd
    • sof's avatar
      [project @ 1999-11-02 11:25:42 by sof] · 3b8b96b3
      sof authored
      updated with expected-output files
      3b8b96b3
    • simonpj's avatar
      [project @ 1999-11-02 10:31:54 by simonpj] · 727f51dc
      simonpj authored
      Fix bug in instance Dynamic (Either a b)
      727f51dc
  5. 01 Nov, 1999 16 commits
    • sewardj's avatar
      [project @ 1999-11-01 18:19:39 by sewardj] · 081601b1
      sewardj authored
      Computation of max-stack-use during BCO generation was completely bogus.
      Fix it.  Also, add a i_STK_CHECK_big insn with 16-bit opcode.
      081601b1
    • sewardj's avatar
      [project @ 1999-11-01 18:17:45 by sewardj] · d8010e81
      sewardj authored
      Correctly evacuate BCOs on the large object list.  Was causing
      okeefe_neural to fail.
      d8010e81
    • simonpj's avatar
      [project @ 1999-11-01 17:09:54 by simonpj] · 30b5ebe4
      simonpj authored
      A regrettably-gigantic commit that puts in place what Simon PJ
      has been up to for the last month or so, on and off.
      
      The basic idea was to restore unfoldings to *occurrences* of
      variables without introducing a space leak.  I wanted to make
      sure things improved relative to 4.04, and that proved depressingly
      hard.  On the way I discovered several quite serious bugs in the
      simplifier.
      
      Here's a summary of what's gone on.
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      * No commas between for-alls in RULES.  This makes the for-alls have
        the same syntax as in types.
      
      * Arrange that simplConArgs works in one less pass than before.
        This exposed a bug: a bogus call to completeBeta.
      
      * Add a top-level flag in CoreUnfolding, used in callSiteInline
      
      * Extend w/w to use etaExpandArity, so it does eta/coerce expansion
      
      * Implement inline phases.   The meaning of the inline pragmas is
        described in CoreUnfold.lhs.  You can say things like
      	{#- INLINE 2 build #-}
        to mean "inline build in phase 2"
      
      * Don't float anything out of an INLINE.
        Don't float things to top level unless they also escape a value lambda.
      	[see comments with SetLevels.lvlMFE
        Without at least one of these changes, I found that
      	{-# INLINE concat #-}
      	concat = __inline (/\a -> foldr (++) [])
        was getting floated to
      	concat = __inline( /\a -> lvl a )
      	lvl = ...inlined version of foldr...
      
        Subsequently I found that not floating constants out of an INLINE
        gave really bad code like
      	__inline (let x = e in \y -> ...)
        so I now let things float out of INLINE
      
      * Implement the "reverse-mapping" idea for CSE; actually it turned out to be easier
        to implement it in SetLevels, and may benefit full laziness too.
      
      * It's a good idea to inline inRange. Consider
      
      	index (l,h) i = case inRange (l,h) i of
      		  	  True ->  l+i
      			  False -> error
        inRange itself isn't strict in h, but if it't inlined then 'index'
        *does* become strict in h.  Interesting!
      
      * Big change to the way unfoldings and occurrence info is propagated in the simplifier
        The plan is described in Subst.lhs with the Subst type
        Occurrence info is now in a separate IdInfo field than user pragmas
      
      * I found that
      	(coerce T (coerce S (\x.e))) y
        didn't simplify in one round. First we get to
      	(\x.e) y
        and only then do the beta. Solution: cancel the coerces in the continuation
      
      * Amazingly, CoreUnfold wasn't counting the cost of a function an application.
      
      * Disable rules in initial simplifier run.  Otherwise full laziness
        doesn't get a chance to lift out a MFE before a rule (e.g. fusion)
        zaps it.  queens is a case in point
      
      * Improve float-out stuff significantly.  The big change is that if we have
      
      	\x -> ... /\a -> ...let p = ..a.. in let q = ...p...
      
        where p's rhs doesn't x, we abstract a from p, so that we can get p past x.
        (We did that before.)  But we also substitute (p a) for p in q, and then
        we can do the same thing for q.  (We didn't do that, so q got stuck.)
        This is much better.  It involves doing a substitution "as we go" in SetLevels,
        though.
      30b5ebe4
    • simonpj's avatar
      [project @ 1999-11-01 16:07:48 by simonpj] · ddddb042
      simonpj authored
      fromInt stuff and other wibbles
      ddddb042
    • simonpj's avatar
      [project @ 1999-11-01 16:06:34 by simonpj] · 98eb01d1
      simonpj authored
      Minor tweaks to intro, and description of RULES
      98eb01d1
    • sof's avatar
      [project @ 1999-11-01 14:20:18 by sof] · cfd47515
      sof authored
      ppr change that should have been included with prev absCSyn/ commit
      cfd47515
    • sewardj's avatar
      [project @ 1999-11-01 12:12:58 by sewardj] · 32a1da7b
      sewardj authored
      Increase NUM_TEXT to 100000 so okeefe_neural will parse.
      32a1da7b
    • sewardj's avatar
      [project @ 1999-11-01 11:07:07 by sewardj] · 6f62b4f2
      sewardj authored
      Nuke #if OVERLOADED_CONSTANTS, since H98 requires it by default.
      6f62b4f2
    • sewardj's avatar
      [project @ 1999-11-01 11:01:11 by sewardj] · 36c0b5de
      sewardj authored
      Fix codegen bug causing cg028.hs to fail.  namePmDouble was not bound
      to anything, which caused translations of patterns containing doubles
      to contain NILs.  Also bound namePmInteger since it didn't seem to be
      bound to anything.
      36c0b5de
    • sof's avatar
      [project @ 1999-11-01 10:16:43 by sof] · 1bdc7205
      sof authored
      updated
      1bdc7205
    • sof's avatar
      [project @ 1999-11-01 10:16:03 by sof] · 2ab51a53
      sof authored
      formatRealFloat: Fixed some e==0 confusion in the default case for FFExponent
      2ab51a53
    • andy's avatar
      [project @ 1999-11-01 04:17:37 by andy] · 477c02bb
      andy authored
      wibble in derive.c
      
      Changing stdout's buffering. fflush in the program does not flush
      the dll's private buffer space on Win32.
      477c02bb
    • andy's avatar
      [project @ 1999-11-01 02:41:04 by andy] · 1161c750
      andy authored
      Adding commands to generate the std H98 libs for STG Hugs.
      1161c750
    • andy's avatar
      [project @ 1999-11-01 02:38:31 by andy] · 6a04b119
      andy authored
      minor tweaks to do with H98 (like sequence => sequence_, etc)
      Removing the lib/*hs standard libs to make way for the automatically
      generated ones.
      6a04b119
    • andy's avatar
      [project @ 1999-11-01 02:04:31 by andy] · 1b3b9664
      andy authored
      Changing to use the new IO primitives.
      Addr is no longer a synonym of Int.
      1b3b9664
    • andy's avatar
      [project @ 1999-11-01 01:16:18 by andy] · 7568c81c
      andy authored
      Adding type signature to main.
      7568c81c
  6. 31 Oct, 1999 1 commit
    • sof's avatar
      [project @ 1999-10-31 15:35:32 by sof] · aba5a247
      sof authored
      To workaround gcc/egcs bugs re: handling of non-toplevel "extern" decls,
      lift them out to the top. i.e., extend mechanism by which "typedefs"
      are lifted out to the toplevel (for the same reasons) to also encompass
      "extern"s.
      
      Note: the default is not to emit an "extern" decl for every _ccall_,
      as this runs the chance of (trivially) conflicting with header file
      includes. So, to enable, use -optC-femit-extern-decls.
      aba5a247
  7. 29 Oct, 1999 4 commits