1. 15 Dec, 2000 1 commit
  2. 07 Dec, 2000 2 commits
    • simonmar's avatar
      [project @ 2000-12-07 17:26:30 by simonmar] · 05c41def
      simonmar authored
      Figure out CafInfo during CoreTidy.  This is the final piece of the
      puzzle in getting the final IdInfo from the Core2Core phases, rather
      than waiting for the STG code.
      
      This simplifies the SRT phase, in that it no longer has to have a
      complicated circular algorithm to figure out the CafInfo at the same
      time as the SRT layout.
      05c41def
    • simonpj's avatar
      [project @ 2000-12-07 09:28:42 by simonpj] · 0b62f53e
      simonpj authored
      Do a better job of eta expansion.
      
      This showed up in one of Manuel's programs, where he got code like:
      
          $wsimpleGen
      	     ww
      	     (\ i :: Int ->
      		  case i of wild1 { I# i# ->
      		  case w of wild2 { I# e# ->
      		  __coerce (ST RealWorld ())
      		  (\ s# :: (State# RealWorld) ->
      		       case writeIntArray# @ RealWorld mba# i# e# s#
      		       of s2#1 { __DEFAULT ->
      		       (# s2#1, () #)
      		       })
      		  }
      		  })
      	     s2#
      
      The argument wasn't eta expanded, so it got right through to
      the code generator as two separte lambdas.
      
      Needless to say, I fiddled around with things in a vain attempt
      to tidy them up.  Yell if anything seems to go wrong, or perfomance
      drops on any programs.
      0b62f53e
  3. 06 Dec, 2000 3 commits
    • simonmar's avatar
      [project @ 2000-12-06 15:20:24 by simonmar] · 65464267
      simonmar authored
      Fix the hack that makes up a new Id for a dynamic ccall.  I tried
      moving this to CoreSat, but it wasn't convenient to do it there: the
      modification needs to happen at the occurrence of the ccall Id rather
      than a binding.
      65464267
    • simonmar's avatar
      [project @ 2000-12-06 14:25:13 by simonmar] · 0fd1a29e
      simonmar authored
      Reinstate the gruesome hack that makes seq work.
      0fd1a29e
    • simonmar's avatar
      [project @ 2000-12-06 13:03:28 by simonmar] · d3645411
      simonmar authored
      Re-engineer the transition from Core to STG syntax.  Main changes in
      this commit:
      
        - a new pass, CoreSat, handles saturation of constructors and PrimOps,
          and puts the syntax into STG-like normal form (applications to atoms
          only, etc), modulo type applications and Notes.
      
        - CoreToStg is now done at the same time as StgVarInfo.  Most of the
          contents of StgVarInfo.lhs have been copied into CoreToStg.lhs and
          some simplifications made.
      
      less major changes:
      
        - globalisation of names for the purposes of object splitting is
          now done by the C code generator (which is the Right Place in
          principle, but it was a bit fiddly).
      
        - CoreTidy now does cloning of local binders and collection of arity
          info.  The IdInfo from CoreTidy is now *almost* the final IdInfo we
          put in the interface file, except for CafInfo.  I'm going to move
          the CafInfo collection into CoreTidy in due course too.
      
        - and some other minor tidyups while I was in cluster-bomb commit mode.
      d3645411