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] [MichalPetryka] Remove ldsfld quirk #699
Comments
Top method regressions76 (4.99 % of base) - Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendSym(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext,ubyte):this ; Assembly listing for method Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendSym(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext,ubyte):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 51 single block inlinees; 32 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 23, 12.50) byref -> rbx this single-def
; V01 arg1 [V01,T01] ( 23, 10.12) ref -> r15 class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.Symbol>
; V02 arg2 [V02,T02] ( 7, 4.50) ref -> r14 class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext>
-; V03 arg3 [V03,T11] ( 3, 2.50) ubyte -> rcx single-def
+; V03 arg3 [V03,T12] ( 3, 2.50) ubyte -> rcx single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc1 [V05,T43] ( 4, 2 ) ref -> rsi class-hnd exact single-def <System.String>
-; V06 loc2 [V06,T57] ( 3, 1.50) ref -> r14 class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.Semantics.TypeParameterSymbol>
+; V05 loc1 [V05,T44] ( 4, 2 ) ref -> rsi class-hnd exact single-def <System.String>
+; V06 loc2 [V06,T52] ( 3, 1.50) ref -> r14 class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.Semantics.TypeParameterSymbol>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T20] ( 3, 3 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Object[]>
-; V09 tmp2 [V09,T21] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-; V10 tmp3 [V10,T47] ( 2, 2 ) ref -> rdi class-hnd "spilling qmarkNull" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
-; V11 tmp4 [V11,T22] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V12 tmp5 [V12,T23] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Syntax.Name>
-; V13 tmp6 [V13,T05] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V14 tmp7 [V14,T58] ( 3, 1.50) ref -> r13 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V15 tmp8 [V15,T65] ( 3, 1.50) int -> r12 "Inline stloc first use temp"
-; V16 tmp9 [V16,T24] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+; V08 tmp1 [V08,T21] ( 3, 3 ) ref -> r15 class-hnd exact single-def "dup spill" <System.Object[]>
+; V09 tmp2 [V09,T22] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+; V10 tmp3 [V10,T48] ( 2, 2 ) ref -> rdi class-hnd "spilling qmarkNull" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
+; V11 tmp4 [V11,T23] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V12 tmp5 [V12,T24] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Syntax.Name>
+; V13 tmp6 [V13,T06] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V14 tmp7 [V14,T53] ( 3, 1.50) ref -> r13 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V15 tmp8 [V15,T60] ( 3, 1.50) int -> r12 "Inline stloc first use temp"
+; V16 tmp9 [V16,T25] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V18 tmp11 [V18,T12] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V19 tmp12 [V19,T25] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V18 tmp11 [V18,T13] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V19 tmp12 [V19,T26] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V22 tmp15 [V22,T26] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CSharp.RuntimeBinder.Errors.MessageID>
-; V23 tmp16 [V23,T27] ( 3, 3 ) ref -> rsi class-hnd exact single-def "dup spill" <System.String>
-; V24 tmp17 [V24,T13] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V25 tmp18 [V25,T28] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V26 tmp19 [V26,T29] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Syntax.Name>
-; V27 tmp20 [V27,T06] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V28 tmp21 [V28,T59] ( 3, 1.50) ref -> rbx class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V29 tmp22 [V29,T66] ( 3, 1.50) int -> r15 "Inline stloc first use temp"
-; V30 tmp23 [V30,T30] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+; V22 tmp15 [V22,T27] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <Microsoft.CSharp.RuntimeBinder.Errors.MessageID>
+; V23 tmp16 [V23,T28] ( 3, 3 ) ref -> rsi class-hnd exact single-def "dup spill" <System.String>
+; V24 tmp17 [V24,T14] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V25 tmp18 [V25,T29] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V26 tmp19 [V26,T30] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Syntax.Name>
+; V27 tmp20 [V27,T07] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V28 tmp21 [V28,T54] ( 3, 1.50) ref -> rbx class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V29 tmp22 [V29,T61] ( 3, 1.50) int -> r15 "Inline stloc first use temp"
+; V30 tmp23 [V30,T31] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V32 tmp25 [V32,T14] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V33 tmp26 [V33,T31] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V34 tmp27 [V34,T32] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Syntax.Name>
-; V35 tmp28 [V35,T07] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V36 tmp29 [V36,T60] ( 3, 1.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V37 tmp30 [V37,T67] ( 3, 1.50) int -> rbx "Inline stloc first use temp"
-; V38 tmp31 [V38,T33] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+; V32 tmp25 [V32,T15] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V33 tmp26 [V33,T32] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V34 tmp27 [V34,T33] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Syntax.Name>
+; V35 tmp28 [V35,T08] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V36 tmp29 [V36,T55] ( 3, 1.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V37 tmp30 [V37,T62] ( 3, 1.50) int -> r13 "Inline stloc first use temp"
+; V38 tmp31 [V38,T34] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
;* V39 tmp32 [V39 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V40 tmp33 [V40,T15] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V41 tmp34 [V41,T34] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V40 tmp33 [V40,T16] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V41 tmp34 [V41,T35] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
;* V42 tmp35 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
; V43 tmp36 [V43,T03] ( 6, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V44 tmp37 [V44,T68] ( 3, 1.50) int -> r15 "Inline stloc first use temp"
-; V45 tmp38 [V45,T61] ( 3, 1.50) ref -> r13 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V44 tmp37 [V44,T63] ( 3, 1.50) int -> r15 "Inline stloc first use temp"
+; V45 tmp38 [V45,T56] ( 3, 1.50) ref -> r13 class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V46 tmp39 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.StringBuilder>
-; V47 tmp40 [V47,T08] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V48 tmp41 [V48,T69] ( 3, 1.50) int -> rax "Inline stloc first use temp"
-; V49 tmp42 [V49,T62] ( 3, 1.50) ref -> r13 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V50 tmp43 [V50,T48] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Globalization.CultureInfo>
+; V47 tmp40 [V47,T09] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V48 tmp41 [V48,T64] ( 3, 1.50) int -> rax "Inline stloc first use temp"
+; V49 tmp42 [V49,T57] ( 3, 1.50) ref -> r13 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+;* V50 tmp43 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureInfo>
;* V51 tmp44 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.Object]>
;* V52 tmp45 [V52 ] ( 0, 0 ) ref -> zero-ref
;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Object]>
-; V54 tmp47 [V54,T16] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V55 tmp48 [V55,T35] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V56 tmp49 [V56,T36] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Syntax.Name>
-; V57 tmp50 [V57,T09] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V58 tmp51 [V58,T63] ( 3, 1.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V59 tmp52 [V59,T70] ( 3, 1.50) int -> rbx "Inline stloc first use temp"
-; V60 tmp53 [V60,T37] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+; V54 tmp47 [V54,T17] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V55 tmp48 [V55,T36] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V56 tmp49 [V56,T37] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Syntax.Name>
+; V57 tmp50 [V57,T10] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V58 tmp51 [V58,T58] ( 3, 1.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V59 tmp52 [V59,T65] ( 3, 1.50) int -> rbx "Inline stloc first use temp"
+; V60 tmp53 [V60,T38] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
;* V61 tmp54 [V61 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V62 tmp55 [V62,T17] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V63 tmp56 [V63,T38] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V64 tmp57 [V64,T39] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Syntax.Name>
-; V65 tmp58 [V65,T10] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
-; V66 tmp59 [V66,T64] ( 3, 1.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V67 tmp60 [V67,T71] ( 3, 1.50) int -> rbx "Inline stloc first use temp"
-; V68 tmp61 [V68,T40] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+; V62 tmp55 [V62,T18] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V63 tmp56 [V63,T39] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V64 tmp57 [V64,T40] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Syntax.Name>
+; V65 tmp58 [V65,T11] ( 5, 5 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V66 tmp59 [V66,T59] ( 3, 1.50) ref -> r15 class-hnd single-def "Inline stloc first use temp" <ushort[]>
+; V67 tmp60 [V67,T66] ( 3, 1.50) int -> rbx "Inline stloc first use temp"
+; V68 tmp61 [V68,T41] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
;* V69 tmp62 [V69 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V70 tmp63 [V70,T18] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V71 tmp64 [V71,T41] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
+; V70 tmp63 [V70,T19] ( 4, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V71 tmp64 [V71,T42] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder>
;* V72 tmp65 [V72 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP
;* V73 tmp66 [V73 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
-; V74 tmp67 [V74,T80] ( 2, 1 ) byref -> rdx single-def "field V53._reference (fldOffset=0x0)" P-INDEP
-;* V75 tmp68 [V75,T82] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
+; V74 tmp67 [V74,T75] ( 2, 1 ) byref -> rdx single-def "field V53._reference (fldOffset=0x0)" P-INDEP
+;* V75 tmp68 [V75,T77] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
; V76 tmp69 [V76,T49] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
; V77 tmp70 [V77,T50] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V78 tmp71 [V78,T51] ( 2, 2 ) ref -> rsi single-def "arr expr"
-; V79 tmp72 [V79,T52] ( 2, 2 ) ref -> rsi single-def "arr expr"
-; V80 tmp73 [V80,T53] ( 2, 2 ) ref -> rsi single-def "arr expr"
-; V81 tmp74 [V81,T54] ( 2, 2 ) ref -> rsi single-def "arr expr"
-; V82 tmp75 [V82,T55] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V83 tmp76 [V83,T56] ( 2, 2 ) ref -> rsi single-def "arr expr"
-; V84 cse0 [V84,T19] ( 6, 3 ) int -> r13 multi-def "CSE #19: conservative"
-; V85 cse1 [V85,T72] ( 3, 1.50) int -> rax "CSE #01: conservative"
-; V86 cse2 [V86,T73] ( 3, 1.50) int -> r14 "CSE #07: conservative"
-; V87 cse3 [V87,T74] ( 3, 1.50) int -> r13 "CSE #10: conservative"
-; V88 cse4 [V88,T81] ( 2, 1 ) int -> rsi "CSE #14: conservative"
-; V89 cse5 [V89,T75] ( 3, 1.50) int -> r15 "CSE #15: conservative"
-; V90 rat0 [V90,T44] ( 3, 2 ) ref -> rsi "replacement local"
-; V91 rat1 [V91,T77] ( 3, 1 ) long -> rdi "CSE for expectedClsNode"
-; V92 rat2 [V92,T45] ( 3, 2 ) ref -> rsi "replacement local"
-; V93 rat3 [V93,T78] ( 3, 1 ) long -> rdi "CSE for expectedClsNode"
-; V94 rat4 [V94,T42] ( 4, 2.25) ref -> rsi "replacement local"
-; V95 rat5 [V95,T76] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
-; V96 rat6 [V96,T46] ( 3, 2 ) ref -> r14 "replacement local"
-; V97 rat7 [V97,T79] ( 3, 1 ) long -> rdi "CSE for expectedClsNode"
-; V98 rat8 [V98,T04] ( 3, 5.78) int -> rsi "ReplaceWithLclVar is creating a new local variable"
+; V78 tmp71 [V78,T51] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V79 cse0 [V79,T05] ( 10, 5 ) ref -> r13 multi-def "CSE #01: aggressive"
+; V80 cse1 [V80,T20] ( 6, 3 ) int -> r12 multi-def "CSE #19: conservative"
+; V81 cse2 [V81,T67] ( 3, 1.50) int -> rax "CSE #02: conservative"
+; V82 cse3 [V82,T68] ( 3, 1.50) int -> r14 "CSE #07: conservative"
+; V83 cse4 [V83,T69] ( 3, 1.50) int -> rbx "CSE #10: conservative"
+; V84 cse5 [V84,T76] ( 2, 1 ) int -> rsi "CSE #14: conservative"
+; V85 cse6 [V85,T70] ( 3, 1.50) int -> r15 "CSE #15: conservative"
+; V86 rat0 [V86,T45] ( 3, 2 ) ref -> rsi "replacement local"
+; V87 rat1 [V87,T72] ( 3, 1 ) long -> rdi "CSE for expectedClsNode"
+; V88 rat2 [V88,T46] ( 3, 2 ) ref -> rsi "replacement local"
+; V89 rat3 [V89,T73] ( 3, 1 ) long -> rdi "CSE for expectedClsNode"
+; V90 rat4 [V90,T43] ( 4, 2.25) ref -> rsi "replacement local"
+; V91 rat5 [V91,T71] ( 3, 1.25) long -> rdi "CSE for expectedClsNode"
+; V92 rat6 [V92,T47] ( 3, 2 ) ref -> r14 "replacement local"
+; V93 rat7 [V93,T74] ( 3, 1 ) long -> rdi "CSE for expectedClsNode"
+; V94 rat8 [V94,T04] ( 3, 5.78) int -> rsi "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 8
G_M48351_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
mov rbx, rdi
mov r15, rsi
mov r14, rdx
;; size=25 bbWeight=1 PerfScore 8.25
G_M48351_IG02:
mov esi, dword ptr [r15+0x28]
cmp esi, 7
ja G_M48351_IG34
;; size=13 bbWeight=1 PerfScore 3.25
G_M48351_IG03:
mov esi, esi
lea rdi, [reloc @RWD00]
mov edi, dword ptr [rdi+4*rsi]
lea rax, G_M48351_IG02
add rdi, rax
jmp rdi
;; size=24 bbWeight=0.89 PerfScore 5.33
G_M48351_IG04:
mov rsi, r15
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.Semantics.PropertySymbol
cmp qword ptr [rsi], rdi
je SHORT G_M48351_IG06
;; size=18 bbWeight=0.25 PerfScore 1.12
G_M48351_IG05:
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov rsi, rax
;; size=18 bbWeight=0.12 PerfScore 0.47
G_M48351_IG06:
mov rdi, rbx
mov rdx, r14
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendProperty(Microsoft.CSharp.RuntimeBinder.Semantics.PropertySymbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this
call [rax]Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendProperty(Microsoft.CSharp.RuntimeBinder.Semantics.PropertySymbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this
jmp G_M48351_IG34
;; size=23 bbWeight=0.50 PerfScore 2.88
G_M48351_IG07:
mov rsi, r15
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.Semantics.MethodSymbol
cmp qword ptr [rsi], rdi
jne G_M48351_IG36
;; size=22 bbWeight=0.25 PerfScore 1.12
G_M48351_IG08:
movzx rcx, cl
mov rdi, rbx
mov rdx, r14
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendMethod(Microsoft.CSharp.RuntimeBinder.Semantics.MethodSymbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext,ubyte):this
call [rax]Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendMethod(Microsoft.CSharp.RuntimeBinder.Semantics.MethodSymbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext,ubyte):this
jmp G_M48351_IG34
;; size=26 bbWeight=0.50 PerfScore 3.00
G_M48351_IG09:
mov rdx, gword ptr [r15+0x08]
mov rsi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rsi]
- cmp rdx, gword ptr [rsi+0x90]
+ mov r13, gword ptr [rsi]
+ mov esi, 121
+ cmp esi, 16
+ jbe G_M48351_IG39
+ cmp rdx, gword ptr [r13+0x90]
je SHORT G_M48351_IG10
mov rsi, gword ptr [rdx+0x08]
mov rdi, gword ptr [rbx]
cmp byte ptr [rdi], dil
test rsi, rsi
je G_M48351_IG34
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
jmp G_M48351_IG34
- ;; size=69 bbWeight=0.50 PerfScore 12.00
+ ;; size=83 bbWeight=0.50 PerfScore 12.75
G_M48351_IG10:
mov rdi, gword ptr [rbx]
mov rsi, 0xD1FFAB1E
mov r15, gword ptr [rdi+0x08]
mov ebx, dword ptr [rdi+0x18]
- lea r13d, [rbx+0x04]
- cmp dword ptr [r15+0x08], r13d
+ lea r12d, [rbx+0x04]
+ cmp dword ptr [r15+0x08], r12d
jae SHORT G_M48351_IG11
mov edx, 4
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp G_M48351_IG34
;; size=52 bbWeight=0.50 PerfScore 8.12
G_M48351_IG11:
movsxd rdx, ebx
lea rdx, bword ptr [r15+2*rdx+0x10]
mov rax, qword ptr [rsi]
mov qword ptr [rdx], rax
- mov dword ptr [rdi+0x18], r13d
+ mov dword ptr [rdi+0x18], r12d
jmp G_M48351_IG34
;; size=23 bbWeight=0.50 PerfScore 3.62
G_M48351_IG12:
mov rsi, gword ptr [r15+0x10]
mov rdi, rbx
mov rdx, r14
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendParentCore(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this
call [rax]Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendParentCore(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this
mov rdx, gword ptr [r15+0x08]
mov rsi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rsi]
- cmp rdx, gword ptr [rsi+0x90]
+ mov r13, gword ptr [rsi]
+ mov esi, 121
+ cmp esi, 16
+ jbe G_M48351_IG39
+ cmp rdx, gword ptr [r13+0x90]
je SHORT G_M48351_IG13
mov rsi, gword ptr [rdx+0x08]
mov rdi, gword ptr [rbx]
cmp byte ptr [rdi], dil
test rsi, rsi
je G_M48351_IG34
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
jmp G_M48351_IG34
- ;; size=91 bbWeight=0.50 PerfScore 14.88
+ ;; size=105 bbWeight=0.50 PerfScore 15.62
G_M48351_IG13:
mov rdi, gword ptr [rbx]
mov rsi, 0xD1FFAB1E
mov r15, gword ptr [rdi+0x08]
- mov ebx, dword ptr [rdi+0x18]
- lea r13d, [rbx+0x04]
- cmp dword ptr [r15+0x08], r13d
+ mov r13d, dword ptr [rdi+0x18]
+ lea ebx, [r13+0x04]
+ cmp dword ptr [r15+0x08], ebx
jae SHORT G_M48351_IG14
mov edx, 4
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp G_M48351_IG34
- ;; size=52 bbWeight=0.50 PerfScore 8.12
+ ;; size=53 bbWeight=0.50 PerfScore 8.12
G_M48351_IG14:
- movsxd rdx, ebx
+ movsxd rdx, r13d
lea rdx, bword ptr [r15+2*rdx+0x10]
mov rax, qword ptr [rsi]
mov qword ptr [rdx], rax
- mov dword ptr [rdi+0x18], r13d
+ mov dword ptr [rdi+0x18], ebx
jmp G_M48351_IG34
- ;; size=23 bbWeight=0.50 PerfScore 3.62
+ ;; size=22 bbWeight=0.50 PerfScore 3.62
G_M48351_IG15:
cmp gword ptr [r15+0x08], 0
je G_M48351_IG18
mov rdx, gword ptr [r15+0x08]
mov rsi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rsi]
- cmp rdx, gword ptr [rsi+0x90]
+ mov r13, gword ptr [rsi]
+ mov esi, 121
+ cmp esi, 16
+ jbe G_M48351_IG39
+ cmp rdx, gword ptr [r13+0x90]
je SHORT G_M48351_IG16
mov rsi, gword ptr [rdx+0x08]
mov rdi, gword ptr [rbx]
cmp byte ptr [rdi], dil
test rsi, rsi
je G_M48351_IG34
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
jmp G_M48351_IG34
- ;; size=80 bbWeight=0.50 PerfScore 14.00
+ ;; size=94 bbWeight=0.50 PerfScore 14.75
G_M48351_IG16:
mov rdi, gword ptr [rbx]
mov rsi, 0xD1FFAB1E
mov r15, gword ptr [rdi+0x08]
mov ebx, dword ptr [rdi+0x18]
- lea r13d, [rbx+0x04]
- cmp dword ptr [r15+0x08], r13d
+ lea r12d, [rbx+0x04]
+ cmp dword ptr [r15+0x08], r12d
jae SHORT G_M48351_IG17
mov edx, 4
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp G_M48351_IG34
;; size=52 bbWeight=0.50 PerfScore 8.12
G_M48351_IG17:
movsxd rax, ebx
lea rax, bword ptr [r15+2*rax+0x10]
mov rcx, qword ptr [rsi]
mov qword ptr [rax], rcx
- mov dword ptr [rdi+0x18], r13d
+ mov dword ptr [rdi+0x18], r12d
jmp G_M48351_IG34
;; size=23 bbWeight=0.50 PerfScore 3.62
G_M48351_IG18:
mov r14, r15
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.Semantics.TypeParameterSymbol
cmp qword ptr [r14], rdi
jne G_M48351_IG37
;; size=22 bbWeight=0.25 PerfScore 1.12
G_M48351_IG19:
cmp byte ptr [r14+0x4C], 0
je SHORT G_M48351_IG21
mov rdi, gword ptr [rbx]
mov r15d, dword ptr [rdi+0x18]
mov r13, gword ptr [rdi+0x08]
cmp dword ptr [r13+0x08], r15d
ja SHORT G_M48351_IG20
mov esi, 33
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(ushort):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(ushort):this
jmp SHORT G_M48351_IG21
;; size=43 bbWeight=0.50 PerfScore 9.75
G_M48351_IG20:
mov esi, r15d
mov word ptr [r13+2*rsi+0x10], 33
inc dword ptr [rdi+0x18]
;; size=14 bbWeight=0.50 PerfScore 2.12
G_M48351_IG21:
mov rdi, gword ptr [rbx]
mov r15d, dword ptr [rdi+0x18]
mov eax, r15d
mov r13, gword ptr [rdi+0x08]
mov esi, dword ptr [r13+0x08]
cmp esi, eax
ja SHORT G_M48351_IG22
mov esi, 33
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(ushort):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(ushort):this
jmp SHORT G_M48351_IG23
;; size=41 bbWeight=0.50 PerfScore 7.50
G_M48351_IG22:
mov esi, eax
mov word ptr [r13+2*rsi+0x10], 33
inc r15d
mov dword ptr [rdi+0x18], r15d
;; size=17 bbWeight=0.50 PerfScore 1.25
G_M48351_IG23:
mov rdi, 0xD1FFAB1E ; System.Object[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
mov r15, rax
mov rdi, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
mov edi, dword ptr [r14+0x48]
mov dword ptr [rax+0x08], edi
lea rdi, bword ptr [r15+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- mov rdx, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdx]
lea rdx, bword ptr [r15+0x10]
mov ecx, 1
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rdi, gword ptr [rdi]
mov rsi, 0xD1FFAB1E ; '{0}'
mov rax, 0xD1FFAB1E ; code for System.String:FormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.String
call [rax]System.String:FormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.String
mov rsi, rax
mov rdi, gword ptr [rbx]
cmp byte ptr [rdi], dil
test rsi, rsi
je G_M48351_IG34
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
jmp G_M48351_IG34
;; size=143 bbWeight=0.50 PerfScore 14.12
G_M48351_IG24:
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol
xor rax, rax
cmp qword ptr [r15], rdi
mov rdi, rax
cmove rdi, r15
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedTypes:GetNiceName(Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol):System.String
call [rax]Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedTypes:GetNiceName(Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol):System.String
mov rsi, rax
test rsi, rsi
jne G_M48351_IG29
mov rsi, gword ptr [r15+0x10]
mov rdi, rbx
mov rdx, r14
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendParentCore(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this
call [rax]Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendParentCore(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this
mov rdx, gword ptr [r15+0x08]
mov rsi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rsi]
- cmp rdx, gword ptr [rsi+0x90]
+ mov r13, gword ptr [rsi]
+ mov esi, 121
+ cmp esi, 16
+ jbe G_M48351_IG39
+ cmp rdx, gword ptr [r13+0x90]
je SHORT G_M48351_IG25
mov rsi, gword ptr [rdx+0x08]
mov rdi, gword ptr [rbx]
cmp byte ptr [rdi], dil
test rsi, rsi
je SHORT G_M48351_IG27
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
jmp SHORT G_M48351_IG27
- ;; size=130 bbWeight=0.50 PerfScore 19.25
+ ;; size=144 bbWeight=0.50 PerfScore 20.00
G_M48351_IG25:
mov rdi, gword ptr [rbx]
mov rsi, 0xD1FFAB1E
mov r13, gword ptr [rdi+0x08]
mov r12d, dword ptr [rdi+0x18]
lea eax, [r12+0x04]
cmp dword ptr [r13+0x08], eax
jae SHORT G_M48351_IG26
mov edx, 4
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp SHORT G_M48351_IG27
;; size=51 bbWeight=0.50 PerfScore 8.12
G_M48351_IG26:
movsxd rdx, r12d
lea rdx, bword ptr [r13+2*rdx+0x10]
mov rcx, qword ptr [rsi]
mov qword ptr [rdx], rcx
mov dword ptr [rdi+0x18], eax
;; size=17 bbWeight=0.50 PerfScore 3.12
G_M48351_IG27:
mov rsi, r15
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol
cmp qword ptr [rsi], rdi
jne G_M48351_IG38
;; size=22 bbWeight=0.25 PerfScore 1.12
G_M48351_IG28:
mov rsi, gword ptr [rsi+0x78]
mov rdi, rbx
mov rdx, r14
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendTypeParameters(Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this
call [rax]Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendTypeParameters(Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this
jmp G_M48351_IG34
;; size=27 bbWeight=0.50 PerfScore 3.88
G_M48351_IG29:
mov rdi, gword ptr [rbx]
cmp byte ptr [rdi], dil
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
jmp G_M48351_IG34
;; size=30 bbWeight=0.50 PerfScore 6.25
G_M48351_IG30:
mov rsi, 0xD1FFAB1E ; const ptr
cmp r15, gword ptr [rsi]
je G_M48351_IG33
mov rsi, gword ptr [r15+0x10]
mov rdi, rbx
xor rdx, rdx
mov rax, 0xD1FFAB1E ; code for Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendParentCore(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this
call [rax]Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendParentCore(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this
mov rdx, gword ptr [r15+0x08]
mov rsi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rsi]
- cmp rdx, gword ptr [rsi+0x90]
+ mov r13, gword ptr [rsi]
+ mov esi, 121
+ cmp esi, 16
+ jbe G_M48351_IG39
+ cmp rdx, gword ptr [r13+0x90]
je SHORT G_M48351_IG31
mov rsi, gword ptr [rdx+0x08]
mov rdi, gword ptr [rbx]
cmp byte ptr [rdi], dil
test rsi, rsi
je G_M48351_IG34
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
jmp G_M48351_IG34
- ;; size=109 bbWeight=0.50 PerfScore 17.00
+ ;; size=123 bbWeight=0.50 PerfScore 17.75
G_M48351_IG31:
mov rdi, gword ptr [rbx]
mov rsi, 0xD1FFAB1E
mov rbx, gword ptr [rdi+0x08]
mov r15d, dword ptr [rdi+0x18]
lea r14d, [r15+0x04]
cmp dword ptr [rbx+0x08], r14d
jae SHORT G_M48351_IG32
mov edx, 4
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:AppendWithExpansion(byref,int):this
call [rax]System.Text.StringBuilder:AppendWithExpansion(byref,int):this
jmp SHORT G_M48351_IG34
;; size=50 bbWeight=0.50 PerfScore 8.12
G_M48351_IG32:
movsxd rax, r15d
lea rax, bword ptr [rbx+2*rax+0x10]
mov rcx, qword ptr [rsi]
mov qword ptr [rax], rcx
mov dword ptr [rdi+0x18], r14d
jmp SHORT G_M48351_IG34
;; size=20 bbWeight=0.50 PerfScore 3.62
G_M48351_IG33:
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.Errors.MessageID
call CORINFO_HELP_NEWSFAST
mov dword ptr [rax+0x08], 12
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Enum:ToString():System.String:this
call [rax]System.Enum:ToString():System.String:this
mov rsi, rax
mov rdi, rsi
mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String,System.String):System.String
call [rax]System.SR:GetResourceString(System.String,System.String):System.String
mov rsi, rax
mov rdi, gword ptr [rbx]
cmp byte ptr [rdi], dil
test rsi, rsi
je SHORT G_M48351_IG34
mov edx, dword ptr [rsi+0x08]
add rsi, 12
mov rax, 0xD1FFAB1E ; code for System.Text.StringBuilder:Append(byref,int):this
call [rax]System.Text.StringBuilder:Append(byref,int):this
;; size=88 bbWeight=0.50 PerfScore 10.75
G_M48351_IG34:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M48351_IG35:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
G_M48351_IG36:
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=16 bbWeight=0 PerfScore 0.00
G_M48351_IG37:
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=16 bbWeight=0 PerfScore 0.00
G_M48351_IG38:
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=16 bbWeight=0 PerfScore 0.00
+G_M48351_IG39:
+ call CORINFO_HELP_RNGCHKFAIL
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
RWD00 dd G_M48351_IG30 - G_M48351_IG02
dd G_M48351_IG24 - G_M48351_IG02
dd G_M48351_IG15 - G_M48351_IG02
dd G_M48351_IG12 - G_M48351_IG02
dd G_M48351_IG09 - G_M48351_IG02
dd G_M48351_IG07 - G_M48351_IG02
dd G_M48351_IG04 - G_M48351_IG02
dd G_M48351_IG34 - G_M48351_IG02
-; Total bytes of code 1522, prolog size 16, PerfScore 223.18, instruction count 350, allocated bytes for code 1522 (MethodHash=9e6a4320) for method Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendSym(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext,ubyte):this (FullOpts)
+; Total bytes of code 1598, prolog size 16, PerfScore 226.93, instruction count 367, allocated bytes for code 1598 (MethodHash=9e6a4320) for method Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendSym(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext,ubyte):this (FullOpts)
; ============================================================ 62 (15.16 % of base) - System.Net.Mime.MimePart:set_TransferEncoding(int):this ; Assembly listing for method System.Net.Mime.MimePart:set_TransferEncoding(int):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 6, 4 ) ref -> rdi this class-hnd single-def <System.Net.Mime.MimePart>
; V01 arg1 [V01,T00] ( 7, 4.50) int -> rbx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T14] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" <System.Net.Mime.TransferEncoding>
-; V04 tmp2 [V04,T16] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impImportAndPushBox" <System.String>
-; V05 tmp3 [V05,T15] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.NotSupportedException>
+; V03 tmp1 [V03,T07] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" <System.Net.Mime.TransferEncoding>
+; V04 tmp2 [V04,T09] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impImportAndPushBox" <System.String>
+; V05 tmp3 [V05,T08] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.NotSupportedException>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Specialized.NameValueCollection>
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Specialized.NameValueCollection>
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Specialized.NameValueCollection>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Specialized.NameValueCollection>
;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
-; V14 tmp12 [V14,T17] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V15 tmp13 [V15,T06] ( 2, 2 ) ref -> rdi single-def "arr expr"
-; V16 tmp14 [V16,T02] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V17 tmp15 [V17,T07] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V18 tmp16 [V18,T08] ( 2, 2 ) ref -> rdi single-def "arr expr"
-; V19 tmp17 [V19,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V20 tmp18 [V20,T09] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V21 tmp19 [V21,T10] ( 2, 2 ) ref -> rdi single-def "arr expr"
-; V22 tmp20 [V22,T04] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V23 tmp21 [V23,T11] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V24 tmp22 [V24,T12] ( 2, 2 ) ref -> rdi single-def "arr expr"
-; V25 tmp23 [V25,T05] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V26 tmp24 [V26,T13] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V14 tmp12 [V14,T10] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V15 tmp13 [V15,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V16 tmp14 [V16,T04] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V17 tmp15 [V17,T05] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V18 tmp16 [V18,T06] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V19 cse0 [V19,T02] ( 8, 4 ) ref -> r15 multi-def "CSE #01: aggressive"
;
; Lcl frame size = 8
G_M56664_IG01:
push rbp
push r15
push r14
push rbx
push rax
lea rbp, [rsp+0x20]
mov ebx, esi
;; size=14 bbWeight=1 PerfScore 5.75
G_M56664_IG02:
cmp ebx, 1
je G_M56664_IG09
;; size=9 bbWeight=1 PerfScore 1.25
G_M56664_IG03:
test ebx, ebx
je G_M56664_IG07
cmp ebx, 2
je SHORT G_M56664_IG05
cmp ebx, 3
jne G_M56664_IG11
mov rax, 0xD1FFAB1E ; code for System.Net.Mime.MimeBasePart:get_Headers():System.Collections.Specialized.NameValueCollection:this
call [rax]System.Net.Mime.MimeBasePart:get_Headers():System.Collections.Specialized.NameValueCollection:this
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- mov rsi, gword ptr [rdi+0x80]
mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rsi]
+ mov esi, 33
+ cmp esi, 7
+ jbe G_M56664_IG12
+ mov rsi, gword ptr [r15+0x80]
mov rdx, 0xD1FFAB1E ; '8bit'
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x50]
- ;; size=74 bbWeight=0.50 PerfScore 7.88
+ ;; size=88 bbWeight=0.50 PerfScore 8.62
G_M56664_IG04:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
tail.jmp [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
;; size=14 bbWeight=0.50 PerfScore 2.12
G_M56664_IG05:
mov rax, 0xD1FFAB1E ; code for System.Net.Mime.MimeBasePart:get_Headers():System.Collections.Specialized.NameValueCollection:this
call [rax]System.Net.Mime.MimeBasePart:get_Headers():System.Collections.Specialized.NameValueCollection:this
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- mov rsi, gword ptr [rdi+0x80]
mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rsi]
+ mov esi, 33
+ cmp esi, 7
+ jbe G_M56664_IG12
+ mov rsi, gword ptr [r15+0x80]
mov rdx, 0xD1FFAB1E ; '7bit'
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x50]
- ;; size=52 bbWeight=0.50 PerfScore 6.00
+ ;; size=66 bbWeight=0.50 PerfScore 6.75
G_M56664_IG06:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
tail.jmp [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
;; size=14 bbWeight=0.50 PerfScore 2.12
G_M56664_IG07:
mov rax, 0xD1FFAB1E ; code for System.Net.Mime.MimeBasePart:get_Headers():System.Collections.Specialized.NameValueCollection:this
call [rax]System.Net.Mime.MimeBasePart:get_Headers():System.Collections.Specialized.NameValueCollection:this
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- mov rsi, gword ptr [rdi+0x80]
mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rsi]
+ mov esi, 33
+ cmp esi, 7
+ jbe G_M56664_IG12
+ mov rsi, gword ptr [r15+0x80]
mov rdx, 0xD1FFAB1E ; 'quoted-printable'
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x50]
- ;; size=52 bbWeight=0.50 PerfScore 6.00
+ ;; size=66 bbWeight=0.50 PerfScore 6.75
G_M56664_IG08:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
tail.jmp [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
;; size=14 bbWeight=0.50 PerfScore 2.12
G_M56664_IG09:
mov rax, 0xD1FFAB1E ; code for System.Net.Mime.MimeBasePart:get_Headers():System.Collections.Specialized.NameValueCollection:this
call [rax]System.Net.Mime.MimeBasePart:get_Headers():System.Collections.Specialized.NameValueCollection:this
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- mov rsi, gword ptr [rdi+0x80]
mov rdi, rax
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov r15, gword ptr [rsi]
+ mov esi, 33
+ cmp esi, 7
+ jbe G_M56664_IG12
+ mov rsi, gword ptr [r15+0x80]
mov rdx, 0xD1FFAB1E ; 'base64'
mov rax, qword ptr [rax]
mov rax, qword ptr [rax+0x50]
- ;; size=52 bbWeight=0.50 PerfScore 6.00
+ ;; size=66 bbWeight=0.50 PerfScore 6.75
G_M56664_IG10:
add rsp, 8
pop rbx
pop r14
pop r15
pop rbp
tail.jmp [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
;; size=14 bbWeight=0.50 PerfScore 2.12
G_M56664_IG11:
mov rdi, 0xD1FFAB1E ; System.Net.Mime.TransferEncoding
call CORINFO_HELP_NEWSFAST
mov r15, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_MimeTransferEncodingNotSupported():System.String
call [rax]System.SR:get_MimeTransferEncodingNotSupported():System.String
mov r14, rax
mov dword ptr [r15+0x08], ebx
mov rdi, 0xD1FFAB1E ; System.NotSupportedException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rsi, r15
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String
call [rax]System.SR:Format(System.String,System.Object):System.String
mov rsi, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.NotSupportedException:.ctor(System.String):this
call [rax]System.NotSupportedException:.ctor(System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=100 bbWeight=0 PerfScore 0.00
+G_M56664_IG12:
+ call CORINFO_HELP_RNGCHKFAIL
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 409, prolog size 12, PerfScore 41.38, instruction count 96, allocated bytes for code 409 (MethodHash=ed4122a7) for method System.Net.Mime.MimePart:set_TransferEncoding(int):this (FullOpts)
+; Total bytes of code 471, prolog size 12, PerfScore 44.38, instruction count 110, allocated bytes for code 471 (MethodHash=ed4122a7) for method System.Net.Mime.MimePart:set_TransferEncoding(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/30eafc8a6d2031c108b83bf05267c771 |
Top method improvements-157 (-10.14 % of base) - System.Net.HttpListenerResponse:SendHeaders(ubyte,System.IO.MemoryStream,ubyte):this ; Assembly listing for method System.Net.HttpListenerResponse:SendHeaders(ubyte,System.IO.MemoryStream,ubyte):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 38 single block inlinees; 11 inlinees without PGO data
+; 0 inlinees with PGO data; 36 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 39, 23 ) ref -> rbx this class-hnd single-def <System.Net.HttpListenerResponse>
-; V01 arg1 [V01,T06] ( 3, 2.50) ubyte -> r13 single-def
+; V01 arg1 [V01,T05] ( 3, 2.50) ubyte -> r13 single-def
; V02 arg2 [V02,T02] ( 7, 7 ) ref -> r15 class-hnd single-def <System.IO.MemoryStream>
-; V03 arg3 [V03,T04] ( 4, 4 ) ubyte -> r14 single-def
-; V04 loc0 [V04,T09] ( 3, 3 ) ref -> r13 class-hnd exact single-def <System.Text.UTF8Encoding+UTF8EncodingSealed>
-; V05 loc1 [V05,T10] ( 3, 3 ) ref -> rax class-hnd single-def <ubyte[]>
+; V03 arg3 [V03,T03] ( 4, 4 ) ubyte -> r14 single-def
+; V04 loc0 [V04,T08] ( 3, 3 ) ref -> r13 class-hnd exact single-def <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V05 loc1 [V05,T09] ( 3, 3 ) ref -> rax class-hnd single-def <ubyte[]>
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07,T07] ( 8, 4 ) ubyte -> r13
+; V07 loc3 [V07,T06] ( 8, 4 ) ubyte -> r13
;* V08 loc4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.DateTime>
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[ubyte]>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T01] ( 9, 18 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.IO.StreamWriter>
-; V12 tmp2 [V12,T05] ( 3, 6 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+; V12 tmp2 [V12,T04] ( 3, 6 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]>
-; V14 tmp4 [V14,T35] ( 3, 1.50) int -> rax
-; V15 tmp5 [V15,T11] ( 3, 3 ) ref -> r13 class-hnd single-def "impAppendStmt" <System.Net.WebHeaderCollection>
-; V16 tmp6 [V16,T25] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
+; V14 tmp4 [V14,T30] ( 3, 1.50) int -> rax
+; V15 tmp5 [V15,T10] ( 3, 3 ) ref -> r13 class-hnd single-def "impAppendStmt" <System.Net.WebHeaderCollection>
+;* V16 tmp6 [V16 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
-; V19 tmp9 [V19,T38] ( 2, 1 ) int -> rdi
-; V20 tmp10 [V20,T12] ( 3, 3 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Net.WebHeaderCollection>
+; V19 tmp9 [V19,T33] ( 2, 1 ) int -> rdi
+; V20 tmp10 [V20,T11] ( 3, 3 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Net.WebHeaderCollection>
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.WebHeaderCollection>
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.WebHeaderCollection>
-; V23 tmp13 [V23,T26] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Globalization.CultureInfo>
+;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureInfo>
;* V24 tmp14 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime>
-;* V25 tmp15 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
-;* V26 tmp16 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerContext>
-;* V27 tmp17 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerRequest>
-;* V28 tmp18 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V29 tmp19 [V29,T13] ( 3, 3 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Version>
-; V30 tmp20 [V30,T27] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Version>
-;* V31 tmp21 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerResponse>
-; V32 tmp22 [V32,T28] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Net.HttpListenerResponse>
-; V33 tmp23 [V33,T29] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Globalization.CultureInfo>
-; V34 tmp24 [V34,T37] ( 2, 1 ) ref -> rdx class-hnd single-def "Inline return value spill temp" <System.String>
-; V35 tmp25 [V35,T33] ( 2, 2 ) long -> rdi "Inlining Arg"
-;* V36 tmp26 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V37 tmp27 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
-;* V38 tmp28 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerContext>
-;* V39 tmp29 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerContext>
-;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpConnection>
+;* V25 tmp15 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureInfo>
+;* V26 tmp16 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
+;* V27 tmp17 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerContext>
+;* V28 tmp18 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerRequest>
+;* V29 tmp19 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V30 tmp20 [V30,T12] ( 3, 3 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Version>
+; V31 tmp21 [V31,T23] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Version>
+;* V32 tmp22 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerResponse>
+; V33 tmp23 [V33,T24] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Net.HttpListenerResponse>
+;* V34 tmp24 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Globalization.CultureInfo>
+; V35 tmp25 [V35,T32] ( 2, 1 ) ref -> rdx class-hnd single-def "Inline return value spill temp" <System.String>
+; V36 tmp26 [V36,T28] ( 2, 2 ) long -> rdi "Inlining Arg"
+; V37 tmp27 [V37,T25] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Globalization.CultureInfo>
+;* V38 tmp28 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V39 tmp29 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerContext>
;* V41 tmp31 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerContext>
-;* V42 tmp32 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerRequest>
-;* V43 tmp33 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V44 tmp34 [V44,T14] ( 3, 3 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Version>
-; V45 tmp35 [V45,T30] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Version>
-; V46 tmp36 [V46,T03] ( 6, 6 ) ref -> r12 class-hnd single-def "Inlining Arg" <System.Net.WebHeaderCollection>
-; V47 tmp37 [V47,T44] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
-;* V48 tmp38 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V49 tmp39 [V49 ] ( 2, 4 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.Object>
-;* V50 tmp40 [V50 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Object]>
-;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
-;* V52 tmp42 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.IFormatProvider>
-;* V53 tmp43 [V53 ] ( 0, 0 ) ref -> zero-ref
-;* V54 tmp44 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
-;* V55 tmp45 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V56 tmp46 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
-;* V57 tmp47 [V57 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V58 tmp48 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V59 tmp49 [V59,T39] ( 2, 1 ) long -> rdi "field V08._dateData (fldOffset=0x0)" P-INDEP
-; V60 tmp50 [V60,T40] ( 1, 1 ) byref -> rax "field V09._reference (fldOffset=0x0)" P-INDEP
-; V61 tmp51 [V61,T34] ( 2, 2 ) int -> r13 "field V09._length (fldOffset=0x8)" P-INDEP
-;* V62 tmp52 [V62 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP
-;* V63 tmp53 [V63 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP
-;* V64 tmp54 [V64 ] ( 0, 0 ) long -> zero-ref "field V24._dateData (fldOffset=0x0)" P-INDEP
-;* V65 tmp55 [V65,T43] ( 0, 0 ) long -> zero-ref "field V25._ticks (fldOffset=0x0)" P-INDEP
-;* V66 tmp56 [V66,T41] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP
-;* V67 tmp57 [V67,T42] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
+;* V42 tmp32 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpConnection>
+;* V43 tmp33 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerContext>
+;* V44 tmp34 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.HttpListenerRequest>
+;* V45 tmp35 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V46 tmp36 [V46,T13] ( 3, 3 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Version>
+; V47 tmp37 [V47,T26] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Version>
+; V48 tmp38 [V48 ] ( 2, 4 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.Object>
+;* V49 tmp39 [V49 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Object]>
+;* V50 tmp40 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
+;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.IFormatProvider>
+;* V52 tmp42 [V52 ] ( 0, 0 ) ref -> zero-ref
+;* V53 tmp43 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
+;* V54 tmp44 [V54 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V55 tmp45 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Tasks.Task>
+;* V56 tmp46 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V57 tmp47 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V58 tmp48 [V58,T34] ( 2, 1 ) long -> rdi "field V08._dateData (fldOffset=0x0)" P-INDEP
+; V59 tmp49 [V59,T35] ( 1, 1 ) byref -> rax "field V09._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp50 [V60,T29] ( 2, 2 ) int -> r13 "field V09._length (fldOffset=0x8)" P-INDEP
+;* V61 tmp51 [V61 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP
+;* V62 tmp52 [V62 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP
+;* V63 tmp53 [V63 ] ( 0, 0 ) long -> zero-ref "field V24._dateData (fldOffset=0x0)" P-INDEP
+;* V64 tmp54 [V64,T38] ( 0, 0 ) long -> zero-ref "field V26._ticks (fldOffset=0x0)" P-INDEP
+;* V65 tmp55 [V65,T36] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+;* V66 tmp56 [V66,T37] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
+; V67 tmp57 [V67,T14] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V68 tmp58 [V68,T15] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V69 tmp59 [V69,T16] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V70 tmp60 [V70,T17] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V71 tmp61 [V71,T31] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V70 tmp60 [V70,T27] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V71 tmp61 [V71,T17] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V72 tmp62 [V72,T18] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V73 tmp63 [V73,T19] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
; V74 tmp64 [V74,T20] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V75 tmp65 [V75,T21] ( 3, 3 ) ref -> rsi single-def "arr expr"
-; V76 tmp66 [V76,T32] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V77 tmp67 [V77,T22] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-;* V78 tmp68 [V78 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V79 tmp69 [V79,T08] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V80 tmp70 [V80,T45] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V81 cse0 [V81,T24] ( 4, 2 ) int -> rdi "CSE #05: moderate"
-; V82 cse1 [V82,T36] ( 3, 1.50) int -> rdi "CSE #03: conservative"
-; V83 rat0 [V83,T23] ( 3, 3.00) int -> rax "ReplaceWithLclVar is creating a new local variable"
+;* V75 tmp65 [V75 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V76 tmp66 [V76,T07] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V77 cse0 [V77,T22] ( 4, 2 ) int -> rdi "CSE #05: moderate"
+; V78 cse1 [V78,T31] ( 3, 1.50) int -> rdi "CSE #03: conservative"
+; V79 rat0 [V79,T21] ( 3, 3.00) int -> rax "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 8
G_M40620_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
xor eax, eax
mov qword ptr [rbp-0x30], rax
mov rbx, rdi
mov r13d, esi
mov r15, rdx
mov r14d, ecx
;; size=34 bbWeight=1 PerfScore 9.75
G_M40620_IG02:
test r14b, r14b
- jne G_M40620_IG30
+ jne G_M40620_IG28
;; size=9 bbWeight=1 PerfScore 1.25
G_M40620_IG03:
mov rdi, gword ptr [rbx+0x28]
mov rsi, 0xD1FFAB1E ; 'Server'
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]System.Collections.Specialized.NameValueCollection:Get(System.String):System.String:this
test rax, rax
jne SHORT G_M40620_IG04
mov rdi, gword ptr [rbx+0x28]
mov rsi, 0xD1FFAB1E ; 'Server'
mov rdx, 0xD1FFAB1E ; 'Microsoft-NetCore/2.0'
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x50]
call [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
;; size=63 bbWeight=0.50 PerfScore 10.00
G_M40620_IG04:
mov rdi, gword ptr [rbx+0x28]
mov rsi, 0xD1FFAB1E ; 'Date'
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]System.Collections.Specialized.NameValueCollection:Get(System.String):System.String:this
test rax, rax
jne SHORT G_M40620_IG05
mov r12, gword ptr [rbx+0x28]
mov rax, 0xD1FFAB1E ; code for System.DateTime:get_UtcNow():System.DateTime
call [rax]System.DateTime:get_UtcNow():System.DateTime
mov rdi, rax
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rdx, gword ptr [rcx]
+ mov rdx, 0xD1FFAB1E ; const ptr
+ mov rdx, gword ptr [rdx]
mov rcx, 0xD1FFAB1E
mov rsi, 0xD1FFAB1E ; 'r'
mov rax, 0xD1FFAB1E ; code for System.DateTimeFormat:Format(System.DateTime,System.String,System.IFormatProvider,System.TimeSpan):System.String
call [rax]System.DateTimeFormat:Format(System.DateTime,System.String,System.IFormatProvider,System.TimeSpan):System.String
mov rdx, rax
mov rdi, r12
mov rsi, 0xD1FFAB1E ; 'Date'
mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0x50]
call [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
;; size=120 bbWeight=0.50 PerfScore 14.88
G_M40620_IG05:
cmp dword ptr [rbx+0x50], 4
jne G_M40620_IG12
mov rdi, gword ptr [rbx+0x10]
mov rdi, gword ptr [rdi+0x20]
mov r12, gword ptr [rdi+0x20]
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M40620_IG33
+ je G_M40620_IG31
;; size=41 bbWeight=0.50 PerfScore 7.12
G_M40620_IG06:
mov rdi, 0xD1FFAB1E ; data for System.Net.HttpVersion:Version10
mov rsi, gword ptr [rdi]
test r12, r12
je SHORT G_M40620_IG07
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Version:CompareTo(System.Version):int:this
call [rax]System.Version:CompareTo(System.Version):int:this
test eax, eax
jg SHORT G_M40620_IG08
;; size=37 bbWeight=0.50 PerfScore 4.12
G_M40620_IG07:
mov byte ptr [rbx+0x58], 0
jmp SHORT G_M40620_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
G_M40620_IG08:
mov dword ptr [rbx+0x50], 1
;; size=7 bbWeight=0.50 PerfScore 0.50
G_M40620_IG09:
mov rdi, gword ptr [rbx+0x10]
mov rax, 0xD1FFAB1E ; code for System.Net.HttpListenerContext:get_Response():System.Net.HttpListenerResponse:this
cmp dword ptr [rdi], edi
call [rax]System.Net.HttpListenerContext:get_Response():System.Net.HttpListenerResponse:this
mov edi, dword ptr [rax+0x54]
mov rax, 0xD1FFAB1E ; code for System.Net.HttpListenerResponse:CanSendResponseBody(int):ubyte
call [rax]System.Net.HttpListenerResponse:CanSendResponseBody(int):ubyte
test eax, eax
jne SHORT G_M40620_IG11
xor edi, edi
mov dword ptr [rbx+0x50], edi
;; size=42 bbWeight=0.50 PerfScore 8.00
G_M40620_IG10:
mov qword ptr [rbx+0x48], rdi
jmp SHORT G_M40620_IG12
;; size=6 bbWeight=0.50 PerfScore 1.50
G_M40620_IG11:
mov qword ptr [rbx+0x48], -1
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M40620_IG12:
mov edi, dword ptr [rbx+0x50]
cmp edi, 1
je G_M40620_IG14
test edi, edi
setne dil
movzx rdi, dil
movzx rax, r13b
test edi, eax
je SHORT G_M40620_IG13
mov rdi, gword ptr [rbx+0x10]
mov rax, 0xD1FFAB1E ; code for System.Net.HttpListenerContext:get_Response():System.Net.HttpListenerResponse:this
cmp dword ptr [rdi], edi
call [rax]System.Net.HttpListenerContext:get_Response():System.Net.HttpListenerResponse:this
mov edi, dword ptr [rax+0x54]
mov rax, 0xD1FFAB1E ; code for System.Net.HttpListenerResponse:CanSendResponseBody(int):ubyte
call [rax]System.Net.HttpListenerResponse:CanSendResponseBody(int):ubyte
mov edi, -1
xor edx, edx
test eax, eax
cmove edi, edx
movsxd rdi, edi
mov qword ptr [rbx+0x48], rdi
;; size=82 bbWeight=0.50 PerfScore 11.00
G_M40620_IG13:
cmp dword ptr [rbx+0x50], 0
jne SHORT G_M40620_IG14
mov r13, gword ptr [rbx+0x28]
- lea rdi, bword ptr [rbx+0x48]
+ mov rdi, qword ptr [rbx+0x48]
mov rdx, 0xD1FFAB1E ; const ptr
mov rdx, gword ptr [rdx]
- mov rdi, qword ptr [rdi]
mov rsi, 0xD1FFAB1E ; 'D'
mov rax, 0xD1FFAB1E ; code for System.Number:<FormatInt64>g__FormatInt64Slow|22_0(long,System.String,System.IFormatProvider):System.String
call [rax]System.Number:<FormatInt64>g__FormatInt64Slow|22_0(long,System.String,System.IFormatProvider):System.String
mov rdx, rax
mov rdi, r13
mov rsi, 0xD1FFAB1E ; 'Content-Length'
mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x50]
call [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
- ;; size=79 bbWeight=0.50 PerfScore 11.00
+ ;; size=76 bbWeight=0.50 PerfScore 10.75
G_M40620_IG14:
mov edi, dword ptr [rbx+0x54]
mov eax, edi
sub eax, 400
cmp eax, 14
ja SHORT G_M40620_IG16
;; size=15 bbWeight=0.50 PerfScore 1.88
G_M40620_IG15:
mov ecx, 0x6901
bt ecx, eax
jb SHORT G_M40620_IG17
;; size=10 bbWeight=0.50 PerfScore 0.87
G_M40620_IG16:
cmp edi, 500
jne SHORT G_M40620_IG18
;; size=8 bbWeight=0.50 PerfScore 0.62
G_M40620_IG17:
mov eax, 1
jmp SHORT G_M40620_IG19
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M40620_IG18:
cmp edi, 503
sete al
movzx rax, al
;; size=12 bbWeight=0.50 PerfScore 0.75
G_M40620_IG19:
movzx r13, al
test r13d, r13d
jne SHORT G_M40620_IG20
mov rdi, gword ptr [rbx+0x10]
mov rdi, gword ptr [rdi+0x20]
mov rax, 0xD1FFAB1E ; code for System.Net.HttpListenerRequest:get_KeepAlive():ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Net.HttpListenerRequest:get_KeepAlive():ubyte:this
test eax, eax
sete r13b
movzx r13, r13b
;; size=41 bbWeight=0.50 PerfScore 6.62
G_M40620_IG20:
cmp byte ptr [rbx+0x58], 0
sete dil
movzx rdi, dil
or edi, r13d
je SHORT G_M40620_IG21
mov rdi, gword ptr [rbx+0x28]
mov rsi, 0xD1FFAB1E ; 'Connection'
mov rdx, 0xD1FFAB1E ; 'close'
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x50]
call [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
mov r13d, 1
;; size=57 bbWeight=0.50 PerfScore 7.62
G_M40620_IG21:
cmp dword ptr [rbx+0x50], 1
jne SHORT G_M40620_IG22
mov rdi, gword ptr [rbx+0x28]
mov rsi, 0xD1FFAB1E ; 'Transfer-Encoding'
mov rdx, 0xD1FFAB1E ; 'chunked'
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x50]
call [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
;; size=40 bbWeight=0.50 PerfScore 6.75
G_M40620_IG22:
mov rdi, gword ptr [rbx+0x10]
mov rdi, gword ptr [rdi+0x28]
cmp dword ptr [rdi+0x90], 100
jl SHORT G_M40620_IG23
mov byte ptr [rbx+0x59], 1
test r13d, r13d
jne SHORT G_M40620_IG23
mov rdi, gword ptr [rbx+0x28]
mov rsi, 0xD1FFAB1E ; 'Connection'
mov rdx, 0xD1FFAB1E ; 'close'
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x50]
call [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
mov r13d, 1
;; size=66 bbWeight=0.50 PerfScore 10.00
G_M40620_IG23:
mov rdi, gword ptr [rbx+0x10]
mov rdi, gword ptr [rdi+0x20]
mov r12, gword ptr [rdi+0x20]
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M40620_IG34
+ je G_M40620_IG32
;; size=31 bbWeight=0.50 PerfScore 5.12
G_M40620_IG24:
mov rdi, 0xD1FFAB1E ; data for System.Net.HttpVersion:Version10
mov rsi, gword ptr [rdi]
test r12, r12
je SHORT G_M40620_IG25
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Version:CompareTo(System.Version):int:this
call [rax]System.Version:CompareTo(System.Version):int:this
test eax, eax
- jg G_M40620_IG29
- ;; size=41 bbWeight=0.50 PerfScore 4.12
+ jg SHORT G_M40620_IG27
+ ;; size=37 bbWeight=0.50 PerfScore 4.12
G_M40620_IG25:
cmp byte ptr [rbx+0x58], 0
- je SHORT G_M40620_IG28
- mov r12, gword ptr [rbx+0x28]
- cmp byte ptr [r12+0x50], 0
- jne SHORT G_M40620_IG26
- mov byte ptr [r12+0x50], 2
- ;; size=24 bbWeight=0.50 PerfScore 5.50
-G_M40620_IG26:
- cmp byte ptr [r12+0x50], 2
- jne G_M40620_IG37
- mov rdi, 0xD1FFAB1E ; global ptr
- test byte ptr [rdi], 1
- je G_M40620_IG35
- ;; size=31 bbWeight=0.50 PerfScore 4.12
-G_M40620_IG27:
- mov rsi, 0xD1FFAB1E ; data for System.Net.HttpResponseHeaderExtensions:s_names
- mov rsi, gword ptr [rsi]
- cmp dword ptr [rsi+0x08], 3
- jbe G_M40620_IG38
- mov rsi, gword ptr [rsi+0x28]
- mov rdi, r12
+ je SHORT G_M40620_IG26
+ mov rdi, gword ptr [rbx+0x28]
+ mov esi, 3
mov rdx, 0xD1FFAB1E ; 'true'
- mov rax, qword ptr [r12]
- mov rax, qword ptr [rax+0x50]
- call [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
- ;; size=51 bbWeight=0.50 PerfScore 7.88
-G_M40620_IG28:
+ mov rax, 0xD1FFAB1E ; code for System.Net.WebHeaderCollection:set_Item(int,System.String):this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Net.WebHeaderCollection:set_Item(int,System.String):this
+ ;; size=39 bbWeight=0.50 PerfScore 6.38
+G_M40620_IG26:
test r13d, r13d
- jne SHORT G_M40620_IG29
+ jne SHORT G_M40620_IG27
mov rdi, gword ptr [rbx+0x28]
mov rsi, 0xD1FFAB1E ; 'Connection'
mov rdx, 0xD1FFAB1E ; 'keep-alive'
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x50]
call [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
;; size=39 bbWeight=0.50 PerfScore 5.38
-G_M40620_IG29:
+G_M40620_IG27:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.HttpListenerResponse:ComputeCookies():this
call [rax]System.Net.HttpListenerResponse:ComputeCookies():this
;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M40620_IG30:
+G_M40620_IG28:
mov rdi, 0xD1FFAB1E ; const ptr
mov r13, gword ptr [rdi]
mov rdi, 0xD1FFAB1E ; System.IO.StreamWriter
call CORINFO_HELP_NEWSFAST
mov r12, rax
mov rdi, r12
mov rsi, r15
mov rdx, r13
mov ecx, 256
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.IO.StreamWriter:.ctor(System.IO.Stream,System.Text.Encoding,int,ubyte):this
call [rax]System.IO.StreamWriter:.ctor(System.IO.Stream,System.Text.Encoding,int,ubyte):this
mov rdi, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
mov edx, dword ptr [rbx+0x54]
mov dword ptr [rax+0x08], edx
mov gword ptr [rbp-0x30], rax
lea rdx, bword ptr [rbp-0x30]
mov ecx, 1
mov rdi, r12
mov rsi, 0xD1FFAB1E ; 'HTTP/1.1 {0} '
xor r8d, r8d
mov rax, 0xD1FFAB1E ; code for System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this
call [rax]System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this
mov rdi, gword ptr [r12+0x48]
test dword ptr [rdi+0x34], 0xD1FFAB1E
- je G_M40620_IG36
+ je G_M40620_IG33
mov rdi, r12
mov esi, 1
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.IO.StreamWriter:Flush(ubyte,ubyte):this
call [rax]System.IO.StreamWriter:Flush(ubyte,ubyte):this
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.HttpListenerResponse:get_StatusDescription():System.String:this
call [rax]System.Net.HttpListenerResponse:get_StatusDescription():System.String:this
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.Net.WebHeaderEncoding:GetBytes(System.String):ubyte[]
call [rax]System.Net.WebHeaderEncoding:GetBytes(System.String):ubyte[]
mov ecx, dword ptr [rax+0x08]
mov rdi, r15
mov rsi, rax
xor edx, edx
mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x60]
call [rax+0x30]System.IO.Stream:Write(ubyte[],int,int):this
mov rdi, r12
mov rsi, 0xD1FFAB1E ; ' '
mov rax, 0xD1FFAB1E ; code for System.IO.StreamWriter:Write(System.String):this
call [rax]System.IO.StreamWriter:Write(System.String):this
mov rdi, gword ptr [rbx+0x28]
mov rax, 0xD1FFAB1E ; code for System.Net.HttpListenerResponse:FormatHeaders(System.Net.WebHeaderCollection):System.String
call [rax]System.Net.HttpListenerResponse:FormatHeaders(System.Net.WebHeaderCollection):System.String
mov rsi, rax
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.IO.StreamWriter:Write(System.String):this
call [rax]System.IO.StreamWriter:Write(System.String):this
mov rdi, gword ptr [r12+0x48]
test dword ptr [rdi+0x34], 0xD1FFAB1E
;; size=287 bbWeight=1 PerfScore 62.75
-G_M40620_IG31:
- je G_M40620_IG36
+G_M40620_IG29:
+ je G_M40620_IG33
mov rdi, r12
mov esi, 1
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.IO.StreamWriter:Flush(ubyte,ubyte):this
call [rax]System.IO.StreamWriter:Flush(ubyte,ubyte):this
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:get_Preamble():System.ReadOnlySpan`1[ubyte]:this
call [rax]System.Text.UTF8Encoding+UTF8EncodingSealed:get_Preamble():System.ReadOnlySpan`1[ubyte]:this
mov r13d, edx
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.HttpListenerResponse:EnsureResponseStream():this
call [rax]System.Net.HttpListenerResponse:EnsureResponseStream():this
mov esi, r13d
mov rdi, r15
mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x48]
call [rax+0x18]System.IO.Stream:set_Position(long):this
test r14b, r14b
sete al
mov byte ptr [rbx+0x5B], al
;; size=89 bbWeight=1 PerfScore 22.00
-G_M40620_IG32:
+G_M40620_IG30:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M40620_IG33:
+G_M40620_IG31:
mov rdi, 0xD1FFAB1E ; System.Net.HttpVersion
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M40620_IG06
;; size=20 bbWeight=0 PerfScore 0.00
-G_M40620_IG34:
+G_M40620_IG32:
mov rdi, 0xD1FFAB1E ; System.Net.HttpVersion
call CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M40620_IG24
;; size=20 bbWeight=0 PerfScore 0.00
-G_M40620_IG35:
- mov rdi, 0xD1FFAB1E ; System.Net.HttpResponseHeaderExtensions
- call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp G_M40620_IG27
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M40620_IG36:
+G_M40620_IG33:
mov rax, 0xD1FFAB1E ; code for System.IO.StreamWriter:ThrowAsyncIOInProgress()
call [rax]System.IO.StreamWriter:ThrowAsyncIOInProgress()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-G_M40620_IG37:
- mov rdi, 0xD1FFAB1E ; System.InvalidOperationException
- call CORINFO_HELP_NEWSFAST
- mov rbx, rax
- mov rax, 0xD1FFAB1E ; code for System.SR:get_net_headers_rsp():System.String
- call [rax]System.SR:get_net_headers_rsp():System.String
- mov rsi, rax
- mov rdi, rbx
- mov rax, 0xD1FFAB1E ; code for System.InvalidOperationException:.ctor(System.String):this
- call [rax]System.InvalidOperationException:.ctor(System.String):this
- mov rdi, rbx
- call CORINFO_HELP_THROW
- int3
- ;; size=57 bbWeight=0 PerfScore 0.00
-G_M40620_IG38:
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1549, prolog size 22, PerfScore 240.25, instruction count 344, allocated bytes for code 1549 (MethodHash=8c746153) for method System.Net.HttpListenerResponse:SendHeaders(ubyte,System.IO.MemoryStream,ubyte):this (FullOpts)
+; Total bytes of code 1392, prolog size 22, PerfScore 228.87, instruction count 313, allocated bytes for code 1392 (MethodHash=8c746153) for method System.Net.HttpListenerResponse:SendHeaders(ubyte,System.IO.MemoryStream,ubyte):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/738748c112e68d46e486571ac97fcf41 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 18 minutes 41 seconds.
dotnet/runtime#108606
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: