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!