See notes in dotnet/coreclr#25251.
For IAT_PVALUE entry points, we are always loading up the full 64 bit address and using register indirect. In many cases we may be able to use a 32 bit RIP-relative indirection instead.
Should have some small code size benefit, perhaps especially for Tier0 code.
48B8D04BB17925000000 mov rax, 0x2579B14BD0
FF10 call gword ptr [rax]JitTest.TestClass:Method2():ref:this
...
48B8D04BB17925000000 mov rax, 0x2579B14BD0
FF20 jmp qword ptr [rax]JitTest.TestClass:Method2():ref:this
See notes in dotnet/coreclr#25251.
For
IAT_PVALUEentry points, we are always loading up the full 64 bit address and using register indirect. In many cases we may be able to use a 32 bit RIP-relative indirection instead.Should have some small code size benefit, perhaps especially for Tier0 code.