On Mar 31, 2012, at 6:13 AM, wingoog moon <wingoog91@gmail.com> wrote:
stubCall.call(currentInstruction[1].u.operand) calls function DEFINE_STUB_FUNCTION(JSObject*, op_new_array) from JITStubs.cpp. And at this point execution of our JS programm is "interputing" and here C functions starting to work to "create array".
Just to be clear, this line of code does not directly call the cti helper stub, this is compiling JIT code, that when run will call the helper stub. Local variables & temporary values between operations are stored in the VM's register file, indexed by virtual register numbers. For the new_array opcode (and most opcodes) the virtual register indicating where to store the result in is stored in the bytecode instruction stream immediately after the opcode - and is being accessed here by the expression "currentInstruction[1].u.operand". The argument to the call method here is the virtual register number to store the result back to. G. Sent from my iPhone