…in Snow Leopard
…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 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
Fix khash bug when replaving an existing value w/ the same key.
…to call.h. To be reused to implement proper tr_send and Object#send.
* 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
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