diff options
-rwxr-xr-x | src/jit/codegen.h | 30 | ||||
-rw-r--r-- | src/jit/codegencommon.cpp | 36 | ||||
-rw-r--r-- | src/jit/codegenlinear.cpp | 64 | ||||
-rw-r--r-- | src/jit/codegenxarch.cpp | 98 | ||||
-rw-r--r-- | src/jit/emitxarch.cpp | 29 | ||||
-rw-r--r-- | src/jit/emitxarch.h | 48 | ||||
-rw-r--r-- | src/jit/instr.cpp | 50 |
7 files changed, 253 insertions, 102 deletions
diff --git a/src/jit/codegen.h b/src/jit/codegen.h index 507970ee15..cb5a597478 100755 --- a/src/jit/codegen.h +++ b/src/jit/codegen.h @@ -416,20 +416,30 @@ protected: void genPrologPadForReJit(); + // clang-format off void genEmitCall(int callType, CORINFO_METHOD_HANDLE methHnd, - INDEBUG_LDISASM_COMMA(CORINFO_SIG_INFO* sigInfo) void* addr X86_ARG(ssize_t argSize), - emitAttr retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), - IL_OFFSETX ilOffset, - regNumber base = REG_NA, - bool isJump = false, - bool isNoGC = false); - + INDEBUG_LDISASM_COMMA(CORINFO_SIG_INFO* sigInfo) + void* addr + X86_ARG(ssize_t argSize), + emitAttr retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), + IL_OFFSETX ilOffset, + regNumber base = REG_NA, + bool isJump = false, + bool isNoGC = false); + // clang-format on + + // clang-format off void genEmitCall(int callType, CORINFO_METHOD_HANDLE methHnd, - INDEBUG_LDISASM_COMMA(CORINFO_SIG_INFO* sigInfo) GenTreeIndir* indir X86_ARG(ssize_t argSize), - emitAttr retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), - IL_OFFSETX ilOffset); + INDEBUG_LDISASM_COMMA(CORINFO_SIG_INFO* sigInfo) + GenTreeIndir* indir + X86_ARG(ssize_t argSize), + emitAttr retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), + IL_OFFSETX ilOffset); + // clang-format on // // Epilog functions diff --git a/src/jit/codegencommon.cpp b/src/jit/codegencommon.cpp index 75de4206f8..15a0bd3be3 100644 --- a/src/jit/codegencommon.cpp +++ b/src/jit/codegencommon.cpp @@ -9270,16 +9270,23 @@ void CodeGen::genFnEpilog(BasicBlock* block) * the same descriptor with some minor adjustments. */ - getEmitter()->emitIns_Call(callType, methHnd, INDEBUG_LDISASM_COMMA(nullptr) addr, + // clang-format off + getEmitter()->emitIns_Call(callType, + methHnd, + INDEBUG_LDISASM_COMMA(nullptr) + addr, 0, // argSize EA_UNKNOWN, // retSize - gcInfo.gcVarPtrSetCur, gcInfo.gcRegGCrefSetCur, gcInfo.gcRegByrefSetCur, + gcInfo.gcVarPtrSetCur, + gcInfo.gcRegGCrefSetCur, + gcInfo.gcRegByrefSetCur, BAD_IL_OFFSET, // IL offset indCallReg, // ireg REG_NA, // xreg 0, // xmul 0, // disp true); // isJump + // clang-format on } else { @@ -9372,13 +9379,21 @@ void CodeGen::genFnEpilog(BasicBlock* block) // Simply emit a jump to the methodHnd. This is similar to a call so we can use // the same descriptor with some minor adjustments. - getEmitter()->emitIns_Call(callType, methHnd, INDEBUG_LDISASM_COMMA(nullptr) addrInfo.addr, + + // clang-format off + getEmitter()->emitIns_Call(callType, + methHnd, + INDEBUG_LDISASM_COMMA(nullptr) + addrInfo.addr, 0, // argSize EA_UNKNOWN, // retSize EA_UNKNOWN, // secondRetSize - gcInfo.gcVarPtrSetCur, gcInfo.gcRegGCrefSetCur, gcInfo.gcRegByrefSetCur, + gcInfo.gcVarPtrSetCur, + gcInfo.gcRegGCrefSetCur, + gcInfo.gcRegByrefSetCur, BAD_IL_OFFSET, REG_NA, REG_NA, 0, 0, /* iloffset, ireg, xreg, xmul, disp */ true); /* isJump */ + // clang-format on } #if FEATURE_FASTTAILCALL else @@ -9660,14 +9675,21 @@ void CodeGen::genFnEpilog(BasicBlock* block) // Simply emit a jump to the methodHnd. This is similar to a call so we can use // the same descriptor with some minor adjustments. - getEmitter()->emitIns_Call(callType, methHnd, INDEBUG_LDISASM_COMMA(nullptr) addrInfo.addr, + + // clang-format off + getEmitter()->emitIns_Call(callType, + methHnd, + INDEBUG_LDISASM_COMMA(nullptr) + addrInfo.addr, 0, // argSize EA_UNKNOWN // retSize FEATURE_UNIX_AMD64_STRUCT_PASSING_ONLY_ARG(EA_UNKNOWN), // secondRetSize gcInfo.gcVarPtrSetCur, - gcInfo.gcRegGCrefSetCur, gcInfo.gcRegByrefSetCur, BAD_IL_OFFSET, REG_NA, REG_NA, - 0, 0, /* iloffset, ireg, xreg, xmul, disp */ + gcInfo.gcRegGCrefSetCur, + gcInfo.gcRegByrefSetCur, + BAD_IL_OFFSET, REG_NA, REG_NA, 0, 0, /* iloffset, ireg, xreg, xmul, disp */ true); /* isJump */ + // clang-format on } #if FEATURE_FASTTAILCALL else diff --git a/src/jit/codegenlinear.cpp b/src/jit/codegenlinear.cpp index 001048e64a..ccba5d257b 100644 --- a/src/jit/codegenlinear.cpp +++ b/src/jit/codegenlinear.cpp @@ -1735,43 +1735,73 @@ void CodeGen::genTransferRegGCState(regNumber dst, regNumber src) // pass in 'addr' for a relative call or 'base' for a indirect register call // methHnd - optional, only used for pretty printing // retSize - emitter type of return for GC purposes, should be EA_BYREF, EA_GCREF, or EA_PTRSIZE(not GC) +// +// clang-format off void CodeGen::genEmitCall(int callType, CORINFO_METHOD_HANDLE methHnd, - INDEBUG_LDISASM_COMMA(CORINFO_SIG_INFO* sigInfo) void* addr X86_ARG(ssize_t argSize), - emitAttr retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), - IL_OFFSETX ilOffset, - regNumber base, - bool isJump, - bool isNoGC) + INDEBUG_LDISASM_COMMA(CORINFO_SIG_INFO* sigInfo) + void* addr + X86_ARG(ssize_t argSize), + emitAttr retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), + IL_OFFSETX ilOffset, + regNumber base, + bool isJump, + bool isNoGC) { #if !defined(_TARGET_X86_) ssize_t argSize = 0; #endif // !defined(_TARGET_X86_) - getEmitter()->emitIns_Call(emitter::EmitCallType(callType), methHnd, INDEBUG_LDISASM_COMMA(sigInfo) addr, argSize, - retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), gcInfo.gcVarPtrSetCur, - gcInfo.gcRegGCrefSetCur, gcInfo.gcRegByrefSetCur, ilOffset, base, REG_NA, 0, 0, isJump, + getEmitter()->emitIns_Call(emitter::EmitCallType(callType), + methHnd, + INDEBUG_LDISASM_COMMA(sigInfo) + addr, + argSize, + retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), + gcInfo.gcVarPtrSetCur, + gcInfo.gcRegGCrefSetCur, + gcInfo.gcRegByrefSetCur, + ilOffset, base, REG_NA, 0, 0, isJump, emitter::emitNoGChelper(compiler->eeGetHelperNum(methHnd))); } +// clang-format on // generates an indirect call via addressing mode (call []) given an indir node // methHnd - optional, only used for pretty printing // retSize - emitter type of return for GC purposes, should be EA_BYREF, EA_GCREF, or EA_PTRSIZE(not GC) +// +// clang-format off void CodeGen::genEmitCall(int callType, CORINFO_METHOD_HANDLE methHnd, - INDEBUG_LDISASM_COMMA(CORINFO_SIG_INFO* sigInfo) GenTreeIndir* indir X86_ARG(ssize_t argSize), - emitAttr retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), - IL_OFFSETX ilOffset) + INDEBUG_LDISASM_COMMA(CORINFO_SIG_INFO* sigInfo) + GenTreeIndir* indir + X86_ARG(ssize_t argSize), + emitAttr retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), + IL_OFFSETX ilOffset) { #if !defined(_TARGET_X86_) ssize_t argSize = 0; #endif // !defined(_TARGET_X86_) genConsumeAddress(indir->Addr()); - getEmitter()->emitIns_Call(emitter::EmitCallType(callType), methHnd, INDEBUG_LDISASM_COMMA(sigInfo) nullptr, - argSize, retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), - gcInfo.gcVarPtrSetCur, gcInfo.gcRegGCrefSetCur, gcInfo.gcRegByrefSetCur, ilOffset, - indir->Base() ? indir->Base()->gtRegNum : REG_NA, - indir->Index() ? indir->Index()->gtRegNum : REG_NA, indir->Scale(), indir->Offset()); + getEmitter()->emitIns_Call(emitter::EmitCallType(callType), + methHnd, + INDEBUG_LDISASM_COMMA(sigInfo) + nullptr, + argSize, + retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), + gcInfo.gcVarPtrSetCur, + gcInfo.gcRegGCrefSetCur, + gcInfo.gcRegByrefSetCur, + ilOffset, + (indir->Base() != nullptr) ? indir->Base()->gtRegNum : REG_NA, + (indir->Index() != nullptr) ? indir->Index()->gtRegNum : REG_NA, + indir->Scale(), + indir->Offset()); } +// clang-format on #endif // !LEGACY_BACKEND diff --git a/src/jit/codegenxarch.cpp b/src/jit/codegenxarch.cpp index acf7a0d266..6acbe58508 100644 --- a/src/jit/codegenxarch.cpp +++ b/src/jit/codegenxarch.cpp @@ -5046,11 +5046,20 @@ void CodeGen::genCallInstruction(GenTreePtr node) genCopyRegIfNeeded(addr, REG_VIRTUAL_STUB_TARGET); getEmitter()->emitIns_Nop(3); - getEmitter()->emitIns_Call(emitter::EmitCallType(emitter::EC_INDIR_ARD), methHnd, - INDEBUG_LDISASM_COMMA(sigInfo) nullptr, argSizeForEmitter, - retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), - gcInfo.gcVarPtrSetCur, gcInfo.gcRegGCrefSetCur, gcInfo.gcRegByrefSetCur, + + // clang-format off + getEmitter()->emitIns_Call(emitter::EmitCallType(emitter::EC_INDIR_ARD), + methHnd, + INDEBUG_LDISASM_COMMA(sigInfo) + nullptr, + argSizeForEmitter, + retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), + gcInfo.gcVarPtrSetCur, + gcInfo.gcRegGCrefSetCur, + gcInfo.gcRegByrefSetCur, ilOffset, REG_VIRTUAL_STUB_TARGET, REG_NA, 1, 0); + // clang-format on } else #endif @@ -5062,18 +5071,29 @@ void CodeGen::genCallInstruction(GenTreePtr node) // contained only if it can be encoded as PC-relative offset. assert(target->AsIndir()->Base()->AsIntConCommon()->FitsInAddrBase(compiler)); - genEmitCall(emitter::EC_FUNC_TOKEN_INDIR, methHnd, - INDEBUG_LDISASM_COMMA(sigInfo)(void*) target->AsIndir() - ->Base() - ->AsIntConCommon() - ->IconValue() X86_ARG(argSizeForEmitter), - retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), ilOffset); + // clang-format off + genEmitCall(emitter::EC_FUNC_TOKEN_INDIR, + methHnd, + INDEBUG_LDISASM_COMMA(sigInfo) + (void*) target->AsIndir()->Base()->AsIntConCommon()->IconValue() + X86_ARG(argSizeForEmitter), + retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), + ilOffset); + // clang-format on } else { - genEmitCall(emitter::EC_INDIR_ARD, methHnd, - INDEBUG_LDISASM_COMMA(sigInfo) target->AsIndir() X86_ARG(argSizeForEmitter), - retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), ilOffset); + // clang-format off + genEmitCall(emitter::EC_INDIR_ARD, + methHnd, + INDEBUG_LDISASM_COMMA(sigInfo) + target->AsIndir() + X86_ARG(argSizeForEmitter), + retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), + ilOffset); + // clang-format on } } else @@ -5081,19 +5101,34 @@ void CodeGen::genCallInstruction(GenTreePtr node) // We have already generated code for gtControlExpr evaluating it into a register. // We just need to emit "call reg" in this case. assert(genIsValidIntReg(target->gtRegNum)); - genEmitCall(emitter::EC_INDIR_R, methHnd, - INDEBUG_LDISASM_COMMA(sigInfo) nullptr // addr + + // clang-format off + genEmitCall(emitter::EC_INDIR_R, + methHnd, + INDEBUG_LDISASM_COMMA(sigInfo) + nullptr // addr X86_ARG(argSizeForEmitter), - retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), ilOffset, genConsumeReg(target)); + retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), + ilOffset, + genConsumeReg(target)); + // clang-format on } } #ifdef FEATURE_READYTORUN_COMPILER else if (call->gtEntryPoint.addr != nullptr) { + // clang-format off genEmitCall((call->gtEntryPoint.accessType == IAT_VALUE) ? emitter::EC_FUNC_TOKEN : emitter::EC_FUNC_TOKEN_INDIR, - methHnd, INDEBUG_LDISASM_COMMA(sigInfo)(void*) call->gtEntryPoint.addr X86_ARG(argSizeForEmitter), - retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), ilOffset); + methHnd, + INDEBUG_LDISASM_COMMA(sigInfo) + (void*) call->gtEntryPoint.addr + X86_ARG(argSizeForEmitter), + retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), + ilOffset); + // clang-format on } #endif else @@ -5129,8 +5164,17 @@ void CodeGen::genCallInstruction(GenTreePtr node) } // Non-virtual direct calls to known addresses - genEmitCall(emitter::EC_FUNC_TOKEN, methHnd, INDEBUG_LDISASM_COMMA(sigInfo) addr X86_ARG(argSizeForEmitter), - retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), ilOffset); + + // clang-format off + genEmitCall(emitter::EC_FUNC_TOKEN, + methHnd, + INDEBUG_LDISASM_COMMA(sigInfo) + addr + X86_ARG(argSizeForEmitter), + retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), + ilOffset); + // clang-format on } #if defined(UNIX_X86_ABI) @@ -8475,14 +8519,22 @@ void CodeGen::genEmitHelperCall(unsigned helper, int argSize, emitAttr retSize, } } - getEmitter()->emitIns_Call(callType, compiler->eeFindHelper(helper), INDEBUG_LDISASM_COMMA(nullptr) addr, argSize, - retSize FEATURE_UNIX_AMD64_STRUCT_PASSING_ONLY_ARG(EA_UNKNOWN), gcInfo.gcVarPtrSetCur, - gcInfo.gcRegGCrefSetCur, gcInfo.gcRegByrefSetCur, + // clang-format off + getEmitter()->emitIns_Call(callType, + compiler->eeFindHelper(helper), + INDEBUG_LDISASM_COMMA(nullptr) addr, + argSize, + retSize + FEATURE_UNIX_AMD64_STRUCT_PASSING_ONLY_ARG(EA_UNKNOWN), + gcInfo.gcVarPtrSetCur, + gcInfo.gcRegGCrefSetCur, + gcInfo.gcRegByrefSetCur, BAD_IL_OFFSET, // IL offset callTarget, // ireg REG_NA, 0, 0, // xreg, xmul, disp false, // isJump emitter::emitNoGChelper(helper)); + // clang-format on regTracker.rsTrashRegSet(killMask); regTracker.rsTrashRegsForGCInterruptability(); diff --git a/src/jit/emitxarch.cpp b/src/jit/emitxarch.cpp index dc59244e1a..f672913a3b 100644 --- a/src/jit/emitxarch.cpp +++ b/src/jit/emitxarch.cpp @@ -5207,22 +5207,25 @@ void emitter::emitAdjustStackDepth(instruction ins, ssize_t val) * */ +// clang-format off void emitter::emitIns_Call(EmitCallType callType, CORINFO_METHOD_HANDLE methHnd, INDEBUG_LDISASM_COMMA(CORINFO_SIG_INFO* sigInfo) // used to report call sites to the EE - void* addr, - ssize_t argSize, - emitAttr retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), - VARSET_VALARG_TP ptrVars, - regMaskTP gcrefRegs, - regMaskTP byrefRegs, - IL_OFFSETX ilOffset, // = BAD_IL_OFFSET - regNumber ireg, // = REG_NA - regNumber xreg, // = REG_NA - unsigned xmul, // = 0 - ssize_t disp, // = 0 - bool isJump, // = false - bool isNoGC) // = false + void* addr, + ssize_t argSize, + emitAttr retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), + VARSET_VALARG_TP ptrVars, + regMaskTP gcrefRegs, + regMaskTP byrefRegs, + IL_OFFSETX ilOffset, // = BAD_IL_OFFSET + regNumber ireg, // = REG_NA + regNumber xreg, // = REG_NA + unsigned xmul, // = 0 + ssize_t disp, // = 0 + bool isJump, // = false + bool isNoGC) // = false +// clang-format on { /* Sanity check the arguments depending on callType */ diff --git a/src/jit/emitxarch.h b/src/jit/emitxarch.h index 524b057915..82b55a962f 100644 --- a/src/jit/emitxarch.h +++ b/src/jit/emitxarch.h @@ -452,35 +452,41 @@ enum EmitCallType EC_COUNT }; +// clang-format off void emitIns_Call(EmitCallType callType, CORINFO_METHOD_HANDLE methHnd, CORINFO_SIG_INFO* sigInfo, // used to report call sites to the EE void* addr, ssize_t argSize, - emitAttr retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), - VARSET_VALARG_TP ptrVars, - regMaskTP gcrefRegs, - regMaskTP byrefRegs, - GenTreeIndir* indir, - bool isJump = false, - bool isNoGC = false); - + emitAttr retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), + VARSET_VALARG_TP ptrVars, + regMaskTP gcrefRegs, + regMaskTP byrefRegs, + GenTreeIndir* indir, + bool isJump = false, + bool isNoGC = false); +// clang-format on + +// clang-format off void emitIns_Call(EmitCallType callType, CORINFO_METHOD_HANDLE methHnd, INDEBUG_LDISASM_COMMA(CORINFO_SIG_INFO* sigInfo) // used to report call sites to the EE - void* addr, - ssize_t argSize, - emitAttr retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), - VARSET_VALARG_TP ptrVars, - regMaskTP gcrefRegs, - regMaskTP byrefRegs, - IL_OFFSETX ilOffset = BAD_IL_OFFSET, - regNumber ireg = REG_NA, - regNumber xreg = REG_NA, - unsigned xmul = 0, - ssize_t disp = 0, - bool isJump = false, - bool isNoGC = false); + void* addr, + ssize_t argSize, + emitAttr retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize), + VARSET_VALARG_TP ptrVars, + regMaskTP gcrefRegs, + regMaskTP byrefRegs, + IL_OFFSETX ilOffset = BAD_IL_OFFSET, + regNumber ireg = REG_NA, + regNumber xreg = REG_NA, + unsigned xmul = 0, + ssize_t disp = 0, + bool isJump = false, + bool isNoGC = false); +// clang-format on #ifdef _TARGET_AMD64_ // Is the last instruction emitted a call instruction? diff --git a/src/jit/instr.cpp b/src/jit/instr.cpp index d2be69dbc6..bfcdcc8ccc 100644 --- a/src/jit/instr.cpp +++ b/src/jit/instr.cpp @@ -1251,9 +1251,12 @@ void CodeGen::sched_AM(instruction ins, * Emit a "call [r/m]" instruction (the r/m operand given by a tree). */ +// clang-format off void CodeGen::instEmit_indCall(GenTreePtr call, size_t argSize, - emitAttr retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize)) + emitAttr retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(emitAttr secondRetSize)) +// clang-format on { GenTreePtr addr; @@ -1290,11 +1293,19 @@ void CodeGen::instEmit_indCall(GenTreePtr call, { ssize_t funcPtr = addr->gtIntCon.gtIconVal; + // clang-format off getEmitter()->emitIns_Call(emitter::EC_FUNC_ADDR, NULL, // methHnd - INDEBUG_LDISASM_COMMA(sigInfo)(void*) funcPtr, argSize, - retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), - gcInfo.gcVarPtrSetCur, gcInfo.gcRegGCrefSetCur, gcInfo.gcRegByrefSetCur); + INDEBUG_LDISASM_COMMA(sigInfo) + (void*) funcPtr, + argSize, + retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), + gcInfo.gcVarPtrSetCur, + gcInfo.gcRegGCrefSetCur, + gcInfo.gcRegByrefSetCur); + // clang-format on + return; } } @@ -1347,11 +1358,19 @@ void CodeGen::instEmit_indCall(GenTreePtr call, { ssize_t funcPtr = addr->gtIntCon.gtIconVal; + // clang-format off getEmitter()->emitIns_Call(emitter::EC_FUNC_ADDR, nullptr, // methHnd - INDEBUG_LDISASM_COMMA(sigInfo)(void*) funcPtr, argSize, - retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), - gcInfo.gcVarPtrSetCur, gcInfo.gcRegGCrefSetCur, gcInfo.gcRegByrefSetCur); + INDEBUG_LDISASM_COMMA(sigInfo) + (void*) funcPtr, + argSize, + retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), + gcInfo.gcVarPtrSetCur, + gcInfo.gcRegGCrefSetCur, + gcInfo.gcRegByrefSetCur); + // clang-format on + return; } } @@ -1409,14 +1428,23 @@ void CodeGen::instEmit_indCall(GenTreePtr call, #endif // CPU_LOAD_STORE_ARCH + // clang-format off getEmitter()->emitIns_Call(emitCallType, nullptr, // methHnd - INDEBUG_LDISASM_COMMA(sigInfo) nullptr, // addr - argSize, retSize MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), - gcInfo.gcVarPtrSetCur, gcInfo.gcRegGCrefSetCur, gcInfo.gcRegByrefSetCur, + INDEBUG_LDISASM_COMMA(sigInfo) + nullptr, // addr + argSize, + retSize + MULTIREG_HAS_SECOND_GC_RET_ONLY_ARG(secondRetSize), + gcInfo.gcVarPtrSetCur, + gcInfo.gcRegGCrefSetCur, + gcInfo.gcRegByrefSetCur, BAD_IL_OFFSET, // ilOffset - brg, xrg, mul, + brg, + xrg, + mul, cns); // addressing mode values + // clang-format on } #ifdef LEGACY_BACKEND |