summaryrefslogtreecommitdiff
path: root/src/vm/arm64/asmhelpers.asm
diff options
context:
space:
mode:
authorRama krishnan Raghupathy <ramarag@microsoft.com>2016-08-11 01:26:51 -0700
committerGitHub <noreply@github.com>2016-08-11 01:26:51 -0700
commit08f8d02aa8e0aae07a748443841cbd5455e82240 (patch)
tree62c9b0cef0e4493430586160a8003c6806b55df2 /src/vm/arm64/asmhelpers.asm
parentd95be0b7da94613e32617b6539b01042598c0054 (diff)
parentf9e5306c1b5521b311d53fe362cf88bb05d00334 (diff)
downloadcoreclr-08f8d02aa8e0aae07a748443841cbd5455e82240.tar.gz
coreclr-08f8d02aa8e0aae07a748443841cbd5455e82240.tar.bz2
coreclr-08f8d02aa8e0aae07a748443841cbd5455e82240.zip
Merge pull request #6691 from ramarag/ResolveWorkerChainLookupAsmStubFix
Preserving ResolveCacheElem in X9
Diffstat (limited to 'src/vm/arm64/asmhelpers.asm')
-rw-r--r--src/vm/arm64/asmhelpers.asm15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/vm/arm64/asmhelpers.asm b/src/vm/arm64/asmhelpers.asm
index eacc08f9d9..1b67915abc 100644
--- a/src/vm/arm64/asmhelpers.asm
+++ b/src/vm/arm64/asmhelpers.asm
@@ -1063,6 +1063,7 @@ FaultingExceptionFrame_FrameOffset SETA SIZEOF__GSCookie
; x12 contains our contract the DispatchToken
; Must be preserved:
; x0 contains the instance object ref that we are making an interface call on
+; x9 Must point to a ResolveCacheElem [For Sanity]
; [x1-x7] contains any additional register arguments for the interface method
;
; Loaded from x0
@@ -1088,7 +1089,7 @@ PROMOTE_CHAIN_FLAG SETA 2
ldr x13, [x0] ; retrieve the MethodTable from the object ref in x0
MainLoop
- ldr x9, [x9, #24] ; x9 <= the next entry in the chain
+ ldr x9, [x9, #ResolveCacheElem__pNext] ; x9 <= the next entry in the chain
cmp x9, #0
beq Fail
@@ -1101,18 +1102,18 @@ MainLoop
Success
ldr x13, =g_dispatch_cache_chain_success_counter
- ldr x9, [x13]
- subs x9, x9, #1
- str x9, [x13]
+ ldr x16, [x13]
+ subs x16, x16, #1
+ str x16, [x13]
blt Promote
- ldr x16, [x9, #16] ; get the ImplTarget
+ ldr x16, [x9, #ResolveCacheElem__target] ; get the ImplTarget
br x16 ; branch to interface implemenation target
Promote
; Move this entry to head postion of the chain
- mov x9, #256
- str x9, [x13] ; be quick to reset the counter so we don't get a bunch of contending threads
+ mov x16, #256
+ str x16, [x13] ; be quick to reset the counter so we don't get a bunch of contending threads
orr x11, x11, #PROMOTE_CHAIN_FLAG ; set PROMOTE_CHAIN_FLAG
Fail