1. 31 Oct, 2007 1 commit
    • Simon Marlow's avatar
      Refactoring of the GC in preparation for parallel GC · d5bd3e82
      Simon Marlow authored
        
      This patch localises the state of the GC into a gc_thread structure,
      and reorganises the inner loop of the GC to scavenge one block at a
      time from global work lists in each "step".  The gc_thread structure
      has a "workspace" for each step, in which it collects evacuated
      objects until it has a full block to push out to the step's global
      list.  Details of the algorithm will be on the wiki in due course.
      
      At the moment, THREADED_RTS does not compile, but the single-threaded
      GC works (and is 10-20% slower than before).
      d5bd3e82
  2. 30 Oct, 2007 2 commits
  3. 14 Jun, 2008 1 commit
  4. 04 Jun, 2008 2 commits
  5. 02 Jun, 2008 1 commit
  6. 29 May, 2008 2 commits
  7. 28 May, 2008 1 commit
  8. 23 May, 2008 1 commit
  9. 19 May, 2008 1 commit
  10. 26 Apr, 2008 2 commits
  11. 12 May, 2008 1 commit
  12. 01 May, 2008 1 commit
  13. 30 Apr, 2008 1 commit
  14. 25 Apr, 2008 2 commits
  15. 24 Apr, 2008 1 commit
  16. 22 Apr, 2008 1 commit
  17. 17 Apr, 2008 1 commit
  18. 11 Apr, 2008 2 commits
  19. 09 Apr, 2008 2 commits
  20. 08 Apr, 2008 2 commits
    • andy@galois.com's avatar
    • Simon Marlow's avatar
      Import libffi-3.0.4, and use it to provide FFI support in GHCi · e0fcf61d
      Simon Marlow authored
      This replaces the hand-rolled architecture-specific FFI support in
      GHCi with the standard libffi as used in GCJ, Python and other
      projects.  I've bundled the complete libffi-3.0.4 tarball in the
      source tree in the same way as we do for GMP, the difference being
      that we always build and install our own libffi regardless of whether
      there's one on the system (it's small, and we don't want
      dependency/versioning headaches).
      
      In particular this means that unregisterised builds will now have a
      fully working GHCi including FFI out of the box, provided libffi
      supports the platform.
      
      There is also code in the RTS to use libffi in place of
      rts/Adjustor.c, but it is currently not enabled if we already have
      support in Adjustor.c for the current platform.  We need to assess the
      performance impact before using libffi here too (in GHCi we don't care
      too much about performance).
      e0fcf61d
  21. 02 Apr, 2008 1 commit
    • Simon Marlow's avatar
      Do not #include external header files when compiling via C · c245355e
      Simon Marlow authored
      This has several advantages:
      
       - -fvia-C is consistent with -fasm with respect to FFI declarations:
         both bind to the ABI, not the API.
      
       - foreign calls can now be inlined freely across module boundaries, since
         a header file is not required when compiling the call.
      
       - bootstrapping via C will be more reliable, because this difference
         in behavour between the two backends has been removed.
      
      There is one disadvantage:
      
       - we get no checking by the C compiler that the FFI declaration
         is correct.
      
      So now, the c-includes field in a .cabal file is always ignored by
      GHC, as are header files specified in an FFI declaration.  This was
      previously the case only for -fasm compilations, now it is also the
      case for -fvia-C too.
      c245355e
  22. 25 Mar, 2008 1 commit
  23. 23 Mar, 2008 1 commit
  24. 15 Mar, 2008 1 commit
  25. 07 Feb, 2008 1 commit
    • Simon Marlow's avatar
      Tweaks to stack squeezing · 53a442f1
      Simon Marlow authored
      1. We weren't squeezing two frames if one of them was a marked update
         frame.  This is easy to fix.
      
      2. The heuristic to decide whether to squeeze was a little
         conservative.  It's worth copying 3 words to save an update frame.
       
      53a442f1
  26. 28 Feb, 2008 1 commit
    • Simon Marlow's avatar
      Enable -prof -threaded (#886) · 50c4d039
      Simon Marlow authored
      It turns out that -prof -threaded works (modulo some small changes),
      because all the data structures used in profiling are only accessed by
      one thread at a time, at long as we don't use +RTS -N2 or higher.  So
      this patch enables the use of -prof -threaded, but an error is given
      if you ask for more than one CPU with +RTS -N.
      50c4d039
  27. 26 Feb, 2008 1 commit
    • Simon Marlow's avatar
      FIX #2122: file locking bug · 7453eaaf
      Simon Marlow authored
      Second and subsequent readers weren't being inserted into the
      fd->lock hash table, which meant that the file wasn't correctly
      unlocked when the Handles were closed.
      7453eaaf
  28. 19 Feb, 2008 1 commit
  29. 21 Feb, 2008 1 commit
  30. 04 Feb, 2008 1 commit
    • Simon Marlow's avatar
      Support for using libffi to implement FFI calls in GHCi (#631) · 937eb1f1
      Simon Marlow authored
      This means that an unregisterised build on a platform not directly
      supported by GHC can now have full FFI support using libffi.
      
      Also in this commit:
      
       - use PrimRep rather than CgRep to describe FFI args in the byte
         code generator.  No functional changes, but PrimRep is more correct.
      
       - change TyCon.sizeofPrimRep to primRepSizeW, which is more useful
      937eb1f1
  31. 04 Jan, 2008 1 commit
  32. 23 Jan, 2008 1 commit