Permalink
Commits on Oct 7, 2011
  1. Added WheelSieve1 benchmark from nofib

    It currently fails with a segfault, probably due to lack of
    heap overflow checks.
    committed Oct 7, 2011
Commits on Oct 6, 2011
  1. Added Queens benchmark from nofib

    It currently fails with a segfault, probably due to lack of
    heap overflow checks.
    committed Oct 6, 2011
  2. Mark SumSquare1 test as XFAIL

    As noted in commit d980d70, the test is expected to fail
    because of a GC occuring in the IR interpreter.
    committed Oct 6, 2011
Commits on Sep 25, 2011
Commits on Sep 24, 2011
  1. Megapatch: Fix allocation sinking.

    Finding cycles in heap nodes now seems to work correctly.  Nodes that
    are updated should also be handled better.  This work required a
    number of changes and refactorings, including:
    
      * We now emit PHI nodes for every unrolled instruction that is not
        completely loop invariant.  Before, we didn't emit a PHI node for an
        instruction `i` if the `rename[i]` did occur before the LOOP marker.
        That was plain wrong.  As a counter example see tests
        Bc/Jit000[1-3].hs
    
      * This leads to many PHI nodes being emitted initially, but DCE
        removes most of them.
    
      * PHI nodes are now also properly treated as parallel assignments
        in the IR interpreter.  The codegen still needs updating.
    
      * When looking for cycles in heap nodes we now treat PHIs as separate
        nodes and don't try looking through them.  This is needed because
        the second argument of a PHI node may be another PHI node.  We can
        actually have full loops.
    
      * When a PHI node is updated, do not try to sink any of the nodes
        reachable from that PHI node.  We're basically performing a write
        into values from a previous loop iteration, so we probably can't
        optimise that any better.
    
      * All tests but one are passing.  The failing one,
        Bench/SumSquare1.hs, is failing due to GC occurring in the middle of
        the IR interpreter.  The fix will be to use proper HEAPCHECK guard
        IR instructions.  That'll come next.
    nominolo committed Sep 24, 2011
  2. Move static assertions to another line.

    The mechanism for static assertions leads to duplicate identifiers if
    multiple files contain static assertions on the same line.  Yeah, it's
    a bit silly, but not too serious.
    nominolo committed Sep 24, 2011
Commits on Sep 18, 2011
  1. Update HACKING file.

    nominolo committed Sep 18, 2011
  2. Add option to not compile the code generator.

    This is useful when developing on machines where there is no working
    backend.  (E.g., currently my old Mac and my netbook.)  To use this
    put the following line into your mk/build.mk:
    
        DisableAsm = Yes
    nominolo committed Sep 18, 2011
  3. Fix import.

    nominolo committed Sep 18, 2011
Commits on Sep 16, 2011
  1. Use the actual hp when running native code

    We now have a real heap pointer that we can use when
    executing native assembly code thanks to the changes from
    the GC branch.
    committed Sep 16, 2011
  2. Fix build error with DebugLevel=0

    When building without debugging the stdio.h files are not
    included before a function prototype that uses a FILE
    pointer.
    committed Sep 16, 2011
Commits on Sep 8, 2011
Commits on Aug 30, 2011
  1. Use the usage type of identifiers for calculating type info.

    We got a compiler crash when trying to compile the expression:
    
      app :: (a -> b) -> a -> b
      test = (app eqInt 3) (4 :: Int)
    
    The problem is that, per its polymorphic type, `app` only takes two
    parameters.  However, when instantiating `b` with a function type
    it may take more, as in the above case.
    
    The fix is to look at the instantiated type of `app` when using its
    type information.  The fix is currently nicely localised in the
    `viewGhcApp` function.  Let's see if there are some hidden gotchas
    I haven't encountered, yet.
    nominolo committed Aug 30, 2011
  2. Fix printing of loader state.

    nominolo committed Aug 30, 2011
Commits on Aug 27, 2011
  1. Fix test Bc/Bc0011.hs. (Silly off-by-one error.)

    The error was introduced when I changed the encoding of CALL
    instructions.  There may be more.
    nominolo committed Aug 27, 2011
  2. Fix test Bc/Bc0009.hs.

    nominolo committed Aug 27, 2011
Commits on Aug 23, 2011
  1. Merge gc codegen testsuite branches together

    This commit represents the merge of the gc, codegen, and
    testsuite branches.
    
    Conflicts:
    	Makefile
    	includes/Config.h
    	includes/VM.h
    	rts/Main.c
    	rts/StorageManager.c
    	tests/Bench/Primes.hs
    committed Aug 23, 2011
Commits on Aug 19, 2011
  1. Merge branch 'asmfailures'

    These commits fix all asm codegen failures in the testsuite.
    committed Aug 19, 2011
  2. Increase size of the fake heap used in asm traces

    The fake heap was too small which was causing some problems
    when too much data was allocated on a trace. We increase the
    size to allow the fake heap to work for more traces.
    
    The Bench.SumSquare1 test now passes.
    committed Aug 19, 2011
  3. Fix bug in storage manager region allocator

    The allocator was not working correctly when an
    allocation caused it to need to allocate a new region. It
    was returning the end of the new region instead of the
    beginning of the new region.
    committed Aug 19, 2011
  4. Fixed bug in register allocator

    We were not properly handling the case where a value is live
    on entry to the loop but dies in the loop and its register
    gets reused for another value. The register would have the
    wrong value after the first iteration of the loop.
    
    The fix is to insert a load of the invariant at the top of
    the loop when its register is modified in the body of the
    loop.
    
    The Bench.Primes test is now working.
    committed Aug 19, 2011
  5. Fixed error in FLOAD codegen

    When the FLOAD was loading from a FREF whose first operand
    was a constant, the code generated was incorrect. We now
    correctly handle this case.
    
    To make this work we moved all code for generating the
    correct FREF inside the FLOAD. The `fuseload` function is
    now unused so we delete it in this commit.
    
    The Bench.SumFromTo3 test now passes successfully.
    committed Aug 19, 2011
Commits on Aug 18, 2011
  1. Updated debugging settings

    committed Aug 18, 2011
  2. Updated gitignore

    committed Aug 18, 2011
  3. Fix codegen for IMUL instruction

    The IMUL instruction was not getting encoded correctly. It
    needs special case handling in asm_intarith.
    committed Aug 18, 2011