1. 14 Mar, 2006 2 commits
    • Simon Marlow's avatar
      Make it a fatal error to try to enter a PAP · 960a5e6a
      Simon Marlow authored
      This is just an assertion, in effect: we should never enter a PAP, but
      for convenience we previously attached the PAP apply code to the PAP
      info table.  The problem with this was that it makes it harder to track
      down bugs that result in entering a PAP...
      960a5e6a
    • Simon Marlow's avatar
      Fix a really nasty bug in SMP · a9dc9658
      Simon Marlow authored
      In SMP mode a THUNK can change to an IND at any time.  The generic
      apply code (stg_ap_p etc.) examines a closure to determine how to
      apply it to its arguments, if it is a THUNK it must enter it first in
      order to evaluate it.  The problem was that in order to enter the
      THUNK, we were re-reading the info pointer, and possibly ending up
      with an IND instead of the original THUNK.  It isn't safe to enter the
      IND, because it points to a function (functions are never "entered",
      only applied).  Solution: we must not re-read the info pointer.
      a9dc9658
  2. 13 Mar, 2006 3 commits
  3. 10 Mar, 2006 3 commits
  4. 13 Mar, 2006 1 commit
  5. 07 Mar, 2006 1 commit
  6. 10 Mar, 2006 4 commits
    • Simon Marlow's avatar
      fix the build with GHC 6.4 (not 6.4.1) · 71f2cb60
      Simon Marlow authored
      71f2cb60
    • David Himmelstrup's avatar
      Wibble in HscMain. · 14f70d83
      David Himmelstrup authored
      14f70d83
    • David Himmelstrup's avatar
      Initial foundation for quickcheck tests. · 0490ee1f
      David Himmelstrup authored
      I have no idea how to use the testsuite so I'll start
      making QuickCheck tests instead.
      I've included tests for 'HeaderInfo.getOptions'.
      0490ee1f
    • David Himmelstrup's avatar
      Parse OPTIONS properly and cache the result. · d700953c
      David Himmelstrup authored
      Use the lexer to parse OPTIONS, LANGUAGE and INCLUDE pragmas.
      This gives us greater flexibility and far better error
      messages. However, I had to make a few quirks:
        * The token parser is written manually since Happy doesn't
          like lexer errors (we need to extract options before the
          buffer is passed through 'cpp'). Still better than
          manually parsing a String, though.
        * The StringBuffer API has been extended so files can be
          read in blocks.
      I also made a new field in ModSummary called ms_hspp_opts
      which stores the updated DynFlags. Oh, and I took the liberty
      of moving 'getImports' into HeaderInfo together with
      'getOptions'.
      d700953c
  7. 08 Mar, 2006 2 commits
  8. 07 Mar, 2006 3 commits
    • Simon Marlow's avatar
    • Simon Marlow's avatar
      x86_64: add -fno-builtin to gcc command line for .hc files. · 646d6f52
      Simon Marlow authored
      This seems to be required now that we're stealing more registers.
      646d6f52
    • David Himmelstrup's avatar
      More work thrown at HscMain. · d1545b69
      David Himmelstrup authored
      MkIface.writeIfaceFile doesn't check GhcMode anymore. All it does
      is what the name say: write an interface to disk.
      I've refactored HscMain so the logic is easier to manage. That means
      we can avoid running the simplifier when typechecking (: And best of
      all, HscMain doesn't use GhcMode at all, anymore!
      
      The new HscMain intro looks like this:
      
      It's the task of the compilation proper to compile Haskell, hs-boot and
      core files to either byte-code, hard-code (C, asm, Java, ect) or to
      nothing at all (the module is still parsed and type-checked. This
      feature is mostly used by IDE's and the likes).
      Compilation can happen in either 'one-shot', 'batch', 'nothing',
      or 'interactive' mode. 'One-shot' mode targets hard-code, 'batch' mode
      targets hard-code, 'nothing' mode targets nothing and 'interactive' mode
      targets byte-code.
      The modes are kept separate because of their different types and meanings.
      In 'one-shot' mode, we're only compiling a single file and can therefore
      discard the new ModIface and ModDetails. This is also the reason it only
      targets hard-code; compiling to byte-code or nothing doesn't make sense
      when we discard the result.
      'Batch' mode is like 'one-shot' except that we keep the resulting ModIface
      and ModDetails. 'Batch' mode doesn't target byte-code since that require
      us to return the newly compiled byte-code.
      'Nothing' mode has exactly the same type as 'batch' mode but they're still
      kept separate. This is because compiling to nothing is fairly special: We
      don't output any interface files, we don't run the simplifier and we don't
      generate any code.
      'Interactive' mode is similar to 'batch' mode except that we return the
      compiled byte-code together with the ModIface and ModDetails.
      d1545b69
  9. 06 Mar, 2006 5 commits
  10. 05 Mar, 2006 1 commit
  11. 04 Mar, 2006 12 commits
  12. 03 Mar, 2006 1 commit
  13. 09 Feb, 2006 1 commit
  14. 05 Feb, 2006 1 commit