diff options
Diffstat (limited to 'src/vm/amd64/cgenamd64.cpp')
-rw-r--r-- | src/vm/amd64/cgenamd64.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/vm/amd64/cgenamd64.cpp b/src/vm/amd64/cgenamd64.cpp index 56e3bfa738..6d11c7f0fa 100644 --- a/src/vm/amd64/cgenamd64.cpp +++ b/src/vm/amd64/cgenamd64.cpp @@ -689,7 +689,7 @@ INT32 rel32UsingJumpStub(INT32 UNALIGNED * pRel32, PCODE target, MethodDesc *pMe return static_cast<INT32>(offset); } -INT32 rel32UsingPreallocatedJumpStub(INT32 UNALIGNED * pRel32, PCODE target, PCODE jumpStubAddr) +INT32 rel32UsingPreallocatedJumpStub(INT32 UNALIGNED * pRel32, PCODE target, PCODE jumpStubAddr, bool emitJump) { CONTRACTL { @@ -711,7 +711,14 @@ INT32 rel32UsingPreallocatedJumpStub(INT32 UNALIGNED * pRel32, PCODE target, PCO EEPOLICY_HANDLE_FATAL_ERROR(COR_E_EXECUTIONENGINE); } - emitBackToBackJump((LPBYTE)jumpStubAddr, (LPVOID)target); + if (emitJump) + { + emitBackToBackJump((LPBYTE)jumpStubAddr, (LPVOID)target); + } + else + { + _ASSERTE(decodeBackToBackJump(jumpStubAddr) == target); + } } _ASSERTE(FitsInI4(offset)); |