summaryrefslogtreecommitdiff
path: root/src/vm/amd64/cgenamd64.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/amd64/cgenamd64.cpp')
-rw-r--r--src/vm/amd64/cgenamd64.cpp11
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));