diff --git a/src/scripting/backend/vmbuilder.cpp b/src/scripting/backend/vmbuilder.cpp index c437a6009..74d3cdc41 100644 --- a/src/scripting/backend/vmbuilder.cpp +++ b/src/scripting/backend/vmbuilder.cpp @@ -1068,16 +1068,17 @@ ExpEmit FunctionCallEmitter::EmitCall(VMFunctionBuilder *build, TArray } + if (virtualselfreg == -1) { - build->Emit(OP_CALL_K, build->GetConstantAddress(target), paramcount, returns.Size()); + build->Emit(OP_CALL_K, build->GetConstantAddress(target), paramcount, vm_jit ? target->Proto->ReturnTypes.Size() : returns.Size()); } else { ExpEmit funcreg(build, REGT_POINTER); build->Emit(OP_VTBL, funcreg.RegNum, virtualselfreg, target->VirtualIndex); - build->Emit(OP_CALL, funcreg.RegNum, paramcount, returns.Size()); + build->Emit(OP_CALL, funcreg.RegNum, paramcount, vm_jit? target->Proto->ReturnTypes.Size() : returns.Size()); } assert(returns.Size() < 2 || ReturnRegs != nullptr);