Commits on Jul 16, 2010
  1. @juliend2
Commits on Jun 5, 2009
Commits on May 3, 2009
  1. Implement method_missing. Required a couple ugly tweaks in the byteco…

    …de execution. I'm starting to hate the design for method lookup -> call... Need something better!
    
    LOOKUP instruction will now store the call site on the C stack, not in the regs. I'm not sure if this is bad or not, but since LOOKUP/CALL instructions are always next to each other there's no way this could not work, right, riiiight?
    Also, I found out that a CallSite was created on heap (and never freed) each time a polymorphic call is made, this is an important bug and will require rethinking the method lookup structure in the VM.
    RE method_missing, I got it to work by pading the arguments w/ an empty slot first.
    
    Normal call:
     reg   value
     ===========
     0     receiver
     1     nil
     2     arg #1
     3     arg #2
    
    Method missing call:
     reg   value
     ===========
     0     receiver
     1     method name (replace by CALL instruction)
     2     arg #1
     3     arg #2
    
    You see that most of the time, reg[1] is not used, that's not a big deal since we got plenty of registers left. The compiler needs to set the maximum number of register to be used so we have to set it to the max possible (+1, max number of args).
    
    That is all...
    
    w/ love,
    m-a
    committed May 3, 2009
Commits on Apr 27, 2009
Commits on Apr 22, 2009
Commits on Apr 21, 2009
Commits on Apr 20, 2009
  1. Propagate exception in frames.

    Initialize all fields in call frame.
    committed Apr 19, 2009
Commits on Apr 17, 2009
  1. Merge branch 'master' into raise

    * master:
      Store call frames as a linked list and stack on the C stack.
    
    Conflicts:
    
    	vm/call.h
    	vm/vm.c
    committed Apr 16, 2009
  2. Store call frames as a linked list and stack on the C stack.

    Fix khash bug when replaving an existing value w/ the same key.
    committed Apr 16, 2009
Commits on Apr 16, 2009
  1. Implement non local return.

    Add break instruction.
    committed Apr 15, 2009
Commits on Apr 15, 2009
Commits on Apr 13, 2009
  1. Remove reference to longjmp.

    committed Apr 12, 2009
Commits on Apr 12, 2009
  1. Move inlined functions frequently used in the method calling process …

    …to call.h.
    
    To be reused to implement proper tr_send and Object#send.
    committed Apr 11, 2009
Commits on Apr 11, 2009
  1. Add RegexpError.

    committed Apr 11, 2009
  2. Merge branch 'master' into error

    * master:
      Add benchmarks for regexp and array.
      Update Makefile and REAME for new bundled PCRE lib.
      Vendor PCRE
      Remove peg binaries
      Add installation note about libpcre on Linux
      Ignore compiled files in vendor/peg
      Freeze peg instead of a git submodule
      Rexexp Rexexp Rexexp Rexexp Rexexp Rexexp!!! ZOMG!
    
    Conflicts:
    
    	Makefile
    	vm/grammar.leg
    	vm/tr.h
    committed Apr 11, 2009
Commits on Apr 10, 2009
  1. Vendor PCRE

    committed Apr 9, 2009
Commits on Apr 9, 2009
  1. Remove peg binaries

    committed Apr 9, 2009
  2. Rexexp Rexexp Rexexp Rexexp Rexexp Rexexp!!! ZOMG!

    I'm using PCRE and it's not bundled cause I'm having lots of
    problems compiling from source. So you need to install it by
    youself for now.
    
      sudo port install pcre
    committed Apr 8, 2009
Commits on Apr 8, 2009