Permalink
Commits on Feb 7, 2012
  1. Add missing check for unsinkable nodes.

    nominolo committed Feb 7, 2012
    If either argument of a PHI node is unsinkable, then so should be
    the other.
Commits on Feb 5, 2012
  1. Implement support for return traces.

    nominolo committed Feb 5, 2012
    RET1 now can become the start of a trace.  Such traces usually consist
    of guards for the correct return address and a few writes to the
    stack.  We can reuse the SAVE instruction to update the stack
    contents.  Currently only return traces are allowed to record below
    their initial frame.  Regular traces will still abort when reaching a
    RET1 instruction that would take them outside the initial frame.
  2. Follow indirections in CALLT.

    nominolo committed Feb 5, 2012
Commits on Feb 2, 2012
Commits on Jan 30, 2012
  1. Allow snapshotting of slots below initial base.

    nominolo committed Jan 30, 2012
    There were a lot of implicit assumptions that the initial J->baseslot
    would be 1.  The initial value is now a compile-time constant.
    
    The slot map currently shouldn't go beyond 255 slots as we may run
    into integer range issues, because SnapShot fields are currently only
    8 bit integers.
Commits on Jan 20, 2012
  1. Fix unused-variable warnings.

    nominolo committed Jan 20, 2012
  2. Add test with deeper stack.

    nominolo committed Jan 20, 2012
Commits on Jan 19, 2012
  1. Handle potential GC during CALL[T].

    nominolo committed Jan 19, 2012
    If we are creating partial applications we might fail the heap check,
    so we have to enforce consistent state in these situations.
  2. Support GC'ing of PAPs.

    nominolo committed Jan 19, 2012
  3. Fix bug when calling PAPs.

    nominolo committed Jan 19, 2012
Commits on Jan 18, 2012
Commits on Jan 17, 2012
  1. Add assertion in `evacuate`.

    nominolo committed Jan 17, 2012
  2. Remove NEW_INT implementation.

    nominolo committed Jan 17, 2012
    We don't use BiBOP yet and small integer deduplication can be done at
    GC time, so we don't need a special NEW_INT instruction (which was
    actually never generated by the bytecode compiler).
  3. Fix segfault in IR interpreter.

    nominolo committed Jan 17, 2012
  4. Allow optional filename argument to --print-loader-state.

    nominolo committed Jan 17, 2012
    If an argument is given we dump the loader state to that file
    instead of writing everything to stderr.
Commits on Jan 13, 2012
  1. Allow specifying the stack size on startup.

    nominolo committed Jan 13, 2012
    E.g., to set a stack size of 32K bytes use:
    
        ./interp --stack=32K ...otherargs..
  2. Dump assembly after building the trace, not when entering.

    nominolo committed Jan 13, 2012
    If the debug level is high enough, we now dump the trace IR
    and assembly into debug files.  This should make it easier to
    debug test cases with multiple traces.
Commits on Jan 12, 2012
  1. Fix memory corruption when copying traces (*ouch*).

    nominolo committed Jan 12, 2012
    I got biasing wrong and was copying traces someplace else.  This only
    showed up because we had (a) multiple traces and (b) an earlier trace
    was entered again.
    
    Now all tests actually give the expected result!  Time for some larger
    test cases.
Commits on Jan 11, 2012
  1. Don't hardcode debug level.

    nominolo committed Jan 11, 2012
  2. Fix warning.

    nominolo committed Jan 11, 2012
  3. Do a stack check before looping back to the trace.

    nominolo committed Jan 11, 2012
    We currently simply abort if there was a stack overflow. Growable
    stacks will have to wait a long time.
Commits on Jan 10, 2012
  1. Store stack limit on C stack when entering a trace.

    nominolo committed Jan 10, 2012
    This will be used to implement stack overflow guards.  The stack limit
    is never changed from within a trace.