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] Remove unsafe
modifier from Memory<T>.Span
#744
Comments
Top method regressions11 (0.65 % of base) - System.Security.Cryptography.Cose.CoseMessage+d__38:MoveNext():this ; Assembly listing for method System.Security.Cryptography.Cose.CoseMessage+<AppendToBeSignedAsync>d__38:MoveNext():this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 34 single block inlinees; 16 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 33, 45 ) byref -> [rbp-0x70] this EH-live single-def
; V01 loc0 [V01,T73] ( 2, 2 ) int -> rdi single-def
; V02 loc1 [V02,T74] ( 2, 2 ) int -> rcx single-def
;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 loc3 [V04 ] ( 12, 43 ) struct (16) [rbp-0x38] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]>
; V05 loc4 [V05 ] ( 4, 16 ) struct (16) [rbp-0x48] do-not-enreg[SBR] multireg-ret must-init 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 (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V11 tmp3 [V11,T08] ( 3, 24 ) ref -> rdi class-hnd "impAppendStmt" <System.IO.Stream>
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
;* V13 tmp5 [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 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ubyte]>
; V15 tmp7 [V15,T47] ( 2, 4 ) int -> r14 "impAppendStmt"
;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp9 [V17 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ubyte]>
;* V18 tmp10 [V18 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp11 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <System.Security.Cryptography.IncrementalHash>
;* V21 tmp13 [V21 ] ( 0, 0 ) long -> zero-ref "non-inline candidate call"
; V22 tmp14 [V22,T85] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
; V23 tmp15 [V23,T17] ( 4, 8 ) ref -> rdi class-hnd single-def "Inlining Arg" <ubyte[]>
;* V24 tmp16 [V24 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V25 tmp17 [V25,T31] ( 6, 6 ) byref -> r12 "Inline stloc first use temp"
; V26 tmp18 [V26,T34] ( 6, 6 ) int -> rax "Inline stloc first use temp"
; V27 tmp19 [V27,T18] ( 4, 8 ) byref -> r13 single-def "Inlining Arg"
; V28 tmp20 [V28,T28] ( 7, 7 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V29 tmp21 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V30 tmp22 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
;* V31 tmp23 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
;* V32 tmp24 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V33 tmp25 [V33,T57] ( 3, 3 ) long -> rdi single-def "Inline stloc first use temp"
+; V33 tmp25 [V33,T57] ( 3, 3 ) int -> rdi single-def "Inline stloc first use temp"
; V34 tmp26 [V34,T58] ( 3, 3 ) int -> rcx single-def "Inline stloc first use temp"
;* V35 tmp27 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]>
;* V36 tmp28 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
; V37 tmp29 [V37,T40] ( 2, 4 ) byref -> rax single-def "Inlining Arg"
;* V38 tmp30 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V39 tmp31 [V39,T32] ( 6, 6 ) byref -> rcx "Inline stloc first use temp"
; V40 tmp32 [V40,T35] ( 6, 6 ) int -> registers "Inline stloc first use temp"
; V41 tmp33 [V41,T19] ( 4, 8 ) byref -> [rbp-0x78] spill-single-def "Inlining Arg"
; V42 tmp34 [V42,T29] ( 7, 7 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V43 tmp35 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V44 tmp36 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
;* V45 tmp37 [V45 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
;* V46 tmp38 [V46 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V47 tmp39 [V47,T59] ( 3, 3 ) long -> rdi single-def "Inline stloc first use temp"
+; V47 tmp39 [V47,T59] ( 3, 3 ) int -> rdi single-def "Inline stloc first use temp"
; V48 tmp40 [V48,T60] ( 3, 3 ) int -> rax single-def "Inline stloc first use temp"
;* V49 tmp41 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]>
;* V50 tmp42 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
; V51 tmp43 [V51,T41] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V52 tmp44 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
; V53 tmp45 [V53,T33] ( 6, 6 ) byref -> r8 "Inline stloc first use temp"
; V54 tmp46 [V54,T36] ( 6, 6 ) int -> r9 "Inline stloc first use temp"
; V55 tmp47 [V55,T20] ( 4, 8 ) byref -> [rbp-0x80] spill-single-def "Inlining Arg"
; V56 tmp48 [V56,T30] ( 7, 7 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V57 tmp49 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V58 tmp50 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
;* V59 tmp51 [V59 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
;* V60 tmp52 [V60 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V61 tmp53 [V61,T61] ( 3, 3 ) long -> rdi single-def "Inline stloc first use temp"
+; V61 tmp53 [V61,T61] ( 3, 3 ) int -> rdi single-def "Inline stloc first use temp"
; V62 tmp54 [V62,T62] ( 3, 3 ) int -> rsi single-def "Inline stloc first use temp"
;* V63 tmp55 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]>
;* V64 tmp56 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
; V65 tmp57 [V65,T42] ( 2, 4 ) byref -> r8 single-def "Inlining Arg"
;* V66 tmp58 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V67 tmp59 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ubyte]>
; V68 tmp60 [V68,T02] ( 4, 32 ) ref -> rsi class-hnd "Inlining Arg" <ubyte[]>
; V69 tmp61 [V69 ] ( 8, 64 ) struct (16) [rbp-0x58] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
;* V70 tmp62 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V71 tmp63 [V71 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V72 tmp64 [V72 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1[int]>
;* V73 tmp65 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
;* V74 tmp66 [V74 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V75 tmp67 [V75,T13] ( 2, 16 ) short -> rsi "Inlining Arg"
;* V76 tmp68 [V76 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]>
;* V77 tmp69 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V78 tmp70 [V78,T12] ( 4, 16 ) ref -> r15 class-hnd "Inline stloc first use temp" <System.Object>
; V79 tmp71 [V79,T15] ( 3, 12 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[int]>
;* V80 tmp72 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource`1[int]>
;* V81 tmp73 [V81 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V82 tmp74 [V82 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V83 tmp75 [V83 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V84 tmp76 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
; V85 tmp77 [V85,T03] ( 5, 24 ) int -> rax "Inline return value spill temp"
; V86 tmp78 [V86,T04] ( 4, 24 ) ref -> r15 class-hnd "Inline stloc first use temp" <System.Object>
; V87 tmp79 [V87,T11] ( 5, 20 ) ref -> r14 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[int]>
;* V88 tmp80 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource`1[int]>
; V89 tmp81 [V89,T21] ( 4, 8 ) byref -> rdi single-def "Inlining Arg"
;* V90 tmp82 [V90 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
; V91 tmp83 [V91,T10] ( 10, 20 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
; V92 tmp84 [V92,T48] ( 2, 4 ) struct ( 8) r15 "Inlining Arg" <System.Threading.Tasks.VoidTaskResult>
; V93 tmp85 [V93,T14] ( 6, 12 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
;* V94 tmp86 [V94 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
; V95 tmp87 [V95,T49] ( 2, 4 ) int -> r13 "Inlining Arg"
;* V96 tmp88 [V96 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V97 tmp89 [V97 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V98 tmp90 [V98,T82] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V99 tmp91 [V99,T53] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
; V100 tmp92 [V100,T75] ( 2, 2 ) ubyte -> rdi "Inline return value spill temp"
; V101 tmp93 [V101,T39] ( 5, 5 ) int -> [rbp-0x5C] spill-single-def "Inline stloc first use temp"
; V102 tmp94 [V102,T63] ( 3, 3 ) ubyte -> rdi "Inline return value spill temp"
; V103 tmp95 [V103,T01] ( 6, 41 ) int -> [rbp-0x60] "Inline stloc first use temp"
; V104 tmp96 [V104,T09] ( 3, 24 ) int -> rax "Inline stloc first use temp"
; V105 tmp97 [V105,T54] ( 3, 3 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Threading.ManualResetEventSlim>
; V106 tmp98 [V106,T22] ( 2, 8 ) ref -> [rbp-0x48] do-not-enreg[] "field V05._obj (fldOffset=0x0)" P-DEP
; V107 tmp99 [V107,T24] ( 2, 8 ) int -> [rbp-0x40] do-not-enreg[] "field V05._result (fldOffset=0x8)" P-DEP
; V108 tmp100 [V108,T25] ( 2, 8 ) short -> [rbp-0x3C] do-not-enreg[] "field V05._token (fldOffset=0xc)" P-DEP
; V109 tmp101 [V109,T51] ( 1, 4 ) ubyte -> [rbp-0x3A] do-not-enreg[] "field V05._continueOnCapturedContext (fldOffset=0xe)" P-DEP
;* V110 tmp102 [V110 ] ( 0, 0 ) ref -> zero-ref "field V12._object (fldOffset=0x0)" P-INDEP
;* V111 tmp103 [V111 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
;* V112 tmp104 [V112 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0xc)" P-INDEP
;* V113 tmp105 [V113 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V114 tmp106 [V114 ] ( 0, 0 ) int -> zero-ref single-def "field V14._length (fldOffset=0x8)" P-INDEP
;* V115 tmp107 [V115 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp108 [V116 ] ( 0, 0 ) int -> zero-ref single-def "field V16._length (fldOffset=0x8)" P-INDEP
;* V117 tmp109 [V117 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp110 [V118 ] ( 0, 0 ) int -> zero-ref single-def "field V17._length (fldOffset=0x8)" P-INDEP
;* V119 tmp111 [V119 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V120 tmp112 [V120 ] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP
;* V121 tmp113 [V121 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V122 tmp114 [V122 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
; V123 tmp115 [V123,T55] ( 3, 3 ) byref -> rbx "field V24._reference (fldOffset=0x0)" P-INDEP
; V124 tmp116 [V124,T64] ( 3, 3 ) int -> r15 "field V24._length (fldOffset=0x8)" P-INDEP
; V125 tmp117 [V125,T66] ( 2, 2 ) byref -> r13 single-def "field V29._reference (fldOffset=0x0)" P-INDEP
; V126 tmp118 [V126,T76] ( 2, 2 ) int -> r12 single-def "field V29._length (fldOffset=0x8)" P-INDEP
;* V127 tmp119 [V127 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-DEP
;* V128 tmp120 [V128 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-DEP
; V129 tmp121 [V129,T67] ( 2, 2 ) byref -> r12 "field V32._reference (fldOffset=0x0)" P-INDEP
; V130 tmp122 [V130,T77] ( 2, 2 ) int -> rax "field V32._length (fldOffset=0x8)" P-INDEP
;* V131 tmp123 [V131 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp124 [V132 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
; V133 tmp125 [V133,T68] ( 2, 2 ) byref -> [rbp-0x88] spill-single-def "field V43._reference (fldOffset=0x0)" P-INDEP
; V134 tmp126 [V134,T78] ( 2, 2 ) int -> [rbp-0x64] spill-single-def "field V43._length (fldOffset=0x8)" P-INDEP
;* V135 tmp127 [V135 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-DEP
;* V136 tmp128 [V136 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-DEP
; V137 tmp129 [V137,T69] ( 2, 2 ) byref -> rcx "field V46._reference (fldOffset=0x0)" P-INDEP
; V138 tmp130 [V138,T79] ( 2, 2 ) int -> rsi "field V46._length (fldOffset=0x8)" P-INDEP
;* V139 tmp131 [V139 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp132 [V140 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
; V141 tmp133 [V141,T70] ( 2, 2 ) byref -> rdi single-def "field V57._reference (fldOffset=0x0)" P-INDEP
; V142 tmp134 [V142,T80] ( 2, 2 ) int -> r9 single-def "field V57._length (fldOffset=0x8)" P-INDEP
;* V143 tmp135 [V143 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-DEP
;* V144 tmp136 [V144 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-DEP
; V145 tmp137 [V145,T71] ( 2, 2 ) byref -> r8 "field V60._reference (fldOffset=0x0)" P-INDEP
; V146 tmp138 [V146,T81] ( 2, 2 ) int -> r9 "field V60._length (fldOffset=0x8)" P-INDEP
;* V147 tmp139 [V147 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP
;* V148 tmp140 [V148 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP
; V149 tmp141 [V149,T72] ( 2, 2 ) byref -> rsi single-def "field V67._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp142 [V150,T83] ( 0, 0 ) int -> zero-ref single-def "field V67._length (fldOffset=0x8)" P-INDEP
; V151 tmp143 [V151,T05] ( 4, 24 ) ref -> [rbp-0x58] do-not-enreg[] "field V69._object (fldOffset=0x0)" P-DEP
; V152 tmp144 [V152,T06] ( 4, 24 ) int -> [rbp-0x50] do-not-enreg[] "field V69._index (fldOffset=0x8)" P-DEP
; V153 tmp145 [V153,T07] ( 4, 24 ) int -> [rbp-0x4C] do-not-enreg[] "field V69._length (fldOffset=0xc)" P-DEP
; V154 tmp146 [V154,T23] ( 2, 8 ) ref -> rdi "field V70._obj (fldOffset=0x0)" P-INDEP
; V155 tmp147 [V155,T26] ( 2, 8 ) int -> rax "field V70._result (fldOffset=0x8)" P-INDEP
; V156 tmp148 [V156,T27] ( 2, 8 ) short -> rsi "field V70._token (fldOffset=0xc)" P-INDEP
;* V157 tmp149 [V157,T52] ( 0, 0 ) ubyte -> zero-ref "field V70._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
; V158 tmp150 [V158,T37] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
; V159 tmp151 [V159,T38] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
; V160 tmp152 [V160,T50] ( 2, 4 ) long -> rsi "argument with side effect"
; V161 tmp153 [V161,T43] ( 2, 4 ) ref -> rbx single-def "argument with side effect"
; V162 tmp154 [V162,T44] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
; V163 tmp155 [V163,T45] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
; V164 tmp156 [V164,T46] ( 2, 4 ) ref -> rsi "argument with side effect"
; V165 PSPSym [V165,T84] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
-; V166 cse0 [V166,T56] ( 3, 3 ) ref -> r14 "CSE #15: conservative"
-; V167 cse1 [V167,T65] ( 3, 3 ) int -> rsi "CSE #16: conservative"
-; V168 cse2 [V168,T16] ( 4, 11 ) byref -> r14 "CSE #17: moderate"
+; V166 cse0 [V166,T56] ( 3, 3 ) ref -> r14 "CSE #18: conservative"
+; V167 cse1 [V167,T65] ( 3, 3 ) int -> rsi "CSE #19: conservative"
+; V168 cse2 [V168,T16] ( 4, 11 ) byref -> r14 "CSE #20: moderate"
;
; Lcl frame size = 152
G_M15205_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 152
lea rbp, [rsp+0xC0]
xor eax, eax
mov qword ptr [rbp-0x58], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x50], ymm8
mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0x90], rsp
mov bword ptr [rbp-0x70], rdi
mov rdx, rdi
;; size=59 bbWeight=1 PerfScore 13.58
G_M15205_IG02:
mov edi, dword ptr [rdx+0x20]
;; size=3 bbWeight=1 PerfScore 2.00
G_M15205_IG03:
test edi, edi
jne SHORT G_M15205_IG06
;; size=4 bbWeight=1 PerfScore 1.25
G_M15205_IG04:
vmovdqu xmm0, xmmword ptr [rdx+0x68]
vmovdqu xmmword ptr [rbp-0x38], xmm0
;; size=10 bbWeight=1 PerfScore 5.00
G_M15205_IG05:
xor edi, edi
mov qword ptr [rdx+0x68], rdi
mov qword ptr [rdx+0x70], rdi
mov dword ptr [rdx+0x20], -1
mov rbx, rdx
jmp G_M15205_IG27
;; size=25 bbWeight=1 PerfScore 5.50
G_M15205_IG06:
mov rdi, gword ptr [rdx]
test rdi, rdi
je SHORT G_M15205_IG07
lea rbx, bword ptr [rdi+0x10]
mov r15d, dword ptr [rdi+0x08]
jmp SHORT G_M15205_IG08
;; size=18 bbWeight=1 PerfScore 7.75
G_M15205_IG07:
xor rbx, rbx
xor r15d, r15d
;; size=5 bbWeight=1 PerfScore 0.50
G_M15205_IG08:
mov r14d, dword ptr [rdx+0x24]
lea r13, bword ptr [rdx+0x30]
xor r12, r12
xor eax, eax
mov rdi, gword ptr [r13]
test rdi, rdi
je SHORT G_M15205_IG11
mov rax, qword ptr [rdi]
test dword ptr [rax], 0xD1FFAB1E
jne SHORT G_M15205_IG09
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
mov r12, rax
mov eax, edx
jmp SHORT G_M15205_IG10
;; size=50 bbWeight=1 PerfScore 21.75
G_M15205_IG09:
lea r12, bword ptr [rdi+0x10]
mov eax, dword ptr [rdi+0x08]
;; size=7 bbWeight=1 PerfScore 2.50
G_M15205_IG10:
mov edi, dword ptr [r13+0x08]
and edi, 0xD1FFAB1E
mov ecx, dword ptr [r13+0x0C]
- mov esi, ecx
- add rsi, rdi
+ mov esi, edi
+ mov r8d, ecx
+ add rsi, r8
mov eax, eax
cmp rsi, rax
ja G_M15205_IG37
add r12, rdi
mov eax, ecx
- ;; size=35 bbWeight=1 PerfScore 6.75
+ ;; size=38 bbWeight=1 PerfScore 7.00
G_M15205_IG11:
mov r13, r12
mov r12d, eax
mov rdx, bword ptr [rbp-0x70]
lea rax, bword ptr [rdx+0x40]
mov bword ptr [rbp-0x78], rax
xor rcx, rcx
xor esi, esi
mov rdi, gword ptr [rax]
test rdi, rdi
je SHORT G_M15205_IG14
mov rcx, qword ptr [rdi]
test dword ptr [rcx], 0xD1FFAB1E
jne SHORT G_M15205_IG12
mov rcx, qword ptr [rdi]
mov rcx, qword ptr [rcx+0x40]
call [rcx+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
mov rcx, rax
mov esi, edx
mov eax, esi
mov esi, eax
jmp SHORT G_M15205_IG13
;; size=62 bbWeight=1 PerfScore 22.75
G_M15205_IG12:
lea rcx, bword ptr [rdi+0x10]
mov edi, dword ptr [rdi+0x08]
mov esi, edi
;; size=9 bbWeight=1 PerfScore 2.75
G_M15205_IG13:
mov rax, bword ptr [rbp-0x78]
mov edi, dword ptr [rax+0x08]
and edi, 0xD1FFAB1E
mov eax, dword ptr [rax+0x0C]
- mov r8d, eax
- add r8, rdi
+ mov r8d, edi
+ mov r9d, eax
+ add r8, r9
mov esi, esi
cmp r8, rsi
ja G_M15205_IG37
add rcx, rdi
mov esi, eax
- ;; size=38 bbWeight=1 PerfScore 7.75
+ ;; size=41 bbWeight=1 PerfScore 8.00
G_M15205_IG14:
mov bword ptr [rbp-0x88], rcx
mov dword ptr [rbp-0x64], esi
mov rdx, bword ptr [rbp-0x70]
lea rsi, bword ptr [rdx+0x50]
mov bword ptr [rbp-0x80], rsi
xor r8, r8
xor r9d, r9d
mov rdi, gword ptr [rsi]
test rdi, rdi
je SHORT G_M15205_IG17
mov r8, qword ptr [rdi]
test dword ptr [r8], 0xD1FFAB1E
jne SHORT G_M15205_IG15
mov r8, qword ptr [rdi]
mov r8, qword ptr [r8+0x40]
call [r8+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
mov r8, rax
mov r9d, edx
jmp SHORT G_M15205_IG16
;; size=67 bbWeight=1 PerfScore 23.75
G_M15205_IG15:
lea r8, bword ptr [rdi+0x10]
mov r9d, dword ptr [rdi+0x08]
;; size=8 bbWeight=1 PerfScore 2.50
G_M15205_IG16:
mov rsi, bword ptr [rbp-0x80]
mov edi, dword ptr [rsi+0x08]
and edi, 0xD1FFAB1E
mov esi, dword ptr [rsi+0x0C]
- mov r10d, esi
- add r10, rdi
+ mov r10d, edi
+ mov r11d, esi
+ add r10, r11
mov r9d, r9d
cmp r10, r9
ja G_M15205_IG37
add r8, rdi
mov r9d, esi
- ;; size=40 bbWeight=1 PerfScore 7.75
+ ;; size=43 bbWeight=1 PerfScore 8.00
G_M15205_IG17:
mov rdi, r8
xor rsi, rsi
mov rax, bword ptr [rbp-0x88]
mov bword ptr [rsp], rax
mov ecx, dword ptr [rbp-0x64]
mov dword ptr [rsp+0x08], ecx
mov bword ptr [rsp+0x10], rdi
mov dword ptr [rsp+0x18], r9d
xor edi, edi
mov bword ptr [rsp+0x20], rsi
mov dword ptr [rsp+0x28], edi
mov rdi, rbx
mov esi, r15d
mov rcx, r13
mov r8d, r12d
mov edx, r14d
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Cose.CoseMessage:CreateToBeSigned(System.Span`1[ubyte],int,System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):int
call [rax]System.Security.Cryptography.Cose.CoseMessage:CreateToBeSigned(System.Span`1[ubyte],int,System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):int
lea ecx, [rax-0x01]
mov rdx, bword ptr [rbp-0x70]
mov rdi, gword ptr [rdx+0x08]
mov rsi, gword ptr [rdx]
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:AppendData(ubyte[],int,int):this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.IncrementalHash:AppendData(ubyte[],int,int):this
mov rdx, bword ptr [rbp-0x70]
mov rbx, gword ptr [rdx+0x08]
mov rdi, gword ptr [rdx+0x10]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x08]System.IO.Stream:get_Length():long:this
mov r15, rax
mov rdx, bword ptr [rbp-0x70]
mov rdi, gword ptr [rdx+0x10]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x10]System.IO.Stream:get_Position():long:this
mov rsi, r15
sub rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Cose.CoseHelpers:WriteByteStringLength(System.Security.Cryptography.IncrementalHash,ulong)
call [rax]System.Security.Cryptography.Cose.CoseHelpers:WriteByteStringLength(System.Security.Cryptography.IncrementalHash,ulong)
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M15205_IG35
;; size=184 bbWeight=1 PerfScore 55.75
G_M15205_IG18:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared
mov rdi, gword ptr [rdi]
mov esi, 0x1000
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
cmp dword ptr [rdi], edi
call [rax]System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
mov rdx, bword ptr [rbp-0x70]
lea rdi, bword ptr [rdx+0x18]
mov rsi, rax
call CORINFO_HELP_CHECKED_ASSIGN_REF
jmp SHORT G_M15205_IG20
;; size=50 bbWeight=1 PerfScore 13.50
G_M15205_IG19:
mov rdi, gword ptr [rbx+0x08]
mov rsi, gword ptr [rbx+0x18]
mov ecx, eax
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:AppendData(ubyte[],int,int):this
cmp dword ptr [rdi], edi
call [rax]System.Security.Cryptography.IncrementalHash:AppendData(ubyte[],int,int):this
nop
;; size=27 bbWeight=4 PerfScore 44.00
G_M15205_IG20:
mov rdx, bword ptr [rbp-0x70]
mov rdi, gword ptr [rdx+0x10]
mov rsi, gword ptr [rdx+0x18]
test rsi, rsi
jne SHORT G_M15205_IG23
xor rsi, rsi
mov gword ptr [rbp-0x58], rsi
;; size=23 bbWeight=4 PerfScore 30.00
G_M15205_IG21:
mov dword ptr [rbp-0x50], esi
;; size=3 bbWeight=4 PerfScore 4.00
G_M15205_IG22:
mov dword ptr [rbp-0x4C], esi
jmp SHORT G_M15205_IG24
;; size=5 bbWeight=4 PerfScore 12.00
G_M15205_IG23:
mov gword ptr [rbp-0x58], rsi
xor ecx, ecx
mov dword ptr [rbp-0x50], ecx
mov esi, dword ptr [rsi+0x08]
mov dword ptr [rbp-0x4C], esi
;; size=15 bbWeight=4 PerfScore 21.00
G_M15205_IG24:
mov rsi, gword ptr [rbp-0x58]
mov rdx, qword ptr [rbp-0x50]
mov rbx, bword ptr [rbp-0x70]
mov rcx, gword ptr [rbx+0x60]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x58]
call [rax+0x20]System.IO.Stream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this
mov gword ptr [rbp-0x48], rax
mov qword ptr [rbp-0x40], rdx
movsx rsi, word ptr [rbp-0x3C]
mov rdi, gword ptr [rbp-0x48]
mov eax, dword ptr [rbp-0x40]
mov gword ptr [rbp-0x38], rdi
mov dword ptr [rbp-0x30], eax
mov word ptr [rbp-0x2C], si
mov byte ptr [rbp-0x2A], 0
mov r15, gword ptr [rbp-0x38]
test r15, r15
je G_M15205_IG27
mov rsi, r15
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
jne SHORT G_M15205_IG26
mov rdi, r15
movsx rsi, word ptr [rbp-0x2C]
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_M15205_IG27
;; size=129 bbWeight=4 PerfScore 152.00
G_M15205_IG25:
xor edi, edi
mov dword ptr [rbx+0x20], edi
lea rdi, bword ptr [rbx+0x68]
lea rsi, bword ptr [rbp-0x38]
call CORINFO_HELP_ASSIGN_BYREF
movsq
lea rsi, bword ptr [rbx+0x28]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Security.Cryptography.Cose.CoseMessage+<AppendToBeSignedAsync>d__38](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Security.Cryptography.Cose.CoseMessage+<AppendToBeSignedAsync>d__38](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
mov rsi, rax
lea rdi, [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
jmp G_M15205_IG50
;; size=63 bbWeight=1 PerfScore 14.25
G_M15205_IG26:
test dword ptr [rax+0x34], 0xD1FFAB1E
je SHORT G_M15205_IG25
;; size=9 bbWeight=4 PerfScore 16.00
G_M15205_IG27:
mov r15, gword ptr [rbp-0x38]
test r15, r15
je SHORT G_M15205_IG31
;; size=9 bbWeight=8 PerfScore 18.00
G_M15205_IG28:
mov rsi, r15
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[int]
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
mov r14, rax
test r14, r14
jne SHORT G_M15205_IG29
mov rdi, r15
movsx rsi, word ptr [rbp-0x2C]
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_M15205_IG32
;; size=56 bbWeight=4 PerfScore 55.00
G_M15205_IG29:
mov edi, dword ptr [r14+0x34]
and edi, 0xD1FFAB1E
cmp edi, 0xD1FFAB1E
je SHORT G_M15205_IG30
mov rdi, r14
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_M15205_IG30:
mov eax, dword ptr [r14+0x38]
jmp SHORT G_M15205_IG32
;; size=6 bbWeight=4 PerfScore 16.00
G_M15205_IG31:
mov eax, dword ptr [rbp-0x30]
;; size=3 bbWeight=4 PerfScore 4.00
G_M15205_IG32:
test eax, eax
jg G_M15205_IG19
;; size=8 bbWeight=8 PerfScore 10.00
G_M15205_IG33:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je SHORT G_M15205_IG36
;; size=15 bbWeight=1 PerfScore 4.25
G_M15205_IG34:
mov rdi, 0xD1FFAB1E ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared
mov rdi, gword ptr [rdi]
mov rsi, gword ptr [rbx+0x18]
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this
jmp SHORT G_M15205_IG38
;; size=38 bbWeight=1 PerfScore 12.75
G_M15205_IG35:
mov rdi, 0xD1FFAB1E ; System.Buffers.ArrayPool`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M15205_IG18
- align [0 bytes for IG41]
- ;; size=20 bbWeight=0 PerfScore 0.00
+ align [2 bytes for IG41]
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M15205_IG36:
mov rdi, 0xD1FFAB1E ; System.Buffers.ArrayPool`1[ubyte]
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp SHORT G_M15205_IG34
;; size=17 bbWeight=0 PerfScore 0.00
G_M15205_IG37:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M15205_IG38:
mov dword ptr [rbx+0x20], -2
xor rdi, rdi
mov gword ptr [rbx+0x18], rdi
lea rdi, bword ptr [rbx+0x28]
cmp gword ptr [rdi], 0
je G_M15205_IG49
mov rbx, gword ptr [rdi]
xor r15d, r15d
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M15205_IG52
;; size=52 bbWeight=1 PerfScore 13.25
G_M15205_IG39:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TplEventSource:Log
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je SHORT G_M15205_IG40
mov rdi, rbx
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_M15205_IG40
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_M15205_IG40
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=133 bbWeight=1 PerfScore 31.00
G_M15205_IG40:
mov eax, dword ptr [rbx+0x34]
mov dword ptr [rbp-0x5C], eax
test eax, 0xD1FFAB1E
jne G_M15205_IG53
lea r14, bword ptr [rbx+0x34]
mov edi, eax
or edi, 0xD1FFAB1E
lock
cmpxchg dword ptr [r14], edi
cmp eax, dword ptr [rbp-0x5C]
je SHORT G_M15205_IG47
mov eax, dword ptr [rbx+0x34]
jmp SHORT G_M15205_IG42
;; size=44 bbWeight=1 PerfScore 30.25
G_M15205_IG41:
mov edi, eax
mov eax, edi
;; size=4 bbWeight=8 PerfScore 4.00
G_M15205_IG42:
test eax, 0xD1FFAB1E
je SHORT G_M15205_IG44
;; size=7 bbWeight=8 PerfScore 10.00
G_M15205_IG43:
xor edi, edi
jmp SHORT G_M15205_IG46
;; size=4 bbWeight=1 PerfScore 2.25
G_M15205_IG44:
mov edi, eax
or edi, 0xD1FFAB1E
mov dword ptr [rbp-0x60], eax
lock
cmpxchg dword ptr [r14], edi
mov edi, dword ptr [rbp-0x60]
cmp eax, edi
jne SHORT G_M15205_IG41
;; size=23 bbWeight=8 PerfScore 174.00
G_M15205_IG45:
mov edi, 1
;; size=5 bbWeight=1 PerfScore 0.25
G_M15205_IG46:
test edi, edi
je G_M15205_IG53
;; size=8 bbWeight=1 PerfScore 1.25
G_M15205_IG47:
mov byte ptr [rbx+0x38], r15b
mov edi, dword ptr [rbx+0x34]
or edi, 0xD1FFAB1E
xchg dword ptr [r14], edi
mov r15, gword ptr [rbx+0x28]
test r15, r15
je SHORT G_M15205_IG48
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this
call [rax]System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this
mov rdi, gword ptr [r15+0x10]
test rdi, rdi
je SHORT G_M15205_IG48
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=61 bbWeight=1 PerfScore 36.50
G_M15205_IG48:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:FinishContinuations():this
call [rax]System.Threading.Tasks.Task:FinishContinuations():this
jmp SHORT G_M15205_IG50
;; size=17 bbWeight=1 PerfScore 5.50
G_M15205_IG49:
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
;; size=18 bbWeight=1 PerfScore 3.25
G_M15205_IG50:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M15205_IG51:
add rsp, 152
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
G_M15205_IG52:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TplEventSource
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M15205_IG39
;; size=20 bbWeight=0 PerfScore 0.00
G_M15205_IG53:
mov edi, 24
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowInvalidOperationException(int)
call [rax]System.ThrowHelper:ThrowInvalidOperationException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M15205_IG54:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 56
mov rbp, qword ptr [rdi+0x30]
mov qword ptr [rsp+0x30], rbp
lea rbp, [rbp+0xC0]
;; size=30 bbWeight=0 PerfScore 0.00
G_M15205_IG55:
mov rbx, bword ptr [rbp-0x70]
mov dword ptr [rbx+0x20], -2
xor rdi, rdi
mov gword ptr [rbx+0x18], rdi
lea rdi, bword ptr [rbx+0x28]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetException(System.Exception):this
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetException(System.Exception):this
lea rax, G_M15205_IG50
;; size=40 bbWeight=0 PerfScore 0.00
G_M15205_IG56:
add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1686, prolog size 59, PerfScore 961.33, instruction count 441, allocated bytes for code 1686 (MethodHash=4294c49a) for method System.Security.Cryptography.Cose.CoseMessage+<AppendToBeSignedAsync>d__38:MoveNext():this (FullOpts)
+; Total bytes of code 1697, prolog size 59, PerfScore 962.08, instruction count 444, allocated bytes for code 1697 (MethodHash=4294c49a) for method System.Security.Cryptography.Cose.CoseMessage+<AppendToBeSignedAsync>d__38: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/f02a73b02d56c5490c4e8589522c3f86 |
Top method improvements-2 (-0.15 % of base) - System.Formats.Tar.TarHeader+d__84:MoveNext():this ; Assembly listing for method System.Formats.Tar.TarHeader+<WriteWithSeekableDataStreamAsync>d__84:MoveNext():this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 30 single block inlinees; 15 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 31, 29 ) byref -> [rbp-0x60] this EH-live single-def
; V01 loc0 [V01,T33] ( 3, 3 ) int -> rdi
; V02 loc1 [V02,T09] ( 6, 6 ) ref -> rbx class-hnd exact single-def <System.Formats.Tar.TarHeader>
; V03 loc2 [V03 ] ( 10, 10 ) struct (16) [rbp-0x30] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter>
; V04 loc3 [V04 ] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SBR] multireg-ret must-init ld-addr-op <System.Threading.Tasks.ValueTask>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable>
; V06 loc5 [V06 ] ( 10, 10 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
; V09 OutArgs [V09 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref "dup spill"
; V13 tmp4 [V13,T23] ( 2, 4 ) int -> r15 "impAppendStmt"
;* V14 tmp5 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.IO.Stream>
;* V16 tmp7 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask>
; V18 tmp9 [V18,T54] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
;* V19 tmp10 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V20 tmp11 [V20,T10] ( 6, 6 ) byref -> r13 "Inline stloc first use temp"
; V21 tmp12 [V21,T11] ( 6, 6 ) int -> rcx "Inline stloc first use temp"
; V22 tmp13 [V22,T06] ( 4, 8 ) byref -> r14 single-def "Inlining Arg"
; V23 tmp14 [V23,T08] ( 7, 7 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V24 tmp15 [V24 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
;* V26 tmp17 [V26 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
;* V27 tmp18 [V27 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V28 tmp19 [V28,T34] ( 3, 3 ) long -> rdi "Inline stloc first use temp"
+; V28 tmp19 [V28,T34] ( 3, 3 ) int -> rdi "Inline stloc first use temp"
; V29 tmp20 [V29,T35] ( 3, 3 ) int -> rsi "Inline stloc first use temp"
;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <ubyte[]>
;* V31 tmp22 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]>
; V32 tmp23 [V32,T19] ( 2, 4 ) byref -> rax single-def "Inlining Arg"
;* V33 tmp24 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V34 tmp25 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
;* V35 tmp26 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask>
;* V36 tmp27 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask>
;* V37 tmp28 [V37 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable>
;* V38 tmp29 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Object>
; V39 tmp30 [V39,T24] ( 2, 4 ) short -> rsi "Inlining Arg"
;* V40 tmp31 [V40 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter>
;* V41 tmp32 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp33 [V42,T16] ( 4, 4 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" <System.Object>
; V43 tmp34 [V43,T28] ( 3, 3 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V44 tmp35 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource>
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V46 tmp37 [V46 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V47 tmp38 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V48 tmp39 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
; V49 tmp40 [V49,T17] ( 4, 4 ) ref -> r15 class-hnd single-def "Inline stloc first use temp" <System.Object>
; V50 tmp41 [V50,T18] ( 4, 4 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V51 tmp42 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.Tasks.Sources.IValueTaskSource>
; V52 tmp43 [V52,T12] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V53 tmp44 [V53 ] ( 0, 0 ) ref -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) ref -> zero-ref single-def
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
;* V56 tmp47 [V56 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable>
;* V57 tmp48 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter>
;* V58 tmp49 [V58,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V59 tmp50 [V59,T20] ( 2, 4 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V61 tmp52 [V61 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V62 tmp53 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V63 tmp54 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
; V64 tmp55 [V64,T13] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
; V65 tmp56 [V65,T25] ( 2, 4 ) int -> rsi "Inlining Arg"
; V66 tmp57 [V66,T07] ( 4, 8 ) byref -> rdi single-def "Inlining Arg"
;* V67 tmp58 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
; V68 tmp59 [V68,T03] ( 10, 20 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
; V69 tmp60 [V69,T26] ( 2, 4 ) struct ( 8) r15 "Inlining Arg" <System.Threading.Tasks.VoidTaskResult>
; V70 tmp61 [V70,T04] ( 6, 12 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
;* V71 tmp62 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
; V72 tmp63 [V72,T27] ( 2, 4 ) int -> r13 "Inlining Arg"
;* V73 tmp64 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V74 tmp65 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V75 tmp66 [V75,T49] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V76 tmp67 [V76,T29] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
; V77 tmp68 [V77,T43] ( 2, 2 ) ubyte -> rdi "Inline return value spill temp"
; V78 tmp69 [V78,T15] ( 5, 5 ) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp"
; V79 tmp70 [V79,T36] ( 3, 3 ) ubyte -> rdi "Inline return value spill temp"
; V80 tmp71 [V80,T00] ( 6, 41 ) int -> [rbp-0x58] "Inline stloc first use temp"
; V81 tmp72 [V81,T02] ( 3, 24 ) int -> rax "Inline stloc first use temp"
; V82 tmp73 [V82,T30] ( 3, 3 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Threading.ManualResetEventSlim>
; V83 tmp74 [V83,T38] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[] "field V04._obj (fldOffset=0x0)" P-DEP
; V84 tmp75 [V84,T44] ( 2, 2 ) short -> [rbp-0x38] do-not-enreg[] "field V04._token (fldOffset=0x8)" P-DEP
; V85 tmp76 [V85,T50] ( 1, 1 ) ubyte -> [rbp-0x36] do-not-enreg[] "field V04._continueOnCapturedContext (fldOffset=0xa)" P-DEP
; V86 tmp77 [V86 ] ( 6, 6 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V06.m_task (fldOffset=0x0)" P-DEP
; V87 tmp78 [V87 ] ( 6, 6 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V06.m_options (fldOffset=0x8)" P-DEP
;* V88 tmp79 [V88 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V89 tmp80 [V89 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V90 tmp81 [V90 ] ( 0, 0 ) ref -> zero-ref "field V16._object (fldOffset=0x0)" P-INDEP
;* V91 tmp82 [V91 ] ( 0, 0 ) int -> zero-ref "field V16._index (fldOffset=0x8)" P-INDEP
;* V92 tmp83 [V92 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0xc)" P-INDEP
;* V93 tmp84 [V93 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp85 [V94 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
; V95 tmp86 [V95,T39] ( 2, 2 ) byref -> rdi single-def "field V24._reference (fldOffset=0x0)" P-INDEP
; V96 tmp87 [V96,T45] ( 2, 2 ) int -> rcx "field V24._length (fldOffset=0x8)" P-INDEP
;* V97 tmp88 [V97 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-DEP
;* V98 tmp89 [V98 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-DEP
; V99 tmp90 [V99,T40] ( 2, 2 ) byref -> r13 "field V27._reference (fldOffset=0x0)" P-INDEP
; V100 tmp91 [V100,T46] ( 2, 2 ) int -> rcx "field V27._length (fldOffset=0x8)" P-INDEP
;* V101 tmp92 [V101 ] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP
;* V102 tmp93 [V102 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V103 tmp94 [V103 ] ( 0, 0 ) ref -> zero-ref "field V34._object (fldOffset=0x0)" P-INDEP
;* V104 tmp95 [V104 ] ( 0, 0 ) int -> zero-ref "field V34._index (fldOffset=0x8)" P-INDEP
;* V105 tmp96 [V105 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0xc)" P-INDEP
; V106 tmp97 [V106,T41] ( 2, 2 ) ref -> rdi single-def "field V35._obj (fldOffset=0x0)" P-INDEP
; V107 tmp98 [V107,T47] ( 2, 2 ) short -> rsi "field V35._token (fldOffset=0x8)" P-INDEP
;* V108 tmp99 [V108,T51] ( 0, 0 ) ubyte -> zero-ref "field V35._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
;* V109 tmp100 [V109 ] ( 0, 0 ) ref -> zero-ref "field V36._obj (fldOffset=0x0)" P-INDEP
;* V110 tmp101 [V110 ] ( 0, 0 ) short -> zero-ref "field V36._token (fldOffset=0x8)" P-INDEP
;* V111 tmp102 [V111 ] ( 0, 0 ) ubyte -> zero-ref "field V36._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
; V112 tmp103 [V112,T42] ( 2, 2 ) ref -> rax single-def "field V57.m_task (fldOffset=0x0)" P-INDEP
;* V113 tmp104 [V113,T52] ( 0, 0 ) int -> zero-ref "field V57.m_options (fldOffset=0x8)" P-INDEP
; V114 tmp105 [V114,T14] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
; V115 tmp106 [V115,T21] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
; V116 tmp107 [V116,T22] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
; V117 PSPSym [V117,T53] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[V] "PSPSym"
-; V118 cse0 [V118,T31] ( 3, 3 ) ref -> r14 "CSE #11: conservative"
-; V119 cse1 [V119,T37] ( 3, 3 ) int -> rsi "CSE #12: conservative"
-; V120 cse2 [V120,T32] ( 3, 3 ) ref -> rdi "CSE #03: conservative"
-; V121 cse3 [V121,T05] ( 4, 11 ) byref -> r14 "CSE #13: aggressive"
+; V118 cse0 [V118,T31] ( 3, 3 ) ref -> r14 "CSE #12: conservative"
+; V119 cse1 [V119,T37] ( 3, 3 ) int -> rsi "CSE #13: conservative"
+; V120 cse2 [V120,T32] ( 3, 3 ) ref -> rdi "CSE #04: conservative"
+; V121 cse3 [V121,T05] ( 4, 11 ) byref -> r14 "CSE #14: aggressive"
;
; Lcl frame size = 80
G_M48137_IG01:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 80
lea rbp, [rsp+0x70]
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x50], ymm8
vmovdqa xmmword ptr [rbp-0x30], xmm8
mov qword ptr [rbp-0x68], rsp
mov bword ptr [rbp-0x60], rdi
mov rdx, rdi
;; size=43 bbWeight=1 PerfScore 12.33
G_M48137_IG02:
mov edi, dword ptr [rdx+0x10]
mov rbx, gword ptr [rdx]
;; size=6 bbWeight=1 PerfScore 4.00
G_M48137_IG03:
test edi, edi
- jne G_M48137_IG07
- ;; size=8 bbWeight=1 PerfScore 1.25
+ jne SHORT G_M48137_IG07
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M48137_IG04:
vmovdqu xmm0, xmmword ptr [rdx+0x38]
vmovdqu xmmword ptr [rbp-0x30], xmm0
;; size=10 bbWeight=1 PerfScore 5.00
G_M48137_IG05:
xor edi, edi
mov qword ptr [rdx+0x38], rdi
mov qword ptr [rdx+0x40], rdi
mov dword ptr [rdx+0x10], -1
;; size=17 bbWeight=1 PerfScore 3.25
G_M48137_IG06:
mov rdx, bword ptr [rbp-0x60]
mov r15, gword ptr [rbp-0x30]
test r15, r15
je G_M48137_IG18
mov rsi, r15
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
je G_M48137_IG17
mov edi, dword ptr [rax+0x34]
and edi, 0xD1FFAB1E
cmp edi, 0xD1FFAB1E
je G_M48137_IG18
mov rdi, rax
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)
jmp G_M48137_IG18
- align [3 bytes for IG24]
- ;; size=97 bbWeight=1 PerfScore 17.50
+ align [0 bytes for IG24]
+ ;; size=94 bbWeight=1 PerfScore 17.50
G_M48137_IG07:
cmp edi, 1
jne SHORT G_M48137_IG11
;; size=5 bbWeight=1 PerfScore 1.25
G_M48137_IG08:
vmovdqu xmm0, xmmword ptr [rdx+0x48]
vmovdqu xmmword ptr [rbp-0x50], xmm0
;; size=10 bbWeight=1 PerfScore 5.00
G_M48137_IG09:
xor edi, edi
mov qword ptr [rdx+0x48], rdi
mov qword ptr [rdx+0x50], rdi
mov dword ptr [rdx+0x10], -1
;; size=17 bbWeight=1 PerfScore 3.25
G_M48137_IG10:
mov rdi, gword ptr [rbp-0x50]
mov esi, dword ptr [rbp-0x48]
mov eax, dword ptr [rdi+0x34]
and eax, 0xD1FFAB1E
cmp eax, 0xD1FFAB1E
je G_M48137_IG21
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)
jmp G_M48137_IG21
;; size=43 bbWeight=1 PerfScore 10.75
G_M48137_IG11:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHeader:GetTotalDataBytesToWrite():long:this
call [rax]System.Formats.Tar.TarHeader:GetTotalDataBytesToWrite():long:this
mov qword ptr [rbx+0x68], rax
mov rdx, bword ptr [rbp-0x60]
mov r15d, dword ptr [rdx+0x14]
lea r14, bword ptr [rdx+0x20]
xor r13, r13
xor ecx, ecx
mov rdi, gword ptr [r14]
test rdi, rdi
je SHORT G_M48137_IG14
mov rax, qword ptr [rdi]
test dword ptr [rax], 0xD1FFAB1E
jne SHORT G_M48137_IG12
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
mov r13, rax
mov ecx, edx
jmp SHORT G_M48137_IG13
;; size=72 bbWeight=1 PerfScore 27.25
G_M48137_IG12:
lea r13, bword ptr [rdi+0x10]
mov ecx, dword ptr [rdi+0x08]
;; size=7 bbWeight=1 PerfScore 2.50
G_M48137_IG13:
mov edi, dword ptr [r14+0x08]
and edi, 0xD1FFAB1E
mov esi, dword ptr [r14+0x0C]
- mov eax, esi
- add rax, rdi
+ mov eax, edi
+ mov r8d, esi
+ add rax, r8
mov ecx, ecx
cmp rax, rcx
ja G_M48137_IG20
- add r13, rdi
+ mov ecx, edi
+ add r13, rcx
mov ecx, esi
- ;; size=35 bbWeight=1 PerfScore 6.75
+ ;; size=40 bbWeight=1 PerfScore 7.25
G_M48137_IG14:
mov rdi, r13
mov rdx, rdi
mov rdi, rbx
mov esi, r15d
mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHeader:WriteFieldsToBuffer(int,System.Span`1[ubyte]):this
call [rax]System.Formats.Tar.TarHeader:WriteFieldsToBuffer(int,System.Span`1[ubyte]):this
mov rdx, bword ptr [rbp-0x60]
mov rdi, gword ptr [rdx+0x08]
mov rsi, gword ptr [rdx+0x20]
mov rdx, qword ptr [rdx+0x28]
mov r15, bword ptr [rbp-0x60]
mov rcx, gword ptr [r15+0x30]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
call [rax]System.IO.Stream:WriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this
mov gword ptr [rbp-0x40], rax
mov qword ptr [rbp-0x38], rdx
movsx rsi, word ptr [rbp-0x38]
mov rdi, gword ptr [rbp-0x40]
mov gword ptr [rbp-0x30], rdi
mov word ptr [rbp-0x28], si
mov byte ptr [rbp-0x26], 0
mov r14, gword ptr [rbp-0x30]
test r14, r14
je G_M48137_IG06
mov rsi, r14
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
jne SHORT G_M48137_IG16
mov rdi, r14
movsx rsi, word ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Threading.Tasks.Sources.IValueTaskSource:GetStatus(short):int:this
call [r11]System.Threading.Tasks.Sources.IValueTaskSource:GetStatus(short):int:this
test eax, eax
jne G_M48137_IG06
;; size=158 bbWeight=1 PerfScore 45.25
G_M48137_IG15:
xor edi, edi
mov r15, bword ptr [rbp-0x60]
mov dword ptr [r15+0x10], edi
lea rdi, bword ptr [r15+0x38]
lea rsi, bword ptr [rbp-0x30]
call CORINFO_HELP_ASSIGN_BYREF
movsq
lea rsi, bword ptr [r15+0x18]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Formats.Tar.TarHeader+<WriteWithSeekableDataStreamAsync>d__84](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Formats.Tar.TarHeader+<WriteWithSeekableDataStreamAsync>d__84](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
mov rsi, rax
lea rdi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
jmp G_M48137_IG33
;; size=68 bbWeight=1 PerfScore 15.25
G_M48137_IG16:
test dword ptr [rax+0x34], 0xD1FFAB1E
jne G_M48137_IG06
jmp SHORT G_M48137_IG15
;; size=15 bbWeight=1 PerfScore 6.00
G_M48137_IG17:
mov rdi, r15
movsx rsi, word ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Threading.Tasks.Sources.IValueTaskSource:GetResult(short):this
call [r11]System.Threading.Tasks.Sources.IValueTaskSource:GetResult(short):this
;; size=21 bbWeight=1 PerfScore 6.50
G_M48137_IG18:
mov rdx, bword ptr [rbp-0x60]
mov rdi, gword ptr [rbx+0x08]
test rdi, rdi
je G_M48137_IG21
mov rcx, gword ptr [rdx+0x30]
mov rsi, gword ptr [rdx+0x08]
mov rdx, rdi
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Formats.Tar.TarHeader:WriteDataAsync(System.IO.Stream,System.IO.Stream,System.Threading.CancellationToken):System.Threading.Tasks.Task:this
call [rax]System.Formats.Tar.TarHeader:WriteDataAsync(System.IO.Stream,System.IO.Stream,System.Threading.CancellationToken):System.Threading.Tasks.Task:this
cmp byte ptr [rax], al
mov gword ptr [rbp-0x50], rax
xor edi, edi
mov dword ptr [rbp-0x48], edi
test byte ptr [rbp-0x48], 4
jne SHORT G_M48137_IG19
mov rdi, gword ptr [rbp-0x50]
test dword ptr [rdi+0x34], 0xD1FFAB1E
jne G_M48137_IG10
;; size=77 bbWeight=1 PerfScore 25.25
G_M48137_IG19:
mov r15, bword ptr [rbp-0x60]
mov dword ptr [r15+0x10], 1
lea rdi, bword ptr [r15+0x48]
mov rsi, gword ptr [rbp-0x50]
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov esi, dword ptr [rbp-0x48]
mov dword ptr [r15+0x50], esi
lea rsi, bword ptr [r15+0x18]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Formats.Tar.TarHeader+<WriteWithSeekableDataStreamAsync>d__84](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:GetStateMachineBox[System.Formats.Tar.TarHeader+<WriteWithSeekableDataStreamAsync>d__84](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
mov rsi, rax
lea rdi, [rbp-0x50]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
jmp G_M48137_IG33
;; size=75 bbWeight=1 PerfScore 16.50
G_M48137_IG20:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M48137_IG21:
mov rdx, bword ptr [rbp-0x60]
mov dword ptr [rdx+0x10], -2
lea rdi, bword ptr [rdx+0x18]
cmp gword ptr [rdi], 0
je G_M48137_IG32
mov rbx, gword ptr [rdi]
xor r15d, r15d
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
je G_M48137_IG35
;; size=50 bbWeight=1 PerfScore 13.00
G_M48137_IG22:
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TplEventSource:Log
mov r14, gword ptr [rdi]
cmp byte ptr [r14+0x9D], 0
je SHORT G_M48137_IG23
mov rdi, rbx
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_M48137_IG23
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_M48137_IG23
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=133 bbWeight=1 PerfScore 31.00
G_M48137_IG23:
mov eax, dword ptr [rbx+0x34]
mov dword ptr [rbp-0x54], eax
test eax, 0xD1FFAB1E
jne G_M48137_IG36
lea r14, bword ptr [rbx+0x34]
mov edi, eax
or edi, 0xD1FFAB1E
lock
cmpxchg dword ptr [r14], edi
cmp eax, dword ptr [rbp-0x54]
je SHORT G_M48137_IG30
mov eax, dword ptr [rbx+0x34]
jmp SHORT G_M48137_IG25
;; size=44 bbWeight=1 PerfScore 30.25
G_M48137_IG24:
mov edi, eax
mov eax, edi
;; size=4 bbWeight=8 PerfScore 4.00
G_M48137_IG25:
test eax, 0xD1FFAB1E
je SHORT G_M48137_IG27
;; size=7 bbWeight=8 PerfScore 10.00
G_M48137_IG26:
xor edi, edi
jmp SHORT G_M48137_IG29
;; size=4 bbWeight=1 PerfScore 2.25
G_M48137_IG27:
mov edi, eax
or edi, 0xD1FFAB1E
mov dword ptr [rbp-0x58], eax
lock
cmpxchg dword ptr [r14], edi
mov edi, dword ptr [rbp-0x58]
cmp eax, edi
jne SHORT G_M48137_IG24
;; size=23 bbWeight=8 PerfScore 174.00
G_M48137_IG28:
mov edi, 1
;; size=5 bbWeight=1 PerfScore 0.25
G_M48137_IG29:
test edi, edi
je G_M48137_IG36
;; size=8 bbWeight=1 PerfScore 1.25
G_M48137_IG30:
mov byte ptr [rbx+0x38], r15b
mov edi, dword ptr [rbx+0x34]
or edi, 0xD1FFAB1E
xchg dword ptr [r14], edi
mov r15, gword ptr [rbx+0x28]
test r15, r15
je SHORT G_M48137_IG31
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this
call [rax]System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this
mov rdi, gword ptr [r15+0x10]
test rdi, rdi
je SHORT G_M48137_IG31
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=61 bbWeight=1 PerfScore 36.50
G_M48137_IG31:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:FinishContinuations():this
call [rax]System.Threading.Tasks.Task:FinishContinuations():this
jmp SHORT G_M48137_IG33
;; size=17 bbWeight=1 PerfScore 5.50
G_M48137_IG32:
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
;; size=18 bbWeight=1 PerfScore 3.25
G_M48137_IG33:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M48137_IG34:
add rsp, 80
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
G_M48137_IG35:
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TplEventSource
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M48137_IG22
;; size=20 bbWeight=0 PerfScore 0.00
G_M48137_IG36:
mov edi, 24
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowInvalidOperationException(int)
call [rax]System.ThrowHelper:ThrowInvalidOperationException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M48137_IG37:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 16
mov rbp, qword ptr [rdi+0x08]
mov qword ptr [rsp+0x08], rbp
lea rbp, [rbp+0x70]
;; size=25 bbWeight=0 PerfScore 0.00
G_M48137_IG38:
mov r15, bword ptr [rbp-0x60]
mov dword ptr [r15+0x10], -2
lea rdi, bword ptr [r15+0x18]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetException(System.Exception):this
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetException(System.Exception):this
lea rax, G_M48137_IG33
;; size=35 bbWeight=0 PerfScore 0.00
G_M48137_IG39:
add rsp, 16
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1296, prolog size 43, PerfScore 530.08, instruction count 319, allocated bytes for code 1296 (MethodHash=956e43f6) for method System.Formats.Tar.TarHeader+<WriteWithSeekableDataStreamAsync>d__84:MoveNext():this (FullOpts)
+; Total bytes of code 1294, prolog size 43, PerfScore 530.58, instruction count 321, allocated bytes for code 1298 (MethodHash=956e43f6) for method System.Formats.Tar.TarHeader+<WriteWithSeekableDataStreamAsync>d__84:MoveNext():this (FullOpts)
; ============================================================ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 18 minutes 44 seconds.
dotnet/runtime#106085
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: