1. 16 Sep, 2008 1 commit
  2. 15 Sep, 2008 1 commit
  3. 14 Sep, 2008 2 commits
  4. 16 Sep, 2008 2 commits
  5. 15 Sep, 2008 1 commit
  6. 16 Sep, 2008 2 commits
  7. 15 Sep, 2008 1 commit
    • Simon Marlow's avatar
      Stop using mremap() to allocate space for trampolines · bf7e78fa
      Simon Marlow authored
      This was causing problems because sometimes mremap() moved the memory
      we had allocated from the low 2Gb to above the 2Gb boundary, causing
      some linkages to fail.  There's no MAP_32BIT flag to mremap().
      
      So now we just use mmap(MAP_ANON|MAP_32BIT) to allocated space for the
      trampolines.  People without MAP_32BIT (eg. *BSD) will still have to
      do something else here, such as allocating memory from a fixed
      address; so I've made it slightly easier for those guys, but there's
      still work to do (#2063).
      
      One solution (that Simon PJ is advocating) is to turn on -fPIC by
      default on x86-64.  This is a good solution as it removes the need for
      MAP_32BIT, but doesn't work with -fvia-C, so probably this is for
      later.
      bf7e78fa
  8. 12 Sep, 2008 1 commit
  9. 16 Sep, 2008 4 commits
  10. 15 Sep, 2008 1 commit
  11. 12 Sep, 2008 3 commits
  12. 11 Sep, 2008 1 commit
  13. 10 Sep, 2008 1 commit
  14. 15 Sep, 2008 5 commits
  15. 14 Sep, 2008 3 commits
  16. 15 Sep, 2008 6 commits
  17. 14 Sep, 2008 5 commits
    • Thomas Schilling's avatar
      Use 'GhcMonad' in ghc/Main. · c5eedeb7
      Thomas Schilling authored
      c5eedeb7
    • Thomas Schilling's avatar
      66eeda3f
    • Thomas Schilling's avatar
      Use 'GhcMonad' in InteractiveEval. · c0123230
      Thomas Schilling authored
      c0123230
    • Thomas Schilling's avatar
      Use 'GhcMonad' in GHC and split up checkModule into phases. · 1c7d0ac0
      Thomas Schilling authored
      I'm not sure I covered all the ways of throwing errors in the code.
      Some functions throw ProgramErrors, some error messages.  It's still
      quite a mess, but we're getting closer.  The missing cases are mostly
      errors that cannot be fixed by the API client either or are a result
      of wrong usage, so are in any case fatal.
      
      One function, 'getModuleInfo', still returns a 'Maybe', but the
      documentation suggests it should always succeed.  So I may change that
      soon.
      
      The spit-up of of 'checkModule' has pros and cons.  The various forms
      of 'checkModule*' now become:
      
       checkAndLoadModule ms False ~~>
          loadModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
      
       checkAndLoadModule ms True ~~>
         loadModule =<< desugarModule =<< typecheckModule =<< parseModule (ms_mod_name ms)
      
       checkModule mn False ~~>
         typecheckModule =<< parseModule mn
      
       checkModule mn True ~~>
         desugarModule =<< typecheckModule =<< parseModule mn
      
      The old APIs cannot easily be provided, since the result type would be
      different depending on the second argument.  However, a more
      convenient API can be modelled on top of these four functions
      ({parse,typecheck,desugar,load}Module).
      1c7d0ac0
    • Thomas Schilling's avatar