1. 09 Feb, 2007 3 commits
    • simonpj@microsoft.com's avatar
      Major improvement to SpecConstr · cac2aca1
      simonpj@microsoft.com authored
      This patch improves the SpecConstr pass, by 
        a) making it work with join points
        b) making it generate specialisations transitively
      As part of it, SpecConstr now carries a substitution with it, which
      runs over the whole program as it goes.  This turned out to be 
      a big win; simplified the implementation quite a bit.
      I have *disabled* the specialisation on lambdas; it's pretty fragile,
      and sometimes generates more and more specialisations. Something to
      come back to, perhaps.
      I rejigged the flag-handling a bit.  Now the specification of passes
      in DynFlags is a bit nicer; see
      	- optLevelFlags top-level data structure
      	- runWhen function
      	- CoreDoPasses constructor
      There are now command-line flags
      which do the obvious thing.  -O2 switches on both spec-constr and liberate-case.
      You can use -fno-liberate-case, -fno-spec-constr after -O2 to switch them off again.
      The spec-threshold applies to both these transformations; default value 200 for now.
    • simonpj@microsoft.com's avatar
      Refactor the simplifier's treatment of case expressions · e9f23b4c
      simonpj@microsoft.com authored
      (NB: this patch could conceivably require some bits of the 
      following SpecConstr patch to compile cleanly.  It's conceptually
      independent, but I'm not 100% certain that I've included all
      the necessary bits here.)
      This patch cleans up the simplifier's handling of various
      otimisations for case expressions, notably
        - case elimination (discarding the case altogether)
        - merging identical alternatives
        - discarding impossible alternative
        - merging nested cases
      Previously this was partly handled before, and partly after,
      simplifying the case alternatives. The trouble with that is
      that the dead-ness information on the case binders gets munged
      during simplification, and that turned out to mean that 
      case elmination essentially never happened -- stupid.
      Now I've moved it all to before simplifying the alterntives.
      In fact this reduces the amount of code, I think, and it's
      certainly tidier.  I don't think there is any loss.
    • Simon Marlow's avatar
      Ticky is an RTS-only way; also fix collateral damage to other ways · 5bf1b7f5
      Simon Marlow authored
      The ticky static flag was being poked too early, which lead to
      breakage in the -prof way amongst other things.  I've installed some
      sanity checking to make sure we catch this earlier if it happens again.
  2. 08 Feb, 2007 3 commits
  3. 07 Feb, 2007 13 commits
    • chevalier@alum.wellesley.edu's avatar
      Fixed typo in devel1 flavor · a6b59f26
      chevalier@alum.wellesley.edu authored
      Under GhcStage2HcOpts, "O" should be "-O"; fixed.
    • mnislaih's avatar
      Type reconstruction/RTTI: improve handling of newtypes · eeaa0399
      mnislaih authored
        Newtypes have always been a problem because they are not there at runtime, but we need to take them into account.
        Tests ghci.debugger/print011 and ghci.debugger/print012 cover this
    • mnislaih's avatar
      Optimize dynamic breakpoints for speed · 9004e883
      mnislaih authored
      Made a bit faster the test which gets done every time a running program hits a dynamic breakpoint. I moved the bounds checking inside a DEBUG pragma and replaced (IArray.!) for unsafeAt
    • Ian Lynagh's avatar
    • sven.panne@aedion.de's avatar
    • sven.panne@aedion.de's avatar
    • Simon Marlow's avatar
      update version hack to work on partial repositories · e2c77ecd
      Simon Marlow authored
      Instead of asking for the last 100 patches, we just get the first 500
      lines of output from darcs changes (ugh, better ideas welcome).
    • simonpj@microsoft.com's avatar
    • simonpj@microsoft.com's avatar
    • simonpj@microsoft.com's avatar
      Spelling fix · 119ede05
      simonpj@microsoft.com authored
    • simonpj@microsoft.com's avatar
      Fix bug in -ddump-minimal imports Trac #1025 · 057b0446
      simonpj@microsoft.com authored
      The code for -ddump-minimal-imports was erroneously using loadSrcInterface,
      which looks only for *exposed* modules.  It should instead use loadSysInterface
      which looks for all interfaces.
      The fix is straightforward.  MERGE to 6.6 branch.
    • chevalier@alum.wellesley.edu's avatar
      Update to manual section for ticky-ticky · 8d276feb
      chevalier@alum.wellesley.edu authored
      I added a slightly more helpful remark in the profiling
      section of the manual about how to use ticky-ticky.
    • chevalier@alum.wellesley.edu's avatar
      Lightweight ticky-ticky profiling · 5ddee764
      chevalier@alum.wellesley.edu authored
      The following changes restore ticky-ticky profiling to functionality
      from its formerly bit-rotted state. Sort of. (It got bit-rotted as part
      of the switch to the C-- back-end.)
      The way that ticky-ticky is supposed to work is documented in Section 5.7
      of the GHC manual (though the manual doesn't mention that it hasn't worked
      since sometime around 6.0, alas). Changes from this are as follows (which
      I'll document on the wiki):
      * In the past, you had to build all of the libraries with way=t in order to
      use ticky-ticky, because it entailed a different closure layout. No longer.
      You still need to do make way=t in rts/ in order to build the ticky RTS,
      but you should now be able to mix ticky and non-ticky modules.
      * Some of the counters that worked in the past aren't implemented yet.
      I was originally just trying to get entry counts to work, so those should
      be correct. The list of counters was never documented in the first place,
      so I hope it's not too much of a disaster that some don't appear anymore.
      Someday, someone (perhaps me) should document all the counters and what 
      they do. For now, all of the counters are either accurate (or at least as
      accurate as they always were), zero, or missing from the ticky profiling
      report altogether.
      This hasn't been particularly well-tested, but these changes shouldn't
      affect anything except when compiling with -fticky-ticky (famous last
      Implementation details:
      I got rid of StgTicky.h, which in the past had the macros and declarations 
      for all of the ticky counters. Now, those macros are defined in Cmm.h.
      StgTicky.h was still there for inclusion in C code. Now, any remaining C
      code simply cannot call the ticky macros -- or rather, they do call those
      macros, but from the perspective of C code, they're defined as no-ops. 
      (This shouldn't be too big a problem.)
      I added a new file TickyCounter.h that has all the declarations for ticky
      counters, as well as dummy macros for use in C code. Someday, these 
      declarations should really be automatically generated, since they need
      to be kept consistent with the macros defined in Cmm.h.
      Other changes include getting rid of the header that was getting added to
      closures before, and getting rid of various code having to do with eager
      blackholing and permanent indirections (the changes under compiler/ 
      and rts/Updates.*).
  4. 06 Feb, 2007 9 commits
  5. 05 Feb, 2007 10 commits
  6. 22 Jan, 2007 1 commit
    • Simon Marlow's avatar
      Semi-tagging optimisation · a2d78ebe
      Simon Marlow authored
      In the generated code for case-of-variable, test the tag of the
      scrutinee closure and only enter if it is unevaluated.  Also turn
      *off* vectored returns.
  7. 05 Feb, 2007 1 commit