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/dotnet-runtime/wip-UIntCastLengthCheck3 #702
Comments
UIntCastLengthCheck |
Top method regressions43 (2.16 % of base) - System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory:this ; Assembly listing for method System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory: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; 47 single block inlinees; 45 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 12, 7 ) ref -> rbx this class-hnd single-def <System.Text.RegularExpressions.RegexLWCGCompiler>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
; V02 arg2 [V02,T01] ( 5, 4 ) ref -> r15 class-hnd single-def <System.Text.RegularExpressions.RegexTree>
; V03 arg3 [V03,T06] ( 4, 3 ) int -> r14 single-def
; V04 arg4 [V04,T07] ( 3, 2.50) ubyte -> r13 single-def
; V05 loc0 [V05,T25] ( 4, 2 ) int -> r13
;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
;* V07 loc2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.DynamicMethod>
;* V08 loc3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.DynamicMethod>
; V09 loc4 [V09 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V10 loc5 [V10 ] ( 87, 43.50) struct (40) [rbp-0x58] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V10 loc5 [V10 ] ( 90, 45 ) struct (40) [rbp-0x58] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
; V11 OutArgs [V11 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V12 tmp1 [V12,T10] ( 4, 4 ) ref -> r12 class-hnd exact single-def "dup spill" <System.Type[]>
; V13 tmp2 [V13,T26] ( 2, 2 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.String>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
;* V16 tmp5 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
;* V17 tmp6 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Reflection.Emit.DynamicMethod>
; V18 tmp7 [V18,T23] ( 3, 3 ) ref -> rdi class-hnd single-def "dup spill" <System.Collections.Generic.List`1[System.Object]>
;* V19 tmp8 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
;* V20 tmp9 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
;* V21 tmp10 [V21 ] ( 0, 0 ) ref -> zero-ref single-def
-; V22 tmp11 [V22,T47] ( 3, 1.50) ref -> rbx
+; V22 tmp11 [V22,T50] ( 3, 1.50) ref -> rbx
; V23 tmp12 [V23,T02] ( 5, 5 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.CompiledRegexRunnerFactory>
;* V24 tmp13 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
; V25 tmp14 [V25,T03] ( 5, 5 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V26 tmp15 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V27 tmp16 [V27 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V28 tmp17 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V29 tmp18 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V30 tmp19 [V30,T14] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V31 tmp20 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V32 tmp21 [V32,T27] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V33 tmp22 [V33,T41] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V34 tmp23 [V34,T58] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V37 tmp26 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V39 tmp28 [V39,T15] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V40 tmp29 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V41 tmp30 [V41,T28] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
; V42 tmp31 [V42,T42] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V43 tmp32 [V43,T59] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V43 tmp32 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V44 tmp33 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V45 tmp34 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp35 [V46 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V47 tmp36 [V47 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V48 tmp37 [V48,T16] ( 3, 3 ) int -> rdx "Inlining Arg"
+; V48 tmp37 [V48,T16] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V49 tmp38 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V50 tmp39 [V50,T29] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
-;* V51 tmp40 [V51,T55] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V52 tmp41 [V52,T60] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V50 tmp39 [V50,T29] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V51 tmp40 [V51,T43] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V52 tmp41 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V54 tmp43 [V54 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V55 tmp44 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V57 tmp46 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.Emit.DynamicMethod>
; V58 tmp47 [V58,T30] ( 2, 2 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inlining Arg" <System.String>
; V59 tmp48 [V59,T31] ( 2, 2 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inlining Arg" <System.Type[]>
; V60 tmp49 [V60,T11] ( 4, 4 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.DynamicMethod>
;* V61 tmp50 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.DynamicMethod>
;* V62 tmp51 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
; V63 tmp52 [V63,T04] ( 5, 5 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V64 tmp53 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V65 tmp54 [V65 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V66 tmp55 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V67 tmp56 [V67 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V68 tmp57 [V68,T17] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V69 tmp58 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V70 tmp59 [V70,T32] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
-; V71 tmp60 [V71,T43] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V72 tmp61 [V72,T61] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V71 tmp60 [V71,T44] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V72 tmp61 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V73 tmp62 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V74 tmp63 [V74 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V75 tmp64 [V75 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V76 tmp65 [V76 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V77 tmp66 [V77,T18] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V78 tmp67 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V79 tmp68 [V79,T33] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
-; V80 tmp69 [V80,T44] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V81 tmp70 [V81,T62] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V80 tmp69 [V80,T45] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V81 tmp70 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V82 tmp71 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V83 tmp72 [V83 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V84 tmp73 [V84 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V85 tmp74 [V85 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V86 tmp75 [V86,T19] ( 3, 3 ) int -> rdx "Inlining Arg"
+; V86 tmp75 [V86,T19] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V87 tmp76 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V88 tmp77 [V88,T34] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
-;* V89 tmp78 [V89,T56] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V90 tmp79 [V90,T63] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V88 tmp77 [V88,T34] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V89 tmp78 [V89,T46] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V90 tmp79 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V91 tmp80 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V92 tmp81 [V92 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V93 tmp82 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V94 tmp83 [V94 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V95 tmp84 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.Emit.DynamicMethod>
; V96 tmp85 [V96,T35] ( 2, 2 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.String>
; V97 tmp86 [V97,T36] ( 2, 2 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "Inlining Arg" <System.Type[]>
; V98 tmp87 [V98,T12] ( 4, 4 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.DynamicMethod>
;* V99 tmp88 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.DynamicMethod>
;* V100 tmp89 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
; V101 tmp90 [V101,T05] ( 5, 5 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V102 tmp91 [V102 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V103 tmp92 [V103 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V104 tmp93 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V105 tmp94 [V105 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V106 tmp95 [V106,T20] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V107 tmp96 [V107 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V108 tmp97 [V108,T37] ( 2, 2 ) byref -> r12 single-def "Inlining Arg"
-; V109 tmp98 [V109,T45] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V110 tmp99 [V110,T64] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V109 tmp98 [V109,T47] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V110 tmp99 [V110 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V111 tmp100 [V111 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V112 tmp101 [V112 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V113 tmp102 [V113 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V114 tmp103 [V114 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V115 tmp104 [V115,T21] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V116 tmp105 [V116 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V117 tmp106 [V117,T38] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
-; V118 tmp107 [V118,T46] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V119 tmp108 [V119,T65] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V118 tmp107 [V118,T48] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V119 tmp108 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V120 tmp109 [V120 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V121 tmp110 [V121 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V122 tmp111 [V122 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V123 tmp112 [V123 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V124 tmp113 [V124,T22] ( 3, 3 ) int -> rdx "Inlining Arg"
+; V124 tmp113 [V124,T22] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V125 tmp114 [V125 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V126 tmp115 [V126,T39] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
-;* V127 tmp116 [V127,T57] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V128 tmp117 [V128,T66] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V126 tmp115 [V126,T39] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V127 tmp116 [V127,T49] ( 2, 2 ) int -> rsi "Inlining Arg"
+;* V128 tmp117 [V128 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V129 tmp118 [V129 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V130 tmp119 [V130 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V131 tmp120 [V131 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V132 tmp121 [V132 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V133 tmp122 [V133,T13] ( 4, 4 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.DynamicMethod>
;* V134 tmp123 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.DynamicMethod>
; V135 tmp124 [V135,T40] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Globalization.CultureInfo>
-; V136 tmp125 [V136,T48] ( 3, 1.50) byref -> rdi "field V28._reference (fldOffset=0x0)" P-INDEP
-; V137 tmp126 [V137,T52] ( 3, 1.50) int -> rsi "field V28._length (fldOffset=0x8)" P-INDEP
+; V136 tmp125 [V136,T51] ( 3, 1.50) byref -> rdi "field V28._reference (fldOffset=0x0)" P-INDEP
+; V137 tmp126 [V137,T55] ( 3, 1.50) int -> rsi "field V28._length (fldOffset=0x8)" P-INDEP
;* V138 tmp127 [V138 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V139 tmp128 [V139 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V140 tmp129 [V140 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V141 tmp130 [V141 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V142 tmp131 [V142 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V143 tmp132 [V143 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V144 tmp133 [V144 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
;* V145 tmp134 [V145 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
;* V146 tmp135 [V146 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
;* V147 tmp136 [V147 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
;* V148 tmp137 [V148 ] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
;* V149 tmp138 [V149 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
;* V150 tmp139 [V150 ] ( 0, 0 ) byref -> zero-ref "field V47._reference (fldOffset=0x0)" P-INDEP
;* V151 tmp140 [V151 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V152 tmp141 [V152 ] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP
;* V153 tmp142 [V153 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
;* V154 tmp143 [V154 ] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
;* V155 tmp144 [V155 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
-; V156 tmp145 [V156,T49] ( 3, 1.50) byref -> rdi "field V66._reference (fldOffset=0x0)" P-INDEP
-; V157 tmp146 [V157,T53] ( 3, 1.50) int -> rsi "field V66._length (fldOffset=0x8)" P-INDEP
+; V156 tmp145 [V156,T52] ( 3, 1.50) byref -> rdi "field V66._reference (fldOffset=0x0)" P-INDEP
+; V157 tmp146 [V157,T56] ( 3, 1.50) int -> rsi "field V66._length (fldOffset=0x8)" P-INDEP
;* V158 tmp147 [V158 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-INDEP
;* V159 tmp148 [V159 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
;* V160 tmp149 [V160 ] ( 0, 0 ) byref -> zero-ref single-def "field V69._reference (fldOffset=0x0)" P-INDEP
;* V161 tmp150 [V161 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP
;* V162 tmp151 [V162 ] ( 0, 0 ) byref -> zero-ref single-def "field V73._reference (fldOffset=0x0)" P-INDEP
;* V163 tmp152 [V163 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
;* V164 tmp153 [V164 ] ( 0, 0 ) byref -> zero-ref "field V76._reference (fldOffset=0x0)" P-INDEP
;* V165 tmp154 [V165 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x8)" P-INDEP
;* V166 tmp155 [V166 ] ( 0, 0 ) byref -> zero-ref single-def "field V78._reference (fldOffset=0x0)" P-INDEP
;* V167 tmp156 [V167 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
;* V168 tmp157 [V168 ] ( 0, 0 ) byref -> zero-ref single-def "field V82._reference (fldOffset=0x0)" P-INDEP
;* V169 tmp158 [V169 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
;* V170 tmp159 [V170 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
;* V171 tmp160 [V171 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
;* V172 tmp161 [V172 ] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP
;* V173 tmp162 [V173 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
;* V174 tmp163 [V174 ] ( 0, 0 ) byref -> zero-ref single-def "field V91._reference (fldOffset=0x0)" P-INDEP
;* V175 tmp164 [V175 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
-; V176 tmp165 [V176,T50] ( 3, 1.50) byref -> rdi "field V104._reference (fldOffset=0x0)" P-INDEP
-; V177 tmp166 [V177,T54] ( 3, 1.50) int -> rsi "field V104._length (fldOffset=0x8)" P-INDEP
+; V176 tmp165 [V176,T53] ( 3, 1.50) byref -> rdi "field V104._reference (fldOffset=0x0)" P-INDEP
+; V177 tmp166 [V177,T57] ( 3, 1.50) int -> rsi "field V104._length (fldOffset=0x8)" P-INDEP
;* V178 tmp167 [V178 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP
;* V179 tmp168 [V179 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
;* V180 tmp169 [V180 ] ( 0, 0 ) byref -> zero-ref single-def "field V107._reference (fldOffset=0x0)" P-INDEP
;* V181 tmp170 [V181 ] ( 0, 0 ) int -> zero-ref "field V107._length (fldOffset=0x8)" P-INDEP
;* V182 tmp171 [V182 ] ( 0, 0 ) byref -> zero-ref single-def "field V111._reference (fldOffset=0x0)" P-INDEP
;* V183 tmp172 [V183 ] ( 0, 0 ) int -> zero-ref "field V111._length (fldOffset=0x8)" P-INDEP
;* V184 tmp173 [V184 ] ( 0, 0 ) byref -> zero-ref "field V114._reference (fldOffset=0x0)" P-INDEP
;* V185 tmp174 [V185 ] ( 0, 0 ) int -> zero-ref "field V114._length (fldOffset=0x8)" P-INDEP
;* V186 tmp175 [V186 ] ( 0, 0 ) byref -> zero-ref single-def "field V116._reference (fldOffset=0x0)" P-INDEP
;* V187 tmp176 [V187 ] ( 0, 0 ) int -> zero-ref "field V116._length (fldOffset=0x8)" P-INDEP
;* V188 tmp177 [V188 ] ( 0, 0 ) byref -> zero-ref single-def "field V120._reference (fldOffset=0x0)" P-INDEP
;* V189 tmp178 [V189 ] ( 0, 0 ) int -> zero-ref "field V120._length (fldOffset=0x8)" P-INDEP
;* V190 tmp179 [V190 ] ( 0, 0 ) byref -> zero-ref "field V123._reference (fldOffset=0x0)" P-INDEP
;* V191 tmp180 [V191 ] ( 0, 0 ) int -> zero-ref "field V123._length (fldOffset=0x8)" P-INDEP
;* V192 tmp181 [V192 ] ( 0, 0 ) byref -> zero-ref single-def "field V125._reference (fldOffset=0x0)" P-INDEP
;* V193 tmp182 [V193 ] ( 0, 0 ) int -> zero-ref "field V125._length (fldOffset=0x8)" P-INDEP
;* V194 tmp183 [V194 ] ( 0, 0 ) byref -> zero-ref single-def "field V129._reference (fldOffset=0x0)" P-INDEP
;* V195 tmp184 [V195 ] ( 0, 0 ) int -> zero-ref "field V129._length (fldOffset=0x8)" P-INDEP
; V196 cse0 [V196,T24] ( 4, 2 ) ref -> r12 "CSE #08: conservative"
-; V197 cse1 [V197,T51] ( 3, 1.50) ref -> [rbp-0x98] spill-single-def "CSE #16: conservative"
+; V197 cse1 [V197,T54] ( 3, 1.50) ref -> [rbp-0x98] spill-single-def "CSE #16: conservative"
; V198 cse2 [V198,T08] ( 8, 4 ) ref -> [rbp-0xA0] multi-def "CSE #06: aggressive"
; V199 cse3 [V199,T09] ( 8, 4 ) ref -> [rbp-0xA8] multi-def "CSE #02: moderate"
;
; Lcl frame size = 168
G_M15201_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 168
lea rbp, [rsp+0xD0]
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 rbx, rdi
mov r15, rdx
mov r14d, ecx
mov r13d, r8d
;; size=57 bbWeight=1 PerfScore 12.33
G_M15201_IG02:
mov rdi, gword ptr [r15+0x08]
lea rsi, [rbp-0x30]
mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexNode:SupportsCompilation(byref):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Text.RegularExpressions.RegexNode:SupportsCompilation(byref):ubyte:this
test eax, eax
- je G_M15201_IG37
+ je G_M15201_IG40
;; size=30 bbWeight=1 PerfScore 10.00
G_M15201_IG03:
lea rdi, bword ptr [rbx+0x10]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov dword ptr [rbx+0x30], r14d
mov byte ptr [rbx+0x34], r13b
mov rdi, 0xD1FFAB1E ; static handle
mov esi, 1
mov r13d, esi
lock
xadd dword ptr [rdi], r13d
inc r13d
xor rdi, rdi
mov gword ptr [rbp-0x58], rdi
mov rdi, 0xD1FFAB1E ; const ptr
mov r12, gword ptr [rdi]
mov rdi, r12
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
mov gword ptr [rbp-0x50], rax
test rax, rax
je SHORT G_M15201_IG04
lea rdi, bword ptr [rax+0x10]
mov esi, dword ptr [rax+0x08]
jmp SHORT G_M15201_IG05
;; size=103 bbWeight=0.50 PerfScore 17.88
G_M15201_IG04:
xor rdi, rdi
xor esi, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M15201_IG05:
mov bword ptr [rbp-0x40], rdi
mov dword ptr [rbp-0x38], esi
xor edi, edi
mov dword ptr [rbp-0x48], edi
mov byte ptr [rbp-0x44], 0
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
lea rax, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x38]
sub esi, edi
cmp esi, 5
- jae SHORT G_M15201_IG06
+ jge SHORT G_M15201_IG06
lea rdi, [rbp-0x58]
mov rcx, 0xD1FFAB1E ; 'Regex'
mov gword ptr [rbp-0xA8], rcx
mov rsi, rcx
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M15201_IG07
;; size=86 bbWeight=0.50 PerfScore 9.88
G_M15201_IG06:
mov rcx, 0xD1FFAB1E ; 'Regex'
mov gword ptr [rbp-0xA8], rcx
lea rdi, bword ptr [rcx+0x0C]
mov rdx, qword ptr [rdi]
mov rsi, qword ptr [rdi+0x02]
mov qword ptr [rax], rdx
mov qword ptr [rax+0x02], rsi
mov edi, dword ptr [rbp-0x48]
add edi, 5
mov dword ptr [rbp-0x48], edi
;; size=44 bbWeight=0.50 PerfScore 5.00
G_M15201_IG07:
lea rdi, [rbp-0x58]
mov esi, r13d
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
lea rax, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x38]
sub esi, edi
cmp esi, 36
- jae SHORT G_M15201_IG08
+ jge SHORT G_M15201_IG08
lea rdi, [rbp-0x58]
mov rsi, 0xD1FFAB1E ; '_TryFindNextPossibleStartingPosition'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M15201_IG09
;; size=79 bbWeight=0.50 PerfScore 9.12
G_M15201_IG08:
mov rdi, 0xD1FFAB1E
vmovdqu ymm0, ymmword ptr [rdi]
vmovdqu ymm1, ymmword ptr [rdi+0x20]
vmovdqu xmm2, xmmword ptr [rdi+0x38]
vmovdqu ymmword ptr [rax], ymm0
vmovdqu ymmword ptr [rax+0x20], ymm1
vmovdqu xmmword ptr [rax+0x38], xmm2
mov edi, dword ptr [rbp-0x48]
add edi, 36
mov dword ptr [rbp-0x48], edi
;; size=47 bbWeight=0.50 PerfScore 11.25
G_M15201_IG09:
cmp byte ptr [rbp-0x44], 0
- je SHORT G_M15201_IG10
+ jne SHORT G_M15201_IG10
+ mov edi, dword ptr [rbp-0x48]
+ cmp edi, dword ptr [rbp-0x38]
+ ja G_M15201_IG42
+ mov rsi, bword ptr [rbp-0x40]
+ mov eax, edi
+ lea rax, bword ptr [rsi+2*rax]
+ mov esi, dword ptr [rbp-0x38]
+ sub esi, edi
+ mov rcx, 0xD1FFAB1E ; ''
+ xor edi, edi
+ cmp edi, esi
+ jle SHORT G_M15201_IG11
+ ;; size=49 bbWeight=0.50 PerfScore 5.88
+G_M15201_IG10:
lea rdi, [rbp-0x58]
- mov rax, 0xD1FFAB1E ; ''
- mov rsi, rax
+ mov rcx, 0xD1FFAB1E ; ''
+ mov rsi, rcx
mov gword ptr [rbp-0xA0], rsi
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
- jmp SHORT G_M15201_IG11
- ;; size=44 bbWeight=0.50 PerfScore 5.12
-G_M15201_IG10:
- mov edx, dword ptr [rbp-0x48]
- cmp edx, dword ptr [rbp-0x38]
- ja G_M15201_IG39
- mov rsi, bword ptr [rbp-0x40]
- lea rdi, bword ptr [rsi+2*rdx]
- mov rsi, 0xD1FFAB1E ; ''
+ jmp SHORT G_M15201_IG12
+ ;; size=38 bbWeight=0.50 PerfScore 3.62
+G_M15201_IG11:
+ mov rsi, rcx
xor edx, edx
mov gword ptr [rbp-0xA0], rsi
add rsi, 12
+ mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edi, dword ptr [rbp-0x48]
mov dword ptr [rbp-0x48], edi
- ;; size=61 bbWeight=0.50 PerfScore 6.25
-G_M15201_IG11:
+ ;; size=37 bbWeight=0.50 PerfScore 3.62
+G_M15201_IG12:
lea rdi, [rbp-0x58]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
mov gword ptr [rbp-0x60], rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rdi]
mov gword ptr [rbp-0x98], rcx
mov gword ptr [rbp-0x68], rcx
mov rdi, 0xD1FFAB1E ; System.Reflection.Emit.DynamicMethod
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x70], rax
mov rdi, 0xD1FFAB1E ; 'System.Text.RegularExpressions.CompiledRegexRunner'
mov gword ptr [rsp], rdi
xor rdi, rdi
mov gword ptr [rsp+0x08], rdi
;; size=84 bbWeight=0.50 PerfScore 6.88
-G_M15201_IG12:
+G_M15201_IG13:
mov dword ptr [rsp+0x10], edi
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M15201_IG13:
+G_M15201_IG14:
mov dword ptr [rsp+0x18], edi
mov rdi, rax
mov rsi, gword ptr [rbp-0x60]
mov r9, gword ptr [rbp-0x68]
mov edx, 22
mov ecx, 1
mov r8, 0xD1FFAB1E ; 'System.Boolean'
mov r10, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
call [r10]System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
mov rdi, gword ptr [rbp-0x70]
mov esi, 64
mov rax, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
call [rax]System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
lea rdi, bword ptr [rbx+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this
call [rax]System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this
xor rdi, rdi
mov gword ptr [rbp-0x58], rdi
mov rdi, r12
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
mov gword ptr [rbp-0x50], rax
test rax, rax
- je SHORT G_M15201_IG14
+ je SHORT G_M15201_IG15
lea rdi, bword ptr [rax+0x10]
mov esi, dword ptr [rax+0x08]
- jmp SHORT G_M15201_IG15
+ jmp SHORT G_M15201_IG16
;; size=140 bbWeight=0.50 PerfScore 14.38
-G_M15201_IG14:
+G_M15201_IG15:
xor rdi, rdi
xor esi, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M15201_IG15:
+G_M15201_IG16:
mov bword ptr [rbp-0x40], rdi
mov dword ptr [rbp-0x38], esi
xor edi, edi
mov dword ptr [rbp-0x48], edi
mov byte ptr [rbp-0x44], 0
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
lea rax, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x38]
sub esi, edi
cmp esi, 5
- jae SHORT G_M15201_IG16
+ jge SHORT G_M15201_IG17
lea rdi, [rbp-0x58]
mov rsi, gword ptr [rbp-0xA8]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15201_IG17
+ jmp SHORT G_M15201_IG18
;; size=73 bbWeight=0.50 PerfScore 9.62
-G_M15201_IG16:
+G_M15201_IG17:
mov rcx, gword ptr [rbp-0xA8]
lea rdi, bword ptr [rcx+0x0C]
mov rdx, qword ptr [rdi]
mov rsi, qword ptr [rdi+0x02]
mov qword ptr [rax], rdx
mov qword ptr [rax+0x02], rsi
mov edi, dword ptr [rbp-0x48]
add edi, 5
mov dword ptr [rbp-0x48], edi
;; size=34 bbWeight=0.50 PerfScore 4.88
-G_M15201_IG17:
+G_M15201_IG18:
lea rdi, [rbp-0x58]
mov esi, r13d
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
lea rax, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x38]
sub esi, edi
cmp esi, 26
- jae SHORT G_M15201_IG18
+ jge SHORT G_M15201_IG19
lea rdi, [rbp-0x58]
mov rsi, 0xD1FFAB1E ; '_TryMatchAtCurrentPosition'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15201_IG19
+ jmp SHORT G_M15201_IG20
;; size=79 bbWeight=0.50 PerfScore 9.12
-G_M15201_IG18:
+G_M15201_IG19:
mov rdi, 0xD1FFAB1E
vmovdqu ymm0, ymmword ptr [rdi]
vmovdqu ymm1, ymmword ptr [rdi+0x14]
vmovdqu ymmword ptr [rax], ymm0
vmovdqu ymmword ptr [rax+0x14], ymm1
mov edi, dword ptr [rbp-0x48]
add edi, 26
mov dword ptr [rbp-0x48], edi
;; size=37 bbWeight=0.50 PerfScore 8.25
-G_M15201_IG19:
+G_M15201_IG20:
cmp byte ptr [rbp-0x44], 0
- je SHORT G_M15201_IG20
+ jne SHORT G_M15201_IG21
+ mov edi, dword ptr [rbp-0x48]
+ cmp edi, dword ptr [rbp-0x38]
+ ja G_M15201_IG42
+ mov rsi, bword ptr [rbp-0x40]
+ mov eax, edi
+ lea rax, bword ptr [rsi+2*rax]
+ mov esi, dword ptr [rbp-0x38]
+ sub esi, edi
+ jns SHORT G_M15201_IG22
+ ;; size=35 bbWeight=0.50 PerfScore 5.50
+G_M15201_IG21:
lea rdi, [rbp-0x58]
mov rsi, gword ptr [rbp-0xA0]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
- jmp SHORT G_M15201_IG21
- ;; size=31 bbWeight=0.50 PerfScore 4.88
-G_M15201_IG20:
- mov edx, dword ptr [rbp-0x48]
- cmp edx, dword ptr [rbp-0x38]
- ja G_M15201_IG39
- mov rsi, bword ptr [rbp-0x40]
- lea rdi, bword ptr [rsi+2*rdx]
+ jmp SHORT G_M15201_IG23
+ ;; size=25 bbWeight=0.50 PerfScore 3.38
+G_M15201_IG22:
xor edx, edx
mov rsi, gword ptr [rbp-0xA0]
add rsi, 12
+ mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edi, dword ptr [rbp-0x48]
mov dword ptr [rbp-0x48], edi
- ;; size=51 bbWeight=0.50 PerfScore 6.12
-G_M15201_IG21:
+ ;; size=34 bbWeight=0.50 PerfScore 3.50
+G_M15201_IG23:
lea rdi, [rbp-0x58]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
mov gword ptr [rbp-0x78], rax
mov rcx, gword ptr [rbp-0x98]
mov gword ptr [rbp-0x80], rcx
mov rdi, 0xD1FFAB1E ; System.Reflection.Emit.DynamicMethod
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x88], rax
mov rdi, 0xD1FFAB1E ; 'System.Text.RegularExpressions.CompiledRegexRunner'
mov gword ptr [rsp], rdi
xor rdi, rdi
mov gword ptr [rsp+0x08], rdi
;; size=74 bbWeight=0.50 PerfScore 5.75
-G_M15201_IG22:
+G_M15201_IG24:
mov dword ptr [rsp+0x10], edi
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M15201_IG23:
+G_M15201_IG25:
mov dword ptr [rsp+0x18], edi
mov rdi, rax
mov rsi, gword ptr [rbp-0x78]
mov r9, gword ptr [rbp-0x80]
mov edx, 22
mov ecx, 1
mov r8, 0xD1FFAB1E ; 'System.Boolean'
mov r10, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
call [r10]System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
mov rdi, gword ptr [rbp-0x88]
mov esi, 64
mov rax, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
call [rax]System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
lea rdi, bword ptr [rbx+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexCompiler:EmitTryMatchAtCurrentPosition():this
call [rax]System.Text.RegularExpressions.RegexCompiler:EmitTryMatchAtCurrentPosition():this
xor rdi, rdi
mov gword ptr [rbp-0x58], rdi
mov rdi, r12
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
mov gword ptr [rbp-0x50], rax
test rax, rax
- je SHORT G_M15201_IG24
+ je SHORT G_M15201_IG26
lea rdi, bword ptr [rax+0x10]
mov esi, dword ptr [rax+0x08]
- jmp SHORT G_M15201_IG25
+ jmp SHORT G_M15201_IG27
;; size=143 bbWeight=0.50 PerfScore 14.38
-G_M15201_IG24:
+G_M15201_IG26:
xor rdi, rdi
xor esi, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M15201_IG25:
+G_M15201_IG27:
mov bword ptr [rbp-0x40], rdi
mov dword ptr [rbp-0x38], esi
xor edi, edi
mov dword ptr [rbp-0x48], edi
mov byte ptr [rbp-0x44], 0
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
lea r12, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x38]
sub esi, edi
cmp esi, 5
- jae SHORT G_M15201_IG26
+ jge SHORT G_M15201_IG28
lea rdi, [rbp-0x58]
mov rsi, gword ptr [rbp-0xA8]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15201_IG27
+ jmp SHORT G_M15201_IG29
;; size=73 bbWeight=0.50 PerfScore 9.62
-G_M15201_IG26:
+G_M15201_IG28:
mov rsi, gword ptr [rbp-0xA8]
add rsi, 12
mov rax, qword ptr [rsi]
mov rdi, qword ptr [rsi+0x02]
mov qword ptr [r12], rax
mov qword ptr [r12+0x02], rdi
mov edi, dword ptr [rbp-0x48]
add edi, 5
mov dword ptr [rbp-0x48], edi
;; size=36 bbWeight=0.50 PerfScore 4.75
-G_M15201_IG27:
+G_M15201_IG29:
lea rdi, [rbp-0x58]
mov esi, r13d
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this
mov edi, dword ptr [rbp-0x48]
cmp edi, dword ptr [rbp-0x38]
- ja G_M15201_IG39
+ ja G_M15201_IG42
mov rsi, bword ptr [rbp-0x40]
mov eax, edi
lea r13, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x38]
sub esi, edi
cmp esi, 5
- jae SHORT G_M15201_IG28
+ jge SHORT G_M15201_IG30
lea rdi, [rbp-0x58]
mov rsi, 0xD1FFAB1E ; '_Scan'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
- jmp SHORT G_M15201_IG29
+ jmp SHORT G_M15201_IG31
;; size=79 bbWeight=0.50 PerfScore 9.12
-G_M15201_IG28:
+G_M15201_IG30:
mov rdi, 0xD1FFAB1E
mov rax, qword ptr [rdi]
mov rsi, qword ptr [rdi+0x02]
mov qword ptr [r13], rax
mov qword ptr [r13+0x02], rsi
mov edi, dword ptr [rbp-0x48]
add edi, 5
mov dword ptr [rbp-0x48], edi
;; size=34 bbWeight=0.50 PerfScore 4.25
-G_M15201_IG29:
+G_M15201_IG31:
cmp byte ptr [rbp-0x44], 0
- je SHORT G_M15201_IG30
+ jne SHORT G_M15201_IG32
+ mov edi, dword ptr [rbp-0x48]
+ cmp edi, dword ptr [rbp-0x38]
+ ja G_M15201_IG42
+ mov rsi, bword ptr [rbp-0x40]
+ mov eax, edi
+ lea rax, bword ptr [rsi+2*rax]
+ mov esi, dword ptr [rbp-0x38]
+ sub esi, edi
+ jns SHORT G_M15201_IG33
+ ;; size=35 bbWeight=0.50 PerfScore 5.50
+G_M15201_IG32:
lea rdi, [rbp-0x58]
mov rsi, gword ptr [rbp-0xA0]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
- jmp SHORT G_M15201_IG31
- ;; size=31 bbWeight=0.50 PerfScore 4.88
-G_M15201_IG30:
- mov edx, dword ptr [rbp-0x48]
- cmp edx, dword ptr [rbp-0x38]
- ja G_M15201_IG39
- mov rsi, bword ptr [rbp-0x40]
- lea rdi, bword ptr [rsi+2*rdx]
+ jmp SHORT G_M15201_IG34
+ ;; size=25 bbWeight=0.50 PerfScore 3.38
+G_M15201_IG33:
xor edx, edx
mov r13, gword ptr [rbp-0xA0]
lea rsi, bword ptr [r13+0x0C]
+ mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov edi, dword ptr [rbp-0x48]
mov dword ptr [rbp-0x48], edi
- ;; size=51 bbWeight=0.50 PerfScore 6.25
-G_M15201_IG31:
+ ;; size=34 bbWeight=0.50 PerfScore 3.62
+G_M15201_IG34:
lea rdi, [rbp-0x58]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
mov r13, rax
mov rdi, 0xD1FFAB1E ; System.Type[]
mov esi, 2
call CORINFO_HELP_NEWARR_1_OBJ
mov r12, rax
mov rdi, 0xD1FFAB1E ; 'System.Text.RegularExpressions.RegexRunner'
mov gword ptr [r12+0x10], rdi
mov rdi, 0xD1FFAB1E ; 'System.ReadOnlySpan`1[System.Char]'
mov gword ptr [r12+0x18], rdi
mov rdi, 0xD1FFAB1E ; System.Reflection.Emit.DynamicMethod
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x90], rax
mov rdi, 0xD1FFAB1E ; 'System.Text.RegularExpressions.CompiledRegexRunner'
mov gword ptr [rsp], rdi
xor rdi, rdi
mov gword ptr [rsp+0x08], rdi
;; size=115 bbWeight=0.50 PerfScore 6.50
-G_M15201_IG32:
+G_M15201_IG35:
mov dword ptr [rsp+0x10], edi
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M15201_IG33:
+G_M15201_IG36:
mov dword ptr [rsp+0x18], edi
mov rdi, rax
mov rsi, r13
mov r9, r12
mov edx, 22
mov ecx, 1
xor r8, r8
mov r10, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
call [r10]System.Reflection.Emit.DynamicMethod:Init(System.String,int,int,System.Type,System.Type[],System.Type,System.Reflection.Module,ubyte,ubyte):this
mov rdi, gword ptr [rbp-0x90]
mov esi, 64
mov rax, 0xD1FFAB1E ; code for System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
call [rax]System.Reflection.Emit.DynamicMethod:GetILGenerator(int):System.Reflection.Emit.ILGenerator:this
lea rdi, bword ptr [rbx+0x08]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
mov rdi, rbx
mov esi, r14d
mov rdx, gword ptr [rbp-0x70]
mov rcx, gword ptr [rbp-0x88]
mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexCompiler:EmitScan(int,System.Reflection.MethodInfo,System.Reflection.MethodInfo):this
call [rax]System.Text.RegularExpressions.RegexCompiler:EmitScan(int,System.Reflection.MethodInfo,System.Reflection.MethodInfo):this
mov rdi, gword ptr [rbx+0x18]
test rdi, rdi
- je SHORT G_M15201_IG34
+ je SHORT G_M15201_IG37
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
call [rax]System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this
mov rbx, rax
- jmp SHORT G_M15201_IG35
+ jmp SHORT G_M15201_IG38
;; size=130 bbWeight=0.50 PerfScore 13.25
-G_M15201_IG34:
+G_M15201_IG37:
xor rbx, rbx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M15201_IG35:
+G_M15201_IG38:
mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.CompiledRegexRunnerFactory
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov r15, gword ptr [r15+0x18]
lea rdi, bword ptr [r14+0x08]
mov rsi, gword ptr [rbp-0x90]
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r14+0x10]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
lea rdi, bword ptr [r14+0x18]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
mov rax, r14
;; size=65 bbWeight=0.50 PerfScore 4.88
-G_M15201_IG36:
+G_M15201_IG39:
add rsp, 168
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M15201_IG37:
+G_M15201_IG40:
xor rax, rax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M15201_IG38:
+G_M15201_IG41:
add rsp, 168
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M15201_IG39:
+G_M15201_IG42:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1988, prolog size 45, PerfScore 241.33, instruction count 464, allocated bytes for code 1988 (MethodHash=819ac49e) for method System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory:this (FullOpts)
+; Total bytes of code 2031, prolog size 45, PerfScore 245.83, instruction count 482, allocated bytes for code 2031 (MethodHash=819ac49e) for method System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory: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/f87d2f3ba8896b2a884c09376c026c5a |
Top method improvements-9 (-1.17 % of base) - Microsoft.Extensions.Configuration.FileConfigurationProvider:ToString():System.String:this ; Assembly listing for method Microsoft.Extensions.Configuration.FileConfigurationProvider:ToString():System.String: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; 15 single block inlinees; 26 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 5, 5 ) ref -> rbx this class-hnd single-def <Microsoft.Extensions.Configuration.FileConfigurationProvider>
+; V00 this [V00,T04] ( 5, 5 ) ref -> rbx this class-hnd single-def <Microsoft.Extensions.Configuration.FileConfigurationProvider>
; V01 loc0 [V01 ] ( 48, 33 ) struct (40) [rbp-0x38] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref
;* V04 tmp2 [V04 ] ( 0, 0 ) byref -> zero-ref
-; V05 tmp3 [V05,T14] ( 6, 3.50) ref -> rbx
+; V05 tmp3 [V05,T20] ( 4, 2.50) ref -> rsi
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
-; V07 tmp5 [V07,T02] ( 5, 8 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
+; V07 tmp5 [V07,T00] ( 5, 8 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
-; V12 tmp10 [V12,T00] ( 7, 8 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String>
+; V12 tmp10 [V12,T05] ( 5, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V14 tmp12 [V14,T07] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V16 tmp14 [V16,T23] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
-; V17 tmp15 [V17,T26] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V18 tmp16 [V18,T32] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V16 tmp14 [V16,T26] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V17 tmp15 [V17,T29] ( 2, 2 ) int -> rcx "Inlining Arg"
+;* V18 tmp16 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp17 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V20 tmp18 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V22 tmp20 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V23 tmp21 [V23 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V24 tmp22 [V24,T03] ( 4, 8 ) int -> rdi "Inlining Arg"
+; V24 tmp22 [V24,T01] ( 4, 8 ) int -> rdi "Inlining Arg"
;* V25 tmp23 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V26 tmp24 [V26,T18] ( 2, 3 ) byref -> r15 single-def "Inlining Arg"
+; V26 tmp24 [V26,T17] ( 2, 3 ) byref -> r15 single-def "Inlining Arg"
; V27 tmp25 [V27,T11] ( 2, 4 ) int -> rsi "Inlining Arg"
-;* V28 tmp26 [V28,T29] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V29 tmp27 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V31 tmp29 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V32 tmp30 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.Extensions.Configuration.FileConfigurationSource>
-; V33 tmp31 [V33,T01] ( 7, 8 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.String>
+; V33 tmp31 [V33,T06] ( 5, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V34 tmp32 [V34 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V35 tmp33 [V35,T08] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V36 tmp34 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V37 tmp35 [V37,T24] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
-; V38 tmp36 [V38,T27] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V39 tmp37 [V39,T33] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V37 tmp35 [V37,T27] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V38 tmp36 [V38,T30] ( 2, 2 ) int -> rcx "Inlining Arg"
+;* V39 tmp37 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp38 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V41 tmp39 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V43 tmp41 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V44 tmp42 [V44 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V45 tmp43 [V45,T04] ( 4, 8 ) int -> rdi "Inlining Arg"
+; V45 tmp43 [V45,T02] ( 4, 8 ) int -> rdi "Inlining Arg"
;* V46 tmp44 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V47 tmp45 [V47,T19] ( 2, 3 ) byref -> r15 single-def "Inlining Arg"
+; V47 tmp45 [V47,T18] ( 2, 3 ) byref -> r15 single-def "Inlining Arg"
; V48 tmp46 [V48,T12] ( 2, 4 ) int -> rsi "Inlining Arg"
-;* V49 tmp47 [V49,T30] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V49 tmp47 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V50 tmp48 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V51 tmp49 [V51 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V52 tmp50 [V52 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V53 tmp51 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.Extensions.Configuration.FileConfigurationSource>
;* V54 tmp52 [V54 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V55 tmp53 [V55,T09] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V56 tmp54 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp55 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V58 tmp56 [V58,T25] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
-; V59 tmp57 [V59,T28] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V60 tmp58 [V60,T34] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V58 tmp56 [V58,T28] ( 2, 2 ) byref -> rax single-def "Inlining Arg"
+; V59 tmp57 [V59,T31] ( 2, 2 ) int -> rcx "Inlining Arg"
+;* V60 tmp58 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V61 tmp59 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V62 tmp60 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V63 tmp61 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V64 tmp62 [V64 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V65 tmp63 [V65 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V66 tmp64 [V66,T05] ( 4, 8 ) int -> rdi "Inlining Arg"
+; V66 tmp64 [V66,T03] ( 4, 8 ) int -> rdi "Inlining Arg"
;* V67 tmp65 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V68 tmp66 [V68,T20] ( 2, 3 ) byref -> rbx single-def "Inlining Arg"
+; V68 tmp66 [V68,T19] ( 2, 3 ) byref -> rbx single-def "Inlining Arg"
; V69 tmp67 [V69,T13] ( 2, 4 ) int -> rsi "Inlining Arg"
-;* V70 tmp68 [V70,T31] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V70 tmp68 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V71 tmp69 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V72 tmp70 [V72 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V73 tmp71 [V73 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V74 tmp72 [V74,T21] ( 3, 2 ) byref -> rdi "field V10._reference (fldOffset=0x0)" P-INDEP
-; V75 tmp73 [V75,T22] ( 3, 2 ) int -> rax "field V10._length (fldOffset=0x8)" P-INDEP
+; V74 tmp72 [V74,T24] ( 3, 2 ) byref -> rdi "field V10._reference (fldOffset=0x0)" P-INDEP
+; V75 tmp73 [V75,T25] ( 3, 2 ) int -> rax "field V10._length (fldOffset=0x8)" P-INDEP
;* V76 tmp74 [V76 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V77 tmp75 [V77 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V78 tmp76 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V79 tmp77 [V79 ] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP
;* V80 tmp78 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
;* V81 tmp79 [V81 ] ( 0, 0 ) int -> zero-ref single-def "field V19._length (fldOffset=0x8)" P-INDEP
;* V82 tmp80 [V82 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V83 tmp81 [V83 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
;* V84 tmp82 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP
;* V85 tmp83 [V85 ] ( 0, 0 ) int -> zero-ref single-def "field V25._length (fldOffset=0x8)" P-INDEP
;* V86 tmp84 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP
;* V87 tmp85 [V87 ] ( 0, 0 ) int -> zero-ref single-def "field V29._length (fldOffset=0x8)" P-INDEP
;* V88 tmp86 [V88 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V89 tmp87 [V89 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V90 tmp88 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
;* V91 tmp89 [V91 ] ( 0, 0 ) int -> zero-ref single-def "field V36._length (fldOffset=0x8)" P-INDEP
;* V92 tmp90 [V92 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp91 [V93 ] ( 0, 0 ) int -> zero-ref single-def "field V40._length (fldOffset=0x8)" P-INDEP
;* V94 tmp92 [V94 ] ( 0, 0 ) byref -> zero-ref "field V44._reference (fldOffset=0x0)" P-INDEP
;* V95 tmp93 [V95 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
;* V96 tmp94 [V96 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP
;* V97 tmp95 [V97 ] ( 0, 0 ) int -> zero-ref single-def "field V46._length (fldOffset=0x8)" P-INDEP
;* V98 tmp96 [V98 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP
;* V99 tmp97 [V99 ] ( 0, 0 ) int -> zero-ref single-def "field V50._length (fldOffset=0x8)" P-INDEP
;* V100 tmp98 [V100 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V101 tmp99 [V101 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
;* V102 tmp100 [V102 ] ( 0, 0 ) byref -> zero-ref single-def "field V57._reference (fldOffset=0x0)" P-INDEP
;* V103 tmp101 [V103 ] ( 0, 0 ) int -> zero-ref single-def "field V57._length (fldOffset=0x8)" P-INDEP
;* V104 tmp102 [V104 ] ( 0, 0 ) byref -> zero-ref single-def "field V61._reference (fldOffset=0x0)" P-INDEP
;* V105 tmp103 [V105 ] ( 0, 0 ) int -> zero-ref single-def "field V61._length (fldOffset=0x8)" P-INDEP
;* V106 tmp104 [V106 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP
;* V107 tmp105 [V107 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
;* V108 tmp106 [V108 ] ( 0, 0 ) byref -> zero-ref single-def "field V67._reference (fldOffset=0x0)" P-INDEP
;* V109 tmp107 [V109 ] ( 0, 0 ) int -> zero-ref single-def "field V67._length (fldOffset=0x8)" P-INDEP
;* V110 tmp108 [V110 ] ( 0, 0 ) byref -> zero-ref single-def "field V71._reference (fldOffset=0x0)" P-INDEP
;* V111 tmp109 [V111 ] ( 0, 0 ) int -> zero-ref single-def "field V71._length (fldOffset=0x8)" P-INDEP
; V112 tmp110 [V112,T10] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V113 cse0 [V113,T15] ( 3, 3 ) int -> rsi "CSE #03: moderate"
-; V114 cse1 [V114,T16] ( 3, 3 ) int -> rsi "CSE #07: moderate"
-; V115 cse2 [V115,T17] ( 3, 3 ) int -> rsi "CSE #11: moderate"
+; V113 cse0 [V113,T21] ( 4, 2 ) int -> r15 "CSE #02: moderate"
+; V114 cse1 [V114,T22] ( 4, 2 ) int -> r15 "CSE #06: moderate"
+; V115 cse2 [V115,T23] ( 4, 2 ) int -> rbx "CSE #10: moderate"
+; V116 cse3 [V116,T14] ( 3, 3 ) int -> rsi "CSE #03: moderate"
+; V117 cse4 [V117,T15] ( 3, 3 ) int -> rsi "CSE #07: moderate"
+; V118 cse5 [V118,T16] ( 3, 3 ) int -> rsi "CSE #11: moderate"
;
; Lcl frame size = 48
G_M30336_IG01:
push rbp
push r15
push rbx
sub rsp, 48
lea rbp, [rsp+0x40]
xor eax, eax
mov qword ptr [rbp-0x38], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x30], ymm8
mov rbx, rdi
;; size=32 bbWeight=1 PerfScore 7.58
G_M30336_IG02:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
mov gword ptr [rbp-0x30], rax
test rax, rax
je SHORT G_M30336_IG04
;; size=39 bbWeight=1 PerfScore 8.00
G_M30336_IG03:
lea rdi, bword ptr [rax+0x10]
mov eax, dword ptr [rax+0x08]
jmp SHORT G_M30336_IG05
;; size=9 bbWeight=0.50 PerfScore 2.25
G_M30336_IG04:
xor rdi, rdi
xor eax, eax
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M30336_IG05:
mov bword ptr [rbp-0x20], rdi
mov dword ptr [rbp-0x18], eax
xor edi, edi
mov dword ptr [rbp-0x28], edi
mov byte ptr [rbp-0x24], 0
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Object:GetType():System.Type:this
call [rax]System.Object:GetType():System.Type:this
mov rdi, rax
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetCachedName(int):System.String:this
call [rax]System.RuntimeType:GetCachedName(int):System.String:this
- mov r15, rax
+ mov rsi, rax
cmp byte ptr [rbp-0x24], 0
jne SHORT G_M30336_IG07
;; size=57 bbWeight=1 PerfScore 14.75
G_M30336_IG06:
- test r15, r15
+ test rsi, rsi
je SHORT G_M30336_IG07
mov edi, dword ptr [rbp-0x28]
cmp edi, dword ptr [rbp-0x18]
ja G_M30336_IG28
- mov rsi, bword ptr [rbp-0x20]
- mov eax, edi
- lea rax, bword ptr [rsi+2*rax]
- mov esi, dword ptr [rbp-0x18]
- sub esi, edi
- cmp dword ptr [r15+0x08], esi
- jbe SHORT G_M30336_IG08
- ;; size=38 bbWeight=0.50 PerfScore 6.12
+ mov rax, bword ptr [rbp-0x20]
+ mov ecx, edi
+ lea rax, bword ptr [rax+2*rcx]
+ mov ecx, dword ptr [rbp-0x18]
+ sub ecx, edi
+ mov r15d, dword ptr [rsi+0x08]
+ cmp r15d, ecx
+ jle SHORT G_M30336_IG08
+ ;; size=41 bbWeight=0.50 PerfScore 5.75
G_M30336_IG07:
lea rdi, [rbp-0x38]
- mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
jmp SHORT G_M30336_IG09
- ;; size=21 bbWeight=0.50 PerfScore 3.00
+ ;; size=18 bbWeight=0.50 PerfScore 2.88
G_M30336_IG08:
- mov edx, dword ptr [r15+0x08]
+ mov edx, r15d
add rdx, rdx
- lea rsi, bword ptr [r15+0x0C]
+ add rsi, 12
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov edi, dword ptr [rbp-0x28]
- add edi, dword ptr [r15+0x08]
- mov dword ptr [rbp-0x28], edi
- ;; size=36 bbWeight=0.50 PerfScore 5.62
+ add r15d, dword ptr [rbp-0x28]
+ mov dword ptr [rbp-0x28], r15d
+ ;; size=33 bbWeight=0.50 PerfScore 3.62
G_M30336_IG09:
mov edi, dword ptr [rbp-0x28]
mov esi, dword ptr [rbp-0x18]
cmp edi, esi
ja G_M30336_IG28
mov rax, bword ptr [rbp-0x20]
mov ecx, edi
lea r15, bword ptr [rax+2*rcx]
sub esi, edi
cmp esi, 6
- jae SHORT G_M30336_IG11
+ jge SHORT G_M30336_IG11
;; size=31 bbWeight=1 PerfScore 6.50
G_M30336_IG10:
lea rdi, [rbp-0x38]
mov rsi, 0xD1FFAB1E ; ' for ''
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M30336_IG12
;; size=28 bbWeight=0.50 PerfScore 3.00
G_M30336_IG11:
mov rdi, 0xD1FFAB1E
mov rax, qword ptr [rdi]
mov rsi, qword ptr [rdi+0x04]
mov qword ptr [r15], rax
mov qword ptr [r15+0x04], rsi
mov edi, dword ptr [rbp-0x28]
add edi, 6
mov dword ptr [rbp-0x28], edi
;; size=33 bbWeight=0.50 PerfScore 4.25
G_M30336_IG12:
mov rdi, gword ptr [rbx+0x20]
- mov r15, gword ptr [rdi+0x10]
+ mov rsi, gword ptr [rdi+0x10]
cmp byte ptr [rbp-0x24], 0
jne SHORT G_M30336_IG14
;; size=14 bbWeight=1 PerfScore 7.00
G_M30336_IG13:
- test r15, r15
+ test rsi, rsi
je SHORT G_M30336_IG14
mov edi, dword ptr [rbp-0x28]
cmp edi, dword ptr [rbp-0x18]
ja G_M30336_IG28
- mov rsi, bword ptr [rbp-0x20]
- mov eax, edi
- lea rax, bword ptr [rsi+2*rax]
- mov esi, dword ptr [rbp-0x18]
- sub esi, edi
- cmp dword ptr [r15+0x08], esi
- jbe SHORT G_M30336_IG15
- ;; size=38 bbWeight=0.50 PerfScore 6.12
+ mov rax, bword ptr [rbp-0x20]
+ mov ecx, edi
+ lea rax, bword ptr [rax+2*rcx]
+ mov ecx, dword ptr [rbp-0x18]
+ sub ecx, edi
+ mov r15d, dword ptr [rsi+0x08]
+ cmp r15d, ecx
+ jle SHORT G_M30336_IG15
+ ;; size=41 bbWeight=0.50 PerfScore 5.75
G_M30336_IG14:
lea rdi, [rbp-0x38]
- mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
jmp SHORT G_M30336_IG16
- ;; size=21 bbWeight=0.50 PerfScore 3.00
+ ;; size=18 bbWeight=0.50 PerfScore 2.88
G_M30336_IG15:
- mov edx, dword ptr [r15+0x08]
+ mov edx, r15d
add rdx, rdx
- lea rsi, bword ptr [r15+0x0C]
+ add rsi, 12
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov edi, dword ptr [rbp-0x28]
- add edi, dword ptr [r15+0x08]
- mov dword ptr [rbp-0x28], edi
- ;; size=36 bbWeight=0.50 PerfScore 5.62
+ add r15d, dword ptr [rbp-0x28]
+ mov dword ptr [rbp-0x28], r15d
+ ;; size=33 bbWeight=0.50 PerfScore 3.62
G_M30336_IG16:
mov edi, dword ptr [rbp-0x28]
mov esi, dword ptr [rbp-0x18]
cmp edi, esi
ja G_M30336_IG28
mov rax, bword ptr [rbp-0x20]
mov ecx, edi
lea r15, bword ptr [rax+2*rcx]
sub esi, edi
cmp esi, 3
- jae SHORT G_M30336_IG18
+ jge SHORT G_M30336_IG18
;; size=31 bbWeight=1 PerfScore 6.50
G_M30336_IG17:
lea rdi, [rbp-0x38]
mov rsi, 0xD1FFAB1E ; '' ('
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M30336_IG19
;; size=28 bbWeight=0.50 PerfScore 3.00
G_M30336_IG18:
mov rdi, 0xD1FFAB1E
mov eax, dword ptr [rdi]
mov esi, dword ptr [rdi+0x02]
mov dword ptr [r15], eax
mov dword ptr [r15+0x02], esi
mov edi, dword ptr [rbp-0x28]
add edi, 3
mov dword ptr [rbp-0x28], edi
;; size=31 bbWeight=0.50 PerfScore 4.25
G_M30336_IG19:
mov rdi, gword ptr [rbx+0x20]
- mov rbx, 0xD1FFAB1E ; 'Optional'
- mov rsi, 0xD1FFAB1E ; 'Required'
+ mov rsi, 0xD1FFAB1E ; 'Optional'
+ mov rax, 0xD1FFAB1E ; 'Required'
cmp byte ptr [rdi+0x24], 0
- cmove rbx, rsi
+ cmove rsi, rax
cmp byte ptr [rbp-0x24], 0
jne SHORT G_M30336_IG21
;; size=38 bbWeight=1 PerfScore 8.75
G_M30336_IG20:
mov edi, dword ptr [rbp-0x28]
cmp edi, dword ptr [rbp-0x18]
ja G_M30336_IG28
- mov rsi, bword ptr [rbp-0x20]
- mov eax, edi
- lea rax, bword ptr [rsi+2*rax]
- mov esi, dword ptr [rbp-0x18]
- sub esi, edi
- cmp dword ptr [rbx+0x08], esi
- jbe SHORT G_M30336_IG22
- ;; size=32 bbWeight=0.50 PerfScore 5.50
+ mov rax, bword ptr [rbp-0x20]
+ mov ecx, edi
+ lea rax, bword ptr [rax+2*rcx]
+ mov ecx, dword ptr [rbp-0x18]
+ sub ecx, edi
+ mov ebx, dword ptr [rsi+0x08]
+ cmp ebx, ecx
+ jle SHORT G_M30336_IG22
+ ;; size=34 bbWeight=0.50 PerfScore 5.12
G_M30336_IG21:
lea rdi, [rbp-0x38]
- mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
jmp SHORT G_M30336_IG23
- ;; size=21 bbWeight=0.50 PerfScore 3.00
+ ;; size=18 bbWeight=0.50 PerfScore 2.88
G_M30336_IG22:
- mov edx, dword ptr [rbx+0x08]
+ mov edx, ebx
add rdx, rdx
- lea rsi, bword ptr [rbx+0x0C]
+ add rsi, 12
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov edi, dword ptr [rbp-0x28]
- add edi, dword ptr [rbx+0x08]
- mov dword ptr [rbp-0x28], edi
- ;; size=34 bbWeight=0.50 PerfScore 5.62
+ add ebx, dword ptr [rbp-0x28]
+ mov dword ptr [rbp-0x28], ebx
+ ;; size=30 bbWeight=0.50 PerfScore 3.62
G_M30336_IG23:
mov edi, dword ptr [rbp-0x28]
mov esi, dword ptr [rbp-0x18]
cmp edi, esi
ja SHORT G_M30336_IG28
mov rax, bword ptr [rbp-0x20]
mov ecx, edi
lea rbx, bword ptr [rax+2*rcx]
sub esi, edi
- jne SHORT G_M30336_IG25
- ;; size=24 bbWeight=1 PerfScore 6.25
+ test esi, esi
+ jg SHORT G_M30336_IG25
+ ;; size=26 bbWeight=1 PerfScore 6.50
G_M30336_IG24:
lea rdi, [rbp-0x38]
mov rsi, 0xD1FFAB1E ; ')'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M30336_IG26
;; size=28 bbWeight=0.50 PerfScore 3.00
G_M30336_IG25:
mov rdi, 0xD1FFAB1E
movzx rax, word ptr [rdi]
mov word ptr [rbx], ax
mov edi, dword ptr [rbp-0x28]
inc edi
mov dword ptr [rbp-0x28], edi
;; size=24 bbWeight=0.50 PerfScore 2.75
G_M30336_IG26:
lea rdi, [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
nop
;; size=17 bbWeight=1 PerfScore 4.00
G_M30336_IG27:
add rsp, 48
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 2.75
G_M30336_IG28:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 767, prolog size 29, PerfScore 138.46, instruction count 203, allocated bytes for code 767 (MethodHash=d5ae897f) for method Microsoft.Extensions.Configuration.FileConfigurationProvider:ToString():System.String:this (FullOpts)
+; Total bytes of code 758, prolog size 29, PerfScore 131.21, instruction count 201, allocated bytes for code 758 (MethodHash=d5ae897f) for method Microsoft.Extensions.Configuration.FileConfigurationProvider:ToString():System.String:this (FullOpts)
; ============================================================ -4 (-0.40 % of base) - System.Net.Sockets.SafeSocketHandle:CloseHandle(long):int:this ; Assembly listing for method System.Net.Sockets.SafeSocketHandle:CloseHandle(long):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; 21 single block inlinees; 23 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 3, 2.50) ref -> [rbp-0x50] this class-hnd single-def <System.Net.Sockets.SafeSocketHandle>
; V01 arg1 [V01,T00] ( 5, 4 ) long -> rbx single-def
; V02 loc0 [V02,T04] ( 6, 4 ) int -> r14
; V03 loc1 [V03,T10] ( 3, 2 ) ubyte -> r13
-; V04 loc2 [V04 ] ( 48, 24 ) struct (40) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V04 loc2 [V04 ] ( 44, 22 ) struct (40) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref
; V08 tmp3 [V08,T23] ( 3, 1.50) ref -> rbx
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
; V11 tmp6 [V11,T01] ( 5, 5 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V16 tmp11 [V16,T05] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V17 tmp12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V18 tmp13 [V18,T11] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
; V19 tmp14 [V19,T19] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V20 tmp15 [V20,T35] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V21 tmp16 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V22 tmp17 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp18 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V25 tmp20 [V25,T06] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V27 tmp22 [V27,T12] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
; V28 tmp23 [V28,T20] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V29 tmp24 [V29,T36] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V29 tmp24 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V30 tmp25 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V31 tmp26 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V33 tmp28 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V34 tmp29 [V34,T13] ( 2, 2 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.String>
;* V35 tmp30 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V36 tmp31 [V36,T09] ( 3, 3 ) int -> rsi "Inlining Arg"
;* V37 tmp32 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V38 tmp33 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V39 tmp34 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V40 tmp35 [V40 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V41 tmp36 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V43 tmp38 [V43,T24] ( 3, 1.50) ref -> rsi class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V44 tmp39 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
; V45 tmp40 [V45,T02] ( 5, 5 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V46 tmp41 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V47 tmp42 [V47 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V48 tmp43 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V49 tmp44 [V49 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V50 tmp45 [V50,T07] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V51 tmp46 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V52 tmp47 [V52,T14] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
; V53 tmp48 [V53,T21] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V54 tmp49 [V54,T37] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V54 tmp49 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V55 tmp50 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V56 tmp51 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V57 tmp52 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V58 tmp53 [V58 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V59 tmp54 [V59,T08] ( 4, 4 ) int -> rdi "Inlining Arg"
;* V60 tmp55 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V61 tmp56 [V61,T15] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
; V62 tmp57 [V62,T22] ( 2, 2 ) int -> rsi "Inlining Arg"
-;* V63 tmp58 [V63,T38] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V63 tmp58 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V64 tmp59 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V65 tmp60 [V65 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V66 tmp61 [V66 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V67 tmp62 [V67,T16] ( 2, 2 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.Net.NetEventSource>
; V68 tmp63 [V68,T17] ( 2, 2 ) ref -> r15 class-hnd exact single-def "non-inline candidate call" <System.String>
;* V69 tmp64 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
-; V70 tmp65 [V70,T29] ( 2, 1 ) ref -> rdi single-def
+; V70 tmp65 [V70,T33] ( 2, 1 ) ref -> rdi single-def
;* V71 tmp66 [V71,T39] ( 0, 0 ) int -> zero-ref
-; V72 tmp67 [V72,T30] ( 2, 1 ) ref -> rdx single-def
-;* V73 tmp68 [V73,T34] ( 0, 0 ) ref -> zero-ref single-def
+; V72 tmp67 [V72,T34] ( 2, 1 ) ref -> rdx single-def
+;* V73 tmp68 [V73,T38] ( 0, 0 ) ref -> zero-ref single-def
; V74 tmp69 [V74,T18] ( 2, 2 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
; V75 tmp70 [V75,T25] ( 3, 1.50) byref -> rdi "field V14._reference (fldOffset=0x0)" P-INDEP
; V76 tmp71 [V76,T27] ( 3, 1.50) int -> rsi "field V14._length (fldOffset=0x8)" P-INDEP
;* V77 tmp72 [V77 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp73 [V78 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V79 tmp74 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp75 [V80 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V81 tmp76 [V81 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp77 [V82 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V83 tmp78 [V83 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp79 [V84 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
;* V85 tmp80 [V85 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V86 tmp81 [V86 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
;* V87 tmp82 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V88 tmp83 [V88 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
;* V89 tmp84 [V89 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp85 [V90 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V91 tmp86 [V91 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp87 [V92 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
-; V93 tmp88 [V93,T31] ( 2, 1 ) byref -> rdi single-def "field V37._reference (fldOffset=0x0)" P-INDEP
+; V93 tmp88 [V93,T35] ( 2, 1 ) byref -> rdi single-def "field V37._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp89 [V94 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V95 tmp90 [V95 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp91 [V96 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
-; V97 tmp92 [V97,T32] ( 2, 1 ) byref -> rdi single-def "field V40._reference (fldOffset=0x0)" P-INDEP
-; V98 tmp93 [V98,T33] ( 2, 1 ) int -> rsi "field V40._length (fldOffset=0x8)" P-INDEP
+; V97 tmp92 [V97,T36] ( 2, 1 ) byref -> rdi single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+; V98 tmp93 [V98,T37] ( 2, 1 ) int -> rsi "field V40._length (fldOffset=0x8)" P-INDEP
; V99 tmp94 [V99,T26] ( 3, 1.50) byref -> rdi "field V48._reference (fldOffset=0x0)" P-INDEP
; V100 tmp95 [V100,T28] ( 3, 1.50) int -> rsi "field V48._length (fldOffset=0x8)" P-INDEP
;* V101 tmp96 [V101 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V102 tmp97 [V102 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
;* V103 tmp98 [V103 ] ( 0, 0 ) byref -> zero-ref single-def "field V51._reference (fldOffset=0x0)" P-INDEP
;* V104 tmp99 [V104 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
;* V105 tmp100 [V105 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP
;* V106 tmp101 [V106 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
;* V107 tmp102 [V107 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp103 [V108 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
;* V109 tmp104 [V109 ] ( 0, 0 ) byref -> zero-ref single-def "field V60._reference (fldOffset=0x0)" P-INDEP
;* V110 tmp105 [V110 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP
;* V111 tmp106 [V111 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP
;* V112 tmp107 [V112 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP
+; V113 cse0 [V113,T29] ( 3, 1.50) int -> rsi "CSE #01: moderate"
+; V114 cse1 [V114,T30] ( 3, 1.50) int -> rsi "CSE #03: moderate"
+; V115 cse2 [V115,T31] ( 3, 1.50) int -> rsi "CSE #06: moderate"
+; V116 cse3 [V116,T32] ( 3, 1.50) int -> rsi "CSE #08: moderate"
;
; Lcl frame size = 48
G_M24702_IG01:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 48
vzeroupper
lea rbp, [rsp+0x50]
xor eax, eax
mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
vmovdqu ymmword ptr [rbp-0x40], ymm8
mov gword ptr [rbp-0x50], rdi
mov rbx, rsi
;; size=43 bbWeight=1 PerfScore 11.58
G_M24702_IG02:
xor r14d, r14d
xor r13d, r13d
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for Interop+Sys:Close(long):int
call [rax]Interop+Sys:Close(long):int
test eax, eax
jne SHORT G_M24702_IG04
;; size=25 bbWeight=1 PerfScore 5.25
G_M24702_IG03:
mov r15, gword ptr [rbp-0x50]
jmp SHORT G_M24702_IG07
;; size=6 bbWeight=0.50 PerfScore 1.50
G_M24702_IG04:
call System.Runtime.InteropServices.Marshal:GetLastPInvokeError():int
mov edi, eax
mov rax, 0xD1FFAB1E ; function address
;; size=17 bbWeight=0.50 PerfScore 0.75
G_M24702_IG05:
call rax ; Interop+Sys:ConvertErrorPlatformToPal(int):int
mov r14d, eax
mov rax, 0xD1FFAB1E ; global ptr
cmp dword ptr [rax], 0
jne G_M24702_IG26
;; size=24 bbWeight=0.50 PerfScore 3.75
G_M24702_IG06:
cmp r14d, 0x1000F
jne SHORT G_M24702_IG09
xor r14d, r14d
mov r13d, 1
mov r15, gword ptr [rbp-0x50]
;; size=22 bbWeight=0.50 PerfScore 1.38
G_M24702_IG07:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
cmp byte ptr [rdi+0x9D], 0
je G_M24702_IG24
;; size=26 bbWeight=1 PerfScore 6.25
G_M24702_IG08:
xor rdi, rdi
mov gword ptr [rbp-0x48], rdi
test r13d, r13d
jne SHORT G_M24702_IG10
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
mov gword ptr [rbp-0x40], rax
test rax, rax
jne G_M24702_IG17
xor rdi, rdi
xor esi, esi
jmp G_M24702_IG18
;; size=63 bbWeight=0.50 PerfScore 6.50
G_M24702_IG09:
mov r15, gword ptr [rbp-0x50]
jmp SHORT G_M24702_IG07
;; size=6 bbWeight=0.25 PerfScore 0.75
G_M24702_IG10:
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
mov gword ptr [rbp-0x40], rax
test rax, rax
je SHORT G_M24702_IG11
lea rdi, bword ptr [rax+0x10]
mov esi, dword ptr [rax+0x08]
jmp SHORT G_M24702_IG12
;; size=48 bbWeight=0.50 PerfScore 6.25
G_M24702_IG11:
xor rdi, rdi
xor esi, esi
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M24702_IG12:
mov bword ptr [rbp-0x30], rdi
mov dword ptr [rbp-0x28], esi
xor edi, edi
mov dword ptr [rbp-0x38], edi
mov byte ptr [rbp-0x34], 0
mov edi, dword ptr [rbp-0x38]
- cmp edi, dword ptr [rbp-0x28]
- ja G_M24702_IG27
- mov rsi, bword ptr [rbp-0x30]
- mov eax, edi
- lea r13, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x28]
+ cmp edi, esi
+ ja G_M24702_IG27
+ mov rax, bword ptr [rbp-0x30]
+ mov ecx, edi
+ lea r13, bword ptr [rax+2*rcx]
sub esi, edi
cmp esi, 7
- jae SHORT G_M24702_IG13
+ jge SHORT G_M24702_IG13
lea rdi, [rbp-0x48]
mov rsi, 0xD1FFAB1E ; 'handle:'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M24702_IG14
- ;; size=76 bbWeight=0.50 PerfScore 9.25
+ ;; size=75 bbWeight=0.50 PerfScore 8.38
G_M24702_IG13:
mov rdi, 0xD1FFAB1E
mov rax, qword ptr [rdi]
mov rsi, qword ptr [rdi+0x06]
mov qword ptr [r13], rax
mov qword ptr [r13+0x06], rsi
mov edi, dword ptr [rbp-0x38]
add edi, 7
mov dword ptr [rbp-0x38], edi
;; size=34 bbWeight=0.50 PerfScore 4.25
G_M24702_IG14:
lea rdi, [rbp-0x48]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long):this
mov edi, dword ptr [rbp-0x38]
- cmp edi, dword ptr [rbp-0x28]
- ja G_M24702_IG27
- mov rsi, bword ptr [rbp-0x30]
- mov eax, edi
- lea rbx, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x28]
+ cmp edi, esi
+ ja G_M24702_IG27
+ mov rax, bword ptr [rbp-0x30]
+ mov ecx, edi
+ lea rbx, bword ptr [rax+2*rcx]
sub esi, edi
cmp esi, 48
- jae SHORT G_M24702_IG15
+ jge SHORT G_M24702_IG15
lea rdi, [rbp-0x48]
mov rsi, 0xD1FFAB1E ; ', close():ECONNRESET, but treating it as SUCCESS'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M24702_IG16
- ;; size=79 bbWeight=0.50 PerfScore 9.12
+ ;; size=78 bbWeight=0.50 PerfScore 8.25
G_M24702_IG15:
mov rdi, 0xD1FFAB1E
vmovdqu ymm0, ymmword ptr [rdi]
vmovdqu ymm1, ymmword ptr [rdi+0x20]
vmovdqu ymm2, ymmword ptr [rdi+0x40]
vmovdqu ymmword ptr [rbx], ymm0
vmovdqu ymmword ptr [rbx+0x20], ymm1
vmovdqu ymmword ptr [rbx+0x40], ymm2
mov edi, dword ptr [rbp-0x38]
add edi, 48
mov dword ptr [rbp-0x38], edi
;; size=47 bbWeight=0.50 PerfScore 11.75
G_M24702_IG16:
lea rdi, [rbp-0x48]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
mov rbx, rax
jmp G_M24702_IG23
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M24702_IG17:
lea rdi, bword ptr [rax+0x10]
mov esi, dword ptr [rax+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
G_M24702_IG18:
mov bword ptr [rbp-0x30], rdi
mov dword ptr [rbp-0x28], esi
xor edi, edi
mov dword ptr [rbp-0x38], edi
mov byte ptr [rbp-0x34], 0
mov edi, dword ptr [rbp-0x38]
- cmp edi, dword ptr [rbp-0x28]
- ja G_M24702_IG27
- mov rsi, bword ptr [rbp-0x30]
- mov eax, edi
- lea r13, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x28]
+ cmp edi, esi
+ ja G_M24702_IG27
+ mov rax, bword ptr [rbp-0x30]
+ mov ecx, edi
+ lea r13, bword ptr [rax+2*rcx]
sub esi, edi
cmp esi, 7
- jae SHORT G_M24702_IG19
+ jge SHORT G_M24702_IG19
lea rdi, [rbp-0x48]
mov rsi, 0xD1FFAB1E ; 'handle:'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M24702_IG20
- ;; size=76 bbWeight=0.50 PerfScore 9.25
+ ;; size=75 bbWeight=0.50 PerfScore 8.38
G_M24702_IG19:
mov rdi, 0xD1FFAB1E
mov rax, qword ptr [rdi]
mov rsi, qword ptr [rdi+0x06]
mov qword ptr [r13], rax
mov qword ptr [r13+0x06], rsi
mov edi, dword ptr [rbp-0x38]
add edi, 7
mov dword ptr [rbp-0x38], edi
;; size=34 bbWeight=0.50 PerfScore 4.25
G_M24702_IG20:
lea rdi, [rbp-0x48]
mov rsi, rbx
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[long](long):this
mov edi, dword ptr [rbp-0x38]
- cmp edi, dword ptr [rbp-0x28]
- ja G_M24702_IG27
- mov rsi, bword ptr [rbp-0x30]
- mov eax, edi
- lea rbx, bword ptr [rsi+2*rax]
mov esi, dword ptr [rbp-0x28]
+ cmp edi, esi
+ ja G_M24702_IG27
+ mov rax, bword ptr [rbp-0x30]
+ mov ecx, edi
+ lea rbx, bword ptr [rax+2*rcx]
sub esi, edi
cmp esi, 10
- jae SHORT G_M24702_IG21
+ jge SHORT G_M24702_IG21
lea rdi, [rbp-0x48]
mov rsi, 0xD1FFAB1E ; ', close():'
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
jmp SHORT G_M24702_IG22
- ;; size=79 bbWeight=0.50 PerfScore 9.12
+ ;; size=78 bbWeight=0.50 PerfScore 8.25
G_M24702_IG21:
mov rdi, 0xD1FFAB1E
vmovdqu xmm0, xmmword ptr [rdi]
vmovdqu xmm1, xmmword ptr [rdi+0x04]
vmovdqu xmmword ptr [rbx], xmm0
vmovdqu xmmword ptr [rbx+0x04], xmm1
mov edi, dword ptr [rbp-0x38]
add edi, 10
mov dword ptr [rbp-0x38], edi
;; size=37 bbWeight=0.50 PerfScore 7.25
G_M24702_IG22:
lea rdi, [rbp-0x48]
mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
call [rax]System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
mov esi, dword ptr [rbp-0x38]
cmp esi, dword ptr [rbp-0x28]
ja G_M24702_IG27
mov rdi, bword ptr [rbp-0x30]
call System.String:.ctor(System.ReadOnlySpan`1[ushort]):this
mov rbx, rax
mov rsi, gword ptr [rbp-0x40]
vxorps ymm0, ymm0, ymm0
vmovdqu ymmword ptr [rbp-0x48], ymm0
vmovdqu xmmword ptr [rbp-0x30], xmm0
test rsi, rsi
je SHORT G_M24702_IG23
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
call [rax]System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
;; size=93 bbWeight=0.50 PerfScore 10.29
G_M24702_IG23:
mov rdi, 0xD1FFAB1E ; const ptr
mov r13, gword ptr [rdi]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:IdOf(System.Object):System.String
call [rax]System.Net.NetEventSource:IdOf(System.Object):System.String
mov r15, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:Format(System.Object):System.String
call [rax]System.Net.NetEventSource:Format(System.Object):System.String
mov r8, rax
mov rdi, r13
mov rdx, r15
mov esi, 1
mov rcx, 0xD1FFAB1E ; 'CloseHandle'
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
;; size=82 bbWeight=0.50 PerfScore 7.00
G_M24702_IG24:
mov eax, r14d
;; size=3 bbWeight=1 PerfScore 0.25
G_M24702_IG25:
add rsp, 48
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
G_M24702_IG26:
call CORINFO_HELP_POLL_GC
jmp G_M24702_IG06
;; size=10 bbWeight=0 PerfScore 0.00
G_M24702_IG27:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 991, prolog size 36, PerfScore 134.00, instruction count 239, allocated bytes for code 991 (MethodHash=37c89f81) for method System.Net.Sockets.SafeSocketHandle:CloseHandle(long):int:this (FullOpts)
+; Total bytes of code 987, prolog size 36, PerfScore 130.50, instruction count 239, allocated bytes for code 987 (MethodHash=37c89f81) for method System.Net.Sockets.SafeSocketHandle:CloseHandle(long):int:this (FullOpts)
; ============================================================ Larger list of diffs: https://gist.github.com/MihuBot/07ea7f11386b81b1908d3dfa977936a0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 18 minutes 34 seconds.
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: