private void _storeArgementToSlot(int id,RunTimeValueBase v) { var signature = toCallFunc.signature; if (signature.onStackParameters > 0) { ASBinCode.rtti.FunctionParameter fp = signature.parameters[id]; if (fp.isOnStack) { StackSlotAccessor r = (StackSlotAccessor)fp.varorreg; //int index = invokerFrame.offset + invokerFrame.block.totalRegisters + 1 + 1+ invokerFrame.call_parameter_slotCount + r._index; int index = invokerFrame.baseBottomSlotIndex + invokerFrame.call_parameter_slotCount + r._index; invokerFrame.stack[index].directSet(v); } else { CallFuncHeap[((Variable)fp.varorreg).indexOfMembers].directSet( v ); } } else { CallFuncHeap[id].directSet(v); } }
private SLOT _getArgementSlot(int id) { var signature = toCallFunc.signature; if (signature.onStackParameters > 0) { ASBinCode.rtti.FunctionParameter fp = signature.parameters[id]; if (fp.isOnStack) { StackSlotAccessor r = (StackSlotAccessor)fp.varorreg; //int index = invokerFrame.offset + invokerFrame.block.totalRegisters + 1 + 1 + invokerFrame.call_parameter_slotCount + r._index; int index = invokerFrame.baseBottomSlotIndex + invokerFrame.call_parameter_slotCount + r._index; return(invokerFrame.stack[index]); } else { return(CallFuncHeap[((Variable)fp.varorreg).indexOfMembers]); } } else { return(CallFuncHeap[id]); } }