diff options
author | Rama krishnan Raghupathy <ramarag@microsoft.com> | 2016-08-11 01:26:51 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-11 01:26:51 -0700 |
commit | 08f8d02aa8e0aae07a748443841cbd5455e82240 (patch) | |
tree | 62c9b0cef0e4493430586160a8003c6806b55df2 /src/vm/arm64/asmhelpers.asm | |
parent | d95be0b7da94613e32617b6539b01042598c0054 (diff) | |
parent | f9e5306c1b5521b311d53fe362cf88bb05d00334 (diff) | |
download | coreclr-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.asm | 15 |
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 |