runtime
runtime copied to clipboard
JIT: Expand delegate calls in morph
Expand delegate calls in morph to allow CSE'ing and hoisting of delegate targets/instances.
Fix #75832 Close #75255
Also fix printing of GT_CALL nodes. Late args were not being printed in correct evaluation order.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch See info in area-owners.md if you want to be subscribed.
Issue Details
Expand delegate calls in morph to allow CSE'ing and hoisting of delegate targets/instances.
Fix #75832 Close #75255
Author: | jakobbotsch |
---|---|
Assignees: | - |
Labels: |
|
Milestone: | - |
Looks like we may need to do something about #75751 before this to avoid regressions, I'm seeing many diffs like the following, where we now clobber an argument register containing a local we need:
G_M13290_IG02: ; gcrefRegs=00000002 {rcx}, byrefRegs=00000000 {}, byref
; gcrRegs +[rcx]
- movzx rdx, byte ptr [rcx+10H]
+ mov gword ptr [rsp+08H], rcx
+ ; GC ptr vars +{V00}
mov rax, gword ptr [rcx+08H]
; gcrRegs +[rax]
mov rcx, gword ptr [rax+08H]
- ;; size=12 bbWeight=1 PerfScore 6.00
+ mov rdx, gword ptr [rsp+08H]
+ ; gcrRegs +[rdx]
+ movzx rdx, byte ptr [rdx+10H]
+ ; gcrRegs -[rdx]
+ ;; size=22 bbWeight=1 PerfScore 8.00
G_M13290_IG03: ; , epilog, nogc, extend
- tail.jmp [rax+18H]hackishMethodName
+ tail.jmp [rax+18H]
Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it.