Remove unused emitter call types and improve INS_tail_i_jmp handling#59495
Remove unused emitter call types and improve INS_tail_i_jmp handling#59495jakobbotsch merged 3 commits intodotnet:mainfrom
Conversation
The size estimation for INS_tail_i_jmp instructions was working by accident: we were always regarding these as requiring rex.w prefixes, even when they did not. Fix the logic so that rex.w is not considered required for 8-byte tail jumps, but add it manually for the forms where it is really necessary. There were also a lot of unused emitter call types that I have removed.
|
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsThe size estimation for INS_tail_i_jmp instructions was working by There were also a lot of unused emitter call types that I have removed. cc @dotnet/jit-contrib
|
| // EC_FUNC_TOKEN_INDIR, // Indirect call to a helper/static/nonvirtual/global method | ||
| EC_FUNC_ADDR, // Direct call to an absolute address | ||
|
|
||
| // EC_FUNC_VIRTUAL, // Call to a virtual method (using the vtable) |
There was a problem hiding this comment.
At this point, I think there's not much point in keeping all the non-ARM cases here. They were initially left in during the port to make it easier to compare to x86. If you're going to delete this, I would delete the other commented-out cases (EC_FUNC_TOKEN_INDIR, EC_INDIR_SR, etc.), as well as the huge comment just above.
| // EC_FUNC_VIRTUAL, // Call to a virtual method (using the vtable) | ||
| EC_INDIR_R, // Indirect call via register | ||
| // EC_INDIR_SR, // Indirect call via stack-reference (local var) | ||
| // EC_INDIR_C, // Indirect call via static class var |
There was a problem hiding this comment.
same comment here about deleting non-arm cases
No diffs on {x64, arm64}x{windows, linux}. |
|
Failures are #59541 |
The size estimation for INS_tail_i_jmp instructions was working by
accident: we were always regarding these as requiring rex.w
prefixes, even when they did not. Fix the logic so that rex.w is not
considered required for 8-byte tail jumps, but add it manually for the
forms where it is really necessary.
There were also a lot of unused emitter call types that I have removed.
cc @dotnet/jit-contrib