Hi!!
Trying to understand cti functions on the example of emit_op_new_array functions.
Here is the code of emit_op_new_array
void JIT::emit_op_new_array(Instruction* currentInstruction)
{
JITStubCall stubCall(this, cti_op_new_array);
stubCall.addArgument(Imm32(currentInstruction[2].u.operand));
stubCall.addArgument(Imm32(currentInstruction[3].u.operand));
stubCall.call(currentInstruction[1].u.operand);
}
As I understand 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".
The question is how can I get reference to the craeted array to manipulate it in future?
And in general, can anyone please explain in detail how this scheme of cti functions works?
Thanks!