forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JitDiff X64] [xtqqczze] Avoid Unsafe.As
for Memory<T>
and ReadOnlyMemory<T>
conversion
#956
Comments
Top method regressions106 (19.96 % of base) - System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this ; Assembly listing for method System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 11 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 12 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 6 ) ref -> rbx this class-hnd single-def <System.IO.MemoryStream>
-; V01 arg1 [V01,T00] ( 7, 7 ) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[ubyte]>
+; V00 this [V00,T00] ( 6, 6 ) ref -> rbx this class-hnd single-def <System.IO.MemoryStream>
+; V01 arg1 [V01,T02] ( 5, 5 ) struct (16) [rbp-0x38] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.Memory`1[ubyte]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03 ] ( 4, 4 ) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ArraySegment`1[ubyte]>
-; V04 loc1 [V04,T07] ( 10, 5 ) struct (16) [rbp-0x40] do-not-enreg[SZR] multireg-ret must-init EH-live <System.Threading.Tasks.ValueTask`1[int]>
+; V03 loc0 [V03 ] ( 4, 4 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ArraySegment`1[ubyte]>
+; V04 loc1 [V04,T07] ( 10, 5 ) struct (16) [rbp-0x58] do-not-enreg[SZR] multireg-ret must-init EH-live <System.Threading.Tasks.ValueTask`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
-; V07 tmp2 [V07,T08] ( 2, 4 ) ref -> rsi class-hnd single-def "impAppendStmt" <ubyte[]>
-; V08 tmp3 [V08,T10] ( 2, 4 ) int -> rdx "impAppendStmt"
-; V09 tmp4 [V09,T11] ( 3, 3 ) int -> rax
+; V07 tmp2 [V07,T12] ( 2, 4 ) ref -> rsi class-hnd single-def "impAppendStmt" <ubyte[]>
+; V08 tmp3 [V08,T14] ( 2, 4 ) int -> rdx "impAppendStmt"
+; V09 tmp4 [V09,T15] ( 3, 3 ) int -> rax
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V12 tmp7 [V12,T28] ( 2, 0 ) ref -> rdi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp7 [V12,T33] ( 2, 0 ) ref -> rdi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
-; V14 tmp9 [V14,T29] ( 2, 0 ) ref -> rdi class-hnd single-def "impSpillSpecialSideEff" <System.OperationCanceledException>
+; V14 tmp9 [V14,T34] ( 2, 0 ) ref -> rdi class-hnd single-def "impSpillSpecialSideEff" <System.OperationCanceledException>
;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
-;* V17 tmp12 [V17,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V17 tmp12 [V17,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
;* V19 tmp14 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V20 tmp15 [V20 ] ( 5, 10 ) struct (16) [rbp-0x50] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
+; V20 tmp15 [V20 ] ( 5, 10 ) struct (16) [rbp-0x68] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
; V21 tmp16 [V21,T06] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
-;* V22 tmp17 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
-;* V23 tmp18 [V23 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-; V24 tmp19 [V24,T03] ( 6, 6 ) byref -> r15 "Inline stloc first use temp"
-; V25 tmp20 [V25,T04] ( 6, 6 ) int -> rdx "Inline stloc first use temp"
-; V26 tmp21 [V26,T02] ( 7, 7 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V28 tmp23 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
-;* V29 tmp24 [V29 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
-;* V30 tmp25 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V31 tmp26 [V31,T12] ( 3, 3 ) long -> rsi "Inline stloc first use temp"
-; V32 tmp27 [V32,T13] ( 3, 3 ) int -> rdi "Inline stloc first use temp"
-;* V33 tmp28 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]>
-;* V34 tmp29 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
-; V35 tmp30 [V35,T09] ( 2, 4 ) byref -> rax single-def "Inlining Arg"
-;* V36 tmp31 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V37 tmp32 [V37,T27] ( 3, 0 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
-; V38 tmp33 [V38,T05] ( 4, 4 ) ref -> rcx single-def "field V02._source (fldOffset=0x0)" P-INDEP
-; V39 tmp34 [V39 ] ( 2, 2 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V03._array (fldOffset=0x0)" P-DEP
-; V40 tmp35 [V40 ] ( 2, 2 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V03._offset (fldOffset=0x8)" P-DEP
-; V41 tmp36 [V41 ] ( 2, 2 ) int -> [rbp-0x24] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0xc)" P-DEP
-;* V42 tmp37 [V42 ] ( 0, 0 ) ref -> zero-ref "field V06._object (fldOffset=0x0)" P-INDEP
-;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
-;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0xc)" P-INDEP
-;* V45 tmp40 [V45 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._obj (fldOffset=0x0)" P-INDEP
-;* V46 tmp41 [V46 ] ( 0, 0 ) int -> zero-ref "field V10._result (fldOffset=0x8)" P-INDEP
-;* V47 tmp42 [V47 ] ( 0, 0 ) short -> zero-ref "field V10._token (fldOffset=0xc)" P-INDEP
-;* V48 tmp43 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V10._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V49 tmp44 [V49 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V50 tmp45 [V50 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-;* V51 tmp46 [V51 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._obj (fldOffset=0x0)" P-INDEP
-;* V52 tmp47 [V52 ] ( 0, 0 ) int -> zero-ref "field V15._result (fldOffset=0x8)" P-INDEP
-;* V53 tmp48 [V53 ] ( 0, 0 ) short -> zero-ref "field V15._token (fldOffset=0xc)" P-INDEP
-;* V54 tmp49 [V54 ] ( 0, 0 ) ubyte -> zero-ref "field V15._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V55 tmp50 [V55 ] ( 0, 0 ) ref -> zero-ref "field V19._source (fldOffset=0x0)" P-INDEP
-; V56 tmp51 [V56,T14] ( 2, 3 ) ref -> [rbp-0x50] do-not-enreg[] single-def "field V20._obj (fldOffset=0x0)" P-DEP
-; V57 tmp52 [V57,T15] ( 2, 3 ) int -> [rbp-0x48] do-not-enreg[] "field V20._result (fldOffset=0x8)" P-DEP
-; V58 tmp53 [V58,T16] ( 2, 3 ) short -> [rbp-0x44] do-not-enreg[] "field V20._token (fldOffset=0xc)" P-DEP
-; V59 tmp54 [V59,T17] ( 2, 3 ) ubyte -> [rbp-0x42] do-not-enreg[] "field V20._continueOnCapturedContext (fldOffset=0xe)" P-DEP
-;* V60 tmp55 [V60 ] ( 0, 0 ) ref -> zero-ref "field V22._object (fldOffset=0x0)" P-INDEP
-;* V61 tmp56 [V61 ] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x8)" P-INDEP
-;* V62 tmp57 [V62 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0xc)" P-INDEP
-;* V63 tmp58 [V63 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
-;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
-; V65 tmp60 [V65,T22] ( 2, 2 ) byref -> rsi single-def "field V27._reference (fldOffset=0x0)" P-INDEP
-; V66 tmp61 [V66,T24] ( 2, 2 ) int -> rdx "field V27._length (fldOffset=0x8)" P-INDEP
-;* V67 tmp62 [V67 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-DEP
-;* V68 tmp63 [V68 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-DEP
-; V69 tmp64 [V69,T23] ( 2, 2 ) byref -> r15 "field V30._reference (fldOffset=0x0)" P-INDEP
-; V70 tmp65 [V70,T25] ( 2, 2 ) int -> rdx "field V30._length (fldOffset=0x8)" P-INDEP
-;* V71 tmp66 [V71 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
-;* V72 tmp67 [V72 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
-; V73 tmp68 [V73,T18] ( 4, 2 ) ref -> [rbp-0x68] do-not-enreg[M] EH-live "V04.[000..008)"
-; V74 tmp69 [V74,T19] ( 4, 2 ) int -> [rbp-0x54] do-not-enreg[Z] EH-live "V04.[008..012)"
-; V75 tmp70 [V75,T20] ( 4, 2 ) short -> [rbp-0x58] do-not-enreg[Z] EH-live "V04.[012..014)"
-; V76 tmp71 [V76,T21] ( 4, 2 ) ubyte -> [rbp-0x5C] do-not-enreg[Z] EH-live "V04.[014..015)"
-; V77 rat0 [V77 ] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
+;* V22 tmp17 [V22 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Memory`1[ubyte]>
+; V23 tmp18 [V23 ] ( 5, 10 ) struct (16) [rbp-0x78] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
+;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
+;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
+; V28 tmp23 [V28,T03] ( 6, 6 ) byref -> r12 "Inline stloc first use temp"
+; V29 tmp24 [V29,T04] ( 6, 6 ) int -> rdx "Inline stloc first use temp"
+;* V30 tmp25 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V31 tmp26 [V31 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V32 tmp27 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
+;* V33 tmp28 [V33 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
+;* V34 tmp29 [V34 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
+; V35 tmp30 [V35,T16] ( 3, 3 ) long -> rsi "Inline stloc first use temp"
+;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V37 tmp32 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]>
+;* V38 tmp33 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
+; V39 tmp34 [V39,T13] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+;* V40 tmp35 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+; V41 tmp36 [V41,T32] ( 3, 0 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
+; V42 tmp37 [V42,T05] ( 4, 4 ) ref -> rcx single-def "field V02._source (fldOffset=0x0)" P-INDEP
+; V43 tmp38 [V43 ] ( 2, 2 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V03._array (fldOffset=0x0)" P-DEP
+; V44 tmp39 [V44 ] ( 2, 2 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V03._offset (fldOffset=0x8)" P-DEP
+; V45 tmp40 [V45 ] ( 2, 2 ) int -> [rbp-0x3C] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0xc)" P-DEP
+;* V46 tmp41 [V46 ] ( 0, 0 ) ref -> zero-ref "field V06._object (fldOffset=0x0)" P-INDEP
+;* V47 tmp42 [V47 ] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
+;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0xc)" P-INDEP
+;* V49 tmp44 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._obj (fldOffset=0x0)" P-INDEP
+;* V50 tmp45 [V50 ] ( 0, 0 ) int -> zero-ref "field V10._result (fldOffset=0x8)" P-INDEP
+;* V51 tmp46 [V51 ] ( 0, 0 ) short -> zero-ref "field V10._token (fldOffset=0xc)" P-INDEP
+;* V52 tmp47 [V52 ] ( 0, 0 ) ubyte -> zero-ref "field V10._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
+;* V53 tmp48 [V53 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
+;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
+;* V55 tmp50 [V55 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._obj (fldOffset=0x0)" P-INDEP
+;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref "field V15._result (fldOffset=0x8)" P-INDEP
+;* V57 tmp52 [V57 ] ( 0, 0 ) short -> zero-ref "field V15._token (fldOffset=0xc)" P-INDEP
+;* V58 tmp53 [V58 ] ( 0, 0 ) ubyte -> zero-ref "field V15._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
+;* V59 tmp54 [V59 ] ( 0, 0 ) ref -> zero-ref "field V19._source (fldOffset=0x0)" P-INDEP
+; V60 tmp55 [V60,T19] ( 2, 3 ) ref -> [rbp-0x68] do-not-enreg[] single-def "field V20._obj (fldOffset=0x0)" P-DEP
+; V61 tmp56 [V61,T20] ( 2, 3 ) int -> [rbp-0x60] do-not-enreg[] "field V20._result (fldOffset=0x8)" P-DEP
+; V62 tmp57 [V62,T21] ( 2, 3 ) short -> [rbp-0x5C] do-not-enreg[] "field V20._token (fldOffset=0xc)" P-DEP
+; V63 tmp58 [V63,T22] ( 2, 3 ) ubyte -> [rbp-0x5A] do-not-enreg[] "field V20._continueOnCapturedContext (fldOffset=0xe)" P-DEP
+;* V64 tmp59 [V64 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._object (fldOffset=0x0)" P-INDEP
+;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x8)" P-INDEP
+;* V66 tmp61 [V66 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0xc)" P-INDEP
+; V67 tmp62 [V67,T08] ( 3, 5 ) ref -> [rbp-0x78] do-not-enreg[] "field V23._object (fldOffset=0x0)" P-DEP
+; V68 tmp63 [V68,T09] ( 3, 5 ) int -> [rbp-0x70] do-not-enreg[] "field V23._index (fldOffset=0x8)" P-DEP
+; V69 tmp64 [V69,T10] ( 3, 5 ) int -> [rbp-0x6C] do-not-enreg[] "field V23._length (fldOffset=0xc)" P-DEP
+;* V70 tmp65 [V70 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
+;* V71 tmp66 [V71 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
+; V72 tmp67 [V72,T27] ( 2, 2 ) byref -> rsi single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+; V73 tmp68 [V73,T29] ( 2, 2 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP
+;* V74 tmp69 [V74 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-DEP
+;* V75 tmp70 [V75 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-DEP
+; V76 tmp71 [V76,T28] ( 2, 2 ) byref -> r12 "field V34._reference (fldOffset=0x0)" P-INDEP
+; V77 tmp72 [V77,T30] ( 2, 2 ) int -> rdx "field V34._length (fldOffset=0x8)" P-INDEP
+;* V78 tmp73 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V79 tmp74 [V79 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
+; V80 tmp75 [V80,T01] ( 7, 7 ) ref -> r15 single-def "V01.[000..008)"
+; V81 tmp76 [V81,T17] ( 3, 3 ) int -> r14 "V01.[008..012)"
+; V82 tmp77 [V82,T11] ( 4, 4 ) int -> r13 "V01.[012..016)"
+; V83 tmp78 [V83,T23] ( 4, 2 ) ref -> [rbp-0x90] do-not-enreg[M] EH-live "V04.[000..008)"
+; V84 tmp79 [V84,T24] ( 4, 2 ) int -> [rbp-0x7C] do-not-enreg[Z] EH-live "V04.[008..012)"
+; V85 tmp80 [V85,T25] ( 4, 2 ) short -> [rbp-0x80] do-not-enreg[Z] EH-live "V04.[012..014)"
+; V86 tmp81 [V86,T26] ( 4, 2 ) ubyte -> [rbp-0x84] do-not-enreg[Z] EH-live "V04.[014..015)"
+; V87 cse0 [V87,T18] ( 3, 3 ) long -> rax "CSE #01: moderate"
+; V88 rat0 [V88 ] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 96
+; Lcl frame size = 120
G_M40605_IG01:
push rbp
push r15
+ push r14
+ push r13
+ push r12
push rbx
- sub rsp, 96
- lea rbp, [rsp+0x70]
+ sub rsp, 120
+ lea rbp, [rsp+0xA0]
+ xor eax, eax
+ mov qword ptr [rbp-0x78], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x50], ymm8
- vmovdqa xmmword ptr [rbp-0x30], xmm8
- mov qword ptr [rbp-0x70], rsp
- mov gword ptr [rbp-0x20], rsi
- mov qword ptr [rbp-0x18], rdx
+ vmovdqu ymmword ptr [rbp-0x70], ymm8
+ vmovdqa xmmword ptr [rbp-0x50], xmm8
+ mov qword ptr [rbp-0x40], rax
+ mov qword ptr [rbp-0xA0], rsp
+ mov gword ptr [rbp-0x38], rsi
+ mov qword ptr [rbp-0x30], rdx
mov rbx, rdi
- ;; size=43 bbWeight=1 PerfScore 11.33
+ ;; size=65 bbWeight=1 PerfScore 16.58
G_M40605_IG02:
+ mov r15, gword ptr [rbp-0x38]
+ mov r14d, dword ptr [rbp-0x30]
+ mov r13d, dword ptr [rbp-0x2C]
test rcx, rcx
je SHORT G_M40605_IG05
cmp dword ptr [rcx+0x20], 0
je SHORT G_M40605_IG05
mov rdi, rcx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:FromCanceled[int](System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]
call [rax]System.Threading.Tasks.Task:FromCanceled[int](System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]
test rax, rax
je SHORT G_M40605_IG04
- mov gword ptr [rbp-0x50], rax
+ mov gword ptr [rbp-0x68], rax
xor eax, eax
- mov dword ptr [rbp-0x48], eax
- mov byte ptr [rbp-0x42], 1
- mov word ptr [rbp-0x44], 0
- mov rax, gword ptr [rbp-0x50]
- mov rdx, qword ptr [rbp-0x48]
- ;; size=58 bbWeight=1 PerfScore 16.25
+ mov dword ptr [rbp-0x60], eax
+ mov byte ptr [rbp-0x5A], 1
+ mov word ptr [rbp-0x5C], 0
+ mov rax, gword ptr [rbp-0x68]
+ mov rdx, qword ptr [rbp-0x60]
+ ;; size=70 bbWeight=1 PerfScore 19.25
G_M40605_IG03:
- add rsp, 96
+ add rsp, 120
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=15 bbWeight=1 PerfScore 4.25
G_M40605_IG04:
mov edi, 9
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=1 PerfScore 3.75
G_M40605_IG05:
- mov rdi, gword ptr [rbp-0x20]
- mov rsi, qword ptr [rbp-0x18]
- lea rdx, [rbp-0x30]
+ mov gword ptr [rbp-0x78], r15
+ mov dword ptr [rbp-0x70], r14d
+ mov dword ptr [rbp-0x6C], r13d
+ mov rdi, gword ptr [rbp-0x78]
+ mov rsi, qword ptr [rbp-0x70]
+ lea rdx, [rbp-0x48]
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.MemoryMarshal:TryGetArray[ubyte](System.ReadOnlyMemory`1[ubyte],byref):ubyte
call [rax]System.Runtime.InteropServices.MemoryMarshal:TryGetArray[ubyte](System.ReadOnlyMemory`1[ubyte],byref):ubyte
test eax, eax
je SHORT G_M40605_IG06
- mov rsi, gword ptr [rbp-0x30]
- mov edx, dword ptr [rbp-0x28]
+ mov rsi, gword ptr [rbp-0x48]
+ mov edx, dword ptr [rbp-0x40]
mov rdi, rbx
- mov ecx, dword ptr [rbp-0x24]
+ mov ecx, dword ptr [rbp-0x3C]
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x60]
call [rax+0x18]System.IO.Stream:Read(ubyte[],int,int):int:this
jmp SHORT G_M40605_IG10
- ;; size=53 bbWeight=1 PerfScore 19.25
+ ;; size=65 bbWeight=1 PerfScore 22.25
G_M40605_IG06:
- xor r15, r15
+ xor r12, r12
xor edx, edx
- mov rdi, gword ptr [rbp-0x20]
- test rdi, rdi
+ test r15, r15
je SHORT G_M40605_IG09
- mov rax, qword ptr [rdi]
- test dword ptr [rax], 0xD1FFAB1E
+ mov rax, qword ptr [r15]
+ mov rdi, rax
+ test dword ptr [rdi], 0xD1FFAB1E
jne SHORT G_M40605_IG07
- mov rax, qword ptr [rdi]
+ mov rdi, r15
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
- mov r15, rax
+ mov r12, rax
jmp SHORT G_M40605_IG08
- ;; size=40 bbWeight=1 PerfScore 18.00
+ ;; size=39 bbWeight=1 PerfScore 15.50
G_M40605_IG07:
- lea r15, bword ptr [rdi+0x10]
- mov edx, dword ptr [rdi+0x08]
- ;; size=7 bbWeight=1 PerfScore 2.50
+ lea r12, bword ptr [r15+0x10]
+ mov edx, dword ptr [r15+0x08]
+ ;; size=8 bbWeight=1 PerfScore 2.50
G_M40605_IG08:
- mov esi, dword ptr [rbp-0x18]
- and esi, 0xD1FFAB1E
- mov edi, dword ptr [rbp-0x14]
- mov eax, edi
- add rax, rsi
+ and r14d, 0xD1FFAB1E
+ mov esi, r14d
+ mov edi, r13d
+ add rdi, rsi
mov edx, edx
- cmp rax, rdx
+ cmp rdi, rdx
ja SHORT G_M40605_IG12
- add r15, rsi
- mov edx, edi
- ;; size=29 bbWeight=1 PerfScore 4.75
+ add r12, rsi
+ mov edx, r13d
+ ;; size=29 bbWeight=1 PerfScore 3.00
G_M40605_IG09:
- mov rsi, r15
+ mov rsi, r12
mov rdi, rbx
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x60]
call [rax+0x20]System.IO.Stream:Read(System.Span`1[ubyte]):int:this
;; size=16 bbWeight=1 PerfScore 7.50
G_M40605_IG10:
xor rcx, rcx
- mov gword ptr [rbp-0x68], rcx
- mov dword ptr [rbp-0x54], eax
- ;; size=9 bbWeight=1 PerfScore 2.25
+ mov gword ptr [rbp-0x90], rcx
+ mov dword ptr [rbp-0x7C], eax
+ ;; size=12 bbWeight=1 PerfScore 2.25
G_M40605_IG11:
- mov dword ptr [rbp-0x58], ecx
- mov dword ptr [rbp-0x5C], 1
+ mov dword ptr [rbp-0x80], ecx
+ mov dword ptr [rbp-0x84], 1
jmp SHORT G_M40605_IG13
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M40605_IG12:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=1 PerfScore 3.50
G_M40605_IG13:
- mov rax, gword ptr [rbp-0x68]
- mov gword ptr [rbp-0x40], rax
- mov eax, dword ptr [rbp-0x54]
- mov dword ptr [rbp-0x38], eax
- mov eax, dword ptr [rbp-0x58]
- mov word ptr [rbp-0x34], ax
- mov eax, dword ptr [rbp-0x5C]
- mov byte ptr [rbp-0x32], al
- mov rax, gword ptr [rbp-0x40]
- mov rdx, qword ptr [rbp-0x38]
- ;; size=35 bbWeight=1 PerfScore 10.00
+ mov rax, gword ptr [rbp-0x90]
+ mov gword ptr [rbp-0x58], rax
+ mov eax, dword ptr [rbp-0x7C]
+ mov dword ptr [rbp-0x50], eax
+ mov eax, dword ptr [rbp-0x80]
+ mov word ptr [rbp-0x4C], ax
+ mov eax, dword ptr [rbp-0x84]
+ mov byte ptr [rbp-0x4A], al
+ mov rax, gword ptr [rbp-0x58]
+ mov rdx, qword ptr [rbp-0x50]
+ ;; size=41 bbWeight=1 PerfScore 10.00
G_M40605_IG14:
- add rsp, 96
+ add rsp, 120
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=15 bbWeight=1 PerfScore 4.25
G_M40605_IG15:
push rbp
push r15
+ push r14
+ push r13
+ push r12
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x70]
- ;; size=19 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0xA0]
+ ;; size=25 bbWeight=0 PerfScore 0.00
G_M40605_IG16:
mov rdi, rsi
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:FromCanceled[int](System.OperationCanceledException):System.Threading.Tasks.Task`1[int]
call [rax]System.Threading.Tasks.Task:FromCanceled[int](System.OperationCanceledException):System.Threading.Tasks.Task`1[int]
test rax, rax
je SHORT G_M40605_IG19
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x90], rax
xor eax, eax
- mov dword ptr [rbp-0x54], eax
- ;; size=29 bbWeight=0 PerfScore 0.00
+ mov dword ptr [rbp-0x7C], eax
+ ;; size=32 bbWeight=0 PerfScore 0.00
G_M40605_IG17:
- mov dword ptr [rbp-0x58], eax
- mov dword ptr [rbp-0x5C], 1
+ mov dword ptr [rbp-0x80], eax
+ mov dword ptr [rbp-0x84], 1
lea rax, G_M40605_IG13
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M40605_IG18:
- add rsp, 16
+ add rsp, 8
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
G_M40605_IG19:
mov edi, 9
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M40605_IG20:
push rbp
push r15
+ push r14
+ push r13
+ push r12
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x70]
- ;; size=19 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0xA0]
+ ;; size=25 bbWeight=0 PerfScore 0.00
G_M40605_IG21:
mov rdi, rsi
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.ValueTask:FromException[int](System.Exception):System.Threading.Tasks.ValueTask`1[int]
call [rax]System.Threading.Tasks.ValueTask:FromException[int](System.Exception):System.Threading.Tasks.ValueTask`1[int]
- mov gword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0x38], rdx
- mov rsi, gword ptr [rbp-0x40]
- mov gword ptr [rbp-0x68], rsi
- mov esi, dword ptr [rbp-0x38]
- mov dword ptr [rbp-0x54], esi
- movsx rsi, word ptr [rbp-0x34]
- mov dword ptr [rbp-0x58], esi
- movzx rsi, byte ptr [rbp-0x32]
- mov dword ptr [rbp-0x5C], esi
+ mov gword ptr [rbp-0x58], rax
+ mov qword ptr [rbp-0x50], rdx
+ mov rsi, gword ptr [rbp-0x58]
+ mov gword ptr [rbp-0x90], rsi
+ mov esi, dword ptr [rbp-0x50]
+ mov dword ptr [rbp-0x7C], esi
+ movsx rsi, word ptr [rbp-0x4C]
+ mov dword ptr [rbp-0x80], esi
+ movzx rsi, byte ptr [rbp-0x4A]
+ mov dword ptr [rbp-0x84], esi
lea rax, G_M40605_IG13
- ;; size=60 bbWeight=0 PerfScore 0.00
+ ;; size=66 bbWeight=0 PerfScore 0.00
G_M40605_IG22:
- add rsp, 16
+ add rsp, 8
pop rbx
+ pop r12
+ pop r13
+ pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 531, prolog size 43, PerfScore 108.58, instruction count 159, allocated bytes for code 531 (MethodHash=9ad96162) for method System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
+; Total bytes of code 637, prolog size 65, PerfScore 118.58, instruction count 188, allocated bytes for code 637 (MethodHash=9ad96162) for method System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
; ============================================================ 94 (14.66 % of base) - System.Net.Sockets.UdpClient:SendAsync(System.ReadOnlyMemory`1[ubyte],System.Net.IPEndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this ; Assembly listing for method System.Net.Sockets.UdpClient:SendAsync(System.ReadOnlyMemory`1[ubyte],System.Net.IPEndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 21 single block inlinees; 7 inlinees without PGO data
+; 0 inlinees with PGO data; 23 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 8, 6 ) ref -> rbx this class-hnd single-def <System.Net.Sockets.UdpClient>
-; V01 arg1 [V01,T02] ( 6, 4 ) struct (16) [rbp-0x30] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlyMemory`1[ubyte]>
+; V01 arg1 [V01,T02] ( 5, 5 ) struct (16) [rbp-0x38] do-not-enreg[SFA] multireg-arg single-def <System.ReadOnlyMemory`1[ubyte]>
; V02 arg2 [V02,T03] ( 5, 4 ) ref -> r14 class-hnd single-def <System.Net.IPEndPoint>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
-; V06 tmp2 [V06,T26] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
+; V06 tmp2 [V06,T35] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[int]>
-; V08 tmp4 [V08,T12] ( 5, 2.50) struct (16) [rbp-0x40] do-not-enreg[SR] multireg-ret must-init "Inline return value spill temp" <System.Threading.Tasks.ValueTask`1[int]>
+; V08 tmp4 [V08,T12] ( 5, 2.50) struct (16) [rbp-0x48] do-not-enreg[SR] multireg-ret must-init "Inline return value spill temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
; V10 tmp6 [V10,T04] ( 5, 5 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
-; V11 tmp7 [V11,T14] ( 2, 2 ) ref -> r14 class-hnd single-def "dup spill" <System.__Canon>
+; V11 tmp7 [V11,T23] ( 2, 2 ) ref -> r14 class-hnd single-def "dup spill" <System.__Canon>
; V12 tmp8 [V12,T09] ( 7, 3.50) ref -> r14
;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
; V14 tmp10 [V14,T05] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs>
-;* V15 tmp11 [V15,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V15 tmp11 [V15,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
; V19 tmp15 [V19,T10] ( 3, 3 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
-;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlyMemory`1[ubyte]>
-; V21 tmp17 [V21,T13] ( 5, 2.50) struct (16) [rbp-0x50] do-not-enreg[SR] multireg-ret must-init "Inline return value spill temp" <System.Threading.Tasks.ValueTask`1[int]>
-;* V22 tmp18 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
-; V23 tmp19 [V23,T06] ( 5, 5 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
-; V24 tmp20 [V24,T15] ( 2, 2 ) ref -> r13 class-hnd single-def "dup spill" <System.__Canon>
-; V25 tmp21 [V25,T08] ( 8, 4 ) ref -> r13
-;* V26 tmp22 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
-; V27 tmp23 [V27,T07] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs>
-;* V28 tmp24 [V28,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-;* V30 tmp26 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-;* V31 tmp27 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
-; V32 tmp28 [V32,T11] ( 3, 3 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
-;* V33 tmp29 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlyMemory`1[ubyte]>
-; V34 tmp30 [V34,T01] ( 9, 5 ) ref -> r15 single-def "field V03._source (fldOffset=0x0)" P-INDEP
-;* V35 tmp31 [V35 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._source (fldOffset=0x0)" P-INDEP
-;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref "field V13._object (fldOffset=0x0)" P-INDEP
-;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0xc)" P-INDEP
-;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref "field V17._source (fldOffset=0x0)" P-INDEP
-; V40 tmp36 [V40,T16] ( 2, 1 ) ref -> rax single-def "field V18._obj (fldOffset=0x0)" P-INDEP
-;* V41 tmp37 [V41,T20] ( 0, 0 ) int -> zero-ref "field V18._result (fldOffset=0x8)" P-INDEP
-;* V42 tmp38 [V42,T21] ( 0, 0 ) short -> zero-ref "field V18._token (fldOffset=0xc)" P-INDEP
-;* V43 tmp39 [V43,T22] ( 0, 0 ) ubyte -> zero-ref "field V18._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref "field V20._object (fldOffset=0x0)" P-INDEP
-;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref "field V20._index (fldOffset=0x8)" P-INDEP
-;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0xc)" P-INDEP
-;* V47 tmp43 [V47 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._source (fldOffset=0x0)" P-INDEP
-;* V48 tmp44 [V48 ] ( 0, 0 ) ref -> zero-ref "field V26._object (fldOffset=0x0)" P-INDEP
-;* V49 tmp45 [V49 ] ( 0, 0 ) int -> zero-ref "field V26._index (fldOffset=0x8)" P-INDEP
-;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0xc)" P-INDEP
-;* V51 tmp47 [V51 ] ( 0, 0 ) ref -> zero-ref "field V30._source (fldOffset=0x0)" P-INDEP
-; V52 tmp48 [V52,T17] ( 2, 1 ) ref -> rax single-def "field V31._obj (fldOffset=0x0)" P-INDEP
-;* V53 tmp49 [V53,T23] ( 0, 0 ) int -> zero-ref "field V31._result (fldOffset=0x8)" P-INDEP
-;* V54 tmp50 [V54,T24] ( 0, 0 ) short -> zero-ref "field V31._token (fldOffset=0xc)" P-INDEP
-;* V55 tmp51 [V55,T25] ( 0, 0 ) ubyte -> zero-ref "field V31._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V56 tmp52 [V56 ] ( 0, 0 ) ref -> zero-ref "field V33._object (fldOffset=0x0)" P-INDEP
-;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref "field V33._index (fldOffset=0x8)" P-INDEP
-;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0xc)" P-INDEP
-; V59 tmp55 [V59,T27] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V20 tmp16 [V20 ] ( 5, 5 ) struct (16) [rbp-0x58] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
+;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
+;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V24 tmp20 [V24,T13] ( 5, 2.50) struct (16) [rbp-0x68] do-not-enreg[SR] multireg-ret must-init "Inline return value spill temp" <System.Threading.Tasks.ValueTask`1[int]>
+;* V25 tmp21 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Threading.CancellationToken>
+; V26 tmp22 [V26,T06] ( 5, 5 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Net.Sockets.Socket>
+; V27 tmp23 [V27,T24] ( 2, 2 ) ref -> rax class-hnd single-def "dup spill" <System.__Canon>
+; V28 tmp24 [V28,T08] ( 8, 4 ) ref -> [rbp-0x88]
+;* V29 tmp25 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
+; V30 tmp26 [V30,T07] ( 5, 5 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs>
+;* V31 tmp27 [V31,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
+;* V33 tmp29 [V33 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
+;* V34 tmp30 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
+; V35 tmp31 [V35,T11] ( 3, 3 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
+; V36 tmp32 [V36 ] ( 5, 5 ) struct (16) [rbp-0x78] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
+;* V37 tmp33 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
+;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V40 tmp36 [V40,T01] ( 9, 5 ) ref -> r15 single-def "field V03._source (fldOffset=0x0)" P-INDEP
+;* V41 tmp37 [V41 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._source (fldOffset=0x0)" P-INDEP
+;* V42 tmp38 [V42 ] ( 0, 0 ) ref -> zero-ref "field V13._object (fldOffset=0x0)" P-INDEP
+;* V43 tmp39 [V43 ] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
+;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0xc)" P-INDEP
+;* V45 tmp41 [V45 ] ( 0, 0 ) ref -> zero-ref "field V17._source (fldOffset=0x0)" P-INDEP
+; V46 tmp42 [V46,T25] ( 2, 1 ) ref -> rax single-def "field V18._obj (fldOffset=0x0)" P-INDEP
+;* V47 tmp43 [V47,T29] ( 0, 0 ) int -> zero-ref "field V18._result (fldOffset=0x8)" P-INDEP
+;* V48 tmp44 [V48,T30] ( 0, 0 ) short -> zero-ref "field V18._token (fldOffset=0xc)" P-INDEP
+;* V49 tmp45 [V49,T31] ( 0, 0 ) ubyte -> zero-ref "field V18._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
+; V50 tmp46 [V50,T14] ( 3, 2.50) ref -> [rbp-0x58] do-not-enreg[] "field V20._object (fldOffset=0x0)" P-DEP
+; V51 tmp47 [V51,T16] ( 3, 2.50) int -> [rbp-0x50] do-not-enreg[] "field V20._index (fldOffset=0x8)" P-DEP
+; V52 tmp48 [V52,T17] ( 3, 2.50) int -> [rbp-0x4C] do-not-enreg[] "field V20._length (fldOffset=0xc)" P-DEP
+;* V53 tmp49 [V53 ] ( 0, 0 ) ref -> zero-ref single-def "field V25._source (fldOffset=0x0)" P-INDEP
+;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref "field V29._object (fldOffset=0x0)" P-INDEP
+;* V55 tmp51 [V55 ] ( 0, 0 ) int -> zero-ref "field V29._index (fldOffset=0x8)" P-INDEP
+;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0xc)" P-INDEP
+;* V57 tmp53 [V57 ] ( 0, 0 ) ref -> zero-ref "field V33._source (fldOffset=0x0)" P-INDEP
+; V58 tmp54 [V58,T26] ( 2, 1 ) ref -> rax single-def "field V34._obj (fldOffset=0x0)" P-INDEP
+;* V59 tmp55 [V59,T32] ( 0, 0 ) int -> zero-ref "field V34._result (fldOffset=0x8)" P-INDEP
+;* V60 tmp56 [V60,T33] ( 0, 0 ) short -> zero-ref "field V34._token (fldOffset=0xc)" P-INDEP
+;* V61 tmp57 [V61,T34] ( 0, 0 ) ubyte -> zero-ref "field V34._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
+; V62 tmp58 [V62,T15] ( 3, 2.50) ref -> [rbp-0x78] do-not-enreg[] "field V36._object (fldOffset=0x0)" P-DEP
+; V63 tmp59 [V63,T18] ( 3, 2.50) int -> [rbp-0x70] do-not-enreg[] "field V36._index (fldOffset=0x8)" P-DEP
+; V64 tmp60 [V64,T19] ( 3, 2.50) int -> [rbp-0x6C] do-not-enreg[] "field V36._length (fldOffset=0xc)" P-DEP
+; V65 tmp61 [V65,T20] ( 3, 2 ) ref -> r13 single-def "V01.[000..008)"
+; V66 tmp62 [V66,T21] ( 3, 2 ) int -> r12 "V01.[008..012)"
+; V67 tmp63 [V67,T22] ( 3, 2 ) int -> [rbp-0x7C] spill-single-def "V01.[012..016)"
+; V68 tmp64 [V68,T36] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
;
-; Lcl frame size = 48
+; Lcl frame size = 104
G_M28989_IG01:
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- sub rsp, 48
- lea rbp, [rsp+0x50]
+ sub rsp, 104
+ lea rbp, [rsp+0x90]
+ xor eax, eax
+ mov qword ptr [rbp-0x78], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x50], ymm8
- mov gword ptr [rbp-0x30], rsi
- mov qword ptr [rbp-0x28], rdx
+ vmovdqu ymmword ptr [rbp-0x70], ymm8
+ vmovdqa xmmword ptr [rbp-0x50], xmm8
+ mov qword ptr [rbp-0x40], rax
+ mov gword ptr [rbp-0x38], rsi
+ mov qword ptr [rbp-0x30], rdx
mov rbx, rdi
mov r14, rcx
mov r15, r8
- ;; size=44 bbWeight=1 PerfScore 10.83
+ ;; size=64 bbWeight=1 PerfScore 16.08
G_M28989_IG02:
movzx rdi, byte ptr [rbx+0x1D]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
call [rax]System.ObjectDisposedException:ThrowIf(ubyte,System.Object)
+ mov r13, gword ptr [rbp-0x38]
+ mov r12d, dword ptr [rbp-0x30]
+ mov eax, dword ptr [rbp-0x2C]
+ mov dword ptr [rbp-0x7C], eax
test r14, r14
je G_M28989_IG09
- ;; size=29 bbWeight=1 PerfScore 6.75
+ ;; size=43 bbWeight=1 PerfScore 10.75
G_M28989_IG03:
cmp byte ptr [rbx+0x1C], 0
jne G_M28989_IG16
mov rsi, gword ptr [r14+0x08]
mov rdi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.UdpClient:CheckForBroadcast(System.Net.IPAddress):this
- call [rax]System.Net.Sockets.UdpClient:CheckForBroadcast(System.Net.IPAddress):this
+ mov rcx, 0xD1FFAB1E ; code for System.Net.Sockets.UdpClient:CheckForBroadcast(System.Net.IPAddress):this
+ call [rcx]System.Net.Sockets.UdpClient:CheckForBroadcast(System.Net.IPAddress):this
mov rbx, gword ptr [rbx+0x08]
cmp byte ptr [rbx], bl
test r15, r15
je SHORT G_M28989_IG04
cmp dword ptr [r15+0x20], 0
jne G_M28989_IG07
;; size=51 bbWeight=0.50 PerfScore 9.88
G_M28989_IG04:
lea rdi, bword ptr [rbx+0x38]
xor rax, rax
- mov r13, rax
- xchg gword ptr [rdi], r13
- test r13, r13
+ xchg gword ptr [rdi], rax
+ test rax, rax
jne SHORT G_M28989_IG05
mov rdi, 0xD1FFAB1E ; System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs
call CORINFO_HELP_NEWFAST
- mov r13, rax
- mov byte ptr [r13+0xBA], 0
- lea rdi, bword ptr [r13+0xE0]
+ mov gword ptr [rbp-0x90], rax
+ mov byte ptr [rax+0xBA], 0
+ lea rdi, bword ptr [rax+0xE0]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- mov byte ptr [r13+0xE8], 0
- ;; size=66 bbWeight=0.50 PerfScore 13.75
+ mov rax, gword ptr [rbp-0x90]
+ mov byte ptr [rax+0xE8], 0
+ ;; size=72 bbWeight=0.50 PerfScore 14.50
G_M28989_IG05:
- mov rsi, gword ptr [rbp-0x30]
- mov rdx, qword ptr [rbp-0x28]
- mov rdi, r13
- mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(System.Memory`1[ubyte]):this
+ mov gword ptr [rbp-0x78], r13
+ mov dword ptr [rbp-0x70], r12d
+ mov r12d, dword ptr [rbp-0x7C]
+ mov dword ptr [rbp-0x6C], r12d
+ mov rsi, gword ptr [rbp-0x78]
+ mov rdx, qword ptr [rbp-0x70]
+ mov gword ptr [rbp-0x88], rax
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(System.Memory`1[ubyte]):this
cmp dword ptr [rdi], edi
- call [rax]System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(System.Memory`1[ubyte]):this
+ call [rcx]System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(System.Memory`1[ubyte]):this
xor edi, edi
+ mov r13, gword ptr [rbp-0x88]
mov dword ptr [r13+0xA4], edi
lea rdi, bword ptr [r13+0x28]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov byte ptr [r13+0xE9], 0
mov rdi, r13
mov rsi, rbx
mov rdx, r15
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendToAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this
- ;; size=73 bbWeight=0.50 PerfScore 6.75
+ ;; size=103 bbWeight=0.50 PerfScore 9.75
G_M28989_IG06:
- add rsp, 48
+ add rsp, 104
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [rax]System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendToAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
G_M28989_IG07:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:FromCanceled[int](System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]
call [rax]System.Threading.Tasks.Task:FromCanceled[int](System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]
test rax, rax
je G_M28989_IG15
- mov gword ptr [rbp-0x50], rax
+ mov gword ptr [rbp-0x68], rax
xor eax, eax
- mov dword ptr [rbp-0x48], eax
- mov word ptr [rbp-0x44], 0
- mov byte ptr [rbp-0x42], 1
- mov rax, gword ptr [rbp-0x50]
- mov rdx, qword ptr [rbp-0x48]
+ mov dword ptr [rbp-0x60], eax
+ mov word ptr [rbp-0x5C], 0
+ mov byte ptr [rbp-0x5A], 1
+ mov rax, gword ptr [rbp-0x68]
+ mov rdx, qword ptr [rbp-0x60]
;; size=51 bbWeight=0.50 PerfScore 5.50
G_M28989_IG08:
- add rsp, 48
+ add rsp, 104
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M28989_IG09:
mov rbx, gword ptr [rbx+0x08]
cmp byte ptr [rbx], bl
test r15, r15
je SHORT G_M28989_IG10
cmp dword ptr [r15+0x20], 0
jne G_M28989_IG13
;; size=22 bbWeight=0.50 PerfScore 5.12
G_M28989_IG10:
lea rdi, bword ptr [rbx+0x38]
- xor rax, rax
- mov r14, rax
+ xor rcx, rcx
+ mov r14, rcx
xchg gword ptr [rdi], r14
test r14, r14
jne SHORT G_M28989_IG11
mov rdi, 0xD1FFAB1E ; System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs
call CORINFO_HELP_NEWFAST
mov r14, rax
mov byte ptr [r14+0xBA], 0
lea rdi, bword ptr [r14+0xE0]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
mov byte ptr [r14+0xE8], 0
;; size=66 bbWeight=0.50 PerfScore 13.75
G_M28989_IG11:
- mov rsi, gword ptr [rbp-0x30]
- mov rdx, qword ptr [rbp-0x28]
+ mov gword ptr [rbp-0x58], r13
+ mov dword ptr [rbp-0x50], r12d
+ mov r12d, dword ptr [rbp-0x7C]
+ mov dword ptr [rbp-0x4C], r12d
+ mov rsi, gword ptr [rbp-0x58]
+ mov rdx, qword ptr [rbp-0x50]
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(System.Memory`1[ubyte]):this
cmp dword ptr [rdi], edi
call [rax]System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(System.Memory`1[ubyte]):this
xor edi, edi
mov dword ptr [r14+0xA4], edi
mov byte ptr [r14+0xE9], 0
mov rdi, r14
mov rsi, rbx
mov rdx, r15
mov rax, 0xD1FFAB1E ; code for System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this
- ;; size=61 bbWeight=0.50 PerfScore 5.88
+ ;; size=77 bbWeight=0.50 PerfScore 7.88
G_M28989_IG12:
- add rsp, 48
+ add rsp, 104
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
tail.jmp [rax]System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
G_M28989_IG13:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:FromCanceled[int](System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]
call [rax]System.Threading.Tasks.Task:FromCanceled[int](System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]
test rax, rax
je SHORT G_M28989_IG15
- mov gword ptr [rbp-0x40], rax
+ mov gword ptr [rbp-0x48], rax
xor eax, eax
- mov dword ptr [rbp-0x38], eax
- mov word ptr [rbp-0x34], 0
- mov byte ptr [rbp-0x32], 1
- mov rax, gword ptr [rbp-0x40]
- mov rdx, qword ptr [rbp-0x38]
+ mov dword ptr [rbp-0x40], eax
+ mov word ptr [rbp-0x3C], 0
+ mov byte ptr [rbp-0x3A], 1
+ mov rax, gword ptr [rbp-0x48]
+ mov rdx, qword ptr [rbp-0x40]
;; size=47 bbWeight=0.50 PerfScore 5.50
G_M28989_IG14:
- add rsp, 48
+ add rsp, 104
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 1.88
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M28989_IG15:
mov edi, 9
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
int3
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M28989_IG16:
mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_net_udpconnected():System.String
call [rax]System.SR:get_net_udpconnected():System.String
mov rsi, rax
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor(System.String):this
call [rax]System.InvalidOperationException:.ctor(System.String):this
mov rdi, r15
call CORINFO_HELP_THROW
int3
;; size=57 bbWeight=0 PerfScore 0.00
-; Total bytes of code 641, prolog size 27, PerfScore 94.08, instruction count 163, allocated bytes for code 641 (MethodHash=db728ec2) for method System.Net.Sockets.UdpClient:SendAsync(System.ReadOnlyMemory`1[ubyte],System.Net.IPEndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
+; Total bytes of code 735, prolog size 47, PerfScore 110.08, instruction count 186, allocated bytes for code 735 (MethodHash=db728ec2) for method System.Net.Sockets.UdpClient:SendAsync(System.ReadOnlyMemory`1[ubyte],System.Net.IPEndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/810d0315d0981d5dda4f4e4e7a5a9181 |
Top method improvements-161 (-10.76 % of base) - System.IO.File+d__100:MoveNext():this ; Assembly listing for method System.IO.File+<InternalReadAllBytesAsync>d__100:MoveNext():this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 17 inlinees without PGO data
+; 0 inlinees with PGO data; 29 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 30, 68 ) byref -> [rbp-0x50] this EH-live single-def
-; V01 loc0 [V01,T29] ( 7, 7 ) int -> [rbp-0x2C] do-not-enreg[Z] EH-live
-; V02 loc1 [V02,T31] ( 4, 4 ) ref -> rbx class-hnd single-def <ubyte[]>
+; V00 this [V00,T00] ( 30, 68 ) byref -> [rbp-0x48] this EH-live single-def
+; V01 loc0 [V01,T28] ( 7, 7 ) int -> [rbp-0x2C] do-not-enreg[Z] EH-live
+; V02 loc1 [V02,T30] ( 4, 4 ) ref -> rbx class-hnd single-def <ubyte[]>
;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 loc3 [V04 ] ( 12, 43 ) struct (16) [rbp-0x40] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Threading.Tasks.ValueTask`1[int]>
;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1[int]>
;* V07 loc6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
; V08 OutArgs [V08 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V10 tmp2 [V10,T07] ( 3, 24 ) ref -> rbx class-hnd exact "impAppendStmt" <Microsoft.Win32.SafeHandles.SafeFileHandle>
+; V10 tmp2 [V10,T06] ( 3, 24 ) ref -> rbx class-hnd exact "impAppendStmt" <Microsoft.Win32.SafeHandles.SafeFileHandle>
;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
-; V12 tmp4 [V12,T32] ( 2, 4 ) ref -> rax class-hnd exact single-def "NewArr temp" <ubyte[]>
-; V13 tmp5 [V13,T47] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V14 tmp6 [V14,T03] ( 4, 32 ) ref -> r15 class-hnd "Inlining Arg" <ubyte[]>
-; V15 tmp7 [V15,T04] ( 4, 32 ) int -> r14 "Inlining Arg"
+; V12 tmp4 [V12,T31] ( 2, 4 ) ref -> rax class-hnd exact single-def "NewArr temp" <ubyte[]>
+; V13 tmp5 [V13,T41] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V14 tmp6 [V14,T02] ( 4, 32 ) ref -> r15 class-hnd "Inlining Arg" <ubyte[]>
+; V15 tmp7 [V15,T03] ( 4, 32 ) int -> r14 "Inlining Arg"
;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
-; V17 tmp9 [V17,T15] ( 2, 16 ) long -> r12 "Inlining Arg"
+; V17 tmp9 [V17,T12] ( 2, 16 ) long -> r12 "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V19 tmp11 [V19,T14] ( 2, 16 ) ref -> rcx class-hnd "dup spill" <System.__Canon>
-; V20 tmp12 [V20,T01] ( 15, 60 ) ref -> [rbp-0x58]
-; V21 tmp13 [V21,T08] ( 3, 24 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle+ThreadPoolValueTaskSource>
+; V19 tmp11 [V19,T11] ( 2, 16 ) ref -> rcx class-hnd "dup spill" <System.__Canon>
+; V20 tmp12 [V20,T01] ( 15, 60 ) ref -> [rbp-0x50]
+; V21 tmp13 [V21,T07] ( 3, 24 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle+ThreadPoolValueTaskSource>
;* V22 tmp14 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
-;* V23 tmp15 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
-;* V24 tmp16 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V25 tmp17 [V25,T16] ( 2, 16 ) short -> rsi "Inlining Arg"
-;* V26 tmp18 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
-;* V27 tmp19 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask`1[int]>
-;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1[int]>
-;* V29 tmp21 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
-;* V30 tmp22 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V31 tmp23 [V31 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
-;* V32 tmp24 [V32 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]>
-;* V33 tmp25 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V34 tmp26 [V34,T12] ( 4, 16 ) ref -> rbx class-hnd "Inline stloc first use temp" <System.Object>
-; V35 tmp27 [V35,T18] ( 3, 12 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[int]>
-;* V36 tmp28 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource`1[int]>
-;* V37 tmp29 [V37 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V38 tmp30 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V39 tmp31 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V40 tmp32 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V41 tmp33 [V41,T05] ( 5, 28 ) int -> rax "Inline return value spill temp"
-; V42 tmp34 [V42,T06] ( 4, 24 ) ref -> rbx class-hnd "Inline stloc first use temp" <System.Object>
-; V43 tmp35 [V43,T11] ( 5, 20 ) ref -> r15 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[int]>
-;* V44 tmp36 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource`1[int]>
-; V45 tmp37 [V45,T24] ( 4, 8 ) byref -> r15 single-def "Inlining Arg"
-; V46 tmp38 [V46,T37] ( 3, 3 ) ref -> r14 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[ubyte[]]>
-;* V47 tmp39 [V47 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <ubyte[]>
-; V48 tmp40 [V48,T25] ( 4, 8 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[ubyte[]]>
-;* V49 tmp41 [V49 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-;* V50 tmp42 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V51 tmp43 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V52 tmp44 [V52,T10] ( 10, 20 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
-;* V53 tmp45 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
-; V54 tmp46 [V54,T17] ( 6, 12 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.TplEventSource>
-; V55 tmp47 [V55,T34] ( 2, 4 ) int -> r13 "Inlining Arg"
-;* V56 tmp48 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V57 tmp49 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V58 tmp50 [V58,T46] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V59 tmp51 [V59,T38] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V60 tmp52 [V60,T45] ( 2, 2 ) ubyte -> rdi "Inline return value spill temp"
-; V61 tmp53 [V61,T30] ( 5, 5 ) int -> [rbp-0x44] spill-single-def "Inline stloc first use temp"
-; V62 tmp54 [V62,T43] ( 3, 3 ) ubyte -> rdi "Inline return value spill temp"
-; V63 tmp55 [V63,T02] ( 6, 41 ) int -> [rbp-0x48] "Inline stloc first use temp"
-; V64 tmp56 [V64,T09] ( 3, 24 ) int -> rax "Inline stloc first use temp"
-; V65 tmp57 [V65,T39] ( 3, 3 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Threading.ManualResetEventSlim>
-;* V66 tmp58 [V66 ] ( 0, 0 ) ref -> zero-ref "field V05._obj (fldOffset=0x0)" P-INDEP
-;* V67 tmp59 [V67 ] ( 0, 0 ) int -> zero-ref "field V05._result (fldOffset=0x8)" P-INDEP
-;* V68 tmp60 [V68 ] ( 0, 0 ) short -> zero-ref "field V05._token (fldOffset=0xc)" P-INDEP
-;* V69 tmp61 [V69 ] ( 0, 0 ) ubyte -> zero-ref "field V05._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V70 tmp62 [V70 ] ( 0, 0 ) ref -> zero-ref "field V11._object (fldOffset=0x0)" P-INDEP
-;* V71 tmp63 [V71 ] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
-;* V72 tmp64 [V72 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0xc)" P-INDEP
-; V73 tmp65 [V73,T19] ( 3, 12 ) ref -> r15 "field V16._object (fldOffset=0x0)" P-INDEP
-; V74 tmp66 [V74,T13] ( 4, 16 ) int -> r14 "field V16._index (fldOffset=0x8)" P-INDEP
-; V75 tmp67 [V75,T20] ( 3, 12 ) int -> r13 "field V16._length (fldOffset=0xc)" P-INDEP
-; V76 tmp68 [V76,T26] ( 2, 8 ) ref -> [rbp-0x68] spill-single-def "field V18._source (fldOffset=0x0)" P-INDEP
-;* V77 tmp69 [V77 ] ( 0, 0 ) ref -> zero-ref "field V22._obj (fldOffset=0x0)" P-INDEP
-;* V78 tmp70 [V78 ] ( 0, 0 ) int -> zero-ref "field V22._result (fldOffset=0x8)" P-INDEP
-;* V79 tmp71 [V79 ] ( 0, 0 ) short -> zero-ref "field V22._token (fldOffset=0xc)" P-INDEP
-;* V80 tmp72 [V80 ] ( 0, 0 ) ubyte -> zero-ref "field V22._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V81 tmp73 [V81 ] ( 0, 0 ) ref -> zero-ref "field V23._object (fldOffset=0x0)" P-INDEP
-;* V82 tmp74 [V82 ] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x8)" P-INDEP
-;* V83 tmp75 [V83 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0xc)" P-INDEP
-; V84 tmp76 [V84,T27] ( 2, 8 ) ref -> rbx "field V26._obj (fldOffset=0x0)" P-INDEP
-;* V85 tmp77 [V85,T35] ( 0, 0 ) int -> zero-ref "field V26._result (fldOffset=0x8)" P-INDEP
-; V86 tmp78 [V86,T28] ( 2, 8 ) short -> rsi "field V26._token (fldOffset=0xc)" P-INDEP
-;* V87 tmp79 [V87,T36] ( 0, 0 ) ubyte -> zero-ref "field V26._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V88 tmp80 [V88 ] ( 0, 0 ) ref -> zero-ref "field V49._source (fldOffset=0x0)" P-INDEP
-; V89 tmp81 [V89,T33] ( 2, 4 ) ref -> rdx "argument with side effect"
-; V90 cse0 [V90,T40] ( 3, 3 ) ref -> r14 "CSE #09: conservative"
-; V91 cse1 [V91,T44] ( 3, 3 ) int -> rsi "CSE #10: conservative"
-; V92 cse2 [V92,T21] ( 3, 12 ) int -> rdi "CSE #02: moderate"
-; V93 cse3 [V93,T41] ( 3, 3 ) ref -> rdi "CSE #04: conservative"
-; V94 cse4 [V94,T42] ( 3, 3 ) ref -> rdi "CSE #05: conservative"
-; V95 cse5 [V95,T23] ( 4, 11 ) byref -> r14 "CSE #11: moderate"
-; V96 cse6 [V96,T22] ( 3, 12 ) int -> r13 "CSE #01: moderate"
-; V97 rat0 [V97 ] ( 1, 1 ) long -> [rbp-0x78] do-not-enreg[V] "PSPSym"
+;* V23 tmp15 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
+;* V24 tmp16 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
+;* V25 tmp17 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V26 tmp18 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V27 tmp19 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V28 tmp20 [V28,T13] ( 2, 16 ) short -> rsi "Inlining Arg"
+;* V29 tmp21 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
+;* V30 tmp22 [V30 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask`1[int]>
+;* V31 tmp23 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1[int]>
+;* V32 tmp24 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
+;* V33 tmp25 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V34 tmp26 [V34 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
+;* V35 tmp27 [V35 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]>
+;* V36 tmp28 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V37 tmp29 [V37,T09] ( 4, 16 ) ref -> rbx class-hnd "Inline stloc first use temp" <System.Object>
+; V38 tmp30 [V38,T15] ( 3, 12 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[int]>
+;* V39 tmp31 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource`1[int]>
+;* V40 tmp32 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V41 tmp33 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V42 tmp34 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V43 tmp35 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
+; V44 tmp36 [V44,T04] ( 5, 28 ) int -> rax "Inline return value spill temp"
+; V45 tmp37 [V45,T05] ( 4, 24 ) ref -> rbx class-hnd "Inline stloc first use temp" <System.Object>
+; V46 tmp38 [V46,T08] ( 5, 20 ) ref -> r15 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[int]>
+;* V47 tmp39 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource`1[int]>
+; V48 tmp40 [V48,T20] ( 4, 8 ) byref -> r15 single-def "Inlining Arg"
+; V49 tmp41 [V49,T36] ( 3, 3 ) ref -> r14 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[ubyte[]]>
+;* V50 tmp42 [V50 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <ubyte[]>
+; V51 tmp43 [V51,T21] ( 4, 8 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[ubyte[]]>
+;* V52 tmp44 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
+;* V53 tmp45 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V54 tmp46 [V54 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V55 tmp47 [V55,T29] ( 3, 6 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+;* V56 tmp48 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
+; V57 tmp49 [V57,T14] ( 6, 12 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.TplEventSource>
+; V58 tmp50 [V58,T33] ( 2, 4 ) int -> r13 "Inlining Arg"
+;* V59 tmp51 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V60 tmp52 [V60 ] ( 0, 0 ) ref -> zero-ref "field V05._obj (fldOffset=0x0)" P-INDEP
+;* V61 tmp53 [V61 ] ( 0, 0 ) int -> zero-ref "field V05._result (fldOffset=0x8)" P-INDEP
+;* V62 tmp54 [V62 ] ( 0, 0 ) short -> zero-ref "field V05._token (fldOffset=0xc)" P-INDEP
+;* V63 tmp55 [V63 ] ( 0, 0 ) ubyte -> zero-ref "field V05._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
+;* V64 tmp56 [V64 ] ( 0, 0 ) ref -> zero-ref "field V11._object (fldOffset=0x0)" P-INDEP
+;* V65 tmp57 [V65 ] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
+;* V66 tmp58 [V66 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0xc)" P-INDEP
+; V67 tmp59 [V67,T16] ( 3, 12 ) ref -> r15 "field V16._object (fldOffset=0x0)" P-INDEP
+; V68 tmp60 [V68,T10] ( 4, 16 ) int -> r14 "field V16._index (fldOffset=0x8)" P-INDEP
+; V69 tmp61 [V69,T17] ( 3, 12 ) int -> r13 "field V16._length (fldOffset=0xc)" P-INDEP
+; V70 tmp62 [V70,T22] ( 2, 8 ) ref -> [rbp-0x60] spill-single-def "field V18._source (fldOffset=0x0)" P-INDEP
+;* V71 tmp63 [V71 ] ( 0, 0 ) ref -> zero-ref "field V22._obj (fldOffset=0x0)" P-INDEP
+;* V72 tmp64 [V72 ] ( 0, 0 ) int -> zero-ref "field V22._result (fldOffset=0x8)" P-INDEP
+;* V73 tmp65 [V73 ] ( 0, 0 ) short -> zero-ref "field V22._token (fldOffset=0xc)" P-INDEP
+;* V74 tmp66 [V74 ] ( 0, 0 ) ubyte -> zero-ref "field V22._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
+; V75 tmp67 [V75,T23] ( 2, 8 ) ref -> rsi "field V23._object (fldOffset=0x0)" P-INDEP
+; V76 tmp68 [V76,T25] ( 2, 8 ) int -> r14 "field V23._index (fldOffset=0x8)" P-INDEP
+; V77 tmp69 [V77,T26] ( 2, 8 ) int -> r13 "field V23._length (fldOffset=0xc)" P-INDEP
+; V78 tmp70 [V78,T24] ( 2, 8 ) ref -> rbx "field V29._obj (fldOffset=0x0)" P-INDEP
+;* V79 tmp71 [V79,T34] ( 0, 0 ) int -> zero-ref "field V29._result (fldOffset=0x8)" P-INDEP
+; V80 tmp72 [V80,T27] ( 2, 8 ) short -> rsi "field V29._token (fldOffset=0xc)" P-INDEP
+;* V81 tmp73 [V81,T35] ( 0, 0 ) ubyte -> zero-ref "field V29._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
+;* V82 tmp74 [V82 ] ( 0, 0 ) ref -> zero-ref "field V52._source (fldOffset=0x0)" P-INDEP
+; V83 tmp75 [V83,T32] ( 2, 4 ) ref -> rdx "argument with side effect"
+; V84 cse0 [V84,T37] ( 3, 3 ) ref -> r14 "CSE #09: conservative"
+; V85 cse1 [V85,T40] ( 3, 3 ) int -> rsi "CSE #10: conservative"
+; V86 cse2 [V86,T18] ( 3, 12 ) int -> rdi "CSE #02: moderate"
+; V87 cse3 [V87,T38] ( 3, 3 ) ref -> rdi "CSE #04: conservative"
+; V88 cse4 [V88,T39] ( 3, 3 ) ref -> rdi "CSE #05: conservative"
+; V89 cse5 [V89,T19] ( 3, 12 ) int -> r13 "CSE #01: moderate"
+; V90 rat0 [V90 ] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 88
+; Lcl frame size = 72
G_M43673_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 88
- lea rbp, [rsp+0x80]
+ sub rsp, 72
+ lea rbp, [rsp+0x70]
xor eax, eax
mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0x78], rsp
- mov bword ptr [rbp-0x50], rdi
+ mov qword ptr [rbp-0x68], rsp
+ mov bword ptr [rbp-0x48], rdi
mov rdx, rdi
- ;; size=39 bbWeight=1 PerfScore 10.25
+ ;; size=36 bbWeight=1 PerfScore 10.25
G_M43673_IG02:
mov edi, dword ptr [rdx+0x18]
mov dword ptr [rbp-0x2C], edi
;; size=6 bbWeight=1 PerfScore 3.00
G_M43673_IG03:
cmp dword ptr [rbp-0x2C], 0
je SHORT G_M43673_IG04
mov rsi, gword ptr [rdx]
lea rdi, bword ptr [rdx+0x08]
call CORINFO_HELP_CHECKED_ASSIGN_REF
- mov rdx, bword ptr [rbp-0x50]
+ mov rdx, bword ptr [rbp-0x48]
;; size=22 bbWeight=1 PerfScore 7.50
G_M43673_IG04:
cmp dword ptr [rbp-0x2C], 0
jne SHORT G_M43673_IG07
;; size=6 bbWeight=1 PerfScore 3.00
G_M43673_IG05:
vmovdqu xmm0, xmmword ptr [rdx+0x38]
vmovdqu xmmword ptr [rbp-0x40], xmm0
;; size=10 bbWeight=1 PerfScore 5.00
G_M43673_IG06:
xor esi, esi
mov qword ptr [rdx+0x38], rsi
mov qword ptr [rdx+0x40], rsi
mov dword ptr [rbp-0x2C], -1
mov dword ptr [rdx+0x18], -1
jmp G_M43673_IG16
- align [0 bytes for IG31]
;; size=29 bbWeight=1 PerfScore 6.25
G_M43673_IG07:
xor esi, esi
mov dword ptr [rdx+0x20], esi
movsxd rsi, dword ptr [rdx+0x1C]
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
- mov rdx, bword ptr [rbp-0x50]
+ mov rdx, bword ptr [rbp-0x48]
lea rdi, bword ptr [rdx+0x10]
mov rsi, rax
call CORINFO_HELP_CHECKED_ASSIGN_REF
;; size=40 bbWeight=1 PerfScore 9.25
G_M43673_IG08:
- mov rdx, bword ptr [rbp-0x50]
+ mov rdx, bword ptr [rbp-0x48]
mov rbx, gword ptr [rdx]
mov r15, gword ptr [rdx+0x10]
mov edi, dword ptr [rdx+0x20]
mov r14d, edi
test r15, r15
je SHORT G_M43673_IG09
mov r13d, dword ptr [r15+0x08]
cmp r13d, r14d
jb G_M43673_IG24
sub r13d, r14d
jmp SHORT G_M43673_IG10
;; size=40 bbWeight=4 PerfScore 56.00
G_M43673_IG09:
test r14d, r14d
jne G_M43673_IG24
xor r15, r15
xor r14d, r14d
xor r13d, r13d
;; size=18 bbWeight=4 PerfScore 8.00
G_M43673_IG10:
movsxd r12, edi
mov rax, gword ptr [rdx+0x30]
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x60], rax
lea rdi, bword ptr [rbx+0x20]
xor rcx, rcx
xchg gword ptr [rdi], rcx
test rcx, rcx
jne SHORT G_M43673_IG11
mov rdi, 0xD1FFAB1E ; Microsoft.Win32.SafeHandles.SafeFileHandle+ThreadPoolValueTaskSource
call CORINFO_HELP_NEWSFAST
mov rcx, rax
- mov gword ptr [rbp-0x60], rcx
+ mov gword ptr [rbp-0x58], rcx
lea rdi, bword ptr [rcx+0x08]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- mov rbx, gword ptr [rbp-0x60]
+ mov rbx, gword ptr [rbp-0x58]
mov rcx, rbx
;; size=66 bbWeight=4 PerfScore 123.00
G_M43673_IG11:
mov byte ptr [rcx+0x38], 1
- mov gword ptr [rbp-0x58], rcx
- lea rdi, bword ptr [rcx+0x78]
mov rsi, r15
+ mov gword ptr [rbp-0x50], rcx
+ lea rdi, bword ptr [rcx+0x78]
call CORINFO_HELP_ASSIGN_REF
- mov rbx, gword ptr [rbp-0x58]
+ mov rbx, gword ptr [rbp-0x50]
mov dword ptr [rbx+0x80], r14d
mov dword ptr [rbx+0x84], r13d
mov qword ptr [rbx+0x30], r12
lea rdi, bword ptr [rbx+0x70]
- mov rsi, gword ptr [rbp-0x68]
+ mov rsi, gword ptr [rbp-0x60]
call CORINFO_HELP_ASSIGN_REF
xor rax, rax
mov gword ptr [rbx+0x18], rax
mov rax, 0xD1FFAB1E ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
call [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
lea rdi, bword ptr [rbx+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
jne G_M43673_IG23
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov rsi, rbx
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this
call [rax]System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this
movsx rsi, word ptr [rbx+0x68]
mov gword ptr [rbp-0x40], rbx
xor edi, edi
mov dword ptr [rbp-0x38], edi
mov word ptr [rbp-0x34], si
mov byte ptr [rbp-0x32], 0
mov rbx, gword ptr [rbp-0x40]
test rbx, rbx
je G_M43673_IG16
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[int]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
;; size=212 bbWeight=4 PerfScore 168.00
G_M43673_IG12:
jne SHORT G_M43673_IG15
mov rdi, rbx
movsx rsi, word ptr [rbp-0x34]
mov r11, 0xD1FFAB1E ; code for System.Threading.Tasks.Sources.IValueTaskSource`1[int]:GetStatus(short):int:this
call [r11]System.Threading.Tasks.Sources.IValueTaskSource`1[int]:GetStatus(short):int:this
test eax, eax
jne SHORT G_M43673_IG16
;; size=27 bbWeight=4 PerfScore 35.00
G_M43673_IG13:
xor edi, edi
mov dword ptr [rbp-0x2C], edi
;; size=5 bbWeight=1 PerfScore 1.25
G_M43673_IG14:
- mov rdx, bword ptr [rbp-0x50]
+ mov rdx, bword ptr [rbp-0x48]
mov dword ptr [rdx+0x18], edi
lea rdi, bword ptr [rdx+0x38]
lea rsi, bword ptr [rbp-0x40]
call CORINFO_HELP_ASSIGN_BYREF
movsq
add rdx, 40
- mov rsi, bword ptr [rbp-0x50]
+ mov rsi, bword ptr [rbp-0x48]
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[ubyte[]]:GetStateMachineBox[System.IO.File+<InternalReadAllBytesAsync>d__100](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[System.IO.File+<InternalReadAllBytesAsync>d__100](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[System.IO.File+<InternalReadAllBytesAsync>d__100](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
mov rdx, rax
lea rsi, [rbp-0x40]
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[ubyte[]]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
jmp G_M43673_IG27
;; size=86 bbWeight=1 PerfScore 16.00
G_M43673_IG15:
test dword ptr [rax+0x34], 0xD1FFAB1E
je SHORT G_M43673_IG13
;; size=9 bbWeight=4 PerfScore 16.00
G_M43673_IG16:
mov rbx, gword ptr [rbp-0x40]
test rbx, rbx
je SHORT G_M43673_IG20
;; size=9 bbWeight=8 PerfScore 18.00
G_M43673_IG17:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[int]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
mov r15, rax
test r15, r15
jne SHORT G_M43673_IG18
mov rdi, rbx
movsx rsi, word ptr [rbp-0x34]
mov r11, 0xD1FFAB1E ; code for System.Threading.Tasks.Sources.IValueTaskSource`1[int]:GetResult(short):int:this
call [r11]System.Threading.Tasks.Sources.IValueTaskSource`1[int]:GetResult(short):int:this
jmp SHORT G_M43673_IG21
;; size=56 bbWeight=4 PerfScore 55.00
G_M43673_IG18:
mov edi, dword ptr [r15+0x34]
and edi, 0xD1FFAB1E
cmp edi, 0xD1FFAB1E
je SHORT G_M43673_IG19
mov rdi, r15
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
call [rax]System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
;; size=35 bbWeight=4 PerfScore 29.00
G_M43673_IG19:
mov eax, dword ptr [r15+0x38]
jmp SHORT G_M43673_IG21
;; size=6 bbWeight=4 PerfScore 16.00
G_M43673_IG20:
mov eax, dword ptr [rbp-0x38]
;; size=3 bbWeight=4 PerfScore 4.00
G_M43673_IG21:
test eax, eax
je SHORT G_M43673_IG25
- mov rdx, bword ptr [rbp-0x50]
+ mov rdx, bword ptr [rbp-0x48]
add dword ptr [rdx+0x20], eax
mov edi, dword ptr [rdx+0x20]
cmp edi, dword ptr [rdx+0x1C]
jl G_M43673_IG08
;; size=23 bbWeight=8 PerfScore 90.00
G_M43673_IG22:
- mov rdx, bword ptr [rbp-0x50]
+ mov rdx, bword ptr [rbp-0x48]
mov rbx, gword ptr [rdx+0x10]
jmp SHORT G_M43673_IG26
;; size=10 bbWeight=1 PerfScore 5.00
G_M43673_IG23:
mov edi, 44
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=1 PerfScore 3.75
G_M43673_IG24:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=1 PerfScore 3.50
G_M43673_IG25:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowEndOfFileException()
call [rax]System.ThrowHelper:ThrowEndOfFileException()
int3
;; size=13 bbWeight=1 PerfScore 3.50
G_M43673_IG26:
cmp dword ptr [rbp-0x2C], 0
jge SHORT G_M43673_IG29
mov rdi, gword ptr [rdx+0x08]
test rdi, rdi
je SHORT G_M43673_IG29
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.SafeHandle:Dispose():this
cmp dword ptr [rdi], edi
call [rax]System.Runtime.InteropServices.SafeHandle:Dispose():this
jmp SHORT G_M43673_IG29
;; size=31 bbWeight=1 PerfScore 14.50
G_M43673_IG27:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M43673_IG28:
- call G_M43673_IG46
- jmp G_M43673_IG43
+ call G_M43673_IG38
+ jmp G_M43673_IG35
;; size=10 bbWeight=1 PerfScore 3.00
G_M43673_IG29:
- mov rdx, bword ptr [rbp-0x50]
+ mov rdx, bword ptr [rbp-0x48]
mov dword ptr [rdx+0x18], -2
lea r15, bword ptr [rdx+0x28]
cmp gword ptr [r15], 0
- je G_M43673_IG39
+ je G_M43673_IG31
mov r15, gword ptr [r15]
mov rdi, 0xD1FFAB1E ; const ptr
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je SHORT G_M43673_IG30
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.Tasks.Task:get_Id():int:this
mov r13d, eax
movzx rsi, byte ptr [r14+0x9D]
test esi, esi
je SHORT G_M43673_IG30
xor ecx, ecx
mov dword ptr [rsp], ecx
mov rcx, qword ptr [r14+0x80]
mov edx, dword ptr [r14+0x98]
mov rdi, r14
mov r8d, 4
mov r9d, 8
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
call [rax]System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
test eax, eax
je SHORT G_M43673_IG30
mov rdi, r14
mov edx, r13d
mov esi, 15
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int):this
;; size=161 bbWeight=1 PerfScore 39.50
G_M43673_IG30:
- mov eax, dword ptr [r15+0x34]
- mov dword ptr [rbp-0x44], eax
- test eax, 0xD1FFAB1E
- jne SHORT G_M43673_IG36
- lea r14, bword ptr [r15+0x34]
- mov edi, eax
- or edi, 0xD1FFAB1E
- lock
- cmpxchg dword ptr [r14], edi
- cmp eax, dword ptr [rbp-0x44]
- je SHORT G_M43673_IG37
- mov eax, dword ptr [r15+0x34]
- jmp SHORT G_M43673_IG32
- ;; size=42 bbWeight=1 PerfScore 30.25
-G_M43673_IG31:
- mov edi, eax
- mov eax, edi
- ;; size=4 bbWeight=8 PerfScore 4.00
-G_M43673_IG32:
- test eax, 0xD1FFAB1E
- jne SHORT G_M43673_IG34
- mov edi, eax
- or edi, 0xD1FFAB1E
- mov dword ptr [rbp-0x48], eax
- lock
- cmpxchg dword ptr [r14], edi
- mov edi, dword ptr [rbp-0x48]
- cmp eax, edi
- jne SHORT G_M43673_IG31
- ;; size=30 bbWeight=8 PerfScore 184.00
-G_M43673_IG33:
- mov edi, 1
- jmp SHORT G_M43673_IG35
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M43673_IG34:
- xor edi, edi
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M43673_IG35:
- test edi, edi
- jne SHORT G_M43673_IG37
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M43673_IG36:
+ mov rdi, r15
+ mov rsi, rbx
+ mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task`1[System.__Canon]:TrySetResult(System.__Canon):ubyte:this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Threading.Tasks.Task`1[System.__Canon]:TrySetResult(System.__Canon):ubyte:this
+ test eax, eax
+ jne SHORT G_M43673_IG35
mov edi, 24
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowInvalidOperationException(int)
call [rax]System.ThrowHelper:ThrowInvalidOperationException(int)
int3
- ;; size=18 bbWeight=1 PerfScore 3.75
-G_M43673_IG37:
- lea rdi, bword ptr [r15+0x38]
- mov rsi, rbx
- call CORINFO_HELP_ASSIGN_REF
- mov edi, dword ptr [r15+0x34]
- or edi, 0xD1FFAB1E
- xchg dword ptr [r14], edi
- mov rbx, gword ptr [r15+0x28]
+ ;; size=42 bbWeight=1 PerfScore 11.75
+G_M43673_IG31:
test rbx, rbx
- je SHORT G_M43673_IG38
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this
- call [rax]System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this
- mov rdi, gword ptr [rbx+0x10]
- test rdi, rdi
- je SHORT G_M43673_IG38
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task+ContingentProperties:SetEvent(System.Threading.ManualResetEventSlim)
- call [rax]System.Threading.Tasks.Task+ContingentProperties:SetEvent(System.Threading.ManualResetEventSlim)
- ;; size=70 bbWeight=1 PerfScore 37.25
-G_M43673_IG38:
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:FinishContinuations():this
- call [rax]System.Threading.Tasks.Task:FinishContinuations():this
- jmp SHORT G_M43673_IG43
- ;; size=17 bbWeight=1 PerfScore 5.50
-G_M43673_IG39:
- test rbx, rbx
- je SHORT G_M43673_IG40
+ je SHORT G_M43673_IG32
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[ubyte[]]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov dword ptr [r14+0x34], 0xD1FFAB1E
lea rdi, bword ptr [r14+0x38]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M43673_IG42
+ jmp SHORT G_M43673_IG34
;; size=45 bbWeight=1 PerfScore 7.50
-G_M43673_IG40:
+G_M43673_IG32:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je SHORT G_M43673_IG45
+ je SHORT G_M43673_IG37
;; size=15 bbWeight=1 PerfScore 4.25
-G_M43673_IG41:
+G_M43673_IG33:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.Task`1[ubyte[]]:s_defaultResultTask
mov r14, gword ptr [rdi]
;; size=13 bbWeight=1 PerfScore 2.25
-G_M43673_IG42:
+G_M43673_IG34:
mov rdi, r15
mov rsi, r14
call CORINFO_HELP_CHECKED_ASSIGN_REF
;; size=11 bbWeight=1 PerfScore 1.50
-G_M43673_IG43:
+G_M43673_IG35:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M43673_IG44:
- add rsp, 88
+G_M43673_IG36:
+ add rsp, 72
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M43673_IG45:
+G_M43673_IG37:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[ubyte[]]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M43673_IG41
+ jmp SHORT G_M43673_IG33
;; size=24 bbWeight=0 PerfScore 0.00
-G_M43673_IG46:
+G_M43673_IG38:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
mov rbp, qword ptr [rdi+0x08]
mov qword ptr [rsp+0x08], rbp
- lea rbp, [rbp+0x80]
- ;; size=30 bbWeight=1 PerfScore 9.75
-G_M43673_IG47:
+ lea rbp, [rbp+0x70]
+ ;; size=27 bbWeight=1 PerfScore 9.75
+G_M43673_IG39:
cmp dword ptr [rbp-0x2C], 0
- jge SHORT G_M43673_IG48
- mov r15, bword ptr [rbp-0x50]
+ jge SHORT G_M43673_IG40
+ mov r15, bword ptr [rbp-0x48]
mov rdi, gword ptr [r15+0x08]
test rdi, rdi
- je SHORT G_M43673_IG48
+ je SHORT G_M43673_IG40
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.SafeHandle:Dispose():this
cmp dword ptr [rdi], edi
call [rax]System.Runtime.InteropServices.SafeHandle:Dispose():this
nop
;; size=34 bbWeight=1 PerfScore 13.75
-G_M43673_IG48:
+G_M43673_IG40:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M43673_IG49:
+G_M43673_IG41:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
mov rbp, qword ptr [rdi+0x08]
mov qword ptr [rsp+0x08], rbp
- lea rbp, [rbp+0x80]
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M43673_IG50:
+ lea rbp, [rbp+0x70]
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M43673_IG42:
mov rdx, rsi
- mov r15, bword ptr [rbp-0x50]
+ mov r15, bword ptr [rbp-0x48]
mov dword ptr [r15+0x18], -2
lea rdi, bword ptr [r15+0x28]
mov rsi, 0xD1FFAB1E ; System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[ubyte[]]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:SetException(System.Exception):this
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:SetException(System.Exception):this
- lea rax, G_M43673_IG43
+ lea rax, G_M43673_IG35
;; size=48 bbWeight=0 PerfScore 0.00
-G_M43673_IG51:
+G_M43673_IG43:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1496, prolog size 39, PerfScore 1068.75, instruction count 381, allocated bytes for code 1496 (MethodHash=66205566) for method System.IO.File+<InternalReadAllBytesAsync>d__100:MoveNext():this (FullOpts)
+; Total bytes of code 1335, prolog size 36, PerfScore 812.00, instruction count 336, allocated bytes for code 1335 (MethodHash=66205566) for method System.IO.File+<InternalReadAllBytesAsync>d__100:MoveNext():this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/3a103260e8cba00fde2c81b39c4a4b3c |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 15 minutes 45 seconds (remote runner delay: 1 minute 24 seconds).
dotnet/runtime#111023
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: