Implement FixupPrecode for Arm64#7015
Conversation
|
@kyulee1 how do i debug the issue with the following failure: |
|
Machines are offline and unreachable, which frequently occurred these days. |
3306f1e to
ba07034
Compare
|
@dotnet-bot test Windows_NT arm64 Release pri1r2r |
|
@dotnet-bot test Windows_NT arm64 Checked |
|
@dotnet/arm64-contrib @rahku PTAL |
| ; ARM64TODO: Implement PrecodeFixupThunk when PreCode is Enabled | ||
| ; The call in fixup precode initally points to this function. | ||
| ; The pupose of this function is to load the MethodDesc and forward the call the prestub. | ||
| NESTED_ENTRY PrecodeFixupThunk |
|
In precode.cpp in function Precode::SetTargetInterlocked ramrag: done |
| ; x12 = MethodDesc* | ||
| ; x13, x14 Trashed | ||
| ; Inline computation done by FixupPrecode::GetMethodDesc() | ||
| ldrb w13, [x12, #Offset_PrecodeChunkIndex] ; m_PrecodeChunkIndex |
There was a problem hiding this comment.
Is this the disassembly of FixupPrecode::GetMethodDesc()
There was a problem hiding this comment.
NO the assembly for FixupPrecode::GetMethodDesc() generated by C++ compiler is actually
39403c08 ldrb w8,[x0,#0xF]
d280030a mov x10,#0x18
11000508 add w8,w8,#1
93407d09 sxtw x9,w8
9b0a7d29 mul x9,x9,x10
f860692a ldr x10,[x9,x0]
b500006a cbnz x10,coreclr!FixupPrecode::GetMethodDesc+0x24 (00000001`80145004)
d2800000 mov x0,#0
14000004 b coreclr!FixupPrecode::GetMethodDesc+0x30 (00000001`80145010)
39403808 ldrb w8,[x0,#0xE]
531d7108 lsl w8,w8,#3
8b28c140 add x0,x10,w8 sxtw
d65f03c0 ret lr
I replaced the mul with two add instructions. The assembly code here is similar to what is found in arm
|
LGTM |
ba07034 to
1c5d30e
Compare
|
@dotnet-bot test Windows_NT arm64 Release pri1r2r |
Implement FixupPrecode for Arm64 Commit migrated from dotnet/coreclr@1a1735f
No description provided.