1. 15 Dec, 2011 2 commits
  2. 14 Dec, 2011 4 commits
  3. 13 Dec, 2011 7 commits
  4. 12 Dec, 2011 5 commits
  5. 11 Dec, 2011 2 commits
  6. 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.
  7. 07 Dec, 2011 3 commits
    • 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.
  8. 06 Dec, 2011 5 commits
    • dterei's avatar
      Tabs -> Spaces + Formatting · 590988bd
      dterei authored
    • 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
      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.
  9. 05 Dec, 2011 3 commits
    • Simon Peyton Jones's avatar
      Allow full constraint solving under a for-all (Trac #5595) · 2e6dcdf7
      Simon Peyton Jones authored
      The main idea is that when we unify
          forall a. t1  ~  forall a. t2
      we get constraints from unifying t1~t2 that mention a.
      We are producing a coercion witnessing the equivalence of
      the for-alls, and inside *that* coercion we need bindings
      for the solved constraints arising from t1~t2.
      We didn't have way to do this before.  The big change is
      that here's a new type TcEvidence.TcCoercion, which is
      much like Coercion.Coercion except that there's a slot
      for TcEvBinds in it.
      This has a wave of follow-on changes. Not deep but broad.
      * New module TcEvidence, which now contains the HsWrapper
        TcEvBinds, EvTerm etc types that used to be in HsBinds
      * The typechecker works exclusively in terms of TcCoercion.
      * The desugarer converts TcCoercion to Coercion
      * The main payload is in TcUnify.unifySigmaTy. This is the
        function that had a gross hack before, but is now beautiful.
      * LCoercion is gone!  Hooray.
      Many many fiddly changes in conssequence.  But it's nice.
    • Simon Peyton Jones's avatar
      Comments only: EqVar vs Covar · 22b317b1
      Simon Peyton Jones authored
    • Simon Peyton Jones's avatar
  10. 04 Dec, 2011 7 commits