1. 24 Nov, 2005 7 commits
  2. 23 Nov, 2005 5 commits
  3. 21 Nov, 2005 3 commits
  4. 19 Nov, 2005 2 commits
    • simonmar's avatar
      [project @ 2005-11-19 14:59:53 by simonmar] · e72b2ad4
      simonmar authored
      fix repType after changes to the representation of type synonyms.
      This caused the stage2 compiler to crash, because various info tables
      misrepresented the pointerhood of constructor arguments.
      e72b2ad4
    • simonmar's avatar
      [project @ 2005-11-19 11:44:32 by simonmar] · e5b39b0c
      simonmar authored
      something has gone wrong; I don't have time right now to find out
      exactly what, so revert rev. 1.22 in an attempt to fix it.
      e5b39b0c
  5. 18 Nov, 2005 7 commits
    • simonmar's avatar
      [project @ 2005-11-18 15:38:26 by simonmar] · 942818de
      simonmar authored
      fix threaded build
      942818de
    • simonmar's avatar
      [project @ 2005-11-18 15:24:12 by simonmar] · c5cd2343
      simonmar authored
      Two improvements to the SMP runtime:
      
        - support for 'par', aka sparks.  Load balancing is very primitive
          right now, but I have seen programs that go faster using par.
      
        - support for backing off when a thread is found to be duplicating
          a computation currently underway in another thread.  This also
          fixes some instability in SMP, because it turned out that when
          an update frame points to an indirection, which can happen if
          a thunk is under evaluation in multiple threads, then after GC
          has shorted out the indirection the update will trash the value.
          Now we suspend the duplicate computation to the heap before this
          can happen.
      
      Additionally:
      
        - stack squeezing is separate from lazy blackholing, and now only
          happens if there's a reasonable amount of squeezing to be done
          in relation to the number of words of stack that have to be moved.
          This means we won't try to shift 10Mb of stack just to save 2
          words at the bottom (it probably never happened, but still).
      
        - update frames are now marked when they have been visited by lazy
          blackholing, as per the SMP paper.
      
        - cleaned up raiseAsync() a bit.
      c5cd2343
    • simonmar's avatar
      [project @ 2005-11-18 15:23:09 by simonmar] · 6c17d627
      simonmar authored
      cosmetic
      6c17d627
    • simonmar's avatar
      [project @ 2005-11-18 15:13:46 by simonmar] · cbd29e0a
      simonmar authored
      Add wcStore(), a write-combining store if supported
      
      (I tried using it in the update code and only succeeded in making
      things slower, but it might come in handy in the future)
      cbd29e0a
    • simonmar's avatar
      [project @ 2005-11-18 15:10:31 by simonmar] · 6aa27c72
      simonmar authored
      cosmetic
      6aa27c72
    • simonmar's avatar
      [project @ 2005-11-18 14:24:47 by simonmar] · 90a4a812
      simonmar authored
      Omit the __DISCARD__() call in FB_ if __GNUC__ >= 3.  It doesn't
      appear to be necessary now, and it prevents some gcc optimisations.
      90a4a812
    • simonmar's avatar
      [project @ 2005-11-18 14:01:33 by simonmar] · 9342a543
      simonmar authored
      Discard various ways in which gcc zeroes stack slots in the prologue.
      So far in my investigations these have always been unnecessary, they
      appear to be the result of missed optimisations by gcc, so cross
      fingers and discard them.  New variants have just shown up because I
      started compiling the RTS with -optc-O2.
      9342a543
  6. 17 Nov, 2005 4 commits
  7. 16 Nov, 2005 2 commits
    • simonpj's avatar
      [project @ 2005-11-16 17:45:38 by simonpj] · 491c85e7
      simonpj authored
      Better error reporting for newtypes with too many constructors,
      or too many fields.  Instead of yielding a parse error, we
      parse it like a data type declaration, and give a comprehensible
      error message later.
      
      A suggestion from Jan-Willem.
      491c85e7
    • simonpj's avatar
      [project @ 2005-11-16 12:55:58 by simonpj] · cdea9949
      simonpj authored
      Two significant changes to the representation of types
      
      1. Change the representation of type synonyms
      
          Up to now, type synonym applications have been held in
          *both* expanded *and* un-expanded form.  Unfortunately, this
          has exponential (!) behaviour when type synonyms are deeply
          nested.  E.g.
      	    type P a b = (a,b)
      	    f :: P a (P b (P c (P d e)))
          
          This showed up in a program of Joel Reymont, now immortalised
          as typecheck/should_compile/syn-perf.hs
      
          So now synonyms are held as ordinary TyConApps, and expanded
          only on demand.  
      
          SynNote has disappeared altogether, so the only remaining TyNote
          is a FTVNote.  I'm not sure if it's even useful.
      
      2. Eta-reduce newtypes
      
          See the Note [Newtype eta] in TyCon.lhs
          
          If we have 
      	    newtype T a b = MkT (S a b)
          
          then, in Core land, we would like S = T, even though the application
          of T is then not saturated. This commit eta-reduces T's RHS, and
          keeps that inside the TyCon (in nt_etad_rhs).  Result is that 
          coreEqType can be simpler, and has less need of expanding newtypes.
      cdea9949
  8. 15 Nov, 2005 1 commit
  9. 13 Nov, 2005 1 commit
    • panne's avatar
      [project @ 2005-11-13 19:07:17 by panne] · b36b3d13
      panne authored
      Move the building guide to GHC where it belongs. This is more consistent and
      currently even necessary, otherwise *every* fptools project would need the ghc
      subtree.
      b36b3d13
  10. 12 Nov, 2005 1 commit
    • simonpj's avatar
      [project @ 2005-11-12 21:41:12 by simonpj] · 87998beb
      simonpj authored
      Better TH -> HsSyn conversion
      
      	Merge to stable (attempt)
      
      This commit monad-ises the TH syntax -> HS syntax conversion.
      This means that error messages can be reported in a more civilised
      way.  It also ensures that the entire structure is converted eagerly.
      That means that any exceptions buried inside it are triggered 
      during conversion, and caught by the exception handler in TcSplice.
      Before, they could be triggered later, and looked like comiler
      crashes.
      87998beb
  11. 10 Nov, 2005 3 commits
  12. 09 Nov, 2005 1 commit
  13. 08 Nov, 2005 3 commits
    • simonmar's avatar
      [project @ 2005-11-08 15:07:08 by simonmar] · cbc83989
      simonmar authored
      SMP bugfix: if the thread we were just running blocked, then we are in
      a delicate state - we don't necessarily have access to the TSO we were
      just running, because we relinquished it when we put it on whatever
      blocking queue it is on.  It might even be running already.
      
      Previously I made the scheduler quickly loop again in this case.
      However, I made it loop too quickly: we should be sure to set the
      blackholes_need_checking flag if necessary, otherwise we can miss some
      wakeups.
      cbc83989
    • simonmar's avatar
      [project @ 2005-11-08 14:20:28 by simonmar] · d3313aea
      simonmar authored
      more docs for GHC_PACKAGE_PATH
      d3313aea
    • simonmar's avatar
      [project @ 2005-11-08 14:18:35 by simonmar] · d76ab8dd
      simonmar authored
      when GHC_PACKAGE_PATH is set, treat the database at the bottom of the
      stack as the "global" one, ie. the one we modify by default.  This
      means that GHC_PACKAGE_PATH can be used to set up a virtual GHC
      package environment into which packages can be installed using Cabal,
      without setting anything other than GHC_PACKAGE_PATH.
      d76ab8dd