1. 10 Mar, 2003 1 commit
  2. 07 Mar, 2003 1 commit
  3. 04 Mar, 2003 2 commits
  4. 03 Mar, 2003 5 commits
    • simonmar's avatar
      [project @ 2003-03-03 12:43:31 by simonmar] · 19108ede
      simonmar authored
      A round of space-leak fixing.
        - re-instate zapping of the PersistentCompilerState at various
          points during the compilation cycle in HscMain.  This affects
          one-shot compilation only, since in this mode the information
          collected in the PCS is not required after creating the final
          interface file.
        - Unravel the recursive dependency between MkIface and
          CoreTidy/CoreToStg.  Previously the CafInfo for each binding was
          calculated by CoreToStg, and fed back into the IdInfo of the Ids
          generated by CoreTidy (an earlier pass).  MkIface then took this
          IdInfo and the bindings from CoreTidy to generate the interface;
          but it couldn't do this until *after* CoreToStg, because the CafInfo
          hadn't been calculated yet.  The result was that the CoreTidy
          output lived until after CoreToStg, and at the same time as the
          CorePrep and STG syntax, which is wasted space, not to mention
          the complexity and general ugliness in HscMain.
          So now we calculate CafInfo directly in CoreTidy.  The downside is
          that we have to predict what CorePrep is going to do to the
          bindings so we can tell what will turn into a CAF later, but it's
          no worse than before (it turned out that we were doing this
          prediction before in CoreToStg anyhow).
        - The typechecker lazilly typechecks unfoldings.  It turns out that
          this is a good idea from a performance perspective, but it also
          means that it must hang on to all the information it needs to
          do the typechecking.  Previously this meant holding on to the
          whole of the typechecker's environment, which includes all sorts
          of stuff which isn't necessary to typecheck unfoldings.  By paring
          down the environment captured by the lazy unfoldings, we can
          save quite a bit of space in the phases after typechecking.
    • simonmar's avatar
      [project @ 2003-03-03 12:31:55 by simonmar] · 1b2e253b
      simonmar authored
      Use listArray rather than array in (un)?boxedTupleArr.
    • simonmar's avatar
      [project @ 2003-03-03 12:30:59 by simonmar] · 4ce67061
      simonmar authored
      Remove unused export.
    • simonmar's avatar
      [project @ 2003-03-03 12:30:39 by simonmar] · eb2c5629
      simonmar authored
      underscore some variables that aren't used.
    • simonmar's avatar
      [project @ 2003-03-03 12:30:11 by simonmar] · ac04a368
      simonmar authored
      Compilation fix after recent addition of environment stuff to System.Posix.
  5. 26 Feb, 2003 1 commit
    • simonpj's avatar
      [project @ 2003-02-26 17:04:11 by simonpj] · c86e9006
      simonpj authored
      	Improve higher-rank type inference
      Yanling Wang pointed out that if we have
      	f = \ (x :: forall a. a->a). x
      it would be reasonable to expect that type inference would get the "right"
      rank-2 type for f.  She also found that the plausible definition
      	f :: (forall a. a->a) = \x -> x
      acutally failed to type check.
      This commit fixes up TcBinds.tcMonoBinds so that it does a better job.
      The main idea is that there are three cases to consider in a function binding:
        a) 'f' has a separate type signature
      	In this case, we know f's type everywhere
        b) The binding is recursive, and there is no type sig
      	In this case we must give f a monotype in its RHS
        c) The binding is non-recursive, and there is no type sig
      	Then we do not need to add 'f' to the envt, and can
      	simply infer a type for the RHS, which may be higher
  6. 24 Feb, 2003 1 commit
    • simonpj's avatar
      [project @ 2003-02-24 12:39:24 by simonpj] · 395917a0
      simonpj authored
      Three Template Haskell improvements
      a) Add type synonyms to THSyntax (and DsMeta, Convert)
      b) Make Q into a newtype instead of a type synonym
      c) Eliminate tiresome and error prone argument to DsMeta.wrapGenSyms
         and similarly addTyVarBinds
  7. 21 Feb, 2003 14 commits
    • simonpj's avatar
      [project @ 2003-02-21 14:52:54 by simonpj] · d6b7d200
      simonpj authored
    • simonpj's avatar
      [project @ 2003-02-21 14:52:31 by simonpj] · 877d4fbd
      simonpj authored
      Fix buglets in new unused-binding story
    • simonpj's avatar
      [project @ 2003-02-21 13:27:53 by simonpj] · 84ed91ab
      simonpj authored
      	Improve the "unused binding" warnings
      We've had a succession of hacks for reporting warnings for
      unused bindings.  Consider
      	module M( f ) where
       	f x = x
      	g x = g x + h x
      	h x = x
      Here, g mentions itself and h, but is not itself mentioned. So
      really both g and h are dead code.  We've been getting this wrong
      for ages, and every hack so far has failed on some simple programs.
      This commit does a much better job.  The renamer applied to a bunch
      of bindings returns a NameSet.DefUses, which is a dependency-ordered
      lists of def/use pairs.  It's documented in NameSet.
      Given this, we can work out precisely what is not used, in a nice
      tidy way.
      It's less convenient in the case of type and class declarations, because
      the strongly-connected-component analysis can span module boundaries.
      So things are pretty much as they were for these.
      As usual, there was a lot of chuffing around tidying things up.
      I havn't tested it at all thoroughly yet.
      Various unrelated import-decl-pruning has been done too.
    • simonpj's avatar
      [project @ 2003-02-21 13:27:30 by simonpj] · dfc75488
      simonpj authored
      Import pruning
    • simonpj's avatar
      [project @ 2003-02-21 13:26:58 by simonpj] · e440a5e2
      simonpj authored
      Import pruning, use mingw32_TARGET not HOST, use old-style foreign import (for 4.08 compat)
    • simonpj's avatar
      [project @ 2003-02-21 13:25:17 by simonpj] · 4e94cbc4
      simonpj authored
      Import pruning
    • simonpj's avatar
      [project @ 2003-02-21 13:24:06 by simonpj] · 6d7e43c4
      simonpj authored
      More tidy up
    • simonpj's avatar
      [project @ 2003-02-21 13:02:58 by simonpj] · 97583682
      simonpj authored
      Small fix to a TH bug; this one concerning the constraint-gathering mechanism
    • simonpj's avatar
      [project @ 2003-02-21 12:28:35 by simonpj] · 136d6345
      simonpj authored
      Another typo; sigh
    • simonpj's avatar
      [project @ 2003-02-21 12:26:41 by simonpj] · 35057005
      simonpj authored
    • simonpj's avatar
      [project @ 2003-02-21 12:16:44 by simonpj] · 802b299f
      simonpj authored
      Debugging hook jiggling
    • simonpj's avatar
      [project @ 2003-02-21 12:16:05 by simonpj] · 7e7c296a
      simonpj authored
      Fix a type-error in desugaring TH code
    • sof's avatar
      [project @ 2003-02-21 05:34:12 by sof] · 5b4f5a6a
      sof authored
      Asynchronous / non-blocking I/O for Win32 platforms.
      This commit introduces a Concurrent Haskell friendly view of I/O on
      Win32 platforms. Through the use of a pool of worker Win32 threads, CH
      threads may issue asynchronous I/O requests without blocking the
      progress of other CH threads. The issuing CH thread is blocked until
      the request has been serviced though.
      GHC.Conc exports the primops that take care of issuing the
      asynchronous I/O requests, which the IO implementation now takes
      advantage of. By default, all Handles are non-blocking/asynchronous,
      but should performance become an issue, having a per-Handle flag for
      turning off non-blocking could easily be imagined&introduced.
      [Incidentally, this thread pool-based implementation could easily be
      extended to also allow Haskell code to delegate the execution of
      arbitrary pieces of (potentially blocking) external code to another OS
      thread. Given how relatively gnarly the locking story has turned out
      to be with the 'threaded' RTS, that may not be such a bad idea.]
    • sof's avatar
      [project @ 2003-02-21 04:57:16 by sof] · e4341897
      sof authored
      deja vu all over again
  8. 20 Feb, 2003 14 commits
    • simonpj's avatar
      [project @ 2003-02-20 18:33:50 by simonpj] · 56b5a8b8
      simonpj authored
            Add Core Notes and the {-# CORE #-} pragma
      This is an idea of Hal Daume's. The key point is that Notes in Core
      are augmented thus:
        data Note
          = SCC CostCentre
          | ...
          | CoreNote String     -- NEW
      These notes can be injected via a Haskell-source pragma:
         f x = ({-# CORE "foo" #-} show) ({-# CORE "bar" #-} x)
      This wraps a (Note (CoreNote "foo")) around the 'show' variable,
      and a similar note around the argument to 'show'.
      These notes are basically ignored by GHC, but are emitted into
      External Core, where they may convey useful information.
      Exactly how code involving these notes is munged by the simplifier
      isn't very well defined.  We'll see how it pans out.  Meanwhile
      the impact on the rest of the compiler is minimal.
    • simonpj's avatar
      [project @ 2003-02-20 18:18:55 by simonpj] · 3017b35f
      simonpj authored
      Import pruning
    • simonpj's avatar
      [project @ 2003-02-20 16:02:57 by simonpj] · e83fa2eb
      simonpj authored
      Add comments
    • simonpj's avatar
      [project @ 2003-02-20 16:01:56 by simonpj] · 3194c528
      simonpj authored
      Comments and imports only
    • simonpj's avatar
      [project @ 2003-02-20 13:23:47 by simonpj] · 00227c6a
      simonpj authored
      	   Complete an earlier TH commit
      In this earlier commit:
        3.  Ensure that a declaration quotation [d| ... |] does not have a
            permanent effect on the instance environment. (A TH fix.)
      I had forgotten to do a stage2 compile.  This commit just completes
      the earlier work.  I moved some code from TcExpr (long) to TcSplice
      (shorter) which had the happy effect of bringing related code together.
    • simonpj's avatar
      [project @ 2003-02-20 13:21:15 by simonpj] · 72c98446
      simonpj authored
         Generate correct dependencies when reading External Core
      We have to be more careful than I realised when doing strongly-connected
      component analysis of type/class decls when reading External Core.
      Here's the relevant new comment:
      --		Building edges for SCC analysis
      -- When building the edges, we treat the 'main name' of the declaration as the
      -- key for the node, but when dealing with External Core we may come across
      -- references to one of the implicit names for the declaration.  For example:
      --	class Eq a where ....
      --	data :TSig a = :TSig (:TEq a) ....
      -- The first decl is sucked in from an interface file; the second
      -- is in an External Core file, generated from a class decl for Sig.
      -- We have to recognise that the reference to :TEq represents a
      -- dependency on the class Eq declaration, else the SCC stuff won't work right.
      -- This complication can only happen when consuming an External Core file
      -- Solution: keep an "EdgeMap" (bad name) that maps :TEq -> Eq.
      -- Don't worry about data constructors, because we're only building
      -- SCCs for type and class declarations here.  So the tiresome mapping
      -- is need only to map   [class tycon -> class]
    • simonpj's avatar
      [project @ 2003-02-20 13:18:10 by simonpj] · 97958a39
      simonpj authored
      Part 2 of fix :i in InteractiveUI
    • simonpj's avatar
      [project @ 2003-02-20 13:17:02 by simonpj] · f6176af6
      simonpj authored
      Comments only
    • simonpj's avatar
      [project @ 2003-02-20 13:16:31 by simonpj] · 3251e3ba
      simonpj authored
      Another datacon-naming wibble
    • simonpj's avatar
      [project @ 2003-02-20 13:12:40 by simonpj] · b7e64112
      simonpj authored
      Fix :i in InteractiveUI
    • simonpj's avatar
      [project @ 2003-02-20 13:01:20 by simonpj] · f9853a3e
      simonpj authored
      Eliminate brain-dead outputC pattern-match failure
    • simonpj's avatar
      [project @ 2003-02-20 13:00:24 by simonpj] · 5b7c931a
      simonpj authored
      Eliminate bogus string-literal duplication
    • simonpj's avatar
      [project @ 2003-02-20 12:59:55 by simonpj] · d5aa9c5d
      simonpj authored
      Compile binary stuff with -O always
    • simonmar's avatar
      [project @ 2003-02-20 11:45:24 by simonmar] · 710316df
      simonmar authored
      Add -fvia-C to utils/Panic_HC_OPTS, and remove it from main/Main_HC_OPTS.
  9. 19 Feb, 2003 1 commit