1. 11 Dec, 2011 2 commits
  2. 09 Dec, 2011 5 commits
  3. 08 Dec, 2011 2 commits
    • PHO's avatar
      Resurrect UseLibFFIForAdjustors from bitrot. · 616b6697
      PHO authored
      * Pass -Irts/dist/build to the C preprocessor to expose libffi headers (ffi.h and ffitarget.h) to foreign import wrappers during the building process of GHC itself.
      * Install libffi headers into $(ghcheaderdir) just like any other C headers. Otherwise an installed GHC can't find them when it wants to compile foreign import wrappers.
      * Include libffi headers in the bindist for the same reason.
    • PHO's avatar
      Detect cases where as(1) doesn't recognise .ident directive (#5408) · 3640d374
      PHO authored
      .ident directives are usually ignored by as(1), and in some cases (like Darwin/PPC) they even raise an error.
  4. 07 Dec, 2011 5 commits
    • Simon Marlow's avatar
    • Simon Marlow's avatar
      Improve optimisation in the presence of SCCs (fixes #5363) · eea40328
      Simon Marlow authored
      We had some special cases to handle things like
        case (scc c (case E of alts)) of alts'
      but it only worked when there was a single scc in the way.  This
      generalises the optimisation to handle multiple sccs and ticks, so
      that we can catch most case-of-case optimisations that would normally
      apply in the absence of profiling.
      This fixes the example in #5363, and nofib results (with -prof
      -fprof-auto) show that allocation universally goes down or stays the
    • Simon Marlow's avatar
      Take into account -fprof-auto-* · c4fb520e
      Simon Marlow authored
    • chak@cse.unsw.edu.au.'s avatar
      Add new primtypes 'ArrayArray#' and 'MutableArrayArray#' · 021a0dd2
      chak@cse.unsw.edu.au. authored
      The primitive array types, such as 'ByteArray#', have kind #, but are represented by pointers. They are boxed, but unpointed types (i.e., they cannot be 'undefined').
      The two categories of array types —[Mutable]Array# and [Mutable]ByteArray#— are containers for unboxed (and unpointed) as well as for boxed and pointed types.  So far, we lacked support for containers for boxed, unpointed types (i.e., containers for the primitive arrays themselves).  This is what the new primtypes provide.
      Containers for boxed, unpointed types are crucial for the efficient implementation of scattered nested arrays, which are central to the new DPH backend library dph-lifted-vseg.  Without such containers, we cannot eliminate all unboxing from the inner loops of traversals processing scattered nested arrays.
    • Ian Lynagh's avatar
      Improve the space usage of checkremove · 782d2203
      Ian Lynagh authored
      Some of the nightly builders have been running out of memory when
      running it.
  5. 06 Dec, 2011 6 commits
    • dterei's avatar
      Tabs -> Spaces + Formatting · 590988bd
      dterei authored
    • Simon Marlow's avatar
      Allow the number of capabilities to be increased at runtime (#3729) · 92e7d6c9
      Simon Marlow authored
      At present the number of capabilities can only be *increased*, not
      decreased.  The latter presents a few more challenges!
    • Simon Marlow's avatar
      Make forkProcess work with +RTS -N · 8b75acd3
      Simon Marlow authored
      Consider this experimental for the time being.  There are a lot of
      things that could go wrong, but I've verified that at least it works
      on the test cases we have.
      I also did some API cleanups while I was here.  Previously we had:
      Capability * rts_eval (Capability *cap, HaskellObj p, /*out*/HaskellObj *ret);
      but this API is particularly error-prone: if you forget to discard the
      Capability * you passed in and use the return value instead, then
      you're in for subtle bugs with +RTS -N later on.  So I changed all
      these functions to this form:
      void rts_eval (/* inout */ Capability **cap,
                     /* in    */ HaskellObj p,
                     /* out */   HaskellObj *ret)
      It's much harder to use this version incorrectly, because you have to
      pass the Capability in by reference.
    • benl's avatar
      Fix #5658: mark all array indexing primops as can_fail · 657773c8
      benl authored
      If they're not marked as can_fail, then they are floated out of case expressions that check whether the indices are in-bounds, causing immense suffering.
    • Peter Wortmann's avatar
      Code generation: Always ask for result of newSpark · 237159c2
      Peter Wortmann authored and dterei's avatar dterei committed
      Otherwise the LLVM backend gets confused over whether its type should be
      "void (i8*, i8*)" or "i64 (i8*, i8*)".
      Signed-off-by: dterei's avatarDavid Terei <davidterei@gmail.com>
    • dterei's avatar
      Fix trac # 5486 · fe60dd4a
      dterei authored
      LLVM has a problem when the user imports some FFI types
      like memcpy and memset in a manner that conflicts with
      the types that GHC uses internally.
      So now we pre-initialise the environment with the most
      general types for these functions.
  6. 05 Dec, 2011 5 commits
  7. 04 Dec, 2011 9 commits
  8. 03 Dec, 2011 1 commit
  9. 02 Dec, 2011 5 commits