summaryrefslogtreecommitdiff
path: root/src/vm/arm64/asmhelpers.asm
diff options
context:
space:
mode:
authorRahul Kumar <rahku@microsoft.com>2016-04-20 16:27:04 -0700
committerRahul Kumar <rahku@microsoft.com>2016-04-28 15:47:17 -0700
commitef161ab2bb87207f52c7db9472fd5a027dbe5f12 (patch)
treed97273f3d0800b33e0a8e9461f0f1287ce2a38ca /src/vm/arm64/asmhelpers.asm
parente9bc870cbba0178ae30c3cfdf65ba2ef2bdd229e (diff)
downloadcoreclr-ef161ab2bb87207f52c7db9472fd5a027dbe5f12.tar.gz
coreclr-ef161ab2bb87207f52c7db9472fd5a027dbe5f12.tar.bz2
coreclr-ef161ab2bb87207f52c7db9472fd5a027dbe5f12.zip
Enable ReadyToRun feature for arm64
Diffstat (limited to 'src/vm/arm64/asmhelpers.asm')
-rw-r--r--src/vm/arm64/asmhelpers.asm51
1 files changed, 50 insertions, 1 deletions
diff --git a/src/vm/arm64/asmhelpers.asm b/src/vm/arm64/asmhelpers.asm
index 55df26aa74..7c89f0f897 100644
--- a/src/vm/arm64/asmhelpers.asm
+++ b/src/vm/arm64/asmhelpers.asm
@@ -33,6 +33,9 @@
IMPORT OnHijackObjectWorker
IMPORT OnHijackInteriorPointerWorker
IMPORT OnHijackScalarWorker
+#ifdef FEATURE_READYTORUN
+ IMPORT DynamicHelperWorker
+#endif
IMPORT g_ephemeral_low
IMPORT g_ephemeral_high
@@ -1172,5 +1175,51 @@ Fail
NESTED_END
+
+#ifdef FEATURE_READYTORUN
+
+ NESTED_ENTRY DelayLoad_MethodCall
+ PROLOG_WITH_TRANSITION_BLOCK
+
+ add x0, sp, #__PWTB_TransitionBlock ; pTransitionBlock
+ mov x1, x11 ; Indirection cell
+ mov x2, x8 ; sectionIndex
+ mov x3, x9 ; Module*
+ bl ExternalMethodFixupWorker
+ mov x12, x0
+
+ EPILOG_WITH_TRANSITION_BLOCK_TAILCALL
+ ; Share patch label
+ b ExternalMethodFixupPatchLabel
+ NESTED_END
+
+ MACRO
+ DynamicHelper $frameFlags, $suffix
+
+ NESTED_ENTRY DelayLoad_Helper$suffix
+
+ PROLOG_WITH_TRANSITION_BLOCK
+
+ add x0, sp, #__PWTB_TransitionBlock ; pTransitionBlock
+ mov x1, x11 ; Indirection cell
+ mov x2, x8 ; sectionIndex
+ mov x3, x9 ; Module*
+ mov x4, $frameFlags
+ bl DynamicHelperWorker
+ cbnz x0, %FT0
+ ldr x0, [sp, #__PWTB_ArgumentRegisters]
+ EPILOG_WITH_TRANSITION_BLOCK_RETURN
+0
+ mov x12, x0
+ EPILOG_WITH_TRANSITION_BLOCK_TAILCALL
+ EPILOG_BRANCH_REG x12
+ NESTED_END
+ MEND
+
+ DynamicHelper DynamicHelperFrameFlags_Default
+ DynamicHelper DynamicHelperFrameFlags_ObjectArg, _Obj
+ DynamicHelper DynamicHelperFrameFlags_ObjectArg | DynamicHelperFrameFlags_ObjectArg2, _ObjObj
+#endif // FEATURE_READYTORUN
+
; Must be at very end of file
- END
+ END \ No newline at end of file