diff options
author | Steve MacLean <sdmaclea.qdt@qualcommdatacenter.com> | 2018-03-15 05:39:41 -0400 |
---|---|---|
committer | Jan Vorlicek <janvorli@microsoft.com> | 2018-03-15 10:39:41 +0100 |
commit | 76ba8d518eb5830988878fca01e4a6096c1b0b2a (patch) | |
tree | 16d58b141f0fd59122ca0ec454b29049a985bc3b | |
parent | a045eea65cb6e7c553940671b7aabf5c3355eb4e (diff) | |
download | coreclr-76ba8d518eb5830988878fca01e4a6096c1b0b2a.tar.gz coreclr-76ba8d518eb5830988878fca01e4a6096c1b0b2a.tar.bz2 coreclr-76ba8d518eb5830988878fca01e4a6096c1b0b2a.zip |
[Arm64] Fix EmitShuffleThunk reg allocation (#16947)
-rw-r--r-- | src/vm/arm64/stubs.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/vm/arm64/stubs.cpp b/src/vm/arm64/stubs.cpp index 3d4213bea1..c1e9a56cf6 100644 --- a/src/vm/arm64/stubs.cpp +++ b/src/vm/arm64/stubs.cpp @@ -1775,9 +1775,9 @@ void StubLinkerCPU::Init() VOID StubLinkerCPU::EmitShuffleThunk(ShuffleEntry *pShuffleEntryArray) { // On entry x0 holds the delegate instance. Look up the real target address stored in the MethodPtrAux - // field and save it in x9. Tailcall to the target method after re-arranging the arguments - // ldr x9, [x0, #offsetof(DelegateObject, _methodPtrAux)] - EmitLoadStoreRegImm(eLOAD, IntReg(9), IntReg(0), DelegateObject::GetOffsetOfMethodPtrAux()); + // field and save it in x16(ip). Tailcall to the target method after re-arranging the arguments + // ldr x16, [x0, #offsetof(DelegateObject, _methodPtrAux)] + EmitLoadStoreRegImm(eLOAD, IntReg(16), IntReg(0), DelegateObject::GetOffsetOfMethodPtrAux()); //add x11, x0, DelegateObject::GetOffsetOfMethodPtrAux() - load the indirection cell into x11 used by ResolveWorkerAsmStub EmitAddImm(IntReg(11), IntReg(0), DelegateObject::GetOffsetOfMethodPtrAux()); @@ -1805,14 +1805,14 @@ VOID StubLinkerCPU::EmitShuffleThunk(ShuffleEntry *pShuffleEntryArray) // dest must be on the stack _ASSERTE(!(pEntry->dstofs & ShuffleEntry::REGMASK)); - EmitLoadStoreRegImm(eLOAD, IntReg(8), RegSp, pEntry->srcofs * sizeof(void*)); - EmitLoadStoreRegImm(eSTORE, IntReg(8), RegSp, pEntry->dstofs * sizeof(void*)); + EmitLoadStoreRegImm(eLOAD, IntReg(9), RegSp, pEntry->srcofs * sizeof(void*)); + EmitLoadStoreRegImm(eSTORE, IntReg(9), RegSp, pEntry->dstofs * sizeof(void*)); } } // Tailcall to target - // br x9 - EmitJumpRegister(IntReg(9)); + // br x16 + EmitJumpRegister(IntReg(16)); } void StubLinkerCPU::EmitCallLabel(CodeLabel *target, BOOL fTailCall, BOOL fIndirect) |