Saturday, March 13, 2010

recent changes

  1. I've restored the ability to gc in the middle of a function. This required coming up with a bit of a trick to copy registers in and out of gc:
    void gc_regs_in (int n) {
    switch (n) {
    case 4: heap1[6] = r3;
    case 3: heap1[5] = r2;
    case 2: heap1[4] = r1;
    case 1: heap1[3] = r0;
    }}


  2. Literal data built at compile-time. Big win for programs with lots of pre-initialized data (like lexer and parser tables).

  3. Register bindings for variables in leaf positions. This will cut down on lots of heap allocation

  4. Verify the output of tests.

  5. Filled out the type declaration syntax (type variables, recursive types, etc...) and unified it with the cexp syntax. (Well, to the extent that they use a single parser now rather than two different ones).

No comments:

Post a Comment