1. 03 May, 2005 4 commits
  2. 02 May, 2005 2 commits
  3. 30 Apr, 2005 1 commit
  4. 29 Apr, 2005 15 commits
  5. 28 Apr, 2005 11 commits
    • simonpj's avatar
      [project @ 2005-04-28 23:37:53 by simonpj] · fd46e216
      simonpj authored
      Further stage-2 wibbles
      fd46e216
    • simonpj's avatar
      [project @ 2005-04-28 23:11:45 by simonpj] · 8d16c87c
      simonpj authored
      Missing import
      8d16c87c
    • simonpj's avatar
      [project @ 2005-04-28 23:09:24 by simonpj] · ed60e5f8
      simonpj authored
      A couple of hs-boot files
      ed60e5f8
    • simonpj's avatar
      [project @ 2005-04-28 23:00:52 by simonpj] · c24011d1
      simonpj authored
      Further wibbles to the new tidying plumbing
      c24011d1
    • simonmar's avatar
      [project @ 2005-04-28 21:31:45 by simonmar] · b250f618
      simonmar authored
      StgFunInfoExtra_slow_apply(): convert the slow_apply_offset to a W_
      before arithmetic.
      b250f618
    • simonpj's avatar
      [project @ 2005-04-28 16:05:54 by simonpj] · 91944423
      simonpj authored
      Re-plumb the connections between TidyPgm and the various
      code generators.  There's a new type, CgGuts, to mediate this,
      which has the happy effect that ModGuts can die earlier.
      
      The non-O route still isn't quite right, because default methods
      are being lost.  I'm working on it.
      91944423
    • simonmar's avatar
      [project @ 2005-04-28 15:44:16 by simonmar] · 69ccf53d
      simonmar authored
      calcAllocated: fix small mis-calculation in the SMP case
      69ccf53d
    • simonmar's avatar
      [project @ 2005-04-28 15:28:05 by simonmar] · c84e392e
      simonmar authored
      Small code-size optimisation: I forgot to add a specialised case for
      functions with no argument words (which might happen if the function
      takes a void argument, for example).
      c84e392e
    • simonpj's avatar
      [project @ 2005-04-28 13:13:27 by simonpj] · 344d961b
      simonpj authored
      Instance for wired-in tycons wibble
      344d961b
    • simonpj's avatar
      [project @ 2005-04-28 10:09:41 by simonpj] · dd313897
      simonpj authored
      This big commit does several things at once (aeroplane hacking)
      which change the format of interface files.  
      
      	So you'll need to recompile your libraries!
      
      1. The "stupid theta" of a newtype declaration
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Retain the "stupid theta" in a newtype declaration.
      For some reason this was being discarded, and putting it
      back in meant changing TyCon and IfaceSyn slightly.
         
      
      2. Overlap flags travel with the instance
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Arrange that the ability to support overlap and incoherence
      is a property of the *instance declaration* rather than the
      module that imports the instance decl.  This allows a library
      writer to define overlapping instance decls without the
      library client having to know.  
      
      The implementation is that in an Instance we store the
      overlap flag, and preseve that across interface files
      
      
      3. Nuke the "instnce pool" and "rule pool"
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      A major tidy-up and simplification of the way that instances
      and rules are sucked in from interface files.  Up till now
      an instance decl has been held in a "pool" until its "gates" 
      (a set of Names) are in play, when the instance is typechecked
      and added to the InstEnv in the ExternalPackageState.  
      This is complicated and error-prone; it's easy to suck in 
      too few (and miss an instance) or too many (and thereby be
      forced to suck in its type constructors, etc).
      
      Now, as we load an instance from an interface files, we 
      put it straight in the InstEnv... but the Instance we put in
      the InstEnv has some Names (the "rough-match" names) that 
      can be used on lookup to say "this Instance can't match".
      The detailed dfun is only read lazily, and the rough-match
      thing meansn it is'nt poked on until it has a chance of
      being needed.
      
      This simply continues the successful idea for Ids, whereby
      they are loaded straightaway into the TypeEnv, but their
      TyThing is a lazy thunk, not poked on until the thing is looked
      up.
      
      Just the same idea applies to Rules.
      
      On the way, I made CoreRule and Instance into full-blown records
      with lots of info, with the same kind of key status as TyCon or 
      DataCon or Class.  And got rid of IdCoreRule altogether.   
      It's all much more solid and uniform, but it meant touching
      a *lot* of modules.
      
      
      4. Allow instance decls in hs-boot files
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Allowing instance decls in hs-boot files is jolly useful, becuase
      in a big mutually-recursive bunch of data types, you want to give
      the instances with the data type declarations.  To achieve this
      
      * The hs-boot file makes a provisional name for the dict-fun, something
        like $fx9.
      
      * When checking the "mother module", we check that the instance
        declarations line up (by type) and generate bindings for the 
        boot dfuns, such as
      	$fx9 = $f2
        where $f2 is the dfun generated by the mother module
      
      * In doing this I decided that it's cleaner to have DFunIds get their
        final External Name at birth.  To do that they need a stable OccName,
        so I have an integer-valued dfun-name-supply in the TcM monad.
        That keeps it simple.
      
      This feature is hardly tested yet.
      
      
      5. Tidy up tidying, and Iface file generation
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      main/TidyPgm now has two entry points:
      
        simpleTidyPgm is for hi-boot files, when typechecking only
        (not yet implemented), and potentially when compiling without -O.
        It ignores the bindings, and generates a nice small TypeEnv.
      
        optTidyPgm is the normal case: compiling with -O.  It generates a
        TypeEnv rich in IdInfo
      
      MkIface.mkIface now only generates a ModIface.  A separate
      procedure, MkIface.writeIfaceFile, writes the file out to disk.
      dd313897
    • simonmar's avatar
      [project @ 2005-04-28 09:46:25 by simonmar] · 89d6434a
      simonmar authored
      Run each nofib program multiple times, tunable by the $(NoFibRuns)
      variable.  nofib-analyse already knows how to average the times from
      multiple runs.
      89d6434a
  6. 27 Apr, 2005 7 commits