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] [hez2010] JIT: Enable inlining for late devirtualization #917
Comments
Top method regressions566 (87.21 % of base) - System.IO.Directory:CreateTempSubdirectoryCore(System.String):System.String ; Assembly listing for method System.IO.Directory:CreateTempSubdirectoryCore(System.String):System.String (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 18 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 28 single block inlinees; 17 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 7, 5.50) ref -> rbx class-hnd single-def <System.String>
-; V01 loc0 [V01,T08] ( 5, 4 ) ref -> r15 class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T00] ( 8, 6 ) ref -> rbx class-hnd single-def <System.String>
+; V01 loc0 [V01,T09] ( 6, 6 ) ref -> r15 class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc2 [V03,T13] ( 5, 3.50) int -> rax
+; V03 loc2 [V03,T27] ( 5, 3.50) int -> rsi
;* V04 loc3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
-; V05 loc4 [V05,T03] ( 9, 6.50) int -> r15
-;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.Span`1[ubyte]>
+; V05 loc4 [V05,T14] ( 6, 5.50) int -> rax
+;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
;* V07 loc6 [V07 ] ( 0, 0 ) int -> zero-ref
; V08 loc7 [V08 ] ( 2, 2 ) byref -> [rbp-0x30] must-init pinned
-;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V09 OutArgs [V09 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref
-; V11 tmp2 [V11,T29] ( 2, 2 ) int -> r13
-; V12 tmp3 [V12,T21] ( 3, 2 ) int -> rax
-; V13 tmp4 [V13,T15] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewArr temp" <ubyte[]>
-; V14 tmp5 [V14,T11] ( 2, 4 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
+; V12 tmp3 [V12,T44] ( 3, 2 ) int -> registers
+; V13 tmp4 [V13,T30] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewArr temp" <ubyte[]>
+; V14 tmp5 [V14,T38] ( 2, 3 ) ref -> [rbp-0xF0] class-hnd exact spill-single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp7 [V16,T06] ( 3, 5 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V16 tmp7 [V16,T23] ( 2, 4 ) ref -> rdx class-hnd exact single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V18 tmp9 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V19 tmp10 [V19,T24] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V19 tmp10 [V19,T47] ( 2, 2 ) ref -> [rbp-0xF8] class-hnd exact spill-single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V20 tmp11 [V20 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp12 [V21 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V22 tmp13 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V23 tmp14 [V23,T30] ( 2, 2 ) long -> r13 "Inlining Arg"
-;* V24 tmp15 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V25 tmp16 [V25 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V26 tmp17 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V27 tmp18 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V28 tmp19 [V28,T25] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-; V29 tmp20 [V29,T31] ( 2, 2 ) int -> rdx "Inlining Arg"
-;* V30 tmp21 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V31 tmp22 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp23 [V32,T26] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-; V33 tmp24 [V33,T32] ( 2, 2 ) int -> rdx "Inlining Arg"
-;* V34 tmp25 [V34 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V35 tmp26 [V35,T27] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
-; V36 tmp27 [V36,T33] ( 2, 2 ) int -> r8 "Inlining Arg"
-;* V37 tmp28 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V38 tmp29 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V39 tmp30 [V39 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V40 tmp31 [V40,T09] ( 3, 3 ) byref -> rdi "Inline stloc first use temp"
-; V41 tmp32 [V41,T34] ( 2, 2 ) struct ( 8) [rbp-0x38] do-not-enreg[SR] multireg-ret "spilled call-like call argument" <Interop+ErrorInfo>
-; V42 tmp33 [V42,T00] ( 5, 9 ) int -> rbx "Inlining Arg"
-;* V43 tmp34 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V44 tmp35 [V44 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V45 tmp36 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V46 tmp37 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V47 tmp38 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V49 tmp40 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-;* V50 tmp41 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V51 tmp42 [V51 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def "Inline stloc first use temp"
-; V52 tmp43 [V52,T16] ( 3, 3 ) byref -> r13 "Inline return value spill temp"
-;* V53 tmp44 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V54 tmp45 [V54,T18] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
-;* V55 tmp46 [V55 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V57 tmp48 [V57,T14] ( 4, 3 ) int -> r15 "Inline stloc first use temp"
-; V58 tmp49 [V58,T10] ( 4, 4 ) ref -> r12 class-hnd exact single-def "dup spill" <System.String>
-; V59 tmp50 [V59 ] ( 3, 1.50) byref -> [rbp-0x48] must-init pinned "Inline stloc first use temp"
-;* V60 tmp51 [V60 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V61 tmp52 [V61,T04] ( 7, 6.50) byref -> r13 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-; V62 tmp53 [V62,T02] ( 8, 7 ) int -> r12 "field V04._length (fldOffset=0x8)" P-INDEP
-; V63 tmp54 [V63,T19] ( 3, 2 ) byref -> r13 "field V06._reference (fldOffset=0x0)" P-INDEP
-; V64 tmp55 [V64,T22] ( 3, 2 ) int -> r12 "field V06._length (fldOffset=0x8)" P-INDEP
-;* V65 tmp56 [V65 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
-;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-;* V67 tmp58 [V67 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-;* V69 tmp60 [V69 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
-;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
-;* V71 tmp62 [V71 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
-;* V72 tmp63 [V72 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
-;* V73 tmp64 [V73 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
-;* V74 tmp65 [V74 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V75 tmp66 [V75,T37] ( 2, 1 ) byref -> r13 single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-; V76 tmp67 [V76,T42] ( 2, 1 ) int -> rax "field V22._length (fldOffset=0x8)" P-INDEP
-; V77 tmp68 [V77,T38] ( 2, 1 ) byref -> r13 "field V24._reference (fldOffset=0x0)" P-INDEP
-; V78 tmp69 [V78,T43] ( 2, 1 ) int -> r12 "field V24._length (fldOffset=0x8)" P-INDEP
-; V79 tmp70 [V79,T20] ( 3, 2 ) byref -> rsi "field V25._reference (fldOffset=0x0)" P-INDEP
-; V80 tmp71 [V80,T23] ( 3, 2 ) int -> rdx "field V25._length (fldOffset=0x8)" P-INDEP
-; V81 tmp72 [V81,T39] ( 2, 1 ) byref -> rsi single-def "field V26._reference (fldOffset=0x0)" P-INDEP
-; V82 tmp73 [V82,T44] ( 2, 1 ) int -> rdx "field V26._length (fldOffset=0x8)" P-INDEP
-;* V83 tmp74 [V83 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
-;* V84 tmp75 [V84 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
-; V85 tmp76 [V85,T40] ( 2, 1 ) byref -> rsi single-def "field V30._reference (fldOffset=0x0)" P-INDEP
-; V86 tmp77 [V86,T45] ( 2, 1 ) int -> rdx "field V30._length (fldOffset=0x8)" P-INDEP
-;* V87 tmp78 [V87 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
-;* V88 tmp79 [V88 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
-; V89 tmp80 [V89,T41] ( 2, 1 ) byref -> rcx single-def "field V34._reference (fldOffset=0x0)" P-INDEP
-; V90 tmp81 [V90,T46] ( 2, 1 ) int -> r8 "field V34._length (fldOffset=0x8)" P-INDEP
-; V91 tmp82 [V91,T28] ( 2, 2 ) byref -> rdi single-def "field V37._reference (fldOffset=0x0)" P-INDEP
-;* V92 tmp83 [V92 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
-;* V93 tmp84 [V93 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
-;* V94 tmp85 [V94 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-;* V95 tmp86 [V95 ] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
-;* V96 tmp87 [V96 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
-;* V97 tmp88 [V97 ] ( 0, 0 ) byref -> zero-ref single-def "field V46._reference (fldOffset=0x0)" P-INDEP
-;* V98 tmp89 [V98 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
-;* V99 tmp90 [V99 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP
-;* V100 tmp91 [V100 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
-;* V101 tmp92 [V101 ] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
-;* V102 tmp93 [V102 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
-; V103 tmp94 [V103,T12] ( 2, 4 ) long -> rdi "Cast away GC"
-; V104 tmp95 [V104,T07] ( 3, 5 ) long -> r13 "Cast away GC"
-; V105 tmp96 [V105,T35] ( 2, 2 ) long -> rcx "Cast away GC"
-; V106 tmp97 [V106,T36] ( 2, 2 ) long -> rcx "argument with side effect"
-; V107 GsCookie [V107 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V108 cse0 [V108,T05] ( 6, 5 ) ref -> r14 "CSE #01: moderate"
-; V109 cse1 [V109,T17] ( 3, 3 ) int -> rdi "CSE #03: moderate"
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V24 tmp15 [V24 ] ( 3, 3 ) byref -> [rbp-0x38] must-init pinned "Inline stloc first use temp"
+;* V25 tmp16 [V25 ] ( 0, 0 ) long -> zero-ref
+;* V26 tmp17 [V26 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V28 tmp19 [V28,T39] ( 2, 3 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V29 tmp20 [V29,T04] ( 4, 7 ) int -> [rbp-0x3C] spill-single-def "Inlining Arg"
+;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+; V31 tmp22 [V31,T28] ( 5, 3.50) int -> [rbp-0x40] "Inline stloc first use temp"
+; V32 tmp23 [V32 ] ( 2, 2 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V33 tmp24 [V33 ] ( 1, 1 ) int -> [rbp-0x50] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V34 tmp25 [V34,T29] ( 4, 3.50) int -> rcx "Inline stloc first use temp"
+; V35 tmp26 [V35,T11] ( 3, 6 ) long -> rax "dup spill"
+;* V36 tmp27 [V36 ] ( 0, 0 ) long -> zero-ref
+;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V38 tmp29 [V38 ] ( 3, 1.50) byref -> [rbp-0x58] must-init pinned "Inline stloc first use temp"
+;* V39 tmp30 [V39 ] ( 0, 0 ) long -> zero-ref
+;* V40 tmp31 [V40 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V41 tmp32 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V42 tmp33 [V42,T48] ( 2, 2 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V43 tmp34 [V43,T18] ( 4, 4 ) int -> [rbp-0x5C] spill-single-def "Inlining Arg"
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+; V45 tmp36 [V45,T40] ( 5, 2.50) int -> [rbp-0x60] "Inline stloc first use temp"
+; V46 tmp37 [V46 ] ( 2, 1 ) long -> [rbp-0x68] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V47 tmp38 [V47 ] ( 1, 0.50) int -> [rbp-0x70] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V48 tmp39 [V48,T42] ( 4, 2 ) int -> rcx "Inline stloc first use temp"
+; V49 tmp40 [V49,T34] ( 3, 3 ) long -> rax "dup spill"
+;* V50 tmp41 [V50 ] ( 0, 0 ) long -> zero-ref
+; V51 tmp42 [V51,T50] ( 2, 2 ) long -> r14 "Inlining Arg"
+;* V52 tmp43 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V53 tmp44 [V53 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+;* V54 tmp45 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;* V55 tmp46 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+; V56 tmp47 [V56,T10] ( 3, 6 ) byref -> r10 single-def "Inlining Arg"
+; V57 tmp48 [V57,T05] ( 4, 7 ) int -> r15 "Inlining Arg"
+;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V59 tmp50 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+; V60 tmp51 [V60 ] ( 2, 2 ) byref -> [rbp-0x78] must-init pinned "Inline stloc first use temp"
+;* V61 tmp52 [V61 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V62 tmp53 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+; V63 tmp54 [V63 ] ( 2, 2 ) byref -> [rbp-0x80] must-init pinned "Inline stloc first use temp"
+;* V64 tmp55 [V64 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V65 tmp56 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V66 tmp57 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+; V67 tmp58 [V67,T16] ( 7, 4 ) int -> r15 "Inline return value spill temp"
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V70 tmp61 [V70,T41] ( 3, 2.50) int -> r9 ld-addr-op "Inline ldloca(s) first use temp"
+; V71 tmp62 [V71,T45] ( 3, 2 ) int -> rax "Inline stloc first use temp"
+; V72 tmp63 [V72 ] ( 2, 2 ) long -> [rbp-0x88] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V73 tmp64 [V73 ] ( 2, 2 ) long -> [rbp-0x90] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;* V74 tmp65 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;* V75 tmp66 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+; V76 tmp67 [V76,T31] ( 3, 3 ) byref -> r10 single-def "Inlining Arg"
+; V77 tmp68 [V77,T19] ( 4, 4 ) int -> rbx "Inlining Arg"
+;* V78 tmp69 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V79 tmp70 [V79,T32] ( 3, 3 ) byref -> r11 single-def "Inlining Arg"
+; V80 tmp71 [V80,T35] ( 3, 3 ) int -> [rbp-0x94] spill-single-def "Inlining Arg"
+;* V81 tmp72 [V81 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V82 tmp73 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+; V83 tmp74 [V83 ] ( 2, 1 ) byref -> [rbp-0xA0] must-init pinned "Inline stloc first use temp"
+;* V84 tmp75 [V84 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V85 tmp76 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+; V86 tmp77 [V86 ] ( 2, 1 ) byref -> [rbp-0xA8] must-init pinned "Inline stloc first use temp"
+;* V87 tmp78 [V87 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+;* V88 tmp79 [V88 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V89 tmp80 [V89 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+; V90 tmp81 [V90,T52] ( 3, 1.50) int -> rax "Inline return value spill temp"
+;* V91 tmp82 [V91 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V92 tmp83 [V92 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V93 tmp84 [V93,T53] ( 3, 1.50) int -> r9 ld-addr-op "Inline ldloca(s) first use temp"
+; V94 tmp85 [V94,T54] ( 3, 1.50) int -> rax "Inline stloc first use temp"
+; V95 tmp86 [V95 ] ( 2, 1 ) long -> [rbp-0xB0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V96 tmp87 [V96 ] ( 2, 1 ) long -> [rbp-0xB8] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;* V97 tmp88 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V98 tmp89 [V98 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V99 tmp90 [V99 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
+; V100 tmp91 [V100,T17] ( 3, 3 ) byref -> rdi "Inline stloc first use temp"
+; V101 tmp92 [V101,T51] ( 2, 2 ) struct ( 8) [rbp-0xC0] do-not-enreg[SR] multireg-ret "spilled call-like call argument" <Interop+ErrorInfo>
+; V102 tmp93 [V102,T01] ( 4, 8 ) int -> rsi "Inlining Arg"
+;* V103 tmp94 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;* V104 tmp95 [V104 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V105 tmp96 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V106 tmp97 [V106 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
+;* V107 tmp98 [V107 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V108 tmp99 [V108 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V109 tmp100 [V109 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
+;* V110 tmp101 [V110 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+; V111 tmp102 [V111 ] ( 1, 1 ) byref -> [rbp-0xC8] must-init pinned single-def "Inline stloc first use temp"
+; V112 tmp103 [V112,T33] ( 3, 3 ) byref -> r14 "Inline return value spill temp"
+;* V113 tmp104 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
+; V114 tmp105 [V114,T03] ( 8, 7.50) byref -> r14 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+; V115 tmp106 [V115,T02] ( 9, 7.50) int -> r12 "field V04._length (fldOffset=0x8)" P-INDEP
+; V116 tmp107 [V116,T43] ( 3, 2 ) byref -> r14 "field V06._reference (fldOffset=0x0)" P-INDEP
+; V117 tmp108 [V117,T46] ( 3, 2 ) int -> r12 "field V06._length (fldOffset=0x8)" P-INDEP
+;* V118 tmp109 [V118 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
+;* V119 tmp110 [V119 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+;* V120 tmp111 [V120 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
+;* V121 tmp112 [V121 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
+;* V122 tmp113 [V122 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
+;* V123 tmp114 [V123 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
+;* V124 tmp115 [V124 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
+;* V125 tmp116 [V125 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
+;* V126 tmp117 [V126 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+;* V127 tmp118 [V127 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
+; V128 tmp119 [V128,T55] ( 2, 1 ) byref -> r14 single-def "field V22._reference (fldOffset=0x0)" P-INDEP
+; V129 tmp120 [V129,T57] ( 2, 1 ) int -> rsi "field V22._length (fldOffset=0x8)" P-INDEP
+; V130 tmp121 [V130,T56] ( 2, 1 ) byref -> r14 "field V52._reference (fldOffset=0x0)" P-INDEP
+; V131 tmp122 [V131,T58] ( 2, 1 ) int -> r12 "field V52._length (fldOffset=0x8)" P-INDEP
+;* V132 tmp123 [V132 ] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
+;* V133 tmp124 [V133 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
+;* V134 tmp125 [V134 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP
+;* V135 tmp126 [V135 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
+;* V136 tmp127 [V136 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP
+;* V137 tmp128 [V137 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP
+;* V138 tmp129 [V138 ] ( 0, 0 ) byref -> zero-ref single-def "field V59._reference (fldOffset=0x0)" P-INDEP
+;* V139 tmp130 [V139 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP
+;* V140 tmp131 [V140 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
+;* V141 tmp132 [V141 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
+;* V142 tmp133 [V142 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
+;* V143 tmp134 [V143 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
+;* V144 tmp135 [V144 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP
+;* V145 tmp136 [V145 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP
+;* V146 tmp137 [V146 ] ( 0, 0 ) byref -> zero-ref single-def "field V74._reference (fldOffset=0x0)" P-INDEP
+;* V147 tmp138 [V147 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP
+;* V148 tmp139 [V148 ] ( 0, 0 ) byref -> zero-ref "field V75._reference (fldOffset=0x0)" P-INDEP
+;* V149 tmp140 [V149 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP
+;* V150 tmp141 [V150 ] ( 0, 0 ) byref -> zero-ref single-def "field V78._reference (fldOffset=0x0)" P-INDEP
+;* V151 tmp142 [V151 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
+;* V152 tmp143 [V152 ] ( 0, 0 ) byref -> zero-ref single-def "field V82._reference (fldOffset=0x0)" P-INDEP
+;* V153 tmp144 [V153 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
+;* V154 tmp145 [V154 ] ( 0, 0 ) byref -> zero-ref single-def "field V85._reference (fldOffset=0x0)" P-INDEP
+;* V155 tmp146 [V155 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
+;* V156 tmp147 [V156 ] ( 0, 0 ) byref -> zero-ref single-def "field V88._reference (fldOffset=0x0)" P-INDEP
+;* V157 tmp148 [V157 ] ( 0, 0 ) int -> zero-ref "field V88._length (fldOffset=0x8)" P-INDEP
+;* V158 tmp149 [V158 ] ( 0, 0 ) byref -> zero-ref single-def "field V89._reference (fldOffset=0x0)" P-INDEP
+;* V159 tmp150 [V159 ] ( 0, 0 ) int -> zero-ref "field V89._length (fldOffset=0x8)" P-INDEP
+; V160 tmp151 [V160,T49] ( 2, 2 ) byref -> rdi single-def "field V97._reference (fldOffset=0x0)" P-INDEP
+;* V161 tmp152 [V161 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x8)" P-INDEP
+;* V162 tmp153 [V162 ] ( 0, 0 ) byref -> zero-ref single-def "field V103._reference (fldOffset=0x0)" P-INDEP
+;* V163 tmp154 [V163 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP
+;* V164 tmp155 [V164 ] ( 0, 0 ) byref -> zero-ref single-def "field V105._reference (fldOffset=0x0)" P-INDEP
+;* V165 tmp156 [V165 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
+;* V166 tmp157 [V166 ] ( 0, 0 ) byref -> zero-ref single-def "field V106._reference (fldOffset=0x0)" P-INDEP
+;* V167 tmp158 [V167 ] ( 0, 0 ) int -> zero-ref "field V106._length (fldOffset=0x8)" P-INDEP
+;* V168 tmp159 [V168 ] ( 0, 0 ) byref -> zero-ref single-def "field V110._reference (fldOffset=0x0)" P-INDEP
+;* V169 tmp160 [V169 ] ( 0, 0 ) int -> zero-ref "field V110._length (fldOffset=0x8)" P-INDEP
+;* V170 tmp161 [V170 ] ( 0, 0 ) byref -> zero-ref single-def "field V113._reference (fldOffset=0x0)" P-INDEP
+;* V171 tmp162 [V171 ] ( 0, 0 ) int -> zero-ref "field V113._length (fldOffset=0x8)" P-INDEP
+; V172 tmp163 [V172,T06] ( 4, 7 ) long -> r14 "Cast away GC"
+; V173 tmp164 [V173,T20] ( 4, 4 ) long -> r14 "Cast away GC"
+; V174 tmp165 [V174,T07] ( 4, 7 ) long -> [rbp-0xD0] spill-single-def "Cast away GC"
+; V175 tmp166 [V175,T08] ( 4, 7 ) long -> [rbp-0xD8] spill-single-def "Cast away GC"
+; V176 tmp167 [V176,T21] ( 4, 4 ) long -> [rbp-0xE0] spill-single-def "Cast away GC"
+; V177 tmp168 [V177,T22] ( 4, 4 ) long -> [rbp-0xE8] spill-single-def "Cast away GC"
+; V178 tmp169 [V178,T24] ( 2, 4 ) long -> rdi "Cast away GC"
+; V179 tmp170 [V179,T25] ( 2, 4 ) long -> rdi "Cast away GC"
+; V180 tmp171 [V180,T26] ( 2, 4 ) long -> rdi "argument with side effect"
+; V181 GsCookie [V181 ] ( 1, 1 ) long -> [rbp-0x100] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V182 cse0 [V182,T15] ( 6, 5 ) ref -> r13 "CSE #01: moderate"
+; V183 rat0 [V183,T12] ( 3, 6 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
+; V184 rat1 [V184,T36] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
+; V185 rat2 [V185,T13] ( 3, 6 ) long -> r9 "ReplaceWithLclVar is creating a new local variable"
+; V186 rat3 [V186,T37] ( 3, 3 ) long -> r9 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 232
G_M16815_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
+ sub rsp, 232
+ lea rbp, [rsp+0x110]
xor eax, eax
- mov qword ptr [rbp-0x48], rax
+ mov qword ptr [rbp-0xC8], rax
vxorps xmm8, xmm8, xmm8
+ vmovdqu32 zmmword ptr [rbp-0xC0], zmm8
+ vmovdqu32 zmmword ptr [rbp-0x80], zmm8
vmovdqa xmmword ptr [rbp-0x40], xmm8
mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x50], 0xD1FFAB1E
+ mov qword ptr [rbp-0x100], 0xD1FFAB1E
mov rbx, rdi
- ;; size=50 bbWeight=1 PerfScore 12.58
+ ;; size=76 bbWeight=1 PerfScore 16.58
G_M16815_IG02:
mov rax, 0xD1FFAB1E ; code for System.IO.Path:GetTempPath():System.String
call [rax]System.IO.Path:GetTempPath():System.String
mov r15, rax
- mov rdi, 0xD1FFAB1E ; const ptr
- mov r14, gword ptr [rdi]
+ test r15, r15
+ je G_M16815_IG29
+ lea rdx, bword ptr [r15+0x0C]
+ mov bword ptr [rbp-0x38], rdx
+ mov r14, bword ptr [rbp-0x38]
+ mov rdx, 0xD1FFAB1E ; const ptr
+ mov r13, gword ptr [rdx]
+ mov r12, r13
+ mov eax, dword ptr [r15+0x08]
+ mov dword ptr [rbp-0x3C], eax
+ lea rdx, [rbp-0x48]
+ lea rcx, [rbp-0x50]
mov rdi, r14
- mov rsi, r15
- mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetByteCount(System.String):int:this
- call [rax]System.Text.UTF8Encoding:GetByteCount(System.String):int:this
- mov r13d, eax
- test rbx, rbx
+ mov esi, eax
+ mov r8, 0xD1FFAB1E ; code for System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong
+ call [r8]System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong
+ sub rax, r14
+ mov rcx, rax
+ shr rcx, 63
+ add rcx, rax
+ sar rcx, 1
+ movsxd rax, ecx
+ add rax, qword ptr [rbp-0x48]
+ cmp rax, 0xD1FFAB1E
+ ja G_M16815_IG28
+ mov dword ptr [rbp-0x40], eax
+ mov edx, dword ptr [rbp-0x3C]
+ cmp ecx, edx
je SHORT G_M16815_IG04
- ;; size=54 bbWeight=1 PerfScore 11.00
+ ;; size=130 bbWeight=1 PerfScore 26.00
G_M16815_IG03:
- mov rdi, r14
- mov rsi, rbx
- mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetByteCount(System.String):int:this
- call [rax]System.Text.UTF8Encoding:GetByteCount(System.String):int:this
- jmp SHORT G_M16815_IG05
- ;; size=20 bbWeight=0.50 PerfScore 2.88
+ mov rdi, r12
+ mov rsi, r14
+ mov r8, 0xD1FFAB1E ; code for System.Text.Encoding:GetByteCountWithFallback(ulong,int,int):int:this
+ call [r8]System.Text.Encoding:GetByteCountWithFallback(ulong,int,int):int:this
+ add eax, dword ptr [rbp-0x40]
+ mov r14d, eax
+ mov dword ptr [rbp-0x40], r14d
+ test r14d, r14d
+ jl G_M16815_IG28
+ ;; size=38 bbWeight=0.50 PerfScore 4.12
G_M16815_IG04:
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ xor rdx, rdx
+ mov bword ptr [rbp-0x38], rdx
+ test rbx, rbx
+ je G_M16815_IG09
+ ;; size=15 bbWeight=1 PerfScore 2.50
G_M16815_IG05:
- add eax, r13d
- jo G_M16815_IG24
- add eax, 6
- jo G_M16815_IG24
- add eax, 1
- jo G_M16815_IG24
- cmp eax, 256
- jbe SHORT G_M16815_IG07
- ;; size=34 bbWeight=1 PerfScore 5.00
+ lea rdx, bword ptr [rbx+0x0C]
+ mov bword ptr [rbp-0x58], rdx
+ mov r14, bword ptr [rbp-0x58]
+ mov r12, r13
+ mov r8d, dword ptr [rbx+0x08]
+ mov dword ptr [rbp-0x5C], r8d
+ lea rdx, [rbp-0x68]
+ lea rcx, [rbp-0x70]
+ mov rdi, r14
+ mov esi, r8d
+ mov r9, 0xD1FFAB1E ; code for System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong
+ call [r9]System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong
+ sub rax, r14
+ mov rcx, rax
+ shr rcx, 63
+ add rcx, rax
+ sar rcx, 1
+ movsxd rax, ecx
+ add rax, qword ptr [rbp-0x68]
+ cmp rax, 0xD1FFAB1E
+ ja G_M16815_IG28
+ mov dword ptr [rbp-0x60], eax
+ mov edx, dword ptr [rbp-0x5C]
+ cmp ecx, edx
+ jne SHORT G_M16815_IG07
+ ;; size=95 bbWeight=0.50 PerfScore 9.50
G_M16815_IG06:
- movsxd rsi, eax
+ mov r14d, dword ptr [rbp-0x60]
+ jmp SHORT G_M16815_IG08
+ ;; size=6 bbWeight=0.25 PerfScore 0.75
+G_M16815_IG07:
+ mov rdi, r12
+ mov rsi, r14
+ mov r8, 0xD1FFAB1E ; code for System.Text.Encoding:GetByteCountWithFallback(ulong,int,int):int:this
+ call [r8]System.Text.Encoding:GetByteCountWithFallback(ulong,int,int):int:this
+ add eax, dword ptr [rbp-0x60]
+ mov r14d, eax
+ test r14d, r14d
+ jl G_M16815_IG28
+ ;; size=34 bbWeight=0.50 PerfScore 3.62
+G_M16815_IG08:
+ xor rsi, rsi
+ mov bword ptr [rbp-0x58], rsi
+ mov eax, r14d
+ mov esi, eax
+ jmp SHORT G_M16815_IG10
+ ;; size=13 bbWeight=0.50 PerfScore 1.88
+G_M16815_IG09:
+ xor esi, esi
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M16815_IG10:
+ mov eax, dword ptr [rbp-0x40]
+ add esi, eax
+ jo G_M16815_IG31
+ add esi, 6
+ jo G_M16815_IG31
+ add esi, 1
+ jo G_M16815_IG31
+ cmp esi, 256
+ jbe SHORT G_M16815_IG12
+ ;; size=37 bbWeight=1 PerfScore 6.00
+G_M16815_IG11:
+ movsxd rsi, esi
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
- lea r13, bword ptr [rax+0x10]
+ lea r14, bword ptr [rax+0x10]
mov r12d, dword ptr [rax+0x08]
- jmp SHORT G_M16815_IG10
+ jmp SHORT G_M16815_IG15
;; size=28 bbWeight=0.50 PerfScore 3.00
-G_M16815_IG07:
- mov ecx, eax
- mov r13, rcx
- test r13, r13
- je SHORT G_M16815_IG09
- mov r8, r13
- add r8, 15
- and r8, -16
- neg r8
- add r8, rsp
- jb SHORT G_M16815_IG08
- xor r8d, r8d
- ;; size=32 bbWeight=0.50 PerfScore 2.12
-G_M16815_IG08:
+G_M16815_IG12:
+ mov r8d, esi
+ mov r14, r8
+ test r14, r14
+ je SHORT G_M16815_IG14
+ mov r9, r14
+ add r9, 15
+ and r9, -16
+ add rsp, 16
+ neg r9
+ add r9, rsp
+ jb SHORT G_M16815_IG13
+ xor r9d, r9d
+ ;; size=37 bbWeight=0.50 PerfScore 2.25
+G_M16815_IG13:
test dword ptr [rsp], esp
sub rsp, 0x1000
- cmp rsp, r8
- jae SHORT G_M16815_IG08
- mov rsp, r8
- lea r13, [rsp]
- ;; size=22 bbWeight=0.50 PerfScore 2.62
-G_M16815_IG09:
- mov r12d, eax
- ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M16815_IG10:
- mov rdi, r14
- test r15, r15
- je SHORT G_M16815_IG12
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M16815_IG11:
- lea rsi, bword ptr [r15+0x0C]
- mov edx, dword ptr [r15+0x08]
- jmp SHORT G_M16815_IG13
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M16815_IG12:
- xor rsi, rsi
- xor edx, edx
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M16815_IG13:
- mov rcx, r13
- mov r8d, r12d
- mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
- call [rax]System.Text.UTF8Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
- mov r15d, eax
- test rbx, rbx
- je SHORT G_M16815_IG15
- ;; size=26 bbWeight=1 PerfScore 5.25
+ cmp rsp, r9
+ jae SHORT G_M16815_IG13
+ mov rsp, r9
+ test dword ptr [rsp], esp
+ sub rsp, 16
+ lea r14, [rsp+0x10]
+ ;; size=30 bbWeight=0.50 PerfScore 4.25
G_M16815_IG14:
- mov rdi, r14
- lea rsi, bword ptr [rbx+0x0C]
- mov edx, dword ptr [rbx+0x08]
- cmp r15d, r12d
- ja G_M16815_IG22
- mov ecx, r15d
- add rcx, r13
- mov r8d, r12d
- sub r8d, r15d
- mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
- call [rax]System.Text.UTF8Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this
- add r15d, eax
- ;; size=46 bbWeight=0.50 PerfScore 4.25
+ mov r12d, esi
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
G_M16815_IG15:
- mov edi, r15d
+ mov gword ptr [rbp-0xF0], r13
+ lea r10, bword ptr [r15+0x0C]
+ mov r15d, dword ptr [r15+0x08]
+ mov bword ptr [rbp-0x78], r10
+ mov qword ptr [rbp-0xD0], r10
+ mov bword ptr [rbp-0x80], r14
+ mov r11, r14
+ mov qword ptr [rbp-0xD8], r11
+ lea r8, [rbp-0x88]
+ lea r9, [rbp-0x90]
+ mov rdi, r10
+ mov esi, r15d
+ mov rdx, r11
+ mov ecx, r12d
+ mov rax, 0xD1FFAB1E ; code for System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int
+ call [rax]System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int
+ mov r9, qword ptr [rbp-0x88]
+ mov rsi, qword ptr [rbp-0xD0]
+ sub r9, rsi
+ mov rdi, r9
+ shr rdi, 63
+ add r9, rdi
+ sar r9, 1
+ mov eax, dword ptr [rbp-0x90]
+ mov rcx, qword ptr [rbp-0xD8]
+ sub eax, ecx
+ cmp r9d, r15d
+ je SHORT G_M16815_IG17
+ ;; size=128 bbWeight=1 PerfScore 20.25
+G_M16815_IG16:
+ mov dword ptr [rsp], eax
+ mov dword ptr [rsp+0x08], 1
+ mov rdi, gword ptr [rbp-0xF0]
+ mov edx, r15d
+ mov r8d, r12d
+ mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:GetBytesWithFallback(ulong,int,ulong,int,int,int,ubyte):int:this
+ call [rax]System.Text.Encoding:GetBytesWithFallback(ulong,int,ulong,int,int,int,ubyte):int:this
+ mov r15d, eax
+ jmp SHORT G_M16815_IG18
+ ;; size=41 bbWeight=0.50 PerfScore 4.50
+G_M16815_IG17:
+ mov r15d, eax
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M16815_IG18:
+ xor r8, r8
+ mov bword ptr [rbp-0x78], r8
+ ;; size=7 bbWeight=1 PerfScore 1.25
+G_M16815_IG19:
+ mov bword ptr [rbp-0x80], r8
+ mov eax, r15d
+ test rbx, rbx
+ je G_M16815_IG23
+ ;; size=16 bbWeight=1 PerfScore 2.50
+G_M16815_IG20:
+ mov gword ptr [rbp-0xF8], r13
+ lea r10, bword ptr [rbx+0x0C]
+ mov ebx, dword ptr [rbx+0x08]
+ cmp r15d, r12d
+ ja G_M16815_IG27
+ mov r11d, r15d
+ add r11, r14
+ mov ecx, r12d
+ sub ecx, r15d
+ mov dword ptr [rbp-0x94], ecx
+ mov bword ptr [rbp-0xA0], r10
+ mov qword ptr [rbp-0xE0], r10
+ mov bword ptr [rbp-0xA8], r11
+ mov qword ptr [rbp-0xE8], r11
+ lea r8, [rbp-0xB0]
+ lea r9, [rbp-0xB8]
+ mov rdi, r10
+ mov esi, ebx
+ mov rdx, r11
+ mov rax, 0xD1FFAB1E ; code for System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int
+ call [rax]System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int
+ mov r9, qword ptr [rbp-0xB0]
+ mov rsi, qword ptr [rbp-0xE0]
+ sub r9, rsi
+ mov rdi, r9
+ shr rdi, 63
+ add r9, rdi
+ sar r9, 1
+ mov eax, dword ptr [rbp-0xB8]
+ mov rcx, qword ptr [rbp-0xE8]
+ sub eax, ecx
+ cmp r9d, ebx
+ je SHORT G_M16815_IG21
+ mov dword ptr [rsp], eax
+ mov dword ptr [rsp+0x08], 1
+ mov rdi, gword ptr [rbp-0xF8]
+ mov edx, ebx
+ mov r8d, dword ptr [rbp-0x94]
+ mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:GetBytesWithFallback(ulong,int,ulong,int,int,int,ubyte):int:this
+ call [rax]System.Text.Encoding:GetBytesWithFallback(ulong,int,ulong,int,int,int,ubyte):int:this
+ ;; size=192 bbWeight=0.50 PerfScore 15.25
+G_M16815_IG21:
+ xor rdi, rdi
+ mov bword ptr [rbp-0xA0], rdi
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M16815_IG22:
+ mov bword ptr [rbp-0xA8], rdi
+ add eax, r15d
+ ;; size=10 bbWeight=0.50 PerfScore 0.62
+G_M16815_IG23:
+ mov edi, eax
add rdi, 6
- mov eax, r12d
- cmp rdi, rax
- ja G_M16815_IG22
- mov edi, r15d
- add rdi, r13
- mov eax, 0xD1FFAB1E
- mov dword ptr [rdi], eax
- mov word ptr [rdi+0x04], ax
- lea edi, [r15+0x06]
+ mov ecx, r12d
+ cmp rdi, rcx
+ ja G_M16815_IG27
+ mov edi, eax
+ add rdi, r14
+ mov ecx, 0xD1FFAB1E
+ mov dword ptr [rdi], ecx
+ mov word ptr [rdi+0x04], cx
+ lea edi, [rax+0x06]
cmp edi, r12d
- jae G_M16815_IG23
- mov byte ptr [rdi+r13], 0
- mov rdi, r13
+ jae G_M16815_IG30
+ add eax, 6
+ mov edi, eax
+ mov byte ptr [r14+rdi], 0
+ mov rdi, r14
mov bword ptr [rbp-0x30], rdi
mov rax, 0xD1FFAB1E ; code for Interop+Sys:MkdTemp(ulong):ulong
call [rax]Interop+Sys:MkdTemp(ulong):ulong
test rax, rax
- je G_M16815_IG21
+ je SHORT G_M16815_IG26
xor edi, edi
mov bword ptr [rbp-0x30], rdi
- lea ebx, [r12-0x01]
- cmp ebx, r12d
- ja G_M16815_IG22
+ mov rdx, r13
+ lea esi, [r12-0x01]
+ cmp esi, r12d
+ ja SHORT G_M16815_IG27
mov edi, 1
- test ebx, ebx
- cmove r13, rdi
- mov bword ptr [rbp-0x40], r13
+ test esi, esi
+ cmove r14, rdi
+ mov bword ptr [rbp-0xC8], r14
mov rdi, r14
- mov rsi, r13
- mov edx, ebx
- mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetCharCount(ulong,int):int:this
- call [rax]System.Text.UTF8Encoding:GetCharCount(ulong,int):int:this
- mov r15d, eax
- test r15d, r15d
- je SHORT G_M16815_IG17
- ;; size=145 bbWeight=1 PerfScore 23.50
-G_M16815_IG16:
- mov edi, r15d
- call System.String:FastAllocateString(int):System.String
- mov r12, rax
- cmp byte ptr [r12], r12b
- lea rcx, bword ptr [r12+0x0C]
- mov bword ptr [rbp-0x48], rcx
- mov rcx, bword ptr [rbp-0x48]
- mov rsi, r13
- mov edx, ebx
- mov rdi, r14
- mov r8d, r15d
- mov rax, 0xD1FFAB1E ; code for System.Text.UTF8Encoding:GetChars(ulong,int,ulong,int):int:this
- call [rax]System.Text.UTF8Encoding:GetChars(ulong,int,ulong,int):int:this
- xor eax, eax
- mov bword ptr [rbp-0x48], rax
- mov rax, r12
- jmp SHORT G_M16815_IG18
- ;; size=62 bbWeight=0.50 PerfScore 7.38
-G_M16815_IG17:
- mov rax, 0xD1FFAB1E ; ''
- ;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M16815_IG18:
- cmp qword ptr [rbp-0x50], 0xD1FFAB1E
- je SHORT G_M16815_IG19
+ mov rax, 0xD1FFAB1E ; code for System.String:CreateStringFromEncoding(ulong,int,System.Text.Encoding):System.String
+ call [rax]System.String:CreateStringFromEncoding(ulong,int,System.Text.Encoding):System.String
+ cmp qword ptr [rbp-0x100], 0xD1FFAB1E
+ je SHORT G_M16815_IG24
call CORINFO_HELP_FAIL_FAST
- ;; size=15 bbWeight=1 PerfScore 4.00
-G_M16815_IG19:
+ ;; size=150 bbWeight=1 PerfScore 26.25
+G_M16815_IG24:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M16815_IG20:
+G_M16815_IG25:
lea rsp, [rbp-0x28]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.50
-G_M16815_IG21:
+G_M16815_IG26:
mov rax, 0xD1FFAB1E ; code for Interop+Sys:GetLastErrorInfo():Interop+ErrorInfo
call [rax]Interop+Sys:GetLastErrorInfo():Interop+ErrorInfo
- mov qword ptr [rbp-0x38], rax
- mov rdi, qword ptr [rbp-0x38]
+ mov qword ptr [rbp-0xC0], rax
+ mov rdi, qword ptr [rbp-0xC0]
xor rsi, rsi
xor edx, edx
mov rax, 0xD1FFAB1E ; code for Interop:ThrowExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte)
call [rax]Interop:ThrowExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte)
int3
- ;; size=37 bbWeight=0.50 PerfScore 4.62
-G_M16815_IG22:
+ ;; size=43 bbWeight=0.50 PerfScore 4.62
+G_M16815_IG27:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M16815_IG23:
+G_M16815_IG28:
+ mov rax, 0xD1FFAB1E ; code for System.Text.Encoding:ThrowConversionOverflow()
+ call [rax]System.Text.Encoding:ThrowConversionOverflow()
+ int3
+ ;; size=13 bbWeight=0.50 PerfScore 1.75
+G_M16815_IG29:
+ mov edi, 14
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int)
+ call [rax]System.ThrowHelper:ThrowArgumentNullException(int)
+ int3
+ ;; size=18 bbWeight=0.50 PerfScore 1.88
+G_M16815_IG30:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M16815_IG24:
+G_M16815_IG31:
call CORINFO_HELP_OVERFLOW
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 649, prolog size 47, PerfScore 99.08, instruction count 175, allocated bytes for code 649 (MethodHash=7248be50) for method System.IO.Directory:CreateTempSubdirectoryCore(System.String):System.String (FullOpts)
+; Total bytes of code 1215, prolog size 73, PerfScore 166.83, instruction count 298, allocated bytes for code 1215 (MethodHash=7248be50) for method System.IO.Directory:CreateTempSubdirectoryCore(System.String):System.String (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/8f4ca5817bf81f5e933d44cc7d277a24 |
Top method improvements-485 (-28.30 % of base) - System.Xml.Schema.SchemaCollectionCompiler:Cleanup():this ; Assembly listing for method System.Xml.Schema.SchemaCollectionCompiler:Cleanup():this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 31 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 46 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T22] ( 7, 7 ) ref -> rbx this class-hnd single-def <System.Xml.Schema.SchemaCollectionCompiler>
-; V01 loc0 [V01,T00] ( 25, 70 ) ref -> [rbp-0x30] do-not-enreg[M] class-hnd EH-live <System.Collections.IEnumerator>
-; V02 loc1 [V02,T15] ( 30, 12.50) ref -> rax class-hnd <System.IDisposable>
+; V00 this [V00,T26] ( 7, 7 ) ref -> rbx this class-hnd single-def <System.Xml.Schema.SchemaCollectionCompiler>
+; V01 loc0 [V01,T00] ( 15, 65 ) ref -> [rbp-0x28] do-not-enreg[M] class-hnd EH-live <System.Collections.IEnumerator>
+;* V02 loc1 [V02,T37] ( 0, 0 ) ref -> zero-ref class-hnd <System.IDisposable>
; V03 loc2 [V03,T14] ( 5, 17 ) ref -> r15 class-hnd <System.Xml.Schema.XmlSchemaType>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.Schema.XmlSchema>
-; V06 tmp2 [V06,T29] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Xml.Schema.XmlSchemaObjectTable>
-; V07 tmp3 [V07,T39] ( 2, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
-; V08 tmp4 [V08,T23] ( 4, 8 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
-; V09 tmp5 [V09,T30] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Xml.Schema.XmlSchemaObject]>
-; V10 tmp6 [V10,T44] ( 2, 4 ) int -> r14 "Inlining Arg"
-; V11 tmp7 [V11,T08] ( 3, 24 ) ref -> r15 class-hnd "Inlining Arg" <System.Xml.Schema.XmlSchemaGroup>
-; V12 tmp8 [V12,T31] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Xml.Schema.XmlSchemaObjectTable>
-; V13 tmp9 [V13,T40] ( 2, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
-; V14 tmp10 [V14,T24] ( 4, 8 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
-; V15 tmp11 [V15,T32] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Xml.Schema.XmlSchemaObject]>
-; V16 tmp12 [V16,T45] ( 2, 4 ) int -> r14 "Inlining Arg"
-; V17 tmp13 [V17,T33] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Xml.Schema.XmlSchemaObjectTable>
-; V18 tmp14 [V18,T41] ( 2, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
-; V19 tmp15 [V19,T25] ( 4, 8 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
-; V20 tmp16 [V20,T34] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Xml.Schema.XmlSchemaObject]>
-; V21 tmp17 [V21,T46] ( 2, 4 ) int -> r14 "Inlining Arg"
-;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.Schema.XmlSchemaSimpleType>
-; V23 tmp19 [V23,T35] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Xml.Schema.XmlSchemaObjectTable>
-; V24 tmp20 [V24,T42] ( 2, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
-; V25 tmp21 [V25,T26] ( 4, 8 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
-; V26 tmp22 [V26,T36] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Xml.Schema.XmlSchemaObject]>
-; V27 tmp23 [V27,T47] ( 2, 4 ) int -> r14 "Inlining Arg"
-; V28 tmp24 [V28,T37] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Xml.Schema.XmlSchemaObjectTable>
-; V29 tmp25 [V29,T43] ( 2, 4 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
-; V30 tmp26 [V30,T27] ( 4, 8 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
-; V31 tmp27 [V31,T38] ( 3, 6 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Xml.Schema.XmlSchemaObject]>
-; V32 tmp28 [V32,T48] ( 2, 4 ) int -> r13 "Inlining Arg"
-; V33 tmp29 [V33,T07] ( 4, 28 ) ref -> rbx class-hnd "Inlining Arg" <System.Xml.Schema.XmlSchemaAttribute>
-;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.Schema.XmlSchemaSimpleType>
-; V35 tmp31 [V35,T09] ( 3, 18 ) ref -> rax "argument with side effect"
-; V36 tmp32 [V36,T10] ( 3, 18 ) ref -> rax "argument with side effect"
-; V37 tmp33 [V37,T11] ( 3, 18 ) ref -> rax "argument with side effect"
-; V38 tmp34 [V38,T12] ( 3, 18 ) ref -> rax "argument with side effect"
-; V39 tmp35 [V39,T13] ( 3, 18 ) ref -> rax "argument with side effect"
-; V40 cse0 [V40,T28] ( 6, 6 ) long -> r13 "CSE #02: moderate"
-; V41 rat0 [V41 ] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
-; V42 rat1 [V42,T01] ( 5, 30 ) ref -> r15 "replacement local"
-; V43 rat2 [V43,T16] ( 3, 10 ) long -> rdi "CSE for expectedClsNode"
-; V44 rat3 [V44,T02] ( 5, 30 ) ref -> rdi "replacement local"
-; V45 rat4 [V45,T17] ( 3, 10 ) long -> rcx "CSE for expectedClsNode"
-; V46 rat5 [V46,T03] ( 5, 30 ) ref -> r15 "replacement local"
-; V47 rat6 [V47,T18] ( 3, 10 ) long -> rdi "CSE for expectedClsNode"
-; V48 rat7 [V48,T04] ( 5, 30 ) ref -> rax "replacement local"
-; V49 rat8 [V49,T19] ( 3, 10 ) long -> rdi "CSE for expectedClsNode"
-; V50 rat9 [V50,T05] ( 5, 30 ) ref -> rdi "replacement local"
-; V51 rat10 [V51,T20] ( 3, 10 ) long -> rcx "CSE for expectedClsNode"
-; V52 rat11 [V52,T06] ( 5, 30 ) ref -> rbx "replacement local"
-; V53 rat12 [V53,T21] ( 3, 10 ) long -> rdi "CSE for expectedClsNode"
+; V06 tmp2 [V06,T27] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Xml.Schema.XmlSchemaObjectTable>
+; V07 tmp3 [V07,T38] ( 2, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
+;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
+; V09 tmp5 [V09,T28] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Xml.Schema.XmlSchemaObject]>
+; V10 tmp6 [V10,T43] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V11 tmp7 [V11,T15] ( 5, 10 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+XSOEnumerator>
+;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
+;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V14 tmp10 [V14,T08] ( 3, 24 ) ref -> r15 class-hnd "Inlining Arg" <System.Xml.Schema.XmlSchemaGroup>
+; V15 tmp11 [V15,T29] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Xml.Schema.XmlSchemaObjectTable>
+; V16 tmp12 [V16,T39] ( 2, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
+;* V17 tmp13 [V17 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
+; V18 tmp14 [V18,T30] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Xml.Schema.XmlSchemaObject]>
+; V19 tmp15 [V19,T44] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V20 tmp16 [V20,T16] ( 5, 10 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+XSOEnumerator>
+;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
+;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V23 tmp19 [V23,T31] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Xml.Schema.XmlSchemaObjectTable>
+; V24 tmp20 [V24,T40] ( 2, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
+;* V25 tmp21 [V25 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
+; V26 tmp22 [V26,T32] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Xml.Schema.XmlSchemaObject]>
+; V27 tmp23 [V27,T45] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V28 tmp24 [V28,T17] ( 5, 10 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+XSOEnumerator>
+;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
+;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.Schema.XmlSchemaSimpleType>
+; V32 tmp28 [V32,T33] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Xml.Schema.XmlSchemaObjectTable>
+; V33 tmp29 [V33,T41] ( 2, 4 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
+;* V34 tmp30 [V34 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
+; V35 tmp31 [V35,T34] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Xml.Schema.XmlSchemaObject]>
+; V36 tmp32 [V36,T46] ( 2, 4 ) int -> r14 "Inlining Arg"
+; V37 tmp33 [V37,T18] ( 5, 10 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+XSOEnumerator>
+;* V38 tmp34 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
+;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V40 tmp36 [V40,T35] ( 3, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <System.Xml.Schema.XmlSchemaObjectTable>
+; V41 tmp37 [V41,T42] ( 2, 4 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
+;* V42 tmp38 [V42 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
+; V43 tmp39 [V43,T36] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Xml.Schema.XmlSchemaObject]>
+; V44 tmp40 [V44,T47] ( 2, 4 ) int -> r15 "Inlining Arg"
+; V45 tmp41 [V45,T19] ( 5, 10 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Xml.Schema.XmlSchemaObjectTable+XSOEnumerator>
+;* V46 tmp42 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Xml.Schema.XmlSchemaObjectTable+XmlSchemaObjectEntry]>
+;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V48 tmp44 [V48,T07] ( 4, 28 ) ref -> rbx class-hnd "Inlining Arg" <System.Xml.Schema.XmlSchemaAttribute>
+;* V49 tmp45 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.Schema.XmlSchemaSimpleType>
+;* V50 tmp46 [V50 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
+;* V51 tmp47 [V51 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
+;* V52 tmp48 [V52 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
+;* V53 tmp49 [V53 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
+;* V54 tmp50 [V54 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection>
+;* V55 tmp51 [V55 ] ( 0, 0 ) long -> zero-ref "V50.[000..008)"
+;* V56 tmp52 [V56 ] ( 0, 0 ) ref -> zero-ref single-def "V50.[008..016)"
+;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref "V50.[016..020)"
+;* V58 tmp54 [V58 ] ( 0, 0 ) long -> zero-ref "V51.[000..008)"
+;* V59 tmp55 [V59 ] ( 0, 0 ) ref -> zero-ref single-def "V51.[008..016)"
+;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref "V51.[016..020)"
+;* V61 tmp57 [V61 ] ( 0, 0 ) long -> zero-ref "V52.[000..008)"
+;* V62 tmp58 [V62 ] ( 0, 0 ) ref -> zero-ref single-def "V52.[008..016)"
+;* V63 tmp59 [V63 ] ( 0, 0 ) int -> zero-ref "V52.[016..020)"
+;* V64 tmp60 [V64 ] ( 0, 0 ) long -> zero-ref "V53.[000..008)"
+;* V65 tmp61 [V65 ] ( 0, 0 ) ref -> zero-ref single-def "V53.[008..016)"
+;* V66 tmp62 [V66 ] ( 0, 0 ) int -> zero-ref "V53.[016..020)"
+;* V67 tmp63 [V67 ] ( 0, 0 ) long -> zero-ref "V54.[000..008)"
+;* V68 tmp64 [V68 ] ( 0, 0 ) ref -> zero-ref single-def "V54.[008..016)"
+;* V69 tmp65 [V69 ] ( 0, 0 ) int -> zero-ref "V54.[016..020)"
+; V70 tmp66 [V70,T09] ( 3, 18 ) ref -> rax "argument with side effect"
+; V71 tmp67 [V71,T10] ( 3, 18 ) ref -> rax "argument with side effect"
+; V72 tmp68 [V72,T11] ( 3, 18 ) ref -> rax "argument with side effect"
+; V73 tmp69 [V73,T12] ( 3, 18 ) ref -> rax "argument with side effect"
+; V74 tmp70 [V74,T13] ( 3, 18 ) ref -> rax "argument with side effect"
+; V75 rat0 [V75 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V76 rat1 [V76,T01] ( 5, 30 ) ref -> r15 "replacement local"
+; V77 rat2 [V77,T20] ( 3, 10 ) long -> rdi "CSE for expectedClsNode"
+; V78 rat3 [V78,T02] ( 5, 30 ) ref -> rdi "replacement local"
+; V79 rat4 [V79,T21] ( 3, 10 ) long -> rcx "CSE for expectedClsNode"
+; V80 rat5 [V80,T03] ( 5, 30 ) ref -> r15 "replacement local"
+; V81 rat6 [V81,T22] ( 3, 10 ) long -> rdi "CSE for expectedClsNode"
+; V82 rat7 [V82,T04] ( 5, 30 ) ref -> rax "replacement local"
+; V83 rat8 [V83,T23] ( 3, 10 ) long -> rdi "CSE for expectedClsNode"
+; V84 rat9 [V84,T05] ( 5, 30 ) ref -> rdi "replacement local"
+; V85 rat10 [V85,T24] ( 3, 10 ) long -> rcx "CSE for expectedClsNode"
+; V86 rat11 [V86,T06] ( 5, 30 ) ref -> rbx "replacement local"
+; V87 rat12 [V87,T25] ( 3, 10 ) long -> rdi "CSE for expectedClsNode"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M62330_IG01:
push rbp
push r15
push r14
push r13
- push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
- mov qword ptr [rbp-0x40], rsp
+ sub rsp, 16
+ lea rbp, [rsp+0x30]
+ mov qword ptr [rbp-0x30], rsp
mov rbx, rdi
- ;; size=26 bbWeight=1 PerfScore 8.00
+ ;; size=24 bbWeight=1 PerfScore 7.00
G_M62330_IG02:
mov rdi, gword ptr [rbx+0x48]
mov rdi, gword ptr [rdi+0x80]
mov r15, gword ptr [rdi+0x10]
- mov r14, gword ptr [rdi+0x08]
- mov r13, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection
- mov rdi, r13
+ mov rdi, gword ptr [rdi+0x08]
+ mov r14d, dword ptr [rdi+0x38]
+ sub r14d, dword ptr [rdi+0x40]
+ mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaObjectTable+XSOEnumerator
call CORINFO_HELP_NEWSFAST
- mov r12, rax
- mov eax, dword ptr [r14+0x38]
- sub eax, dword ptr [r14+0x40]
- mov r14d, eax
- lea rdi, bword ptr [r12+0x08]
+ mov r13, rax
+ lea rdi, bword ptr [r13+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- mov dword ptr [r12+0x10], r14d
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection:GetEnumerator():System.Collections.IEnumerator:this
- call [rax]System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection:GetEnumerator():System.Collections.IEnumerator:this
- mov gword ptr [rbp-0x30], rax
- ;; size=88 bbWeight=1 PerfScore 22.25
+ mov dword ptr [r13+0x28], r14d
+ mov rdi, 0xD1FFAB1E
+ mov qword ptr [r13+0x20], rdi
+ mov gword ptr [rbp-0x28], r13
+ ;; size=79 bbWeight=1 PerfScore 19.50
G_M62330_IG03:
jmp SHORT G_M62330_IG05
;; size=2 bbWeight=1 PerfScore 2.00
G_M62330_IG04:
mov rdi, gword ptr [r15+0x50]
mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.SchemaCollectionCompiler:CleanupParticle(System.Xml.Schema.XmlSchemaParticle)
call [rax]System.Xml.Schema.SchemaCollectionCompiler:CleanupParticle(System.Xml.Schema.XmlSchemaParticle)
- xor rsi, rsi
- mov gword ptr [r15+0x58], rsi
+ xor rdi, rdi
+ mov gword ptr [r15+0x58], rdi
;; size=22 bbWeight=4 PerfScore 26.00
G_M62330_IG05:
- mov rdi, gword ptr [rbp-0x30]
+ mov rdi, gword ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
je SHORT G_M62330_IG09
;; size=21 bbWeight=8 PerfScore 44.00
G_M62330_IG06:
- mov rdi, gword ptr [rbp-0x30]
+ mov rdi, gword ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:get_Current():System.Object:this
call [r11]System.Collections.IEnumerator:get_Current():System.Object:this
mov r15, rax
test r15, r15
je SHORT G_M62330_IG04
;; size=25 bbWeight=4 PerfScore 23.00
G_M62330_IG07:
mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaGroup
cmp qword ptr [r15], rdi
je SHORT G_M62330_IG04
;; size=15 bbWeight=2 PerfScore 8.50
G_M62330_IG08:
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov r15, rax
jmp SHORT G_M62330_IG04
;; size=20 bbWeight=1 PerfScore 5.75
G_M62330_IG09:
- mov rsi, gword ptr [rbp-0x30]
- mov rdi, 0xD1FFAB1E ; System.IDisposable
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
- call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
- test rax, rax
- je SHORT G_M62330_IG11
- ;; size=31 bbWeight=1 PerfScore 5.75
-G_M62330_IG10:
- mov rdi, rax
- mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
- call [r11]System.IDisposable:Dispose():this
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M62330_IG11:
mov rdi, gword ptr [rbx+0x48]
mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.XmlSchema:get_AttributeGroups():System.Xml.Schema.XmlSchemaObjectTable:this
cmp dword ptr [rdi], edi
call [rax]System.Xml.Schema.XmlSchema:get_AttributeGroups():System.Xml.Schema.XmlSchemaObjectTable:this
mov r15, gword ptr [rax+0x10]
- mov r14, gword ptr [rax+0x08]
- mov rdi, r13
+ mov rdi, gword ptr [rax+0x08]
+ mov r14d, dword ptr [rdi+0x38]
+ sub r14d, dword ptr [rdi+0x40]
+ mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaObjectTable+XSOEnumerator
call CORINFO_HELP_NEWSFAST
- mov r12, rax
- mov eax, dword ptr [r14+0x38]
- sub eax, dword ptr [r14+0x40]
- mov r14d, eax
- lea rdi, bword ptr [r12+0x08]
+ mov r13, rax
+ lea rdi, bword ptr [r13+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- mov dword ptr [r12+0x10], r14d
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection:GetEnumerator():System.Collections.IEnumerator:this
- call [rax]System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection:GetEnumerator():System.Collections.IEnumerator:this
- mov gword ptr [rbp-0x30], rax
- ;; size=85 bbWeight=1 PerfScore 26.25
-G_M62330_IG12:
- jmp SHORT G_M62330_IG14
+ mov dword ptr [r13+0x28], r14d
+ mov rdi, 0xD1FFAB1E
+ mov qword ptr [r13+0x20], rdi
+ mov gword ptr [rbp-0x28], r13
+ ;; size=86 bbWeight=1 PerfScore 23.75
+G_M62330_IG10:
+ jmp SHORT G_M62330_IG12
;; size=2 bbWeight=1 PerfScore 2.00
-G_M62330_IG13:
+G_M62330_IG11:
mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.SchemaCollectionCompiler:CleanupAttributeGroup(System.Xml.Schema.XmlSchemaAttributeGroup)
call [rax]System.Xml.Schema.SchemaCollectionCompiler:CleanupAttributeGroup(System.Xml.Schema.XmlSchemaAttributeGroup)
;; size=12 bbWeight=4 PerfScore 13.00
-G_M62330_IG14:
- mov rdi, gword ptr [rbp-0x30]
+G_M62330_IG12:
+ mov rdi, gword ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
- je SHORT G_M62330_IG18
+ je SHORT G_M62330_IG16
;; size=21 bbWeight=8 PerfScore 44.00
-G_M62330_IG15:
- mov rdi, gword ptr [rbp-0x30]
+G_M62330_IG13:
+ mov rdi, gword ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:get_Current():System.Object:this
call [r11]System.Collections.IEnumerator:get_Current():System.Object:this
mov rdi, rax
test rdi, rdi
- je SHORT G_M62330_IG13
+ je SHORT G_M62330_IG11
;; size=25 bbWeight=4 PerfScore 23.00
-G_M62330_IG16:
+G_M62330_IG14:
mov rcx, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaAttributeGroup
cmp qword ptr [rdi], rcx
- je SHORT G_M62330_IG13
+ je SHORT G_M62330_IG11
;; size=15 bbWeight=2 PerfScore 8.50
-G_M62330_IG17:
+G_M62330_IG15:
mov rsi, rax
mov rdi, rcx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov rdi, rax
- jmp SHORT G_M62330_IG13
+ jmp SHORT G_M62330_IG11
;; size=23 bbWeight=1 PerfScore 6.00
-G_M62330_IG18:
- mov rsi, gword ptr [rbp-0x30]
- mov rdi, 0xD1FFAB1E ; System.IDisposable
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
- call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
- test rax, rax
- je SHORT G_M62330_IG20
- ;; size=31 bbWeight=1 PerfScore 5.75
-G_M62330_IG19:
- mov rdi, rax
- mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
- call [r11]System.IDisposable:Dispose():this
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M62330_IG20:
+G_M62330_IG16:
mov rdi, gword ptr [rbx+0x48]
mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.XmlSchema:get_SchemaTypes():System.Xml.Schema.XmlSchemaObjectTable:this
cmp dword ptr [rdi], edi
call [rax]System.Xml.Schema.XmlSchema:get_SchemaTypes():System.Xml.Schema.XmlSchemaObjectTable:this
mov r15, gword ptr [rax+0x10]
- mov r14, gword ptr [rax+0x08]
- mov rdi, r13
+ mov rdi, gword ptr [rax+0x08]
+ mov r14d, dword ptr [rdi+0x38]
+ sub r14d, dword ptr [rdi+0x40]
+ mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaObjectTable+XSOEnumerator
call CORINFO_HELP_NEWSFAST
- mov r12, rax
- mov eax, dword ptr [r14+0x38]
- sub eax, dword ptr [r14+0x40]
- mov r14d, eax
- lea rdi, bword ptr [r12+0x08]
+ mov r13, rax
+ lea rdi, bword ptr [r13+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- mov dword ptr [r12+0x10], r14d
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection:GetEnumerator():System.Collections.IEnumerator:this
- call [rax]System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection:GetEnumerator():System.Collections.IEnumerator:this
- mov gword ptr [rbp-0x30], rax
- ;; size=85 bbWeight=1 PerfScore 26.25
-G_M62330_IG21:
- jmp SHORT G_M62330_IG26
+ mov dword ptr [r13+0x28], r14d
+ mov rdi, 0xD1FFAB1E
+ mov qword ptr [r13+0x20], rdi
+ mov gword ptr [rbp-0x28], r13
+ ;; size=86 bbWeight=1 PerfScore 23.75
+G_M62330_IG17:
+ jmp SHORT G_M62330_IG22
;; size=2 bbWeight=1 PerfScore 2.00
-G_M62330_IG22:
+G_M62330_IG18:
mov rax, r15
test rax, rax
- je SHORT G_M62330_IG25
+ je SHORT G_M62330_IG21
;; size=8 bbWeight=4 PerfScore 6.00
-G_M62330_IG23:
+G_M62330_IG19:
mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaSimpleType
cmp qword ptr [rax], rdi
- je SHORT G_M62330_IG25
+ je SHORT G_M62330_IG21
;; size=15 bbWeight=2 PerfScore 8.50
-G_M62330_IG24:
+G_M62330_IG20:
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
;; size=15 bbWeight=1 PerfScore 3.50
-G_M62330_IG25:
+G_M62330_IG21:
xor rdi, rdi
mov gword ptr [rax+0x60], rdi
;; size=6 bbWeight=4 PerfScore 5.00
-G_M62330_IG26:
- mov rdi, gword ptr [rbp-0x30]
+G_M62330_IG22:
+ mov rdi, gword ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
- je SHORT G_M62330_IG31
+ je SHORT G_M62330_IG27
;; size=21 bbWeight=8 PerfScore 44.00
-G_M62330_IG27:
- mov rdi, gword ptr [rbp-0x30]
+G_M62330_IG23:
+ mov rdi, gword ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:get_Current():System.Object:this
call [r11]System.Collections.IEnumerator:get_Current():System.Object:this
mov r15, rax
test r15, r15
- je SHORT G_M62330_IG30
+ je SHORT G_M62330_IG26
;; size=25 bbWeight=4 PerfScore 23.00
-G_M62330_IG28:
+G_M62330_IG24:
mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaType
cmp qword ptr [r15], rdi
- je SHORT G_M62330_IG30
+ je SHORT G_M62330_IG26
;; size=15 bbWeight=2 PerfScore 8.50
-G_M62330_IG29:
+G_M62330_IG25:
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov r15, rax
;; size=18 bbWeight=1 PerfScore 3.75
-G_M62330_IG30:
+G_M62330_IG26:
mov rsi, r15
mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaComplexType
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS
call [rax]CORINFO_HELP_ISINSTANCEOFCLASS
test rax, rax
- je G_M62330_IG22
+ je G_M62330_IG18
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.SchemaCollectionCompiler:CleanupComplexType(System.Xml.Schema.XmlSchemaComplexType)
call [rax]System.Xml.Schema.SchemaCollectionCompiler:CleanupComplexType(System.Xml.Schema.XmlSchemaComplexType)
- jmp G_M62330_IG26
+ jmp G_M62330_IG22
;; size=54 bbWeight=4 PerfScore 42.00
-G_M62330_IG31:
- mov rsi, gword ptr [rbp-0x30]
- mov rdi, 0xD1FFAB1E ; System.IDisposable
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
- call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
- test rax, rax
- je SHORT G_M62330_IG33
- ;; size=31 bbWeight=1 PerfScore 5.75
-G_M62330_IG32:
- mov rdi, rax
- mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
- call [r11]System.IDisposable:Dispose():this
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M62330_IG33:
+G_M62330_IG27:
mov rdi, gword ptr [rbx+0x48]
mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.XmlSchema:get_Elements():System.Xml.Schema.XmlSchemaObjectTable:this
cmp dword ptr [rdi], edi
call [rax]System.Xml.Schema.XmlSchema:get_Elements():System.Xml.Schema.XmlSchemaObjectTable:this
mov r15, gword ptr [rax+0x10]
- mov r14, gword ptr [rax+0x08]
- mov rdi, r13
+ mov rdi, gword ptr [rax+0x08]
+ mov r14d, dword ptr [rdi+0x38]
+ sub r14d, dword ptr [rdi+0x40]
+ mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaObjectTable+XSOEnumerator
call CORINFO_HELP_NEWSFAST
- mov r12, rax
- mov eax, dword ptr [r14+0x38]
- sub eax, dword ptr [r14+0x40]
- mov r14d, eax
- lea rdi, bword ptr [r12+0x08]
+ mov r13, rax
+ lea rdi, bword ptr [r13+0x08]
mov rsi, r15
call CORINFO_HELP_ASSIGN_REF
- mov dword ptr [r12+0x10], r14d
- mov rdi, r12
- mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection:GetEnumerator():System.Collections.IEnumerator:this
- call [rax]System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection:GetEnumerator():System.Collections.IEnumerator:this
- mov gword ptr [rbp-0x30], rax
- ;; size=85 bbWeight=1 PerfScore 26.25
-G_M62330_IG34:
- jmp SHORT G_M62330_IG36
+ mov dword ptr [r13+0x28], r14d
+ mov rdi, 0xD1FFAB1E
+ mov qword ptr [r13+0x20], rdi
+ mov gword ptr [rbp-0x28], r13
+ ;; size=86 bbWeight=1 PerfScore 23.75
+G_M62330_IG28:
+ jmp SHORT G_M62330_IG30
;; size=2 bbWeight=1 PerfScore 2.00
-G_M62330_IG35:
+G_M62330_IG29:
mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.SchemaCollectionCompiler:CleanupElement(System.Xml.Schema.XmlSchemaElement)
call [rax]System.Xml.Schema.SchemaCollectionCompiler:CleanupElement(System.Xml.Schema.XmlSchemaElement)
;; size=12 bbWeight=4 PerfScore 13.00
-G_M62330_IG36:
- mov rdi, gword ptr [rbp-0x30]
+G_M62330_IG30:
+ mov rdi, gword ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
- je SHORT G_M62330_IG40
+ je SHORT G_M62330_IG34
;; size=21 bbWeight=8 PerfScore 44.00
-G_M62330_IG37:
- mov rdi, gword ptr [rbp-0x30]
+G_M62330_IG31:
+ mov rdi, gword ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:get_Current():System.Object:this
call [r11]System.Collections.IEnumerator:get_Current():System.Object:this
mov rdi, rax
test rdi, rdi
- je SHORT G_M62330_IG35
+ je SHORT G_M62330_IG29
;; size=25 bbWeight=4 PerfScore 23.00
-G_M62330_IG38:
+G_M62330_IG32:
mov rcx, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaElement
cmp qword ptr [rdi], rcx
- je SHORT G_M62330_IG35
+ je SHORT G_M62330_IG29
;; size=15 bbWeight=2 PerfScore 8.50
-G_M62330_IG39:
+G_M62330_IG33:
mov rsi, rax
mov rdi, rcx
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov rdi, rax
- jmp SHORT G_M62330_IG35
+ jmp SHORT G_M62330_IG29
;; size=23 bbWeight=1 PerfScore 6.00
-G_M62330_IG40:
- mov rsi, gword ptr [rbp-0x30]
- mov rdi, 0xD1FFAB1E ; System.IDisposable
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
- call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
- test rax, rax
- je SHORT G_M62330_IG42
- ;; size=31 bbWeight=1 PerfScore 5.75
-G_M62330_IG41:
- mov rdi, rax
- mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
- call [r11]System.IDisposable:Dispose():this
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M62330_IG42:
+G_M62330_IG34:
mov rdi, gword ptr [rbx+0x48]
mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.XmlSchema:get_Attributes():System.Xml.Schema.XmlSchemaObjectTable:this
cmp dword ptr [rdi], edi
call [rax]System.Xml.Schema.XmlSchema:get_Attributes():System.Xml.Schema.XmlSchemaObjectTable:this
mov rbx, gword ptr [rax+0x10]
- mov r15, gword ptr [rax+0x08]
- mov rdi, r13
+ mov rdi, gword ptr [rax+0x08]
+ mov r15d, dword ptr [rdi+0x38]
+ sub r15d, dword ptr [rdi+0x40]
+ mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaObjectTable+XSOEnumerator
call CORINFO_HELP_NEWSFAST
mov r14, rax
- mov r13d, dword ptr [r15+0x38]
- sub r13d, dword ptr [r15+0x40]
lea rdi, bword ptr [r14+0x08]
mov rsi, rbx
call CORINFO_HELP_ASSIGN_REF
- mov dword ptr [r14+0x10], r13d
- mov rdi, r14
- mov rax, 0xD1FFAB1E ; code for System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection:GetEnumerator():System.Collections.IEnumerator:this
- call [rax]System.Xml.Schema.XmlSchemaObjectTable+ValuesCollection:GetEnumerator():System.Collections.IEnumerator:this
- mov gword ptr [rbp-0x30], rax
- ;; size=80 bbWeight=1 PerfScore 26.00
-G_M62330_IG43:
- jmp SHORT G_M62330_IG48
+ mov dword ptr [r14+0x28], r15d
+ mov rdi, 0xD1FFAB1E
+ mov qword ptr [r14+0x20], rdi
+ mov gword ptr [rbp-0x28], r14
+ ;; size=86 bbWeight=1 PerfScore 23.75
+G_M62330_IG35:
+ jmp SHORT G_M62330_IG40
;; size=2 bbWeight=1 PerfScore 2.00
-G_M62330_IG44:
+G_M62330_IG36:
mov rsi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
call [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
mov rbx, rax
;; size=18 bbWeight=1 PerfScore 3.75
-G_M62330_IG45:
+G_M62330_IG37:
cmp gword ptr [rbx+0x78], 0
- je SHORT G_M62330_IG47
+ je SHORT G_M62330_IG39
;; size=7 bbWeight=4 PerfScore 16.00
-G_M62330_IG46:
- mov rsi, gword ptr [rbx+0x78]
- xor rdi, rdi
- mov gword ptr [rsi+0x60], rdi
+G_M62330_IG38:
+ mov rax, gword ptr [rbx+0x78]
+ xor rcx, rcx
+ mov gword ptr [rax+0x60], rcx
;; size=10 bbWeight=2 PerfScore 6.50
-G_M62330_IG47:
- xor rsi, rsi
- mov gword ptr [rbx+0x88], rsi
+G_M62330_IG39:
+ xor rax, rax
+ mov gword ptr [rbx+0x88], rax
;; size=9 bbWeight=4 PerfScore 5.00
-G_M62330_IG48:
- mov rdi, gword ptr [rbp-0x30]
+G_M62330_IG40:
+ mov rdi, gword ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
test eax, eax
- je SHORT G_M62330_IG51
+ je SHORT G_M62330_IG43
;; size=21 bbWeight=8 PerfScore 44.00
-G_M62330_IG49:
- mov rdi, gword ptr [rbp-0x30]
+G_M62330_IG41:
+ mov rdi, gword ptr [rbp-0x28]
mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:get_Current():System.Object:this
call [r11]System.Collections.IEnumerator:get_Current():System.Object:this
mov rbx, rax
test rbx, rbx
- je SHORT G_M62330_IG45
+ je SHORT G_M62330_IG37
;; size=25 bbWeight=4 PerfScore 23.00
-G_M62330_IG50:
+G_M62330_IG42:
mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaAttribute
cmp qword ptr [rbx], rdi
- je SHORT G_M62330_IG45
- jmp SHORT G_M62330_IG44
+ je SHORT G_M62330_IG37
+ jmp SHORT G_M62330_IG36
;; size=17 bbWeight=2 PerfScore 12.50
+G_M62330_IG43:
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=1 PerfScore 3.75
+G_M62330_IG44:
+ push rbp
+ push r15
+ push r14
+ push r13
+ push rbx
+ sub rsp, 16
+ mov rbp, qword ptr [rdi]
+ mov qword ptr [rsp], rbp
+ lea rbp, [rbp+0x30]
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M62330_IG45:
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M62330_IG46:
+ push rbp
+ push r15
+ push r14
+ push r13
+ push rbx
+ sub rsp, 16
+ mov rbp, qword ptr [rdi]
+ mov qword ptr [rsp], rbp
+ lea rbp, [rbp+0x30]
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M62330_IG47:
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M62330_IG48:
+ push rbp
+ push r15
+ push r14
+ push r13
+ push rbx
+ sub rsp, 16
+ mov rbp, qword ptr [rdi]
+ mov qword ptr [rsp], rbp
+ lea rbp, [rbp+0x30]
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M62330_IG49:
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M62330_IG50:
+ push rbp
+ push r15
+ push r14
+ push r13
+ push rbx
+ sub rsp, 16
+ mov rbp, qword ptr [rdi]
+ mov qword ptr [rsp], rbp
+ lea rbp, [rbp+0x30]
+ ;; size=23 bbWeight=0 PerfScore 0.00
G_M62330_IG51:
- mov rsi, gword ptr [rbp-0x30]
- mov rdi, 0xD1FFAB1E ; System.IDisposable
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
- call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
- test rax, rax
- je SHORT G_M62330_IG53
- ;; size=31 bbWeight=1 PerfScore 5.75
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0 PerfScore 0.00
G_M62330_IG52:
- mov rdi, rax
- mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
- call [r11]System.IDisposable:Dispose():this
- ;; size=16 bbWeight=0.50 PerfScore 1.75
+ push rbp
+ push r15
+ push r14
+ push r13
+ push rbx
+ sub rsp, 16
+ mov rbp, qword ptr [rdi]
+ mov qword ptr [rsp], rbp
+ lea rbp, [rbp+0x30]
+ ;; size=23 bbWeight=0 PerfScore 0.00
G_M62330_IG53:
- nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M62330_IG54:
- add rsp, 24
+ add rsp, 16
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M62330_IG55:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- push rax
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x40]
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M62330_IG56:
- mov rsi, gword ptr [rbp-0x30]
- mov rdi, 0xD1FFAB1E ; System.IDisposable
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
- call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
- test rax, rax
- je SHORT G_M62330_IG57
- mov rdi, rax
- mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
- call [r11]System.IDisposable:Dispose():this
- ;; size=47 bbWeight=0 PerfScore 0.00
-G_M62330_IG57:
- nop
- ;; size=1 bbWeight=0 PerfScore 0.00
-G_M62330_IG58:
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M62330_IG59:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- push rax
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x40]
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M62330_IG60:
- mov rsi, gword ptr [rbp-0x30]
- mov rdi, 0xD1FFAB1E ; System.IDisposable
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
- call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
- test rax, rax
- je SHORT G_M62330_IG61
- mov rdi, rax
- mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
- call [r11]System.IDisposable:Dispose():this
- ;; size=47 bbWeight=0 PerfScore 0.00
-G_M62330_IG61:
- nop
- ;; size=1 bbWeight=0 PerfScore 0.00
-G_M62330_IG62:
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M62330_IG63:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- push rax
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x40]
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M62330_IG64:
- mov rsi, gword ptr [rbp-0x30]
- mov rdi, 0xD1FFAB1E ; System.IDisposable
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
- call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
- test rax, rax
- je SHORT G_M62330_IG65
- mov rdi, rax
- mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
- call [r11]System.IDisposable:Dispose():this
- ;; size=47 bbWeight=0 PerfScore 0.00
-G_M62330_IG65:
- nop
- ;; size=1 bbWeight=0 PerfScore 0.00
-G_M62330_IG66:
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M62330_IG67:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- push rax
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x40]
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M62330_IG68:
- mov rsi, gword ptr [rbp-0x30]
- mov rdi, 0xD1FFAB1E ; System.IDisposable
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
- call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
- test rax, rax
- je SHORT G_M62330_IG69
- mov rdi, rax
- mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
- call [r11]System.IDisposable:Dispose():this
- ;; size=47 bbWeight=0 PerfScore 0.00
-G_M62330_IG69:
- nop
- ;; size=1 bbWeight=0 PerfScore 0.00
-G_M62330_IG70:
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M62330_IG71:
- push rbp
- push r15
- push r14
- push r13
- push r12
- push rbx
- push rax
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x40]
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M62330_IG72:
- mov rsi, gword ptr [rbp-0x30]
- mov rdi, 0xD1FFAB1E ; System.IDisposable
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
- call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
- test rax, rax
- je SHORT G_M62330_IG73
- mov rdi, rax
- mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this
- call [r11]System.IDisposable:Dispose():this
- ;; size=47 bbWeight=0 PerfScore 0.00
-G_M62330_IG73:
- nop
- ;; size=1 bbWeight=0 PerfScore 0.00
-G_M62330_IG74:
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1714, prolog size 26, PerfScore 738.25, instruction count 440, allocated bytes for code 1714 (MethodHash=3d230c85) for method System.Xml.Schema.SchemaCollectionCompiler:Cleanup():this (FullOpts)
+; Total bytes of code 1229, prolog size 24, PerfScore 686.50, instruction count 322, allocated bytes for code 1229 (MethodHash=3d230c85) for method System.Xml.Schema.SchemaCollectionCompiler:Cleanup():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/29f7c64533ac1f38494fbfab361ab505 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 15 minutes.
dotnet/runtime#110827
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: