Diffs are based on 2,501,261 contexts (1,003,806 MinOpts, 1,497,455 FullOpts).
MISSED contexts: base: 3,546 (0.14%), diff: 3,956 (0.16%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.linux.arm64.checked.mch | 509,785,008 | +3,556 |
libraries.crossgen2.linux.arm64.checked.mch | 55,736,760 | -384 |
libraries.pmi.linux.arm64.checked.mch | 75,995,136 | +60 |
libraries_tests.run.linux.arm64.Release.mch | 380,612,024 | +651,896 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 162,531,948 | -888 |
smoke_tests.nativeaot.linux.arm64.checked.mch | 2,948,924 | +128 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.linux.arm64.checked.mch | 160,559,952 | +3,556 |
libraries.crossgen2.linux.arm64.checked.mch | 55,735,124 | -384 |
libraries.pmi.linux.arm64.checked.mch | 75,875,152 | +60 |
libraries_tests.run.linux.arm64.Release.mch | 165,314,884 | +651,896 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 149,050,736 | -888 |
smoke_tests.nativeaot.linux.arm64.checked.mch | 2,947,976 | +128 |
@@ -9,52 +9,53 @@
; 4 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T01] ( 6, 6 ) byref -> x20 single-def
-; V02 arg1 [V02,T04] ( 14, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T05] ( 14, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T00] ( 6, 6.54) int -> x19
-; V04 arg3 [V04,T06] ( 4, 3.89) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T08] ( 3, 3 ) ubyte -> x24 single-def
-; V06 loc0 [V06,T20] ( 3, 2.40) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T24] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T22] ( 7, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T19] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.89) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T09] ( 3, 3 ) ubyte -> x24 single-def
+; V06 loc0 [V06,T21] ( 3, 2.40) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T25] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T23] ( 7, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.40) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.16) int -> x22
-; V12 loc6 [V12,T03] ( 7, 5.94) ref -> x27 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 5.94) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T12] ( 5, 4 ) ref -> x28 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T07] ( 5, 5 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V20 tmp7 [V20,T14] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T13] ( 5, 4 ) ref -> x28 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T08] ( 5, 5 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V20 tmp7 [V20,T15] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V24 tmp11 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V25 tmp12 [V25,T13] ( 4, 4 ) byref -> x22 single-def "Inlining Arg"
+; V25 tmp12 [V25,T14] ( 4, 4 ) byref -> x22 single-def "Inlining Arg"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V27 tmp14 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V28 tmp15 [V28,T11] ( 14, 4 ) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
-; V29 tmp16 [V29,T26] ( 4, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp15 [V28,T12] ( 14, 4 ) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp16 [V29,T27] ( 4, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T23] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V32 tmp19 [V32,T15] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V33 tmp20 [V33,T17] ( 4, 3 ) ref -> x0
-; V34 tmp21 [V34,T28] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V35 tmp22 [V35,T27] ( 4, 0 ) ref -> x0
-; V36 tmp23 [V36,T16] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V31 tmp18 [V31,T24] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
+; V32 tmp19 [V32,T16] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V33 tmp20 [V33,T18] ( 4, 3 ) ref -> x0
+; V34 tmp21 [V34,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V35 tmp22 [V35,T28] ( 4, 0 ) ref -> x0
+; V36 tmp23 [V36,T17] ( 2, 4 ) int -> x1 "Inlining Arg"
; V37 tmp24 [V37 ] ( 3, 3.40) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V38 tmp25 [V38 ] ( 3, 3.40) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V39 tmp26 [V39 ] ( 3, 3.40) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V40 tmp27 [V40 ] ( 3, 3.40) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V41 tmp28 [V41,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V42 cse0 [V42,T09] ( 3, 4.62) int -> x0 "CSE - moderate"
-; V43 cse1 [V43,T18] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V44 cse2 [V44,T10] ( 4, 4.54) int -> x24 "CSE - aggressive"
-; V45 cse3 [V45,T21] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
+;* V41 tmp28 [V41,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V42 cse0 [V42,T10] ( 3, 4.62) int -> x0 "CSE - moderate"
+; V43 cse1 [V43,T19] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V44 cse2 [V44,T03] ( 10, 6.52) long -> x27 hoist multi-def "CSE - aggressive"
+; V45 cse3 [V45,T11] ( 4, 4.54) int -> x24 "CSE - moderate"
+; V46 cse4 [V46,T22] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
;
; Lcl frame size = 32
@@ -146,7 +147,7 @@ G_M37807_IG07: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=10
;; size=4 bbWeight=1 PerfScore 0.50
G_M37807_IG08: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=100000 {x20}, byref, isz
tst w24, #255
- bne G_M37807_IG31
+ bne G_M37807_IG32
b G_M37807_IG04
;; size=12 bbWeight=1 PerfScore 2.50
G_M37807_IG09: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=100000 {x20}, byref
@@ -225,8 +226,8 @@ G_M37807_IG13: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=1
;; size=12 bbWeight=1 PerfScore 4.50
G_M37807_IG14: ; bbWeight=0, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=100000 {x20}, byref, isz
cmp w27, #2
- beq G_M37807_IG32
- b G_M37807_IG34
+ beq G_M37807_IG33
+ b G_M37807_IG35
;; size=12 bbWeight=0 PerfScore 0.00
G_M37807_IG15: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=100000 {x20}, byref, isz
add x0, x24, #32
@@ -270,30 +271,36 @@ G_M37807_IG17: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100
stp wzr, w1, [fp, #0x28] // [V39 tmp26], [V40 tmp27]
mov w22, wzr
cmp w24, #0
- ble G_M37807_IG29
+ ble G_M37807_IG30
;; size=32 bbWeight=1 PerfScore 8.00
G_M37807_IG18: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100000 {x20}, byref
add x28, x0, #16
; byrRegs +[x28]
- ;; size=4 bbWeight=0.61 PerfScore 0.30
+ movz x27, #0xD1FFAB1E
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #0xD1FFAB1E LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.21
G_M37807_IG19: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
; gcrRegs -[x0]
- ldr x27, [x28, w22, UXTW #3]
- ; gcrRegs +[x27]
- ldr w0, [x27, #0x58]
+ ldr x2, [x28, w22, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w19, w0
cmp w1, w0
bne G_M37807_IG26
- ;; size=20 bbWeight=1.54 PerfScore 12.32
-G_M37807_IG20: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
+ ;; size=24 bbWeight=1.54 PerfScore 13.86
+G_M37807_IG20: ; bbWeight=1.40, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, gcvars, byref, isz
cbz w25, G_M37807_IG22
;; size=4 bbWeight=1.40 PerfScore 1.40
-G_M37807_IG21: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG21: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -301,28 +308,26 @@ G_M37807_IG21: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=1
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG36
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ cbz w0, G_M37807_IG37
+ mov x0, x27
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- cbz x23, G_M37807_IG25
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ cbz x23, G_M37807_IG28
;; size=4 bbWeight=1.40 PerfScore 1.40
-G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ add x1, x27, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x27
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x27]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -331,23 +336,19 @@ G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG28
- ;; size=56 bbWeight=0.49 PerfScore 10.21
-G_M37807_IG24: ; bbWeight=0.24, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ bne G_M37807_IG29
+ ;; size=48 bbWeight=0.49 PerfScore 10.45
+G_M37807_IG24: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.24 PerfScore 0.61
-G_M37807_IG25: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ;; size=8 bbWeight=0.24 PerfScore 0.36
+G_M37807_IG25: ; bbWeight=1.40, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x27
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -356,41 +357,45 @@ G_M37807_IG25: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x27]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.40 PerfScore 14.73
+ ;; size=48 bbWeight=1.40 PerfScore 15.44
G_M37807_IG26: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w22, w22, #1
cmp w24, w22
bgt G_M37807_IG19
- ;; size=28 bbWeight=1.54 PerfScore 6.93
+ ;; size=20 bbWeight=1.54 PerfScore 5.39
G_M37807_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x28]
- b G_M37807_IG29
+ b G_M37807_IG30
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG28: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
...
@@ -9,52 +9,53 @@
; 4 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T01] ( 6, 6 ) byref -> x20 single-def
-; V02 arg1 [V02,T04] ( 14, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T05] ( 14, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T00] ( 6, 6.54) int -> x19
-; V04 arg3 [V04,T06] ( 4, 3.89) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T08] ( 3, 3 ) ubyte -> x24 single-def
-; V06 loc0 [V06,T20] ( 3, 2.40) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T24] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T22] ( 7, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T19] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.89) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T09] ( 3, 3 ) ubyte -> x24 single-def
+; V06 loc0 [V06,T21] ( 3, 2.40) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T25] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T23] ( 7, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.40) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.16) int -> x22
-; V12 loc6 [V12,T03] ( 7, 5.94) ref -> x27 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 5.94) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T12] ( 5, 4 ) ref -> x28 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T07] ( 5, 5 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V20 tmp7 [V20,T14] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T13] ( 5, 4 ) ref -> x28 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T08] ( 5, 5 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V20 tmp7 [V20,T15] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V24 tmp11 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V25 tmp12 [V25,T13] ( 4, 4 ) byref -> x22 single-def "Inlining Arg"
+; V25 tmp12 [V25,T14] ( 4, 4 ) byref -> x22 single-def "Inlining Arg"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V27 tmp14 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V28 tmp15 [V28,T11] ( 14, 4 ) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
-; V29 tmp16 [V29,T26] ( 4, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp15 [V28,T12] ( 14, 4 ) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp16 [V29,T27] ( 4, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T23] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V32 tmp19 [V32,T15] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V33 tmp20 [V33,T17] ( 4, 3 ) ref -> x0
-; V34 tmp21 [V34,T28] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V35 tmp22 [V35,T27] ( 4, 0 ) ref -> x0
-; V36 tmp23 [V36,T16] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V31 tmp18 [V31,T24] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
+; V32 tmp19 [V32,T16] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V33 tmp20 [V33,T18] ( 4, 3 ) ref -> x0
+; V34 tmp21 [V34,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V35 tmp22 [V35,T28] ( 4, 0 ) ref -> x0
+; V36 tmp23 [V36,T17] ( 2, 4 ) int -> x1 "Inlining Arg"
; V37 tmp24 [V37 ] ( 3, 3.40) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V38 tmp25 [V38 ] ( 3, 3.40) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V39 tmp26 [V39 ] ( 3, 3.40) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V40 tmp27 [V40 ] ( 3, 3.40) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V41 tmp28 [V41,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V42 cse0 [V42,T09] ( 3, 4.62) int -> x0 "CSE - moderate"
-; V43 cse1 [V43,T18] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V44 cse2 [V44,T10] ( 4, 4.54) int -> x24 "CSE - aggressive"
-; V45 cse3 [V45,T21] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
+;* V41 tmp28 [V41,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V42 cse0 [V42,T10] ( 3, 4.62) int -> x0 "CSE - moderate"
+; V43 cse1 [V43,T19] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V44 cse2 [V44,T03] ( 10, 6.52) long -> x27 hoist multi-def "CSE - aggressive"
+; V45 cse3 [V45,T11] ( 4, 4.54) int -> x24 "CSE - moderate"
+; V46 cse4 [V46,T22] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
;
; Lcl frame size = 32
@@ -146,7 +147,7 @@ G_M37807_IG07: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=10
;; size=4 bbWeight=1 PerfScore 0.50
G_M37807_IG08: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=100000 {x20}, byref, isz
tst w24, #255
- bne G_M37807_IG31
+ bne G_M37807_IG32
b G_M37807_IG04
;; size=12 bbWeight=1 PerfScore 2.50
G_M37807_IG09: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=100000 {x20}, byref
@@ -225,8 +226,8 @@ G_M37807_IG13: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=1
;; size=12 bbWeight=1 PerfScore 4.50
G_M37807_IG14: ; bbWeight=0, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=100000 {x20}, byref, isz
cmp w27, #2
- beq G_M37807_IG32
- b G_M37807_IG34
+ beq G_M37807_IG33
+ b G_M37807_IG35
;; size=12 bbWeight=0 PerfScore 0.00
G_M37807_IG15: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=100000 {x20}, byref, isz
add x0, x24, #32
@@ -270,30 +271,36 @@ G_M37807_IG17: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100
stp wzr, w1, [fp, #0x28] // [V39 tmp26], [V40 tmp27]
mov w22, wzr
cmp w24, #0
- ble G_M37807_IG29
+ ble G_M37807_IG30
;; size=32 bbWeight=1 PerfScore 8.00
G_M37807_IG18: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100000 {x20}, byref
add x28, x0, #16
; byrRegs +[x28]
- ;; size=4 bbWeight=0.61 PerfScore 0.30
+ movz x27, #0xD1FFAB1E
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #0xD1FFAB1E LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.21
G_M37807_IG19: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
; gcrRegs -[x0]
- ldr x27, [x28, w22, UXTW #3]
- ; gcrRegs +[x27]
- ldr w0, [x27, #0x58]
+ ldr x2, [x28, w22, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w19, w0
cmp w1, w0
bne G_M37807_IG26
- ;; size=20 bbWeight=1.54 PerfScore 12.32
-G_M37807_IG20: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
+ ;; size=24 bbWeight=1.54 PerfScore 13.86
+G_M37807_IG20: ; bbWeight=1.40, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, gcvars, byref, isz
cbz w25, G_M37807_IG22
;; size=4 bbWeight=1.40 PerfScore 1.40
-G_M37807_IG21: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG21: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -301,28 +308,26 @@ G_M37807_IG21: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=1
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG36
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ cbz w0, G_M37807_IG37
+ mov x0, x27
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- cbz x23, G_M37807_IG25
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ cbz x23, G_M37807_IG28
;; size=4 bbWeight=1.40 PerfScore 1.40
-G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ add x1, x27, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x27
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x27]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -331,23 +336,19 @@ G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG28
- ;; size=56 bbWeight=0.49 PerfScore 10.21
-G_M37807_IG24: ; bbWeight=0.24, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ bne G_M37807_IG29
+ ;; size=48 bbWeight=0.49 PerfScore 10.45
+G_M37807_IG24: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.24 PerfScore 0.61
-G_M37807_IG25: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ;; size=8 bbWeight=0.24 PerfScore 0.36
+G_M37807_IG25: ; bbWeight=1.40, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x27
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -356,41 +357,45 @@ G_M37807_IG25: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x27]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.40 PerfScore 14.73
+ ;; size=48 bbWeight=1.40 PerfScore 15.44
G_M37807_IG26: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w22, w22, #1
cmp w24, w22
bgt G_M37807_IG19
- ;; size=28 bbWeight=1.54 PerfScore 6.93
+ ;; size=20 bbWeight=1.54 PerfScore 5.39
G_M37807_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x28]
- b G_M37807_IG29
+ b G_M37807_IG30
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG28: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
...
@@ -9,52 +9,53 @@
; 4 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T01] ( 6, 6 ) byref -> x20 single-def
-; V02 arg1 [V02,T04] ( 14, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T05] ( 14, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T00] ( 6, 6.54) int -> x19
-; V04 arg3 [V04,T06] ( 4, 3.89) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T08] ( 3, 3 ) ubyte -> x24 single-def
-; V06 loc0 [V06,T20] ( 3, 2.40) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T24] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T22] ( 7, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T19] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.89) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T09] ( 3, 3 ) ubyte -> x24 single-def
+; V06 loc0 [V06,T21] ( 3, 2.40) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T25] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T23] ( 7, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.40) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.16) int -> x22
-; V12 loc6 [V12,T03] ( 7, 5.94) ref -> x27 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 5.94) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T12] ( 5, 4 ) ref -> x28 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T07] ( 5, 5 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V20 tmp7 [V20,T14] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T13] ( 5, 4 ) ref -> x28 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T08] ( 5, 5 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V20 tmp7 [V20,T15] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V24 tmp11 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V25 tmp12 [V25,T13] ( 4, 4 ) byref -> x22 single-def "Inlining Arg"
+; V25 tmp12 [V25,T14] ( 4, 4 ) byref -> x22 single-def "Inlining Arg"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V27 tmp14 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V28 tmp15 [V28,T11] ( 14, 4 ) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
-; V29 tmp16 [V29,T26] ( 4, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp15 [V28,T12] ( 14, 4 ) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp16 [V29,T27] ( 4, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T23] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V32 tmp19 [V32,T15] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V33 tmp20 [V33,T17] ( 4, 3 ) ref -> x0
-; V34 tmp21 [V34,T28] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V35 tmp22 [V35,T27] ( 4, 0 ) ref -> x0
-; V36 tmp23 [V36,T16] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V31 tmp18 [V31,T24] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
+; V32 tmp19 [V32,T16] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V33 tmp20 [V33,T18] ( 4, 3 ) ref -> x0
+; V34 tmp21 [V34,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V35 tmp22 [V35,T28] ( 4, 0 ) ref -> x0
+; V36 tmp23 [V36,T17] ( 2, 4 ) int -> x1 "Inlining Arg"
; V37 tmp24 [V37 ] ( 3, 3.40) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V38 tmp25 [V38 ] ( 3, 3.40) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V39 tmp26 [V39 ] ( 3, 3.40) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V40 tmp27 [V40 ] ( 3, 3.40) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V41 tmp28 [V41,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V42 cse0 [V42,T09] ( 3, 4.62) int -> x0 "CSE - moderate"
-; V43 cse1 [V43,T18] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V44 cse2 [V44,T10] ( 4, 4.54) int -> x24 "CSE - aggressive"
-; V45 cse3 [V45,T21] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
+;* V41 tmp28 [V41,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V42 cse0 [V42,T10] ( 3, 4.62) int -> x0 "CSE - moderate"
+; V43 cse1 [V43,T19] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V44 cse2 [V44,T03] ( 10, 6.52) long -> x27 hoist multi-def "CSE - aggressive"
+; V45 cse3 [V45,T11] ( 4, 4.54) int -> x24 "CSE - moderate"
+; V46 cse4 [V46,T22] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
;
; Lcl frame size = 32
@@ -146,7 +147,7 @@ G_M37807_IG07: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=10
;; size=4 bbWeight=1 PerfScore 0.50
G_M37807_IG08: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=100000 {x20}, byref, isz
tst w24, #255
- bne G_M37807_IG31
+ bne G_M37807_IG32
b G_M37807_IG04
;; size=12 bbWeight=1 PerfScore 2.50
G_M37807_IG09: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=100000 {x20}, byref
@@ -225,8 +226,8 @@ G_M37807_IG13: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=1
;; size=12 bbWeight=1 PerfScore 4.50
G_M37807_IG14: ; bbWeight=0, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=100000 {x20}, byref, isz
cmp w27, #2
- beq G_M37807_IG32
- b G_M37807_IG34
+ beq G_M37807_IG33
+ b G_M37807_IG35
;; size=12 bbWeight=0 PerfScore 0.00
G_M37807_IG15: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=100000 {x20}, byref, isz
add x0, x24, #32
@@ -270,30 +271,36 @@ G_M37807_IG17: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100
stp wzr, w1, [fp, #0x28] // [V39 tmp26], [V40 tmp27]
mov w22, wzr
cmp w24, #0
- ble G_M37807_IG29
+ ble G_M37807_IG30
;; size=32 bbWeight=1 PerfScore 8.00
G_M37807_IG18: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100000 {x20}, byref
add x28, x0, #16
; byrRegs +[x28]
- ;; size=4 bbWeight=0.61 PerfScore 0.30
+ movz x27, #0xD1FFAB1E
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #0xD1FFAB1E LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.21
G_M37807_IG19: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
; gcrRegs -[x0]
- ldr x27, [x28, w22, UXTW #3]
- ; gcrRegs +[x27]
- ldr w0, [x27, #0x58]
+ ldr x2, [x28, w22, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w19, w0
cmp w1, w0
bne G_M37807_IG26
- ;; size=20 bbWeight=1.54 PerfScore 12.32
-G_M37807_IG20: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
+ ;; size=24 bbWeight=1.54 PerfScore 13.86
+G_M37807_IG20: ; bbWeight=1.40, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, gcvars, byref, isz
cbz w25, G_M37807_IG22
;; size=4 bbWeight=1.40 PerfScore 1.40
-G_M37807_IG21: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG21: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -301,28 +308,26 @@ G_M37807_IG21: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=1
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG36
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ cbz w0, G_M37807_IG37
+ mov x0, x27
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- cbz x23, G_M37807_IG25
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ cbz x23, G_M37807_IG28
;; size=4 bbWeight=1.40 PerfScore 1.40
-G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ add x1, x27, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x27
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x27]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -331,23 +336,19 @@ G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG28
- ;; size=56 bbWeight=0.49 PerfScore 10.21
-G_M37807_IG24: ; bbWeight=0.24, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ bne G_M37807_IG29
+ ;; size=48 bbWeight=0.49 PerfScore 10.45
+G_M37807_IG24: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.24 PerfScore 0.61
-G_M37807_IG25: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ;; size=8 bbWeight=0.24 PerfScore 0.36
+G_M37807_IG25: ; bbWeight=1.40, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x27
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -356,41 +357,45 @@ G_M37807_IG25: ; bbWeight=1.40, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x27]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.40 PerfScore 14.73
+ ;; size=48 bbWeight=1.40 PerfScore 15.44
G_M37807_IG26: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w22, w22, #1
cmp w24, w22
bgt G_M37807_IG19
- ;; size=28 bbWeight=1.54 PerfScore 6.93
+ ;; size=20 bbWeight=1.54 PerfScore 5.39
G_M37807_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x28]
- b G_M37807_IG29
+ b G_M37807_IG30
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG28: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
...
@@ -10,27 +10,27 @@
;
; V00 this [V00,T23] ( 9, 22.50) ref -> x19 this class-hnd single-def <System.Buffers.SharedArrayPool`1[ushort]>
; V01 loc0 [V01,T13] ( 5, 33.50) int -> x20
-; V02 loc1 [V02,T33] ( 5, 19 ) int -> x21
+; V02 loc1 [V02,T32] ( 5, 19 ) int -> x21
; V03 loc2 [V03,T22] ( 7, 27 ) ref -> x22 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T46] ( 4, 10 ) ref -> x23 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T32] ( 6, 19 ) int -> x24
-; V06 loc5 [V06,T40] ( 8, 10.50) ref -> [fp+0x48] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T45] ( 4, 10 ) ref -> x23 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T31] ( 6, 19 ) int -> x24
+; V06 loc5 [V06,T39] ( 8, 10.50) ref -> [fp+0x40] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T41] ( 8, 10.50) ref -> [fp+0x40] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T40] ( 8, 10.50) ref -> [fp+0x38] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T27] ( 3, 20 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T26] ( 3, 20 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T05] ( 5, 66 ) int -> x20
; V12 loc11 [V12,T03] ( 6, 64 ) ref -> x25 class-hnd <<unknown class>>
-; V13 loc12 [V13,T47] ( 2, 8.50) int -> x24
-; V14 loc13 [V14,T70] ( 3, 1.50) int -> x24
-; V15 loc14 [V15,T42] ( 8, 10.50) ref -> [fp+0x38] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T46] ( 2, 8.50) int -> x24
+; V14 loc13 [V14,T69] ( 3, 1.50) int -> x24
+; V15 loc14 [V15,T41] ( 8, 10.50) ref -> [fp+0x30] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T11] ( 5, 36 ) ref -> x25 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T11] ( 6, 44 ) ref -> x25 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> x27
-; V19 loc18 [V19,T25] ( 3, 24 ) int -> x3
-; V20 loc19 [V20,T08] ( 6, 48 ) ref -> [fp+0x30] class-hnd spill-single-def <<unknown class>>
+; V19 loc18 [V19,T24] ( 3, 24 ) int -> x2
+; V20 loc19 [V20,T08] ( 6, 48 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T28] ( 3, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T27] ( 3, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T12] ( 2, 36 ) int -> x26 "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -40,76 +40,75 @@
; V29 tmp8 [V29,T18] ( 2, 32 ) int -> x27 "impAppendStmt"
; V30 tmp9 [V30,T19] ( 2, 32 ) int -> x25 "impAppendStmt"
;* V31 tmp10 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V32 tmp11 [V32,T58] ( 3, 3 ) ref -> x19 single-def "handle histogram profile tmp"
+; V32 tmp11 [V32,T57] ( 3, 3 ) ref -> x19 single-def "handle histogram profile tmp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V36 tmp15 [V36,T59] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
+; V36 tmp15 [V36,T58] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
; V38 tmp17 [V38,T02] ( 3, 96 ) ref -> x25 "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V42 tmp21 [V42,T60] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
+; V42 tmp21 [V42,T59] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V44 tmp23 [V44,T10] ( 3, 48 ) ref -> [fp+0x28] spill-single-def "handle histogram profile tmp"
+; V44 tmp23 [V44,T10] ( 3, 48 ) ref -> [fp+0x20] spill-single-def "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V48 tmp27 [V48,T29] ( 3, 20 ) int -> x27 "Inline stloc first use temp"
+; V48 tmp27 [V48,T28] ( 3, 20 ) int -> x27 "Inline stloc first use temp"
;* V49 tmp28 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp29 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V51 tmp30 [V51,T54] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V51 tmp30 [V51,T53] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V52 tmp31 [V52,T06] ( 5, 66 ) int -> x25 "Inline stloc first use temp"
; V53 tmp32 [V53,T20] ( 2, 32 ) int -> x4 "Inlining Arg"
; V54 tmp33 [V54,T21] ( 2, 32 ) int -> x4 "Inlining Arg"
-; V55 tmp34 [V55,T55] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T67] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T56] ( 2, 4 ) ref -> x24 "field V09.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T68] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
-; V59 tmp38 [V59,T57] ( 2, 4 ) ref -> x25 "field V16.key (fldOffset=0x0)" P-INDEP
-; V60 tmp39 [V60,T69] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T54] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T66] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T55] ( 2, 4 ) ref -> x24 "field V09.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T67] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
+; V59 tmp38 [V59,T56] ( 2, 4 ) ref -> x25 "field V16.key (fldOffset=0x0)" P-INDEP
+; V60 tmp39 [V60,T68] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V28.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V28.value (fldOffset=0x8)" P-DEP
;* V65 tmp44 [V65 ] ( 0, 0 ) ref -> zero-ref "field V31.key (fldOffset=0x0)" P-DEP
;* V66 tmp45 [V66 ] ( 0, 0 ) ref -> zero-ref "field V31.value (fldOffset=0x8)" P-DEP
-; V67 tmp46 [V67,T61] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V68 tmp47 [V68,T35] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V69 tmp48 [V69,T51] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V67 tmp46 [V67,T60] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V68 tmp47 [V68,T34] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V69 tmp48 [V69,T50] ( 2, 8 ) ref -> x0 "argument with side effect"
; V70 tmp49 [V70,T15] ( 2, 32 ) ref -> x1 "argument with side effect"
-;* V71 tmp50 [V71,T38] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V72 tmp51 [V72,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V73 tmp52 [V73,T62] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V74 tmp53 [V74,T63] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V75 tmp54 [V75,T36] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V76 tmp55 [V76,T52] ( 2, 8 ) ref -> x0 "argument with side effect"
+;* V71 tmp50 [V71,T37] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V72 tmp51 [V72,T71] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V73 tmp52 [V73,T61] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V74 tmp53 [V74,T62] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V75 tmp54 [V75,T35] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V76 tmp55 [V76,T51] ( 2, 8 ) ref -> x0 "argument with side effect"
; V77 tmp56 [V77,T07] ( 2, 64 ) ref -> x1 "argument with side effect"
-;* V78 tmp57 [V78,T39] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V79 tmp58 [V79,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V80 tmp59 [V80,T64] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V81 tmp60 [V81,T65] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V82 tmp61 [V82,T37] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V83 tmp62 [V83,T53] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V84 tmp63 [V84,T74] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V85 tmp64 [V85,T66] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V86 PSPSym [V86,T71] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
-; V87 cse0 [V87,T48] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
-; V88 cse1 [V88,T43] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
-; V89 cse2 [V89,T49] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
-; V90 cse3 [V90,T44] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
-; V91 cse4 [V91,T50] ( 4, 8 ) ref -> x25 multi-def "CSE - moderate"
-; V92 cse5 [V92,T45] ( 6, 10.50) ref -> x25 multi-def "CSE - moderate"
-; V93 cse6 [V93,T24] ( 3, 24 ) byref -> [fp+0x20] spill-single-def "CSE - moderate"
-; V94 cse7 [V94,T09] ( 4, 48 ) long -> x1 "CSE - aggressive"
-; V95 cse8 [V95,T01] ( 48,185.50) long -> registers multi-def "CSE - aggressive"
-; V96 cse9 [V96,T04] ( 3, 68 ) int -> x28 "CSE - aggressive"
-; V97 cse10 [V97,T14] ( 16, 32.50) long -> x23 hoist multi-def "CSE - moderate"
-; V98 cse11 [V98,T26] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
-; V99 cse12 [V99,T34] ( 2, 18 ) byref -> [fp+0x18] spill-single-def hoist "CSE - moderate"
-; V100 cse13 [V100,T30] ( 3, 20 ) int -> x28 "CSE - moderate"
-; V101 cse14 [V101,T31] ( 3, 20 ) int -> x23 "CSE - moderate"
+;* V78 tmp57 [V78,T38] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V79 tmp58 [V79,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V80 tmp59 [V80,T63] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V81 tmp60 [V81,T64] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V82 tmp61 [V82,T36] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V83 tmp62 [V83,T52] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V84 tmp63 [V84,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V85 tmp64 [V85,T65] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V86 PSPSym [V86,T70] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
+; V87 cse0 [V87,T47] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
+; V88 cse1 [V88,T42] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
+; V89 cse2 [V89,T48] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
+; V90 cse3 [V90,T43] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
+; V91 cse4 [V91,T49] ( 4, 8 ) ref -> x25 multi-def "CSE - moderate"
+; V92 cse5 [V92,T44] ( 6, 10.50) ref -> x25 multi-def "CSE - moderate"
+; V93 cse6 [V93,T09] ( 5, 56 ) long -> [fp+0x48] spill-single-def "CSE - aggressive"
+; V94 cse7 [V94,T01] ( 48,185.50) long -> registers multi-def "CSE - aggressive"
+; V95 cse8 [V95,T04] ( 3, 68 ) int -> x28 "CSE - aggressive"
+; V96 cse9 [V96,T14] ( 16, 32.50) long -> x23 hoist multi-def "CSE - moderate"
+; V97 cse10 [V97,T25] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
+; V98 cse11 [V98,T33] ( 2, 18 ) byref -> [fp+0x18] spill-single-def hoist "CSE - moderate"
+; V99 cse12 [V99,T29] ( 3, 20 ) int -> x28 "CSE - moderate"
+; V100 cse13 [V100,T30] ( 3, 20 ) int -> x23 "CSE - moderate"
;
; Lcl frame size = 80
@@ -221,10 +220,10 @@ G_M16016_IG07: ; bbWeight=2, gcrefRegs=2C80000 {x19 x22 x23 x25}, byrefRe
ble G_M16016_IG09
add x5, x0, #16
; byrRegs +[x5]
- str x5, [fp, #0x18] // [V99 cse12]
- ; GC ptr vars +{V99}
+ str x5, [fp, #0x18] // [V98 cse11]
+ ; GC ptr vars +{V98}
;; size=28 bbWeight=2 PerfScore 19.00
-G_M16016_IG08: ; bbWeight=16, gcVars=00000000000000000000000400000000 {V99}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0020 {x5}, gcvars, byref, isz
+G_M16016_IG08: ; bbWeight=16, gcVars=00000000000000000000000200000000 {V98}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0020 {x5}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x0, [x5, w25, UXTW #3]
; gcrRegs +[x0]
@@ -243,13 +242,13 @@ G_M16016_IG08: ; bbWeight=16, gcVars=00000000000000000000000400000000 {V9
; gcr arg pop 0
add w25, w25, #1
cmp w28, w25
- ldr x5, [fp, #0x18] // [V99 cse12]
+ ldr x5, [fp, #0x18] // [V98 cse11]
; byrRegs +[x5]
bgt G_M16016_IG08
;; size=60 bbWeight=16 PerfScore 280.00
G_M16016_IG09: ; bbWeight=4, gcVars=00000000000000000000000000000000 {}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x5]
- ; GC ptr vars -{V99}
+ ; GC ptr vars -{V98}
movz x26, #0xD1FFAB1E
movk x26, #0xD1FFAB1E LSL #16
movk x26, #0xD1FFAB1E LSL #32
@@ -289,10 +288,10 @@ G_M16016_IG11: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=000
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x48] // [V06 loc5]
+ str x0, [fp, #0x40] // [V06 loc5]
; GC ptr vars +{V06}
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M16016_IG12: ; bbWeight=0.50, gcVars=00000000000000000000010000000000 {V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M16016_IG12: ; bbWeight=0.50, gcVars=00000000000000000000008000000000 {V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
b G_M16016_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M16016_IG13: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
@@ -300,7 +299,7 @@ G_M16016_IG13: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b
add x0, x26, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
add x1, x26, #0xD1FFAB1E
bl CORINFO_HELP_CLASSPROFILE32
@@ -321,7 +320,7 @@ G_M16016_IG13: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
;; size=60 bbWeight=2 PerfScore 35.00
G_M16016_IG14: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
@@ -329,7 +328,7 @@ G_M16016_IG14: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
mov x23, x0
; gcrRegs +[x23]
@@ -348,7 +347,7 @@ G_M16016_IG15: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}
add x0, x26, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
add x1, x26, #0xD1FFAB1E
; GC ptr vars -{V06}
@@ -390,15 +389,15 @@ G_M16016_IG16: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=000
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x40] // [V08 loc7]
+ str x0, [fp, #0x38] // [V08 loc7]
; GC ptr vars +{V08}
;; size=60 bbWeight=0.50 PerfScore 7.00
-G_M16016_IG17: ; bbWeight=4, gcVars=00000000000000000000020000000000 {V08}, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
...
@@ -10,27 +10,27 @@
;
; V00 this [V00,T23] ( 9, 22.50) ref -> x19 this class-hnd single-def <System.Buffers.SharedArrayPool`1[int]>
; V01 loc0 [V01,T14] ( 5, 33.50) int -> x20
-; V02 loc1 [V02,T33] ( 5, 19 ) int -> x21
+; V02 loc1 [V02,T32] ( 5, 19 ) int -> x21
; V03 loc2 [V03,T22] ( 7, 27 ) ref -> x22 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T46] ( 4, 10 ) ref -> x23 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T32] ( 6, 19 ) int -> x24
-; V06 loc5 [V06,T40] ( 8, 10.50) ref -> [fp+0x48] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T45] ( 4, 10 ) ref -> x23 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T31] ( 6, 19 ) int -> x24
+; V06 loc5 [V06,T39] ( 8, 10.50) ref -> [fp+0x40] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T41] ( 8, 10.50) ref -> [fp+0x40] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T40] ( 8, 10.50) ref -> [fp+0x38] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T27] ( 3, 20 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T26] ( 3, 20 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T06] ( 5, 66 ) int -> x20
; V12 loc11 [V12,T04] ( 6, 64 ) ref -> x25 class-hnd <<unknown class>>
-; V13 loc12 [V13,T47] ( 2, 8.50) int -> x24
-; V14 loc13 [V14,T70] ( 3, 1.50) int -> x24
-; V15 loc14 [V15,T42] ( 8, 10.50) ref -> [fp+0x38] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T46] ( 2, 8.50) int -> x24
+; V14 loc13 [V14,T69] ( 3, 1.50) int -> x24
+; V15 loc14 [V15,T41] ( 8, 10.50) ref -> [fp+0x30] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T12] ( 5, 36 ) ref -> x25 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T12] ( 6, 44 ) ref -> x25 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> x27
-; V19 loc18 [V19,T25] ( 3, 24 ) int -> x3
-; V20 loc19 [V20,T09] ( 6, 48 ) ref -> [fp+0x30] class-hnd spill-single-def <<unknown class>>
+; V19 loc18 [V19,T24] ( 3, 24 ) int -> x2
+; V20 loc19 [V20,T09] ( 6, 48 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T28] ( 3, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T27] ( 3, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T13] ( 2, 36 ) int -> x26 "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -40,76 +40,75 @@
; V29 tmp8 [V29,T18] ( 2, 32 ) int -> x27 "impAppendStmt"
; V30 tmp9 [V30,T19] ( 2, 32 ) int -> x25 "impAppendStmt"
;* V31 tmp10 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V32 tmp11 [V32,T58] ( 3, 3 ) ref -> x19 single-def "handle histogram profile tmp"
+; V32 tmp11 [V32,T57] ( 3, 3 ) ref -> x19 single-def "handle histogram profile tmp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V36 tmp15 [V36,T59] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
+; V36 tmp15 [V36,T58] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
; V38 tmp17 [V38,T02] ( 3, 96 ) ref -> x25 "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V42 tmp21 [V42,T60] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
+; V42 tmp21 [V42,T59] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V44 tmp23 [V44,T11] ( 3, 48 ) ref -> [fp+0x28] spill-single-def "handle histogram profile tmp"
+; V44 tmp23 [V44,T11] ( 3, 48 ) ref -> [fp+0x20] spill-single-def "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V48 tmp27 [V48,T29] ( 3, 20 ) int -> x27 "Inline stloc first use temp"
+; V48 tmp27 [V48,T28] ( 3, 20 ) int -> x27 "Inline stloc first use temp"
;* V49 tmp28 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp29 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V51 tmp30 [V51,T54] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V51 tmp30 [V51,T53] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V52 tmp31 [V52,T07] ( 5, 66 ) int -> x25 "Inline stloc first use temp"
; V53 tmp32 [V53,T20] ( 2, 32 ) int -> x4 "Inlining Arg"
; V54 tmp33 [V54,T21] ( 2, 32 ) int -> x4 "Inlining Arg"
-; V55 tmp34 [V55,T55] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T67] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T56] ( 2, 4 ) ref -> x24 "field V09.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T68] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
-; V59 tmp38 [V59,T57] ( 2, 4 ) ref -> x25 "field V16.key (fldOffset=0x0)" P-INDEP
-; V60 tmp39 [V60,T69] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T54] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T66] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T55] ( 2, 4 ) ref -> x24 "field V09.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T67] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
+; V59 tmp38 [V59,T56] ( 2, 4 ) ref -> x25 "field V16.key (fldOffset=0x0)" P-INDEP
+; V60 tmp39 [V60,T68] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V28.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V28.value (fldOffset=0x8)" P-DEP
;* V65 tmp44 [V65 ] ( 0, 0 ) ref -> zero-ref "field V31.key (fldOffset=0x0)" P-DEP
;* V66 tmp45 [V66 ] ( 0, 0 ) ref -> zero-ref "field V31.value (fldOffset=0x8)" P-DEP
-; V67 tmp46 [V67,T61] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V68 tmp47 [V68,T35] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V69 tmp48 [V69,T51] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V67 tmp46 [V67,T60] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V68 tmp47 [V68,T34] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V69 tmp48 [V69,T50] ( 2, 8 ) ref -> x0 "argument with side effect"
; V70 tmp49 [V70,T15] ( 2, 32 ) ref -> x1 "argument with side effect"
-;* V71 tmp50 [V71,T38] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V72 tmp51 [V72,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V73 tmp52 [V73,T62] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V74 tmp53 [V74,T63] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V75 tmp54 [V75,T36] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V76 tmp55 [V76,T52] ( 2, 8 ) ref -> x0 "argument with side effect"
+;* V71 tmp50 [V71,T37] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V72 tmp51 [V72,T71] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V73 tmp52 [V73,T61] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V74 tmp53 [V74,T62] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V75 tmp54 [V75,T35] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V76 tmp55 [V76,T51] ( 2, 8 ) ref -> x0 "argument with side effect"
; V77 tmp56 [V77,T08] ( 2, 64 ) ref -> x1 "argument with side effect"
-;* V78 tmp57 [V78,T39] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V79 tmp58 [V79,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V80 tmp59 [V80,T64] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V81 tmp60 [V81,T65] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V82 tmp61 [V82,T37] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V83 tmp62 [V83,T53] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V84 tmp63 [V84,T74] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V85 tmp64 [V85,T66] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V86 PSPSym [V86,T71] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
-; V87 cse0 [V87,T48] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
-; V88 cse1 [V88,T43] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
-; V89 cse2 [V89,T49] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
-; V90 cse3 [V90,T44] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
-; V91 cse4 [V91,T50] ( 4, 8 ) ref -> x25 multi-def "CSE - moderate"
-; V92 cse5 [V92,T45] ( 6, 10.50) ref -> x25 multi-def "CSE - moderate"
-; V93 cse6 [V93,T24] ( 3, 24 ) byref -> [fp+0x20] spill-single-def "CSE - moderate"
-; V94 cse7 [V94,T10] ( 4, 48 ) long -> x1 "CSE - aggressive"
-; V95 cse8 [V95,T01] ( 22,132.50) long -> x23 hoist multi-def "CSE - aggressive"
+;* V78 tmp57 [V78,T38] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V79 tmp58 [V79,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V80 tmp59 [V80,T63] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V81 tmp60 [V81,T64] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V82 tmp61 [V82,T36] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V83 tmp62 [V83,T52] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V84 tmp63 [V84,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V85 tmp64 [V85,T65] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V86 PSPSym [V86,T70] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
+; V87 cse0 [V87,T47] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
+; V88 cse1 [V88,T42] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
+; V89 cse2 [V89,T48] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
+; V90 cse3 [V90,T43] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
+; V91 cse4 [V91,T49] ( 4, 8 ) ref -> x25 multi-def "CSE - moderate"
+; V92 cse5 [V92,T44] ( 6, 10.50) ref -> x25 multi-def "CSE - moderate"
+; V93 cse6 [V93,T10] ( 5, 56 ) long -> [fp+0x48] spill-single-def "CSE - aggressive"
+; V94 cse7 [V94,T01] ( 22,132.50) long -> x23 hoist multi-def "CSE - aggressive"
+; V95 cse8 [V95,T03] ( 42, 85.50) long -> registers multi-def "CSE - aggressive"
; V96 cse9 [V96,T05] ( 3, 68 ) int -> x28 "CSE - aggressive"
-; V97 cse10 [V97,T03] ( 42, 85.50) long -> registers multi-def "CSE - aggressive"
-; V98 cse11 [V98,T26] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
-; V99 cse12 [V99,T34] ( 2, 18 ) byref -> [fp+0x18] spill-single-def hoist "CSE - moderate"
-; V100 cse13 [V100,T30] ( 3, 20 ) int -> x28 "CSE - moderate"
-; V101 cse14 [V101,T31] ( 3, 20 ) int -> x23 "CSE - moderate"
+; V97 cse10 [V97,T25] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
+; V98 cse11 [V98,T33] ( 2, 18 ) byref -> [fp+0x18] spill-single-def hoist "CSE - moderate"
+; V99 cse12 [V99,T29] ( 3, 20 ) int -> x28 "CSE - moderate"
+; V100 cse13 [V100,T30] ( 3, 20 ) int -> x23 "CSE - moderate"
;
; Lcl frame size = 80
@@ -221,10 +220,10 @@ G_M34916_IG07: ; bbWeight=2, gcrefRegs=2C80000 {x19 x22 x23 x25}, byrefRe
ble G_M34916_IG09
add x5, x0, #16
; byrRegs +[x5]
- str x5, [fp, #0x18] // [V99 cse12]
- ; GC ptr vars +{V99}
+ str x5, [fp, #0x18] // [V98 cse11]
+ ; GC ptr vars +{V98}
;; size=28 bbWeight=2 PerfScore 19.00
-G_M34916_IG08: ; bbWeight=16, gcVars=00000000000000000000000400000000 {V99}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0020 {x5}, gcvars, byref, isz
+G_M34916_IG08: ; bbWeight=16, gcVars=00000000000000000000000200000000 {V98}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0020 {x5}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x0, [x5, w25, UXTW #3]
; gcrRegs +[x0]
@@ -243,13 +242,13 @@ G_M34916_IG08: ; bbWeight=16, gcVars=00000000000000000000000400000000 {V9
; gcr arg pop 0
add w25, w25, #1
cmp w28, w25
- ldr x5, [fp, #0x18] // [V99 cse12]
+ ldr x5, [fp, #0x18] // [V98 cse11]
; byrRegs +[x5]
bgt G_M34916_IG08
;; size=60 bbWeight=16 PerfScore 280.00
G_M34916_IG09: ; bbWeight=4, gcVars=00000000000000000000000000000000 {}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x5]
- ; GC ptr vars -{V99}
+ ; GC ptr vars -{V98}
movz x26, #0xD1FFAB1E
movk x26, #0xD1FFAB1E LSL #16
movk x26, #0xD1FFAB1E LSL #32
@@ -289,10 +288,10 @@ G_M34916_IG11: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=000
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x48] // [V06 loc5]
+ str x0, [fp, #0x40] // [V06 loc5]
; GC ptr vars +{V06}
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M34916_IG12: ; bbWeight=0.50, gcVars=00000000000000000000010000000000 {V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M34916_IG12: ; bbWeight=0.50, gcVars=00000000000000000000008000000000 {V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
b G_M34916_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M34916_IG13: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
@@ -300,7 +299,7 @@ G_M34916_IG13: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b
add x0, x26, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
add x1, x26, #0xD1FFAB1E
bl CORINFO_HELP_CLASSPROFILE32
@@ -321,7 +320,7 @@ G_M34916_IG13: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
;; size=60 bbWeight=2 PerfScore 35.00
G_M34916_IG14: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
@@ -329,7 +328,7 @@ G_M34916_IG14: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
mov x23, x0
; gcrRegs +[x23]
@@ -348,7 +347,7 @@ G_M34916_IG15: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}
add x0, x26, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
add x1, x26, #0xD1FFAB1E
; GC ptr vars -{V06}
@@ -390,15 +389,15 @@ G_M34916_IG16: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=000
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x40] // [V08 loc7]
+ str x0, [fp, #0x38] // [V08 loc7]
; GC ptr vars +{V08}
;; size=60 bbWeight=0.50 PerfScore 7.00
-G_M34916_IG17: ; bbWeight=4, gcVars=00000000000000000000020000000000 {V08}, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34916_IG17: ; bbWeight=4, gcVars=00000000000000000000010000000000 {V08}, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
...
@@ -12,13 +12,13 @@
; V00 this [V00,T02] ( 4, 4 ) ref -> x21 this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T01] ( 6, 4 ) ref -> x20 ld-addr-op class-hnd <System.String>
; V02 arg2 [V02,T00] ( 6, 5.31) int -> x19
-; V03 loc0 [V03,T16] ( 3, 1.78) int -> x22 ld-addr-op
-; V04 loc1 [V04,T12] ( 3, 2.23) ref -> x0 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
-; V05 loc2 [V05,T10] ( 16, 2.61) ref -> x21 class-hnd <System.Reflection.FieldInfo>
-; V06 loc3 [V06,T15] ( 3, 2 ) ubyte -> x22
+; V03 loc0 [V03,T15] ( 3, 1.78) int -> x22 ld-addr-op
+; V04 loc1 [V04,T11] ( 4, 2.54) ref -> x21 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
+; V05 loc2 [V05,T10] ( 16, 2.61) ref -> x22 class-hnd <System.Reflection.FieldInfo>
+; V06 loc3 [V06,T14] ( 3, 2 ) ubyte -> x23
;* V07 loc4 [V07 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op
-; V08 loc5 [V08,T13] ( 5, 2.22) int -> x23
-; V09 loc6 [V09,T17] ( 12, 0.92) ref -> x26 class-hnd <System.Reflection.RuntimeFieldInfo>
+; V08 loc5 [V08,T12] ( 5, 2.22) int -> x24
+; V09 loc6 [V09,T16] ( 12, 0.92) ref -> x26 class-hnd <System.Reflection.RuntimeFieldInfo>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -28,7 +28,7 @@
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V19 tmp9 [V19,T20] ( 3, 0 ) ref -> x20 "handle histogram profile tmp"
+; V19 tmp9 [V19,T19] ( 3, 0 ) ref -> x20 "handle histogram profile tmp"
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
@@ -48,25 +48,24 @@
;* V36 tmp26 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V37 tmp27 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
; V38 tmp28 [V38,T06] ( 7, 4.11) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V39 tmp29 [V39,T14] ( 4, 2.21) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V39 tmp29 [V39,T13] ( 4, 2.21) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V41 tmp31 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V42 tmp32 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V43 tmp33 [V43,T28] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V44 tmp34 [V44,T21] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V45 tmp35 [V45,T22] ( 3, 0 ) ref -> x0 "argument with side effect"
-;* V46 tmp36 [V46,T29] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V47 tmp37 [V47,T30] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V48 tmp38 [V48,T23] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V49 tmp39 [V49,T24] ( 3, 0 ) ref -> x20 "argument with side effect"
-; V50 tmp40 [V50,T27] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V51 tmp41 [V51,T25] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V52 tmp42 [V52,T26] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V53 cse0 [V53,T18] ( 3, 0.92) int -> x0 "CSE - conservative"
-; V54 cse1 [V54,T11] ( 3, 2.31) int -> x24 "CSE - moderate"
-; V55 cse2 [V55,T19] ( 2, 0.54) byref -> x25 hoist "CSE - conservative"
-; V56 cse3 [V56,T08] ( 3, 3 ) long -> x0 "CSE - aggressive"
-; V57 cse4 [V57,T07] ( 3, 3 ) ref -> x1 "CSE - aggressive"
+;* V43 tmp33 [V43,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V44 tmp34 [V44,T20] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V45 tmp35 [V45,T21] ( 3, 0 ) ref -> x0 "argument with side effect"
+;* V46 tmp36 [V46,T28] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V47 tmp37 [V47,T29] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V48 tmp38 [V48,T22] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V49 tmp39 [V49,T23] ( 3, 0 ) ref -> x20 "argument with side effect"
+; V50 tmp40 [V50,T26] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V51 tmp41 [V51,T24] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V52 tmp42 [V52,T25] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
+; V53 cse0 [V53,T17] ( 3, 0.92) int -> x0 "CSE - conservative"
+; V54 cse1 [V54,T18] ( 2, 0.54) byref -> x25 hoist "CSE - conservative"
+; V55 cse2 [V55,T08] ( 3, 3 ) long -> x0 "CSE - aggressive"
+; V56 cse3 [V56,T07] ( 3, 3 ) ref -> x1 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -233,30 +232,32 @@ G_M40435_IG13: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}
blr x4
; gcrRegs -[x2 x20]
; gcr arg pop 0
- mov x21, xzr
+ mov x21, x0
; gcrRegs +[x21]
+ mov x22, xzr
+ ; gcrRegs +[x22]
eor w19, w19, #2
- mov w22, wzr
mov w23, wzr
- ldr w24, [x0, #0x08]
- cmp w24, #0
+ mov w24, wzr
+ ldr w0, [x21, #0x08]
+ ; gcrRegs -[x0]
+ cmp w0, #0
ble G_M40435_IG20
- ;; size=64 bbWeight=1 PerfScore 16.50
-G_M40435_IG14: ; bbWeight=0.23, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref
- add x25, x0, #16
+ ;; size=68 bbWeight=1 PerfScore 17.00
+G_M40435_IG14: ; bbWeight=0.23, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
+ add x25, x21, #16
; byrRegs +[x25]
;; size=4 bbWeight=0.23 PerfScore 0.12
-G_M40435_IG15: ; bbWeight=0.31, gcrefRegs=200000 {x21}, byrefRegs=2000000 {x25}, byref, isz
- ; gcrRegs -[x0]
- ldr x26, [x25, w23, UXTW #3]
+G_M40435_IG15: ; bbWeight=0.31, gcrefRegs=600000 {x21 x22}, byrefRegs=2000000 {x25}, byref, isz
+ ldr x26, [x25, w24, UXTW #3]
; gcrRegs +[x26]
ldr w0, [x26, #0x18]
and w1, w19, w0
cmp w1, w0
bne G_M40435_IG19
- cbz x21, G_M40435_IG18
+ cbz x22, G_M40435_IG18
;; size=24 bbWeight=0.31 PerfScore 2.75
-G_M40435_IG16: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=2000000 {x25}, byref, isz
+G_M40435_IG16: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=2000000 {x25}, byref, isz
mov x0, x26
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -274,14 +275,14 @@ G_M40435_IG16: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
; gcr arg pop 0
mov x20, x0
; gcrRegs +[x20]
- mov x0, x21
+ mov x0, x22
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -290,14 +291,14 @@ G_M40435_IG16: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
; gcr arg pop 0
cmp x20, x0
beq G_M40435_IG30
- mov x0, x21
+ mov x0, x22
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0 x20]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -342,9 +343,9 @@ G_M40435_IG16: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov w22, #1
+ mov w23, #1
;; size=248 bbWeight=0 PerfScore 0.00
-G_M40435_IG17: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=2000000 {x25}, byref, isz
+G_M40435_IG17: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=2000000 {x25}, byref, isz
mov x0, x26
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -368,7 +369,7 @@ G_M40435_IG17: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -376,7 +377,7 @@ G_M40435_IG17: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -393,7 +394,7 @@ G_M40435_IG17: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
cbnz w0, G_M40435_IG27
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -401,7 +402,7 @@ G_M40435_IG17: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -421,35 +422,37 @@ G_M40435_IG17: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_COUNTPROFILE32
- ; gcrRegs -[x21]
+ ; gcrRegs -[x22]
; gcr arg pop 0
;; size=212 bbWeight=0 PerfScore 0.00
-G_M40435_IG18: ; bbWeight=0.31, gcrefRegs=4000000 {x26}, byrefRegs=2000000 {x25}, byref
+G_M40435_IG18: ; bbWeight=0.31, gcrefRegs=4200000 {x21 x26}, byrefRegs=2000000 {x25}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov x21, x26
- ; gcrRegs +[x21]
+ mov x22, x26
+ ; gcrRegs +[x22]
;; size=20 bbWeight=0.31 PerfScore 0.92
-G_M40435_IG19: ; bbWeight=0.31, gcrefRegs=200000 {x21}, byrefRegs=2000000 {x25}, byref, isz
+G_M40435_IG19: ; bbWeight=0.31, gcrefRegs=600000 {x21 x22}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x26]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- add w23, w23, #1
- cmp w24, w23
+ add w24, w24, #1
+ ldr w0, [x21, #0x08]
+ cmp w0, w24
bgt G_M40435_IG15
- ;; size=28 bbWeight=0.31 PerfScore 1.38
-G_M40435_IG20: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.31 PerfScore 2.29
+G_M40435_IG20: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x21]
; byrRegs -[x25]
- cbz w22, G_M40435_IG23
+ cbz w23, G_M40435_IG23
;; size=4 bbWeight=1 PerfScore 1.00
-G_M40435_IG21: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- mov x0, x21
+G_M40435_IG21: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -457,7 +460,7 @@ G_M40435_IG21: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
...
@@ -9,25 +9,25 @@
; 0 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T23] ( 18, 19 ) ref -> [fp+0x28] this class-hnd EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V00 this [V00,T23] ( 18, 19 ) ref -> [fp+0x30] this class-hnd EH-live single-def <System.Runtime.Caching.ExpiresBucket>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T30] ( 8, 7 ) ubyte -> [fp+0x54] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 12,132 ) ref -> x25 class-hnd <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 68 ) ref -> x25 class-hnd <<unknown class>>
; V05 loc2 [V05,T28] ( 3, 12 ) int -> x0
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> [fp+0x20] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> [fp+0x28] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T15] ( 5, 35 ) int -> [fp+0x50] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T34] ( 2, 5 ) ref -> x19 class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T04] ( 13, 71 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T03] ( 13, 71 ) ref -> [fp+0x20] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 4, 4 ) ubyte -> [fp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T26] ( 4, 13 ) int -> x22
;* V14 loc11 [V14,T36] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
; V15 loc12 [V15,T07] ( 7, 57 ) int -> x23
; V16 loc13 [V16,T08] ( 4, 52 ) int -> x27
; V17 loc14 [V17,T00] ( 6,148 ) int -> x28
-; V18 loc15 [V18,T13] ( 8, 35 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V18 loc15 [V18,T13] ( 8, 35 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V19 loc16 [V19 ] ( 4, 3 ) ubyte -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V21 tmp1 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.Caching.ExpiresEntryRef>
@@ -45,7 +45,7 @@
; V33 tmp13 [V33,T31] ( 6, 6 ) ref -> x19 class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V34 tmp14 [V34,T22] ( 5, 20 ) long -> x19 single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V35 tmp15 [V35,T16] ( 5, 35 ) int -> [fp+0x3C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V36 tmp16 [V36,T05] ( 13, 71 ) int -> x4 "field V09._ref (fldOffset=0x0)" P-INDEP
+; V36 tmp16 [V36,T04] ( 13, 71 ) int -> x4 "field V09._ref (fldOffset=0x0)" P-INDEP
; V37 tmp17 [V37,T19] ( 4, 24 ) int -> x20 "field V10._ref (fldOffset=0x0)" P-INDEP
; V38 tmp18 [V38,T17] ( 2, 32 ) int -> x0 "field V21._ref (fldOffset=0x0)" P-INDEP
; V39 tmp19 [V39,T18] ( 2, 32 ) int -> x0 "field V26._ref (fldOffset=0x0)" P-INDEP
@@ -55,8 +55,8 @@
; V43 tmp23 [V43,T11] ( 3, 48 ) ref -> x1 "arr expr"
; V44 PSPSym [V44,T37] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
; V45 cse0 [V45,T24] ( 3, 18 ) ref -> x21 "CSE - moderate"
-; V46 cse1 [V46,T25] ( 4, 16 ) byref -> x0 "CSE - moderate"
-; V47 cse2 [V47,T02] ( 6,128 ) long -> [fp+0x30] spill-single-def "CSE - aggressive"
+; V46 cse1 [V46,T01] ( 6,128 ) byref -> [fp+0x10] spill-single-def "CSE - aggressive"
+; V47 cse2 [V47,T25] ( 4, 16 ) byref -> x0 "CSE - moderate"
; V48 cse3 [V48,T06] ( 6, 65 ) long -> registers hoist multi-def "CSE - aggressive"
; V49 cse4 [V49,T14] ( 8, 35 ) long -> x24 hoist multi-def "CSE - aggressive"
; V50 cse5 [V50,T35] ( 3, 3 ) long -> x20 "CSE - moderate"
@@ -77,7 +77,7 @@ G_M744_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
stp xzr, xzr, [fp, #0x40] // [V19 loc16], [V12 loc9]
add x3, sp, #176
str x3, [fp, #0x58] // [V44 PSPSym]
- str x0, [fp, #0x28] // [V00 this]
+ str x0, [fp, #0x30] // [V00 this]
; GC ptr vars +{V00}
str w2, [fp, #0x54] // [V02 arg2]
mov x19, x1
@@ -133,7 +133,7 @@ G_M744_IG06: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byr
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
ldr x0, [x1, x0]
; gcrRegs +[x0]
@@ -158,15 +158,15 @@ G_M744_IG06: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byr
G_M744_IG07: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
; byrRegs -[x1]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
mov x0, x1
; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V11 loc8]
+ str x0, [fp, #0x20] // [V11 loc8]
; GC ptr vars +{V11}
str wzr, [fp, #0x48] // [V12 loc9]
;; size=16 bbWeight=1 PerfScore 4.50
-G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG08: ; bbWeight=1, gcVars=0000000000800008 {V00 V11}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x1]
add x1, fp, #72 // [V12 loc9]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -175,7 +175,7 @@ G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=2
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V11 loc8]
+ ldr x0, [fp, #0x20] // [V11 loc8]
; gcrRegs +[x0]
ldr w1, [x0, x20]
cbz w1, G_M744_IG21
@@ -187,7 +187,7 @@ G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=2
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M744_IG21
- ldr x0, [fp, #0x18] // [V11 loc8]
+ ldr x0, [fp, #0x20] // [V11 loc8]
; gcrRegs +[x0]
mov x1, x19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -199,7 +199,7 @@ G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=2
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x20, [fp, #0x18] // [V11 loc8]
+ ldr x20, [fp, #0x20] // [V11 loc8]
; gcrRegs +[x20]
ldr w22, [x20, x0]
mov w23, wzr
@@ -242,35 +242,38 @@ G_M744_IG10: ; bbWeight=4, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=000
;; size=40 bbWeight=4 PerfScore 44.00
G_M744_IG11: ; bbWeight=32, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, byref, isz
ubfiz x0, x28, #4, #32
- add x2, x0, #16
- str x2, [fp, #0x30] // [V47 cse2]
- add x0, x25, x2
- ; byrRegs +[x0]
- ldr x3, [x0, #0x08]
+ add x0, x0, #16
+ add x2, x25, x0
+ ; byrRegs +[x2]
+ str x2, [fp, #0x10] // [V46 cse1]
+ ; GC ptr vars +{V46}
+ ldr x3, [x2, #0x08]
; gcrRegs +[x3]
- str x3, [fp, #0x20] // [V06 loc3]
+ str x3, [fp, #0x28] // [V06 loc3]
; GC ptr vars +{V06}
cbz x3, G_M744_IG14
;; size=28 bbWeight=32 PerfScore 256.00
-G_M744_IG12: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG12: ; bbWeight=16, gcVars=000000000080000E {V00 V06 V11 V46}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0004 {x2}, gcvars, byref, isz
; gcrRegs -[x3]
- ; byrRegs -[x0]
- ldr x0, [x25, x2]
+ ldr x0, [x2]
mov x1, x19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x4, [x11]
blr x4
+ ; byrRegs -[x2]
; gcr arg pop 0
cbz w0, G_M744_IG19
- ldr x2, [fp, #0x30] // [V47 cse2]
- ldr x1, [x25, x2]
+ ldr x2, [fp, #0x10] // [V46 cse1]
+ ; byrRegs +[x2]
+ ldr x1, [x2]
mov x0, x20
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
- ; GC ptr vars -{V06}
+ ; byrRegs -[x2]
+ ; GC ptr vars -{V06 V46}
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
@@ -318,14 +321,14 @@ G_M744_IG18: ; bbWeight=0, gcVars=0000000000800000 {V00}, gcrefRegs=0000
blr x0
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M744_IG19: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, gcvars, byref
+G_M744_IG19: ; bbWeight=16, gcVars=000000000080000E {V00 V06 V11 V46}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x20-x21 x25]
- ; GC ptr vars +{V04 V06 V11}
+ ; GC ptr vars +{V02 V06 V11 V46}
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
mov w11, #255
- ldr x1, [fp, #0x20] // [V06 loc3]
+ ldr x1, [fp, #0x28] // [V06 loc3]
; gcrRegs +[x1]
strb w11, [x1, x0]
ldr w0, [x21, #0x08]
@@ -333,15 +336,12 @@ G_M744_IG19: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefR
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x11, [x11]
str w0, [x1, x11]
- ldr x0, [fp, #0x30] // [V47 cse2]
- add x11, x25, x0
+ mov w0, #1
+ ldr x11, [fp, #0x10] // [V46 cse1]
; byrRegs +[x11]
- mov w1, #1
- ; gcrRegs -[x1]
- str w1, [x11, #0x04]
- ldr w11, [fp, #0x3C] // [V35 tmp15]
- ; byrRegs -[x11]
- str w11, [x25, x0]
+ str w0, [x11, #0x04]
+ ldr w0, [fp, #0x3C] // [V35 tmp15]
+ str w0, [x11]
uxtb w0, w28
orr w0, w0, w23, LSL #8
str w0, [fp, #0x3C] // [V35 tmp15]
@@ -350,18 +350,19 @@ G_M744_IG19: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefR
str w0, [fp, #0x50] // [V07 loc4]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x0]
- ldr w0, [x20, x1]
+ ldr x2, [x0]
+ ldr w0, [x20, x2]
add w0, w0, #1
- str w0, [x20, x1]
+ str w0, [x20, x2]
b G_M744_IG13
- ;; size=120 bbWeight=16 PerfScore 608.00
+ ;; size=116 bbWeight=16 PerfScore 600.00
G_M744_IG20: ; bbWeight=1, gcVars=0000000000800000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x20-x21 x25]
- ; GC ptr vars -{V04 V06 V11}
+ ; gcrRegs -[x1 x20-x21 x25]
+ ; byrRegs -[x11]
+ ; GC ptr vars -{V02 V06 V11 V46}
ldrb w0, [fp, #0x48] // [V12 loc9]
cbz w0, G_M744_IG24
- ldr x0, [fp, #0x28] // [V00 this]
+ ldr x0, [fp, #0x30] // [V00 this]
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -385,7 +386,7 @@ G_M744_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, i
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
ldr x0, [x1, x0]
; gcrRegs +[x0]
@@ -424,7 +425,7 @@ G_M744_IG26: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
ldr x0, [x1, x0]
; gcrRegs +[x0]
...
@@ -4,46 +4,45 @@
; ReadyToRun compilation
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T05] ( 4, 4 ) struct (16) [fp+0x38] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T00] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 4, 4 ) struct (16) [fp+0x38] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T01] ( 9, 12 ) int -> x22
+; V03 loc1 [V03,T06] ( 9, 4.75) int -> x22
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-; V07 tmp2 [V07 ] ( 4, 8 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
+; V07 tmp2 [V07 ] ( 4, 8 ) struct (16) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
; V08 tmp3 [V08 ] ( 3, 6 ) struct (16) [fp+0x18] do-not-enreg[SFAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Decimal>
-; V09 tmp4 [V09,T09] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T08] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T10] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T11] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T14] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T15] ( 2, 2 ) int -> x0 "impAppendStmt"
+; V13 tmp8 [V13,T16] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T09] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T10] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x0 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x11
-; V24 tmp19 [V24,T03] ( 9, 9 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp20 [V25,T04] ( 7, 8 ) int -> x21 "field V02._length (fldOffset=0x8)" P-INDEP
+; V23 tmp18 [V23,T17] ( 2, 1 ) int -> x11
+; V24 tmp19 [V24,T01] ( 11, 6.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp20 [V25,T07] ( 5, 3.50) int -> x21 "field V02._length (fldOffset=0x8)" P-INDEP
;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
; V28 tmp23 [V28 ] ( 3, 5 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed ptr "field V07._reference (fldOffset=0x0)" P-DEP
; V29 tmp24 [V29 ] ( 3, 5 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed ptr "field V07._length (fldOffset=0x8)" P-DEP
-; V30 tmp25 [V30,T06] ( 3, 6 ) int -> [fp+0x18] do-not-enreg[] "field V08._flags (fldOffset=0x0)" P-DEP
-; V31 tmp26 [V31,T07] ( 3, 6 ) int -> [fp+0x1C] do-not-enreg[] "field V08._hi32 (fldOffset=0x4)" P-DEP
-; V32 tmp27 [V32,T08] ( 3, 6 ) long -> [fp+0x20] do-not-enreg[] "field V08._lo64 (fldOffset=0x8)" P-DEP
+; V30 tmp25 [V30,T03] ( 3, 6 ) int -> [fp+0x18] do-not-enreg[] "field V08._flags (fldOffset=0x0)" P-DEP
+; V31 tmp26 [V31,T04] ( 3, 6 ) int -> [fp+0x1C] do-not-enreg[] "field V08._hi32 (fldOffset=0x4)" P-DEP
+; V32 tmp27 [V32,T05] ( 3, 6 ) long -> [fp+0x20] do-not-enreg[] "field V08._lo64 (fldOffset=0x8)" P-DEP
; V33 GsCookie [V33 ] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V34 cse0 [V34,T16] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V35 cse1 [V35,T00] ( 4, 14 ) int -> x11 "CSE - aggressive"
+; V34 cse0 [V34,T15] ( 3, 1.50) int -> x0 "CSE - moderate"
;
; Lcl frame size = 80
@@ -52,7 +51,6 @@ G_M46478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x60]
stp x21, x22, [sp, #0x70]
mov fp, sp
- str xzr, [fp, #0x28] // [V07 tmp2]
adrp x3, [HIGH RELOC #0xD1FFAB1E] // [SetGlobalSecurityCookie]
add x3, x3, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x3]
@@ -60,7 +58,7 @@ G_M46478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x1, x2, [fp, #0x38] // [V01 arg1], [V01 arg1+0x08]
mov x19, x0
; byrRegs +[x19]
- ;; size=44 bbWeight=1 PerfScore 11.00
+ ;; size=40 bbWeight=1 PerfScore 10.00
G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
stp xzr, xzr, [fp, #0x28]
add x0, fp, #40 // [V07 tmp2]
@@ -70,7 +68,6 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
mov w2, #4
ldr x3, [x11]
blr x3
- ; gcr arg pop 0
ldr x20, [fp, #0x28] // [V28 tmp23]
; byrRegs +[x20]
ldr w21, [fp, #0x30] // [V29 tmp24]
@@ -79,7 +76,6 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcr arg pop 0
stp x0, x1, [fp, #0x18] // [V08 tmp3], [V08 tmp3+0x08]
mov x2, x20
; byrRegs +[x2]
@@ -90,33 +86,51 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
ldr x4, [x11]
blr x4
; byrRegs -[x2]
- ; gcr arg pop 0
mov w22, #3
b G_M46478_IG04
;; size=100 bbWeight=1 PerfScore 31.00
-G_M46478_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w22, w11
- cmp w22, #0
- ble G_M46478_IG05
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w11, w22, #1
- cmp w11, w21
- bhs G_M46478_IG14
- ldr w0, [x20, w11, UXTW #2]
- cbz w0, G_M46478_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w22, G_M46478_IG08
+G_M46478_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w22, #2
+ b G_M46478_IG07
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cmp w21, #2
+ bls G_M46478_IG20
+ ldr w11, [x20, #0x08]
+ cbz w11, G_M46478_IG03
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M46478_IG05: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG11
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w22, #1
+ b G_M46478_IG10
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w11, [x20, #0x04]
+ cbz w11, G_M46478_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG08: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG11
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w22, wzr
+ b G_M46478_IG11
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w11, [x20]
+ cbz w11, G_M46478_IG09
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w22, G_M46478_IG14
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x11]
blr x0
; byrRegs +[x0]
- ; gcr arg pop 0
ldr x13, [x0, #0x50]
; gcrRegs +[x13]
add x13, x13, #8
@@ -136,31 +150,30 @@ G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr xip0, [xip0]
ldr xip1, [fp, #0x58] // [V33 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG07
+ beq G_M46478_IG13
adrp xip0, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_FAIL_FAST
add xip0, xip0, [LOW RELOC #0xD1FFAB1E]
ldr xip0, [xip0]
blr xip0
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 15.25
-G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x21, x22, [sp, #0x70]
ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x80
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w22, #1
- bne G_M46478_IG10
+ bne G_M46478_IG16
ldr w0, [x20]
cmp w0, #0
- ble G_M46478_IG10
+ ble G_M46478_IG16
str w0, [x19, #0x08]
ldr w0, [x19, #0x08]
cmp w21, #3
- bls G_M46478_IG14
+ bls G_M46478_IG20
ldr w11, [x20, #0x0C]
movn w1, #0
mov w2, #1
@@ -174,21 +187,20 @@ G_M46478_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr xip0, [xip0]
ldr xip1, [fp, #0x58] // [V33 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG09
+ beq G_M46478_IG15
adrp xip0, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_FAIL_FAST
add xip0, xip0, [LOW RELOC #0xD1FFAB1E]
ldr xip0, [xip0]
blr xip0
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=108 bbWeight=0.50 PerfScore 16.50
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x21, x22, [sp, #0x70]
ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x80
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x0, w22
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -196,7 +208,6 @@ G_M46478_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr x1, [x11]
blr x1
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -212,37 +223,33 @@ G_M46478_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG14
+ bls G_M46478_IG20
str w1, [x0, #0x10]
cmp w22, #1
- ble G_M46478_IG11
+ ble G_M46478_IG17
...
@@ -10,72 +10,71 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <ILCompiler.DevirtualizationManager>
; V01 arg1 [V01,T00] ( 21, 26 ) ref -> x19 class-hnd <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T16] ( 14, 8 ) ref -> x20 class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T19] ( 8, 5.50) byref -> x21 single-def
+; V02 arg2 [V02,T17] ( 14, 8 ) ref -> x20 class-hnd single-def <Internal.TypeSystem.DefType>
+; V03 arg3 [V03,T20] ( 8, 5.50) byref -> x21 single-def
; V04 loc0 [V04,T22] ( 11, 5.50) ref -> x23 class-hnd <Internal.TypeSystem.MethodDesc>
-; V05 loc1 [V05,T42] ( 3, 1.50) ref -> x24 class-hnd single-def <Internal.TypeSystem.DefType[]>
+; V05 loc1 [V05,T41] ( 3, 1.50) ref -> x24 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> x23
-; V07 loc3 [V07,T20] ( 5, 7.50) ref -> x25 class-hnd single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> x25 class-hnd single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> x26
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [fp+0x30] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> x28 class-hnd <Internal.TypeSystem.DefType>
; V10 loc6 [V10,T26] ( 6, 4.50) ref -> x24 class-hnd <Internal.TypeSystem.MethodDesc>
-; V11 loc7 [V11,T43] ( 3, 1.50) ref -> x0 class-hnd single-def <Internal.TypeSystem.DefType[]>
+; V11 loc7 [V11,T42] ( 3, 1.50) ref -> x0 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> x25
; V13 loc9 [V13,T05] ( 6, 20 ) ref -> x28 class-hnd <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T48] ( 3, 1.50) int -> x0 single-def
+; V15 loc11 [V15,T47] ( 3, 1.50) int -> x0 single-def
; V16 loc12 [V16,T03] ( 10, 20 ) ref -> x23 class-hnd <Internal.TypeSystem.TypeDesc>
;* V17 loc13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;* V18 loc14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
-; V21 tmp2 [V21,T34] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V22 tmp3 [V22,T49] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
-; V23 tmp4 [V23,T31] ( 5, 3.75) ref -> x25 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V21 tmp2 [V21,T33] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
+; V22 tmp3 [V22,T48] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V23 tmp4 [V23,T30] ( 5, 3.75) ref -> x25 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
; V24 tmp5 [V24,T23] ( 3, 5 ) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V25 tmp6 [V25,T35] ( 3, 2 ) int -> x2 "Inline return value spill temp"
-; V26 tmp7 [V26,T33] ( 3, 2.50) int -> x2 single-def "Inline stloc first use temp"
-; V27 tmp8 [V27,T44] ( 3, 1.50) ref -> x24 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V25 tmp6 [V25,T34] ( 3, 2 ) int -> x2 "Inline return value spill temp"
+; V26 tmp7 [V26,T32] ( 3, 2.50) int -> x2 single-def "Inline stloc first use temp"
+; V27 tmp8 [V27,T43] ( 3, 1.50) ref -> x24 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V29 tmp10 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
-; V30 tmp11 [V30,T17] ( 5, 10 ) ref -> [fp+0x28] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V31 tmp12 [V31,T30] ( 2, 4 ) ref -> x2 class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T18] ( 5, 10 ) ref -> [fp+0x30] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V31 tmp12 [V31,T29] ( 2, 4 ) ref -> x1 class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp14 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V34 tmp15 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp16 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V36 tmp17 [V36,T45] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V36 tmp17 [V36,T44] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V38 tmp19 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V39 tmp20 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V40 tmp21 [V40 ] ( 0, 0 ) int -> zero-ref
; V41 tmp22 [V41,T02] ( 3, 24 ) ref -> x24 class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V42 tmp23 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V43 tmp24 [V43 ] ( 0, 0 ) int -> zero-ref
-; V44 tmp25 [V44,T36] ( 2, 2 ) ref -> x0 single-def "Single return block return value"
+; V44 tmp25 [V44,T35] ( 2, 2 ) ref -> x0 single-def "Single return block return value"
; V45 tmp26 [V45,T09] ( 2, 16 ) ref -> x25 "argument with side effect"
; V46 tmp27 [V46,T10] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V47 tmp28 [V47,T37] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V48 tmp29 [V48,T38] ( 2, 2 ) ref -> x24 single-def "argument with side effect"
-; V49 tmp30 [V49,T39] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V50 tmp31 [V50,T32] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-; V51 tmp32 [V51,T40] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [fp+0x18] spill-single-def "argument with side effect"
+; V47 tmp28 [V47,T36] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V48 tmp29 [V48,T37] ( 2, 2 ) ref -> x24 single-def "argument with side effect"
+; V49 tmp30 [V49,T38] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V50 tmp31 [V50,T31] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V51 tmp32 [V51,T39] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [fp+0x20] spill-single-def "argument with side effect"
; V53 tmp34 [V53,T12] ( 2, 16 ) ref -> x1 "argument with side effect"
;* V54 tmp35 [V54 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V55 tmp36 [V55,T41] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V55 tmp36 [V55,T40] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V56 tmp37 [V56,T13] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [fp+0x10] spill-single-def "argument with side effect"
+; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [fp+0x18] spill-single-def "argument with side effect"
; V58 tmp39 [V58,T15] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V59 tmp40 [V59,T18] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V59 tmp40 [V59,T19] ( 2, 8 ) ref -> x1 "argument with side effect"
; V60 cse0 [V60,T06] ( 10, 18 ) long -> x22 "CSE - aggressive"
-; V61 cse1 [V61,T29] ( 2, 4.50) long -> x28 hoist "CSE - moderate"
-; V62 cse2 [V62,T46] ( 3, 1.50) ref -> x23 "CSE - conservative"
-; V63 cse3 [V63,T47] ( 3, 1.50) ref -> x25 "CSE - conservative"
+; V61 cse1 [V61,T45] ( 3, 1.50) ref -> x23 "CSE - moderate"
+; V62 cse2 [V62,T46] ( 3, 1.50) ref -> x25 "CSE - moderate"
+; V63 cse3 [V63,T24] ( 3, 5 ) int -> x27 "CSE - moderate"
; V64 cse4 [V64,T27] ( 2, 4.50) byref -> x24 hoist "CSE - moderate"
-; V65 cse5 [V65,T24] ( 3, 5 ) int -> x27 "CSE - moderate"
-; V66 cse6 [V66,T28] ( 2, 4.50) byref -> x27 hoist "CSE - moderate"
-; V67 cse7 [V67,T25] ( 3, 5 ) int -> x26 "CSE - moderate"
+; V65 cse5 [V65,T28] ( 2, 4.50) byref -> x27 hoist "CSE - moderate"
+; V66 cse6 [V66,T25] ( 3, 5 ) int -> x26 "CSE - moderate"
;
; Lcl frame size = 48
@@ -215,30 +214,26 @@ G_M48343_IG12: ; bbWeight=0.50, gcrefRegs=3180000 {x19 x20 x24 x25}, byre
add x24, x24, #16
; gcrRegs -[x24]
; byrRegs +[x24]
- ldr xzr, [x25]
- ldr x0, [x25]
- ldr x28, [x0, #0x58]
- ;; size=32 bbWeight=0.50 PerfScore 7.25
+ ;; size=20 bbWeight=0.50 PerfScore 2.75
G_M48343_IG13: ; bbWeight=4, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1200000 {x21 x24}, byref, isz
- ldr x1, [x24, w26, UXTW #3]
- ; gcrRegs +[x1]
- str x1, [fp, #0x30] // [V09 loc5]
- ; GC ptr vars +{V09}
+ ldr x28, [x24, w26, UXTW #3]
+ ; gcrRegs +[x28]
mov x0, x25
; gcrRegs +[x0]
- ldr x2, [x28, #0x20]
- blr x2
- ; gcrRegs -[x1]
- str x0, [fp, #0x18] // [V52 tmp33]
+ ldr x1, [x25]
+ ldr x1, [x1, #0x58]
+ ldr x1, [x1, #0x20]
+ blr x1
+ str x0, [fp, #0x20] // [V52 tmp33]
; GC ptr vars +{V52}
- ldr x0, [fp, #0x30] // [V09 loc5]
- ldr x2, [x0]
+ mov x0, x28
+ ldr x2, [x28]
ldr x2, [x2, #0x58]
ldr x2, [x2, #0x20]
blr x2
mov x1, x0
; gcrRegs +[x1]
- ldr x0, [fp, #0x18] // [V52 tmp33]
+ ldr x0, [fp, #0x20] // [V52 tmp33]
movz x2, #0xD1FFAB1E // code for Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -247,28 +242,26 @@ G_M48343_IG13: ; bbWeight=4, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1
blr x2
; gcrRegs -[x0-x1]
cbz w0, G_M48343_IG16
- ;; size=76 bbWeight=4 PerfScore 122.00
-G_M48343_IG14: ; bbWeight=2, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1200000 {x21 x24}, byref, isz
- ldr x1, [fp, #0x30] // [V09 loc5]
+ ;; size=80 bbWeight=4 PerfScore 136.00
+G_M48343_IG14: ; bbWeight=2, gcrefRegs=12180000 {x19 x20 x25 x28}, byrefRegs=1200000 {x21 x24}, byref, isz
+ ldr x1, [x28, #0x08]
; gcrRegs +[x1]
- ldr x2, [x1, #0x08]
- ; gcrRegs +[x2]
- str x2, [fp, #0x28] // [V30 tmp11]
+ str x1, [fp, #0x30] // [V30 tmp11]
; GC ptr vars +{V30}
mov w0, #1
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
- ldr x2, [fp, #0x28] // [V30 tmp11]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x1]
+ ldr x2, [fp, #0x30] // [V30 tmp11]
; gcrRegs +[x2]
cbnz x2, G_M48343_IG15
- ldr x0, [fp, #0x30] // [V09 loc5]
+ mov x0, x28
; gcrRegs +[x0]
mov w1, wzr
- ldr x2, [x0]
+ ldr x2, [x28]
; gcrRegs -[x2]
ldr x2, [x2, #0x48]
ldr x2, [x2, #0x28]
@@ -276,8 +269,8 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1
blr x2
mov x3, x0
; gcrRegs +[x3]
- ldr x0, [fp, #0x30] // [V09 loc5]
- str x3, [fp, #0x28] // [V30 tmp11]
+ mov x0, x28
+ str x3, [fp, #0x30] // [V30 tmp11]
; GC ptr vars +{V30}
mov x2, x3
; gcrRegs +[x2]
@@ -286,12 +279,11 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
- ; GC ptr vars -{V09}
blr x4
- ; gcrRegs -[x0 x2-x3]
- ldr x2, [fp, #0x28] // [V30 tmp11]
+ ; gcrRegs -[x0 x2-x3 x28]
+ ldr x2, [fp, #0x30] // [V30 tmp11]
; gcrRegs +[x2]
- ;; size=112 bbWeight=2 PerfScore 79.00
+ ;; size=108 bbWeight=2 PerfScore 69.00
G_M48343_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=2180004 {x2 x19 x20 x25}, byrefRegs=1200000 {x21 x24}, gcvars, byref, isz
; GC ptr vars -{V30}
mov x0, x2
@@ -426,16 +418,16 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
; gcrRegs +[x0]
ldr x1, [x22, #0x18]
blr x1
- str x0, [fp, #0x20] // [V37 tmp18]
+ str x0, [fp, #0x28] // [V37 tmp18]
; GC ptr vars +{V37}
mov x0, x28
ldr x2, [x28]
ldr x2, [x2, #0x58]
ldr x2, [x2, #0x20]
blr x2
- str x0, [fp, #0x10] // [V57 tmp38]
+ str x0, [fp, #0x18] // [V57 tmp38]
; GC ptr vars +{V57}
- ldr x0, [fp, #0x20] // [V37 tmp18]
+ ldr x0, [fp, #0x28] // [V37 tmp18]
ldr x2, [x0]
ldr x2, [x2, #0x58]
ldr x2, [x2, #0x20]
@@ -443,7 +435,7 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
blr x2
mov x1, x0
; gcrRegs +[x1]
- ldr x0, [fp, #0x10] // [V57 tmp38]
+ ldr x0, [fp, #0x18] // [V57 tmp38]
movz x2, #0xD1FFAB1E // code for Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -727,7 +719,7 @@ G_M48343_IG40: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
-; Total bytes of code 1684, prolog size 32, PerfScore 829.50, instruction count 421, allocated bytes for code 1684 (MethodHash=11874328) for method ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
...
@@ -12,14 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T30] ( 8, 7 ) ubyte -> [fp+0x44] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 11,116 ) ref -> x24 class-hnd <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 68 ) ref -> x24 class-hnd <<unknown class>>
; V05 loc2 [V05,T28] ( 3, 12 ) int -> x1
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> x2 class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> x2 class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T14] ( 5, 35 ) int -> [fp+0x40] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T38] ( 2, 5 ) ref -> x20 class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T04] ( 16, 74 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T03] ( 16, 74 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 6, 6 ) ubyte -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T26] ( 4, 13 ) int -> x19
;* V14 loc11 [V14,T47] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
@@ -59,7 +59,7 @@
; V48 tmp28 [V48,T32] ( 6, 6 ) ref -> x19 class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V49 tmp29 [V49,T31] ( 5, 5 ) long -> x19 single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V50 tmp30 [V50,T15] ( 5, 35 ) int -> [fp+0x2C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V51 tmp31 [V51,T05] ( 13, 71 ) int -> x1 "field V09._ref (fldOffset=0x0)" P-INDEP
+; V51 tmp31 [V51,T04] ( 13, 71 ) int -> x1 "field V09._ref (fldOffset=0x0)" P-INDEP
; V52 tmp32 [V52,T20] ( 4, 24 ) int -> registers "field V10._ref (fldOffset=0x0)" P-INDEP
; V53 tmp33 [V53,T16] ( 2, 32 ) int -> x0 "field V21._ref (fldOffset=0x0)" P-INDEP
;* V54 tmp34 [V54 ] ( 0, 0 ) long -> zero-ref single-def "field V26._dateData (fldOffset=0x0)" P-INDEP
@@ -77,9 +77,9 @@
; V66 tmp46 [V66,T10] ( 3, 48 ) ref -> x0 "arr expr"
; V67 PSPSym [V67,T50] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
;* V68 cse0 [V68,T51] ( 0, 0 ) long -> zero-ref "CSE - moderate"
-; V69 cse1 [V69,T25] ( 4, 16 ) byref -> x1 "CSE - moderate"
-; V70 cse2 [V70,T11] ( 3, 48 ) long -> x1 "CSE - aggressive"
-; V71 cse3 [V71,T02] ( 5,112 ) long -> x28 "CSE - aggressive"
+; V69 cse1 [V69,T11] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V70 cse2 [V70,T01] ( 5,112 ) byref -> x28 "CSE - aggressive"
+; V71 cse3 [V71,T25] ( 4, 16 ) byref -> x1 "CSE - moderate"
; V72 cse4 [V72,T45] ( 3, 3 ) ref -> x2 "CSE - moderate"
; V73 cse5 [V73,T46] ( 3, 3 ) ref -> x1 "CSE - moderate"
; V74 cse6 [V74,T12] ( 4, 44 ) int -> x25 "CSE - aggressive"
@@ -215,7 +215,7 @@ G_M744_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; GC ptr vars +{V11}
str wzr, [fp, #0x38] // [V12 loc9]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M744_IG11: ; bbWeight=1, gcVars=0000000000080010 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG11: ; bbWeight=1, gcVars=0000000000080008 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldrb w1, [fp, #0x38] // [V12 loc9]
cbz w1, G_M744_IG14
@@ -235,9 +235,9 @@ G_M744_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M744_IG14: ; bbWeight=1, gcVars=0000000000080010 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG14: ; bbWeight=1, gcVars=0000000000080008 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x22]
- ; GC ptr vars +{V04 V11}
+ ; GC ptr vars +{V11}
add x1, fp, #56 // [V12 loc9]
mov x0, x22
; gcrRegs +[x0]
@@ -344,16 +344,15 @@ G_M744_IG19: ; bbWeight=4, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}
;; size=40 bbWeight=4 PerfScore 44.00
G_M744_IG20: ; bbWeight=32, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
ubfiz x1, x27, #4, #32
- add x28, x1, #16
- add x1, x24, x28
- ; byrRegs +[x1]
- ldr x2, [x1, #0x08]
+ add x1, x1, #16
+ add x28, x24, x1
+ ; byrRegs +[x28]
+ ldr x2, [x28, #0x08]
; gcrRegs +[x2]
cbz x2, G_M744_IG24
;; size=20 bbWeight=32 PerfScore 192.00
-G_M744_IG21: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x1]
- ldr x1, [x24, x28]
+G_M744_IG21: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=10000000 {x28}, byref, isz
+ ldr x1, [x28]
mov x0, x1
and x0, x0, #0xD1FFAB1E
cmp x0, x20
@@ -367,22 +366,21 @@ G_M744_IG21: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=000
ldr x2, [x2]
blr x2
; gcrRegs -[x0]
+ ; byrRegs -[x28]
; gcr arg pop 0
b G_M744_IG23
;; size=48 bbWeight=16 PerfScore 200.00
-G_M744_IG22: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=0000 {}, byref
+G_M744_IG22: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=10000000 {x28}, byref
; gcrRegs +[x2]
+ ; byrRegs +[x28]
mov w0, #255
strb w0, [x2, #0x30]
ldr w0, [x21]
str w0, [x2, #0x50]
- add x0, x24, x28
- ; byrRegs +[x0]
- mov w1, #1
- str w1, [x0, #0x04]
+ mov w0, #1
+ str w0, [x28, #0x04]
ldr w0, [fp, #0x2C] // [V50 tmp30]
- ; byrRegs -[x0]
- str w0, [x24, x28]
+ str w0, [x28]
uxtb w0, w27
orr w0, w0, w23, LSL #8
str w0, [fp, #0x2C] // [V50 tmp30]
@@ -392,9 +390,10 @@ G_M744_IG22: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=000
ldr w0, [x22, #0x28]
add w0, w0, #1
str w0, [x22, #0x28]
- ;; size=72 bbWeight=16 PerfScore 336.00
+ ;; size=68 bbWeight=16 PerfScore 328.00
G_M744_IG23: ; bbWeight=16, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
+ ; byrRegs -[x28]
sub w26, w26, #1
cbz w26, G_M744_IG25
;; size=8 bbWeight=16 PerfScore 24.00
@@ -425,7 +424,7 @@ G_M744_IG27: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byr
;; size=16 bbWeight=1 PerfScore 4.50
G_M744_IG28: ; bbWeight=1, gcVars=0000000000080000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x22]
- ; GC ptr vars -{V04 V11}
+ ; GC ptr vars -{V11}
ldrb w0, [fp, #0x38] // [V12 loc9]
cbz w0, G_M744_IG32
ldr x0, [fp, #0x20] // [V00 this]
@@ -884,7 +883,7 @@ G_M744_IG65: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, f
ret lr
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1960, prolog size 52, PerfScore 1888.50, instruction count 490, allocated bytes for code 1960 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1956, prolog size 52, PerfScore 1880.50, instruction count 489, allocated bytes for code 1956 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -895,7 +894,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 392 (0x00188) Actual length = 1568 (0x000620)
+ Function Length : 391 (0x00187) Actual length = 1564 (0x00061c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -3,48 +3,48 @@
; FullOpts code
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> x21
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> x21
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T18] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x1 "impAppendStmt"
+; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> x1 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T19] ( 2, 1 ) int -> x0
+; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x0
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,12 +53,11 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T17] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V50 cse1 [V50,T00] ( 4, 14 ) int -> x13 "CSE - aggressive"
+; V49 cse0 [V49,T16] ( 3, 1.50) int -> x1 "CSE - moderate"
;
; Lcl frame size = 56
@@ -95,7 +94,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldp w13, w14, [fp, #0x10] // [V40 tmp35], [V41 tmp36]
@@ -107,30 +105,48 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
mov w21, #3
b G_M46478_IG06
;; size=32 bbWeight=1 PerfScore 9.50
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w21, w13
- cmp w21, #0
- ble G_M46478_IG07
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w13, w21, #1
- cmp w13, #4
- bhs G_M46478_IG17
- ldr w14, [x20, w13, UXTW #2]
- cbz w14, G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w21, G_M46478_IG11
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #2
+ b G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x08]
+ cbz w13, G_M46478_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #1
+ b G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x04]
+ cbz w13, G_M46478_IG08
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, wzr
+ b G_M46478_IG13
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20]
+ cbz w13, G_M46478_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w21, G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
movz x13, #0xD1FFAB1E
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
ldr w13, [x13]
- tbz w13, #0, G_M46478_IG18
+ tbz w13, #0, G_M46478_IG24
;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x13, #0xD1FFAB1E // box for <unknown class>:<unknown field>
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
@@ -151,24 +167,23 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG10
+ beq G_M46478_IG16
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=68 bbWeight=0.50 PerfScore 8.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w21, #1
- bne G_M46478_IG13
+ bne G_M46478_IG19
ldr w1, [x20]
cmp w1, #0
- ble G_M46478_IG13
+ ble G_M46478_IG19
str w1, [x19, #0x08]
ldr w1, [x19, #0x08]
ldr w0, [x20, #0x0C]
@@ -185,18 +200,17 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG12
+ beq G_M46478_IG18
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 12.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x1, w21
movz x0, #0xD1FFAB1E
@@ -204,7 +218,6 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -217,30 +230,30 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x10]
cmp w21, #1
- ble G_M46478_IG14
+ ble G_M46478_IG20
ldr x0, [x19]
ldr w1, [x20, #0x04]
ldr w2, [x0, #0x08]
cmp w2, #1
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x14]
;; size=88 bbWeight=0.50 PerfScore 14.75
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
; gcrRegs -[x0]
cmp w21, #2
- ble G_M46478_IG15
+ ble G_M46478_IG21
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x20, #0x08]
ldr w2, [x0, #0x08]
cmp w2, #2
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x18]
...
@@ -4,7 +4,7 @@
; optimized code
; optimized using Dynamic PGO
; fp based frame
-; partially interruptible
+; fully interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 39
; 3 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
@@ -12,27 +12,27 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
; V01 arg1 [V01,T01] ( 7, 3 ) byref -> x19 single-def
; V02 arg2 [V02,T02] ( 7, 3 ) byref -> x20 single-def
-; V03 loc0 [V03,T05] ( 20, 3.08) int -> x21
+; V03 loc0 [V03,T05] ( 11, 3.08) int -> x21
; V04 loc1 [V04,T04] ( 6, 3.97) int -> x22
; V05 loc2 [V05,T17] ( 2, 0 ) int -> x0
-; V06 loc3 [V06 ] ( 2, 0 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.Text.Rune>
-; V07 loc4 [V07 ] ( 3, 0 ) int -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
-;* V08 loc5 [V08,T07] ( 0, 0 ) int -> zero-ref
+; V06 loc3 [V06 ] ( 2, 0 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op <System.Text.Rune>
+; V07 loc4 [V07 ] ( 3, 0 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
+; V08 loc5 [V08,T07] ( 4, 0.03) int -> x23
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V12 tmp3 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V13 tmp4 [V13,T10] ( 3, 0 ) int -> x21 "Inlining Arg"
-; V14 tmp5 [V14,T12] ( 2, 0 ) byref -> x22 single-def "Inlining Arg"
+; V14 tmp5 [V14,T12] ( 2, 0 ) byref -> x23 single-def "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V16 tmp7 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V17 tmp8 [V17,T09] ( 5, 0 ) int -> x21 "Inlining Arg"
; V18 tmp9 [V18,T13] ( 2, 0 ) byref -> x22 "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
; V20 tmp11 [V20,T11] ( 3, 0 ) int -> x0 "Single return block return value"
-; V21 tmp12 [V21,T03] ( 7, 2 ) byref -> x0 "field V00._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp13 [V22,T00] ( 9, 3.03) int -> x1 "field V00._length (fldOffset=0x8)" P-INDEP
-; V23 tmp14 [V23 ] ( 2, 0 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V06._value (fldOffset=0x0)" P-DEP
+; V21 tmp12 [V21,T03] ( 5, 2 ) byref -> x0 "field V00._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp13 [V22,T00] ( 6, 3.03) int -> x1 "field V00._length (fldOffset=0x8)" P-INDEP
+; V23 tmp14 [V23 ] ( 2, 0 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V06._value (fldOffset=0x0)" P-DEP
;* V24 tmp15 [V24 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
; V26 tmp17 [V26,T06] ( 2, 1.95) int -> x22 "field V11._value (fldOffset=0x0)" P-INDEP
@@ -44,18 +44,19 @@
;* V32 tmp23 [V32,T20] ( 0, 0 ) int -> zero-ref "field V19._value (fldOffset=0x0)" P-INDEP
; V33 tmp24 [V33,T16] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M6810_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
+ stp fp, lr, [sp, #-0x50]!
+ stp x19, x20, [sp, #0x28]
+ stp x21, x22, [sp, #0x38]
+ str x23, [sp, #0x48]
mov fp, sp
mov x19, x2
; byrRegs +[x19]
mov x20, x3
; byrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M6810_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref, isz
; byrRegs +[x0]
sub w21, w1, #1
@@ -83,19 +84,23 @@ G_M6810_IG04: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
mov w0, wzr
;; size=8 bbWeight=0.97 PerfScore 1.46
G_M6810_IG05: ; bbWeight=0.97, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldr x23, [sp, #0x48]
+ ldp x21, x22, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0.97 PerfScore 3.90
+ ;; size=20 bbWeight=0.97 PerfScore 5.85
G_M6810_IG06: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, gcvars, byref, isz
; byrRegs +[x0 x20]
tbnz w22, #6, G_M6810_IG15
+ mov w23, #3
+ ;; size=8 bbWeight=0.03 PerfScore 0.04
+G_M6810_IG07: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref, isz
sub w21, w21, #1
cmp w21, w1
blo G_M6810_IG16
- ;; size=16 bbWeight=0.03 PerfScore 0.08
-G_M6810_IG07: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ ;; size=12 bbWeight=0.03 PerfScore 0.05
+G_M6810_IG08: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
; byrRegs -[x0]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E // code for System.Text.UnicodeDebug:AssertIsValidScalar(uint)
@@ -103,33 +108,22 @@ G_M6810_IG07: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; gcr arg pop 0
mov w0, #0xD1FFAB1E
str w0, [x19]
mov w0, #1
str w0, [x20]
mov w0, #3
;; size=44 bbWeight=0.03 PerfScore 0.24
-G_M6810_IG08: ; bbWeight=0.03, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+G_M6810_IG09: ; bbWeight=0.03, epilog, nogc, extend
+ ldr x23, [sp, #0x48]
+ ldp x21, x22, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0.03 PerfScore 0.10
-G_M6810_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, gcvars, byref, isz
+ ;; size=20 bbWeight=0.03 PerfScore 0.15
+G_M6810_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, gcvars, byref, isz
; byrRegs +[x0]
- cmp w21, w1
- bls G_M6810_IG10
- movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
- ; byrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- blr x0
- ; byrRegs -[x19-x20]
- brk_unix #0
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M6810_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref, isz
- ; byrRegs +[x0 x19-x20]
mov w2, w21
add x22, x0, x2
; byrRegs +[x22]
@@ -142,6 +136,7 @@ G_M6810_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; gcr arg pop 0
sxtw w0, w21
cmp w0, #0
cset x0, ne
@@ -153,23 +148,25 @@ G_M6810_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
+ ; gcr arg pop 0
mov x0, x22
; byrRegs +[x0]
mov w1, w21
- add x2, fp, #24 // [V06 loc3]
- add x3, fp, #16 // [V07 loc4]
+ add x2, fp, #32 // [V06 loc3]
+ add x3, fp, #24 // [V07 loc4]
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
; byrRegs -[x0 x22]
- ldr w1, [fp, #0x10] // [V07 loc4]
+ ; gcr arg pop 0
+ ldr w1, [fp, #0x18] // [V07 loc4]
cmp w1, w21
- bne G_M6810_IG07
- ldr w1, [fp, #0x10] // [V07 loc4]
+ bne G_M6810_IG08
+ ldr w1, [fp, #0x18] // [V07 loc4]
str w1, [x20]
- ldr w1, [fp, #0x18] // [V23 tmp14]
+ ldr w1, [fp, #0x20] // [V23 tmp14]
str w1, [x19]
b G_M6810_IG13
;; size=152 bbWeight=0 PerfScore 0.00
@@ -180,24 +177,27 @@ G_M6810_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; gcr arg pop 0
mov w0, #0xD1FFAB1E
str w0, [x19]
str wzr, [x20]
mov w0, #2
;; size=40 bbWeight=0 PerfScore 0.00
G_M6810_IG12: ; bbWeight=0, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldr x23, [sp, #0x48]
+ ldp x21, x22, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M6810_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x19-x20]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldr x23, [sp, #0x48]
+ ldp x21, x22, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M6810_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
; byrRegs +[x19]
mov w0, w22
@@ -207,6 +207,7 @@ G_M6810_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
ldr x1, [x1]
blr x1
; gcrRegs +[x0]
+ ; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -222,19 +223,21 @@ G_M6810_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
ldr x3, [x3]
blr x3
; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
+ ; gcr arg pop 0
b G_M6810_IG04
;; size=96 bbWeight=0 PerfScore 0.00
G_M6810_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref
; byrRegs +[x0 x20]
mov w2, w21
- add x22, x0, x2
- ; byrRegs +[x22]
+ add x23, x0, x2
+ ; byrRegs +[x23]
sub w21, w1, w21
cmp w21, #0
cset x0, ge
...
@@ -9,50 +9,51 @@
; 3 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> x19 single-def
-; V02 arg1 [V02,T04] ( 11, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T05] ( 11, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T01] ( 6, 5.59) int -> x20
-; V04 arg3 [V04,T06] ( 4, 3.89) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T13] ( 3, 2.05) ubyte -> x24 single-def
-; V06 loc0 [V06,T20] ( 3, 2.40) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T23] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T22] ( 4, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T19] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.89) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T14] ( 3, 2.05) ubyte -> x24 single-def
+; V06 loc0 [V06,T21] ( 3, 2.40) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T24] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T23] ( 4, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.40) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.16) int -> x24
-; V12 loc6 [V12,T03] ( 7, 5.94) ref -> x28 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 5.94) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T12] ( 5, 4.34) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T08] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V20 tmp7 [V20,T17] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T13] ( 5, 4.34) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T09] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V20 tmp7 [V20,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V27 tmp14 [V27,T07] ( 4, 5.36) byref -> x22 single-def "Inlining Arg"
+; V27 tmp14 [V27,T08] ( 4, 5.36) byref -> x22 single-def "Inlining Arg"
;* V28 tmp15 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V29 tmp16 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V30 tmp17 [V30,T11] ( 7, 4.36) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T18] ( 4, 2.71) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V30 tmp17 [V30,T12] ( 7, 4.36) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V31 tmp18 [V31,T19] ( 4, 2.71) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V33 tmp20 [V33,T14] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V33 tmp20 [V33,T15] ( 2, 4 ) int -> x1 "Inlining Arg"
; V34 tmp21 [V34 ] ( 3, 3.40) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V35 tmp22 [V35 ] ( 3, 3.40) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V36 tmp23 [V36 ] ( 3, 3.40) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V37 tmp24 [V37 ] ( 3, 3.40) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V38 tmp25 [V38,T24] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V39 cse0 [V39,T09] ( 3, 4.62) int -> x0 "CSE - aggressive"
-; V40 cse1 [V40,T16] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V41 cse2 [V41,T10] ( 4, 4.54) int -> x22 "CSE - aggressive"
-; V42 cse3 [V42,T21] ( 2, 2.15) byref -> x27 hoist "CSE - moderate"
-; V43 cse4 [V43,T15] ( 3, 3 ) ref -> x1 "CSE - moderate"
+;* V38 tmp25 [V38,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V39 cse0 [V39,T10] ( 3, 4.62) int -> x0 "CSE - aggressive"
+; V40 cse1 [V40,T17] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V41 cse2 [V41,T03] ( 10, 6.52) long -> x28 hoist multi-def "CSE - aggressive"
+; V42 cse3 [V42,T11] ( 4, 4.54) int -> x22 "CSE - moderate"
+; V43 cse4 [V43,T22] ( 2, 2.15) byref -> x27 hoist "CSE - moderate"
+; V44 cse5 [V44,T16] ( 3, 3 ) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 32
@@ -218,7 +219,7 @@ G_M37807_IG13: ; bbWeight=0.34, gcrefRegs=1A00000 {x21 x23 x24}, byrefReg
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x24]
; byrRegs -[x14]
- cbz x22, G_M37807_IG28
+ cbz x22, G_M37807_IG29
mov x0, x22
; byrRegs +[x0]
mov x1, x28
@@ -252,30 +253,36 @@ G_M37807_IG14: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=800
stp wzr, w1, [fp, #0x28] // [V36 tmp23], [V37 tmp24]
mov w24, wzr
cmp w22, #0
- ble G_M37807_IG26
+ ble G_M37807_IG27
;; size=68 bbWeight=1 PerfScore 18.00
G_M37807_IG15: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=80000 {x19}, byref
add x27, x0, #16
; byrRegs +[x27]
- ;; size=4 bbWeight=0.61 PerfScore 0.30
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #0xD1FFAB1E LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.21
G_M37807_IG16: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
; gcrRegs -[x0]
- ldr x28, [x27, w24, UXTW #3]
- ; gcrRegs +[x28]
- ldr w0, [x28, #0x58]
+ ldr x2, [x27, w24, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w20, w0
cmp w1, w0
bne G_M37807_IG23
- ;; size=20 bbWeight=1.54 PerfScore 12.32
-G_M37807_IG17: ; bbWeight=1.40, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
+ ;; size=24 bbWeight=1.54 PerfScore 13.86
+G_M37807_IG17: ; bbWeight=1.40, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref, isz
cbz w25, G_M37807_IG19
;; size=4 bbWeight=1.40 PerfScore 1.40
-G_M37807_IG18: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- mov x0, x28
+G_M37807_IG18: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -283,28 +290,26 @@ G_M37807_IG18: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG29
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ cbz w0, G_M37807_IG30
+ mov x0, x28
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG19: ; bbWeight=1.40, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- cbz x23, G_M37807_IG22
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG19: ; bbWeight=1.40, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ cbz x23, G_M37807_IG25
;; size=4 bbWeight=1.40 PerfScore 1.40
-G_M37807_IG20: ; bbWeight=0.49, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- mov x0, x28
+G_M37807_IG20: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ add x1, x28, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x28
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x28]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -313,23 +318,19 @@ G_M37807_IG20: ; bbWeight=0.49, gcrefRegs=10A00000 {x21 x23 x28}, byrefRe
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG25
- ;; size=56 bbWeight=0.49 PerfScore 10.21
-G_M37807_IG21: ; bbWeight=0.24, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ bne G_M37807_IG26
+ ;; size=48 bbWeight=0.49 PerfScore 10.45
+G_M37807_IG21: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.24 PerfScore 0.61
-G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ;; size=8 bbWeight=0.24 PerfScore 0.36
+G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x28
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -338,41 +339,45 @@ G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=10A00000 {x21 x23 x28}, byrefRe
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x28]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.40 PerfScore 14.73
+ ;; size=48 bbWeight=1.40 PerfScore 15.44
G_M37807_IG23: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w24, w24, #1
cmp w22, w24
bgt G_M37807_IG16
- ;; size=28 bbWeight=1.54 PerfScore 6.93
+ ;; size=20 bbWeight=1.54 PerfScore 5.39
G_M37807_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x27]
- b G_M37807_IG26
+ b G_M37807_IG27
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG25: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
- ; gcrRegs +[x21 x23]
+G_M37807_IG25: ; bbWeight=0.70, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref
+ ; gcrRegs +[x2 x21 x23]
; byrRegs +[x27]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ; GC ptr vars +{V04 V12}
+ b G_M37807_IG22
+ ;; size=4 bbWeight=0.70 PerfScore 0.70
+G_M37807_IG26: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref
+ ; gcrRegs -[x2]
+ ; GC ptr vars -{V04 V12}
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
b G_M37807_IG23
...
@@ -9,50 +9,51 @@
; 3 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> x19 single-def
-; V02 arg1 [V02,T04] ( 11, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T05] ( 11, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T01] ( 6, 5.65) int -> x20
-; V04 arg3 [V04,T06] ( 4, 3.89) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T13] ( 3, 2.11) ubyte -> x24 single-def
-; V06 loc0 [V06,T20] ( 3, 2.40) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T23] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T22] ( 4, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T19] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.89) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T14] ( 3, 2.11) ubyte -> x24 single-def
+; V06 loc0 [V06,T21] ( 3, 2.40) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T24] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T23] ( 4, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.40) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.16) int -> x24
-; V12 loc6 [V12,T03] ( 7, 5.94) ref -> x28 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 5.94) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T12] ( 5, 4.35) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T08] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V20 tmp7 [V20,T17] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T13] ( 5, 4.35) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T09] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V20 tmp7 [V20,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V27 tmp14 [V27,T07] ( 4, 5.41) byref -> x22 single-def "Inlining Arg"
+; V27 tmp14 [V27,T08] ( 4, 5.41) byref -> x22 single-def "Inlining Arg"
;* V28 tmp15 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V29 tmp16 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V30 tmp17 [V30,T11] ( 7, 4.41) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T18] ( 4, 2.81) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V30 tmp17 [V30,T12] ( 7, 4.41) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V31 tmp18 [V31,T19] ( 4, 2.81) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V33 tmp20 [V33,T14] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V33 tmp20 [V33,T15] ( 2, 4 ) int -> x1 "Inlining Arg"
; V34 tmp21 [V34 ] ( 3, 3.40) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V35 tmp22 [V35 ] ( 3, 3.40) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V36 tmp23 [V36 ] ( 3, 3.40) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V37 tmp24 [V37 ] ( 3, 3.40) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V38 tmp25 [V38,T24] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V39 cse0 [V39,T09] ( 3, 4.62) int -> x0 "CSE - aggressive"
-; V40 cse1 [V40,T16] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V41 cse2 [V41,T10] ( 4, 4.54) int -> x22 "CSE - aggressive"
-; V42 cse3 [V42,T21] ( 2, 2.15) byref -> x27 hoist "CSE - moderate"
-; V43 cse4 [V43,T15] ( 3, 3 ) ref -> x1 "CSE - moderate"
+;* V38 tmp25 [V38,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V39 cse0 [V39,T10] ( 3, 4.62) int -> x0 "CSE - aggressive"
+; V40 cse1 [V40,T17] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V41 cse2 [V41,T03] ( 10, 6.52) long -> x28 hoist multi-def "CSE - aggressive"
+; V42 cse3 [V42,T11] ( 4, 4.54) int -> x22 "CSE - moderate"
+; V43 cse4 [V43,T22] ( 2, 2.15) byref -> x27 hoist "CSE - moderate"
+; V44 cse5 [V44,T16] ( 3, 3 ) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 32
@@ -218,7 +219,7 @@ G_M37807_IG13: ; bbWeight=0.35, gcrefRegs=1A00000 {x21 x23 x24}, byrefReg
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x24]
; byrRegs -[x14]
- cbz x22, G_M37807_IG28
+ cbz x22, G_M37807_IG29
mov x0, x22
; byrRegs +[x0]
mov x1, x28
@@ -252,30 +253,36 @@ G_M37807_IG14: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=800
stp wzr, w1, [fp, #0x28] // [V36 tmp23], [V37 tmp24]
mov w24, wzr
cmp w22, #0
- ble G_M37807_IG26
+ ble G_M37807_IG27
;; size=68 bbWeight=1 PerfScore 18.00
G_M37807_IG15: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=80000 {x19}, byref
add x27, x0, #16
; byrRegs +[x27]
- ;; size=4 bbWeight=0.61 PerfScore 0.30
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #0xD1FFAB1E LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.21
G_M37807_IG16: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
; gcrRegs -[x0]
- ldr x28, [x27, w24, UXTW #3]
- ; gcrRegs +[x28]
- ldr w0, [x28, #0x58]
+ ldr x2, [x27, w24, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w20, w0
cmp w1, w0
bne G_M37807_IG23
- ;; size=20 bbWeight=1.54 PerfScore 12.32
-G_M37807_IG17: ; bbWeight=1.40, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
+ ;; size=24 bbWeight=1.54 PerfScore 13.86
+G_M37807_IG17: ; bbWeight=1.40, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref, isz
cbz w25, G_M37807_IG19
;; size=4 bbWeight=1.40 PerfScore 1.40
-G_M37807_IG18: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- mov x0, x28
+G_M37807_IG18: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -283,28 +290,26 @@ G_M37807_IG18: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG29
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ cbz w0, G_M37807_IG30
+ mov x0, x28
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG19: ; bbWeight=1.40, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- cbz x23, G_M37807_IG22
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG19: ; bbWeight=1.40, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ cbz x23, G_M37807_IG25
;; size=4 bbWeight=1.40 PerfScore 1.40
-G_M37807_IG20: ; bbWeight=0.49, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- mov x0, x28
+G_M37807_IG20: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ add x1, x28, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x28
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x28]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -313,23 +318,19 @@ G_M37807_IG20: ; bbWeight=0.49, gcrefRegs=10A00000 {x21 x23 x28}, byrefRe
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG25
- ;; size=56 bbWeight=0.49 PerfScore 10.21
-G_M37807_IG21: ; bbWeight=0.24, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ bne G_M37807_IG26
+ ;; size=48 bbWeight=0.49 PerfScore 10.45
+G_M37807_IG21: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.24 PerfScore 0.61
-G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ;; size=8 bbWeight=0.24 PerfScore 0.36
+G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x28
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -338,41 +339,45 @@ G_M37807_IG22: ; bbWeight=1.40, gcrefRegs=10A00000 {x21 x23 x28}, byrefRe
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x28]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.40 PerfScore 14.73
+ ;; size=48 bbWeight=1.40 PerfScore 15.44
G_M37807_IG23: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w24, w24, #1
cmp w22, w24
bgt G_M37807_IG16
- ;; size=28 bbWeight=1.54 PerfScore 6.93
+ ;; size=20 bbWeight=1.54 PerfScore 5.39
G_M37807_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x27]
- b G_M37807_IG26
+ b G_M37807_IG27
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG25: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
- ; gcrRegs +[x21 x23]
+G_M37807_IG25: ; bbWeight=0.70, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref
+ ; gcrRegs +[x2 x21 x23]
; byrRegs +[x27]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ; GC ptr vars +{V04 V12}
+ b G_M37807_IG22
+ ;; size=4 bbWeight=0.70 PerfScore 0.70
+G_M37807_IG26: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref
+ ; gcrRegs -[x2]
+ ; GC ptr vars -{V04 V12}
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
b G_M37807_IG23
...
@@ -10,27 +10,27 @@
;
; V00 this [V00,T23] ( 9, 22.50) ref -> x19 this class-hnd single-def <System.Buffers.SharedArrayPool`1[int]>
; V01 loc0 [V01,T14] ( 5, 33.50) int -> x20
-; V02 loc1 [V02,T33] ( 5, 19 ) int -> x21
+; V02 loc1 [V02,T32] ( 5, 19 ) int -> x21
; V03 loc2 [V03,T22] ( 7, 27 ) ref -> x22 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T46] ( 4, 10 ) ref -> x23 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T32] ( 6, 19 ) int -> x24
-; V06 loc5 [V06,T40] ( 8, 10.50) ref -> [fp+0x48] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T45] ( 4, 10 ) ref -> x23 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T31] ( 6, 19 ) int -> x24
+; V06 loc5 [V06,T39] ( 8, 10.50) ref -> [fp+0x40] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T41] ( 8, 10.50) ref -> [fp+0x40] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T40] ( 8, 10.50) ref -> [fp+0x38] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T27] ( 3, 20 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T26] ( 3, 20 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T06] ( 5, 66 ) int -> x20
; V12 loc11 [V12,T04] ( 6, 64 ) ref -> x25 class-hnd <<unknown class>>
-; V13 loc12 [V13,T47] ( 2, 8.50) int -> x24
-; V14 loc13 [V14,T70] ( 3, 1.50) int -> x24
-; V15 loc14 [V15,T42] ( 8, 10.50) ref -> [fp+0x38] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T46] ( 2, 8.50) int -> x24
+; V14 loc13 [V14,T69] ( 3, 1.50) int -> x24
+; V15 loc14 [V15,T41] ( 8, 10.50) ref -> [fp+0x30] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T12] ( 5, 36 ) ref -> x25 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T12] ( 6, 44 ) ref -> x25 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> x27
-; V19 loc18 [V19,T25] ( 3, 24 ) int -> x3
-; V20 loc19 [V20,T09] ( 6, 48 ) ref -> [fp+0x30] class-hnd spill-single-def <<unknown class>>
+; V19 loc18 [V19,T24] ( 3, 24 ) int -> x2
+; V20 loc19 [V20,T09] ( 6, 48 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T28] ( 3, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T27] ( 3, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T13] ( 2, 36 ) int -> x26 "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -40,74 +40,73 @@
; V29 tmp8 [V29,T18] ( 2, 32 ) int -> x27 "impAppendStmt"
; V30 tmp9 [V30,T19] ( 2, 32 ) int -> x25 "impAppendStmt"
;* V31 tmp10 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V32 tmp11 [V32,T58] ( 3, 3 ) ref -> x19 single-def "handle histogram profile tmp"
+; V32 tmp11 [V32,T57] ( 3, 3 ) ref -> x19 single-def "handle histogram profile tmp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V36 tmp15 [V36,T59] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
+; V36 tmp15 [V36,T58] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
; V38 tmp17 [V38,T03] ( 3, 96 ) ref -> x25 "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V42 tmp21 [V42,T60] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
+; V42 tmp21 [V42,T59] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V44 tmp23 [V44,T11] ( 3, 48 ) ref -> [fp+0x28] spill-single-def "handle histogram profile tmp"
+; V44 tmp23 [V44,T11] ( 3, 48 ) ref -> [fp+0x20] spill-single-def "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V48 tmp27 [V48,T29] ( 3, 20 ) int -> x27 "Inline stloc first use temp"
-; V49 tmp28 [V49,T54] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V48 tmp27 [V48,T28] ( 3, 20 ) int -> x27 "Inline stloc first use temp"
+; V49 tmp28 [V49,T53] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V50 tmp29 [V50,T07] ( 5, 66 ) int -> x25 "Inline stloc first use temp"
; V51 tmp30 [V51,T20] ( 2, 32 ) int -> x4 "Inlining Arg"
; V52 tmp31 [V52,T21] ( 2, 32 ) int -> x4 "Inlining Arg"
-; V53 tmp32 [V53,T55] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
-; V54 tmp33 [V54,T67] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
-; V55 tmp34 [V55,T56] ( 2, 4 ) ref -> x24 "field V09.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T68] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T57] ( 2, 4 ) ref -> x25 "field V16.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T69] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
+; V53 tmp32 [V53,T54] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
+; V54 tmp33 [V54,T66] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T55] ( 2, 4 ) ref -> x24 "field V09.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T67] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T56] ( 2, 4 ) ref -> x25 "field V16.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T68] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
;* V59 tmp38 [V59 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V60 tmp39 [V60 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V28.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V28.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V31.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V31.value (fldOffset=0x8)" P-DEP
-; V65 tmp44 [V65,T61] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V66 tmp45 [V66,T35] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V67 tmp46 [V67,T51] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V65 tmp44 [V65,T60] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V66 tmp45 [V66,T34] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V67 tmp46 [V67,T50] ( 2, 8 ) ref -> x0 "argument with side effect"
; V68 tmp47 [V68,T15] ( 2, 32 ) ref -> x1 "argument with side effect"
-;* V69 tmp48 [V69,T38] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V70 tmp49 [V70,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V71 tmp50 [V71,T62] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V72 tmp51 [V72,T63] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V73 tmp52 [V73,T36] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V74 tmp53 [V74,T52] ( 2, 8 ) ref -> x0 "argument with side effect"
+;* V69 tmp48 [V69,T37] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V70 tmp49 [V70,T71] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V71 tmp50 [V71,T61] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V72 tmp51 [V72,T62] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V73 tmp52 [V73,T35] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V74 tmp53 [V74,T51] ( 2, 8 ) ref -> x0 "argument with side effect"
; V75 tmp54 [V75,T08] ( 2, 64 ) ref -> x1 "argument with side effect"
-;* V76 tmp55 [V76,T39] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V77 tmp56 [V77,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V78 tmp57 [V78,T64] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V79 tmp58 [V79,T65] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V80 tmp59 [V80,T37] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V81 tmp60 [V81,T53] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V82 tmp61 [V82,T74] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V83 tmp62 [V83,T66] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V84 PSPSym [V84,T71] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
-; V85 cse0 [V85,T48] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
-; V86 cse1 [V86,T43] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
-; V87 cse2 [V87,T49] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
-; V88 cse3 [V88,T44] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
-; V89 cse4 [V89,T50] ( 4, 8 ) ref -> x25 multi-def "CSE - moderate"
-; V90 cse5 [V90,T45] ( 6, 10.50) ref -> x25 multi-def "CSE - moderate"
-; V91 cse6 [V91,T24] ( 3, 24 ) byref -> [fp+0x20] spill-single-def "CSE - moderate"
-; V92 cse7 [V92,T10] ( 4, 48 ) long -> x1 "CSE - aggressive"
-; V93 cse8 [V93,T01] ( 20,116.50) long -> x23 hoist multi-def "CSE - aggressive"
+;* V76 tmp55 [V76,T38] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V77 tmp56 [V77,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V78 tmp57 [V78,T63] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V79 tmp58 [V79,T64] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V80 tmp59 [V80,T36] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V81 tmp60 [V81,T52] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V82 tmp61 [V82,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V83 tmp62 [V83,T65] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V84 PSPSym [V84,T70] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
+; V85 cse0 [V85,T47] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
+; V86 cse1 [V86,T42] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
+; V87 cse2 [V87,T48] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
+; V88 cse3 [V88,T43] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
+; V89 cse4 [V89,T49] ( 4, 8 ) ref -> x25 multi-def "CSE - moderate"
+; V90 cse5 [V90,T44] ( 6, 10.50) ref -> x25 multi-def "CSE - moderate"
+; V91 cse6 [V91,T10] ( 5, 56 ) long -> [fp+0x48] spill-single-def "CSE - aggressive"
+; V92 cse7 [V92,T01] ( 20,116.50) long -> x23 hoist multi-def "CSE - aggressive"
+; V93 cse8 [V93,T02] ( 44,101.50) long -> registers multi-def "CSE - aggressive"
; V94 cse9 [V94,T05] ( 3, 68 ) int -> x28 "CSE - aggressive"
-; V95 cse10 [V95,T02] ( 44,101.50) long -> registers multi-def "CSE - aggressive"
-; V96 cse11 [V96,T26] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
-; V97 cse12 [V97,T34] ( 2, 18 ) byref -> [fp+0x18] spill-single-def hoist "CSE - moderate"
-; V98 cse13 [V98,T30] ( 3, 20 ) int -> x28 "CSE - moderate"
-; V99 cse14 [V99,T31] ( 3, 20 ) int -> x23 "CSE - moderate"
+; V95 cse10 [V95,T25] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
+; V96 cse11 [V96,T33] ( 2, 18 ) byref -> [fp+0x18] spill-single-def hoist "CSE - moderate"
+; V97 cse12 [V97,T29] ( 3, 20 ) int -> x28 "CSE - moderate"
+; V98 cse13 [V98,T30] ( 3, 20 ) int -> x23 "CSE - moderate"
;
; Lcl frame size = 80
@@ -212,10 +211,10 @@ G_M34916_IG06: ; bbWeight=2, gcrefRegs=2C80000 {x19 x22 x23 x25}, byrefRe
ble G_M34916_IG08
add x5, x0, #16
; byrRegs +[x5]
- str x5, [fp, #0x18] // [V97 cse12]
- ; GC ptr vars +{V97}
+ str x5, [fp, #0x18] // [V96 cse11]
+ ; GC ptr vars +{V96}
;; size=100 bbWeight=2 PerfScore 45.00
-G_M34916_IG07: ; bbWeight=16, gcVars=00000000000000000000000400000000 {V97}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0020 {x5}, gcvars, byref, isz
+G_M34916_IG07: ; bbWeight=16, gcVars=00000000000000000000000200000000 {V96}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0020 {x5}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x0, [x5, w25, UXTW #3]
; gcrRegs +[x0]
@@ -234,13 +233,13 @@ G_M34916_IG07: ; bbWeight=16, gcVars=00000000000000000000000400000000 {V9
; gcr arg pop 0
add w25, w25, #1
cmp w28, w25
- ldr x5, [fp, #0x18] // [V97 cse12]
+ ldr x5, [fp, #0x18] // [V96 cse11]
; byrRegs +[x5]
bgt G_M34916_IG07
;; size=60 bbWeight=16 PerfScore 280.00
G_M34916_IG08: ; bbWeight=4, gcVars=00000000000000000000000000000000 {}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x5]
- ; GC ptr vars -{V97}
+ ; GC ptr vars -{V96}
movz x26, #0xD1FFAB1E
movk x26, #0xD1FFAB1E LSL #16
movk x26, #0xD1FFAB1E LSL #32
@@ -280,10 +279,10 @@ G_M34916_IG10: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=000
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x48] // [V06 loc5]
+ str x0, [fp, #0x40] // [V06 loc5]
; GC ptr vars +{V06}
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M34916_IG11: ; bbWeight=0.50, gcVars=00000000000000000000010000000000 {V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M34916_IG11: ; bbWeight=0.50, gcVars=00000000000000000000008000000000 {V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
b G_M34916_IG13
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M34916_IG12: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
@@ -291,7 +290,7 @@ G_M34916_IG12: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b
add x0, x26, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
add x1, x26, #0xD1FFAB1E
bl CORINFO_HELP_CLASSPROFILE32
@@ -312,7 +311,7 @@ G_M34916_IG12: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
;; size=60 bbWeight=2 PerfScore 35.00
G_M34916_IG13: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
@@ -320,7 +319,7 @@ G_M34916_IG13: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
mov x23, x0
; gcrRegs +[x23]
@@ -339,7 +338,7 @@ G_M34916_IG14: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}
add x0, x26, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
add x1, x26, #0xD1FFAB1E
; GC ptr vars -{V06}
@@ -381,15 +380,15 @@ G_M34916_IG15: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=000
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x40] // [V08 loc7]
+ str x0, [fp, #0x38] // [V08 loc7]
; GC ptr vars +{V08}
;; size=60 bbWeight=0.50 PerfScore 7.00
-G_M34916_IG16: ; bbWeight=4, gcVars=00000000000000000000020000000000 {V08}, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34916_IG16: ; bbWeight=4, gcVars=00000000000000000000010000000000 {V08}, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
add x1, x26, #0xD1FFAB1E
bl CORINFO_HELP_CLASSPROFILE32
...
@@ -12,13 +12,13 @@
; V00 this [V00,T05] ( 4, 4 ) ref -> x21 this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T04] ( 6, 4 ) ref -> x20 ld-addr-op class-hnd <System.String>
; V02 arg2 [V02,T02] ( 6, 5.31) int -> x19
-; V03 loc0 [V03,T14] ( 3, 2 ) int -> x22 ld-addr-op
-; V04 loc1 [V04,T12] ( 3, 2.23) ref -> x0 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
-; V05 loc2 [V05,T10] ( 16, 2.61) ref -> x21 class-hnd <System.Reflection.FieldInfo>
-; V06 loc3 [V06,T15] ( 3, 2 ) ubyte -> x22
+; V03 loc0 [V03,T13] ( 3, 2 ) int -> x22 ld-addr-op
+; V04 loc1 [V04,T11] ( 4, 2.54) ref -> x21 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
+; V05 loc2 [V05,T10] ( 16, 2.61) ref -> x22 class-hnd <System.Reflection.FieldInfo>
+; V06 loc3 [V06,T14] ( 3, 2 ) ubyte -> x23
;* V07 loc4 [V07 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op
-; V08 loc5 [V08,T13] ( 5, 2.22) int -> x23
-; V09 loc6 [V09,T16] ( 12, 0.92) ref -> x26 class-hnd <System.Reflection.RuntimeFieldInfo>
+; V08 loc5 [V08,T12] ( 5, 2.22) int -> x24
+; V09 loc6 [V09,T15] ( 12, 0.92) ref -> x26 class-hnd <System.Reflection.RuntimeFieldInfo>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -28,7 +28,7 @@
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V19 tmp9 [V19,T19] ( 3, 0 ) ref -> x20 "handle histogram profile tmp"
+; V19 tmp9 [V19,T18] ( 3, 0 ) ref -> x20 "handle histogram profile tmp"
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
@@ -50,20 +50,19 @@
;* V38 tmp28 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V39 tmp29 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp30 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V41 tmp31 [V41,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V42 tmp32 [V42,T20] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V43 tmp33 [V43,T21] ( 3, 0 ) ref -> x0 "argument with side effect"
-;* V44 tmp34 [V44,T28] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V45 tmp35 [V45,T29] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V46 tmp36 [V46,T22] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V47 tmp37 [V47,T23] ( 3, 0 ) ref -> x20 "argument with side effect"
-; V48 tmp38 [V48,T26] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V49 tmp39 [V49,T24] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V50 tmp40 [V50,T25] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V51 cse0 [V51,T17] ( 3, 0.92) int -> x0 "CSE - conservative"
-; V52 cse1 [V52,T11] ( 3, 2.31) int -> x24 "CSE - moderate"
-; V53 cse2 [V53,T18] ( 2, 0.54) byref -> x25 hoist "CSE - conservative"
-; V54 cse3 [V54,T09] ( 3, 3 ) long -> x0 "CSE - aggressive"
+;* V41 tmp31 [V41,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V42 tmp32 [V42,T19] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V43 tmp33 [V43,T20] ( 3, 0 ) ref -> x0 "argument with side effect"
+;* V44 tmp34 [V44,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V45 tmp35 [V45,T28] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V46 tmp36 [V46,T21] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V47 tmp37 [V47,T22] ( 3, 0 ) ref -> x20 "argument with side effect"
+; V48 tmp38 [V48,T25] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V49 tmp39 [V49,T23] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V50 tmp40 [V50,T24] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
+; V51 cse0 [V51,T16] ( 3, 0.92) int -> x0 "CSE - conservative"
+; V52 cse1 [V52,T17] ( 2, 0.54) byref -> x25 hoist "CSE - conservative"
+; V53 cse2 [V53,T09] ( 3, 3 ) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -223,30 +222,32 @@ G_M40435_IG10: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}
blr x4
; gcrRegs -[x2 x20]
; gcr arg pop 0
- mov x21, xzr
+ mov x21, x0
; gcrRegs +[x21]
+ mov x22, xzr
+ ; gcrRegs +[x22]
eor w19, w19, #2
- mov w22, wzr
mov w23, wzr
- ldr w24, [x0, #0x08]
- cmp w24, #0
+ mov w24, wzr
+ ldr w0, [x21, #0x08]
+ ; gcrRegs -[x0]
+ cmp w0, #0
ble G_M40435_IG17
- ;; size=64 bbWeight=1 PerfScore 16.50
-G_M40435_IG11: ; bbWeight=0.23, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref
- add x25, x0, #16
+ ;; size=68 bbWeight=1 PerfScore 17.00
+G_M40435_IG11: ; bbWeight=0.23, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
+ add x25, x21, #16
; byrRegs +[x25]
;; size=4 bbWeight=0.23 PerfScore 0.12
-G_M40435_IG12: ; bbWeight=0.31, gcrefRegs=200000 {x21}, byrefRegs=2000000 {x25}, byref, isz
- ; gcrRegs -[x0]
- ldr x26, [x25, w23, UXTW #3]
+G_M40435_IG12: ; bbWeight=0.31, gcrefRegs=600000 {x21 x22}, byrefRegs=2000000 {x25}, byref, isz
+ ldr x26, [x25, w24, UXTW #3]
; gcrRegs +[x26]
ldr w0, [x26, #0x18]
and w1, w19, w0
cmp w1, w0
bne G_M40435_IG16
- cbz x21, G_M40435_IG15
+ cbz x22, G_M40435_IG15
;; size=24 bbWeight=0.31 PerfScore 2.75
-G_M40435_IG13: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=2000000 {x25}, byref, isz
+G_M40435_IG13: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=2000000 {x25}, byref, isz
mov x0, x26
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -264,14 +265,14 @@ G_M40435_IG13: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
; gcr arg pop 0
mov x20, x0
; gcrRegs +[x20]
- mov x0, x21
+ mov x0, x22
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -280,14 +281,14 @@ G_M40435_IG13: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
; gcr arg pop 0
cmp x20, x0
beq G_M40435_IG27
- mov x0, x21
+ mov x0, x22
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0 x20]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -332,9 +333,9 @@ G_M40435_IG13: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov w22, #1
+ mov w23, #1
;; size=248 bbWeight=0 PerfScore 0.00
-G_M40435_IG14: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=2000000 {x25}, byref, isz
+G_M40435_IG14: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=2000000 {x25}, byref, isz
mov x0, x26
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -358,7 +359,7 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -366,7 +367,7 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -383,7 +384,7 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
cbnz w0, G_M40435_IG24
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -391,7 +392,7 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -411,35 +412,37 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=20000
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_COUNTPROFILE32
- ; gcrRegs -[x21]
+ ; gcrRegs -[x22]
; gcr arg pop 0
;; size=212 bbWeight=0 PerfScore 0.00
-G_M40435_IG15: ; bbWeight=0.31, gcrefRegs=4000000 {x26}, byrefRegs=2000000 {x25}, byref
+G_M40435_IG15: ; bbWeight=0.31, gcrefRegs=4200000 {x21 x26}, byrefRegs=2000000 {x25}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov x21, x26
- ; gcrRegs +[x21]
+ mov x22, x26
+ ; gcrRegs +[x22]
;; size=20 bbWeight=0.31 PerfScore 0.92
-G_M40435_IG16: ; bbWeight=0.31, gcrefRegs=200000 {x21}, byrefRegs=2000000 {x25}, byref, isz
+G_M40435_IG16: ; bbWeight=0.31, gcrefRegs=600000 {x21 x22}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x26]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- add w23, w23, #1
- cmp w24, w23
+ add w24, w24, #1
+ ldr w0, [x21, #0x08]
+ cmp w0, w24
bgt G_M40435_IG12
- ;; size=28 bbWeight=0.31 PerfScore 1.38
-G_M40435_IG17: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.31 PerfScore 2.29
+G_M40435_IG17: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x21]
; byrRegs -[x25]
- cbz w22, G_M40435_IG20
+ cbz w23, G_M40435_IG20
;; size=4 bbWeight=1 PerfScore 1.00
-G_M40435_IG18: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- mov x0, x21
+G_M40435_IG18: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -447,7 +450,7 @@ G_M40435_IG18: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -463,34 +466,34 @@ G_M40435_IG18: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
...
@@ -3,48 +3,48 @@
; Tier-0 switched to FullOpts code
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> x21
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> x21
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T18] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x1 "impAppendStmt"
+; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> x1 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T19] ( 2, 1 ) int -> x0
+; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x0
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,12 +53,11 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T17] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V50 cse1 [V50,T00] ( 4, 14 ) int -> x13 "CSE - aggressive"
+; V49 cse0 [V49,T16] ( 3, 1.50) int -> x1 "CSE - moderate"
;
; Lcl frame size = 56
@@ -95,7 +94,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldp w13, w14, [fp, #0x10] // [V40 tmp35], [V41 tmp36]
@@ -107,30 +105,48 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
mov w21, #3
b G_M46478_IG06
;; size=32 bbWeight=1 PerfScore 9.50
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w21, w13
- cmp w21, #0
- ble G_M46478_IG07
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w13, w21, #1
- cmp w13, #4
- bhs G_M46478_IG17
- ldr w14, [x20, w13, UXTW #2]
- cbz w14, G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w21, G_M46478_IG11
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #2
+ b G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x08]
+ cbz w13, G_M46478_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #1
+ b G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x04]
+ cbz w13, G_M46478_IG08
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, wzr
+ b G_M46478_IG13
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20]
+ cbz w13, G_M46478_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w21, G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
movz x13, #0xD1FFAB1E
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
ldr w13, [x13]
- tbz w13, #0, G_M46478_IG18
+ tbz w13, #0, G_M46478_IG24
;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x13, #0xD1FFAB1E // box for <unknown class>:<unknown field>
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
@@ -151,24 +167,23 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG10
+ beq G_M46478_IG16
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=68 bbWeight=0.50 PerfScore 8.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w21, #1
- bne G_M46478_IG13
+ bne G_M46478_IG19
ldr w1, [x20]
cmp w1, #0
- ble G_M46478_IG13
+ ble G_M46478_IG19
str w1, [x19, #0x08]
ldr w1, [x19, #0x08]
ldr w0, [x20, #0x0C]
@@ -185,18 +200,17 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG12
+ beq G_M46478_IG18
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 12.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x1, w21
movz x0, #0xD1FFAB1E
@@ -204,7 +218,6 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -217,30 +230,30 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x10]
cmp w21, #1
- ble G_M46478_IG14
+ ble G_M46478_IG20
ldr x0, [x19]
ldr w1, [x20, #0x04]
ldr w2, [x0, #0x08]
cmp w2, #1
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x14]
;; size=88 bbWeight=0.50 PerfScore 14.75
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
; gcrRegs -[x0]
cmp w21, #2
- ble G_M46478_IG15
+ ble G_M46478_IG21
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x20, #0x08]
ldr w2, [x0, #0x08]
cmp w2, #2
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x18]
...
@@ -3,48 +3,48 @@
; FullOpts code
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> x21
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> x21
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T18] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x1 "impAppendStmt"
+; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> x1 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T19] ( 2, 1 ) int -> x0
+; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x0
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,12 +53,11 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T17] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V50 cse1 [V50,T00] ( 4, 14 ) int -> x13 "CSE - aggressive"
+; V49 cse0 [V49,T16] ( 3, 1.50) int -> x1 "CSE - moderate"
;
; Lcl frame size = 56
@@ -95,7 +94,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldp w13, w14, [fp, #0x10] // [V40 tmp35], [V41 tmp36]
@@ -107,30 +105,48 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
mov w21, #3
b G_M46478_IG06
;; size=32 bbWeight=1 PerfScore 9.50
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w21, w13
- cmp w21, #0
- ble G_M46478_IG07
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w13, w21, #1
- cmp w13, #4
- bhs G_M46478_IG17
- ldr w14, [x20, w13, UXTW #2]
- cbz w14, G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w21, G_M46478_IG11
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #2
+ b G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x08]
+ cbz w13, G_M46478_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #1
+ b G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x04]
+ cbz w13, G_M46478_IG08
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, wzr
+ b G_M46478_IG13
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20]
+ cbz w13, G_M46478_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w21, G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
movz x13, #0xD1FFAB1E
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
ldr w13, [x13]
- tbz w13, #0, G_M46478_IG18
+ tbz w13, #0, G_M46478_IG24
;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x13, #0xD1FFAB1E // box for <unknown class>:<unknown field>
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
@@ -151,24 +167,23 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG10
+ beq G_M46478_IG16
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=68 bbWeight=0.50 PerfScore 8.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w21, #1
- bne G_M46478_IG13
+ bne G_M46478_IG19
ldr w1, [x20]
cmp w1, #0
- ble G_M46478_IG13
+ ble G_M46478_IG19
str w1, [x19, #0x08]
ldr w1, [x19, #0x08]
ldr w0, [x20, #0x0C]
@@ -185,18 +200,17 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG12
+ beq G_M46478_IG18
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 12.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x1, w21
movz x0, #0xD1FFAB1E
@@ -204,7 +218,6 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -217,30 +230,30 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x10]
cmp w21, #1
- ble G_M46478_IG14
+ ble G_M46478_IG20
ldr x0, [x19]
ldr w1, [x20, #0x04]
ldr w2, [x0, #0x08]
cmp w2, #1
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x14]
;; size=88 bbWeight=0.50 PerfScore 14.75
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
; gcrRegs -[x0]
cmp w21, #2
- ble G_M46478_IG15
+ ble G_M46478_IG21
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x20, #0x08]
ldr w2, [x0, #0x08]
cmp w2, #2
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x18]
...
@@ -12,8 +12,8 @@
; V02 arg2 [V02,T24] ( 5, 15 ) ref -> x20 class-hnd exact single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T50] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [fp+0x6C]
+; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [fp+0x6C]
; V07 loc3 [V07,T06] ( 12,102 ) int -> x28
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [fp+0x68]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -128,9 +128,9 @@
; V118 tmp97 [V118,T42] ( 2, 8 ) byref -> x1 "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T45] ( 2, 8 ) int -> x2 "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T37] ( 3, 12 ) int -> x2 "CSE - moderate"
-; V121 cse1 [V121,T03] ( 18,142 ) int -> x26 "CSE - aggressive"
+; V121 cse1 [V121,T03] ( 20,142 ) int -> x26 "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> x27 "CSE - aggressive"
-; V123 cse3 [V123,T04] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V123 cse3 [V123,T04] ( 17,120 ) byref -> x27 "CSE - aggressive"
; V124 cse4 [V124,T38] ( 3, 12 ) int -> x0 "CSE - moderate"
; V125 cse5 [V125,T14] ( 20, 40 ) ref -> registers multi-def "CSE - aggressive"
;
@@ -155,7 +155,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w23, w4
;; size=48 bbWeight=1 PerfScore 9.00
G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG73
+ cbz x20, G_M36935_IG77
cbnz x21, G_M36935_IG04
;; size=8 bbWeight=1 PerfScore 2.00
G_M36935_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref
@@ -227,7 +227,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M36935_IG69
+ bls G_M36935_IG73
;; size=12 bbWeight=8 PerfScore 36.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz
add x27, x20, #12
@@ -266,10 +266,10 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x60] // [V15 loc11]
- tbnz w3, #31, G_M36935_IG70
+ tbnz w3, #31, G_M36935_IG74
ldr w4, [fp, #0x44] // [V97 tmp76]
cmp w3, w4
- bhi G_M36935_IG80
+ bhi G_M36935_IG84
mov x1, x28
; byrRegs +[x1]
mov w2, w3
@@ -281,11 +281,11 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
ldr w28, [fp, #0x60] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M36935_IG72
+ bhs G_M36935_IG76
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M36935_IG17
@@ -319,7 +319,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs +[x27]
cmp w28, #123
- bne G_M36935_IG74
+ bne G_M36935_IG78
mov w28, wzr
str wzr, [fp, #0x68] // [V08 loc4]
str xzr, [fp, #0x18] // [V88 tmp67]
@@ -327,7 +327,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str wzr, [fp, #0x48] // [V89 tmp68]
sub w0, w25, #1
cmp w0, w26
- bhs G_M36935_IG72
+ bhs G_M36935_IG76
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M36935_IG19
@@ -367,10 +367,10 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
ldr w2, [fp, #0x6C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M36935_IG75
+ bhs G_M36935_IG79
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M36935_IG23
@@ -381,7 +381,7 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
ldr x4, [fp, #0x18] // [V88 tmp67]
; byrRegs +[x4]
- b G_M36935_IG40
+ b G_M36935_IG44
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs -[x4]
@@ -391,7 +391,7 @@ G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str w6, [fp, #0x64] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x64] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -405,101 +405,125 @@ G_M36935_IG25: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=
;; size=24 bbWeight=16 PerfScore 56.00
G_M36935_IG26: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #32
- bne G_M36935_IG28
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG27: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bne G_M36935_IG30
+ tbnz w25, #31, G_M36935_IG29
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M36935_IG27: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG27
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w2, #44
- bne G_M36935_IG36
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG29: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
+ b G_M36935_IG30
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M36935_IG29: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG29
- ;; size=24 bbWeight=16 PerfScore 104.00
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
G_M36935_IG30: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M36935_IG40
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M36935_IG31: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M36935_IG80
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M36935_IG31
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M36935_IG32: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #45
- bne G_M36935_IG31
+ bne G_M36935_IG33
mov w3, #1
str w3, [fp, #0x68] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG33: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M36935_IG75
+ bhs G_M36935_IG79
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
- b G_M36935_IG33
+ bls G_M36935_IG80
+ b G_M36935_IG35
;; size=28 bbWeight=2 PerfScore 10.00
-G_M36935_IG32: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG34: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
mov w0, #10
madd w2, w28, w0, w2
sub w28, w2, #48
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
;; size=24 bbWeight=8 PerfScore 40.00
-G_M36935_IG33: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG35: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w25, w26
- bhs G_M36935_IG72
+ bhs G_M36935_IG76
ldrh w2, [x27, w25, UXTW #2]
sub w0, w2, #48
movz w1, #0xD1FFAB1E
movk w1, #15 LSL #16
cmp w0, #9
ccmp w28, w1, z, ls
- blt G_M36935_IG32
+ blt G_M36935_IG34
;; size=36 bbWeight=16 PerfScore 128.00
-G_M36935_IG34: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG36: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #32
- bne G_M36935_IG36
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG35: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bne G_M36935_IG40
+ tbnz w25, #31, G_M36935_IG39
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M36935_IG37: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
- beq G_M36935_IG35
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M36935_IG36: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ beq G_M36935_IG37
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M36935_IG38: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
+ b G_M36935_IG40
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M36935_IG39: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M36935_IG80
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M36935_IG39
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
+G_M36935_IG40: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #125
...
@@ -12,8 +12,8 @@
; V02 arg2 [V02,T19] ( 5, 15 ) ref -> x20 class-hnd exact single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T49] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 30,260 ) ushort -> [fp+0x5C]
+; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x5C]
; V07 loc3 [V07,T05] ( 12, 74 ) int -> x28
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [fp+0x58]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -134,8 +134,8 @@
; V124 cse1 [V124,T33] ( 3, 12 ) ref -> x4 "CSE - moderate"
; V125 cse2 [V125,T36] ( 3, 12 ) int -> x1 "CSE - moderate"
; V126 cse3 [V126,T34] ( 3, 12 ) ref -> x0 "CSE - moderate"
-; V127 cse4 [V127,T02] ( 18,142 ) int -> x26 "CSE - aggressive"
-; V128 cse5 [V128,T03] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V127 cse4 [V127,T02] ( 20,142 ) int -> x26 "CSE - aggressive"
+; V128 cse5 [V128,T03] ( 17,120 ) byref -> x27 "CSE - aggressive"
; V129 cse6 [V129,T06] ( 6, 60 ) int -> x27 "CSE - aggressive"
; V130 cse7 [V130,T37] ( 3, 12 ) int -> x0 "CSE - moderate"
; V131 cse8 [V131,T10] ( 17, 34 ) ref -> registers multi-def "CSE - aggressive"
@@ -161,7 +161,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w23, w4
;; size=48 bbWeight=1 PerfScore 9.00
G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x20, G_M4730_IG65
+ cbz x20, G_M4730_IG69
cbnz x21, G_M4730_IG04
;; size=8 bbWeight=1 PerfScore 2.00
G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref
@@ -233,7 +233,7 @@ G_M4730_IG10: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M4730_IG60
+ bls G_M4730_IG64
;; size=12 bbWeight=8 PerfScore 36.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz
add x27, x20, #12
@@ -272,10 +272,10 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x50] // [V15 loc11]
- tbnz w3, #31, G_M4730_IG62
+ tbnz w3, #31, G_M4730_IG66
ldr w4, [fp, #0x38] // [V96 tmp74]
cmp w3, w4
- bhi G_M4730_IG72
+ bhi G_M4730_IG76
mov x0, x19
; gcrRegs +[x0]
mov x1, x28
@@ -288,11 +288,11 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w28, [fp, #0x50] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M4730_IG64
+ bhs G_M4730_IG68
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M4730_IG14
@@ -309,7 +309,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
; byrRegs +[x27]
cmp w28, #123
- bne G_M4730_IG66
+ bne G_M4730_IG70
mov w28, wzr
str wzr, [fp, #0x58] // [V08 loc4]
str xzr, [fp, #0x18] // [V85 tmp63]
@@ -317,7 +317,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str wzr, [fp, #0x3C] // [V86 tmp64]
sub w0, w25, #1
cmp w0, w26
- bhs G_M4730_IG64
+ bhs G_M4730_IG68
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M4730_IG16
@@ -357,10 +357,10 @@ G_M4730_IG18: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x5C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M4730_IG67
+ bhs G_M4730_IG71
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M4730_IG20
@@ -371,7 +371,7 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
ldr x4, [fp, #0x18] // [V85 tmp63]
; byrRegs +[x4]
- b G_M4730_IG37
+ b G_M4730_IG41
;; size=8 bbWeight=2 PerfScore 6.00
G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
; byrRegs -[x4]
@@ -381,7 +381,7 @@ G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str w6, [fp, #0x54] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x54] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -395,101 +395,125 @@ G_M4730_IG22: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
;; size=24 bbWeight=16 PerfScore 56.00
G_M4730_IG23: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #32
- bne G_M4730_IG25
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG24: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bne G_M4730_IG27
+ tbnz w25, #31, G_M4730_IG26
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG24
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w2, #44
- bne G_M4730_IG33
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG26: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
+ b G_M4730_IG27
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M4730_IG26: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG26
- ;; size=24 bbWeight=16 PerfScore 104.00
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
G_M4730_IG27: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M4730_IG37
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M4730_IG28: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M4730_IG72
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M4730_IG28
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M4730_IG29: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #45
- bne G_M4730_IG28
+ bne G_M4730_IG30
mov w3, #1
str w3, [fp, #0x58] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M4730_IG28: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG30: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M4730_IG67
+ bhs G_M4730_IG71
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
- b G_M4730_IG30
+ bls G_M4730_IG72
+ b G_M4730_IG32
;; size=28 bbWeight=2 PerfScore 10.00
-G_M4730_IG29: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG31: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
mov w0, #10
madd w2, w28, w0, w2
sub w28, w2, #48
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
;; size=24 bbWeight=8 PerfScore 40.00
-G_M4730_IG30: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG32: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w25, w26
- bhs G_M4730_IG64
+ bhs G_M4730_IG68
ldrh w2, [x27, w25, UXTW #2]
sub w0, w2, #48
movz w1, #0xD1FFAB1E
movk w1, #15 LSL #16
cmp w0, #9
ccmp w28, w1, z, ls
- blt G_M4730_IG29
+ blt G_M4730_IG31
;; size=36 bbWeight=16 PerfScore 128.00
-G_M4730_IG31: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG33: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #32
- bne G_M4730_IG33
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG32: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bne G_M4730_IG37
+ tbnz w25, #31, G_M4730_IG36
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M4730_IG34: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
- beq G_M4730_IG32
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M4730_IG33: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ beq G_M4730_IG34
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M4730_IG35: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
+ b G_M4730_IG37
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M4730_IG36: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M4730_IG72
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M4730_IG36
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
+G_M4730_IG37: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #125
ldr x4, [fp, #0x18] // [V85 tmp63]
...
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.linux.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_pgo.linux.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_tiered.linux.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
coreclr_tests.run.linux.arm64.checked.mch | 79 | 65 | 14 | 0 | -1,668 | +5,224 |
libraries.crossgen2.linux.arm64.checked.mch | 6 | 5 | 1 | 0 | -396 | +12 |
libraries.pmi.linux.arm64.checked.mch | 7 | 5 | 2 | 0 | -296 | +356 |
libraries_tests.run.linux.arm64.Release.mch | 467 | 247 | 220 | 0 | -7,636 | +659,532 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 11 | 9 | 2 | 0 | -1,060 | +172 |
realworld.run.linux.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
smoke_tests.nativeaot.linux.arm64.checked.mch | 2 | 0 | 2 | 0 | -0 | +128 |
572 | 331 | 241 | 0 | -11,056 | +665,424 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.linux.arm64.checked.mch | 33,636 | 2,755 | 30,881 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.linux.arm64.checked.mch | 153,704 | 60,106 | 93,598 | 152 (0.10%) | 152 (0.10%) |
benchmarks.run_tiered.linux.arm64.checked.mch | 63,983 | 47,942 | 16,041 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.linux.arm64.checked.mch | 628,058 | 383,770 | 244,288 | 334 (0.05%) | 413 (0.07%) |
libraries.crossgen2.linux.arm64.checked.mch | 233,777 | 15 | 233,762 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.linux.arm64.checked.mch | 294,239 | 6 | 294,233 | 1 (0.00%) | 1 (0.00%) |
libraries_tests.run.linux.arm64.Release.mch | 737,454 | 487,495 | 249,959 | 3,053 (0.41%) | 3,384 (0.46%) |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 304,065 | 21,560 | 282,505 | 6 (0.00%) | 6 (0.00%) |
realworld.run.linux.arm64.checked.mch | 33,304 | 151 | 33,153 | 0 (0.00%) | 0 (0.00%) |
smoke_tests.nativeaot.linux.arm64.checked.mch | 19,041 | 6 | 19,035 | 0 (0.00%) | 0 (0.00%) |
2,501,261 | 1,003,806 | 1,497,455 | 3,546 (0.14%) | 3,956 (0.16%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 509785008 (overridden on cmd)
Total bytes of diff: 509788564 (overridden on cmd)
Total bytes of delta: 3556 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
904 : 2610.dasm (35.59 % of base)
544 : 33235.dasm (16.75 % of base)
544 : 91147.dasm (16.23 % of base)
540 : 143759.dasm (18.22 % of base)
536 : 187231.dasm (15.91 % of base)
536 : 260057.dasm (15.49 % of base)
532 : 31313.dasm (15.29 % of base)
528 : 177894.dasm (17.93 % of base)
528 : 251209.dasm (17.72 % of base)
8 : 252063.dasm (0.65 % of base)
8 : 275858.dasm (0.38 % of base)
8 : 31206.dasm (0.37 % of base)
4 : 244169.dasm (0.19 % of base)
4 : 270285.dasm (0.20 % of base)
Top file improvements (bytes):
-28 : 225954.dasm (-2.47 % of base)
-28 : 215669.dasm (-2.47 % of base)
-28 : 251497.dasm (-2.45 % of base)
-28 : 267326.dasm (-2.13 % of base)
-28 : 275213.dasm (-2.47 % of base)
-28 : 296446.dasm (-2.47 % of base)
-28 : 31406.dasm (-2.47 % of base)
-28 : 316789.dasm (-2.48 % of base)
-28 : 406437.dasm (-2.47 % of base)
-28 : 412853.dasm (-2.50 % of base)
-28 : 413016.dasm (-2.50 % of base)
-28 : 413982.dasm (-2.50 % of base)
-28 : 414072.dasm (-2.50 % of base)
-28 : 426688.dasm (-2.48 % of base)
-28 : 428089.dasm (-2.47 % of base)
-28 : 232714.dasm (-2.47 % of base)
-28 : 264662.dasm (-2.13 % of base)
-28 : 282861.dasm (-2.13 % of base)
-28 : 287385.dasm (-2.47 % of base)
-28 : 312402.dasm (-2.47 % of base)
49 total files with Code Size differences (35 improved, 14 regressed), 0 unchanged.
Top method regressions (bytes):
904 (35.59 % of base) : 2610.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
544 (16.75 % of base) : 33235.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
544 (16.23 % of base) : 91147.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
540 (18.22 % of base) : 143759.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
536 (15.91 % of base) : 187231.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
536 (15.49 % of base) : 260057.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
532 (15.29 % of base) : 31313.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
528 (17.93 % of base) : 177894.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
528 (17.72 % of base) : 251209.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
8 (0.38 % of base) : 275858.dasm - System.Buffers.SharedArrayPool`1[int]:Trim():ubyte:this (Instrumented Tier1)
8 (0.37 % of base) : 31206.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Instrumented Tier1)
8 (0.65 % of base) : 252063.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
4 (0.19 % of base) : 244169.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
4 (0.20 % of base) : 270285.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
Top method improvements (bytes):
-28 (-2.47 % of base) : 225954.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 215669.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.45 % of base) : 251497.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.13 % of base) : 267326.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 275213.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 296446.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 31406.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 316789.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 406437.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.50 % of base) : 412853.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.50 % of base) : 413016.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.50 % of base) : 413982.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.50 % of base) : 414072.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 426688.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 428089.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 232714.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.13 % of base) : 264662.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.13 % of base) : 282861.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 287385.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 312402.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
Top method regressions (percentages):
904 (35.59 % of base) : 2610.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
540 (18.22 % of base) : 143759.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
528 (17.93 % of base) : 177894.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
528 (17.72 % of base) : 251209.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
544 (16.75 % of base) : 33235.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
544 (16.23 % of base) : 91147.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
536 (15.91 % of base) : 187231.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
536 (15.49 % of base) : 260057.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
532 (15.29 % of base) : 31313.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
8 (0.65 % of base) : 252063.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
8 (0.38 % of base) : 275858.dasm - System.Buffers.SharedArrayPool`1[int]:Trim():ubyte:this (Instrumented Tier1)
8 (0.37 % of base) : 31206.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Instrumented Tier1)
4 (0.20 % of base) : 270285.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
4 (0.19 % of base) : 244169.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
Top method improvements (percentages):
-28 (-2.50 % of base) : 412853.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.50 % of base) : 413016.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.50 % of base) : 413982.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.50 % of base) : 414072.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.50 % of base) : 411670.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.50 % of base) : 412769.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.50 % of base) : 424735.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.49 % of base) : 423691.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 316789.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 426688.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 225954.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 215669.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 275213.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 296446.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 31406.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 406437.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 428089.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 232714.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 287385.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 312402.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55736760 (overridden on cmd)
Total bytes of diff: 55736376 (overridden on cmd)
Total bytes of delta: -384 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
12 : 229594.dasm (1.80 % of base)
Top file improvements (bytes):
-220 : 83862.dasm (-15.15 % of base)
-60 : 18973.dasm (-11.03 % of base)
-56 : 159505.dasm (-13.86 % of base)
-56 : 182705.dasm (-13.86 % of base)
-4 : 220779.dasm (-0.19 % of base)
6 total files with Code Size differences (5 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
12 (1.80 % of base) : 229594.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-220 (-15.15 % of base) : 83862.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-60 (-11.03 % of base) : 18973.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-56 (-13.86 % of base) : 159505.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-13.86 % of base) : 182705.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-4 (-0.19 % of base) : 220779.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
12 (1.80 % of base) : 229594.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-220 (-15.15 % of base) : 83862.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-56 (-13.86 % of base) : 159505.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-13.86 % of base) : 182705.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-60 (-11.03 % of base) : 18973.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-4 (-0.19 % of base) : 220779.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
6 total methods with Code Size differences (5 improved, 1 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 75995136 (overridden on cmd)
Total bytes of diff: 75995196 (overridden on cmd)
Total bytes of delta: 60 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
332 : 268238.dasm (2.71 % of base)
24 : 284422.dasm (3.97 % of base)
Top file improvements (bytes):
-168 : 90079.dasm (-14.53 % of base)
-56 : 209642.dasm (-11.97 % of base)
-56 : 286168.dasm (-11.97 % of base)
-12 : 83232.dasm (-0.71 % of base)
-4 : 271536.dasm (-0.20 % of base)
7 total files with Code Size differences (5 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
332 (2.71 % of base) : 268238.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
24 (3.97 % of base) : 284422.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-168 (-14.53 % of base) : 90079.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-56 (-11.97 % of base) : 286168.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-11.97 % of base) : 209642.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-12 (-0.71 % of base) : 83232.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-4 (-0.20 % of base) : 271536.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
24 (3.97 % of base) : 284422.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
332 (2.71 % of base) : 268238.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
Top method improvements (percentages):
-168 (-14.53 % of base) : 90079.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-56 (-11.97 % of base) : 286168.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-11.97 % of base) : 209642.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-12 (-0.71 % of base) : 83232.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-4 (-0.20 % of base) : 271536.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
7 total methods with Code Size differences (5 improved, 2 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 380612024 (overridden on cmd)
Total bytes of diff: 381263920 (overridden on cmd)
Total bytes of delta: 651896 (0.17 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
4952 : 170109.dasm (50.78 % of base)
4952 : 591976.dasm (51.84 % of base)
4948 : 480156.dasm (51.48 % of base)
4928 : 583131.dasm (50.87 % of base)
4920 : 186826.dasm (51.94 % of base)
4920 : 133991.dasm (51.94 % of base)
4900 : 485285.dasm (49.42 % of base)
4900 : 342522.dasm (51.51 % of base)
4888 : 628985.dasm (51.34 % of base)
4888 : 222851.dasm (51.34 % of base)
4888 : 433263.dasm (51.34 % of base)
4880 : 514466.dasm (51.59 % of base)
4872 : 108648.dasm (50.60 % of base)
4872 : 558181.dasm (50.64 % of base)
4868 : 283790.dasm (51.46 % of base)
4868 : 420329.dasm (51.37 % of base)
4864 : 205921.dasm (50.60 % of base)
4864 : 68677.dasm (51.42 % of base)
4856 : 489899.dasm (50.86 % of base)
4852 : 733067.dasm (50.60 % of base)
Top file improvements (bytes):
-228 : 693795.dasm (-14.50 % of base)
-224 : 679267.dasm (-13.93 % of base)
-192 : 679595.dasm (-21.62 % of base)
-148 : 693836.dasm (-20.56 % of base)
-140 : 693866.dasm (-22.01 % of base)
-140 : 693883.dasm (-18.32 % of base)
-120 : 523648.dasm (-15.87 % of base)
-104 : 694081.dasm (-17.93 % of base)
-80 : 706127.dasm (-14.93 % of base)
-52 : 679594.dasm (-10.57 % of base)
-44 : 530200.dasm (-6.47 % of base)
-28 : 130561.dasm (-2.47 % of base)
-28 : 155825.dasm (-3.21 % of base)
-28 : 269117.dasm (-2.47 % of base)
-28 : 270961.dasm (-1.98 % of base)
-28 : 274949.dasm (-3.21 % of base)
-28 : 130505.dasm (-2.47 % of base)
-28 : 133965.dasm (-3.21 % of base)
-28 : 122881.dasm (-3.21 % of base)
-28 : 194597.dasm (-3.21 % of base)
61 total files with Code Size differences (29 improved, 32 regressed), 0 unchanged.
Top method regressions (bytes):
4952 (50.78 % of base) : 170109.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4952 (51.84 % of base) : 591976.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4948 (51.48 % of base) : 480156.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4928 (50.87 % of base) : 583131.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4920 (51.94 % of base) : 186826.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4920 (51.94 % of base) : 133991.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4900 (49.42 % of base) : 485285.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4900 (51.51 % of base) : 342522.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4888 (51.34 % of base) : 628985.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4888 (51.34 % of base) : 222851.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4888 (51.34 % of base) : 433263.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4880 (51.59 % of base) : 514466.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4872 (50.60 % of base) : 108648.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4872 (50.64 % of base) : 558181.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4868 (51.46 % of base) : 283790.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4868 (51.37 % of base) : 420329.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4864 (50.60 % of base) : 205921.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4864 (51.42 % of base) : 68677.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4856 (50.86 % of base) : 489899.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4852 (50.60 % of base) : 733067.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (bytes):
-228 (-14.50 % of base) : 693795.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4190_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-224 (-13.93 % of base) : 679267.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1420_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-192 (-21.62 % of base) : 679595.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1717_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-148 (-20.56 % of base) : 693836.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4221_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-140 (-22.01 % of base) : 693866.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4228_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-140 (-18.32 % of base) : 693883.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4235_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-120 (-15.87 % of base) : 523648.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-104 (-17.93 % of base) : 694081.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4330_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-80 (-14.93 % of base) : 706127.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7263_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-52 (-10.57 % of base) : 679594.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1716_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-44 (-6.47 % of base) : 530200.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Tier1)
-28 (-2.47 % of base) : 130561.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 155825.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 269117.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-1.98 % of base) : 270961.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 274949.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 130505.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 133965.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 122881.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 194597.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
Top method regressions (percentages):
4920 (51.94 % of base) : 186826.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4920 (51.94 % of base) : 133991.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4952 (51.84 % of base) : 591976.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4880 (51.59 % of base) : 514466.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4812 (51.54 % of base) : 135150.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4900 (51.51 % of base) : 342522.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4832 (51.51 % of base) : 579114.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4948 (51.48 % of base) : 480156.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4824 (51.47 % of base) : 390814.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4836 (51.47 % of base) : 308824.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4868 (51.46 % of base) : 283790.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4864 (51.42 % of base) : 68677.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4868 (51.37 % of base) : 420329.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4888 (51.34 % of base) : 628985.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4888 (51.34 % of base) : 222851.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4888 (51.34 % of base) : 433263.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4836 (51.34 % of base) : 272589.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4764 (51.29 % of base) : 107880.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4820 (51.10 % of base) : 96860.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4780 (50.94 % of base) : 498924.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (percentages):
-140 (-22.01 % of base) : 693866.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4228_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-192 (-21.62 % of base) : 679595.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1717_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-148 (-20.56 % of base) : 693836.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4221_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-140 (-18.32 % of base) : 693883.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4235_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-104 (-17.93 % of base) : 694081.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4330_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-120 (-15.87 % of base) : 523648.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-80 (-14.93 % of base) : 706127.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7263_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-228 (-14.50 % of base) : 693795.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4190_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-224 (-13.93 % of base) : 679267.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1420_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-52 (-10.57 % of base) : 679594.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1716_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-44 (-6.47 % of base) : 530200.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Tier1)
-28 (-3.21 % of base) : 155825.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 274949.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 133965.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 122881.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 194597.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 281837.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 319753.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 329765.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 74077.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 162531948 (overridden on cmd)
Total bytes of diff: 162531060 (overridden on cmd)
Total bytes of delta: -888 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
148 : 269424.dasm (6.29 % of base)
24 : 115724.dasm (3.97 % of base)
Top file improvements (bytes):
-204 : 269381.dasm (-22.08 % of base)
-172 : 275083.dasm (-22.75 % of base)
-164 : 275109.dasm (-23.56 % of base)
-160 : 275139.dasm (-18.60 % of base)
-116 : 275594.dasm (-18.83 % of base)
-68 : 283575.dasm (-12.98 % of base)
-64 : 269380.dasm (-12.12 % of base)
-56 : 61288.dasm (-11.97 % of base)
-56 : 194828.dasm (-11.97 % of base)
11 total files with Code Size differences (9 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
148 (6.29 % of base) : 269424.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
24 (3.97 % of base) : 115724.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-204 (-22.08 % of base) : 269381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex590_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-172 (-22.75 % of base) : 275083.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1997_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-164 (-23.56 % of base) : 275109.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2004_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-160 (-18.60 % of base) : 275139.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2011_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-18.83 % of base) : 275594.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2106_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-68 (-12.98 % of base) : 283575.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4895_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-64 (-12.12 % of base) : 269380.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex589_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-11.97 % of base) : 61288.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-11.97 % of base) : 194828.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
Top method regressions (percentages):
148 (6.29 % of base) : 269424.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
24 (3.97 % of base) : 115724.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-164 (-23.56 % of base) : 275109.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2004_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-172 (-22.75 % of base) : 275083.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1997_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-204 (-22.08 % of base) : 269381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex590_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-18.83 % of base) : 275594.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2106_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-160 (-18.60 % of base) : 275139.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2011_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-68 (-12.98 % of base) : 283575.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4895_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-64 (-12.12 % of base) : 269380.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex589_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-11.97 % of base) : 61288.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-11.97 % of base) : 194828.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
11 total methods with Code Size differences (9 improved, 2 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2948924 (overridden on cmd)
Total bytes of diff: 2949052 (overridden on cmd)
Total bytes of delta: 128 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
64 : 5740.dasm (3.41 % of base)
64 : 1474.dasm (3.09 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
64 (3.41 % of base) : 5740.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (3.09 % of base) : 1474.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
64 (3.41 % of base) : 5740.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (3.09 % of base) : 1474.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
2 total methods with Code Size differences (0 improved, 2 regressed).
Diffs are based on 2,595,036 contexts (1,052,329 MinOpts, 1,542,707 FullOpts).
MISSED contexts: base: 3,596 (0.14%), diff: 3,599 (0.14%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.linux.x64.checked.mch | 458,879,057 | +28,626 |
libraries.crossgen2.linux.x64.checked.mch | 38,668,832 | -380 |
libraries.pmi.linux.x64.checked.mch | 59,972,991 | -79 |
libraries_tests.run.linux.x64.Release.mch | 329,976,340 | +820,648 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 130,000,373 | -1,343 |
smoke_tests.nativeaot.linux.x64.checked.mch | 4,197,516 | +288 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.linux.x64.checked.mch | 132,320,922 | +28,626 |
libraries.crossgen2.linux.x64.checked.mch | 38,667,630 | -380 |
libraries.pmi.linux.x64.checked.mch | 59,860,121 | -79 |
libraries_tests.run.linux.x64.Release.mch | 145,586,819 | +820,648 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 119,341,902 | -1,343 |
smoke_tests.nativeaot.linux.x64.checked.mch | 4,196,605 | +288 |
@@ -10,72 +10,71 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <ILCompiler.DevirtualizationManager>
; V01 arg1 [V01,T00] ( 21, 26 ) ref -> rbx class-hnd <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T16] ( 14, 8 ) ref -> r15 class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T19] ( 8, 5.50) byref -> r14 single-def
+; V02 arg2 [V02,T17] ( 14, 8 ) ref -> r15 class-hnd single-def <Internal.TypeSystem.DefType>
+; V03 arg3 [V03,T20] ( 8, 5.50) byref -> r14 single-def
; V04 loc0 [V04,T22] ( 11, 5.50) ref -> r12 class-hnd <Internal.TypeSystem.MethodDesc>
; V05 loc1 [V05,T23] ( 3, 5 ) ref -> r12 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> [rbp-0x2C]
-; V07 loc3 [V07,T20] ( 4, 7 ) ref -> [rbp-0x58] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> [rbp-0x50] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> [rbp-0x30]
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [rbp-0x60] class-hnd spill-single-def <Internal.TypeSystem.DefType>
-; V10 loc6 [V10,T28] ( 6, 4.50) ref -> [rbp-0x68] class-hnd <Internal.TypeSystem.MethodDesc>
-; V11 loc7 [V11,T24] ( 3, 5 ) ref -> [rbp-0x70] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [rbp-0x58] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V10 loc6 [V10,T28] ( 6, 4.50) ref -> [rbp-0x60] class-hnd <Internal.TypeSystem.MethodDesc>
+; V11 loc7 [V11,T24] ( 3, 5 ) ref -> [rbp-0x68] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> [rbp-0x34]
-; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [rbp-0x78] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [rbp-0x70] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T46] ( 3, 1.50) int -> rax single-def
+; V15 loc11 [V15,T45] ( 3, 1.50) int -> rax single-def
; V16 loc12 [V16,T03] ( 10, 20 ) ref -> r12 class-hnd <Internal.TypeSystem.TypeDesc>
;* V17 loc13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;* V18 loc14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
-; V21 tmp2 [V21,T34] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1"
-; V22 tmp3 [V22,T47] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V23 tmp4 [V23,T31] ( 5, 3.75) ref -> registers class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V21 tmp2 [V21,T33] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1"
+; V22 tmp3 [V22,T46] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
+; V23 tmp4 [V23,T30] ( 5, 3.75) ref -> registers class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
; V24 tmp5 [V24,T25] ( 3, 5 ) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V25 tmp6 [V25,T35] ( 3, 2 ) int -> rcx "Inline return value spill temp"
-; V26 tmp7 [V26,T33] ( 3, 2.50) int -> rcx single-def "Inline stloc first use temp"
-; V27 tmp8 [V27,T42] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V25 tmp6 [V25,T34] ( 3, 2 ) int -> rcx "Inline return value spill temp"
+; V26 tmp7 [V26,T32] ( 3, 2.50) int -> rcx single-def "Inline stloc first use temp"
+; V27 tmp8 [V27,T41] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V29 tmp10 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
-; V30 tmp11 [V30,T17] ( 5, 10 ) ref -> [rbp-0x80] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V31 tmp12 [V31,T30] ( 2, 4 ) ref -> rcx class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T18] ( 5, 10 ) ref -> [rbp-0x78] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V31 tmp12 [V31,T29] ( 2, 4 ) ref -> rcx class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp14 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V34 tmp15 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V35 tmp16 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp17 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V37 tmp18 [V37,T43] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V38 tmp19 [V38,T01] ( 3, 24 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V37 tmp18 [V37,T42] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V38 tmp19 [V38,T01] ( 3, 24 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V39 tmp20 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V40 tmp21 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V41 tmp22 [V41 ] ( 0, 0 ) int -> zero-ref
-; V42 tmp23 [V42,T02] ( 3, 24 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V42 tmp23 [V42,T02] ( 3, 24 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V43 tmp24 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V44 tmp25 [V44 ] ( 0, 0 ) int -> zero-ref
-; V45 tmp26 [V45,T36] ( 2, 2 ) ref -> rax single-def "Single return block return value"
-; V46 tmp27 [V46,T09] ( 2, 16 ) ref -> [rbp-0x98] spill-single-def "argument with side effect"
+; V45 tmp26 [V45,T35] ( 2, 2 ) ref -> rax single-def "Single return block return value"
+; V46 tmp27 [V46,T09] ( 2, 16 ) ref -> [rbp-0x90] spill-single-def "argument with side effect"
; V47 tmp28 [V47,T10] ( 2, 16 ) ref -> rsi "argument with side effect"
-; V48 tmp29 [V48,T37] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V49 tmp30 [V49,T38] ( 2, 2 ) ref -> [rbp-0xA0] spill-single-def "argument with side effect"
-; V50 tmp31 [V50,T39] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V51 tmp32 [V51,T32] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V52 tmp33 [V52,T40] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V53 tmp34 [V53,T11] ( 2, 16 ) ref -> [rbp-0xA8] spill-single-def "argument with side effect"
+; V48 tmp29 [V48,T36] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V49 tmp30 [V49,T37] ( 2, 2 ) ref -> [rbp-0x98] spill-single-def "argument with side effect"
+; V50 tmp31 [V50,T38] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V51 tmp32 [V51,T31] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V52 tmp33 [V52,T39] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V53 tmp34 [V53,T11] ( 2, 16 ) ref -> [rbp-0xA0] spill-single-def "argument with side effect"
; V54 tmp35 [V54,T12] ( 2, 16 ) ref -> rsi "argument with side effect"
;* V55 tmp36 [V55 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V56 tmp37 [V56 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V57 tmp38 [V57,T41] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V57 tmp38 [V57,T40] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
; V58 tmp39 [V58,T13] ( 2, 16 ) ref -> rsi "argument with side effect"
-; V59 tmp40 [V59,T14] ( 2, 16 ) ref -> [rbp-0xB0] spill-single-def "argument with side effect"
+; V59 tmp40 [V59,T14] ( 2, 16 ) ref -> [rbp-0xA8] spill-single-def "argument with side effect"
; V60 tmp41 [V60,T15] ( 2, 16 ) ref -> rsi "argument with side effect"
-; V61 tmp42 [V61,T18] ( 2, 8 ) ref -> rsi "argument with side effect"
+; V61 tmp42 [V61,T19] ( 2, 8 ) ref -> rsi "argument with side effect"
; V62 cse0 [V62,T06] ( 10, 18 ) long -> r13 "CSE - aggressive"
-; V63 cse1 [V63,T29] ( 2, 4.50) long -> [rbp-0x48] spill-single-def hoist "CSE - moderate"
-; V64 cse2 [V64,T44] ( 3, 1.50) ref -> r12 "CSE - conservative"
-; V65 cse3 [V65,T45] ( 3, 1.50) ref -> rcx "CSE - conservative"
-; V66 cse4 [V66,T26] ( 3, 5 ) int -> [rbp-0x4C] spill-single-def "CSE - moderate"
-; V67 cse5 [V67,T27] ( 3, 5 ) int -> [rbp-0x50] spill-single-def "CSE - moderate"
+; V63 cse1 [V63,T43] ( 3, 1.50) ref -> r12 "CSE - conservative"
+; V64 cse2 [V64,T44] ( 3, 1.50) ref -> rcx "CSE - conservative"
+; V65 cse3 [V65,T26] ( 3, 5 ) int -> [rbp-0x44] spill-single-def "CSE - moderate"
+; V66 cse4 [V66,T27] ( 3, 5 ) int -> [rbp-0x48] spill-single-def "CSE - moderate"
;
; Lcl frame size = 136
@@ -201,32 +200,31 @@ G_M48343_IG11: ; bbWeight=0.50, gcrefRegs=900A {rcx rbx r12 r15}, byrefRe
; gcrRegs -[rax]
mov rax, rcx
; gcrRegs +[rax]
- mov gword ptr [rbp-0x58], rax
+ mov gword ptr [rbp-0x50], rax
; GC ptr vars +{V07}
xor ecx, ecx
; gcrRegs -[rcx]
mov edx, dword ptr [r12+0x08]
- mov dword ptr [rbp-0x4C], edx
+ mov dword ptr [rbp-0x44], edx
test edx, edx
jle G_M48343_IG16
- mov rdi, qword ptr [rax]
- mov rsi, qword ptr [rdi+0x58]
- mov qword ptr [rbp-0x48], rsi
- ;; size=36 bbWeight=0.50 PerfScore 5.38
-G_M48343_IG12: ; bbWeight=4, gcVars=0000000000100000 {V07}, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
+ ;; size=25 bbWeight=0.50 PerfScore 2.88
+G_M48343_IG12: ; bbWeight=4, gcVars=0000000000010000 {V07}, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
mov dword ptr [rbp-0x30], ecx
mov edi, ecx
- mov r8, gword ptr [r12+8*rdi+0x10]
- ; gcrRegs +[r8]
- mov gword ptr [rbp-0x60], r8
+ mov rsi, gword ptr [r12+8*rdi+0x10]
+ ; gcrRegs +[rsi]
+ mov gword ptr [rbp-0x58], rsi
; GC ptr vars +{V09}
mov rdi, rax
; gcrRegs +[rdi]
- call [rsi+0x20]<unknown method>
- ; gcrRegs -[rdi r8]
- mov gword ptr [rbp-0xA8], rax
+ mov r8, qword ptr [rax]
+ mov r8, qword ptr [r8+0x58]
+ call [r8+0x20]<unknown method>
+ ; gcrRegs -[rsi rdi]
+ mov gword ptr [rbp-0xA0], rax
; GC ptr vars +{V53}
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x58]
; gcrRegs +[rdi]
mov rcx, qword ptr [rdi]
mov rcx, qword ptr [rcx+0x58]
@@ -234,29 +232,29 @@ G_M48343_IG12: ; bbWeight=4, gcVars=0000000000100000 {V07}, gcrefRegs=900
; gcrRegs -[rdi]
mov rsi, rax
; gcrRegs +[rsi]
- mov rdi, gword ptr [rbp-0xA8]
+ mov rdi, gword ptr [rbp-0xA0]
; gcrRegs +[rdi]
; GC ptr vars -{V53}
call [Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte]
; gcrRegs -[rax rsi rdi]
test eax, eax
je SHORT G_M48343_IG15
- ;; size=61 bbWeight=4 PerfScore 88.00
+ ;; size=69 bbWeight=4 PerfScore 104.00
G_M48343_IG13: ; bbWeight=2, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=4000 {r14}, byref, isz
- mov rax, gword ptr [rbp-0x60]
+ mov rax, gword ptr [rbp-0x58]
; gcrRegs +[rax]
mov rcx, gword ptr [rax+0x08]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x80], rcx
+ mov gword ptr [rbp-0x78], rcx
; GC ptr vars +{V30}
mov edi, 1
call [<unknown method>]
; gcrRegs -[rax rcx]
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x78]
; gcrRegs +[rax]
test rax, rax
jne SHORT G_M48343_IG14
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x58]
; gcrRegs +[rdi]
xor esi, esi
mov rax, qword ptr [rdi]
@@ -265,9 +263,9 @@ G_M48343_IG13: ; bbWeight=2, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=4000
; GC ptr vars -{V30}
call [rax+0x28]<unknown method>
; gcrRegs -[rdi] +[rax]
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x58]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x80], rax
+ mov gword ptr [rbp-0x78], rax
; GC ptr vars +{V30}
mov rdx, rax
; gcrRegs +[rdx]
@@ -275,14 +273,14 @@ G_M48343_IG13: ; bbWeight=2, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=4000
; GC ptr vars -{V09}
call [Internal.TypeSystem.TypeDesc:SetCachedCanonValue(int,Internal.TypeSystem.TypeDesc):this]
; gcrRegs -[rax rdx rdi]
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x78]
; gcrRegs +[rax]
;; size=71 bbWeight=2 PerfScore 48.50
-G_M48343_IG14: ; bbWeight=2, gcVars=0000000000100000 {V07}, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M48343_IG14: ; bbWeight=2, gcVars=0000000000010000 {V07}, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
; GC ptr vars -{V30}
mov rdi, rax
; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x58]
+ mov rsi, gword ptr [rbp-0x50]
; gcrRegs +[rsi]
call [Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte]
; gcrRegs -[rax rsi rdi]
@@ -297,13 +295,12 @@ G_M48343_IG14: ; bbWeight=2, gcVars=0000000000100000 {V07}, gcrefRegs=900
G_M48343_IG15: ; bbWeight=4, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=4000 {r14}, byref
mov ecx, dword ptr [rbp-0x30]
inc ecx
- mov edi, dword ptr [rbp-0x4C]
+ mov edi, dword ptr [rbp-0x44]
cmp edi, ecx
- mov rax, gword ptr [rbp-0x58]
+ mov rax, gword ptr [rbp-0x50]
; gcrRegs +[rax]
- mov rsi, qword ptr [rbp-0x48]
jg G_M48343_IG12
- ;; size=24 bbWeight=4 PerfScore 22.00
+ ;; size=20 bbWeight=4 PerfScore 18.00
G_M48343_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
; gcrRegs -[rax r12]
; GC ptr vars -{V07}
@@ -357,7 +354,7 @@ G_M48343_IG19: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=4
; byrRegs +[r14]
xor rax, rax
; gcrRegs +[rax]
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x60], rax
; GC ptr vars +{V10}
mov rcx, gword ptr [r15+0x18]
; gcrRegs +[rcx]
@@ -376,11 +373,11 @@ G_M48343_IG20: ; bbWeight=0.50, gcrefRegs=900A {rcx rbx r12 r15}, byrefRe
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M48343_IG21: ; bbWeight=0.50, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=4000 {r14}, byref
; gcrRegs -[rcx]
- mov gword ptr [rbp-0x70], rax
...
@@ -10,27 +10,27 @@
;
; V00 this [V00,T14] ( 11, 32.50) ref -> [rbp-0x68] this class-hnd EH-live single-def <System.Buffers.SharedArrayPool`1[System.__Canon]>
; V01 loc0 [V01,T16] ( 5, 33.50) int -> rbx
-; V02 loc1 [V02,T36] ( 5, 19 ) int -> r15
+; V02 loc1 [V02,T35] ( 5, 19 ) int -> r15
; V03 loc2 [V03,T26] ( 7, 27 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T49] ( 4, 10 ) ref -> r13 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T35] ( 6, 19 ) int -> r12
-; V06 loc5 [V06,T43] ( 8, 10.50) ref -> [rbp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T48] ( 4, 10 ) ref -> r13 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T34] ( 6, 19 ) int -> r12
+; V06 loc5 [V06,T42] ( 8, 10.50) ref -> [rbp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T44] ( 8, 10.50) ref -> [rbp-0x78] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T43] ( 8, 10.50) ref -> [rbp-0x78] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T29] ( 3, 20 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T28] ( 3, 20 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T03] ( 5, 66 ) int -> rbx
; V12 loc11 [V12,T01] ( 6, 64 ) ref -> [rbp-0x80] class-hnd spill-single-def <<unknown class>>
-; V13 loc12 [V13,T52] ( 2, 8.50) int -> r15
-; V14 loc13 [V14,T75] ( 3, 1.50) int -> r15
-; V15 loc14 [V15,T45] ( 8, 10.50) ref -> [rbp-0x88] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T51] ( 2, 8.50) int -> r15
+; V14 loc13 [V14,T74] ( 3, 1.50) int -> r15
+; V15 loc14 [V15,T44] ( 8, 10.50) ref -> [rbp-0x88] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T11] ( 5, 36 ) ref -> r13 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T10] ( 6, 44 ) ref -> r13 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> r12
-; V19 loc18 [V19,T28] ( 3, 24 ) int -> rsi
+; V19 loc18 [V19,T27] ( 3, 24 ) int -> rdx
; V20 loc19 [V20,T07] ( 6, 48 ) ref -> [rbp-0x90] class-hnd spill-single-def <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T30] ( 3, 20 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T29] ( 3, 20 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T12] ( 2, 36 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -42,81 +42,80 @@
; V31 tmp10 [V31,T21] ( 2, 32 ) int -> [rbp-0x40] spill-single-def "impAppendStmt"
; V32 tmp11 [V32,T22] ( 2, 32 ) int -> [rbp-0x44] spill-single-def "impAppendStmt"
;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V34 tmp13 [V34,T63] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
+; V34 tmp13 [V34,T62] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V36 tmp15 [V36 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V38 tmp17 [V38,T64] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
+; V38 tmp17 [V38,T63] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V42 tmp21 [V42 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V43 tmp22 [V43,T65] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
+; V43 tmp22 [V43,T64] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V48 tmp27 [V48,T32] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
+; V48 tmp27 [V48,T31] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
;* V49 tmp28 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp29 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V51 tmp30 [V51,T31] ( 3, 20 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V51 tmp30 [V51,T30] ( 3, 20 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V52 tmp31 [V52,T04] ( 5, 66 ) int -> [rbp-0x4C] "Inline stloc first use temp"
; V53 tmp32 [V53,T23] ( 2, 32 ) int -> r8 "Inlining Arg"
; V54 tmp33 [V54,T24] ( 2, 32 ) int -> r8 "Inlining Arg"
-; V55 tmp34 [V55,T60] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T72] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T61] ( 2, 4 ) ref -> r15 "field V09.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T73] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
-; V59 tmp38 [V59,T62] ( 2, 4 ) ref -> r13 "field V16.key (fldOffset=0x0)" P-INDEP
-; V60 tmp39 [V60,T74] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T59] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T71] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T60] ( 2, 4 ) ref -> r15 "field V09.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T72] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
+; V59 tmp38 [V59,T61] ( 2, 4 ) ref -> r13 "field V16.key (fldOffset=0x0)" P-INDEP
+; V60 tmp39 [V60,T73] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V29.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V29.value (fldOffset=0x8)" P-DEP
;* V65 tmp44 [V65 ] ( 0, 0 ) ref -> zero-ref "field V33.key (fldOffset=0x0)" P-DEP
;* V66 tmp45 [V66 ] ( 0, 0 ) ref -> zero-ref "field V33.value (fldOffset=0x8)" P-DEP
-; V67 tmp46 [V67,T66] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V68 tmp47 [V68,T37] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V69 tmp48 [V69,T57] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V67 tmp46 [V67,T65] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V68 tmp47 [V68,T36] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V69 tmp48 [V69,T56] ( 2, 8 ) ref -> rdi "argument with side effect"
; V70 tmp49 [V70,T25] ( 2, 32 ) long -> rsi "argument with side effect"
; V71 tmp50 [V71,T18] ( 2, 32 ) ref -> rdx "argument with side effect"
-;* V72 tmp51 [V72,T40] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V73 tmp52 [V73,T77] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V74 tmp53 [V74,T67] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V75 tmp54 [V75,T68] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V76 tmp55 [V76,T38] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V77 tmp56 [V77,T58] ( 2, 8 ) ref -> rdi "argument with side effect"
+;* V72 tmp51 [V72,T39] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V73 tmp52 [V73,T76] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V74 tmp53 [V74,T66] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V75 tmp54 [V75,T67] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V76 tmp55 [V76,T37] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V77 tmp56 [V77,T57] ( 2, 8 ) ref -> rdi "argument with side effect"
; V78 tmp57 [V78,T06] ( 2, 64 ) long -> rsi "argument with side effect"
; V79 tmp58 [V79,T05] ( 2, 64 ) ref -> rcx "argument with side effect"
-;* V80 tmp59 [V80,T41] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V81 tmp60 [V81,T78] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V82 tmp61 [V82,T69] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V83 tmp62 [V83,T70] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V84 tmp63 [V84,T39] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V85 tmp64 [V85,T59] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V86 tmp65 [V86,T79] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V87 tmp66 [V87,T71] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V88 PSPSym [V88,T76] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
+;* V80 tmp59 [V80,T40] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V81 tmp60 [V81,T77] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V82 tmp61 [V82,T68] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V83 tmp62 [V83,T69] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V84 tmp63 [V84,T38] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V85 tmp64 [V85,T58] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V86 tmp65 [V86,T78] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V87 tmp66 [V87,T70] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V88 PSPSym [V88,T75] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
; V89 cse0 [V89,T15] ( 4, 34 ) long -> registers hoist multi-def "CSE - moderate"
-; V90 cse1 [V90,T53] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
-; V91 cse2 [V91,T46] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
-; V92 cse3 [V92,T54] ( 4, 8 ) ref -> r15 multi-def "CSE - conservative"
-; V93 cse4 [V93,T47] ( 6, 10.50) ref -> r15 multi-def "CSE - conservative"
-; V94 cse5 [V94,T55] ( 4, 8 ) ref -> r13 multi-def "CSE - conservative"
-; V95 cse6 [V95,T48] ( 6, 10.50) ref -> r13 multi-def "CSE - conservative"
-; V96 cse7 [V96,T27] ( 3, 24 ) byref -> [rbp-0xA8] spill-single-def "CSE - moderate"
-; V97 cse8 [V97,T08] ( 4, 48 ) long -> [rbp-0x58] spill-single-def "CSE - moderate"
-; V98 cse9 [V98,T02] ( 3, 68 ) int -> [rbp-0x5C] spill-single-def "CSE - aggressive"
-; V99 cse10 [V99,T33] ( 3, 20 ) int -> [rbp-0x60] spill-single-def "CSE - moderate"
-; V100 cse11 [V100,T34] ( 3, 20 ) int -> r13 "CSE - moderate"
-; V101 rat0 [V101,T50] ( 3, 9.44) long -> rsi "Spilling to split statement for tree"
-; V102 rat1 [V102,T56] ( 3, 8 ) long -> r12 "runtime lookup"
-; V103 rat2 [V103,T42] ( 3, 11.20) long -> rax "spilling expr"
-; V104 rat3 [V104,T51] ( 3, 8.96) long -> r12 "fgMakeTemp is creating a new local variable"
-; V105 rat4 [V105,T10] ( 3, 37.76) long -> rsi "Spilling to split statement for tree"
-; V106 rat5 [V106,T17] ( 3, 32 ) long -> registers "runtime lookup"
-; V107 rat6 [V107,T09] ( 3, 44.80) long -> rdx "spilling expr"
-; V108 rat7 [V108,T13] ( 3, 35.84) long -> rdx "fgMakeTemp is creating a new local variable"
+; V90 cse1 [V90,T52] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
+; V91 cse2 [V91,T45] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
+; V92 cse3 [V92,T53] ( 4, 8 ) ref -> r15 multi-def "CSE - conservative"
+; V93 cse4 [V93,T46] ( 6, 10.50) ref -> r15 multi-def "CSE - conservative"
+; V94 cse5 [V94,T54] ( 4, 8 ) ref -> r13 multi-def "CSE - conservative"
+; V95 cse6 [V95,T47] ( 6, 10.50) ref -> r13 multi-def "CSE - conservative"
+; V96 cse7 [V96,T08] ( 5, 56 ) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
+; V97 cse8 [V97,T02] ( 3, 68 ) int -> [rbp-0x5C] spill-single-def "CSE - aggressive"
+; V98 cse9 [V98,T32] ( 3, 20 ) int -> [rbp-0x60] spill-single-def "CSE - moderate"
+; V99 cse10 [V99,T33] ( 3, 20 ) int -> r13 "CSE - moderate"
+; V100 rat0 [V100,T49] ( 3, 9.44) long -> rsi "Spilling to split statement for tree"
+; V101 rat1 [V101,T55] ( 3, 8 ) long -> r12 "runtime lookup"
+; V102 rat2 [V102,T41] ( 3, 11.20) long -> rax "spilling expr"
+; V103 rat3 [V103,T50] ( 3, 8.96) long -> r12 "fgMakeTemp is creating a new local variable"
+; V104 rat4 [V104,T11] ( 3, 37.76) long -> rsi "Spilling to split statement for tree"
+; V105 rat5 [V105,T17] ( 3, 32 ) long -> registers "runtime lookup"
+; V106 rat6 [V106,T09] ( 3, 44.80) long -> rdx "spilling expr"
+; V107 rat7 [V107,T13] ( 3, 35.84) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 136
@@ -179,7 +178,7 @@ G_M16529_IG05: ; bbWeight=4, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
test rax, rax
je G_M16529_IG09
;; size=24 bbWeight=4 PerfScore 18.00
-G_M16529_IG06: ; bbWeight=2, gcVars=00000000000000000000000040004000 {V00 V22}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG06: ; bbWeight=2, gcVars=00000000000000000000000020004000 {V00 V22}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -217,7 +216,7 @@ G_M16529_IG07: ; bbWeight=2, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
test r11d, r11d
jle SHORT G_M16529_IG09
;; size=34 bbWeight=2 PerfScore 17.00
-G_M16529_IG08: ; bbWeight=16, gcVars=00000000000000000000000080004000 {V00 V51}, gcrefRegs=6200 {r9 r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16529_IG08: ; bbWeight=16, gcVars=00000000000000000000000040004000 {V00 V51}, gcrefRegs=6200 {r9 r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi]
; GC ptr vars -{V22}
mov dword ptr [rbp-0x4C], r10d
@@ -276,7 +275,7 @@ G_M16529_IG11: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
mov gword ptr [rbp-0x70], rax
; GC ptr vars +{V06}
;; size=60 bbWeight=0.50 PerfScore 6.50
-G_M16529_IG12: ; bbWeight=0.50, gcVars=00000000000000000000080000004000 {V00 V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16529_IG12: ; bbWeight=0.50, gcVars=00000000000000000000040000004000 {V00 V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
jmp SHORT G_M16529_IG14
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M16529_IG13: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
@@ -348,7 +347,7 @@ G_M16529_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
; gcr arg pop 0
jmp G_M16529_IG49
;; size=70 bbWeight=0.50 PerfScore 5.12
-G_M16529_IG16: ; bbWeight=1, gcVars=00000000000000000000000040004000 {V00 V22}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG16: ; bbWeight=1, gcVars=00000000000000000000000020004000 {V00 V22}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r13-r14]
; GC ptr vars +{V22}
mov eax, dword ptr [rbp-0x34]
@@ -375,7 +374,7 @@ G_M16529_IG17: ; bbWeight=0.50, gcVars=00000000000000000000000000004000 {
mov gword ptr [rbp-0x78], rax
; GC ptr vars +{V08}
;; size=46 bbWeight=0.50 PerfScore 4.50
-G_M16529_IG18: ; bbWeight=0.50, gcVars=00000000000000000000100000004000 {V00 V08}, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG18: ; bbWeight=0.50, gcVars=00000000000000000000080000004000 {V00 V08}, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, gcvars, byref
jmp G_M16529_IG25
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M16529_IG19: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
@@ -434,7 +433,7 @@ G_M16529_IG21: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}
test rax, rax
je SHORT G_M16529_IG23
;; size=39 bbWeight=16 PerfScore 416.00
-G_M16529_IG22: ; bbWeight=8, gcVars=00000000000000000000100000004002 {V00 V08 V12}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG22: ; bbWeight=8, gcVars=00000000000000000000080000004002 {V00 V08 V12}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -581,7 +580,7 @@ G_M16529_IG31: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
mov gword ptr [rbp-0x88], rax
; GC ptr vars +{V15}
;; size=49 bbWeight=0.50 PerfScore 4.50
-G_M16529_IG32: ; bbWeight=0.50, gcVars=00000000000000000000200000004000 {V00 V15}, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG32: ; bbWeight=0.50, gcVars=00000000000000000000100000004000 {V00 V15}, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, gcvars, byref
jmp G_M16529_IG38
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M16529_IG33: ; bbWeight=2, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
@@ -616,24 +615,16 @@ G_M16529_IG34: ; bbWeight=16, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}
je SHORT G_M16529_IG36
;; size=19 bbWeight=16 PerfScore 92.00
G_M16529_IG35: ; bbWeight=8, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
- lea rdx, bword ptr [r13+rcx+0x10]
- ; byrRegs +[rdx]
- mov bword ptr [rbp-0xA8], rdx
- ; GC ptr vars +{V96}
- mov esi, dword ptr [rdx+0x08]
- test esi, esi
+ mov edx, dword ptr [r13+rcx+0x18]
+ test edx, edx
jne G_M16529_IG40
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
- ; byrRegs -[rdx]
; gcr arg pop 0
- mov rdi, bword ptr [rbp-0xA8]
...
@@ -9,19 +9,19 @@
; Final local variable assignments
;
; V00 arg0 [V00,T14] ( 6, 5.50) byref -> r12 single-def
-; V01 arg1 [V01,T03] ( 7, 11.50) ref -> rbx class-hnd single-def <System.Diagnostics.Tracing.EventSource+EventMetadata[]>
+; V01 arg1 [V01,T03] ( 8, 13.50) ref -> rbx class-hnd single-def <System.Diagnostics.Tracing.EventSource+EventMetadata[]>
; V02 arg2 [V02,T09] ( 6, 6 ) ref -> r13 class-hnd single-def <System.Reflection.MethodInfo>
-; V03 arg3 [V03,T04] ( 9, 10 ) ref -> r15 class-hnd single-def <System.Diagnostics.Tracing.EventAttribute>
+; V03 arg3 [V03,T05] ( 9, 10 ) ref -> r15 class-hnd single-def <System.Diagnostics.Tracing.EventAttribute>
; V04 arg4 [V04,T08] ( 12, 8.50) ref -> r14 class-hnd single-def <System.Diagnostics.Tracing.ManifestBuilder>
-; V05 arg5 [V05,T23] ( 3, 4 ) int -> [rbp-0x2C] single-def
+; V05 arg5 [V05,T22] ( 3, 4 ) int -> [rbp-0x2C] single-def
; V06 loc0 [V06,T13] ( 10, 7.50) int -> [rbp-0x30] spill-single-def
; V07 loc1 [V07,T10] ( 9, 8 ) ref -> [rbp-0x48] class-hnd exact spill-single-def <System.String>
-; V08 loc2 [V08,T25] ( 4, 3 ) int -> r13
+; V08 loc2 [V08,T24] ( 4, 3 ) int -> r13
; V09 loc3 [V09,T00] ( 6, 55 ) int -> [rbp-0x34]
-;* V10 loc4 [V10,T53] ( 0, 0 ) ubyte -> zero-ref
-; V11 loc5 [V11,T54] ( 2, 1 ) int -> rcx
+;* V10 loc4 [V10,T52] ( 0, 0 ) ubyte -> zero-ref
+; V11 loc5 [V11,T53] ( 2, 1 ) int -> rcx
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T46] ( 2, 1 ) int -> rdi
+; V13 tmp1 [V13,T45] ( 2, 1 ) int -> rdi
;* V14 tmp2 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp3 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V16 tmp4 [V16,T01] ( 6, 24 ) ref -> [rbp-0x50] class-hnd exact spill-single-def "dup spill" <System.Object[]>
@@ -29,58 +29,57 @@
; V18 tmp6 [V18,T06] ( 3, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <<unknown class>>
; V19 tmp7 [V19,T12] ( 2, 8 ) ref -> rsi class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
; V20 tmp8 [V20,T07] ( 3, 12 ) ref -> rax class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V21 tmp9 [V21,T27] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V22 tmp10 [V22,T28] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V23 tmp11 [V23,T36] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impImportAndPushBox" <System.String>
-; V24 tmp12 [V24,T29] ( 3, 3 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>>
-; V25 tmp13 [V25,T37] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impImportAndPushBox" <System.String>
-; V26 tmp14 [V26,T30] ( 3, 3 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>>
-; V27 tmp15 [V27,T38] ( 2, 2 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "impImportAndPushBox" <System.String>
-; V28 tmp16 [V28,T31] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V21 tmp9 [V21,T26] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V22 tmp10 [V22,T27] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V23 tmp11 [V23,T35] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impImportAndPushBox" <System.String>
+; V24 tmp12 [V24,T28] ( 3, 3 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>>
+; V25 tmp13 [V25,T36] ( 2, 2 ) ref -> rdi class-hnd exact single-def "impImportAndPushBox" <System.String>
+; V26 tmp14 [V26,T29] ( 3, 3 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>>
+; V27 tmp15 [V27,T37] ( 2, 2 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "impImportAndPushBox" <System.String>
+; V28 tmp16 [V28,T30] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V29 tmp17 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
-; V30 tmp18 [V30,T32] ( 4, 2.91) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String>
-; V31 tmp19 [V31,T60] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V30 tmp18 [V30,T31] ( 4, 2.91) ref -> r13 class-hnd exact single-def "Inlining Arg" <System.String>
+; V31 tmp19 [V31,T59] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V32 tmp20 [V32,T15] ( 7, 6.91) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
-; V33 tmp21 [V33,T48] ( 3, 1.46) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V34 tmp22 [V34,T41] ( 4, 1.91) int -> rax "Inline stloc first use temp"
+; V33 tmp21 [V33,T47] ( 3, 1.46) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V34 tmp22 [V34,T40] ( 4, 1.91) int -> rax "Inline stloc first use temp"
;* V35 tmp23 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V36 tmp24 [V36,T33] ( 4, 2.91) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.String>
-; V37 tmp25 [V37,T61] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp24 [V36,T32] ( 4, 2.91) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <System.String>
+; V37 tmp25 [V37,T60] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V38 tmp26 [V38,T16] ( 7, 6.91) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
-; V39 tmp27 [V39,T49] ( 3, 1.46) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V40 tmp28 [V40,T42] ( 4, 1.91) int -> rcx "Inline stloc first use temp"
+; V39 tmp27 [V39,T48] ( 3, 1.46) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V40 tmp28 [V40,T41] ( 4, 1.91) int -> rcx "Inline stloc first use temp"
;* V41 tmp29 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V43 tmp31 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V44 tmp32 [V44 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V45 tmp33 [V45,T24] ( 3, 5 ) ref -> rax class-hnd exact "Inlining Arg" <System.String>
+; V45 tmp33 [V45,T23] ( 3, 5 ) ref -> rax class-hnd exact "Inlining Arg" <System.String>
; V46 tmp34 [V46,T18] ( 7, 6 ) ref -> rdi class-hnd "Inlining Arg" <<unknown class>>
-; V47 tmp35 [V47,T50] ( 3, 1.46) ref -> rsi class-hnd "Inline stloc first use temp" <<unknown class>>
-; V48 tmp36 [V48,T43] ( 4, 1.91) int -> rcx "Inline stloc first use temp"
-; V49 tmp37 [V49,T35] ( 3, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V47 tmp35 [V47,T49] ( 3, 1.46) ref -> rsi class-hnd "Inline stloc first use temp" <<unknown class>>
+; V48 tmp36 [V48,T42] ( 4, 1.91) int -> rcx "Inline stloc first use temp"
+; V49 tmp37 [V49,T34] ( 3, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
; V50 tmp38 [V50,T19] ( 7, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
-; V51 tmp39 [V51,T51] ( 3, 1.46) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V52 tmp40 [V52,T44] ( 4, 1.91) int -> rcx "Inline stloc first use temp"
+; V51 tmp39 [V51,T50] ( 3, 1.46) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V52 tmp40 [V52,T43] ( 4, 1.91) int -> rcx "Inline stloc first use temp"
; V53 tmp41 [V53,T20] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
-; V54 tmp42 [V54,T34] ( 4, 2.91) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
-; V55 tmp43 [V55,T62] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V54 tmp42 [V54,T33] ( 4, 2.91) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
+; V55 tmp43 [V55,T61] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V56 tmp44 [V56,T17] ( 7, 6.91) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
-; V57 tmp45 [V57,T52] ( 3, 1.46) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V58 tmp46 [V58,T45] ( 4, 1.91) int -> rax "Inline stloc first use temp"
+; V57 tmp45 [V57,T51] ( 3, 1.46) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V58 tmp46 [V58,T44] ( 4, 1.91) int -> rax "Inline stloc first use temp"
; V59 tmp47 [V59,T21] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
;* V60 tmp48 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V61 tmp49 [V61,T40] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V62 tmp50 [V62,T39] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V63 cse0 [V63,T22] ( 3, 6 ) byref -> rdi "CSE - moderate"
-; V64 cse1 [V64,T05] ( 4, 12 ) long -> [rbp-0x40] spill-single-def "CSE - aggressive"
-; V65 cse2 [V65,T55] ( 2, 1 ) int -> rcx "CSE - conservative"
+;* V61 tmp49 [V61,T39] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V62 tmp50 [V62,T38] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V63 cse0 [V63,T04] ( 5, 14 ) long -> [rbp-0x40] spill-single-def "CSE - aggressive"
+; V64 cse1 [V64,T54] ( 2, 1 ) int -> rcx "CSE - conservative"
+; V65 cse2 [V65,T55] ( 2, 1 ) int -> rdx "CSE - conservative"
; V66 cse3 [V66,T56] ( 2, 1 ) int -> rdx "CSE - conservative"
; V67 cse4 [V67,T57] ( 2, 1 ) int -> rdx "CSE - conservative"
-; V68 cse5 [V68,T58] ( 2, 1 ) int -> rdx "CSE - conservative"
-; V69 cse6 [V69,T59] ( 2, 1 ) int -> rcx "CSE - conservative"
-; V70 cse7 [V70,T26] ( 4, 3 ) int -> rbx "CSE - conservative"
-; V71 cse8 [V71,T47] ( 3, 1.50) int -> r13 "CSE - conservative"
-; V72 cse9 [V72,T02] ( 5, 19.50) int -> r13 "CSE - aggressive"
+; V68 cse5 [V68,T58] ( 2, 1 ) int -> rcx "CSE - conservative"
+; V69 cse6 [V69,T25] ( 4, 3 ) int -> rbx "CSE - conservative"
+; V70 cse7 [V70,T46] ( 3, 1.50) int -> r13 "CSE - conservative"
+; V71 cse8 [V71,T02] ( 5, 19.50) int -> r13 "CSE - aggressive"
;
; Lcl frame size = 88
@@ -263,7 +262,7 @@ G_M46894_IG07: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=1
cmp edx, ecx
jbe SHORT G_M46894_IG09
;; size=139 bbWeight=0.50 PerfScore 19.38
-G_M46894_IG08: ; bbWeight=0.46, gcVars=0000000200000400 {V07 V36}, gcrefRegs=C0C9 {rax rbx rsi rdi r14 r15}, byrefRegs=1000 {r12}, gcvars, byref, isz
+G_M46894_IG08: ; bbWeight=0.46, gcVars=0000000100000400 {V07 V36}, gcrefRegs=C0C9 {rax rbx rsi rdi r14 r15}, byrefRegs=1000 {r12}, gcvars, byref, isz
lea edx, [rcx+0x01]
mov dword ptr [rdi+0x10], edx
mov edi, ecx
@@ -278,12 +277,12 @@ G_M46894_IG08: ; bbWeight=0.46, gcVars=0000000200000400 {V07 V36}, gcrefR
mov eax, dword ptr [rbp-0x30]
jmp SHORT G_M46894_IG10
;; size=26 bbWeight=0.46 PerfScore 3.19
-G_M46894_IG09: ; bbWeight=0.50, gcVars=0000000200000400 {V07 V36}, gcrefRegs=C089 {rax rbx rdi r14 r15}, byrefRegs=1000 {r12}, gcvars, byref
+G_M46894_IG09: ; bbWeight=0.50, gcVars=0000000100000400 {V07 V36}, gcrefRegs=C089 {rax rbx rdi r14 r15}, byrefRegs=1000 {r12}, gcvars, byref
; gcrRegs +[rax rdi]
- ; GC ptr vars +{V33 V36}
+ ; GC ptr vars +{V32 V36}
mov rsi, rax
; gcrRegs +[rsi]
- ; GC ptr vars -{V33 V36}
+ ; GC ptr vars -{V32 V36}
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
; gcr arg pop 0
@@ -345,14 +344,11 @@ G_M46894_IG17: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=1000
je G_M46894_IG22
;; size=25 bbWeight=4 PerfScore 33.00
G_M46894_IG18: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=1000 {r12}, byref
- lea rdi, bword ptr [rbx+rdx+0x10]
- ; byrRegs +[rdi]
- movzx rsi, word ptr [rdi+0x56]
- mov r8d, dword ptr [r15+0x20]
- cmp esi, r8d
+ movzx rdi, word ptr [rbx+rdx+0x66]
+ mov esi, dword ptr [r15+0x20]
+ cmp edi, esi
jne G_M46894_IG29
- movzx rdi, byte ptr [rdi+0x55]
- ; byrRegs -[rdi]
+ movzx rdi, byte ptr [rbx+rdx+0x65]
mov esi, dword ptr [r15+0x2C]
cmp edi, esi
jne G_M46894_IG28
@@ -420,7 +416,7 @@ G_M46894_IG18: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=1000
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x50]
; gcrRegs +[rsi]
- ;; size=200 bbWeight=2 PerfScore 80.50
+ ;; size=196 bbWeight=2 PerfScore 78.50
G_M46894_IG19: ; bbWeight=2, isz, extend
; GC ptr vars -{V16 V17}
call [System.SR:Format(System.String,System.Object[]):System.String]
@@ -780,9 +776,9 @@ G_M46894_IG51: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byr
; gcrRegs -[rbx rdi]
; gcr arg pop 0
;; size=38 bbWeight=0 PerfScore 0.00
-G_M46894_IG52: ; bbWeight=0, gcVars=0000000200000000 {V36}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+G_M46894_IG52: ; bbWeight=0, gcVars=0000000100000000 {V36}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rax]
- ; GC ptr vars +{V33 V36}
+ ; GC ptr vars +{V32 V36}
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcr arg pop 0
@@ -792,7 +788,7 @@ G_M46894_IG52: ; bbWeight=0, gcVars=0000000200000000 {V36}, gcrefRegs=000
; gcrRegs +[rdi]
mov rsi, gword ptr [rbp-0x78]
; gcrRegs +[rsi]
- ; GC ptr vars -{V33 V36}
+ ; GC ptr vars -{V32 V36}
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
; gcr arg pop 0
@@ -825,7 +821,7 @@ G_M46894_IG53: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
int3
;; size=39 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1685, prolog size 41, PerfScore 414.36, instruction count 381, allocated bytes for code 1685 (MethodHash=3e2a48d1) for method System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
+; Total bytes of code 1681, prolog size 41, PerfScore 412.36, instruction count 380, allocated bytes for code 1681 (MethodHash=3e2a48d1) for method System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -10,27 +10,27 @@
;
; V00 this [V00,T21] ( 9, 22.50) ref -> rbx this class-hnd single-def <System.Buffers.SharedArrayPool`1[ubyte]>
; V01 loc0 [V01,T12] ( 5, 33.50) int -> r15
-; V02 loc1 [V02,T31] ( 5, 19 ) int -> r14
+; V02 loc1 [V02,T30] ( 5, 19 ) int -> r14
; V03 loc2 [V03,T20] ( 7, 27 ) ref -> r13 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T43] ( 4, 10 ) ref -> r12 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T30] ( 6, 19 ) int -> [rbp-0x2C]
-; V06 loc5 [V06,T37] ( 8, 10.50) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T42] ( 4, 10 ) ref -> r12 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T29] ( 6, 19 ) int -> [rbp-0x2C]
+; V06 loc5 [V06,T36] ( 8, 10.50) ref -> [rbp-0x68] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T38] ( 8, 10.50) ref -> [rbp-0x68] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T37] ( 8, 10.50) ref -> [rbp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T24] ( 3, 20 ) ref -> r14 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T23] ( 3, 20 ) ref -> r14 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T04] ( 5, 66 ) int -> r15
-; V12 loc11 [V12,T02] ( 6, 64 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V13 loc12 [V13,T44] ( 2, 8.50) int -> r14
-; V14 loc13 [V14,T66] ( 3, 1.50) int -> r14
-; V15 loc14 [V15,T39] ( 8, 10.50) ref -> [rbp-0x78] class-hnd EH-live spill-single-def <<unknown class>>
+; V12 loc11 [V12,T02] ( 6, 64 ) ref -> [rbp-0x78] class-hnd spill-single-def <<unknown class>>
+; V13 loc12 [V13,T43] ( 2, 8.50) int -> r14
+; V14 loc13 [V14,T65] ( 3, 1.50) int -> r14
+; V15 loc14 [V15,T38] ( 8, 10.50) ref -> [rbp-0x80] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T10] ( 5, 36 ) ref -> r12 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T10] ( 6, 44 ) ref -> r12 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> [rbp-0x30]
-; V19 loc18 [V19,T23] ( 3, 24 ) int -> r8
-; V20 loc19 [V20,T07] ( 6, 48 ) ref -> [rbp-0x80] class-hnd spill-single-def <<unknown class>>
+; V19 loc18 [V19,T22] ( 3, 24 ) int -> rsi
+; V20 loc19 [V20,T07] ( 6, 48 ) ref -> [rbp-0x88] class-hnd spill-single-def <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T25] ( 3, 20 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T24] ( 3, 20 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T11] ( 2, 36 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -40,72 +40,71 @@
; V29 tmp8 [V29,T16] ( 2, 32 ) int -> [rbp-0x40] spill-single-def "impAppendStmt"
; V30 tmp9 [V30,T17] ( 2, 32 ) int -> [rbp-0x44] spill-single-def "impAppendStmt"
;* V31 tmp10 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V32 tmp11 [V32,T54] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
+; V32 tmp11 [V32,T53] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V36 tmp15 [V36,T55] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
+; V36 tmp15 [V36,T54] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V38 tmp17 [V38,T01] ( 3, 96 ) ref -> [rbp-0x90] spill-single-def "handle histogram profile tmp"
+; V38 tmp17 [V38,T01] ( 3, 96 ) ref -> [rbp-0x98] spill-single-def "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V42 tmp21 [V42,T56] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
+; V42 tmp21 [V42,T55] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V44 tmp23 [V44,T09] ( 3, 48 ) ref -> [rbp-0x98] spill-single-def "handle histogram profile tmp"
+; V44 tmp23 [V44,T09] ( 3, 48 ) ref -> [rbp-0xA0] spill-single-def "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V48 tmp27 [V48,T27] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
+; V48 tmp27 [V48,T26] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
;* V49 tmp28 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp29 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V51 tmp30 [V51,T26] ( 3, 20 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V51 tmp30 [V51,T25] ( 3, 20 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V52 tmp31 [V52,T05] ( 5, 66 ) int -> [rbp-0x4C] "Inline stloc first use temp"
; V53 tmp32 [V53,T18] ( 2, 32 ) int -> r8 "Inlining Arg"
; V54 tmp33 [V54,T19] ( 2, 32 ) int -> r8 "Inlining Arg"
-; V55 tmp34 [V55,T51] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T63] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T52] ( 2, 4 ) ref -> r14 "field V09.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T64] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
-; V59 tmp38 [V59,T53] ( 2, 4 ) ref -> r12 "field V16.key (fldOffset=0x0)" P-INDEP
-; V60 tmp39 [V60,T65] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T50] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T62] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T51] ( 2, 4 ) ref -> r14 "field V09.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T63] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
+; V59 tmp38 [V59,T52] ( 2, 4 ) ref -> r12 "field V16.key (fldOffset=0x0)" P-INDEP
+; V60 tmp39 [V60,T64] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V28.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V28.value (fldOffset=0x8)" P-DEP
;* V65 tmp44 [V65 ] ( 0, 0 ) ref -> zero-ref "field V31.key (fldOffset=0x0)" P-DEP
;* V66 tmp45 [V66 ] ( 0, 0 ) ref -> zero-ref "field V31.value (fldOffset=0x8)" P-DEP
-; V67 tmp46 [V67,T57] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V68 tmp47 [V68,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V69 tmp48 [V69,T48] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V67 tmp46 [V67,T56] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V68 tmp47 [V68,T31] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V69 tmp48 [V69,T47] ( 2, 8 ) ref -> rdi "argument with side effect"
; V70 tmp49 [V70,T13] ( 2, 32 ) ref -> rsi "argument with side effect"
-;* V71 tmp50 [V71,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V72 tmp51 [V72,T68] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V73 tmp52 [V73,T58] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V74 tmp53 [V74,T59] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V75 tmp54 [V75,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V76 tmp55 [V76,T49] ( 2, 8 ) ref -> rdi "argument with side effect"
+;* V71 tmp50 [V71,T34] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V72 tmp51 [V72,T67] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V73 tmp52 [V73,T57] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V74 tmp53 [V74,T58] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V75 tmp54 [V75,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V76 tmp55 [V76,T48] ( 2, 8 ) ref -> rdi "argument with side effect"
; V77 tmp56 [V77,T06] ( 2, 64 ) ref -> rsi "argument with side effect"
-;* V78 tmp57 [V78,T36] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V79 tmp58 [V79,T69] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V80 tmp59 [V80,T60] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V81 tmp60 [V81,T61] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V82 tmp61 [V82,T34] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V83 tmp62 [V83,T50] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V84 tmp63 [V84,T70] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V85 tmp64 [V85,T62] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V86 PSPSym [V86,T67] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
-; V87 cse0 [V87,T45] ( 4, 8 ) ref -> rbx multi-def "CSE - conservative"
-; V88 cse1 [V88,T40] ( 6, 10.50) ref -> rbx multi-def "CSE - conservative"
-; V89 cse2 [V89,T46] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
-; V90 cse3 [V90,T41] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
-; V91 cse4 [V91,T47] ( 4, 8 ) ref -> r12 multi-def "CSE - conservative"
-; V92 cse5 [V92,T42] ( 6, 10.50) ref -> r12 multi-def "CSE - conservative"
-; V93 cse6 [V93,T22] ( 3, 24 ) byref -> [rbp-0xA8] spill-single-def "CSE - moderate"
-; V94 cse7 [V94,T08] ( 4, 48 ) long -> rdx "CSE - moderate"
-; V95 cse8 [V95,T03] ( 3, 68 ) int -> [rbp-0x50] spill-single-def "CSE - aggressive"
-; V96 cse9 [V96,T28] ( 3, 20 ) int -> [rbp-0x54] spill-single-def "CSE - moderate"
-; V97 cse10 [V97,T29] ( 3, 20 ) int -> r12 "CSE - moderate"
+;* V78 tmp57 [V78,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V79 tmp58 [V79,T68] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V80 tmp59 [V80,T59] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V81 tmp60 [V81,T60] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V82 tmp61 [V82,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V83 tmp62 [V83,T49] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V84 tmp63 [V84,T69] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V85 tmp64 [V85,T61] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V86 PSPSym [V86,T66] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
+; V87 cse0 [V87,T44] ( 4, 8 ) ref -> rbx multi-def "CSE - conservative"
+; V88 cse1 [V88,T39] ( 6, 10.50) ref -> rbx multi-def "CSE - conservative"
+; V89 cse2 [V89,T45] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
+; V90 cse3 [V90,T40] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
+; V91 cse4 [V91,T46] ( 4, 8 ) ref -> r12 multi-def "CSE - conservative"
+; V92 cse5 [V92,T41] ( 6, 10.50) ref -> r12 multi-def "CSE - conservative"
+; V93 cse6 [V93,T08] ( 5, 56 ) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
+; V94 cse7 [V94,T03] ( 3, 68 ) int -> [rbp-0x5C] spill-single-def "CSE - aggressive"
+; V95 cse8 [V95,T27] ( 3, 20 ) int -> [rbp-0x60] spill-single-def "CSE - moderate"
+; V96 cse9 [V96,T28] ( 3, 20 ) int -> r12 "CSE - moderate"
;
; Lcl frame size = 136
@@ -160,12 +159,12 @@ G_M18152_IG05: ; bbWeight=4, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000
mov edi, eax
mov rcx, gword ptr [r12+8*rdi+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x88], rcx
+ mov gword ptr [rbp-0x90], rcx
; GC ptr vars +{V22}
test rcx, rcx
je G_M18152_IG09
;; size=26 bbWeight=4 PerfScore 22.00
-G_M18152_IG06: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V22}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref
+G_M18152_IG06: ; bbWeight=2, gcVars=00000000000000000000000001000000 {V22}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -192,19 +191,19 @@ G_M18152_IG06: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V22
mov eax, dword ptr [rbp-0x34]
;; size=79 bbWeight=2 PerfScore 24.00
G_M18152_IG07: ; bbWeight=2, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp-0x88]
+ mov rdi, gword ptr [rbp-0x90]
; gcrRegs +[rdi]
mov r9, gword ptr [rdi+0x08]
; gcrRegs +[r9]
- mov gword ptr [rbp-0xA0], r9
+ mov gword ptr [rbp-0xA8], r9
; GC ptr vars +{V51}
xor r10d, r10d
mov r11d, dword ptr [r9+0x08]
- mov dword ptr [rbp-0x54], r11d
+ mov dword ptr [rbp-0x60], r11d
test r11d, r11d
jle SHORT G_M18152_IG09
;; size=34 bbWeight=2 PerfScore 17.00
-G_M18152_IG08: ; bbWeight=16, gcVars=00000000000000000000000004000000 {V51}, gcrefRegs=3208 {rbx r9 r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M18152_IG08: ; bbWeight=16, gcVars=00000000000000000000000002000000 {V51}, gcrefRegs=3208 {rbx r9 r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi]
; GC ptr vars -{V22}
mov dword ptr [rbp-0x4C], r10d
@@ -221,10 +220,10 @@ G_M18152_IG08: ; bbWeight=16, gcVars=00000000000000000000000004000000 {V5
; gcr arg pop 0
mov r10d, dword ptr [rbp-0x4C]
inc r10d
- mov edi, dword ptr [rbp-0x54]
+ mov edi, dword ptr [rbp-0x60]
cmp edi, r10d
mov eax, dword ptr [rbp-0x34]
- mov r9, gword ptr [rbp-0xA0]
+ mov r9, gword ptr [rbp-0xA8]
; gcrRegs +[r9]
jg SHORT G_M18152_IG08
;; size=57 bbWeight=16 PerfScore 264.00
@@ -261,10 +260,10 @@ G_M18152_IG11: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rbx rdi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x60], rax
+ mov gword ptr [rbp-0x68], rax
; GC ptr vars +{V06}
;; size=56 bbWeight=0.50 PerfScore 6.00
-G_M18152_IG12: ; bbWeight=0.50, gcVars=00000000000000000000002000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M18152_IG12: ; bbWeight=0.50, gcVars=00000000000000000000001000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
jmp SHORT G_M18152_IG14
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M18152_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
@@ -272,7 +271,7 @@ G_M18152_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
@@ -289,7 +288,7 @@ G_M18152_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Array:Clear(System.Array)]
; gcrRegs -[rax rdx rdi]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x60]
+ mov rax, gword ptr [rbp-0x68]
; gcrRegs +[rax]
;; size=63 bbWeight=2 PerfScore 22.50
G_M18152_IG14: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
@@ -299,7 +298,7 @@ G_M18152_IG14: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rdi]
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
mov rbx, rdi
; gcrRegs +[rbx]
@@ -318,7 +317,7 @@ G_M18152_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rdi, 0xD1FFAB1E
...
@@ -10,27 +10,27 @@
;
; V00 this [V00,T21] ( 9, 22.50) ref -> rbx this class-hnd single-def <System.Buffers.SharedArrayPool`1[ushort]>
; V01 loc0 [V01,T12] ( 5, 33.50) int -> r15
-; V02 loc1 [V02,T31] ( 5, 19 ) int -> r14
+; V02 loc1 [V02,T30] ( 5, 19 ) int -> r14
; V03 loc2 [V03,T20] ( 7, 27 ) ref -> r13 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T43] ( 4, 10 ) ref -> r12 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T30] ( 6, 19 ) int -> [rbp-0x2C]
-; V06 loc5 [V06,T37] ( 8, 10.50) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T42] ( 4, 10 ) ref -> r12 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T29] ( 6, 19 ) int -> [rbp-0x2C]
+; V06 loc5 [V06,T36] ( 8, 10.50) ref -> [rbp-0x68] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T38] ( 8, 10.50) ref -> [rbp-0x68] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T37] ( 8, 10.50) ref -> [rbp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T24] ( 3, 20 ) ref -> r14 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T23] ( 3, 20 ) ref -> r14 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T04] ( 5, 66 ) int -> r15
-; V12 loc11 [V12,T02] ( 6, 64 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V13 loc12 [V13,T44] ( 2, 8.50) int -> r14
-; V14 loc13 [V14,T66] ( 3, 1.50) int -> r14
-; V15 loc14 [V15,T39] ( 8, 10.50) ref -> [rbp-0x78] class-hnd EH-live spill-single-def <<unknown class>>
+; V12 loc11 [V12,T02] ( 6, 64 ) ref -> [rbp-0x78] class-hnd spill-single-def <<unknown class>>
+; V13 loc12 [V13,T43] ( 2, 8.50) int -> r14
+; V14 loc13 [V14,T65] ( 3, 1.50) int -> r14
+; V15 loc14 [V15,T38] ( 8, 10.50) ref -> [rbp-0x80] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T10] ( 5, 36 ) ref -> r12 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T10] ( 6, 44 ) ref -> r12 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> [rbp-0x30]
-; V19 loc18 [V19,T23] ( 3, 24 ) int -> r8
-; V20 loc19 [V20,T07] ( 6, 48 ) ref -> [rbp-0x80] class-hnd spill-single-def <<unknown class>>
+; V19 loc18 [V19,T22] ( 3, 24 ) int -> rsi
+; V20 loc19 [V20,T07] ( 6, 48 ) ref -> [rbp-0x88] class-hnd spill-single-def <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T25] ( 3, 20 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T24] ( 3, 20 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T11] ( 2, 36 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -40,72 +40,71 @@
; V29 tmp8 [V29,T16] ( 2, 32 ) int -> [rbp-0x40] spill-single-def "impAppendStmt"
; V30 tmp9 [V30,T17] ( 2, 32 ) int -> [rbp-0x44] spill-single-def "impAppendStmt"
;* V31 tmp10 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V32 tmp11 [V32,T54] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
+; V32 tmp11 [V32,T53] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V36 tmp15 [V36,T55] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
+; V36 tmp15 [V36,T54] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V38 tmp17 [V38,T01] ( 3, 96 ) ref -> [rbp-0x90] spill-single-def "handle histogram profile tmp"
+; V38 tmp17 [V38,T01] ( 3, 96 ) ref -> [rbp-0x98] spill-single-def "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V42 tmp21 [V42,T56] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
+; V42 tmp21 [V42,T55] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V44 tmp23 [V44,T09] ( 3, 48 ) ref -> [rbp-0x98] spill-single-def "handle histogram profile tmp"
+; V44 tmp23 [V44,T09] ( 3, 48 ) ref -> [rbp-0xA0] spill-single-def "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V48 tmp27 [V48,T27] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
+; V48 tmp27 [V48,T26] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
;* V49 tmp28 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp29 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V51 tmp30 [V51,T26] ( 3, 20 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V51 tmp30 [V51,T25] ( 3, 20 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V52 tmp31 [V52,T05] ( 5, 66 ) int -> [rbp-0x4C] "Inline stloc first use temp"
; V53 tmp32 [V53,T18] ( 2, 32 ) int -> r8 "Inlining Arg"
; V54 tmp33 [V54,T19] ( 2, 32 ) int -> r8 "Inlining Arg"
-; V55 tmp34 [V55,T51] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T63] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T52] ( 2, 4 ) ref -> r14 "field V09.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T64] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
-; V59 tmp38 [V59,T53] ( 2, 4 ) ref -> r12 "field V16.key (fldOffset=0x0)" P-INDEP
-; V60 tmp39 [V60,T65] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T50] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T62] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T51] ( 2, 4 ) ref -> r14 "field V09.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T63] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
+; V59 tmp38 [V59,T52] ( 2, 4 ) ref -> r12 "field V16.key (fldOffset=0x0)" P-INDEP
+; V60 tmp39 [V60,T64] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V28.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V28.value (fldOffset=0x8)" P-DEP
;* V65 tmp44 [V65 ] ( 0, 0 ) ref -> zero-ref "field V31.key (fldOffset=0x0)" P-DEP
;* V66 tmp45 [V66 ] ( 0, 0 ) ref -> zero-ref "field V31.value (fldOffset=0x8)" P-DEP
-; V67 tmp46 [V67,T57] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V68 tmp47 [V68,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V69 tmp48 [V69,T48] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V67 tmp46 [V67,T56] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V68 tmp47 [V68,T31] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V69 tmp48 [V69,T47] ( 2, 8 ) ref -> rdi "argument with side effect"
; V70 tmp49 [V70,T13] ( 2, 32 ) ref -> rsi "argument with side effect"
-;* V71 tmp50 [V71,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V72 tmp51 [V72,T68] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V73 tmp52 [V73,T58] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V74 tmp53 [V74,T59] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V75 tmp54 [V75,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V76 tmp55 [V76,T49] ( 2, 8 ) ref -> rdi "argument with side effect"
+;* V71 tmp50 [V71,T34] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V72 tmp51 [V72,T67] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V73 tmp52 [V73,T57] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V74 tmp53 [V74,T58] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V75 tmp54 [V75,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V76 tmp55 [V76,T48] ( 2, 8 ) ref -> rdi "argument with side effect"
; V77 tmp56 [V77,T06] ( 2, 64 ) ref -> rsi "argument with side effect"
-;* V78 tmp57 [V78,T36] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V79 tmp58 [V79,T69] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V80 tmp59 [V80,T60] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V81 tmp60 [V81,T61] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V82 tmp61 [V82,T34] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V83 tmp62 [V83,T50] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V84 tmp63 [V84,T70] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V85 tmp64 [V85,T62] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V86 PSPSym [V86,T67] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
-; V87 cse0 [V87,T45] ( 4, 8 ) ref -> rbx multi-def "CSE - conservative"
-; V88 cse1 [V88,T40] ( 6, 10.50) ref -> rbx multi-def "CSE - conservative"
-; V89 cse2 [V89,T46] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
-; V90 cse3 [V90,T41] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
-; V91 cse4 [V91,T47] ( 4, 8 ) ref -> r12 multi-def "CSE - conservative"
-; V92 cse5 [V92,T42] ( 6, 10.50) ref -> r12 multi-def "CSE - conservative"
-; V93 cse6 [V93,T22] ( 3, 24 ) byref -> [rbp-0xA8] spill-single-def "CSE - moderate"
-; V94 cse7 [V94,T08] ( 4, 48 ) long -> rdx "CSE - moderate"
-; V95 cse8 [V95,T03] ( 3, 68 ) int -> [rbp-0x50] spill-single-def "CSE - aggressive"
-; V96 cse9 [V96,T28] ( 3, 20 ) int -> [rbp-0x54] spill-single-def "CSE - moderate"
-; V97 cse10 [V97,T29] ( 3, 20 ) int -> r12 "CSE - moderate"
+;* V78 tmp57 [V78,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V79 tmp58 [V79,T68] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V80 tmp59 [V80,T59] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V81 tmp60 [V81,T60] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V82 tmp61 [V82,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V83 tmp62 [V83,T49] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V84 tmp63 [V84,T69] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V85 tmp64 [V85,T61] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V86 PSPSym [V86,T66] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
+; V87 cse0 [V87,T44] ( 4, 8 ) ref -> rbx multi-def "CSE - conservative"
+; V88 cse1 [V88,T39] ( 6, 10.50) ref -> rbx multi-def "CSE - conservative"
+; V89 cse2 [V89,T45] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
+; V90 cse3 [V90,T40] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
+; V91 cse4 [V91,T46] ( 4, 8 ) ref -> r12 multi-def "CSE - conservative"
+; V92 cse5 [V92,T41] ( 6, 10.50) ref -> r12 multi-def "CSE - conservative"
+; V93 cse6 [V93,T08] ( 5, 56 ) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
+; V94 cse7 [V94,T03] ( 3, 68 ) int -> [rbp-0x5C] spill-single-def "CSE - aggressive"
+; V95 cse8 [V95,T27] ( 3, 20 ) int -> [rbp-0x60] spill-single-def "CSE - moderate"
+; V96 cse9 [V96,T28] ( 3, 20 ) int -> r12 "CSE - moderate"
;
; Lcl frame size = 136
@@ -160,12 +159,12 @@ G_M16016_IG05: ; bbWeight=4, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000
mov edi, eax
mov rcx, gword ptr [r12+8*rdi+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x88], rcx
+ mov gword ptr [rbp-0x90], rcx
; GC ptr vars +{V22}
test rcx, rcx
je G_M16016_IG09
;; size=26 bbWeight=4 PerfScore 22.00
-G_M16016_IG06: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V22}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref
+G_M16016_IG06: ; bbWeight=2, gcVars=00000000000000000000000001000000 {V22}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -192,19 +191,19 @@ G_M16016_IG06: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V22
mov eax, dword ptr [rbp-0x34]
;; size=79 bbWeight=2 PerfScore 24.00
G_M16016_IG07: ; bbWeight=2, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp-0x88]
+ mov rdi, gword ptr [rbp-0x90]
; gcrRegs +[rdi]
mov r9, gword ptr [rdi+0x08]
; gcrRegs +[r9]
- mov gword ptr [rbp-0xA0], r9
+ mov gword ptr [rbp-0xA8], r9
; GC ptr vars +{V51}
xor r10d, r10d
mov r11d, dword ptr [r9+0x08]
- mov dword ptr [rbp-0x54], r11d
+ mov dword ptr [rbp-0x60], r11d
test r11d, r11d
jle SHORT G_M16016_IG09
;; size=34 bbWeight=2 PerfScore 17.00
-G_M16016_IG08: ; bbWeight=16, gcVars=00000000000000000000000004000000 {V51}, gcrefRegs=3208 {rbx r9 r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16016_IG08: ; bbWeight=16, gcVars=00000000000000000000000002000000 {V51}, gcrefRegs=3208 {rbx r9 r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi]
; GC ptr vars -{V22}
mov dword ptr [rbp-0x4C], r10d
@@ -221,10 +220,10 @@ G_M16016_IG08: ; bbWeight=16, gcVars=00000000000000000000000004000000 {V5
; gcr arg pop 0
mov r10d, dword ptr [rbp-0x4C]
inc r10d
- mov edi, dword ptr [rbp-0x54]
+ mov edi, dword ptr [rbp-0x60]
cmp edi, r10d
mov eax, dword ptr [rbp-0x34]
- mov r9, gword ptr [rbp-0xA0]
+ mov r9, gword ptr [rbp-0xA8]
; gcrRegs +[r9]
jg SHORT G_M16016_IG08
;; size=57 bbWeight=16 PerfScore 264.00
@@ -261,10 +260,10 @@ G_M16016_IG11: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rbx rdi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x60], rax
+ mov gword ptr [rbp-0x68], rax
; GC ptr vars +{V06}
;; size=56 bbWeight=0.50 PerfScore 6.00
-G_M16016_IG12: ; bbWeight=0.50, gcVars=00000000000000000000002000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16016_IG12: ; bbWeight=0.50, gcVars=00000000000000000000001000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
jmp SHORT G_M16016_IG14
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M16016_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
@@ -272,7 +271,7 @@ G_M16016_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
@@ -289,7 +288,7 @@ G_M16016_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Array:Clear(System.Array)]
; gcrRegs -[rax rdx rdi]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x60]
+ mov rax, gword ptr [rbp-0x68]
; gcrRegs +[rax]
;; size=63 bbWeight=2 PerfScore 22.50
G_M16016_IG14: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
@@ -299,7 +298,7 @@ G_M16016_IG14: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rdi]
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
mov rbx, rdi
; gcrRegs +[rbx]
@@ -318,7 +317,7 @@ G_M16016_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rdi, 0xD1FFAB1E
...
@@ -9,91 +9,89 @@
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 4, 10 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Array>
-; V01 loc1 [V01,T07] ( 6, 21 ) int -> r15
+; V01 loc1 [V01,T06] ( 6, 21 ) int -> r15
; V02 loc2 [V02 ] ( 8, 4 ) ref -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
; V03 loc3 [V03 ] ( 38, 13 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <ulong[,]>
-;* V04 loc4 [V04,T57] ( 0, 0 ) int -> zero-ref
-;* V05 loc5 [V05,T48] ( 0, 0 ) int -> zero-ref
-; V06 loc6 [V06 ] ( 4, 33 ) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
-; V07 loc7 [V07,T02] ( 7, 72.50) int -> rdi
-; V08 loc8 [V08,T00] ( 7,100 ) int -> rax
-; V09 loc9 [V09,T31] ( 5, 2.50) ref -> rax class-hnd exact single-def <<unknown class>>
-; V10 loc10 [V10,T17] ( 14, 7 ) ref -> rax class-hnd single-def <ulong[,]>
-; V11 loc11 [V11,T32] ( 4, 2 ) ref -> rbx class-hnd exact single-def <<unknown class>>
-; V12 loc12 [V12,T24] ( 10, 5 ) ref -> rax class-hnd <<unknown class>>
+;* V04 loc4 [V04,T54] ( 0, 0 ) int -> zero-ref
+;* V05 loc5 [V05,T45] ( 0, 0 ) int -> zero-ref
+; V06 loc6 [V06 ] ( 6, 9 ) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
+;* V07 loc7 [V07,T55] ( 0, 0 ) int -> zero-ref
+; V08 loc8 [V08,T02] ( 14, 26.50) int -> rdi
+; V09 loc9 [V09,T28] ( 5, 2.50) ref -> rax class-hnd exact single-def <<unknown class>>
+; V10 loc10 [V10,T14] ( 14, 7 ) ref -> rax class-hnd single-def <ulong[,]>
+; V11 loc11 [V11,T29] ( 4, 2 ) ref -> rbx class-hnd exact single-def <<unknown class>>
+; V12 loc12 [V12,T21] ( 10, 5 ) ref -> rax class-hnd <<unknown class>>
; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14 ] ( 3, 1.50) struct ( 8) [rbp-0x50] do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
; V16 tmp3 [V16 ] ( 3, 6 ) int -> [rbp-0x58] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
;* V18 tmp5 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V19 tmp6 [V19,T49] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V20 tmp7 [V20,T26] ( 3, 4 ) int -> r15 "Inlining Arg"
-; V21 tmp8 [V21,T38] ( 2, 2 ) ref -> rdi class-hnd single-def "Inline return value spill temp" <System.Array>
+;* V19 tmp6 [V19,T46] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+; V20 tmp7 [V20,T23] ( 3, 4 ) int -> r15 "Inlining Arg"
+; V21 tmp8 [V21,T35] ( 2, 2 ) ref -> rdi class-hnd single-def "Inline return value spill temp" <System.Array>
; V22 tmp9 [V22 ] ( 4, 4 ) ref -> [rbp-0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
; V23 tmp10 [V23 ] ( 3, 6 ) ref -> [rbp-0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
; V24 tmp11 [V24 ] ( 4, 8 ) struct (16) [rbp-0x78] do-not-enreg[XSF] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-; V25 tmp12 [V25,T20] ( 3, 6 ) struct (16) [rbp-0x88] do-not-enreg[SFA] multireg-arg "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+; V25 tmp12 [V25,T17] ( 3, 6 ) struct (16) [rbp-0x88] do-not-enreg[SFA] multireg-arg "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
;* V26 tmp13 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V27 tmp14 [V27,T23] ( 3, 5.01) ref -> rdi class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V28 tmp15 [V28,T39] ( 2, 2 ) byref -> rsi single-def
+; V27 tmp14 [V27,T20] ( 3, 5.01) ref -> rdi class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V28 tmp15 [V28,T36] ( 2, 2 ) byref -> rsi single-def
;* V29 tmp16 [V29 ] ( 0, 0 ) ref -> zero-ref single-def
;* V30 tmp17 [V30 ] ( 0, 0 ) byref -> zero-ref single-def
-; V31 tmp18 [V31,T41] ( 3, 1.50) long -> rcx
-; V32 tmp19 [V32,T27] ( 2, 4 ) struct ( 8) [rbp-0x90] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V31 tmp18 [V31,T38] ( 3, 1.50) long -> rcx
+; V32 tmp19 [V32,T24] ( 2, 4 ) struct ( 8) [rbp-0x90] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V33 tmp20 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V34 tmp21 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V35 tmp22 [V35,T03] ( 5, 40 ) ref -> rbx class-hnd "Inlining Arg" <System.Array>
-; V36 tmp23 [V36,T21] ( 2, 4 ) int -> rdi "Inline return value spill temp"
+; V35 tmp22 [V35,T00] ( 5, 40 ) ref -> rbx class-hnd "Inlining Arg" <System.Array>
+; V36 tmp23 [V36,T18] ( 2, 4 ) int -> rdi "Inline return value spill temp"
;* V37 tmp24 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V38 tmp25 [V38,T15] ( 3, 10 ) int -> rdi "Inline stloc first use temp"
-; V39 tmp26 [V39,T05] ( 3, 24 ) byref -> r14 "Inlining Arg"
+; V38 tmp25 [V38,T12] ( 3, 10 ) int -> rdi "Inline stloc first use temp"
+; V39 tmp26 [V39,T04] ( 3, 24 ) byref -> r14 "Inlining Arg"
;* V40 tmp27 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp28 [V41,T04] ( 5, 40 ) ref -> rbx class-hnd "Inlining Arg" <System.Array>
-; V42 tmp29 [V42,T22] ( 2, 4 ) int -> rdi "Inline return value spill temp"
+; V41 tmp28 [V41,T01] ( 5, 40 ) ref -> rbx class-hnd "Inlining Arg" <System.Array>
+; V42 tmp29 [V42,T19] ( 2, 4 ) int -> rdi "Inline return value spill temp"
;* V43 tmp30 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V44 tmp31 [V44,T16] ( 3, 10 ) int -> rdi "Inline stloc first use temp"
-; V45 tmp32 [V45,T06] ( 3, 24 ) byref -> r14 "Inlining Arg"
+; V44 tmp31 [V44,T13] ( 3, 10 ) int -> rdi "Inline stloc first use temp"
+; V45 tmp32 [V45,T05] ( 3, 24 ) byref -> r14 "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V47 tmp34 [V47,T19] ( 5, 6 ) int -> rax "Single return block return value"
-; V48 FramesRoot [V48,T18] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot"
+; V47 tmp34 [V47,T16] ( 5, 6 ) int -> rax "Single return block return value"
+; V48 FramesRoot [V48,T15] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot"
; V49 PInvokeFrame [V49 ] ( 8, 8 ) struct (72) [rbp-0x118] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V50 tmp37 [V50,T58] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V50 tmp37 [V50,T56] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V51 tmp38 [V51 ] ( 4, 8 ) struct (16) [rbp-0xA0] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V52 tmp39 [V52,T10] ( 2, 16 ) long -> rsi "argument with side effect"
-; V53 tmp40 [V53,T11] ( 2, 16 ) long -> rsi "argument with side effect"
+; V52 tmp39 [V52,T07] ( 2, 16 ) long -> rsi "argument with side effect"
+; V53 tmp40 [V53,T08] ( 2, 16 ) long -> rsi "argument with side effect"
; V54 tmp41 [V54 ] ( 4, 4 ) struct (16) [rbp-0xB0] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V55 tmp42 [V55,T40] ( 2, 2 ) long -> rdx "argument with side effect"
+; V55 tmp42 [V55,T37] ( 2, 2 ) long -> rdx "argument with side effect"
; V56 tmp43 [V56 ] ( 4, 4 ) struct (16) [rbp-0xC0] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
; V57 tmp44 [V57 ] ( 4, 4 ) struct (16) [rbp-0xD0] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V58 tmp45 [V58,T01] ( 3, 96 ) ref -> rsi "arr expr"
-; V59 tmp46 [V59,T12] ( 21, 15 ) int -> rdi "MD array shared temp"
-; V60 tmp47 [V60,T13] ( 21, 15 ) int -> r8 "MD array shared temp"
-;* V61 tmp48 [V61,T50] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-; V62 tmp49 [V62,T28] ( 3, 3 ) int -> r9 "MD array shared temp"
-;* V63 tmp50 [V63,T51] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-; V64 tmp51 [V64,T29] ( 3, 3 ) int -> rcx "MD array shared temp"
-; V65 tmp52 [V65,T30] ( 3, 3 ) int -> rdi "MD array shared temp"
-;* V66 tmp53 [V66,T52] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V67 tmp54 [V67,T53] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V68 tmp55 [V68,T54] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V69 tmp56 [V69,T55] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V70 tmp57 [V70,T56] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-; V71 cse0 [V71,T33] ( 4, 2 ) int -> rdi "CSE - conservative"
-; V72 cse1 [V72,T34] ( 4, 2 ) int -> rdi "CSE - conservative"
-; V73 cse2 [V73,T42] ( 3, 1.50) int -> r8 "CSE - conservative"
-; V74 cse3 [V74,T43] ( 3, 1.50) int -> r9 "CSE - conservative"
-; V75 cse4 [V75,T44] ( 3, 1.50) int -> rcx "CSE - conservative"
-; V76 cse5 [V76,T08] ( 2, 20 ) int -> rdx hoist "CSE - moderate"
-; V77 cse6 [V77,T35] ( 2, 1 ) int -> rdi "CSE - conservative"
-; V78 cse7 [V78,T36] ( 2, 1 ) int -> rdi "CSE - conservative"
-; V79 cse8 [V79,T45] ( 2, 1 ) int -> r8 "CSE - conservative"
-; V80 cse9 [V80,T46] ( 2, 1 ) int -> r9 "CSE - conservative"
-; V81 cse10 [V81,T47] ( 2, 1 ) int -> rcx "CSE - conservative"
-; V82 cse11 [V82,T25] ( 10, 5 ) int -> rsi "CSE - moderate"
-; V83 cse12 [V83,T14] ( 6, 12 ) ref -> rsi multi-def "CSE - moderate"
-; V84 cse13 [V84,T37] ( 4, 2 ) int -> rdx "CSE - conservative"
-; V85 cse14 [V85,T09] ( 2, 20 ) long -> rcx hoist "CSE - moderate"
+; V58 tmp45 [V58,T03] ( 6, 24 ) ref -> rax "arr expr"
+; V59 tmp46 [V59,T09] ( 21, 15 ) int -> rdi "MD array shared temp"
+; V60 tmp47 [V60,T10] ( 21, 15 ) int -> r8 "MD array shared temp"
+;* V61 tmp48 [V61,T47] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+; V62 tmp49 [V62,T25] ( 3, 3 ) int -> r9 "MD array shared temp"
+;* V63 tmp50 [V63,T48] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+; V64 tmp51 [V64,T26] ( 3, 3 ) int -> rcx "MD array shared temp"
+; V65 tmp52 [V65,T27] ( 3, 3 ) int -> rdi "MD array shared temp"
+;* V66 tmp53 [V66,T49] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V67 tmp54 [V67,T50] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V68 tmp55 [V68,T51] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V69 tmp56 [V69,T52] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V70 tmp57 [V70,T53] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+; V71 cse0 [V71,T30] ( 4, 2 ) int -> rdi "CSE - conservative"
+; V72 cse1 [V72,T31] ( 4, 2 ) int -> rdi "CSE - conservative"
+; V73 cse2 [V73,T39] ( 3, 1.50) int -> r8 "CSE - conservative"
+; V74 cse3 [V74,T40] ( 3, 1.50) int -> r9 "CSE - conservative"
+; V75 cse4 [V75,T41] ( 3, 1.50) int -> rcx "CSE - conservative"
+; V76 cse5 [V76,T32] ( 2, 1 ) int -> rdi "CSE - conservative"
+; V77 cse6 [V77,T33] ( 2, 1 ) int -> rdi "CSE - conservative"
+; V78 cse7 [V78,T42] ( 2, 1 ) int -> r8 "CSE - conservative"
+; V79 cse8 [V79,T43] ( 2, 1 ) int -> r9 "CSE - conservative"
+; V80 cse9 [V80,T44] ( 2, 1 ) int -> rcx "CSE - conservative"
+; V81 cse10 [V81,T22] ( 10, 5 ) int -> rsi "CSE - moderate"
+; V82 cse11 [V82,T11] ( 6, 12 ) ref -> rsi multi-def "CSE - moderate"
+; V83 cse12 [V83,T34] ( 4, 2 ) int -> rdx "CSE - conservative"
;
; Lcl frame size = 248
@@ -609,7 +607,7 @@ G_M55471_IG29: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cmp qword ptr [rsi+8*rdi+0x20], 5
jne G_M55471_IG35
;; size=167 bbWeight=0.25 PerfScore 15.06
-G_M55471_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55471_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
mov rdi, 0xD1FFAB1E ; <unknown class>
mov esi, 2
@@ -661,35 +659,9 @@ G_M55471_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[rbx]
; byrRegs -[rdi]
; gcr arg pop 0
- xor edi, edi
- ;; size=189 bbWeight=0.50 PerfScore 11.62
-G_M55471_IG31: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- xor eax, eax
- jmp SHORT G_M55471_IG34
- ;; size=4 bbWeight=4 PerfScore 9.00
-G_M55471_IG32: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rsi, gword ptr [rbp-0x48]
- ; gcrRegs +[rsi]
- cmp edi, dword ptr [rsi+0x08]
- jae SHORT G_M55471_IG37
- mov rsi, gword ptr [rbp-0x48]
- mov rsi, gword ptr [rsi+8*rcx+0x10]
- cmp eax, dword ptr [rsi+0x08]
- jae SHORT G_M55471_IG37
- mov r8d, eax
- lea r9d, [rdx+rax]
- movsxd r9, r9d
- cmp qword ptr [rsi+8*r8+0x10], r9
- jne SHORT G_M55471_IG35
- inc eax
- cmp eax, 3
- jl SHORT G_M55471_IG32
- inc edi
- cmp edi, 2
- jl SHORT G_M55471_IG31
- ;; size=54 bbWeight=16 PerfScore 320.00
-G_M55471_IG33: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
+ jmp SHORT G_M55471_IG32
+ ;; size=189 bbWeight=0.50 PerfScore 12.50
+G_M55471_IG31: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
call [<unknown method>]
@@ -698,12 +670,49 @@ G_M55471_IG33: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov eax, 100
jmp SHORT G_M55471_IG36
;; size=23 bbWeight=0.50 PerfScore 2.75
-G_M55471_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M55471_IG32: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor edi, edi
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M55471_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rax, gword ptr [rbp-0x48]
+ ; gcrRegs +[rax]
+ cmp dword ptr [rax+0x08], 0
+ jbe SHORT G_M55471_IG37
+ mov rax, gword ptr [rbp-0x48]
+ mov rax, gword ptr [rax+0x10]
+ cmp edi, dword ptr [rax+0x08]
+ jae SHORT G_M55471_IG37
mov ecx, edi
- lea edx, [rdi+2*rdi]
- jmp SHORT G_M55471_IG32
- ;; size=7 bbWeight=4 PerfScore 11.00
+ movsxd rdx, edi
+ cmp qword ptr [rax+8*rcx+0x10], rdx
+ jne SHORT G_M55471_IG35
+ inc edi
+ cmp edi, 3
+ jl SHORT G_M55471_IG33
+ xor edi, edi
+ ;; size=44 bbWeight=2 PerfScore 36.50
+G_M55471_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rax, gword ptr [rbp-0x48]
+ ; gcrRegs +[rax]
+ cmp dword ptr [rax+0x08], 1
+ jbe SHORT G_M55471_IG37
+ mov rax, gword ptr [rbp-0x48]
+ mov rax, gword ptr [rax+0x18]
+ cmp edi, dword ptr [rax+0x08]
+ jae SHORT G_M55471_IG37
+ mov ecx, edi
+ lea edx, [rdi+0x03]
+ movsxd rdx, edx
+ cmp qword ptr [rax+8*rcx+0x10], rdx
+ jne SHORT G_M55471_IG35
+ inc edi
+ cmp edi, 3
+ jl SHORT G_M55471_IG34
+ jmp SHORT G_M55471_IG31
+ ;; size=47 bbWeight=2 PerfScore 41.00
G_M55471_IG35: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov eax, 3
...
@@ -8,14 +8,14 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 5, 4.50) ref -> rbx class-hnd single-def <System.String>
-; V01 loc0 [V01,T00] ( 16, 26 ) int -> r15
+; V00 arg0 [V00,T05] ( 5, 4.50) ref -> rbx class-hnd single-def <System.String>
+; V01 loc0 [V01,T00] ( 14, 25.50) int -> r15
; V02 loc1 [V02,T01] ( 14, 25.50) int -> r13
-; V03 loc2 [V03,T04] ( 10, 16 ) ref -> r12 class-hnd <System.String>
-; V04 loc3 [V04,T05] ( 7, 6.50) int -> rdx
-; V05 loc4 [V05,T02] ( 14, 18.54) int -> rdi
+; V03 loc2 [V03,T04] ( 9, 16 ) ref -> r12 class-hnd <System.String>
+; V04 loc3 [V04,T06] ( 4, 6.50) int -> rdx
+; V05 loc4 [V05,T02] ( 8, 21.50) int -> rdi
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T03] ( 9, 16.04) int -> r14 "CSE - aggressive"
+; V07 cse0 [V07,T03] ( 8, 19.50) int -> r14 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -66,7 +66,7 @@ G_M41923_IG08: ; bbWeight=8, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {},
;; size=5 bbWeight=8 PerfScore 10.00
G_M41923_IG09: ; bbWeight=4, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
cmp r13d, r14d
- jae G_M41923_IG24
+ jae G_M41923_IG20
mov edi, r13d
movzx rdi, word ptr [r12+2*rdi+0x0C]
call [<unknown method>]
@@ -76,80 +76,55 @@ G_M41923_IG09: ; bbWeight=4, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {},
;; size=28 bbWeight=4 PerfScore 31.00
G_M41923_IG10: ; bbWeight=1, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref
cmp r15d, r13d
- jge G_M41923_IG22
+ jge G_M41923_IG18
;; size=9 bbWeight=1 PerfScore 1.25
G_M41923_IG11: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
cmp r15d, r14d
- jae G_M41923_IG24
+ jae G_M41923_IG20
mov edx, r15d
cmp word ptr [r12+2*rdx+0x0C], 91
jne SHORT G_M41923_IG12
cmp r13d, r14d
- jae G_M41923_IG24
+ jae SHORT G_M41923_IG20
mov edx, r13d
cmp word ptr [r12+2*rdx+0x0C], 93
jne SHORT G_M41923_IG12
inc r15d
dec r13d
- ;; size=48 bbWeight=0.50 PerfScore 5.75
+ ;; size=44 bbWeight=0.50 PerfScore 5.75
G_M41923_IG12: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
cmp r13d, r14d
- jae G_M41923_IG24
+ jae SHORT G_M41923_IG20
mov edx, r13d
cmp word ptr [r12+2*rdx+0x0C], 93
- je SHORT G_M41923_IG22
+ je SHORT G_M41923_IG18
xor edx, edx
mov edi, r13d
cmp edi, r15d
- jl SHORT G_M41923_IG22
- mov esi, edi
- or esi, r15d
- jl SHORT G_M41923_IG17
- cmp r14d, edi
- jle SHORT G_M41923_IG17
- ;; size=43 bbWeight=0.50 PerfScore 5.00
-G_M41923_IG13: ; bbWeight=3.96, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M41923_IG18
+ ;; size=27 bbWeight=0.50 PerfScore 3.62
+G_M41923_IG13: ; bbWeight=4, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
+ cmp edi, r14d
+ jae SHORT G_M41923_IG20
mov esi, edi
cmp word ptr [r12+2*rsi+0x0C], 44
jne SHORT G_M41923_IG15
- ;; size=11 bbWeight=3.96 PerfScore 16.83
-G_M41923_IG14: ; bbWeight=1.98, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 22.00
+G_M41923_IG14: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
inc edx
cmp edx, 4
- je SHORT G_M41923_IG21
- ;; size=7 bbWeight=1.98 PerfScore 2.97
-G_M41923_IG15: ; bbWeight=3.96, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M41923_IG17
+ ;; size=7 bbWeight=2 PerfScore 3.00
+G_M41923_IG15: ; bbWeight=4, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
dec edi
cmp edi, r15d
jge SHORT G_M41923_IG13
- ;; size=7 bbWeight=3.96 PerfScore 5.94
+ ;; size=7 bbWeight=4 PerfScore 6.00
G_M41923_IG16: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- jmp SHORT G_M41923_IG22
+ jmp SHORT G_M41923_IG18
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M41923_IG17: ; bbWeight=0.04, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
- cmp edi, r14d
- jae SHORT G_M41923_IG24
- mov esi, edi
- cmp word ptr [r12+2*rsi+0x0C], 44
- jne SHORT G_M41923_IG19
- ;; size=16 bbWeight=0.04 PerfScore 0.22
-G_M41923_IG18: ; bbWeight=0.02, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
- inc edx
- cmp edx, 4
- je SHORT G_M41923_IG21
- ;; size=7 bbWeight=0.02 PerfScore 0.03
-G_M41923_IG19: ; bbWeight=0.04, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
- dec edi
- cmp edi, r15d
- jge SHORT G_M41923_IG17
- ;; size=7 bbWeight=0.04 PerfScore 0.06
-G_M41923_IG20: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- jmp SHORT G_M41923_IG22
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M41923_IG21: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M41923_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r12] +[rbx]
mov edx, edi
sub edx, r15d
@@ -163,12 +138,12 @@ G_M41923_IG21: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov r12, rax
; gcrRegs +[r12]
;; size=24 bbWeight=0.50 PerfScore 2.38
-G_M41923_IG22: ; bbWeight=1, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
+G_M41923_IG18: ; bbWeight=1, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rax, r12
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M41923_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M41923_IG19: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -178,14 +153,14 @@ G_M41923_IG23: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M41923_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M41923_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r12]
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 308, prolog size 19, PerfScore 139.67, instruction count 101, allocated bytes for code 308 (MethodHash=49705c3c) for method System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
+; Total bytes of code 261, prolog size 19, PerfScore 142.25, instruction count 86, allocated bytes for code 261 (MethodHash=49705c3c) for method System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -8,14 +8,14 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 5, 4.50) ref -> rbx class-hnd single-def <System.String>
-; V01 loc0 [V01,T00] ( 16, 26 ) int -> r15
+; V00 arg0 [V00,T05] ( 5, 4.50) ref -> rbx class-hnd single-def <System.String>
+; V01 loc0 [V01,T00] ( 14, 25.50) int -> r15
; V02 loc1 [V02,T01] ( 14, 25.50) int -> r13
-; V03 loc2 [V03,T04] ( 10, 16 ) ref -> r12 class-hnd <System.String>
-; V04 loc3 [V04,T05] ( 7, 6.50) int -> rdx
-; V05 loc4 [V05,T02] ( 14, 18.54) int -> rdi
+; V03 loc2 [V03,T04] ( 9, 16 ) ref -> r12 class-hnd <System.String>
+; V04 loc3 [V04,T06] ( 4, 6.50) int -> rdx
+; V05 loc4 [V05,T02] ( 8, 21.50) int -> rdi
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T03] ( 9, 16.04) int -> r14 "CSE - aggressive"
+; V07 cse0 [V07,T03] ( 8, 19.50) int -> r14 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -66,7 +66,7 @@ G_M5940_IG08: ; bbWeight=8, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {},
;; size=5 bbWeight=8 PerfScore 10.00
G_M5940_IG09: ; bbWeight=4, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
cmp r13d, r14d
- jae G_M5940_IG24
+ jae G_M5940_IG20
mov edi, r13d
movzx rdi, word ptr [r12+2*rdi+0x0C]
call [<unknown method>]
@@ -76,80 +76,55 @@ G_M5940_IG09: ; bbWeight=4, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {},
;; size=28 bbWeight=4 PerfScore 31.00
G_M5940_IG10: ; bbWeight=1, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref
cmp r15d, r13d
- jge G_M5940_IG22
+ jge G_M5940_IG18
;; size=9 bbWeight=1 PerfScore 1.25
G_M5940_IG11: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
cmp r15d, r14d
- jae G_M5940_IG24
+ jae G_M5940_IG20
mov edx, r15d
cmp word ptr [r12+2*rdx+0x0C], 91
jne SHORT G_M5940_IG12
cmp r13d, r14d
- jae G_M5940_IG24
+ jae SHORT G_M5940_IG20
mov edx, r13d
cmp word ptr [r12+2*rdx+0x0C], 93
jne SHORT G_M5940_IG12
inc r15d
dec r13d
- ;; size=48 bbWeight=0.50 PerfScore 5.75
+ ;; size=44 bbWeight=0.50 PerfScore 5.75
G_M5940_IG12: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
cmp r13d, r14d
- jae G_M5940_IG24
+ jae SHORT G_M5940_IG20
mov edx, r13d
cmp word ptr [r12+2*rdx+0x0C], 93
- je SHORT G_M5940_IG22
+ je SHORT G_M5940_IG18
xor edx, edx
mov edi, r13d
cmp edi, r15d
- jl SHORT G_M5940_IG22
- mov esi, edi
- or esi, r15d
- jl SHORT G_M5940_IG17
- cmp r14d, edi
- jle SHORT G_M5940_IG17
- ;; size=43 bbWeight=0.50 PerfScore 5.00
-G_M5940_IG13: ; bbWeight=3.96, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M5940_IG18
+ ;; size=27 bbWeight=0.50 PerfScore 3.62
+G_M5940_IG13: ; bbWeight=4, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
+ cmp edi, r14d
+ jae SHORT G_M5940_IG20
mov esi, edi
cmp word ptr [r12+2*rsi+0x0C], 44
jne SHORT G_M5940_IG15
- ;; size=11 bbWeight=3.96 PerfScore 16.83
-G_M5940_IG14: ; bbWeight=1.98, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 22.00
+G_M5940_IG14: ; bbWeight=2, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
inc edx
cmp edx, 4
- je SHORT G_M5940_IG21
- ;; size=7 bbWeight=1.98 PerfScore 2.97
-G_M5940_IG15: ; bbWeight=3.96, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M5940_IG17
+ ;; size=7 bbWeight=2 PerfScore 3.00
+G_M5940_IG15: ; bbWeight=4, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
dec edi
cmp edi, r15d
jge SHORT G_M5940_IG13
- ;; size=7 bbWeight=3.96 PerfScore 5.94
+ ;; size=7 bbWeight=4 PerfScore 6.00
G_M5940_IG16: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- jmp SHORT G_M5940_IG22
+ jmp SHORT G_M5940_IG18
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M5940_IG17: ; bbWeight=0.04, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
- cmp edi, r14d
- jae SHORT G_M5940_IG24
- mov esi, edi
- cmp word ptr [r12+2*rsi+0x0C], 44
- jne SHORT G_M5940_IG19
- ;; size=16 bbWeight=0.04 PerfScore 0.22
-G_M5940_IG18: ; bbWeight=0.02, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
- inc edx
- cmp edx, 4
- je SHORT G_M5940_IG21
- ;; size=7 bbWeight=0.02 PerfScore 0.03
-G_M5940_IG19: ; bbWeight=0.04, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
- dec edi
- cmp edi, r15d
- jge SHORT G_M5940_IG17
- ;; size=7 bbWeight=0.04 PerfScore 0.06
-G_M5940_IG20: ; bbWeight=0.50, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- jmp SHORT G_M5940_IG22
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M5940_IG21: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M5940_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r12] +[rbx]
mov edx, edi
sub edx, r15d
@@ -163,12 +138,12 @@ G_M5940_IG21: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
mov r12, rax
; gcrRegs +[r12]
;; size=24 bbWeight=0.50 PerfScore 2.38
-G_M5940_IG22: ; bbWeight=1, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
+G_M5940_IG18: ; bbWeight=1, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rax, r12
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M5940_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M5940_IG19: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -178,14 +153,14 @@ G_M5940_IG23: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M5940_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M5940_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r12]
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 308, prolog size 19, PerfScore 139.67, instruction count 101, allocated bytes for code 308 (MethodHash=714fe8cb) for method System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
+; Total bytes of code 261, prolog size 19, PerfScore 142.25, instruction count 86, allocated bytes for code 261 (MethodHash=714fe8cb) for method System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -4,60 +4,60 @@
; ReadyToRun compilation
; optimized code
; rbp based frame
-; partially interruptible
+; fully interruptible
; No matching PGO data
; 0 inlinees with PGO data; 19 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T02] ( 7, 4.50) byref -> rbx single-def
-; V02 arg2 [V02,T03] ( 7, 4.50) byref -> r15 single-def
-; V03 loc0 [V03,T00] ( 20, 11 ) int -> r14
-; V04 loc1 [V04,T09] ( 5, 2.50) int -> r13
-; V05 loc2 [V05,T14] ( 2, 1 ) int -> rax
+; V01 arg1 [V01,T04] ( 7, 4.50) byref -> rbx single-def
+; V02 arg2 [V02,T05] ( 7, 4.50) byref -> r15 single-def
+; V03 loc0 [V03,T00] ( 11, 20.50) int -> r14
+; V04 loc1 [V04,T10] ( 5, 2.50) int -> r13
+; V05 loc2 [V05,T15] ( 2, 1 ) int -> rax
; V06 loc3 [V06 ] ( 2, 1 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op <System.Text.Rune>
; V07 loc4 [V07 ] ( 3, 1.50) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
-;* V08 loc5 [V08,T18] ( 0, 0 ) int -> zero-ref
+; V08 loc5 [V08,T01] ( 4, 12.50) int -> rax
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V12 tmp3 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V13 tmp4 [V13,T07] ( 3, 3 ) int -> r12 "Inlining Arg"
-; V14 tmp5 [V14,T10] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
+; V13 tmp4 [V13,T08] ( 3, 3 ) int -> r12 "Inlining Arg"
+; V14 tmp5 [V14,T11] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V19 tmp10 [V19 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V20 tmp11 [V20,T05] ( 5, 5 ) int -> r12 "Inlining Arg"
-; V21 tmp12 [V21,T11] ( 2, 2 ) byref -> r13 "Inlining Arg"
+; V20 tmp11 [V20,T06] ( 5, 5 ) int -> r12 "Inlining Arg"
+; V21 tmp12 [V21,T12] ( 2, 2 ) byref -> r13 "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp15 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp16 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V26 tmp17 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V27 tmp18 [V27,T08] ( 3, 3 ) int -> rax "Single return block return value"
-; V28 tmp19 [V28,T04] ( 7, 4 ) byref -> rdi "field V00._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp20 [V29,T01] ( 9, 6 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+; V27 tmp18 [V27,T09] ( 3, 3 ) int -> rax "Single return block return value"
+; V28 tmp19 [V28,T03] ( 5, 6.50) byref -> rdi "field V00._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp20 [V29,T02] ( 6, 8 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
; V30 tmp21 [V30 ] ( 2, 1 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._value (fldOffset=0x0)" P-DEP
;* V31 tmp22 [V31 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V33 tmp24 [V33,T15] ( 2, 1 ) int -> r13 "field V11._value (fldOffset=0x0)" P-INDEP
-; V34 tmp25 [V34,T12] ( 2, 1 ) byref -> rdi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-; V35 tmp26 [V35,T16] ( 2, 1 ) int -> rsi "field V12._length (fldOffset=0x8)" P-INDEP
+; V33 tmp24 [V33,T16] ( 2, 1 ) int -> r13 "field V11._value (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T13] ( 2, 1 ) byref -> rdi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V35 tmp26 [V35,T17] ( 2, 1 ) int -> rsi "field V12._length (fldOffset=0x8)" P-INDEP
;* V36 tmp27 [V36,T19] ( 0, 0 ) int -> zero-ref "field V17._value (fldOffset=0x0)" P-INDEP
-; V37 tmp28 [V37,T13] ( 2, 1 ) byref -> r13 "field V19._reference (fldOffset=0x0)" P-INDEP
-; V38 tmp29 [V38,T17] ( 2, 1 ) int -> rdi "field V19._length (fldOffset=0x8)" P-INDEP
+; V37 tmp28 [V37,T14] ( 2, 1 ) byref -> r13 "field V19._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp29 [V38,T18] ( 2, 1 ) int -> rdi "field V19._length (fldOffset=0x8)" P-INDEP
;* V39 tmp30 [V39,T20] ( 0, 0 ) int -> zero-ref "field V25._value (fldOffset=0x0)" P-INDEP
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V41 tmp32 [V41 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V44 cse0 [V44,T06] ( 8, 4 ) ref -> rsi multi-def "CSE - aggressive"
+; V44 cse0 [V44,T07] ( 8, 4 ) ref -> rsi multi-def "CSE - aggressive"
;
; Lcl frame size = 24
-G_M6810_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M6810_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
@@ -75,7 +75,7 @@ G_M6810_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r1
; byrRegs +[rdi]
lea r14d, [rsi-0x01]
cmp r14d, esi
- jae G_M6810_IG14
+ jae G_M6810_IG15
;; size=13 bbWeight=1 PerfScore 1.75
G_M6810_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
mov eax, r14d
@@ -87,6 +87,7 @@ G_M6810_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi
; byrRegs -[rdi]
call [System.Text.UnicodeDebug:AssertIsValidScalar(uint)]
; byrRegs -[r15]
+ ; gcr arg pop 0
mov dword ptr [rbx], r13d
xor eax, eax
;; size=35 bbWeight=0.50 PerfScore 4.50
@@ -118,6 +119,7 @@ G_M6810_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
;; size=39 bbWeight=0.50 PerfScore 5.25
G_M6810_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A008 {rbx r13 r15}, byref
mov rdi, r13
@@ -129,36 +131,31 @@ G_M6810_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A008 {rbx r13
; byrRegs +[rcx]
call [<unknown method>]
; byrRegs -[rcx rdx rbx rdi r13 r15]
- jmp G_M6810_IG13
+ ; gcr arg pop 0
+ jmp G_M6810_IG14
;; size=23 bbWeight=0.50 PerfScore 3.00
-G_M6810_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
+G_M6810_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref
; byrRegs +[rbx rdi r15]
+ mov eax, 3
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M6810_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
dec r14d
cmp r14d, esi
- jae SHORT G_M6810_IG08
- mov eax, r14d
- cmp byte ptr [rdi+rax], -64
- jge SHORT G_M6810_IG10
- dec r14d
- cmp r14d, esi
- jae SHORT G_M6810_IG08
- mov eax, r14d
- cmp byte ptr [rdi+rax], -64
- jge SHORT G_M6810_IG10
- dec r14d
- cmp r14d, esi
- jae SHORT G_M6810_IG08
- mov eax, r14d
- cmp byte ptr [rdi+rax], -64
- jge SHORT G_M6810_IG10
- ;; size=51 bbWeight=0.50 PerfScore 8.62
-G_M6810_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+ jae SHORT G_M6810_IG09
+ mov ecx, r14d
+ cmp byte ptr [rdi+rcx], -64
+ jge SHORT G_M6810_IG11
+ dec eax
+ test eax, eax
+ jg SHORT G_M6810_IG08
+ ;; size=23 bbWeight=4 PerfScore 29.00
+G_M6810_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rdi]
mov dword ptr [rbx], 0xFFFD
mov dword ptr [r15], 1
mov eax, 3
;; size=18 bbWeight=0.50 PerfScore 1.12
-G_M6810_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M6810_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -168,16 +165,14 @@ G_M6810_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M6810_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, gcvars, byref, isz
+G_M6810_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, gcvars, byref, isz
; byrRegs +[rdi]
- cmp r14d, esi
- ja G_M6810_IG16
mov r13d, r14d
add r13, rdi
; byrRegs +[r13]
mov r12d, esi
sub r12d, r14d
- jns SHORT G_M6810_IG11
+ jns SHORT G_M6810_IG12
mov rdi, qword ptr [(reloc)] ; const ptr
; byrRegs -[rdi]
mov rsi, gword ptr [rdi]
@@ -186,11 +181,12 @@ G_M6810_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
- ;; size=42 bbWeight=0.50 PerfScore 5.25
-G_M6810_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A008 {rbx r13 r15}, byref, isz
+ ; gcr arg pop 0
+ ;; size=33 bbWeight=0.50 PerfScore 4.62
+G_M6810_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A008 {rbx r13 r15}, byref, isz
mov edi, r12d
test edi, edi
- jne SHORT G_M6810_IG12
+ jne SHORT G_M6810_IG13
mov rdi, qword ptr [(reloc)] ; const ptr
mov rdi, gword ptr [rdi]
; gcrRegs +[rdi]
@@ -199,8 +195,9 @@ G_M6810_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A008 {rbx r13
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
;; size=33 bbWeight=0.50 PerfScore 6.25
-G_M6810_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A008 {rbx r13 r15}, byref
+G_M6810_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A008 {rbx r13 r15}, byref, isz
mov rdi, r13
; byrRegs +[rdi]
mov esi, r12d
@@ -208,14 +205,15 @@ G_M6810_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A008 {rbx r13
lea rcx, [rbp-0x38]
call [<unknown method>]
; byrRegs -[rdi r13]
+ ; gcr arg pop 0
cmp dword ptr [rbp-0x38], r12d
- jne G_M6810_IG08
+ jne SHORT G_M6810_IG09
mov ecx, dword ptr [rbp-0x38]
mov dword ptr [r15], ecx
mov ecx, dword ptr [rbp-0x30]
mov dword ptr [rbx], ecx
- ;; size=41 bbWeight=0.50 PerfScore 5.75
-G_M6810_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=37 bbWeight=0.50 PerfScore 5.75
+G_M6810_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbx r15]
add rsp, 24
pop rbx
@@ -226,14 +224,14 @@ G_M6810_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M6810_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref
+G_M6810_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref
; byrRegs +[rbx r15]
mov dword ptr [rbx], 0xFFFD
xor eax, eax
mov dword ptr [r15], eax
mov eax, 2
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M6810_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M6810_IG16: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -243,13 +241,8 @@ G_M6810_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M6810_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rbx r15]
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
- int3
...
@@ -9,25 +9,25 @@
; 0 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T22] ( 18, 19 ) ref -> [rbp-0x68] this class-hnd EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V00 this [V00,T22] ( 18, 19 ) ref -> [rbp-0x58] this class-hnd EH-live single-def <System.Runtime.Caching.ExpiresBucket>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T29] ( 8, 7 ) ubyte -> [rbp-0x2C] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 12,132 ) ref -> [rbp-0x70] class-hnd <<unknown class>>
+; V04 loc1 [V04,T06] ( 8, 68 ) ref -> [rbp-0x60] class-hnd <<unknown class>>
; V05 loc2 [V05,T27] ( 3, 12 ) int -> rdi
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> [rbp-0x78] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> [rbp-0x68] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T14] ( 5, 35 ) int -> [rbp-0x30] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T33] ( 2, 5 ) ref -> rbx class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T05] ( 13, 71 ) ref -> [rbp-0x80] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T04] ( 13, 71 ) ref -> [rbp-0x70] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 4, 4 ) ubyte -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T25] ( 4, 13 ) int -> r13
;* V14 loc11 [V14,T34] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
; V15 loc12 [V15,T07] ( 7, 57 ) int -> r12
; V16 loc13 [V16,T08] ( 4, 52 ) int -> [rbp-0x3C]
; V17 loc14 [V17,T00] ( 6,148 ) int -> [rbp-0x40]
-; V18 loc15 [V18,T13] ( 8, 35 ) ref -> [rbp-0x88] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V18 loc15 [V18,T13] ( 8, 35 ) ref -> [rbp-0x78] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V19 loc16 [V19 ] ( 4, 3 ) ubyte -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V21 tmp1 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.Caching.ExpiresEntryRef>
@@ -45,7 +45,7 @@
; V33 tmp13 [V33,T30] ( 6, 6 ) ref -> rbx class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V34 tmp14 [V34,T21] ( 5, 20 ) long -> rbx single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V35 tmp15 [V35,T15] ( 5, 35 ) int -> [rbp-0x4C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V36 tmp16 [V36,T06] ( 13, 71 ) int -> rsi "field V09._ref (fldOffset=0x0)" P-INDEP
+; V36 tmp16 [V36,T05] ( 13, 71 ) int -> rsi "field V09._ref (fldOffset=0x0)" P-INDEP
; V37 tmp17 [V37,T18] ( 4, 24 ) int -> r15 "field V10._ref (fldOffset=0x0)" P-INDEP
; V38 tmp18 [V38,T16] ( 2, 32 ) int -> rdi "field V21._ref (fldOffset=0x0)" P-INDEP
; V39 tmp19 [V39,T17] ( 2, 32 ) int -> rdi "field V26._ref (fldOffset=0x0)" P-INDEP
@@ -55,10 +55,10 @@
; V43 tmp23 [V43,T11] ( 3, 48 ) ref -> rdi "arr expr"
; V44 PSPSym [V44,T35] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
; V45 cse0 [V45,T23] ( 3, 18 ) ref -> r15 "CSE - moderate"
-; V46 cse1 [V46,T24] ( 4, 16 ) byref -> rdi "CSE - moderate"
-; V47 cse2 [V47,T02] ( 6,128 ) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
-; V48 cse3 [V48,T12] ( 4, 44 ) int -> [rbp-0x5C] spill-single-def "CSE - moderate"
-; V49 cse4 [V49,T04] ( 6, 72 ) long -> rcx multi-def "CSE - aggressive"
+; V46 cse1 [V46,T01] ( 6,128 ) byref -> [rbp-0x80] spill-single-def "CSE - aggressive"
+; V47 cse2 [V47,T24] ( 4, 16 ) byref -> rdi "CSE - moderate"
+; V48 cse3 [V48,T12] ( 4, 44 ) int -> [rbp-0x50] spill-single-def "CSE - aggressive"
+; V49 cse4 [V49,T03] ( 6, 72 ) long -> rax multi-def "CSE - aggressive"
; V50 cse5 [V50,T20] ( 3, 24 ) int -> rax "CSE - moderate"
; V51 cse6 [V51,T28] ( 3, 12 ) int -> rdx "CSE - moderate"
;
@@ -77,7 +77,7 @@ G_M744_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
mov qword ptr [rbp-0x38], rax
mov qword ptr [rbp-0x48], rax
mov qword ptr [rbp-0x90], rsp
- mov gword ptr [rbp-0x68], rdi
+ mov gword ptr [rbp-0x58], rdi
; GC ptr vars +{V00}
mov dword ptr [rbp-0x2C], edx
mov rbx, rsi
@@ -125,7 +125,7 @@ G_M744_IG06: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
cmp byte ptr [rbp-0x2C], 0
je SHORT G_M744_IG07
mov rdi, qword ptr [(reloc)] ; const ptr
- mov rax, gword ptr [rbp-0x68]
+ mov rax, gword ptr [rbp-0x58]
; gcrRegs +[rax]
mov rdi, gword ptr [rax+rdi]
; gcrRegs +[rdi]
@@ -142,23 +142,23 @@ G_M744_IG06: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
;; size=53 bbWeight=1 PerfScore 21.50
G_M744_IG07: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
- mov rax, gword ptr [rbp-0x68]
+ mov rax, gword ptr [rbp-0x58]
; gcrRegs +[rax]
mov rdi, rax
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x80], rdi
+ mov gword ptr [rbp-0x70], rdi
; GC ptr vars +{V11}
xor esi, esi
mov dword ptr [rbp-0x38], esi
;; size=16 bbWeight=1 PerfScore 3.50
-G_M744_IG08: ; bbWeight=1, gcVars=0000000000400020 {V00 V11}, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, gcvars, byref
+G_M744_IG08: ; bbWeight=1, gcVars=0000000000400010 {V00 V11}, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
lea rsi, [rbp-0x38]
call [<unknown method>]
; gcrRegs -[rdi]
; gcr arg pop 0
mov rdi, qword ptr [(reloc)] ; const ptr
- mov r14, gword ptr [rbp-0x80]
+ mov r14, gword ptr [rbp-0x70]
; gcrRegs +[r14]
cmp dword ptr [r14+rdi], 0
je G_M744_IG21
@@ -202,7 +202,7 @@ G_M744_IG09: ; bbWeight=8, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, b
G_M744_IG10: ; bbWeight=4, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov ecx, dword ptr [rax+0x08]
- mov dword ptr [rbp-0x5C], ecx
+ mov dword ptr [rbp-0x50], ecx
test ecx, ecx
je G_M744_IG18
mov edi, dword ptr [rax+0x14]
@@ -216,56 +216,59 @@ G_M744_IG10: ; bbWeight=4, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {
;; size=38 bbWeight=4 PerfScore 38.00
G_M744_IG11: ; bbWeight=32, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x40], r8d
- mov r9d, r8d
- shl r9, 4
- mov qword ptr [rbp-0x58], r9
- mov r10, gword ptr [rax+r9+0x18]
+ mov edi, r8d
+ shl rdi, 4
+ mov gword ptr [rbp-0x60], rax
+ ; GC ptr vars +{V04}
+ lea r9, bword ptr [rax+rdi+0x10]
+ ; byrRegs +[r9]
+ mov bword ptr [rbp-0x80], r9
+ ; GC ptr vars +{V46}
+ mov r10, gword ptr [r9+0x08]
; gcrRegs +[r10]
- mov gword ptr [rbp-0x78], r10
+ mov gword ptr [rbp-0x68], r10
; GC ptr vars +{V06}
test r10, r10
je SHORT G_M744_IG14
- ;; size=29 bbWeight=32 PerfScore 224.00
-G_M744_IG12: ; bbWeight=16, gcVars=0000000000400028 {V00 V06 V11}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r10]
- mov gword ptr [rbp-0x70], rax
- ; GC ptr vars +{V04}
- mov rdi, qword ptr [rax+r9+0x10]
+ ;; size=37 bbWeight=32 PerfScore 288.00
+G_M744_IG12: ; bbWeight=16, gcVars=0000000000400056 {V00 V04 V06 V11 V46}, gcrefRegs=C000 {r14 r15}, byrefRegs=0200 {r9}, gcvars, byref, isz
+ ; gcrRegs -[rax r10]
+ mov rdi, qword ptr [r9]
mov rsi, rbx
call [<unknown method>]
- ; gcrRegs -[rax]
+ ; byrRegs -[r9]
; gcr arg pop 0
test eax, eax
je SHORT G_M744_IG19
- mov rax, gword ptr [rbp-0x70]
- ; gcrRegs +[rax]
- mov rcx, qword ptr [rbp-0x58]
- mov rsi, qword ptr [rax+rcx+0x10]
+ mov rax, bword ptr [rbp-0x80]
+ ; byrRegs +[rax]
+ mov rsi, qword ptr [rax]
mov rdi, r14
; gcrRegs +[rdi]
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V06 V46}
call [System.Runtime.Caching.ExpiresBucket:AddCount(System.DateTime):this]
- ; gcrRegs -[rax rdi]
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rax]
; gcr arg pop 0
- ;; size=44 bbWeight=16 PerfScore 236.00
+ ;; size=32 bbWeight=16 PerfScore 204.00
G_M744_IG13: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov edx, dword ptr [rbp-0x3C]
dec edx
mov dword ptr [rbp-0x3C], edx
- mov rax, gword ptr [rbp-0x70]
- ; gcrRegs +[rax]
je SHORT G_M744_IG15
- ;; size=14 bbWeight=16 PerfScore 68.00
-G_M744_IG14: ; bbWeight=32, gcVars=0000000000400020 {V00 V11}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V04}
+ ;; size=10 bbWeight=16 PerfScore 52.00
+G_M744_IG14: ; bbWeight=32, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rbp-0x40]
inc r8d
- mov ecx, dword ptr [rbp-0x5C]
+ mov ecx, dword ptr [rbp-0x50]
cmp ecx, r8d
+ mov rax, gword ptr [rbp-0x60]
+ ; gcrRegs +[rax]
jg SHORT G_M744_IG11
- ;; size=15 bbWeight=32 PerfScore 112.00
-G_M744_IG15: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=19 bbWeight=32 PerfScore 144.00
+G_M744_IG15: ; bbWeight=4, gcVars=0000000000400010 {V00 V11}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
+ ; GC ptr vars -{V04}
dec r13d
je SHORT G_M744_IG17
;; size=5 bbWeight=4 PerfScore 5.00
@@ -291,42 +294,43 @@ G_M744_IG18: ; bbWeight=0, gcVars=0000000000400000 {V00}, gcrefRegs=0000
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
;; size=6 bbWeight=0 PerfScore 0.00
-G_M744_IG19: ; bbWeight=16, gcVars=000000000040002A {V00 V04 V06 V11}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M744_IG19: ; bbWeight=16, gcVars=0000000000400056 {V00 V04 V06 V11 V46}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r14-r15]
- ; GC ptr vars +{V04 V05 V06 V11}
+ ; GC ptr vars +{V02 V04 V06 V11 V46}
mov rdi, qword ptr [(reloc)] ; const ptr
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x68]
; gcrRegs +[rax]
mov byte ptr [rax+rdi], 255
mov edi, dword ptr [r15+0x08]
mov rcx, qword ptr [(reloc)] ; const ptr
mov dword ptr [rax+rcx], edi
- mov rax, gword ptr [rbp-0x70]
- mov rdi, qword ptr [rbp-0x58]
- mov dword ptr [rax+rdi+0x14], 1
- mov ecx, dword ptr [rbp-0x4C]
- mov dword ptr [rax+rdi+0x10], ecx
+ mov rdi, bword ptr [rbp-0x80]
+ ; byrRegs +[rdi]
+ mov dword ptr [rdi+0x04], 1
+ mov eax, dword ptr [rbp-0x4C]
+ ; gcrRegs -[rax]
+ mov dword ptr [rdi], eax
mov edi, r12d
+ ; byrRegs -[rdi]
shl edi, 8
mov r8d, dword ptr [rbp-0x40]
- movzx rcx, r8b
- or edi, ecx
+ movzx rax, r8b
+ or edi, eax
mov dword ptr [rbp-0x4C], edi
mov edi, dword ptr [rbp-0x30]
inc edi
mov dword ptr [rbp-0x30], edi
- mov rcx, qword ptr [(reloc)] ; const ptr
- inc dword ptr [r14+rcx]
+ mov rax, qword ptr [(reloc)] ; const ptr
+ inc dword ptr [r14+rax]
mov dword ptr [rbp-0x40], r8d
- mov gword ptr [rbp-0x70], rax
jmp G_M744_IG13
- ;; size=103 bbWeight=16 PerfScore 456.00
+ ;; size=92 bbWeight=16 PerfScore 424.00
G_M744_IG20: ; bbWeight=1, gcVars=0000000000400000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax r14-r15]
- ; GC ptr vars -{V04 V05 V06 V11}
+ ; gcrRegs -[r14-r15]
...
@@ -4,44 +4,43 @@
; ReadyToRun compilation
; optimized code
; rbp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T05] ( 4, 4 ) struct (16) [rbp-0x48] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T04] ( 3, 3 ) byref -> rdi this single-def
+; V01 arg1 [V01,T02] ( 4, 4 ) struct (16) [rbp-0x48] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T01] ( 9, 12 ) int -> r13
+; V03 loc1 [V03,T05] ( 9, 4.75) int -> r13
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-; V07 tmp2 [V07 ] ( 4, 8 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V08 tmp3 [V08,T06] ( 3, 6 ) struct (16) [rbp-0x68] do-not-enreg[SAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Decimal>
-; V09 tmp4 [V09,T08] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
+; V07 tmp2 [V07 ] ( 4, 8 ) struct (16) [rbp-0x58] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
+; V08 tmp3 [V08,T03] ( 3, 6 ) struct (16) [rbp-0x68] do-not-enreg[SAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Decimal>
+; V09 tmp4 [V09,T07] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T16] ( 2, 1 ) int -> rax
-; V14 tmp9 [V14,T09] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T10] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> rdi "impAppendStmt"
+; V13 tmp8 [V13,T15] ( 2, 1 ) int -> rax
+; V14 tmp9 [V14,T08] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T09] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> rdi "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T17] ( 2, 1 ) int -> rax
-; V24 tmp19 [V24,T02] ( 9, 9 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp20 [V25,T03] ( 7, 8 ) int -> r14 "field V02._length (fldOffset=0x8)" P-INDEP
+; V23 tmp18 [V23,T16] ( 2, 1 ) int -> rax
+; V24 tmp19 [V24,T00] ( 11, 6.50) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp20 [V25,T06] ( 5, 3.50) int -> r14 "field V02._length (fldOffset=0x8)" P-INDEP
;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
; V28 tmp23 [V28 ] ( 3, 5 ) byref -> [rbp-0x58] do-not-enreg[X] addr-exposed ptr "field V07._reference (fldOffset=0x0)" P-DEP
; V29 tmp24 [V29 ] ( 3, 5 ) int -> [rbp-0x50] do-not-enreg[X] addr-exposed ptr "field V07._length (fldOffset=0x8)" P-DEP
; V30 GsCookie [V30 ] ( 1, 1 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V31 tmp26 [V31,T04] ( 11, 6 ) byref -> rbx single-def "shadowVar"
-; V32 cse0 [V32,T15] ( 3, 1.50) int -> rdi "CSE - moderate"
-; V33 cse1 [V33,T00] ( 4, 14 ) int -> rax "CSE - aggressive"
+; V31 tmp26 [V31,T01] ( 11, 6 ) byref -> rbx single-def "shadowVar"
+; V32 cse0 [V32,T14] ( 3, 1.50) int -> rdi "CSE - moderate"
;
; Lcl frame size = 80
@@ -53,13 +52,11 @@ G_M46478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 80
lea rbp, [rsp+0x70]
- xor eax, eax
- mov qword ptr [rbp-0x58], rax
mov rax, qword ptr [(reloc)]
mov qword ptr [rbp-0x28], rax
mov qword ptr [rbp-0x48], rsi
mov qword ptr [rbp-0x40], rdx
- ;; size=42 bbWeight=1 PerfScore 12.00
+ ;; size=36 bbWeight=1 PerfScore 10.75
G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
mov rbx, rdi
@@ -71,14 +68,12 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr
lea rsi, [rbp-0x38]
mov edx, 4
call [<unknown method>]
- ; gcr arg pop 0
mov r15, bword ptr [rbp-0x58]
; byrRegs +[r15]
mov r14d, dword ptr [rbp-0x50]
mov rdi, qword ptr [rbp-0x48]
mov rsi, qword ptr [rbp-0x40]
call [<unknown method>]
- ; gcr arg pop 0
mov qword ptr [rbp-0x68], rax
mov qword ptr [rbp-0x60], rdx
mov rdi, qword ptr [rbp-0x68]
@@ -88,32 +83,49 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr
mov ecx, r14d
call [<unknown method>]
; byrRegs -[rdx]
- ; gcr arg pop 0
mov r13d, 3
jmp SHORT G_M46478_IG04
;; size=87 bbWeight=1 PerfScore 22.58
-G_M46478_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
- mov r13d, eax
- test r13d, r13d
- jle SHORT G_M46478_IG05
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M46478_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
- lea eax, [r13-0x01]
- cmp eax, r14d
- jae G_M46478_IG17
- mov ecx, eax
- cmp dword ptr [r15+4*rcx], 0
+G_M46478_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ mov r13d, 2
+ jmp SHORT G_M46478_IG07
+ ;; size=8 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp r14d, 2
+ jbe G_M46478_IG23
+ cmp dword ptr [r15+0x08], 0
je SHORT G_M46478_IG03
- ;; size=22 bbWeight=4 PerfScore 24.00
-G_M46478_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
+G_M46478_IG05: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ jmp SHORT G_M46478_IG11
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ mov r13d, 1
+ jmp SHORT G_M46478_IG10
+ ;; size=8 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp dword ptr [r15+0x04], 0
+ je SHORT G_M46478_IG06
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG08: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ jmp SHORT G_M46478_IG11
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ xor r13d, r13d
+ jmp SHORT G_M46478_IG11
+ ;; size=5 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp dword ptr [r15], 0
+ je SHORT G_M46478_IG09
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
test r13d, r13d
- jne SHORT G_M46478_IG09
+ jne SHORT G_M46478_IG15
;; size=5 bbWeight=1 PerfScore 1.25
-G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[r15]
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
; byrRegs +[rax]
- ; gcr arg pop 0
mov rsi, gword ptr [rax+0x50]
; gcrRegs +[rsi]
add rsi, 8
@@ -128,15 +140,14 @@ G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
; byrRegs -[rdi]
mov rdi, qword ptr [rdi]
cmp qword ptr [rbp-0x28], rdi
- je SHORT G_M46478_IG07
+ je SHORT G_M46478_IG13
call [CORINFO_HELP_FAIL_FAST]
; byrRegs -[rsi]
- ; gcr arg pop 0
;; size=47 bbWeight=0.50 PerfScore 9.00
-G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 80
pop rbx
pop r13
@@ -145,17 +156,17 @@ G_M46478_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M46478_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
; byrRegs +[rbx r15]
cmp r13d, 1
- jne SHORT G_M46478_IG12
+ jne SHORT G_M46478_IG18
mov edi, dword ptr [r15]
test edi, edi
- jle SHORT G_M46478_IG12
+ jle SHORT G_M46478_IG18
mov dword ptr [rbx+0x08], edi
mov edi, dword ptr [rbx+0x08]
cmp r14d, 3
- jbe G_M46478_IG17
+ jbe G_M46478_IG23
mov eax, -1
mov ecx, 1
test dword ptr [r15+0x0C], 0xD1FFAB1E
@@ -169,15 +180,14 @@ G_M46478_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[rdi]
mov rdi, qword ptr [rdi]
cmp qword ptr [rbp-0x28], rdi
- je SHORT G_M46478_IG10
+ je SHORT G_M46478_IG16
call [CORINFO_HELP_FAIL_FAST]
; byrRegs -[rbx r15]
- ; gcr arg pop 0
;; size=83 bbWeight=0.50 PerfScore 12.62
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 80
pop rbx
pop r13
@@ -186,12 +196,11 @@ G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
+G_M46478_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
; byrRegs +[rbx r15]
movsxd rdi, r13d
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcrRegs +[rax]
- ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
mov rdi, rbx
@@ -203,35 +212,31 @@ G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rax]
mov ecx, dword ptr [r15]
cmp dword ptr [rax+0x08], 0
- jbe G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [rax+0x10], ecx
cmp r13d, 1
- jle SHORT G_M46478_IG13
+ jle SHORT G_M46478_IG19
mov rax, gword ptr [rbx]
- cmp r14d, 1
- jbe SHORT G_M46478_IG17
mov ecx, dword ptr [r15+0x04]
cmp dword ptr [rax+0x08], 1
...
@@ -10,70 +10,69 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <ILCompiler.DevirtualizationManager>
; V01 arg1 [V01,T00] ( 21, 26 ) ref -> rbx class-hnd <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T16] ( 14, 8 ) ref -> r15 class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T19] ( 8, 5.50) byref -> r14 single-def
+; V02 arg2 [V02,T17] ( 14, 8 ) ref -> r15 class-hnd single-def <Internal.TypeSystem.DefType>
+; V03 arg3 [V03,T20] ( 8, 5.50) byref -> r14 single-def
; V04 loc0 [V04,T22] ( 11, 5.50) ref -> r12 class-hnd <Internal.TypeSystem.MethodDesc>
; V05 loc1 [V05,T23] ( 3, 5 ) ref -> r12 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> [rbp-0x2C]
-; V07 loc3 [V07,T20] ( 4, 7 ) ref -> [rbp-0x58] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> [rbp-0x50] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> [rbp-0x30]
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [rbp-0x60] class-hnd spill-single-def <Internal.TypeSystem.DefType>
-; V10 loc6 [V10,T28] ( 6, 4.50) ref -> [rbp-0x68] class-hnd <Internal.TypeSystem.MethodDesc>
-; V11 loc7 [V11,T24] ( 3, 5 ) ref -> [rbp-0x70] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [rbp-0x58] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V10 loc6 [V10,T28] ( 6, 4.50) ref -> [rbp-0x60] class-hnd <Internal.TypeSystem.MethodDesc>
+; V11 loc7 [V11,T24] ( 3, 5 ) ref -> [rbp-0x68] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> [rbp-0x34]
-; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [rbp-0x78] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [rbp-0x70] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T46] ( 3, 1.50) int -> rax single-def
+; V15 loc11 [V15,T45] ( 3, 1.50) int -> rax single-def
; V16 loc12 [V16,T03] ( 10, 20 ) ref -> r12 class-hnd <Internal.TypeSystem.TypeDesc>
;* V17 loc13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;* V18 loc14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
-; V21 tmp2 [V21,T34] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1"
-; V22 tmp3 [V22,T47] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V23 tmp4 [V23,T31] ( 5, 3.75) ref -> registers class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V21 tmp2 [V21,T33] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1"
+; V22 tmp3 [V22,T46] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
+; V23 tmp4 [V23,T30] ( 5, 3.75) ref -> registers class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
; V24 tmp5 [V24,T25] ( 3, 5 ) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V25 tmp6 [V25,T35] ( 3, 2 ) int -> rcx "Inline return value spill temp"
-; V26 tmp7 [V26,T33] ( 3, 2.50) int -> rcx single-def "Inline stloc first use temp"
-; V27 tmp8 [V27,T42] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V25 tmp6 [V25,T34] ( 3, 2 ) int -> rcx "Inline return value spill temp"
+; V26 tmp7 [V26,T32] ( 3, 2.50) int -> rcx single-def "Inline stloc first use temp"
+; V27 tmp8 [V27,T41] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V29 tmp10 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
-; V30 tmp11 [V30,T17] ( 5, 10 ) ref -> [rbp-0x80] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V31 tmp12 [V31,T30] ( 2, 4 ) ref -> rcx class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T18] ( 5, 10 ) ref -> [rbp-0x78] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V31 tmp12 [V31,T29] ( 2, 4 ) ref -> rcx class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp14 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V34 tmp15 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp16 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V36 tmp17 [V36,T43] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V36 tmp17 [V36,T42] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V38 tmp19 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V39 tmp20 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V40 tmp21 [V40 ] ( 0, 0 ) int -> zero-ref
-; V41 tmp22 [V41,T02] ( 3, 24 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V41 tmp22 [V41,T02] ( 3, 24 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V42 tmp23 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V43 tmp24 [V43 ] ( 0, 0 ) int -> zero-ref
-; V44 tmp25 [V44,T36] ( 2, 2 ) ref -> rax single-def "Single return block return value"
-; V45 tmp26 [V45,T09] ( 2, 16 ) ref -> [rbp-0x98] spill-single-def "argument with side effect"
+; V44 tmp25 [V44,T35] ( 2, 2 ) ref -> rax single-def "Single return block return value"
+; V45 tmp26 [V45,T09] ( 2, 16 ) ref -> [rbp-0x90] spill-single-def "argument with side effect"
; V46 tmp27 [V46,T10] ( 2, 16 ) ref -> rsi "argument with side effect"
-; V47 tmp28 [V47,T37] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V48 tmp29 [V48,T38] ( 2, 2 ) ref -> [rbp-0xA0] spill-single-def "argument with side effect"
-; V49 tmp30 [V49,T39] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V50 tmp31 [V50,T32] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V51 tmp32 [V51,T40] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [rbp-0xA8] spill-single-def "argument with side effect"
+; V47 tmp28 [V47,T36] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V48 tmp29 [V48,T37] ( 2, 2 ) ref -> [rbp-0x98] spill-single-def "argument with side effect"
+; V49 tmp30 [V49,T38] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V50 tmp31 [V50,T31] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V51 tmp32 [V51,T39] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [rbp-0xA0] spill-single-def "argument with side effect"
; V53 tmp34 [V53,T12] ( 2, 16 ) ref -> rsi "argument with side effect"
;* V54 tmp35 [V54 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V55 tmp36 [V55,T41] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V55 tmp36 [V55,T40] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
; V56 tmp37 [V56,T13] ( 2, 16 ) ref -> rsi "argument with side effect"
-; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [rbp-0xB0] spill-single-def "argument with side effect"
+; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [rbp-0xA8] spill-single-def "argument with side effect"
; V58 tmp39 [V58,T15] ( 2, 16 ) ref -> rsi "argument with side effect"
-; V59 tmp40 [V59,T18] ( 2, 8 ) ref -> rsi "argument with side effect"
+; V59 tmp40 [V59,T19] ( 2, 8 ) ref -> rsi "argument with side effect"
; V60 cse0 [V60,T06] ( 10, 18 ) long -> r13 "CSE - aggressive"
-; V61 cse1 [V61,T29] ( 2, 4.50) long -> [rbp-0x48] spill-single-def hoist "CSE - moderate"
-; V62 cse2 [V62,T44] ( 3, 1.50) ref -> r12 "CSE - conservative"
-; V63 cse3 [V63,T45] ( 3, 1.50) ref -> rcx "CSE - conservative"
-; V64 cse4 [V64,T26] ( 3, 5 ) int -> [rbp-0x4C] spill-single-def "CSE - moderate"
-; V65 cse5 [V65,T27] ( 3, 5 ) int -> [rbp-0x50] spill-single-def "CSE - moderate"
+; V61 cse1 [V61,T43] ( 3, 1.50) ref -> r12 "CSE - conservative"
+; V62 cse2 [V62,T44] ( 3, 1.50) ref -> rcx "CSE - conservative"
+; V63 cse3 [V63,T26] ( 3, 5 ) int -> [rbp-0x44] spill-single-def "CSE - moderate"
+; V64 cse4 [V64,T27] ( 3, 5 ) int -> [rbp-0x48] spill-single-def "CSE - moderate"
;
; Lcl frame size = 136
@@ -199,32 +198,31 @@ G_M48343_IG11: ; bbWeight=0.50, gcrefRegs=900A {rcx rbx r12 r15}, byrefRe
; gcrRegs -[rax]
mov rax, rcx
; gcrRegs +[rax]
- mov gword ptr [rbp-0x58], rax
+ mov gword ptr [rbp-0x50], rax
; GC ptr vars +{V07}
xor ecx, ecx
; gcrRegs -[rcx]
mov edx, dword ptr [r12+0x08]
- mov dword ptr [rbp-0x4C], edx
+ mov dword ptr [rbp-0x44], edx
test edx, edx
jle G_M48343_IG16
- mov rdi, qword ptr [rax]
- mov rsi, qword ptr [rdi+0x58]
- mov qword ptr [rbp-0x48], rsi
- ;; size=36 bbWeight=0.50 PerfScore 5.38
-G_M48343_IG12: ; bbWeight=4, gcVars=0000000000100000 {V07}, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
+ ;; size=25 bbWeight=0.50 PerfScore 2.88
+G_M48343_IG12: ; bbWeight=4, gcVars=0000000000010000 {V07}, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
mov dword ptr [rbp-0x30], ecx
mov edi, ecx
- mov r8, gword ptr [r12+8*rdi+0x10]
- ; gcrRegs +[r8]
- mov gword ptr [rbp-0x60], r8
+ mov rsi, gword ptr [r12+8*rdi+0x10]
+ ; gcrRegs +[rsi]
+ mov gword ptr [rbp-0x58], rsi
; GC ptr vars +{V09}
mov rdi, rax
; gcrRegs +[rdi]
- call [rsi+0x20]<unknown method>
- ; gcrRegs -[rdi r8]
- mov gword ptr [rbp-0xA8], rax
+ mov r8, qword ptr [rax]
+ mov r8, qword ptr [r8+0x58]
+ call [r8+0x20]<unknown method>
+ ; gcrRegs -[rsi rdi]
+ mov gword ptr [rbp-0xA0], rax
; GC ptr vars +{V52}
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x58]
; gcrRegs +[rdi]
mov rcx, qword ptr [rdi]
mov rcx, qword ptr [rcx+0x58]
@@ -232,29 +230,29 @@ G_M48343_IG12: ; bbWeight=4, gcVars=0000000000100000 {V07}, gcrefRegs=900
; gcrRegs -[rdi]
mov rsi, rax
; gcrRegs +[rsi]
- mov rdi, gword ptr [rbp-0xA8]
+ mov rdi, gword ptr [rbp-0xA0]
; gcrRegs +[rdi]
; GC ptr vars -{V52}
call [Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte]
; gcrRegs -[rax rsi rdi]
test eax, eax
je SHORT G_M48343_IG15
- ;; size=61 bbWeight=4 PerfScore 88.00
+ ;; size=69 bbWeight=4 PerfScore 104.00
G_M48343_IG13: ; bbWeight=2, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=4000 {r14}, byref, isz
- mov rax, gword ptr [rbp-0x60]
+ mov rax, gword ptr [rbp-0x58]
; gcrRegs +[rax]
mov rcx, gword ptr [rax+0x08]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x80], rcx
+ mov gword ptr [rbp-0x78], rcx
; GC ptr vars +{V30}
mov edi, 1
call [<unknown method>]
; gcrRegs -[rax rcx]
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x78]
; gcrRegs +[rax]
test rax, rax
jne SHORT G_M48343_IG14
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x58]
; gcrRegs +[rdi]
xor esi, esi
mov rax, qword ptr [rdi]
@@ -263,9 +261,9 @@ G_M48343_IG13: ; bbWeight=2, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=4000
; GC ptr vars -{V30}
call [rax+0x28]<unknown method>
; gcrRegs -[rdi] +[rax]
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x58]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x80], rax
+ mov gword ptr [rbp-0x78], rax
; GC ptr vars +{V30}
mov rdx, rax
; gcrRegs +[rdx]
@@ -273,14 +271,14 @@ G_M48343_IG13: ; bbWeight=2, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=4000
; GC ptr vars -{V09}
call [Internal.TypeSystem.TypeDesc:SetCachedCanonValue(int,Internal.TypeSystem.TypeDesc):this]
; gcrRegs -[rax rdx rdi]
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x78]
; gcrRegs +[rax]
;; size=71 bbWeight=2 PerfScore 48.50
-G_M48343_IG14: ; bbWeight=2, gcVars=0000000000100000 {V07}, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M48343_IG14: ; bbWeight=2, gcVars=0000000000010000 {V07}, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
; GC ptr vars -{V30}
mov rdi, rax
; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x58]
+ mov rsi, gword ptr [rbp-0x50]
; gcrRegs +[rsi]
call [Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte]
; gcrRegs -[rax rsi rdi]
@@ -295,13 +293,12 @@ G_M48343_IG14: ; bbWeight=2, gcVars=0000000000100000 {V07}, gcrefRegs=900
G_M48343_IG15: ; bbWeight=4, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=4000 {r14}, byref
mov ecx, dword ptr [rbp-0x30]
inc ecx
- mov edi, dword ptr [rbp-0x4C]
+ mov edi, dword ptr [rbp-0x44]
cmp edi, ecx
- mov rax, gword ptr [rbp-0x58]
+ mov rax, gword ptr [rbp-0x50]
; gcrRegs +[rax]
- mov rsi, qword ptr [rbp-0x48]
jg G_M48343_IG12
- ;; size=24 bbWeight=4 PerfScore 22.00
+ ;; size=20 bbWeight=4 PerfScore 18.00
G_M48343_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
; gcrRegs -[rax r12]
; GC ptr vars -{V07}
@@ -355,7 +352,7 @@ G_M48343_IG19: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=4
; byrRegs +[r14]
xor rax, rax
; gcrRegs +[rax]
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x60], rax
; GC ptr vars +{V10}
mov rcx, gword ptr [r15+0x18]
; gcrRegs +[rcx]
@@ -374,11 +371,11 @@ G_M48343_IG20: ; bbWeight=0.50, gcrefRegs=900A {rcx rbx r12 r15}, byrefRe
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M48343_IG21: ; bbWeight=0.50, gcrefRegs=9009 {rax rbx r12 r15}, byrefRegs=4000 {r14}, byref
; gcrRegs -[rcx]
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0x68], rax
; GC ptr vars +{V11}
...
@@ -12,14 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T30] ( 8, 7 ) ubyte -> [rbp-0x2C] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 11,116 ) ref -> [rbp-0x60] class-hnd <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 68 ) ref -> [rbp-0x60] class-hnd <<unknown class>>
; V05 loc2 [V05,T28] ( 3, 12 ) int -> rsi
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> registers class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> registers class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T14] ( 5, 35 ) int -> [rbp-0x30] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T38] ( 2, 5 ) ref -> rbx class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T04] ( 16, 74 ) ref -> [rbp-0x68] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T03] ( 16, 74 ) ref -> [rbp-0x68] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 6, 6 ) ubyte -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T26] ( 4, 13 ) int -> rbx
;* V14 loc11 [V14,T47] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
@@ -59,7 +59,7 @@
; V48 tmp28 [V48,T32] ( 6, 6 ) ref -> rbx class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V49 tmp29 [V49,T31] ( 5, 5 ) long -> rbx single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V50 tmp30 [V50,T15] ( 5, 35 ) int -> [rbp-0x4C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V51 tmp31 [V51,T05] ( 13, 71 ) int -> rsi "field V09._ref (fldOffset=0x0)" P-INDEP
+; V51 tmp31 [V51,T04] ( 13, 71 ) int -> rsi "field V09._ref (fldOffset=0x0)" P-INDEP
; V52 tmp32 [V52,T20] ( 4, 24 ) int -> r15 "field V10._ref (fldOffset=0x0)" P-INDEP
; V53 tmp33 [V53,T16] ( 2, 32 ) int -> rdi "field V21._ref (fldOffset=0x0)" P-INDEP
;* V54 tmp34 [V54 ] ( 0, 0 ) long -> zero-ref single-def "field V26._dateData (fldOffset=0x0)" P-INDEP
@@ -77,13 +77,13 @@
; V66 tmp46 [V66,T10] ( 3, 48 ) ref -> rdi "arr expr"
; V67 PSPSym [V67,T50] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
;* V68 cse0 [V68,T51] ( 0, 0 ) long -> zero-ref "CSE - moderate"
-; V69 cse1 [V69,T25] ( 4, 16 ) byref -> rsi "CSE - moderate"
-; V70 cse2 [V70,T11] ( 3, 48 ) long -> rdi "CSE - moderate"
-; V71 cse3 [V71,T02] ( 5,112 ) long -> r9 "CSE - aggressive"
+; V69 cse1 [V69,T11] ( 3, 48 ) long -> rdi "CSE - moderate"
+; V70 cse2 [V70,T01] ( 5,112 ) byref -> r9 "CSE - aggressive"
+; V71 cse3 [V71,T25] ( 4, 16 ) byref -> rsi "CSE - moderate"
; V72 cse4 [V72,T23] ( 4, 19 ) long -> r15 "CSE - moderate"
; V73 cse5 [V73,T45] ( 3, 3 ) ref -> rcx "CSE - conservative"
; V74 cse6 [V74,T46] ( 3, 3 ) ref -> rdi "CSE - conservative"
-; V75 cse7 [V75,T12] ( 4, 44 ) int -> [rbp-0x50] spill-single-def "CSE - moderate"
+; V75 cse7 [V75,T12] ( 4, 44 ) int -> [rbp-0x50] spill-single-def "CSE - aggressive"
; V76 cse8 [V76,T24] ( 3, 18 ) long -> r14 "CSE - moderate"
; V77 cse9 [V77,T22] ( 3, 24 ) int -> rax "CSE - moderate"
; V78 cse10 [V78,T29] ( 3, 12 ) int -> rcx "CSE - moderate"
@@ -197,7 +197,7 @@ G_M744_IG10: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
xor esi, esi
mov dword ptr [rbp-0x38], esi
;; size=12 bbWeight=1 PerfScore 2.50
-G_M744_IG11: ; bbWeight=1, gcVars=0000000000080010 {V00 V11}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG11: ; bbWeight=1, gcVars=0000000000080008 {V00 V11}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi]
cmp byte ptr [rbp-0x38], 0
je SHORT G_M744_IG14
@@ -213,9 +213,9 @@ G_M744_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M744_IG14: ; bbWeight=1, gcVars=0000000000080010 {V00 V11}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG14: ; bbWeight=1, gcVars=0000000000080008 {V00 V11}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r13]
- ; GC ptr vars +{V04 V11}
+ ; GC ptr vars +{V11}
lea rsi, [rbp-0x38]
mov rdi, r13
; gcrRegs +[rdi]
@@ -305,18 +305,22 @@ G_M744_IG19: ; bbWeight=4, gcrefRegs=2001 {rax r13}, byrefRegs=0000 {}, b
cmp ecx, 1
jle G_M744_IG25
;; size=42 bbWeight=4 PerfScore 38.00
-G_M744_IG20: ; bbWeight=32, gcrefRegs=2001 {rax r13}, byrefRegs=0000 {}, byref
+G_M744_IG20: ; bbWeight=32, gcrefRegs=2001 {rax r13}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x40], r8d
- mov r9d, r8d
- shl r9, 4
- mov rsi, gword ptr [rax+r9+0x18]
+ mov esi, r8d
+ shl rsi, 4
+ mov gword ptr [rbp-0x60], rax
+ ; GC ptr vars +{V04}
+ lea r9, bword ptr [rax+rsi+0x10]
+ ; byrRegs +[r9]
+ mov rsi, gword ptr [r9+0x08]
; gcrRegs +[rsi]
test rsi, rsi
- je G_M744_IG24
- ;; size=25 bbWeight=32 PerfScore 160.00
-G_M744_IG21: ; bbWeight=16, gcrefRegs=2041 {rax rsi r13}, byrefRegs=0000 {}, byref, isz
- mov gword ptr [rbp-0x60], rax
- mov rdi, qword ptr [rax+r9+0x10]
+ je SHORT G_M744_IG24
+ ;; size=29 bbWeight=32 PerfScore 224.00
+G_M744_IG21: ; bbWeight=16, gcVars=0000000000080028 {V00 V04 V11}, gcrefRegs=2040 {rsi r13}, byrefRegs=0200 {r9}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ mov rdi, qword ptr [r9]
mov r10, rdi
mov r11, 0xD1FFAB1E
and r10, r11
@@ -327,20 +331,20 @@ G_M744_IG21: ; bbWeight=16, gcrefRegs=2041 {rax rsi r13}, byrefRegs=0000
mov rdi, r13
; gcrRegs +[rdi]
call [System.Runtime.Caching.ExpiresBucket:AddCount(System.DateTime):this]
- ; gcrRegs -[rax rdi]
+ ; gcrRegs -[rdi]
+ ; byrRegs -[r9]
; gcr arg pop 0
jmp SHORT G_M744_IG23
- ;; size=44 bbWeight=16 PerfScore 168.00
-G_M744_IG22: ; bbWeight=16, gcrefRegs=2040 {rsi r13}, byrefRegs=0000 {}, byref
+ ;; size=38 bbWeight=16 PerfScore 152.00
+G_M744_IG22: ; bbWeight=16, gcrefRegs=2040 {rsi r13}, byrefRegs=0200 {r9}, byref
; gcrRegs +[rsi]
+ ; byrRegs +[r9]
mov byte ptr [rsi+0x30], 255
mov edi, dword ptr [r14]
mov dword ptr [rsi+0x50], edi
- mov rax, gword ptr [rbp-0x60]
- ; gcrRegs +[rax]
- mov dword ptr [rax+r9+0x14], 1
+ mov dword ptr [r9+0x04], 1
mov edi, dword ptr [rbp-0x4C]
- mov dword ptr [rax+r9+0x10], edi
+ mov dword ptr [r9], edi
mov edi, r12d
shl edi, 8
mov r8d, dword ptr [rbp-0x40]
@@ -353,27 +357,26 @@ G_M744_IG22: ; bbWeight=16, gcrefRegs=2040 {rsi r13}, byrefRegs=0000 {},
mov dword ptr [rbp-0x30], edi
inc dword ptr [r13+0x28]
mov dword ptr [rbp-0x40], r8d
- mov gword ptr [rbp-0x60], rax
- ;; size=70 bbWeight=16 PerfScore 296.00
+ ;; size=59 bbWeight=16 PerfScore 264.00
G_M744_IG23: ; bbWeight=16, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+ ; byrRegs -[r9]
mov edx, dword ptr [rbp-0x3C]
dec edx
mov dword ptr [rbp-0x3C], edx
- mov rax, gword ptr [rbp-0x60]
- ; gcrRegs +[rax]
je SHORT G_M744_IG25
- ;; size=14 bbWeight=16 PerfScore 68.00
-G_M744_IG24: ; bbWeight=32, gcVars=0000000000080010 {V00 V11}, gcrefRegs=2001 {rax r13}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V04}
+ ;; size=10 bbWeight=16 PerfScore 52.00
+G_M744_IG24: ; bbWeight=32, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [rbp-0x40]
inc r8d
mov ecx, dword ptr [rbp-0x50]
cmp ecx, r8d
+ mov rax, gword ptr [rbp-0x60]
+ ; gcrRegs +[rax]
jg G_M744_IG20
- ;; size=19 bbWeight=32 PerfScore 112.00
-G_M744_IG25: ; bbWeight=4, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+ ;; size=23 bbWeight=32 PerfScore 144.00
+G_M744_IG25: ; bbWeight=4, gcVars=0000000000080008 {V00 V11}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
+ ; GC ptr vars -{V04}
dec ebx
je SHORT G_M744_IG27
;; size=4 bbWeight=4 PerfScore 5.00
@@ -807,7 +810,7 @@ G_M744_IG69: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1450, prolog size 46, PerfScore 1580.50, instruction count 430, allocated bytes for code 1450 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1437, prolog size 46, PerfScore 1612.50, instruction count 429, allocated bytes for code 1437 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -3,48 +3,48 @@
; FullOpts code
; optimized code
; rbp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T05] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
+; V01 arg1 [V01,T03] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> r14
+; V03 loc1 [V03,T04] ( 9, 4.75) int -> r14
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T06] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T12] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T11] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T19] ( 2, 1 ) int -> rdi
-; V14 tmp9 [V14,T07] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T13] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T08] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T14] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T15] ( 2, 2 ) int -> rsi "impAppendStmt"
+; V13 tmp8 [V13,T18] ( 2, 1 ) int -> rdi
+; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T12] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T14] ( 2, 2 ) int -> rsi "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T20] ( 2, 1 ) int -> rdi
+; V23 tmp18 [V23,T19] ( 2, 1 ) int -> rdi
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [rbp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T10] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
+; V25 tmp20 [V25,T09] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T21] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T11] ( 2, 2 ) byref -> r15 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T22] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> r15 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,13 +53,12 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T16] ( 2, 2 ) int -> rdi "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T17] ( 2, 2 ) int -> rsi "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T09] ( 3, 3 ) long -> rax "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T15] ( 2, 2 ) int -> rdi "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T16] ( 2, 2 ) int -> rsi "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T08] ( 3, 3 ) long -> rax "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 tmp44 [V49,T03] ( 11, 6 ) byref -> rbx single-def "shadowVar"
-; V50 cse0 [V50,T18] ( 3, 1.50) int -> rsi "CSE - moderate"
-; V51 cse1 [V51,T00] ( 4, 14 ) int -> rdi "CSE - aggressive"
+; V49 tmp44 [V49,T01] ( 11, 6 ) byref -> rbx single-def "shadowVar"
+; V50 cse0 [V50,T17] ( 3, 1.50) int -> rsi "CSE - moderate"
;
; Lcl frame size = 56
@@ -93,7 +92,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r1
lea rdi, [rbp-0x50]
mov edx, 2
call [<unknown method>]
- ; gcr arg pop 0
;; size=22 bbWeight=0.50 PerfScore 2.25
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
mov edi, dword ptr [rbp-0x50]
@@ -107,29 +105,46 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15},
mov r14d, 3
jmp SHORT G_M46478_IG06
;; size=37 bbWeight=1 PerfScore 9.75
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
- mov r14d, edi
- test r14d, r14d
- jle SHORT G_M46478_IG07
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
- lea edi, [r14-0x01]
- cmp edi, 4
- jae G_M46478_IG20
- mov esi, edi
- cmp dword ptr [r15+4*rsi], 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ mov r14d, 2
+ jmp SHORT G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp dword ptr [r15+0x08], 0
je SHORT G_M46478_IG05
- ;; size=22 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ mov r14d, 1
+ jmp SHORT G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp dword ptr [r15+0x04], 0
+ je SHORT G_M46478_IG08
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ xor r14d, r14d
+ jmp SHORT G_M46478_IG13
+ ;; size=5 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp dword ptr [r15], 0
+ je SHORT G_M46478_IG11
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
test r14d, r14d
- jne SHORT G_M46478_IG12
+ jne SHORT G_M46478_IG18
;; size=5 bbWeight=1 PerfScore 1.25
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs -[r15]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M46478_IG21
+ je G_M46478_IG27
;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rdi, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
@@ -144,15 +159,14 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
mov rdi, 0xD1FFAB1E
; byrRegs -[rdi]
cmp qword ptr [rbp-0x20], rdi
- je SHORT G_M46478_IG10
+ je SHORT G_M46478_IG16
call CORINFO_HELP_FAIL_FAST
; byrRegs -[rsi]
- ; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 4.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop r14
@@ -160,13 +174,13 @@ G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
+G_M46478_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
; byrRegs +[rbx r15]
cmp r14d, 1
- jne SHORT G_M46478_IG15
+ jne SHORT G_M46478_IG21
mov esi, dword ptr [r15]
test esi, esi
- jle SHORT G_M46478_IG15
+ jle SHORT G_M46478_IG21
mov dword ptr [rbx+0x08], esi
mov esi, dword ptr [rbx+0x08]
mov edi, -1
@@ -180,16 +194,15 @@ G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov gword ptr [rbx], rsi
mov rdi, 0xD1FFAB1E
cmp qword ptr [rbp-0x20], rdi
- je SHORT G_M46478_IG13
+ je SHORT G_M46478_IG19
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[rsi]
; byrRegs -[rbx r15]
- ; gcr arg pop 0
;; size=72 bbWeight=0.50 PerfScore 9.88
-G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop r14
@@ -197,13 +210,12 @@ G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
; byrRegs +[rbx r15]
movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
- ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
mov rdi, rbx
@@ -215,28 +227,28 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rdi]
mov esi, dword ptr [r15]
cmp dword ptr [rdi+0x08], 0
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rdi+0x10], esi
cmp r14d, 1
- jle SHORT G_M46478_IG16
+ jle SHORT G_M46478_IG22
mov rdi, gword ptr [rbx]
mov esi, dword ptr [r15+0x04]
cmp dword ptr [rdi+0x08], 1
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rdi+0x14], esi
;; size=66 bbWeight=0.50 PerfScore 11.12
-G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M46478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
; gcrRegs -[rdi]
cmp r14d, 2
...
@@ -4,34 +4,34 @@
; optimized code
; optimized using Dynamic PGO
; rbp based frame
-; partially interruptible
+; fully interruptible
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 13
; 3 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T02] ( 7, 3 ) byref -> rbx single-def
-; V02 arg2 [V02,T03] ( 7, 3 ) byref -> r15 single-def
-; V03 loc0 [V03,T00] ( 20, 7.88) int -> r14
-; V04 loc1 [V04,T06] ( 5, 2.92) int -> r13
-; V05 loc2 [V05,T13] ( 2, 0.62) int -> rax
+; V01 arg1 [V01,T04] ( 7, 3 ) byref -> rbx single-def
+; V02 arg2 [V02,T05] ( 7, 3 ) byref -> r15 single-def
+; V03 loc0 [V03,T00] ( 11, 9.69) int -> r14
+; V04 loc1 [V04,T07] ( 5, 2.92) int -> r13
+; V05 loc2 [V05,T14] ( 2, 0.62) int -> rax
; V06 loc3 [V06 ] ( 2, 0.62) struct ( 8) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op <System.Text.Rune>
; V07 loc4 [V07 ] ( 3, 1.00) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
-;* V08 loc5 [V08,T14] ( 0, 0 ) int -> zero-ref
+; V08 loc5 [V08,T03] ( 4, 5.23) int -> rax
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V12 tmp3 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V13 tmp4 [V13,T09] ( 3, 0.92) int -> r12 "Inlining Arg"
-; V14 tmp5 [V14,T12] ( 2, 0.62) byref -> r13 single-def "Inlining Arg"
+; V13 tmp4 [V13,T10] ( 3, 0.92) int -> r12 "Inlining Arg"
+; V14 tmp5 [V14,T13] ( 2, 0.62) byref -> r13 single-def "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V16 tmp7 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V17 tmp8 [V17,T05] ( 5, 3.85) int -> r12 "Inlining Arg"
-; V18 tmp9 [V18,T08] ( 2, 1.54) byref -> r13 "Inlining Arg"
+; V17 tmp8 [V17,T06] ( 5, 3.85) int -> r12 "Inlining Arg"
+; V18 tmp9 [V18,T09] ( 2, 1.54) byref -> r13 "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
-; V20 tmp11 [V20,T07] ( 3, 1.54) int -> rax "Single return block return value"
-; V21 tmp12 [V21,T04] ( 7, 2.95) byref -> rdi "field V00._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp13 [V22,T01] ( 9, 4.92) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+; V20 tmp11 [V20,T08] ( 3, 1.54) int -> rax "Single return block return value"
+; V21 tmp12 [V21,T02] ( 5, 3.77) byref -> rdi "field V00._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp13 [V22,T01] ( 6, 5.00) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
; V23 tmp14 [V23 ] ( 2, 0.62) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._value (fldOffset=0x0)" P-DEP
;* V24 tmp15 [V24 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
@@ -39,14 +39,14 @@
; V27 tmp18 [V27,T16] ( 2, 0.31) byref -> rdi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
; V28 tmp19 [V28,T18] ( 2, 0.31) int -> rsi "field V12._length (fldOffset=0x8)" P-INDEP
;* V29 tmp20 [V29,T15] ( 0, 0 ) int -> zero-ref "field V15._value (fldOffset=0x0)" P-INDEP
-; V30 tmp21 [V30,T10] ( 2, 0.77) byref -> r13 "field V16._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp22 [V31,T11] ( 2, 0.77) int -> rdi "field V16._length (fldOffset=0x8)" P-INDEP
+; V30 tmp21 [V30,T11] ( 2, 0.77) byref -> r13 "field V16._reference (fldOffset=0x0)" P-INDEP
+; V31 tmp22 [V31,T12] ( 2, 0.77) int -> rdi "field V16._length (fldOffset=0x8)" P-INDEP
;* V32 tmp23 [V32,T19] ( 0, 0 ) int -> zero-ref "field V19._value (fldOffset=0x0)" P-INDEP
;* V33 tmp24 [V33 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;
; Lcl frame size = 24
-G_M6810_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M6810_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
@@ -64,13 +64,13 @@ G_M6810_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r1
; byrRegs +[rdi]
lea r14d, [rsi-0x01]
cmp r14d, esi
- jae G_M6810_IG21
+ jae G_M6810_IG18
;; size=13 bbWeight=1 PerfScore 1.75
G_M6810_IG03: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
mov eax, r14d
movzx r13, byte ptr [rdi+rax]
cmp r13d, 127
- ja SHORT G_M6810_IG06
+ ja SHORT G_M6810_IG12
;; size=14 bbWeight=0.92 PerfScore 3.23
G_M6810_IG04: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
; byrRegs -[rdi]
@@ -78,6 +78,7 @@ G_M6810_IG04: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15
mov edi, r13d
call [System.Text.UnicodeDebug:AssertIsValidScalar(uint)]
; byrRegs -[r15]
+ ; gcr arg pop 0
mov dword ptr [rbx], r13d
xor eax, eax
;; size=21 bbWeight=0.15 PerfScore 0.85
@@ -91,12 +92,47 @@ G_M6810_IG05: ; bbWeight=0.15, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.15 PerfScore 0.65
-G_M6810_IG06: ; bbWeight=0.77, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, gcvars, byref, isz
+G_M6810_IG06: ; bbWeight=0.62, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, gcvars, byref
; byrRegs +[rdi r15]
+ mov eax, 3
+ ;; size=5 bbWeight=0.62 PerfScore 0.15
+G_M6810_IG07: ; bbWeight=1.46, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
+ dec r14d
+ cmp r14d, esi
+ jae SHORT G_M6810_IG10
+ ;; size=8 bbWeight=1.46 PerfScore 2.19
+G_M6810_IG08: ; bbWeight=1.31, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
+ mov ecx, r14d
+ cmp byte ptr [rdi+rcx], -64
+ jge SHORT G_M6810_IG16
+ ;; size=9 bbWeight=1.31 PerfScore 5.56
+G_M6810_IG09: ; bbWeight=1.54, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
+ dec eax
+ test eax, eax
+ jg SHORT G_M6810_IG07
+ ;; size=6 bbWeight=1.54 PerfScore 2.31
+G_M6810_IG10: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+ ; byrRegs -[rdi]
+ mov dword ptr [rbx], 0xFFFD
+ mov dword ptr [r15], 1
+ mov eax, 3
+ ;; size=18 bbWeight=0.38 PerfScore 0.87
+G_M6810_IG11: ; bbWeight=0.38, epilog, nogc, extend
+ add rsp, 24
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.38 PerfScore 1.63
+G_M6810_IG12: ; bbWeight=0.77, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, gcvars, byref, isz
+ ; byrRegs +[rdi]
test r13b, 64
- je SHORT G_M6810_IG08
+ je SHORT G_M6810_IG06
;; size=6 bbWeight=0.77 PerfScore 0.96
-G_M6810_IG07: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref
+G_M6810_IG13: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref
mov r13d, r14d
add r13, rdi
; byrRegs +[r13]
@@ -107,6 +143,7 @@ G_M6810_IG07: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi
not edi
shr edi, 31
call [<unknown method>]
+ ; gcr arg pop 0
mov rdi, r13
; byrRegs +[rdi]
mov esi, r12d
@@ -116,45 +153,11 @@ G_M6810_IG07: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi
; byrRegs +[rcx]
call [<unknown method>]
; byrRegs -[rcx rdx rbx rdi r13 r15]
- jmp G_M6810_IG20
- ;; size=49 bbWeight=0.15 PerfScore 1.69
-G_M6810_IG08: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
- ; byrRegs +[rbx rdi r15]
- dec r14d
- cmp r14d, esi
- jae SHORT G_M6810_IG14
- ;; size=8 bbWeight=0.62 PerfScore 0.92
-G_M6810_IG09: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
- mov eax, r14d
- cmp byte ptr [rdi+rax], -64
- jge SHORT G_M6810_IG16
- ;; size=9 bbWeight=0.16 PerfScore 0.69
-G_M6810_IG10: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
- dec r14d
- cmp r14d, esi
- jae SHORT G_M6810_IG14
- ;; size=8 bbWeight=0.19 PerfScore 0.29
-G_M6810_IG11: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
- mov eax, r14d
- cmp byte ptr [rdi+rax], -64
- jge SHORT G_M6810_IG16
- ;; size=9 bbWeight=0.16 PerfScore 0.69
-G_M6810_IG12: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
- dec r14d
- cmp r14d, esi
- jae SHORT G_M6810_IG14
- ;; size=8 bbWeight=0.19 PerfScore 0.29
-G_M6810_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
- mov eax, r14d
- cmp byte ptr [rdi+rax], -64
- jge SHORT G_M6810_IG16
- ;; size=9 bbWeight=0.16 PerfScore 0.69
-G_M6810_IG14: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
- ; byrRegs -[rdi]
- mov dword ptr [rbx], 0xFFFD
- mov dword ptr [r15], 1
- mov eax, 3
- ;; size=18 bbWeight=0.38 PerfScore 0.87
+ ; gcr arg pop 0
+ ;; size=44 bbWeight=0.15 PerfScore 1.38
+G_M6810_IG14: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ nop
+ ;; size=1 bbWeight=0.38 PerfScore 0.10
G_M6810_IG15: ; bbWeight=0.38, epilog, nogc, extend
add rsp, 24
pop rbx
@@ -165,17 +168,7 @@ G_M6810_IG15: ; bbWeight=0.38, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.38 PerfScore 1.63
-G_M6810_IG16: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, gcvars, byref, isz
- ; byrRegs +[rdi]
- cmp r14d, esi
- jbe SHORT G_M6810_IG18
- ;; size=5 bbWeight=0.38 PerfScore 0.48
-G_M6810_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rbx rdi r15]
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M6810_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, byref, isz
+G_M6810_IG16: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi r15}, gcvars, byref
; byrRegs +[rbx rdi r15]
mov r13d, r14d
add r13, rdi
@@ -187,6 +180,7 @@ G_M6810_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi
not edi
shr edi, 31
call [<unknown method>]
+ ; gcr arg pop 0
mov edi, r12d
test edi, edi
setne dil
@@ -195,6 +189,7 @@ G_M6810_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi]
+ ; gcr arg pop 0
mov rdi, r13
; byrRegs +[rdi]
mov esi, r12d
@@ -202,36 +197,27 @@ G_M6810_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=8088 {rbx rdi
lea rcx, [rbp-0x38]
call [<unknown method>]
; byrRegs -[rdi r13]
+ ; gcr arg pop 0
cmp dword ptr [rbp-0x38], r12d
- jne SHORT G_M6810_IG14
- ;; size=81 bbWeight=0.38 PerfScore 6.73
-G_M6810_IG19: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+ jne G_M6810_IG10
+ ;; size=85 bbWeight=0.38 PerfScore 6.73
+G_M6810_IG17: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
mov edi, dword ptr [rbp-0x38]
mov dword ptr [r15], edi
...
@@ -8,12 +8,12 @@
; 19 inlinees with PGO data; 13 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 13, 24 ) ref -> rbx class-hnd single-def <System.String[]>
+; V00 arg0 [V00,T02] ( 12, 36 ) ref -> rbx class-hnd single-def <System.String[]>
; V01 loc0 [V01,T08] ( 9, 13.50) int -> r15
; V02 loc1 [V02,T28] ( 4, 6 ) int -> r14
; V03 loc2 [V03 ] ( 42, 52.98) struct (32) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
; V04 loc3 [V04,T00] ( 8, 59 ) int -> r13
-; V05 loc4 [V05,T34] ( 2, 4 ) ushort -> [rbp-0x4C] spill-single-def
+; V05 loc4 [V05,T34] ( 2, 4 ) ushort -> r12
;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
; V07 loc6 [V07,T03] ( 8, 21 ) int -> r14
; V08 loc7 [V08,T35] ( 2, 4 ) ushort -> r15
@@ -26,17 +26,17 @@
;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp7 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp9 [V18,T22] ( 2, 8 ) int -> [rbp-0x50] spill-single-def "Inlining Arg"
+; V18 tmp9 [V18,T22] ( 2, 8 ) int -> [rbp-0x4C] spill-single-def "Inlining Arg"
; V19 tmp10 [V19,T20] ( 2, 8 ) byref -> r12 "Inlining Arg"
; V20 tmp11 [V20,T30] ( 3, 4 ) ubyte -> r12 "Inline return value spill temp"
;* V21 tmp12 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V22 tmp13 [V22,T37] ( 2, 4 ) long -> rdi "Inlining Arg"
; V23 tmp14 [V23,T04] ( 5, 16.01) ref -> r15 class-hnd exact "Inlining Arg" <System.String>
; V24 tmp15 [V24,T41] ( 5, 2.02) int -> rdi "Inline stloc first use temp"
-; V25 tmp16 [V25,T16] ( 5, 9.98) int -> [rbp-0x54] spill-single-def "Inline stloc first use temp"
+; V25 tmp16 [V25,T16] ( 5, 9.98) int -> [rbp-0x50] spill-single-def "Inline stloc first use temp"
;* V26 tmp17 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V27 tmp18 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V28 tmp19 [V28,T14] ( 3, 11.98) int -> [rbp-0x58] spill-single-def "Inlining Arg"
+; V28 tmp19 [V28,T14] ( 3, 11.98) int -> [rbp-0x54] spill-single-def "Inlining Arg"
; V29 tmp20 [V29,T24] ( 2, 7.99) byref -> [rbp-0x68] spill-single-def "Inlining Arg"
;* V30 tmp21 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V31 tmp22 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -48,10 +48,10 @@
;* V37 tmp28 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
; V38 tmp29 [V38,T05] ( 5, 16 ) ref -> r15 class-hnd exact "Inlining Arg" <System.String>
; V39 tmp30 [V39,T42] ( 5, 2.02) int -> rdi "Inline stloc first use temp"
-; V40 tmp31 [V40,T17] ( 5, 9.98) int -> [rbp-0x5C] spill-single-def "Inline stloc first use temp"
+; V40 tmp31 [V40,T17] ( 5, 9.98) int -> [rbp-0x58] spill-single-def "Inline stloc first use temp"
;* V41 tmp32 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V42 tmp33 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp34 [V43,T15] ( 3, 11.98) int -> [rbp-0x60] spill-single-def "Inlining Arg"
+; V43 tmp34 [V43,T15] ( 3, 11.98) int -> [rbp-0x5C] spill-single-def "Inlining Arg"
; V44 tmp35 [V44,T25] ( 2, 7.98) byref -> [rbp-0x70] spill-single-def "Inlining Arg"
;* V45 tmp36 [V45 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V46 tmp37 [V46 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -91,7 +91,7 @@
; V80 GsCookie [V80 ] ( 1, 1 ) long -> [rbp-0x78] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V81 cse0 [V81,T07] ( 4, 14 ) ref -> rdi "CSE - moderate"
; V82 cse1 [V82,T29] ( 3, 6 ) ref -> rdi "CSE - moderate"
-; V83 cse2 [V83,T01] ( 7, 32 ) int -> r12 multi-def "CSE - aggressive"
+; V83 cse2 [V83,T01] ( 6, 44 ) int -> r12 multi-def "CSE - aggressive"
; V84 cse3 [V84,T12] ( 7, 11.99) int -> r13 "CSE - moderate"
; V85 cse4 [V85,T13] ( 7, 11.98) int -> r13 "CSE - moderate"
; V86 cse5 [V86,T19] ( 4, 8 ) int -> r15 "CSE - moderate"
@@ -157,12 +157,12 @@ G_M29298_IG06: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
lea r12, bword ptr [rdi+0x0C]
; byrRegs +[r12]
mov eax, dword ptr [rdi+0x08]
- mov dword ptr [rbp-0x50], eax
+ mov dword ptr [rbp-0x4C], eax
mov edi, 1
; gcrRegs -[rdi]
call [<unknown method>]
; gcr arg pop 0
- mov edi, dword ptr [rbp-0x50]
+ mov edi, dword ptr [rbp-0x4C]
test edi, edi
jg SHORT G_M29298_IG09
;; size=28 bbWeight=2 PerfScore 18.00
@@ -174,13 +174,12 @@ G_M29298_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
test r12d, r12d
je SHORT G_M29298_IG10
mov r14d, r13d
- mov r12d, dword ptr [rbx+0x08]
mov edi, r14d
mov rdi, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rdi]
mov r15d, dword ptr [rdi+0x08]
jmp SHORT G_M29298_IG11
- ;; size=26 bbWeight=2 PerfScore 19.50
+ ;; size=22 bbWeight=2 PerfScore 15.50
G_M29298_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=1000 {r12}, byref, isz
; gcrRegs -[rdi]
; byrRegs +[r12]
@@ -194,12 +193,11 @@ G_M29298_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov r12d, dword ptr [rbx+0x08]
mov edi, r13d
mov rdi, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rdi]
add r15d, dword ptr [rdi+0x08]
- ;; size=31 bbWeight=2 PerfScore 17.00
+ ;; size=27 bbWeight=2 PerfScore 13.00
G_M29298_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov edi, r13d
@@ -212,27 +210,27 @@ G_M29298_IG11: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
dec edi
cmp edi, dword ptr [rax+0x08]
jae G_M29298_IG41
- movzx rax, word ptr [rax+2*rdi+0x0C]
- ; gcrRegs -[rax]
- mov dword ptr [rbp-0x4C], eax
+ movzx r12, word ptr [rax+2*rdi+0x0C]
mov edi, 1
call [<unknown method>]
+ ; gcrRegs -[rax]
; gcr arg pop 0
- cmp dword ptr [rbp-0x4C], 47
+ cmp r12d, 47
je SHORT G_M29298_IG14
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
inc r15d
- ;; size=68 bbWeight=2 PerfScore 39.00
+ ;; size=66 bbWeight=2 PerfScore 33.50
G_M29298_IG12: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
inc r13d
+ mov r12d, dword ptr [rbx+0x08]
cmp r12d, r13d
jg G_M29298_IG05
- ;; size=27 bbWeight=16 PerfScore 44.00
+ ;; size=31 bbWeight=16 PerfScore 76.00
G_M29298_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M29298_IG15
;; size=2 bbWeight=0.50 PerfScore 1.00
@@ -315,7 +313,7 @@ G_M29298_IG20: ; bbWeight=0.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
G_M29298_IG21: ; bbWeight=2.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
mov eax, dword ptr [rbp-0x40]
- mov dword ptr [rbp-0x54], eax
+ mov dword ptr [rbp-0x50], eax
mov edi, dword ptr [rbp-0x30]
sub edi, r13d
cmp edi, eax
@@ -326,7 +324,7 @@ G_M29298_IG22: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
lea rdi, [rbp-0x48]
call [<unknown method>]
; gcr arg pop 0
- mov eax, dword ptr [rbp-0x54]
+ mov eax, dword ptr [rbp-0x50]
;; size=16 bbWeight=0 PerfScore 0.00
G_M29298_IG23: ; bbWeight=2.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp eax, dword ptr [rbp-0x30]
@@ -350,7 +348,7 @@ G_M29298_IG25: ; bbWeight=2.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov edx, dword ptr [rbp-0x30]
sub edx, eax
mov eax, edx
- mov dword ptr [rbp-0x58], eax
+ mov dword ptr [rbp-0x54], eax
mov edi, eax
; byrRegs -[rdi]
not edi
@@ -358,7 +356,7 @@ G_M29298_IG25: ; bbWeight=2.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
call [<unknown method>]
; byrRegs -[rcx]
; gcr arg pop 0
- mov edx, dword ptr [rbp-0x58]
+ mov edx, dword ptr [rbp-0x54]
cmp r13d, edx
jbe SHORT G_M29298_IG27
;; size=45 bbWeight=2.00 PerfScore 22.96
@@ -468,7 +466,7 @@ G_M29298_IG33: ; bbWeight=2.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
;; size=11 bbWeight=2.00 PerfScore 9.98
G_M29298_IG34: ; bbWeight=2.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rbp-0x40]
- mov dword ptr [rbp-0x5C], eax
+ mov dword ptr [rbp-0x58], eax
mov edi, dword ptr [rbp-0x30]
sub edi, r13d
cmp edi, eax
@@ -486,7 +484,7 @@ G_M29298_IG35: ; bbWeight=2.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov edx, dword ptr [rbp-0x30]
sub edx, eax
mov eax, edx
- mov dword ptr [rbp-0x60], eax
+ mov dword ptr [rbp-0x5C], eax
mov edi, eax
; byrRegs -[rdi]
not edi
@@ -494,7 +492,7 @@ G_M29298_IG35: ; bbWeight=2.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
call [<unknown method>]
; byrRegs -[rcx]
; gcr arg pop 0
- mov edx, dword ptr [rbp-0x60]
+ mov edx, dword ptr [rbp-0x5C]
cmp r13d, edx
ja G_M29298_IG26
lea rsi, bword ptr [r15+0x0C]
@@ -562,11 +560,11 @@ G_M29298_IG42: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
lea rdi, [rbp-0x48]
call [<unknown method>]
; gcr arg pop 0
- mov eax, dword ptr [rbp-0x5C]
+ mov eax, dword ptr [rbp-0x58]
jmp G_M29298_IG33
;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1111, prolog size 59, PerfScore 479.12, instruction count 286, allocated bytes for code 1111 (MethodHash=be4d8d8d) for method System.IO.Path:Combine(System.String[]):System.String (Instrumented Tier1)
+; Total bytes of code 1105, prolog size 59, PerfScore 497.62, instruction count 284, allocated bytes for code 1105 (MethodHash=be4d8d8d) for method System.IO.Path:Combine(System.String[]):System.String (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -10,27 +10,27 @@
;
; V00 this [V00,T14] ( 11, 32.50) ref -> [rbp-0x68] this class-hnd EH-live single-def <System.Buffers.SharedArrayPool`1[System.__Canon]>
; V01 loc0 [V01,T16] ( 5, 33.50) int -> rbx
-; V02 loc1 [V02,T36] ( 5, 19 ) int -> r15
+; V02 loc1 [V02,T35] ( 5, 19 ) int -> r15
; V03 loc2 [V03,T26] ( 7, 27 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T49] ( 4, 10 ) ref -> r13 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T35] ( 6, 19 ) int -> r12
-; V06 loc5 [V06,T43] ( 8, 10.50) ref -> [rbp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T48] ( 4, 10 ) ref -> r13 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T34] ( 6, 19 ) int -> r12
+; V06 loc5 [V06,T42] ( 8, 10.50) ref -> [rbp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T44] ( 8, 10.50) ref -> [rbp-0x78] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T43] ( 8, 10.50) ref -> [rbp-0x78] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T29] ( 3, 20 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T28] ( 3, 20 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T03] ( 5, 66 ) int -> rbx
; V12 loc11 [V12,T01] ( 6, 64 ) ref -> [rbp-0x80] class-hnd spill-single-def <<unknown class>>
-; V13 loc12 [V13,T52] ( 2, 8.50) int -> r15
-; V14 loc13 [V14,T75] ( 3, 1.50) int -> r15
-; V15 loc14 [V15,T45] ( 8, 10.50) ref -> [rbp-0x88] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T51] ( 2, 8.50) int -> r15
+; V14 loc13 [V14,T74] ( 3, 1.50) int -> r15
+; V15 loc14 [V15,T44] ( 8, 10.50) ref -> [rbp-0x88] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T11] ( 5, 36 ) ref -> r13 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T10] ( 6, 44 ) ref -> r13 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> r12
-; V19 loc18 [V19,T28] ( 3, 24 ) int -> rsi
+; V19 loc18 [V19,T27] ( 3, 24 ) int -> rdx
; V20 loc19 [V20,T07] ( 6, 48 ) ref -> [rbp-0x90] class-hnd spill-single-def <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T30] ( 3, 20 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T29] ( 3, 20 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T12] ( 2, 36 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -42,79 +42,78 @@
; V31 tmp10 [V31,T21] ( 2, 32 ) int -> [rbp-0x40] spill-single-def "impAppendStmt"
; V32 tmp11 [V32,T22] ( 2, 32 ) int -> [rbp-0x44] spill-single-def "impAppendStmt"
;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V34 tmp13 [V34,T63] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
+; V34 tmp13 [V34,T62] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V36 tmp15 [V36 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V38 tmp17 [V38,T64] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
+; V38 tmp17 [V38,T63] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V42 tmp21 [V42 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V43 tmp22 [V43,T65] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
+; V43 tmp22 [V43,T64] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V48 tmp27 [V48,T32] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
-; V49 tmp28 [V49,T31] ( 3, 20 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V48 tmp27 [V48,T31] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
+; V49 tmp28 [V49,T30] ( 3, 20 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V50 tmp29 [V50,T04] ( 5, 66 ) int -> [rbp-0x4C] "Inline stloc first use temp"
; V51 tmp30 [V51,T23] ( 2, 32 ) int -> r8 "Inlining Arg"
; V52 tmp31 [V52,T24] ( 2, 32 ) int -> r8 "Inlining Arg"
-; V53 tmp32 [V53,T60] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
-; V54 tmp33 [V54,T72] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
-; V55 tmp34 [V55,T61] ( 2, 4 ) ref -> r15 "field V09.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T73] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T62] ( 2, 4 ) ref -> r13 "field V16.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T74] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
+; V53 tmp32 [V53,T59] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
+; V54 tmp33 [V54,T71] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T60] ( 2, 4 ) ref -> r15 "field V09.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T72] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T61] ( 2, 4 ) ref -> r13 "field V16.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T73] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
;* V59 tmp38 [V59 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V60 tmp39 [V60 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V29.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V29.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V33.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V33.value (fldOffset=0x8)" P-DEP
-; V65 tmp44 [V65,T66] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V66 tmp45 [V66,T37] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V67 tmp46 [V67,T57] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V65 tmp44 [V65,T65] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V66 tmp45 [V66,T36] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V67 tmp46 [V67,T56] ( 2, 8 ) ref -> rdi "argument with side effect"
; V68 tmp47 [V68,T25] ( 2, 32 ) long -> rsi "argument with side effect"
; V69 tmp48 [V69,T18] ( 2, 32 ) ref -> rdx "argument with side effect"
-;* V70 tmp49 [V70,T40] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V71 tmp50 [V71,T77] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V72 tmp51 [V72,T67] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V73 tmp52 [V73,T68] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V74 tmp53 [V74,T38] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V75 tmp54 [V75,T58] ( 2, 8 ) ref -> rdi "argument with side effect"
+;* V70 tmp49 [V70,T39] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V71 tmp50 [V71,T76] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V72 tmp51 [V72,T66] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V73 tmp52 [V73,T67] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V74 tmp53 [V74,T37] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V75 tmp54 [V75,T57] ( 2, 8 ) ref -> rdi "argument with side effect"
; V76 tmp55 [V76,T06] ( 2, 64 ) long -> rsi "argument with side effect"
; V77 tmp56 [V77,T05] ( 2, 64 ) ref -> rcx "argument with side effect"
-;* V78 tmp57 [V78,T41] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V79 tmp58 [V79,T78] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V80 tmp59 [V80,T69] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V81 tmp60 [V81,T70] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V82 tmp61 [V82,T39] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V83 tmp62 [V83,T59] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V84 tmp63 [V84,T79] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V85 tmp64 [V85,T71] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V86 PSPSym [V86,T76] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
+;* V78 tmp57 [V78,T40] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V79 tmp58 [V79,T77] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V80 tmp59 [V80,T68] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V81 tmp60 [V81,T69] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V82 tmp61 [V82,T38] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V83 tmp62 [V83,T58] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V84 tmp63 [V84,T78] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V85 tmp64 [V85,T70] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V86 PSPSym [V86,T75] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
; V87 cse0 [V87,T15] ( 4, 34 ) long -> registers hoist multi-def "CSE - moderate"
-; V88 cse1 [V88,T53] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
-; V89 cse2 [V89,T46] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
-; V90 cse3 [V90,T54] ( 4, 8 ) ref -> r15 multi-def "CSE - conservative"
-; V91 cse4 [V91,T47] ( 6, 10.50) ref -> r15 multi-def "CSE - conservative"
-; V92 cse5 [V92,T55] ( 4, 8 ) ref -> r13 multi-def "CSE - conservative"
-; V93 cse6 [V93,T48] ( 6, 10.50) ref -> r13 multi-def "CSE - conservative"
-; V94 cse7 [V94,T27] ( 3, 24 ) byref -> [rbp-0xA8] spill-single-def "CSE - moderate"
-; V95 cse8 [V95,T08] ( 4, 48 ) long -> [rbp-0x58] spill-single-def "CSE - moderate"
-; V96 cse9 [V96,T02] ( 3, 68 ) int -> [rbp-0x5C] spill-single-def "CSE - aggressive"
-; V97 cse10 [V97,T33] ( 3, 20 ) int -> [rbp-0x60] spill-single-def "CSE - moderate"
-; V98 cse11 [V98,T34] ( 3, 20 ) int -> r13 "CSE - moderate"
-; V99 rat0 [V99,T50] ( 3, 9.44) long -> rsi "Spilling to split statement for tree"
-; V100 rat1 [V100,T56] ( 3, 8 ) long -> r12 "runtime lookup"
-; V101 rat2 [V101,T42] ( 3, 11.20) long -> rax "spilling expr"
-; V102 rat3 [V102,T51] ( 3, 8.96) long -> r12 "fgMakeTemp is creating a new local variable"
-; V103 rat4 [V103,T10] ( 3, 37.76) long -> rsi "Spilling to split statement for tree"
-; V104 rat5 [V104,T17] ( 3, 32 ) long -> registers "runtime lookup"
-; V105 rat6 [V105,T09] ( 3, 44.80) long -> rdx "spilling expr"
-; V106 rat7 [V106,T13] ( 3, 35.84) long -> rdx "fgMakeTemp is creating a new local variable"
+; V88 cse1 [V88,T52] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
+; V89 cse2 [V89,T45] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
+; V90 cse3 [V90,T53] ( 4, 8 ) ref -> r15 multi-def "CSE - conservative"
+; V91 cse4 [V91,T46] ( 6, 10.50) ref -> r15 multi-def "CSE - conservative"
+; V92 cse5 [V92,T54] ( 4, 8 ) ref -> r13 multi-def "CSE - conservative"
+; V93 cse6 [V93,T47] ( 6, 10.50) ref -> r13 multi-def "CSE - conservative"
+; V94 cse7 [V94,T08] ( 5, 56 ) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
+; V95 cse8 [V95,T02] ( 3, 68 ) int -> [rbp-0x5C] spill-single-def "CSE - aggressive"
+; V96 cse9 [V96,T32] ( 3, 20 ) int -> [rbp-0x60] spill-single-def "CSE - moderate"
+; V97 cse10 [V97,T33] ( 3, 20 ) int -> r13 "CSE - moderate"
+; V98 rat0 [V98,T49] ( 3, 9.44) long -> rsi "Spilling to split statement for tree"
+; V99 rat1 [V99,T55] ( 3, 8 ) long -> r12 "runtime lookup"
+; V100 rat2 [V100,T41] ( 3, 11.20) long -> rax "spilling expr"
+; V101 rat3 [V101,T50] ( 3, 8.96) long -> r12 "fgMakeTemp is creating a new local variable"
+; V102 rat4 [V102,T11] ( 3, 37.76) long -> rsi "Spilling to split statement for tree"
+; V103 rat5 [V103,T17] ( 3, 32 ) long -> registers "runtime lookup"
+; V104 rat6 [V104,T09] ( 3, 44.80) long -> rdx "spilling expr"
+; V105 rat7 [V105,T13] ( 3, 35.84) long -> rdx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 136
@@ -177,7 +176,7 @@ G_M16529_IG05: ; bbWeight=4, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
test rax, rax
je G_M16529_IG08
;; size=24 bbWeight=4 PerfScore 18.00
-G_M16529_IG06: ; bbWeight=2, gcVars=00000000000000000000000040004000 {V00 V22}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16529_IG06: ; bbWeight=2, gcVars=00000000000000000000000020004000 {V00 V22}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -208,7 +207,7 @@ G_M16529_IG06: ; bbWeight=2, gcVars=00000000000000000000000040004000 {V00
test r10d, r10d
jle SHORT G_M16529_IG08
;; size=87 bbWeight=2 PerfScore 37.00
-G_M16529_IG07: ; bbWeight=16, gcVars=00000000000000000000000080004000 {V00 V49}, gcrefRegs=6001 {rax r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16529_IG07: ; bbWeight=16, gcVars=00000000000000000000000040004000 {V00 V49}, gcrefRegs=6001 {rax r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi]
; GC ptr vars -{V22}
mov dword ptr [rbp-0x4C], r9d
@@ -266,7 +265,7 @@ G_M16529_IG10: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
mov gword ptr [rbp-0x70], rax
; GC ptr vars +{V06}
;; size=60 bbWeight=0.50 PerfScore 6.50
-G_M16529_IG11: ; bbWeight=0.50, gcVars=00000000000000000000080000004000 {V00 V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16529_IG11: ; bbWeight=0.50, gcVars=00000000000000000000040000004000 {V00 V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
jmp SHORT G_M16529_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M16529_IG12: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
@@ -358,7 +357,7 @@ G_M16529_IG15: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
mov gword ptr [rbp-0x78], rax
; GC ptr vars +{V08}
;; size=46 bbWeight=0.50 PerfScore 4.50
-G_M16529_IG16: ; bbWeight=0.50, gcVars=00000000000000000000100000004000 {V00 V08}, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG16: ; bbWeight=0.50, gcVars=00000000000000000000080000004000 {V00 V08}, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, gcvars, byref
jmp G_M16529_IG23
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M16529_IG17: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
@@ -417,7 +416,7 @@ G_M16529_IG19: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}
test rax, rax
je SHORT G_M16529_IG21
;; size=39 bbWeight=16 PerfScore 416.00
-G_M16529_IG20: ; bbWeight=8, gcVars=00000000000000000000100000004002 {V00 V08 V12}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG20: ; bbWeight=8, gcVars=00000000000000000000080000004002 {V00 V08 V12}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -564,7 +563,7 @@ G_M16529_IG29: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
mov gword ptr [rbp-0x88], rax
; GC ptr vars +{V15}
;; size=49 bbWeight=0.50 PerfScore 4.50
-G_M16529_IG30: ; bbWeight=0.50, gcVars=00000000000000000000200000004000 {V00 V15}, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG30: ; bbWeight=0.50, gcVars=00000000000000000000100000004000 {V00 V15}, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, gcvars, byref
jmp G_M16529_IG36
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M16529_IG31: ; bbWeight=2, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
@@ -599,24 +598,16 @@ G_M16529_IG32: ; bbWeight=16, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}
je SHORT G_M16529_IG34
;; size=19 bbWeight=16 PerfScore 92.00
G_M16529_IG33: ; bbWeight=8, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
- lea rdx, bword ptr [r13+rcx+0x10]
- ; byrRegs +[rdx]
- mov bword ptr [rbp-0xA8], rdx
- ; GC ptr vars +{V94}
- mov esi, dword ptr [rdx+0x08]
- test esi, esi
+ mov edx, dword ptr [r13+rcx+0x18]
+ test edx, edx
jne G_M16529_IG38
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
- ; byrRegs -[rdx]
; gcr arg pop 0
- mov rdi, bword ptr [rbp-0xA8]
- ; byrRegs +[rdi]
- mov dword ptr [rdi+0x08], ebx
- ;; size=48 bbWeight=8 PerfScore 76.00
-G_M16529_IG34: ; bbWeight=64, gcVars=00000000000000000000200000004000 {V00 V15}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[rdi]
- ; GC ptr vars -{V94}
+ mov rax, qword ptr [rbp-0x58]
+ mov dword ptr [r13+rax+0x18], ebx
+ ;; size=37 bbWeight=8 PerfScore 52.00
+G_M16529_IG34: ; bbWeight=64, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E
...
1[System.ReadOnlyMemory
1[ushort]]:Trim():ubyte:this (Instrumented Tier1)@@ -10,27 +10,27 @@
;
; V00 this [V00,T21] ( 9, 22.50) ref -> rbx this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.ReadOnlyMemory`1[ushort]]>
; V01 loc0 [V01,T12] ( 5, 33.50) int -> r15
-; V02 loc1 [V02,T31] ( 5, 19 ) int -> r14
+; V02 loc1 [V02,T30] ( 5, 19 ) int -> r14
; V03 loc2 [V03,T20] ( 7, 27 ) ref -> r13 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T41] ( 4, 10 ) ref -> r12 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T30] ( 6, 19 ) int -> [rbp-0x2C]
-; V06 loc5 [V06,T35] ( 8, 10.50) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T40] ( 4, 10 ) ref -> r12 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T29] ( 6, 19 ) int -> [rbp-0x2C]
+; V06 loc5 [V06,T34] ( 8, 10.50) ref -> [rbp-0x68] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T36] ( 8, 10.50) ref -> [rbp-0x68] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T35] ( 8, 10.50) ref -> [rbp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T24] ( 3, 20 ) ref -> r14 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T23] ( 3, 20 ) ref -> r14 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T02] ( 5, 66 ) int -> r15
-; V12 loc11 [V12,T05] ( 6, 60 ) ref -> [rbp-0x70] class-hnd exact spill-single-def <<unknown class>>
-; V13 loc12 [V13,T42] ( 2, 8.50) int -> r14
-; V14 loc13 [V14,T64] ( 3, 1.50) int -> r14
-; V15 loc14 [V15,T37] ( 8, 10.50) ref -> [rbp-0x78] class-hnd EH-live spill-single-def <<unknown class>>
+; V12 loc11 [V12,T05] ( 6, 60 ) ref -> [rbp-0x78] class-hnd exact spill-single-def <<unknown class>>
+; V13 loc12 [V13,T41] ( 2, 8.50) int -> r14
+; V14 loc13 [V14,T63] ( 3, 1.50) int -> r14
+; V15 loc14 [V15,T36] ( 8, 10.50) ref -> [rbp-0x80] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T10] ( 5, 36 ) ref -> r12 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T10] ( 6, 44 ) ref -> r12 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> [rbp-0x30]
-; V19 loc18 [V19,T23] ( 3, 24 ) int -> r8
-; V20 loc19 [V20,T09] ( 6, 44 ) ref -> [rbp-0x80] class-hnd exact spill-single-def <<unknown class>>
+; V19 loc18 [V19,T22] ( 3, 24 ) int -> rsi
+; V20 loc19 [V20,T09] ( 6, 44 ) ref -> [rbp-0x88] class-hnd exact spill-single-def <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T25] ( 3, 20 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T24] ( 3, 20 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T11] ( 2, 36 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -44,66 +44,65 @@
; V33 tmp12 [V33,T16] ( 2, 32 ) int -> [rbp-0x40] spill-single-def "impAppendStmt"
; V34 tmp13 [V34,T17] ( 2, 32 ) int -> [rbp-0x44] spill-single-def "impAppendStmt"
;* V35 tmp14 [V35 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V36 tmp15 [V36,T52] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
+; V36 tmp15 [V36,T51] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V38 tmp17 [V38 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V40 tmp19 [V40,T53] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
+; V40 tmp19 [V40,T52] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V42 tmp21 [V42 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V45 tmp24 [V45,T54] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
+; V45 tmp24 [V45,T53] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V48 tmp27 [V48 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V49 tmp28 [V49 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V50 tmp29 [V50,T27] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
-; V51 tmp30 [V51,T26] ( 3, 20 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V50 tmp29 [V50,T26] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
+; V51 tmp30 [V51,T25] ( 3, 20 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V52 tmp31 [V52,T03] ( 5, 66 ) int -> [rbp-0x4C] "Inline stloc first use temp"
; V53 tmp32 [V53,T18] ( 2, 32 ) int -> r8 "Inlining Arg"
; V54 tmp33 [V54,T19] ( 2, 32 ) int -> r8 "Inlining Arg"
-; V55 tmp34 [V55,T49] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T61] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T50] ( 2, 4 ) ref -> r14 "field V09.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T62] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
-; V59 tmp38 [V59,T51] ( 2, 4 ) ref -> r12 "field V16.key (fldOffset=0x0)" P-INDEP
-; V60 tmp39 [V60,T63] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T48] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T60] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T49] ( 2, 4 ) ref -> r14 "field V09.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T61] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
+; V59 tmp38 [V59,T50] ( 2, 4 ) ref -> r12 "field V16.key (fldOffset=0x0)" P-INDEP
+; V60 tmp39 [V60,T62] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V30.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V30.value (fldOffset=0x8)" P-DEP
;* V65 tmp44 [V65 ] ( 0, 0 ) ref -> zero-ref "field V35.key (fldOffset=0x0)" P-DEP
;* V66 tmp45 [V66 ] ( 0, 0 ) ref -> zero-ref "field V35.value (fldOffset=0x8)" P-DEP
-; V67 tmp46 [V67,T55] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V68 tmp47 [V68,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V69 tmp48 [V69,T46] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V67 tmp46 [V67,T54] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V68 tmp47 [V68,T31] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V69 tmp48 [V69,T45] ( 2, 8 ) ref -> rdi "argument with side effect"
; V70 tmp49 [V70,T07] ( 3, 48 ) ref -> rdi "argument with side effect"
-; V71 tmp50 [V71,T66] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V72 tmp51 [V72,T56] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V73 tmp52 [V73,T57] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V74 tmp53 [V74,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V75 tmp54 [V75,T47] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V71 tmp50 [V71,T65] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V72 tmp51 [V72,T55] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V73 tmp52 [V73,T56] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V74 tmp53 [V74,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V75 tmp54 [V75,T46] ( 2, 8 ) ref -> rdi "argument with side effect"
; V76 tmp55 [V76,T08] ( 3, 48 ) ref -> rdi "argument with side effect"
-; V77 tmp56 [V77,T67] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V78 tmp57 [V78,T58] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V79 tmp58 [V79,T59] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V80 tmp59 [V80,T34] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V81 tmp60 [V81,T48] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V82 tmp61 [V82,T68] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V83 tmp62 [V83,T60] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V84 PSPSym [V84,T65] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
-; V85 cse0 [V85,T43] ( 4, 8 ) ref -> rbx multi-def "CSE - conservative"
-; V86 cse1 [V86,T38] ( 6, 10.50) ref -> rbx multi-def "CSE - conservative"
-; V87 cse2 [V87,T44] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
-; V88 cse3 [V88,T39] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
-; V89 cse4 [V89,T45] ( 4, 8 ) ref -> r12 multi-def "CSE - conservative"
-; V90 cse5 [V90,T40] ( 6, 10.50) ref -> r12 multi-def "CSE - conservative"
-; V91 cse6 [V91,T22] ( 3, 24 ) byref -> [rbp-0x98] spill-single-def "CSE - moderate"
-; V92 cse7 [V92,T06] ( 4, 48 ) long -> rdx "CSE - moderate"
-; V93 cse8 [V93,T01] ( 3, 68 ) int -> [rbp-0x50] spill-single-def "CSE - aggressive"
-; V94 cse9 [V94,T28] ( 3, 20 ) int -> [rbp-0x54] spill-single-def "CSE - moderate"
-; V95 cse10 [V95,T29] ( 3, 20 ) int -> r12 "CSE - moderate"
+; V77 tmp56 [V77,T66] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V78 tmp57 [V78,T57] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V79 tmp58 [V79,T58] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V80 tmp59 [V80,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V81 tmp60 [V81,T47] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V82 tmp61 [V82,T67] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V83 tmp62 [V83,T59] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V84 PSPSym [V84,T64] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
+; V85 cse0 [V85,T42] ( 4, 8 ) ref -> rbx multi-def "CSE - conservative"
+; V86 cse1 [V86,T37] ( 6, 10.50) ref -> rbx multi-def "CSE - conservative"
+; V87 cse2 [V87,T43] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
+; V88 cse3 [V88,T38] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
+; V89 cse4 [V89,T44] ( 4, 8 ) ref -> r12 multi-def "CSE - conservative"
+; V90 cse5 [V90,T39] ( 6, 10.50) ref -> r12 multi-def "CSE - conservative"
+; V91 cse6 [V91,T06] ( 5, 56 ) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
+; V92 cse7 [V92,T01] ( 3, 68 ) int -> [rbp-0x5C] spill-single-def "CSE - aggressive"
+; V93 cse8 [V93,T27] ( 3, 20 ) int -> [rbp-0x60] spill-single-def "CSE - moderate"
+; V94 cse9 [V94,T28] ( 3, 20 ) int -> r12 "CSE - moderate"
;
; Lcl frame size = 120
@@ -158,12 +157,12 @@ G_M59307_IG05: ; bbWeight=4, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000
mov edi, eax
mov rcx, gword ptr [r12+8*rdi+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x88], rcx
+ mov gword ptr [rbp-0x90], rcx
; GC ptr vars +{V22}
test rcx, rcx
je G_M59307_IG08
;; size=26 bbWeight=4 PerfScore 22.00
-G_M59307_IG06: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V22}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M59307_IG06: ; bbWeight=2, gcVars=00000000000000000000000001000000 {V22}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -183,19 +182,19 @@ G_M59307_IG06: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V22
shr edi, 31
call [<unknown method>]
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x88]
+ mov rdi, gword ptr [rbp-0x90]
; gcrRegs +[rdi]
mov rax, gword ptr [rdi+0x08]
; gcrRegs +[rax]
- mov gword ptr [rbp-0x90], rax
+ mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V51}
xor r9d, r9d
mov r10d, dword ptr [rax+0x08]
- mov dword ptr [rbp-0x54], r10d
+ mov dword ptr [rbp-0x60], r10d
test r10d, r10d
jle SHORT G_M59307_IG08
;; size=89 bbWeight=2 PerfScore 37.50
-G_M59307_IG07: ; bbWeight=16, gcVars=00000000000000000000000004000000 {V51}, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M59307_IG07: ; bbWeight=16, gcVars=00000000000000000000000002000000 {V51}, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi]
; GC ptr vars -{V22}
mov dword ptr [rbp-0x4C], r9d
@@ -212,9 +211,9 @@ G_M59307_IG07: ; bbWeight=16, gcVars=00000000000000000000000004000000 {V5
; gcr arg pop 0
mov r9d, dword ptr [rbp-0x4C]
inc r9d
- mov edi, dword ptr [rbp-0x54]
+ mov edi, dword ptr [rbp-0x60]
cmp edi, r9d
- mov rax, gword ptr [rbp-0x90]
+ mov rax, gword ptr [rbp-0x98]
; gcrRegs +[rax]
jg SHORT G_M59307_IG07
;; size=55 bbWeight=16 PerfScore 260.00
@@ -251,10 +250,10 @@ G_M59307_IG10: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rbx rdi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x60], rax
+ mov gword ptr [rbp-0x68], rax
; GC ptr vars +{V06}
;; size=56 bbWeight=0.50 PerfScore 6.00
-G_M59307_IG11: ; bbWeight=0.50, gcVars=00000000000000000000000800000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M59307_IG11: ; bbWeight=0.50, gcVars=00000000000000000000000400000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
jmp SHORT G_M59307_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M59307_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
@@ -262,7 +261,7 @@ G_M59307_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
@@ -279,7 +278,7 @@ G_M59307_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Array:Clear(System.Array)]
; gcrRegs -[rax rdx rdi]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x60]
+ mov rax, gword ptr [rbp-0x68]
; gcrRegs +[rax]
;; size=63 bbWeight=2 PerfScore 22.50
G_M59307_IG13: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
@@ -289,7 +288,7 @@ G_M59307_IG13: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rdi]
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
mov rbx, rdi
; gcrRegs +[rbx]
@@ -308,7 +307,7 @@ G_M59307_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; GC ptr vars -{V06}
@@ -342,15 +341,15 @@ G_M59307_IG15: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rdi r14] +[rax]
; gcr arg pop 0
...
@@ -10,27 +10,27 @@
;
; V00 this [V00,T21] ( 9, 22.50) ref -> rbx this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Buffers.AhoCorasickNode]>
; V01 loc0 [V01,T12] ( 5, 33.50) int -> r15
-; V02 loc1 [V02,T31] ( 5, 19 ) int -> r14
+; V02 loc1 [V02,T30] ( 5, 19 ) int -> r14
; V03 loc2 [V03,T20] ( 7, 27 ) ref -> r13 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T41] ( 4, 10 ) ref -> r12 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T30] ( 6, 19 ) int -> [rbp-0x2C]
-; V06 loc5 [V06,T35] ( 8, 10.50) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T40] ( 4, 10 ) ref -> r12 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T29] ( 6, 19 ) int -> [rbp-0x2C]
+; V06 loc5 [V06,T34] ( 8, 10.50) ref -> [rbp-0x68] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T36] ( 8, 10.50) ref -> [rbp-0x68] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T35] ( 8, 10.50) ref -> [rbp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T24] ( 3, 20 ) ref -> r14 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T23] ( 3, 20 ) ref -> r14 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T02] ( 5, 66 ) int -> r15
-; V12 loc11 [V12,T05] ( 6, 60 ) ref -> [rbp-0x70] class-hnd exact spill-single-def <<unknown class>>
-; V13 loc12 [V13,T42] ( 2, 8.50) int -> r14
-; V14 loc13 [V14,T64] ( 3, 1.50) int -> r14
-; V15 loc14 [V15,T37] ( 8, 10.50) ref -> [rbp-0x78] class-hnd EH-live spill-single-def <<unknown class>>
+; V12 loc11 [V12,T05] ( 6, 60 ) ref -> [rbp-0x78] class-hnd exact spill-single-def <<unknown class>>
+; V13 loc12 [V13,T41] ( 2, 8.50) int -> r14
+; V14 loc13 [V14,T63] ( 3, 1.50) int -> r14
+; V15 loc14 [V15,T36] ( 8, 10.50) ref -> [rbp-0x80] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T10] ( 5, 36 ) ref -> r12 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T10] ( 6, 44 ) ref -> r12 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> [rbp-0x30]
-; V19 loc18 [V19,T23] ( 3, 24 ) int -> r8
-; V20 loc19 [V20,T09] ( 6, 44 ) ref -> [rbp-0x80] class-hnd exact spill-single-def <<unknown class>>
+; V19 loc18 [V19,T22] ( 3, 24 ) int -> rsi
+; V20 loc19 [V20,T09] ( 6, 44 ) ref -> [rbp-0x88] class-hnd exact spill-single-def <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T25] ( 3, 20 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T24] ( 3, 20 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T11] ( 2, 36 ) int -> [rbp-0x34] spill-single-def "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -44,66 +44,65 @@
; V33 tmp12 [V33,T16] ( 2, 32 ) int -> [rbp-0x40] spill-single-def "impAppendStmt"
; V34 tmp13 [V34,T17] ( 2, 32 ) int -> [rbp-0x44] spill-single-def "impAppendStmt"
;* V35 tmp14 [V35 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V36 tmp15 [V36,T52] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
+; V36 tmp15 [V36,T51] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V38 tmp17 [V38 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V40 tmp19 [V40,T53] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
+; V40 tmp19 [V40,T52] ( 3, 3 ) ref -> r14 single-def "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V42 tmp21 [V42 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V45 tmp24 [V45,T54] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
+; V45 tmp24 [V45,T53] ( 3, 3 ) ref -> r12 single-def "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V48 tmp27 [V48 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V49 tmp28 [V49 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V50 tmp29 [V50,T27] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
-; V51 tmp30 [V51,T26] ( 3, 20 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V50 tmp29 [V50,T26] ( 3, 20 ) int -> [rbp-0x48] spill-single-def "Inline stloc first use temp"
+; V51 tmp30 [V51,T25] ( 3, 20 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V52 tmp31 [V52,T03] ( 5, 66 ) int -> [rbp-0x4C] "Inline stloc first use temp"
; V53 tmp32 [V53,T18] ( 2, 32 ) int -> r8 "Inlining Arg"
; V54 tmp33 [V54,T19] ( 2, 32 ) int -> r8 "Inlining Arg"
-; V55 tmp34 [V55,T49] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T61] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T50] ( 2, 4 ) ref -> r14 "field V09.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T62] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
-; V59 tmp38 [V59,T51] ( 2, 4 ) ref -> r12 "field V16.key (fldOffset=0x0)" P-INDEP
-; V60 tmp39 [V60,T63] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T48] ( 2, 4 ) ref -> rdi "field V07.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T60] ( 1, 2 ) ref -> rdx "field V07.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T49] ( 2, 4 ) ref -> r14 "field V09.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T61] ( 1, 2 ) ref -> rdx "field V09.value (fldOffset=0x8)" P-INDEP
+; V59 tmp38 [V59,T50] ( 2, 4 ) ref -> r12 "field V16.key (fldOffset=0x0)" P-INDEP
+; V60 tmp39 [V60,T62] ( 1, 2 ) ref -> rdx "field V16.value (fldOffset=0x8)" P-INDEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V30.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V30.value (fldOffset=0x8)" P-DEP
;* V65 tmp44 [V65 ] ( 0, 0 ) ref -> zero-ref "field V35.key (fldOffset=0x0)" P-DEP
;* V66 tmp45 [V66 ] ( 0, 0 ) ref -> zero-ref "field V35.value (fldOffset=0x8)" P-DEP
-; V67 tmp46 [V67,T55] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V68 tmp47 [V68,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V69 tmp48 [V69,T46] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V67 tmp46 [V67,T54] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V68 tmp47 [V68,T31] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V69 tmp48 [V69,T45] ( 2, 8 ) ref -> rdi "argument with side effect"
; V70 tmp49 [V70,T07] ( 3, 48 ) ref -> rdi "argument with side effect"
-; V71 tmp50 [V71,T66] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V72 tmp51 [V72,T56] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V73 tmp52 [V73,T57] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V74 tmp53 [V74,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V75 tmp54 [V75,T47] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V71 tmp50 [V71,T65] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V72 tmp51 [V72,T55] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V73 tmp52 [V73,T56] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V74 tmp53 [V74,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V75 tmp54 [V75,T46] ( 2, 8 ) ref -> rdi "argument with side effect"
; V76 tmp55 [V76,T08] ( 3, 48 ) ref -> rdi "argument with side effect"
-; V77 tmp56 [V77,T67] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V78 tmp57 [V78,T58] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V79 tmp58 [V79,T59] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V80 tmp59 [V80,T34] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V81 tmp60 [V81,T48] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V82 tmp61 [V82,T68] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V83 tmp62 [V83,T60] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V84 PSPSym [V84,T65] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
-; V85 cse0 [V85,T43] ( 4, 8 ) ref -> rbx multi-def "CSE - conservative"
-; V86 cse1 [V86,T38] ( 6, 10.50) ref -> rbx multi-def "CSE - conservative"
-; V87 cse2 [V87,T44] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
-; V88 cse3 [V88,T39] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
-; V89 cse4 [V89,T45] ( 4, 8 ) ref -> r12 multi-def "CSE - conservative"
-; V90 cse5 [V90,T40] ( 6, 10.50) ref -> r12 multi-def "CSE - conservative"
-; V91 cse6 [V91,T22] ( 3, 24 ) byref -> [rbp-0x98] spill-single-def "CSE - moderate"
-; V92 cse7 [V92,T06] ( 4, 48 ) long -> rdx "CSE - moderate"
-; V93 cse8 [V93,T01] ( 3, 68 ) int -> [rbp-0x50] spill-single-def "CSE - aggressive"
-; V94 cse9 [V94,T28] ( 3, 20 ) int -> [rbp-0x54] spill-single-def "CSE - moderate"
-; V95 cse10 [V95,T29] ( 3, 20 ) int -> r12 "CSE - moderate"
+; V77 tmp56 [V77,T66] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V78 tmp57 [V78,T57] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V79 tmp58 [V79,T58] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V80 tmp59 [V80,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V81 tmp60 [V81,T47] ( 2, 8 ) ref -> rdi "argument with side effect"
+; V82 tmp61 [V82,T67] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V83 tmp62 [V83,T59] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V84 PSPSym [V84,T64] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
+; V85 cse0 [V85,T42] ( 4, 8 ) ref -> rbx multi-def "CSE - conservative"
+; V86 cse1 [V86,T37] ( 6, 10.50) ref -> rbx multi-def "CSE - conservative"
+; V87 cse2 [V87,T43] ( 4, 8 ) ref -> r14 multi-def "CSE - conservative"
+; V88 cse3 [V88,T38] ( 6, 10.50) ref -> r14 multi-def "CSE - conservative"
+; V89 cse4 [V89,T44] ( 4, 8 ) ref -> r12 multi-def "CSE - conservative"
+; V90 cse5 [V90,T39] ( 6, 10.50) ref -> r12 multi-def "CSE - conservative"
+; V91 cse6 [V91,T06] ( 5, 56 ) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
+; V92 cse7 [V92,T01] ( 3, 68 ) int -> [rbp-0x5C] spill-single-def "CSE - aggressive"
+; V93 cse8 [V93,T27] ( 3, 20 ) int -> [rbp-0x60] spill-single-def "CSE - moderate"
+; V94 cse9 [V94,T28] ( 3, 20 ) int -> r12 "CSE - moderate"
;
; Lcl frame size = 120
@@ -158,12 +157,12 @@ G_M35178_IG05: ; bbWeight=4, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000
mov edi, eax
mov rcx, gword ptr [r12+8*rdi+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x88], rcx
+ mov gword ptr [rbp-0x90], rcx
; GC ptr vars +{V22}
test rcx, rcx
je G_M35178_IG08
;; size=26 bbWeight=4 PerfScore 22.00
-G_M35178_IG06: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V22}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35178_IG06: ; bbWeight=2, gcVars=00000000000000000000000001000000 {V22}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -183,19 +182,19 @@ G_M35178_IG06: ; bbWeight=2, gcVars=00000000000000000000000002000000 {V22
shr edi, 31
call [<unknown method>]
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x88]
+ mov rdi, gword ptr [rbp-0x90]
; gcrRegs +[rdi]
mov rax, gword ptr [rdi+0x08]
; gcrRegs +[rax]
- mov gword ptr [rbp-0x90], rax
+ mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V51}
xor r9d, r9d
mov r10d, dword ptr [rax+0x08]
- mov dword ptr [rbp-0x54], r10d
+ mov dword ptr [rbp-0x60], r10d
test r10d, r10d
jle SHORT G_M35178_IG08
;; size=89 bbWeight=2 PerfScore 37.50
-G_M35178_IG07: ; bbWeight=16, gcVars=00000000000000000000000004000000 {V51}, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35178_IG07: ; bbWeight=16, gcVars=00000000000000000000000002000000 {V51}, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi]
; GC ptr vars -{V22}
mov dword ptr [rbp-0x4C], r9d
@@ -212,9 +211,9 @@ G_M35178_IG07: ; bbWeight=16, gcVars=00000000000000000000000004000000 {V5
; gcr arg pop 0
mov r9d, dword ptr [rbp-0x4C]
inc r9d
- mov edi, dword ptr [rbp-0x54]
+ mov edi, dword ptr [rbp-0x60]
cmp edi, r9d
- mov rax, gword ptr [rbp-0x90]
+ mov rax, gword ptr [rbp-0x98]
; gcrRegs +[rax]
jg SHORT G_M35178_IG07
;; size=55 bbWeight=16 PerfScore 260.00
@@ -251,10 +250,10 @@ G_M35178_IG10: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rbx rdi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x60], rax
+ mov gword ptr [rbp-0x68], rax
; GC ptr vars +{V06}
;; size=56 bbWeight=0.50 PerfScore 6.00
-G_M35178_IG11: ; bbWeight=0.50, gcVars=00000000000000000000000800000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35178_IG11: ; bbWeight=0.50, gcVars=00000000000000000000000400000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
jmp SHORT G_M35178_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M35178_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
@@ -262,7 +261,7 @@ G_M35178_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
@@ -279,7 +278,7 @@ G_M35178_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Array:Clear(System.Array)]
; gcrRegs -[rax rdx rdi]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x60]
+ mov rax, gword ptr [rbp-0x68]
; gcrRegs +[rax]
;; size=63 bbWeight=2 PerfScore 22.50
G_M35178_IG13: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
@@ -289,7 +288,7 @@ G_M35178_IG13: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rdi]
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
mov rbx, rdi
; gcrRegs +[rbx]
@@ -308,7 +307,7 @@ G_M35178_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x60]
+ mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; GC ptr vars -{V06}
@@ -342,15 +341,15 @@ G_M35178_IG15: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rdi r14] +[rax]
; gcr arg pop 0
...
@@ -3,48 +3,48 @@
; Tier-0 switched to FullOpts code
; optimized code
; rbp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T05] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
+; V01 arg1 [V01,T03] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> r14
+; V03 loc1 [V03,T04] ( 9, 4.75) int -> r14
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T06] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T12] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T11] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T19] ( 2, 1 ) int -> rdi
-; V14 tmp9 [V14,T07] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T13] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T08] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T14] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T15] ( 2, 2 ) int -> rsi "impAppendStmt"
+; V13 tmp8 [V13,T18] ( 2, 1 ) int -> rdi
+; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T12] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T14] ( 2, 2 ) int -> rsi "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T20] ( 2, 1 ) int -> rdi
+; V23 tmp18 [V23,T19] ( 2, 1 ) int -> rdi
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [rbp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T10] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
+; V25 tmp20 [V25,T09] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T21] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T11] ( 2, 2 ) byref -> r15 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T22] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> r15 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,13 +53,12 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T16] ( 2, 2 ) int -> rdi "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T17] ( 2, 2 ) int -> rsi "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T09] ( 3, 3 ) long -> rax "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T15] ( 2, 2 ) int -> rdi "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T16] ( 2, 2 ) int -> rsi "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T08] ( 3, 3 ) long -> rax "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 tmp44 [V49,T03] ( 11, 6 ) byref -> rbx single-def "shadowVar"
-; V50 cse0 [V50,T18] ( 3, 1.50) int -> rsi "CSE - moderate"
-; V51 cse1 [V51,T00] ( 4, 14 ) int -> rdi "CSE - aggressive"
+; V49 tmp44 [V49,T01] ( 11, 6 ) byref -> rbx single-def "shadowVar"
+; V50 cse0 [V50,T17] ( 3, 1.50) int -> rsi "CSE - moderate"
;
; Lcl frame size = 56
@@ -93,7 +92,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r1
lea rdi, [rbp-0x50]
mov edx, 2
call [<unknown method>]
- ; gcr arg pop 0
;; size=22 bbWeight=0.50 PerfScore 2.25
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
mov edi, dword ptr [rbp-0x50]
@@ -107,29 +105,46 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15},
mov r14d, 3
jmp SHORT G_M46478_IG06
;; size=37 bbWeight=1 PerfScore 9.75
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
- mov r14d, edi
- test r14d, r14d
- jle SHORT G_M46478_IG07
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
- lea edi, [r14-0x01]
- cmp edi, 4
- jae G_M46478_IG20
- mov esi, edi
- cmp dword ptr [r15+4*rsi], 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ mov r14d, 2
+ jmp SHORT G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp dword ptr [r15+0x08], 0
je SHORT G_M46478_IG05
- ;; size=22 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ mov r14d, 1
+ jmp SHORT G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp dword ptr [r15+0x04], 0
+ je SHORT G_M46478_IG08
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ xor r14d, r14d
+ jmp SHORT G_M46478_IG13
+ ;; size=5 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp dword ptr [r15], 0
+ je SHORT G_M46478_IG11
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
test r14d, r14d
- jne SHORT G_M46478_IG12
+ jne SHORT G_M46478_IG18
;; size=5 bbWeight=1 PerfScore 1.25
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs -[r15]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M46478_IG21
+ je G_M46478_IG27
;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rdi, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
@@ -144,15 +159,14 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
mov rdi, 0xD1FFAB1E
; byrRegs -[rdi]
cmp qword ptr [rbp-0x20], rdi
- je SHORT G_M46478_IG10
+ je SHORT G_M46478_IG16
call CORINFO_HELP_FAIL_FAST
; byrRegs -[rsi]
- ; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 4.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop r14
@@ -160,13 +174,13 @@ G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
+G_M46478_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
; byrRegs +[rbx r15]
cmp r14d, 1
- jne SHORT G_M46478_IG15
+ jne SHORT G_M46478_IG21
mov esi, dword ptr [r15]
test esi, esi
- jle SHORT G_M46478_IG15
+ jle SHORT G_M46478_IG21
mov dword ptr [rbx+0x08], esi
mov esi, dword ptr [rbx+0x08]
mov edi, -1
@@ -180,16 +194,15 @@ G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov gword ptr [rbx], rsi
mov rdi, 0xD1FFAB1E
cmp qword ptr [rbp-0x20], rdi
- je SHORT G_M46478_IG13
+ je SHORT G_M46478_IG19
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[rsi]
; byrRegs -[rbx r15]
- ; gcr arg pop 0
;; size=72 bbWeight=0.50 PerfScore 9.88
-G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop r14
@@ -197,13 +210,12 @@ G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
; byrRegs +[rbx r15]
movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
- ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
mov rdi, rbx
@@ -215,28 +227,28 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rdi]
mov esi, dword ptr [r15]
cmp dword ptr [rdi+0x08], 0
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rdi+0x10], esi
cmp r14d, 1
- jle SHORT G_M46478_IG16
+ jle SHORT G_M46478_IG22
mov rdi, gword ptr [rbx]
mov esi, dword ptr [r15+0x04]
cmp dword ptr [rdi+0x08], 1
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rdi+0x14], esi
;; size=66 bbWeight=0.50 PerfScore 11.12
-G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M46478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
; gcrRegs -[rdi]
cmp r14d, 2
...
@@ -12,14 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T29] ( 8, 7 ) ubyte -> [rbp-0x2C] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 11,116 ) ref -> r12 class-hnd <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 68 ) ref -> r12 class-hnd <<unknown class>>
; V05 loc2 [V05,T27] ( 3, 12 ) int -> rsi
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> registers class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> registers class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T14] ( 5, 35 ) int -> [rbp-0x30] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T37] ( 2, 5 ) ref -> rbx class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T04] ( 16, 74 ) ref -> [rbp-0x60] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T03] ( 16, 74 ) ref -> [rbp-0x60] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 6, 6 ) ubyte -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T25] ( 4, 13 ) int -> rbx
;* V14 loc11 [V14,T46] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
@@ -60,7 +60,7 @@
; V49 tmp29 [V49,T31] ( 6, 6 ) ref -> rbx class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V50 tmp30 [V50,T30] ( 5, 5 ) long -> rbx single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V51 tmp31 [V51,T15] ( 5, 35 ) int -> [rbp-0x4C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V52 tmp32 [V52,T05] ( 13, 71 ) int -> rsi "field V09._ref (fldOffset=0x0)" P-INDEP
+; V52 tmp32 [V52,T04] ( 13, 71 ) int -> rsi "field V09._ref (fldOffset=0x0)" P-INDEP
; V53 tmp33 [V53,T19] ( 4, 24 ) int -> r15 "field V10._ref (fldOffset=0x0)" P-INDEP
;* V54 tmp34 [V54,T49] ( 0, 0 ) int -> zero-ref single-def "field V21._ref (fldOffset=0x0)" P-INDEP
;* V55 tmp35 [V55,T24] ( 0, 0 ) int -> zero-ref "field V22._ref (fldOffset=0x0)" P-INDEP
@@ -78,13 +78,13 @@
; V67 tmp47 [V67,T09] ( 3, 48 ) ref -> rdi "arr expr"
; V68 tmp48 [V68,T10] ( 3, 48 ) ref -> rdi "arr expr"
; V69 PSPSym [V69,T50] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
-; V70 cse0 [V70,T23] ( 4, 16 ) byref -> rsi "CSE - moderate"
-; V71 cse1 [V71,T11] ( 3, 48 ) long -> rdi "CSE - moderate"
-; V72 cse2 [V72,T02] ( 5,112 ) long -> r8 "CSE - aggressive"
+; V70 cse0 [V70,T11] ( 3, 48 ) long -> rdi "CSE - moderate"
+; V71 cse1 [V71,T01] ( 5,112 ) byref -> r8 "CSE - aggressive"
+; V72 cse2 [V72,T23] ( 4, 16 ) byref -> rsi "CSE - moderate"
; V73 cse3 [V73,T22] ( 4, 19 ) long -> r15 "CSE - moderate"
; V74 cse4 [V74,T44] ( 3, 3 ) ref -> rcx "CSE - conservative"
; V75 cse5 [V75,T45] ( 3, 3 ) ref -> rdi "CSE - conservative"
-; V76 cse6 [V76,T12] ( 4, 44 ) int -> [rbp-0x50] spill-single-def "CSE - moderate"
+; V76 cse6 [V76,T12] ( 4, 44 ) int -> [rbp-0x50] spill-single-def "CSE - aggressive"
; V77 cse7 [V77,T21] ( 3, 24 ) int -> rax "CSE - moderate"
; V78 cse8 [V78,T28] ( 3, 12 ) int -> rcx "CSE - moderate"
; V79 cse9 [V79,T32] ( 6, 6 ) ref -> rsi multi-def "CSE - moderate"
@@ -193,7 +193,7 @@ G_M744_IG10: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
xor esi, esi
mov dword ptr [rbp-0x38], esi
;; size=12 bbWeight=1 PerfScore 2.50
-G_M744_IG11: ; bbWeight=1, gcVars=0000000000040010 {V00 V11}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG11: ; bbWeight=1, gcVars=0000000000040008 {V00 V11}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi]
; GC ptr vars -{V18}
cmp byte ptr [rbp-0x38], 0
@@ -210,9 +210,9 @@ G_M744_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M744_IG14: ; bbWeight=1, gcVars=0000000000040010 {V00 V11}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG14: ; bbWeight=1, gcVars=0000000000040008 {V00 V11}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r14]
- ; GC ptr vars +{V04 V11}
+ ; GC ptr vars +{V11}
lea rsi, [rbp-0x38]
mov rdi, r14
; gcrRegs +[rdi]
@@ -304,15 +304,17 @@ G_M744_IG19: ; bbWeight=4, gcrefRegs=5000 {r12 r14}, byrefRegs=0000 {}, b
;; size=45 bbWeight=4 PerfScore 38.00
G_M744_IG20: ; bbWeight=32, gcrefRegs=5000 {r12 r14}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x40], edx
- mov r8d, edx
- shl r8, 4
- mov rsi, gword ptr [r12+r8+0x18]
+ mov esi, edx
+ shl rsi, 4
+ lea r8, bword ptr [r12+rsi+0x10]
+ ; byrRegs +[r8]
+ mov rsi, gword ptr [r8+0x08]
; gcrRegs +[rsi]
test rsi, rsi
je SHORT G_M744_IG24
- ;; size=20 bbWeight=32 PerfScore 160.00
-G_M744_IG21: ; bbWeight=16, gcrefRegs=5040 {rsi r12 r14}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [r12+r8+0x10]
+ ;; size=23 bbWeight=32 PerfScore 192.00
+G_M744_IG21: ; bbWeight=16, gcrefRegs=5040 {rsi r12 r14}, byrefRegs=0100 {r8}, byref, isz
+ mov rdi, qword ptr [r8]
mov r9, rdi
mov r10, 0xD1FFAB1E
and r9, r10
@@ -324,17 +326,19 @@ G_M744_IG21: ; bbWeight=16, gcrefRegs=5040 {rsi r12 r14}, byrefRegs=0000
; gcrRegs +[rdi]
call [System.Runtime.Caching.ExpiresBucket:AddCount(System.DateTime):this]
; gcrRegs -[rdi]
+ ; byrRegs -[r8]
; gcr arg pop 0
jmp SHORT G_M744_IG23
- ;; size=40 bbWeight=16 PerfScore 152.00
-G_M744_IG22: ; bbWeight=16, gcrefRegs=5040 {rsi r12 r14}, byrefRegs=0000 {}, byref
+ ;; size=38 bbWeight=16 PerfScore 152.00
+G_M744_IG22: ; bbWeight=16, gcrefRegs=5040 {rsi r12 r14}, byrefRegs=0100 {r8}, byref
; gcrRegs +[rsi]
+ ; byrRegs +[r8]
mov byte ptr [rsi+0x30], 255
xor edi, edi
mov dword ptr [rsi+0x50], edi
- mov dword ptr [r12+r8+0x14], 1
+ mov dword ptr [r8+0x04], 1
mov edi, dword ptr [rbp-0x4C]
- mov dword ptr [r12+r8+0x10], edi
+ mov dword ptr [r8], edi
mov edi, r13d
shl edi, 8
mov edx, dword ptr [rbp-0x40]
@@ -347,8 +351,9 @@ G_M744_IG22: ; bbWeight=16, gcrefRegs=5040 {rsi r12 r14}, byrefRegs=0000
mov dword ptr [rbp-0x30], edi
inc dword ptr [r14+0x28]
mov dword ptr [rbp-0x40], edx
- ;; size=59 bbWeight=16 PerfScore 236.00
+ ;; size=56 bbWeight=16 PerfScore 236.00
G_M744_IG23: ; bbWeight=16, gcrefRegs=5000 {r12 r14}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r8]
mov ecx, dword ptr [rbp-0x3C]
dec ecx
mov dword ptr [rbp-0x3C], ecx
@@ -381,7 +386,7 @@ G_M744_IG27: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
;; size=11 bbWeight=1 PerfScore 4.00
G_M744_IG28: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r14]
- ; GC ptr vars -{V04 V11}
+ ; GC ptr vars -{V11}
cmp byte ptr [rbp-0x38], 0
je SHORT G_M744_IG32
mov rdi, gword ptr [rbp-0x58]
@@ -783,7 +788,7 @@ G_M744_IG68: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1359, prolog size 43, PerfScore 1481.25, instruction count 417, allocated bytes for code 1359 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1357, prolog size 43, PerfScore 1513.25, instruction count 418, allocated bytes for code 1357 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -3,48 +3,48 @@
; FullOpts code
; optimized code
; rbp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) byref -> rdi this single-def
-; V01 arg1 [V01,T05] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T02] ( 3, 3 ) byref -> rdi this single-def
+; V01 arg1 [V01,T03] ( 3, 3 ) struct (16) [rbp-0x40] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> r14
+; V03 loc1 [V03,T04] ( 9, 4.75) int -> r14
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T06] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T12] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T11] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T19] ( 2, 1 ) int -> rdi
-; V14 tmp9 [V14,T07] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T13] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T08] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T14] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T15] ( 2, 2 ) int -> rsi "impAppendStmt"
+; V13 tmp8 [V13,T18] ( 2, 1 ) int -> rdi
+; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T12] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> rdi class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) int -> rsi "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T14] ( 2, 2 ) int -> rsi "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T20] ( 2, 1 ) int -> rdi
+; V23 tmp18 [V23,T19] ( 2, 1 ) int -> rdi
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [rbp-0x50] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T10] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
+; V25 tmp20 [V25,T09] ( 3, 2.50) int -> rsi "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T21] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T11] ( 2, 2 ) byref -> r15 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T22] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> r15 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,13 +53,12 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T16] ( 2, 2 ) int -> rdi "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T17] ( 2, 2 ) int -> rsi "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T09] ( 3, 3 ) long -> rax "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T15] ( 2, 2 ) int -> rdi "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T16] ( 2, 2 ) int -> rsi "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T08] ( 3, 3 ) long -> rax "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 tmp44 [V49,T03] ( 11, 6 ) byref -> rbx single-def "shadowVar"
-; V50 cse0 [V50,T18] ( 3, 1.50) int -> rsi "CSE - moderate"
-; V51 cse1 [V51,T00] ( 4, 14 ) int -> rdi "CSE - aggressive"
+; V49 tmp44 [V49,T01] ( 11, 6 ) byref -> rbx single-def "shadowVar"
+; V50 cse0 [V50,T17] ( 3, 1.50) int -> rsi "CSE - moderate"
;
; Lcl frame size = 56
@@ -93,7 +92,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r1
lea rdi, [rbp-0x50]
mov edx, 2
call [<unknown method>]
- ; gcr arg pop 0
;; size=22 bbWeight=0.50 PerfScore 2.25
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
mov edi, dword ptr [rbp-0x50]
@@ -107,29 +105,46 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15},
mov r14d, 3
jmp SHORT G_M46478_IG06
;; size=37 bbWeight=1 PerfScore 9.75
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
- mov r14d, edi
- test r14d, r14d
- jle SHORT G_M46478_IG07
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
- lea edi, [r14-0x01]
- cmp edi, 4
- jae G_M46478_IG20
- mov esi, edi
- cmp dword ptr [r15+4*rsi], 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ mov r14d, 2
+ jmp SHORT G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp dword ptr [r15+0x08], 0
je SHORT G_M46478_IG05
- ;; size=22 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ mov r14d, 1
+ jmp SHORT G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp dword ptr [r15+0x04], 0
+ je SHORT G_M46478_IG08
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ xor r14d, r14d
+ jmp SHORT G_M46478_IG13
+ ;; size=5 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ cmp dword ptr [r15], 0
+ je SHORT G_M46478_IG11
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
test r14d, r14d
- jne SHORT G_M46478_IG12
+ jne SHORT G_M46478_IG18
;; size=5 bbWeight=1 PerfScore 1.25
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs -[r15]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M46478_IG21
+ je G_M46478_IG27
;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rdi, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
@@ -144,15 +159,14 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
mov rdi, 0xD1FFAB1E
; byrRegs -[rdi]
cmp qword ptr [rbp-0x20], rdi
- je SHORT G_M46478_IG10
+ je SHORT G_M46478_IG16
call CORINFO_HELP_FAIL_FAST
; byrRegs -[rsi]
- ; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 4.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop r14
@@ -160,13 +174,13 @@ G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
+G_M46478_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
; byrRegs +[rbx r15]
cmp r14d, 1
- jne SHORT G_M46478_IG15
+ jne SHORT G_M46478_IG21
mov esi, dword ptr [r15]
test esi, esi
- jle SHORT G_M46478_IG15
+ jle SHORT G_M46478_IG21
mov dword ptr [rbx+0x08], esi
mov esi, dword ptr [rbx+0x08]
mov edi, -1
@@ -180,16 +194,15 @@ G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov gword ptr [rbx], rsi
mov rdi, 0xD1FFAB1E
cmp qword ptr [rbp-0x20], rdi
- je SHORT G_M46478_IG13
+ je SHORT G_M46478_IG19
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[rsi]
; byrRegs -[rbx r15]
- ; gcr arg pop 0
;; size=72 bbWeight=0.50 PerfScore 9.88
-G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop r14
@@ -197,13 +210,12 @@ G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
; byrRegs +[rbx r15]
movsxd rsi, r14d
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
- ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
mov rdi, rbx
@@ -215,28 +227,28 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rdi]
mov esi, dword ptr [r15]
cmp dword ptr [rdi+0x08], 0
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rdi+0x10], esi
cmp r14d, 1
- jle SHORT G_M46478_IG16
+ jle SHORT G_M46478_IG22
mov rdi, gword ptr [rbx]
mov esi, dword ptr [r15+0x04]
cmp dword ptr [rdi+0x08], 1
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rdi+0x14], esi
;; size=66 bbWeight=0.50 PerfScore 11.12
-G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M46478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
; gcrRegs -[rdi]
cmp r14d, 2
...
@@ -9,11 +9,11 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> r15 class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T04] ( 20,127 ) ref -> r15 class-hnd exact single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T48] ( 3, 7 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rbp-0x30]
+; V05 loc1 [V05,T00] ( 72,463 ) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rbp-0x30]
; V07 loc3 [V07,T06] ( 12,102 ) int -> [rbp-0x34]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rbp-0x38]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -128,7 +128,7 @@
; V118 tmp97 [V118,T39] ( 2, 8 ) byref -> rsi "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T43] ( 2, 8 ) int -> rdx "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T35] ( 3, 12 ) int -> rcx "CSE - conservative"
-; V121 cse1 [V121,T03] ( 18,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
+; V121 cse1 [V121,T03] ( 20,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> [rbp-0x68] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 168
@@ -154,7 +154,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=40 bbWeight=1 PerfScore 8.00
G_M36935_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
test r15, r15
- je G_M36935_IG72
+ je G_M36935_IG75
test r14, r14
jne SHORT G_M36935_IG04
;; size=14 bbWeight=1 PerfScore 2.50
@@ -222,7 +222,7 @@ G_M36935_IG10: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C00
mov edx, dword ptr [r15+0x08]
mov dword ptr [rbp-0x64], edx
cmp edx, ecx
- jbe G_M36935_IG68
+ jbe G_M36935_IG71
;; size=15 bbWeight=8 PerfScore 34.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov edi, ecx
@@ -267,9 +267,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
; gcr arg pop 0
mov dword ptr [rbp-0x50], eax
test eax, eax
- jl G_M36935_IG69
+ jl G_M36935_IG72
cmp eax, dword ptr [rbp-0x60]
- ja G_M36935_IG79
+ ja G_M36935_IG82
mov rsi, bword ptr [rbp-0xC0]
; byrRegs +[rsi]
mov edx, eax
@@ -283,12 +283,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
add ecx, dword ptr [rbp-0x50]
mov eax, dword ptr [rbp-0x64]
cmp ecx, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov edi, ecx
movzx rdx, word ptr [r15+2*rdi+0x0C]
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov dword ptr [rbp-0x2C], ecx
mov edi, ecx
movzx r8, word ptr [r15+2*rdi+0x0C]
@@ -324,7 +324,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
;; size=10 bbWeight=4 PerfScore 13.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, 123
- jne G_M36935_IG73
+ jne G_M36935_IG76
xor edx, edx
mov dword ptr [rbp-0x34], edx
xor r9d, r9d
@@ -338,7 +338,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
mov ecx, dword ptr [rbp-0x2C]
lea edi, [rcx-0x01]
cmp edi, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx-0x01]
cmp word ptr [r15+2*rdi+0x0C], 123
@@ -379,7 +379,7 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
inc ecx
mov eax, dword ptr [rbp-0x64]
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
mov edi, r8d
@@ -392,14 +392,14 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
G_M36935_IG23: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
mov r10, bword ptr [rbp-0xB8]
; byrRegs +[r10]
- jmp G_M36935_IG42
+ jmp G_M36935_IG45
;; size=12 bbWeight=2 PerfScore 6.00
G_M36935_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14-r15]
; byrRegs -[rbx r10 r13]
; GC ptr vars -{V04 V88}
mov ecx, dword ptr [rbp-0x2C]
- jmp G_M36935_IG74
+ jmp G_M36935_IG77
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; gcrRegs +[r14-r15]
@@ -410,7 +410,7 @@ G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs
mov dword ptr [rbp-0x3C], esi
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
mov esi, dword ptr [rbp-0x3C]
@@ -424,102 +424,118 @@ G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {r
;; size=18 bbWeight=16 PerfScore 48.00
G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 32
- jne SHORT G_M36935_IG29
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG28: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jne SHORT G_M36935_IG31
+ test ecx, ecx
+ jl SHORT G_M36935_IG30
+ ;; size=9 bbWeight=2 PerfScore 5.00
+G_M36935_IG28: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
je SHORT G_M36935_IG28
- ;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
- cmp edi, 44
- mov edx, dword ptr [rbp-0x34]
- jne G_M36935_IG36
- ;; size=12 bbWeight=2 PerfScore 4.50
-G_M36935_IG30: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ ;; size=23 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jmp SHORT G_M36935_IG31
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG30: ; bbWeight=0.16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
je SHORT G_M36935_IG30
+ ;; size=23 bbWeight=0.16 PerfScore 0.80
+G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ cmp edi, 44
+ mov edx, dword ptr [rbp-0x34]
+ jne G_M36935_IG38
+ ;; size=12 bbWeight=2 PerfScore 4.50
+G_M36935_IG32: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ inc ecx
+ cmp eax, ecx
+ jbe G_M36935_IG78
+ mov edi, ecx
+ movzx rdi, word ptr [r15+2*rdi+0x0C]
+ cmp edi, 32
+ je SHORT G_M36935_IG32
;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG33: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 45
- jne SHORT G_M36935_IG32
+ jne SHORT G_M36935_IG34
mov dword ptr [rbp-0x38], 1
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
;; size=30 bbWeight=2 PerfScore 12.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG34: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
lea edx, [rdi-0x30]
cmp edx, 10
- jae G_M36935_IG74
+ jae G_M36935_IG77
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
;; size=22 bbWeight=2 PerfScore 6.50
-G_M36935_IG33: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG35: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp ecx, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
lea r8d, [rdi-0x30]
cmp r8d, 9
- ja SHORT G_M36935_IG34
+ ja SHORT G_M36935_IG36
cmp edx, 0xD1FFAB1E
- jl SHORT G_M36935_IG39
+ jl SHORT G_M36935_IG41
;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG34: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG36: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 32
- jne SHORT G_M36935_IG36
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG35: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jne SHORT G_M36935_IG38
+ test ecx, ecx
+ jl SHORT G_M36935_IG42
+ ;; size=9 bbWeight=2 PerfScore 5.00
+G_M36935_IG37: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
- je SHORT G_M36935_IG35
- ;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG36: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ je SHORT G_M36935_IG37
+ ;; size=23 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG38: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 125
mov r10, bword ptr [rbp-0xB8]
; byrRegs +[r10]
- je SHORT G_M36935_IG38
+ je SHORT G_M36935_IG40
cmp edi, 58
- jne G_M36935_IG76
+ jne G_M36935_IG79
mov r8d, ecx
;; size=24 bbWeight=2 PerfScore 7.50
...
@@ -9,11 +9,11 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> r15 class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T04] ( 20,127 ) ref -> r15 class-hnd exact single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T48] ( 3, 7 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rbp-0x30]
+; V05 loc1 [V05,T00] ( 72,463 ) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rbp-0x30]
; V07 loc3 [V07,T06] ( 12,102 ) int -> [rbp-0x34]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rbp-0x38]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -128,7 +128,7 @@
; V118 tmp97 [V118,T39] ( 2, 8 ) byref -> rsi "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T43] ( 2, 8 ) int -> rdx "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T35] ( 3, 12 ) int -> rcx "CSE - conservative"
-; V121 cse1 [V121,T03] ( 18,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
+; V121 cse1 [V121,T03] ( 20,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> [rbp-0x68] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 168
@@ -154,7 +154,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=40 bbWeight=1 PerfScore 8.00
G_M36935_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
test r15, r15
- je G_M36935_IG72
+ je G_M36935_IG75
test r14, r14
jne SHORT G_M36935_IG04
;; size=14 bbWeight=1 PerfScore 2.50
@@ -222,7 +222,7 @@ G_M36935_IG10: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C00
mov edx, dword ptr [r15+0x08]
mov dword ptr [rbp-0x64], edx
cmp edx, ecx
- jbe G_M36935_IG68
+ jbe G_M36935_IG71
;; size=15 bbWeight=8 PerfScore 34.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov edi, ecx
@@ -267,9 +267,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
; gcr arg pop 0
mov dword ptr [rbp-0x50], eax
test eax, eax
- jl G_M36935_IG69
+ jl G_M36935_IG72
cmp eax, dword ptr [rbp-0x60]
- ja G_M36935_IG79
+ ja G_M36935_IG82
mov rsi, bword ptr [rbp-0xC0]
; byrRegs +[rsi]
mov edx, eax
@@ -283,12 +283,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
add ecx, dword ptr [rbp-0x50]
mov eax, dword ptr [rbp-0x64]
cmp ecx, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov edi, ecx
movzx rdx, word ptr [r15+2*rdi+0x0C]
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov dword ptr [rbp-0x2C], ecx
mov edi, ecx
movzx r8, word ptr [r15+2*rdi+0x0C]
@@ -324,7 +324,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
;; size=10 bbWeight=4 PerfScore 13.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, 123
- jne G_M36935_IG73
+ jne G_M36935_IG76
xor edx, edx
mov dword ptr [rbp-0x34], edx
xor r9d, r9d
@@ -338,7 +338,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
mov ecx, dword ptr [rbp-0x2C]
lea edi, [rcx-0x01]
cmp edi, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx-0x01]
cmp word ptr [r15+2*rdi+0x0C], 123
@@ -379,7 +379,7 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
inc ecx
mov eax, dword ptr [rbp-0x64]
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
mov edi, r8d
@@ -392,14 +392,14 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
G_M36935_IG23: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
mov r10, bword ptr [rbp-0xB8]
; byrRegs +[r10]
- jmp G_M36935_IG42
+ jmp G_M36935_IG45
;; size=12 bbWeight=2 PerfScore 6.00
G_M36935_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14-r15]
; byrRegs -[rbx r10 r13]
; GC ptr vars -{V04 V88}
mov ecx, dword ptr [rbp-0x2C]
- jmp G_M36935_IG74
+ jmp G_M36935_IG77
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; gcrRegs +[r14-r15]
@@ -410,7 +410,7 @@ G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs
mov dword ptr [rbp-0x3C], esi
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
mov esi, dword ptr [rbp-0x3C]
@@ -424,102 +424,118 @@ G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {r
;; size=18 bbWeight=16 PerfScore 48.00
G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 32
- jne SHORT G_M36935_IG29
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG28: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jne SHORT G_M36935_IG31
+ test ecx, ecx
+ jl SHORT G_M36935_IG30
+ ;; size=9 bbWeight=2 PerfScore 5.00
+G_M36935_IG28: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
je SHORT G_M36935_IG28
- ;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
- cmp edi, 44
- mov edx, dword ptr [rbp-0x34]
- jne G_M36935_IG36
- ;; size=12 bbWeight=2 PerfScore 4.50
-G_M36935_IG30: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ ;; size=23 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jmp SHORT G_M36935_IG31
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG30: ; bbWeight=0.16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
je SHORT G_M36935_IG30
+ ;; size=23 bbWeight=0.16 PerfScore 0.80
+G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ cmp edi, 44
+ mov edx, dword ptr [rbp-0x34]
+ jne G_M36935_IG38
+ ;; size=12 bbWeight=2 PerfScore 4.50
+G_M36935_IG32: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ inc ecx
+ cmp eax, ecx
+ jbe G_M36935_IG78
+ mov edi, ecx
+ movzx rdi, word ptr [r15+2*rdi+0x0C]
+ cmp edi, 32
+ je SHORT G_M36935_IG32
;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG33: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 45
- jne SHORT G_M36935_IG32
+ jne SHORT G_M36935_IG34
mov dword ptr [rbp-0x38], 1
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
;; size=30 bbWeight=2 PerfScore 12.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG34: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
lea edx, [rdi-0x30]
cmp edx, 10
- jae G_M36935_IG74
+ jae G_M36935_IG77
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
;; size=22 bbWeight=2 PerfScore 6.50
-G_M36935_IG33: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG35: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp ecx, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
lea r8d, [rdi-0x30]
cmp r8d, 9
- ja SHORT G_M36935_IG34
+ ja SHORT G_M36935_IG36
cmp edx, 0xD1FFAB1E
- jl SHORT G_M36935_IG39
+ jl SHORT G_M36935_IG41
;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG34: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG36: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 32
- jne SHORT G_M36935_IG36
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG35: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jne SHORT G_M36935_IG38
+ test ecx, ecx
+ jl SHORT G_M36935_IG42
+ ;; size=9 bbWeight=2 PerfScore 5.00
+G_M36935_IG37: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
- je SHORT G_M36935_IG35
- ;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG36: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ je SHORT G_M36935_IG37
+ ;; size=23 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG38: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 125
mov r10, bword ptr [rbp-0xB8]
; byrRegs +[r10]
- je SHORT G_M36935_IG38
+ je SHORT G_M36935_IG40
cmp edi, 58
- jne G_M36935_IG76
+ jne G_M36935_IG79
mov r8d, ecx
;; size=24 bbWeight=2 PerfScore 7.50
...
@@ -9,11 +9,11 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> r15 class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T04] ( 20,127 ) ref -> r15 class-hnd exact single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T48] ( 3, 7 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rbp-0x30]
+; V05 loc1 [V05,T00] ( 72,463 ) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rbp-0x30]
; V07 loc3 [V07,T06] ( 12,102 ) int -> [rbp-0x34]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rbp-0x38]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -128,7 +128,7 @@
; V118 tmp97 [V118,T39] ( 2, 8 ) byref -> rsi "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T43] ( 2, 8 ) int -> rdx "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T35] ( 3, 12 ) int -> rcx "CSE - conservative"
-; V121 cse1 [V121,T03] ( 18,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
+; V121 cse1 [V121,T03] ( 20,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> [rbp-0x68] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 168
@@ -154,7 +154,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=40 bbWeight=1 PerfScore 8.00
G_M36935_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
test r15, r15
- je G_M36935_IG72
+ je G_M36935_IG75
test r14, r14
jne SHORT G_M36935_IG04
;; size=14 bbWeight=1 PerfScore 2.50
@@ -222,7 +222,7 @@ G_M36935_IG10: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C00
mov edx, dword ptr [r15+0x08]
mov dword ptr [rbp-0x64], edx
cmp edx, ecx
- jbe G_M36935_IG68
+ jbe G_M36935_IG71
;; size=15 bbWeight=8 PerfScore 34.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov edi, ecx
@@ -267,9 +267,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
; gcr arg pop 0
mov dword ptr [rbp-0x50], eax
test eax, eax
- jl G_M36935_IG69
+ jl G_M36935_IG72
cmp eax, dword ptr [rbp-0x60]
- ja G_M36935_IG79
+ ja G_M36935_IG82
mov rsi, bword ptr [rbp-0xC0]
; byrRegs +[rsi]
mov edx, eax
@@ -283,12 +283,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
add ecx, dword ptr [rbp-0x50]
mov eax, dword ptr [rbp-0x64]
cmp ecx, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov edi, ecx
movzx rdx, word ptr [r15+2*rdi+0x0C]
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov dword ptr [rbp-0x2C], ecx
mov edi, ecx
movzx r8, word ptr [r15+2*rdi+0x0C]
@@ -324,7 +324,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
;; size=10 bbWeight=4 PerfScore 13.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, 123
- jne G_M36935_IG73
+ jne G_M36935_IG76
xor edx, edx
mov dword ptr [rbp-0x34], edx
xor r9d, r9d
@@ -338,7 +338,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
mov ecx, dword ptr [rbp-0x2C]
lea edi, [rcx-0x01]
cmp edi, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx-0x01]
cmp word ptr [r15+2*rdi+0x0C], 123
@@ -379,7 +379,7 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
inc ecx
mov eax, dword ptr [rbp-0x64]
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
mov edi, r8d
@@ -392,14 +392,14 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
G_M36935_IG23: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
mov r10, bword ptr [rbp-0xB8]
; byrRegs +[r10]
- jmp G_M36935_IG42
+ jmp G_M36935_IG45
;; size=12 bbWeight=2 PerfScore 6.00
G_M36935_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14-r15]
; byrRegs -[rbx r10 r13]
; GC ptr vars -{V04 V88}
mov ecx, dword ptr [rbp-0x2C]
- jmp G_M36935_IG74
+ jmp G_M36935_IG77
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; gcrRegs +[r14-r15]
@@ -410,7 +410,7 @@ G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs
mov dword ptr [rbp-0x3C], esi
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
mov esi, dword ptr [rbp-0x3C]
@@ -424,102 +424,118 @@ G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {r
;; size=18 bbWeight=16 PerfScore 48.00
G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 32
- jne SHORT G_M36935_IG29
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG28: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jne SHORT G_M36935_IG31
+ test ecx, ecx
+ jl SHORT G_M36935_IG30
+ ;; size=9 bbWeight=2 PerfScore 5.00
+G_M36935_IG28: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
je SHORT G_M36935_IG28
- ;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
- cmp edi, 44
- mov edx, dword ptr [rbp-0x34]
- jne G_M36935_IG36
- ;; size=12 bbWeight=2 PerfScore 4.50
-G_M36935_IG30: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ ;; size=23 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jmp SHORT G_M36935_IG31
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG30: ; bbWeight=0.16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
je SHORT G_M36935_IG30
+ ;; size=23 bbWeight=0.16 PerfScore 0.80
+G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ cmp edi, 44
+ mov edx, dword ptr [rbp-0x34]
+ jne G_M36935_IG38
+ ;; size=12 bbWeight=2 PerfScore 4.50
+G_M36935_IG32: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ inc ecx
+ cmp eax, ecx
+ jbe G_M36935_IG78
+ mov edi, ecx
+ movzx rdi, word ptr [r15+2*rdi+0x0C]
+ cmp edi, 32
+ je SHORT G_M36935_IG32
;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG33: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 45
- jne SHORT G_M36935_IG32
+ jne SHORT G_M36935_IG34
mov dword ptr [rbp-0x38], 1
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
;; size=30 bbWeight=2 PerfScore 12.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG34: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
lea edx, [rdi-0x30]
cmp edx, 10
- jae G_M36935_IG74
+ jae G_M36935_IG77
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
;; size=22 bbWeight=2 PerfScore 6.50
-G_M36935_IG33: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG35: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp ecx, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
lea r8d, [rdi-0x30]
cmp r8d, 9
- ja SHORT G_M36935_IG34
+ ja SHORT G_M36935_IG36
cmp edx, 0xD1FFAB1E
- jl SHORT G_M36935_IG39
+ jl SHORT G_M36935_IG41
;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG34: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG36: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 32
- jne SHORT G_M36935_IG36
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG35: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jne SHORT G_M36935_IG38
+ test ecx, ecx
+ jl SHORT G_M36935_IG42
+ ;; size=9 bbWeight=2 PerfScore 5.00
+G_M36935_IG37: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
- je SHORT G_M36935_IG35
- ;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG36: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ je SHORT G_M36935_IG37
+ ;; size=23 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG38: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 125
mov r10, bword ptr [rbp-0xB8]
; byrRegs +[r10]
- je SHORT G_M36935_IG38
+ je SHORT G_M36935_IG40
cmp edi, 58
- jne G_M36935_IG76
+ jne G_M36935_IG79
mov r8d, ecx
;; size=24 bbWeight=2 PerfScore 7.50
...
@@ -9,11 +9,11 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> r15 class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T04] ( 20,127 ) ref -> r15 class-hnd exact single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T48] ( 3, 7 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rbp-0x30]
+; V05 loc1 [V05,T00] ( 72,463 ) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rbp-0x30]
; V07 loc3 [V07,T06] ( 12,102 ) int -> [rbp-0x34]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rbp-0x38]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -128,7 +128,7 @@
; V118 tmp97 [V118,T39] ( 2, 8 ) byref -> rsi "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T43] ( 2, 8 ) int -> rdx "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T35] ( 3, 12 ) int -> rcx "CSE - conservative"
-; V121 cse1 [V121,T03] ( 18,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
+; V121 cse1 [V121,T03] ( 20,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> [rbp-0x68] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 168
@@ -154,7 +154,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=40 bbWeight=1 PerfScore 8.00
G_M36935_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
test r15, r15
- je G_M36935_IG72
+ je G_M36935_IG75
test r14, r14
jne SHORT G_M36935_IG04
;; size=14 bbWeight=1 PerfScore 2.50
@@ -222,7 +222,7 @@ G_M36935_IG10: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C00
mov edx, dword ptr [r15+0x08]
mov dword ptr [rbp-0x64], edx
cmp edx, ecx
- jbe G_M36935_IG68
+ jbe G_M36935_IG71
;; size=15 bbWeight=8 PerfScore 34.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov edi, ecx
@@ -267,9 +267,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
; gcr arg pop 0
mov dword ptr [rbp-0x50], eax
test eax, eax
- jl G_M36935_IG69
+ jl G_M36935_IG72
cmp eax, dword ptr [rbp-0x60]
- ja G_M36935_IG79
+ ja G_M36935_IG82
mov rsi, bword ptr [rbp-0xC0]
; byrRegs +[rsi]
mov edx, eax
@@ -283,12 +283,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
add ecx, dword ptr [rbp-0x50]
mov eax, dword ptr [rbp-0x64]
cmp ecx, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov edi, ecx
movzx rdx, word ptr [r15+2*rdi+0x0C]
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov dword ptr [rbp-0x2C], ecx
mov edi, ecx
movzx r8, word ptr [r15+2*rdi+0x0C]
@@ -324,7 +324,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
;; size=10 bbWeight=4 PerfScore 13.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, 123
- jne G_M36935_IG73
+ jne G_M36935_IG76
xor edx, edx
mov dword ptr [rbp-0x34], edx
xor r9d, r9d
@@ -338,7 +338,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
mov ecx, dword ptr [rbp-0x2C]
lea edi, [rcx-0x01]
cmp edi, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx-0x01]
cmp word ptr [r15+2*rdi+0x0C], 123
@@ -379,7 +379,7 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
inc ecx
mov eax, dword ptr [rbp-0x64]
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
mov edi, r8d
@@ -392,14 +392,14 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
G_M36935_IG23: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
mov r10, bword ptr [rbp-0xB8]
; byrRegs +[r10]
- jmp G_M36935_IG42
+ jmp G_M36935_IG45
;; size=12 bbWeight=2 PerfScore 6.00
G_M36935_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14-r15]
; byrRegs -[rbx r10 r13]
; GC ptr vars -{V04 V88}
mov ecx, dword ptr [rbp-0x2C]
- jmp G_M36935_IG74
+ jmp G_M36935_IG77
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; gcrRegs +[r14-r15]
@@ -410,7 +410,7 @@ G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs
mov dword ptr [rbp-0x3C], esi
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
mov esi, dword ptr [rbp-0x3C]
@@ -424,102 +424,118 @@ G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {r
;; size=18 bbWeight=16 PerfScore 48.00
G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 32
- jne SHORT G_M36935_IG29
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG28: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jne SHORT G_M36935_IG31
+ test ecx, ecx
+ jl SHORT G_M36935_IG30
+ ;; size=9 bbWeight=2 PerfScore 5.00
+G_M36935_IG28: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
je SHORT G_M36935_IG28
- ;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
- cmp edi, 44
- mov edx, dword ptr [rbp-0x34]
- jne G_M36935_IG36
- ;; size=12 bbWeight=2 PerfScore 4.50
-G_M36935_IG30: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ ;; size=23 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jmp SHORT G_M36935_IG31
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG30: ; bbWeight=0.16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
je SHORT G_M36935_IG30
+ ;; size=23 bbWeight=0.16 PerfScore 0.80
+G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ cmp edi, 44
+ mov edx, dword ptr [rbp-0x34]
+ jne G_M36935_IG38
+ ;; size=12 bbWeight=2 PerfScore 4.50
+G_M36935_IG32: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ inc ecx
+ cmp eax, ecx
+ jbe G_M36935_IG78
+ mov edi, ecx
+ movzx rdi, word ptr [r15+2*rdi+0x0C]
+ cmp edi, 32
+ je SHORT G_M36935_IG32
;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG33: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 45
- jne SHORT G_M36935_IG32
+ jne SHORT G_M36935_IG34
mov dword ptr [rbp-0x38], 1
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
;; size=30 bbWeight=2 PerfScore 12.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG34: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
lea edx, [rdi-0x30]
cmp edx, 10
- jae G_M36935_IG74
+ jae G_M36935_IG77
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
;; size=22 bbWeight=2 PerfScore 6.50
-G_M36935_IG33: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG35: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp ecx, eax
- jae G_M36935_IG71
+ jae G_M36935_IG74
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
lea r8d, [rdi-0x30]
cmp r8d, 9
- ja SHORT G_M36935_IG34
+ ja SHORT G_M36935_IG36
cmp edx, 0xD1FFAB1E
- jl SHORT G_M36935_IG39
+ jl SHORT G_M36935_IG41
;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG34: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+G_M36935_IG36: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 32
- jne SHORT G_M36935_IG36
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG35: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jne SHORT G_M36935_IG38
+ test ecx, ecx
+ jl SHORT G_M36935_IG42
+ ;; size=9 bbWeight=2 PerfScore 5.00
+G_M36935_IG37: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG75
+ jbe G_M36935_IG78
mov edi, ecx
movzx rdi, word ptr [r15+2*rdi+0x0C]
cmp edi, 32
- je SHORT G_M36935_IG35
- ;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG36: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ je SHORT G_M36935_IG37
+ ;; size=23 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG38: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edi, 125
mov r10, bword ptr [rbp-0xB8]
; byrRegs +[r10]
- je SHORT G_M36935_IG38
+ je SHORT G_M36935_IG40
cmp edi, 58
- jne G_M36935_IG76
+ jne G_M36935_IG79
mov r8d, ecx
;; size=24 bbWeight=2 PerfScore 7.50
...
@@ -9,11 +9,11 @@
;
; V00 this [V00,T04] ( 17, 87.50) ref -> r15 this class-hnd exact single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T24] ( 11, 12.33) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18,127 ) ref -> rbx class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T03] ( 20,127 ) ref -> rbx class-hnd exact single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T46] ( 3, 7 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T01] ( 30,260 ) ushort -> [rbp-0x30]
+; V05 loc1 [V05,T00] ( 72,463 ) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rbp-0x30]
; V07 loc3 [V07,T05] ( 12, 74 ) int -> [rbp-0x34]
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [rbp-0x38]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -134,7 +134,7 @@
; V124 cse1 [V124,T31] ( 3, 12 ) ref -> r8 "CSE - conservative"
; V125 cse2 [V125,T34] ( 3, 12 ) int -> rsi "CSE - conservative"
; V126 cse3 [V126,T32] ( 3, 12 ) ref -> rdi "CSE - conservative"
-; V127 cse4 [V127,T02] ( 18,142 ) int -> [rbp-0x60] spill-single-def "CSE - aggressive"
+; V127 cse4 [V127,T02] ( 20,142 ) int -> [rbp-0x60] spill-single-def "CSE - aggressive"
; V128 cse5 [V128,T06] ( 6, 60 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 152
@@ -160,7 +160,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=40 bbWeight=1 PerfScore 8.00
G_M4730_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
test rbx, rbx
- je G_M4730_IG65
+ je G_M4730_IG68
test r14, r14
jne SHORT G_M4730_IG04
;; size=14 bbWeight=1 PerfScore 2.50
@@ -228,7 +228,7 @@ G_M4730_IG10: ; bbWeight=8, gcVars=0000400000000000 {V04}, gcrefRegs=C008
mov edx, dword ptr [rbx+0x08]
mov dword ptr [rbp-0x60], edx
cmp edx, ecx
- jbe G_M4730_IG60
+ jbe G_M4730_IG63
;; size=14 bbWeight=8 PerfScore 34.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov edi, ecx
@@ -271,9 +271,9 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
; gcr arg pop 0
mov dword ptr [rbp-0x50], eax
test eax, eax
- jl G_M4730_IG62
+ jl G_M4730_IG65
cmp eax, dword ptr [rbp-0x5C]
- ja G_M4730_IG72
+ ja G_M4730_IG75
mov rdi, r15
; gcrRegs +[rdi]
mov rsi, bword ptr [rbp-0xB0]
@@ -288,12 +288,12 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
add ecx, dword ptr [rbp-0x50]
mov eax, dword ptr [rbp-0x60]
cmp ecx, eax
- jae G_M4730_IG64
+ jae G_M4730_IG67
mov edi, ecx
movzx rdx, word ptr [rbx+2*rdi+0x0C]
inc ecx
cmp eax, ecx
- jbe G_M4730_IG68
+ jbe G_M4730_IG71
mov dword ptr [rbp-0x2C], ecx
mov edi, ecx
movzx r8, word ptr [rbx+2*rdi+0x0C]
@@ -313,7 +313,7 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
;; size=153 bbWeight=4 PerfScore 129.00
G_M4730_IG14: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
cmp edx, 123
- jne G_M4730_IG66
+ jne G_M4730_IG69
xor edx, edx
mov dword ptr [rbp-0x34], edx
xor r9d, r9d
@@ -327,7 +327,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
mov ecx, dword ptr [rbp-0x2C]
lea edi, [rcx-0x01]
cmp edi, eax
- jae G_M4730_IG64
+ jae G_M4730_IG67
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx-0x01]
cmp word ptr [rbx+2*rdi+0x0C], 123
@@ -368,7 +368,7 @@ G_M4730_IG18: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
inc ecx
mov eax, dword ptr [rbp-0x60]
cmp eax, ecx
- jbe G_M4730_IG68
+ jbe G_M4730_IG71
mov r8d, ecx
movzx r8, word ptr [rbx+2*r8+0x0C]
mov edi, r8d
@@ -381,14 +381,14 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
G_M4730_IG20: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
mov r10, bword ptr [rbp-0xA8]
; byrRegs +[r10]
- jmp G_M4730_IG39
+ jmp G_M4730_IG42
;; size=12 bbWeight=2 PerfScore 6.00
G_M4730_IG21: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx r14-r15]
; byrRegs -[r10 r13]
; GC ptr vars -{V04 V85}
mov ecx, dword ptr [rbp-0x2C]
- jmp G_M4730_IG67
+ jmp G_M4730_IG70
;; size=8 bbWeight=2 PerfScore 6.00
G_M4730_IG22: ; bbWeight=8, gcVars=0000400004000000 {V04 V85}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
; gcrRegs +[rbx r14-r15]
@@ -399,7 +399,7 @@ G_M4730_IG22: ; bbWeight=8, gcVars=0000400004000000 {V04 V85}, gcrefRegs=
mov dword ptr [rbp-0x3C], esi
inc ecx
cmp eax, ecx
- jbe G_M4730_IG68
+ jbe G_M4730_IG71
mov edi, ecx
movzx rdi, word ptr [rbx+2*rdi+0x0C]
mov esi, dword ptr [rbp-0x3C]
@@ -413,102 +413,118 @@ G_M4730_IG23: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
;; size=18 bbWeight=16 PerfScore 48.00
G_M4730_IG24: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
cmp edi, 32
- jne SHORT G_M4730_IG26
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M4730_IG25: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ jne SHORT G_M4730_IG28
+ test ecx, ecx
+ jl SHORT G_M4730_IG27
+ ;; size=9 bbWeight=2 PerfScore 5.00
+G_M4730_IG25: ; bbWeight=15.84, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M4730_IG68
+ jbe G_M4730_IG71
mov edi, ecx
movzx rdi, word ptr [rbx+2*rdi+0x0C]
cmp edi, 32
je SHORT G_M4730_IG25
- ;; size=22 bbWeight=16 PerfScore 80.00
-G_M4730_IG26: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
- cmp edi, 44
- mov edx, dword ptr [rbp-0x34]
- jne G_M4730_IG33
- ;; size=12 bbWeight=2 PerfScore 4.50
-G_M4730_IG27: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ ;; size=22 bbWeight=15.84 PerfScore 79.20
+G_M4730_IG26: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ jmp SHORT G_M4730_IG28
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M4730_IG27: ; bbWeight=0.16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M4730_IG68
+ jbe G_M4730_IG71
mov edi, ecx
movzx rdi, word ptr [rbx+2*rdi+0x0C]
cmp edi, 32
je SHORT G_M4730_IG27
+ ;; size=22 bbWeight=0.16 PerfScore 0.80
+G_M4730_IG28: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
+ cmp edi, 44
+ mov edx, dword ptr [rbp-0x34]
+ jne G_M4730_IG35
+ ;; size=12 bbWeight=2 PerfScore 4.50
+G_M4730_IG29: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ inc ecx
+ cmp eax, ecx
+ jbe G_M4730_IG71
+ mov edi, ecx
+ movzx rdi, word ptr [rbx+2*rdi+0x0C]
+ cmp edi, 32
+ je SHORT G_M4730_IG29
;; size=22 bbWeight=16 PerfScore 80.00
-G_M4730_IG28: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+G_M4730_IG30: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
cmp edi, 45
- jne SHORT G_M4730_IG29
+ jne SHORT G_M4730_IG31
mov dword ptr [rbp-0x38], 1
inc ecx
cmp eax, ecx
- jbe G_M4730_IG68
+ jbe G_M4730_IG71
mov edi, ecx
movzx rdi, word ptr [rbx+2*rdi+0x0C]
;; size=29 bbWeight=2 PerfScore 12.00
-G_M4730_IG29: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
+G_M4730_IG31: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
lea edx, [rdi-0x30]
cmp edx, 10
- jae G_M4730_IG67
+ jae G_M4730_IG70
inc ecx
cmp eax, ecx
- jbe G_M4730_IG68
+ jbe G_M4730_IG71
;; size=22 bbWeight=2 PerfScore 6.50
-G_M4730_IG30: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+G_M4730_IG32: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
cmp ecx, eax
- jae G_M4730_IG64
+ jae G_M4730_IG67
mov edi, ecx
movzx rdi, word ptr [rbx+2*rdi+0x0C]
lea r8d, [rdi-0x30]
cmp r8d, 9
- ja SHORT G_M4730_IG31
+ ja SHORT G_M4730_IG33
cmp edx, 0xD1FFAB1E
- jl SHORT G_M4730_IG36
+ jl SHORT G_M4730_IG38
;; size=33 bbWeight=16 PerfScore 104.00
-G_M4730_IG31: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+G_M4730_IG33: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
cmp edi, 32
- jne SHORT G_M4730_IG33
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M4730_IG32: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ jne SHORT G_M4730_IG35
+ test ecx, ecx
+ jl SHORT G_M4730_IG39
+ ;; size=9 bbWeight=2 PerfScore 5.00
+G_M4730_IG34: ; bbWeight=15.84, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M4730_IG68
+ jbe G_M4730_IG71
mov edi, ecx
movzx rdi, word ptr [rbx+2*rdi+0x0C]
cmp edi, 32
- je SHORT G_M4730_IG32
- ;; size=22 bbWeight=16 PerfScore 80.00
-G_M4730_IG33: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ je SHORT G_M4730_IG34
+ ;; size=22 bbWeight=15.84 PerfScore 79.20
+G_M4730_IG35: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
cmp edi, 125
mov r10, bword ptr [rbp-0xA8]
; byrRegs +[r10]
- je SHORT G_M4730_IG35
+ je SHORT G_M4730_IG37
cmp edi, 58
- jne G_M4730_IG69
+ jne G_M4730_IG72
mov r8d, ecx
;; size=24 bbWeight=2 PerfScore 7.50
...
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.linux.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_pgo.linux.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_tiered.linux.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
coreclr_tests.run.linux.x64.checked.mch | 103 | 3 | 100 | 0 | -28 | +28,654 |
libraries.crossgen2.linux.x64.checked.mch | 6 | 5 | 1 | 0 | -383 | +3 |
libraries.pmi.linux.x64.checked.mch | 7 | 5 | 2 | 0 | -345 | +266 |
libraries_tests.run.linux.x64.Release.mch | 601 | 17 | 584 | 0 | -1,505 | +822,153 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 15 | 13 | 2 | 0 | -1,539 | +196 |
realworld.run.linux.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
smoke_tests.nativeaot.linux.x64.checked.mch | 5 | 0 | 5 | 0 | -0 | +288 |
737 | 43 | 694 | 0 | -3,800 | +851,560 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.linux.x64.checked.mch | 34,999 | 3,164 | 31,835 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.linux.x64.checked.mch | 155,971 | 58,399 | 97,572 | 149 (0.10%) | 149 (0.10%) |
benchmarks.run_tiered.linux.x64.checked.mch | 58,890 | 44,312 | 14,578 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.linux.x64.checked.mch | 694,088 | 429,241 | 264,847 | 323 (0.05%) | 325 (0.05%) |
libraries.crossgen2.linux.x64.checked.mch | 233,626 | 15 | 233,611 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.linux.x64.checked.mch | 295,421 | 6 | 295,415 | 1 (0.00%) | 1 (0.00%) |
libraries_tests.run.linux.x64.Release.mch | 756,825 | 495,271 | 261,554 | 3,117 (0.41%) | 3,118 (0.41%) |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 304,609 | 21,873 | 282,736 | 6 (0.00%) | 6 (0.00%) |
realworld.run.linux.x64.checked.mch | 33,167 | 39 | 33,128 | 0 (0.00%) | 0 (0.00%) |
smoke_tests.nativeaot.linux.x64.checked.mch | 27,440 | 9 | 27,431 | 0 (0.00%) | 0 (0.00%) |
2,595,036 | 1,052,329 | 1,542,707 | 3,596 (0.14%) | 3,599 (0.14%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 458879057 (overridden on cmd)
Total bytes of diff: 458907683 (overridden on cmd)
Total bytes of delta: 28626 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
858 : 2263.dasm (39.63 % of base)
858 : 31524.dasm (39.63 % of base)
568 : 80246.dasm (17.84 % of base)
564 : 30554.dasm (16.73 % of base)
563 : 113163.dasm (17.65 % of base)
563 : 138296.dasm (17.65 % of base)
563 : 157091.dasm (17.56 % of base)
562 : 191899.dasm (17.65 % of base)
562 : 239781.dasm (18.86 % of base)
562 : 178040.dasm (17.65 % of base)
562 : 232886.dasm (18.81 % of base)
562 : 36686.dasm (18.81 % of base)
562 : 70683.dasm (17.65 % of base)
562 : 176418.dasm (18.86 % of base)
274 : 608056.dasm (14.96 % of base)
274 : 245412.dasm (14.96 % of base)
274 : 381587.dasm (15.10 % of base)
274 : 607995.dasm (14.96 % of base)
274 : 608027.dasm (14.96 % of base)
274 : 245503.dasm (15.10 % of base)
Top file improvements (bytes):
-13 : 690468.dasm (-1.09 % of base)
-11 : 224722.dasm (-0.50 % of base)
-4 : 256501.dasm (-0.24 % of base)
54 total files with Code Size differences (3 improved, 51 regressed), 0 unchanged.
Top method regressions (bytes):
858 (39.63 % of base) : 2263.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
858 (39.63 % of base) : 31524.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
568 (17.84 % of base) : 80246.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (16.73 % of base) : 30554.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
563 (17.65 % of base) : 113163.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
563 (17.65 % of base) : 138296.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
563 (17.56 % of base) : 157091.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (17.65 % of base) : 191899.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (18.86 % of base) : 239781.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (17.65 % of base) : 178040.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (18.81 % of base) : 232886.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (18.81 % of base) : 36686.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (17.65 % of base) : 70683.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (18.86 % of base) : 176418.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
274 (14.96 % of base) : 608056.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
274 (14.96 % of base) : 245412.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
274 (15.10 % of base) : 381587.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
274 (14.96 % of base) : 607995.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
274 (14.96 % of base) : 608027.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
274 (15.10 % of base) : 245503.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
Top method improvements (bytes):
-13 (-1.09 % of base) : 690468.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-11 (-0.50 % of base) : 224722.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
-4 (-0.24 % of base) : 256501.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
Top method regressions (percentages):
858 (39.63 % of base) : 2263.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
858 (39.63 % of base) : 31524.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
562 (18.86 % of base) : 239781.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (18.86 % of base) : 176418.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (18.81 % of base) : 232886.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (18.81 % of base) : 36686.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
568 (17.84 % of base) : 80246.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
563 (17.65 % of base) : 113163.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
563 (17.65 % of base) : 138296.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (17.65 % of base) : 191899.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (17.65 % of base) : 178040.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
562 (17.65 % of base) : 70683.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
563 (17.56 % of base) : 157091.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (16.73 % of base) : 30554.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
274 (15.10 % of base) : 381587.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
274 (15.10 % of base) : 245503.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
274 (15.10 % of base) : 427558.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
274 (15.10 % of base) : 608094.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
274 (14.96 % of base) : 608056.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
274 (14.96 % of base) : 245412.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
Top method improvements (percentages):
-13 (-1.09 % of base) : 690468.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-11 (-0.50 % of base) : 224722.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
-4 (-0.24 % of base) : 256501.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 38668832 (overridden on cmd)
Total bytes of diff: 38668452 (overridden on cmd)
Total bytes of delta: -380 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
3 : 219795.dasm (0.61 % of base)
Top file improvements (bytes):
-222 : 26768.dasm (-20.29 % of base)
-47 : 131208.dasm (-15.26 % of base)
-47 : 117955.dasm (-15.26 % of base)
-43 : 7195.dasm (-10.67 % of base)
-24 : 224454.dasm (-1.62 % of base)
6 total files with Code Size differences (5 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
3 (0.61 % of base) : 219795.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-222 (-20.29 % of base) : 26768.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-47 (-15.26 % of base) : 131208.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-47 (-15.26 % of base) : 117955.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-43 (-10.67 % of base) : 7195.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-24 (-1.62 % of base) : 224454.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
3 (0.61 % of base) : 219795.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-222 (-20.29 % of base) : 26768.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-47 (-15.26 % of base) : 131208.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-47 (-15.26 % of base) : 117955.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-43 (-10.67 % of base) : 7195.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-24 (-1.62 % of base) : 224454.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
6 total methods with Code Size differences (5 improved, 1 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 59972991 (overridden on cmd)
Total bytes of diff: 59972912 (overridden on cmd)
Total bytes of delta: -79 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
251 : 286843.dasm (2.49 % of base)
15 : 268408.dasm (3.05 % of base)
Top file improvements (bytes):
-217 : 17238.dasm (-19.34 % of base)
-51 : 155121.dasm (-14.21 % of base)
-51 : 172691.dasm (-14.21 % of base)
-13 : 270702.dasm (-0.90 % of base)
-13 : 82114.dasm (-1.09 % of base)
7 total files with Code Size differences (5 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
251 (2.49 % of base) : 286843.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
15 (3.05 % of base) : 268408.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-217 (-19.34 % of base) : 17238.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-51 (-14.21 % of base) : 172691.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-51 (-14.21 % of base) : 155121.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-13 (-1.09 % of base) : 82114.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-13 (-0.90 % of base) : 270702.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
15 (3.05 % of base) : 268408.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
251 (2.49 % of base) : 286843.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
Top method improvements (percentages):
-217 (-19.34 % of base) : 17238.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-51 (-14.21 % of base) : 172691.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-51 (-14.21 % of base) : 155121.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-13 (-1.09 % of base) : 82114.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-13 (-0.90 % of base) : 270702.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
7 total methods with Code Size differences (5 improved, 2 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 329976340 (overridden on cmd)
Total bytes of diff: 330796988 (overridden on cmd)
Total bytes of delta: 820648 (0.25 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
5196 : 434703.dasm (57.21 % of base)
5196 : 443132.dasm (57.21 % of base)
5127 : 207899.dasm (57.20 % of base)
5086 : 325491.dasm (55.43 % of base)
5086 : 453195.dasm (55.43 % of base)
5086 : 563838.dasm (55.43 % of base)
5086 : 603391.dasm (55.43 % of base)
5025 : 499523.dasm (55.18 % of base)
4999 : 133007.dasm (55.09 % of base)
4999 : 508947.dasm (55.09 % of base)
4999 : 110163.dasm (55.09 % of base)
4999 : 342320.dasm (55.09 % of base)
4999 : 504451.dasm (55.09 % of base)
4999 : 317935.dasm (55.09 % of base)
4999 : 160879.dasm (55.09 % of base)
4999 : 213499.dasm (55.09 % of base)
4999 : 379504.dasm (55.09 % of base)
4999 : 497619.dasm (55.09 % of base)
4999 : 515280.dasm (55.09 % of base)
4999 : 732196.dasm (55.09 % of base)
Top file improvements (bytes):
-225 : 693582.dasm (-17.97 % of base)
-187 : 716060.dasm (-15.12 % of base)
-145 : 716382.dasm (-21.84 % of base)
-131 : 693859.dasm (-28.42 % of base)
-129 : 693607.dasm (-22.36 % of base)
-128 : 725795.dasm (-19.57 % of base)
-113 : 693862.dasm (-23.74 % of base)
-106 : 693639.dasm (-18.21 % of base)
-103 : 693622.dasm (-21.37 % of base)
-63 : 720167.dasm (-15.29 % of base)
-63 : 538826.dasm (-11.35 % of base)
-56 : 716381.dasm (-14.70 % of base)
-33 : 552766.dasm (-8.51 % of base)
-11 : 29381.dasm (-0.51 % of base)
-6 : 35552.dasm (-0.54 % of base)
-3 : 285826.dasm (-0.18 % of base)
-3 : 103123.dasm (-0.47 % of base)
43 total files with Code Size differences (17 improved, 26 regressed), 0 unchanged.
Top method regressions (bytes):
5196 (57.21 % of base) : 434703.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5196 (57.21 % of base) : 443132.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5127 (57.20 % of base) : 207899.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5086 (55.43 % of base) : 325491.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5086 (55.43 % of base) : 453195.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5086 (55.43 % of base) : 563838.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5086 (55.43 % of base) : 603391.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5025 (55.18 % of base) : 499523.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 133007.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 508947.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 110163.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 342320.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 504451.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 317935.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 160879.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 213499.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 379504.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 497619.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 515280.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 732196.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (bytes):
-225 (-17.97 % of base) : 693582.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex412_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-187 (-15.12 % of base) : 716060.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30755_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-145 (-21.84 % of base) : 716382.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31052_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-131 (-28.42 % of base) : 693859.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex550_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-129 (-22.36 % of base) : 693607.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex443_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-128 (-19.57 % of base) : 725795.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32470_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-113 (-23.74 % of base) : 693862.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex552_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-106 (-18.21 % of base) : 693639.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex457_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-103 (-21.37 % of base) : 693622.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex450_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-63 (-15.29 % of base) : 720167.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex14558_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-63 (-11.35 % of base) : 538826.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-56 (-14.70 % of base) : 716381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31051_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-33 (-8.51 % of base) : 552766.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Tier1)
-11 (-0.51 % of base) : 29381.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
-6 (-0.54 % of base) : 35552.dasm - System.IO.Path:Combine(System.String[]):System.String (Instrumented Tier1)
-3 (-0.18 % of base) : 285826.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
-3 (-0.47 % of base) : 103123.dasm - System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
Top method regressions (percentages):
5196 (57.21 % of base) : 434703.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5196 (57.21 % of base) : 443132.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5127 (57.20 % of base) : 207899.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5086 (55.43 % of base) : 325491.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5086 (55.43 % of base) : 453195.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5086 (55.43 % of base) : 563838.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5086 (55.43 % of base) : 603391.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5025 (55.18 % of base) : 499523.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 133007.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 508947.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 110163.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 342320.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 504451.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 317935.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 160879.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 213499.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 379504.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 497619.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 515280.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4999 (55.09 % of base) : 732196.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (percentages):
-131 (-28.42 % of base) : 693859.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex550_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-113 (-23.74 % of base) : 693862.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex552_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-129 (-22.36 % of base) : 693607.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex443_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-145 (-21.84 % of base) : 716382.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31052_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-103 (-21.37 % of base) : 693622.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex450_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-128 (-19.57 % of base) : 725795.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32470_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-106 (-18.21 % of base) : 693639.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex457_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-225 (-17.97 % of base) : 693582.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex412_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-63 (-15.29 % of base) : 720167.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex14558_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-187 (-15.12 % of base) : 716060.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30755_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-14.70 % of base) : 716381.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31051_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-63 (-11.35 % of base) : 538826.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-33 (-8.51 % of base) : 552766.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Tier1)
-6 (-0.54 % of base) : 35552.dasm - System.IO.Path:Combine(System.String[]):System.String (Instrumented Tier1)
-11 (-0.51 % of base) : 29381.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
-3 (-0.47 % of base) : 103123.dasm - System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
-3 (-0.18 % of base) : 285826.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 130000373 (overridden on cmd)
Total bytes of diff: 129999030 (overridden on cmd)
Total bytes of delta: -1343 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
181 : 291194.dasm (9.25 % of base)
15 : 116902.dasm (3.05 % of base)
Top file improvements (bytes):
-251 : 288814.dasm (-18.46 % of base)
-230 : 285163.dasm (-17.14 % of base)
-157 : 288830.dasm (-25.99 % of base)
-151 : 285230.dasm (-21.54 % of base)
-149 : 288846.dasm (-21.78 % of base)
-124 : 288833.dasm (-23.26 % of base)
-122 : 288955.dasm (-23.51 % of base)
-116 : 290887.dasm (-17.26 % of base)
-69 : 277416.dasm (-17.16 % of base)
-66 : 285229.dasm (-16.06 % of base)
-51 : 195330.dasm (-14.21 % of base)
-51 : 63488.dasm (-14.21 % of base)
-2 : 185652.dasm (-0.15 % of base)
15 total files with Code Size differences (13 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
181 (9.25 % of base) : 291194.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
15 (3.05 % of base) : 116902.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-251 (-18.46 % of base) : 288814.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6785_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-230 (-17.14 % of base) : 285163.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5544_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-157 (-25.99 % of base) : 288830.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6816_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-151 (-21.54 % of base) : 285230.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5841_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-149 (-21.78 % of base) : 288846.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6830_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-124 (-23.26 % of base) : 288833.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6823_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-122 (-23.51 % of base) : 288955.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6925_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-17.26 % of base) : 290887.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32794_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-69 (-17.16 % of base) : 277416.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2808_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-66 (-16.06 % of base) : 285229.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5840_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-51 (-14.21 % of base) : 63488.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-51 (-14.21 % of base) : 195330.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-2 (-0.15 % of base) : 185652.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
181 (9.25 % of base) : 291194.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
15 (3.05 % of base) : 116902.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-157 (-25.99 % of base) : 288830.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6816_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-122 (-23.51 % of base) : 288955.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6925_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-124 (-23.26 % of base) : 288833.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6823_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-149 (-21.78 % of base) : 288846.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6830_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-151 (-21.54 % of base) : 285230.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5841_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-251 (-18.46 % of base) : 288814.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6785_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-17.26 % of base) : 290887.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32794_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-69 (-17.16 % of base) : 277416.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2808_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-230 (-17.14 % of base) : 285163.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5544_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-66 (-16.06 % of base) : 285229.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5840_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-51 (-14.21 % of base) : 63488.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-51 (-14.21 % of base) : 195330.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-2 (-0.15 % of base) : 185652.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
15 total methods with Code Size differences (13 improved, 2 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4197516 (overridden on cmd)
Total bytes of diff: 4197804 (overridden on cmd)
Total bytes of delta: 288 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
58 : 21693.dasm (2.80 % of base)
58 : 18675.dasm (2.80 % of base)
58 : 25180.dasm (2.80 % of base)
58 : 2923.dasm (2.80 % of base)
56 : 5172.dasm (2.92 % of base)
5 total files with Code Size differences (0 improved, 5 regressed), 0 unchanged.
Top method regressions (bytes):
58 (2.80 % of base) : 21693.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
58 (2.80 % of base) : 18675.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
58 (2.80 % of base) : 25180.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
58 (2.80 % of base) : 2923.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
56 (2.92 % of base) : 5172.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
Top method regressions (percentages):
56 (2.92 % of base) : 5172.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
58 (2.80 % of base) : 21693.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
58 (2.80 % of base) : 18675.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
58 (2.80 % of base) : 25180.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
58 (2.80 % of base) : 2923.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
5 total methods with Code Size differences (0 improved, 5 regressed).
Diffs are based on 2,262,764 contexts (930,876 MinOpts, 1,331,888 FullOpts).
MISSED contexts: base: 2,925 (0.13%), diff: 3,201 (0.14%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.osx.arm64.checked.mch | 485,342,836 | +2,836 |
libraries.crossgen2.osx.arm64.checked.mch | 55,620,836 | -384 |
libraries.pmi.osx.arm64.checked.mch | 79,959,744 | -4 |
libraries_tests.run.osx.arm64.Release.mch | 312,234,552 | +525,560 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 160,790,848 | -884 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.osx.arm64.checked.mch | 153,036,380 | +2,836 |
libraries.crossgen2.osx.arm64.checked.mch | 55,619,208 | -384 |
libraries.pmi.osx.arm64.checked.mch | 79,838,616 | -4 |
libraries_tests.run.osx.arm64.Release.mch | 108,294,048 | +525,560 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 147,653,320 | -884 |
@@ -9,52 +9,53 @@
; 4 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T01] ( 6, 6 ) byref -> x20 single-def
-; V02 arg1 [V02,T04] ( 14, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T05] ( 14, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T00] ( 6, 6.54) int -> x19
-; V04 arg3 [V04,T06] ( 4, 3.90) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T08] ( 3, 3 ) ubyte -> x24 single-def
-; V06 loc0 [V06,T20] ( 3, 2.41) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T24] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T22] ( 7, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T19] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.90) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T09] ( 3, 3 ) ubyte -> x24 single-def
+; V06 loc0 [V06,T21] ( 3, 2.41) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T25] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T23] ( 7, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.41) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.18) int -> x22
-; V12 loc6 [V12,T03] ( 7, 5.96) ref -> x27 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 5.96) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T12] ( 5, 4 ) ref -> x28 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T07] ( 5, 5 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V20 tmp7 [V20,T14] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T13] ( 5, 4 ) ref -> x28 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T08] ( 5, 5 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V20 tmp7 [V20,T15] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V24 tmp11 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V25 tmp12 [V25,T13] ( 4, 4 ) byref -> x22 single-def "Inlining Arg"
+; V25 tmp12 [V25,T14] ( 4, 4 ) byref -> x22 single-def "Inlining Arg"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V27 tmp14 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V28 tmp15 [V28,T11] ( 14, 4 ) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
-; V29 tmp16 [V29,T26] ( 4, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp15 [V28,T12] ( 14, 4 ) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp16 [V29,T27] ( 4, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T23] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V32 tmp19 [V32,T15] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V33 tmp20 [V33,T17] ( 4, 3 ) ref -> x0
-; V34 tmp21 [V34,T28] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V35 tmp22 [V35,T27] ( 4, 0 ) ref -> x0
-; V36 tmp23 [V36,T16] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V31 tmp18 [V31,T24] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
+; V32 tmp19 [V32,T16] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V33 tmp20 [V33,T18] ( 4, 3 ) ref -> x0
+; V34 tmp21 [V34,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V35 tmp22 [V35,T28] ( 4, 0 ) ref -> x0
+; V36 tmp23 [V36,T17] ( 2, 4 ) int -> x1 "Inlining Arg"
; V37 tmp24 [V37 ] ( 3, 3.41) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V38 tmp25 [V38 ] ( 3, 3.41) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V39 tmp26 [V39 ] ( 3, 3.41) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V40 tmp27 [V40 ] ( 3, 3.41) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V41 tmp28 [V41,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V42 cse0 [V42,T09] ( 3, 4.63) int -> x0 "CSE - moderate"
-; V43 cse1 [V43,T18] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V44 cse2 [V44,T10] ( 4, 4.54) int -> x24 "CSE - aggressive"
-; V45 cse3 [V45,T21] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
+;* V41 tmp28 [V41,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V42 cse0 [V42,T10] ( 3, 4.63) int -> x0 "CSE - moderate"
+; V43 cse1 [V43,T19] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V44 cse2 [V44,T03] ( 10, 6.53) long -> x27 hoist multi-def "CSE - aggressive"
+; V45 cse3 [V45,T11] ( 4, 4.54) int -> x24 "CSE - moderate"
+; V46 cse4 [V46,T22] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
;
; Lcl frame size = 32
@@ -146,7 +147,7 @@ G_M37807_IG07: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=10
;; size=4 bbWeight=1 PerfScore 0.50
G_M37807_IG08: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=100000 {x20}, byref, isz
tst w24, #255
- bne G_M37807_IG31
+ bne G_M37807_IG32
b G_M37807_IG04
;; size=12 bbWeight=1 PerfScore 2.50
G_M37807_IG09: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=100000 {x20}, byref
@@ -225,8 +226,8 @@ G_M37807_IG13: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=1
;; size=12 bbWeight=1 PerfScore 4.50
G_M37807_IG14: ; bbWeight=0, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=100000 {x20}, byref, isz
cmp w27, #2
- beq G_M37807_IG32
- b G_M37807_IG34
+ beq G_M37807_IG33
+ b G_M37807_IG35
;; size=12 bbWeight=0 PerfScore 0.00
G_M37807_IG15: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=100000 {x20}, byref, isz
add x0, x24, #32
@@ -270,30 +271,36 @@ G_M37807_IG17: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100
stp wzr, w1, [fp, #0x28] // [V39 tmp26], [V40 tmp27]
mov w22, wzr
cmp w24, #0
- ble G_M37807_IG29
+ ble G_M37807_IG30
;; size=32 bbWeight=1 PerfScore 8.00
G_M37807_IG18: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100000 {x20}, byref
add x28, x0, #16
; byrRegs +[x28]
- ;; size=4 bbWeight=0.61 PerfScore 0.30
+ movz x27, #0xD1FFAB1E
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #1 LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.21
G_M37807_IG19: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
; gcrRegs -[x0]
- ldr x27, [x28, w22, UXTW #3]
- ; gcrRegs +[x27]
- ldr w0, [x27, #0x58]
+ ldr x2, [x28, w22, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w19, w0
cmp w1, w0
bne G_M37807_IG26
- ;; size=20 bbWeight=1.54 PerfScore 12.35
-G_M37807_IG20: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
+ ;; size=24 bbWeight=1.54 PerfScore 13.90
+G_M37807_IG20: ; bbWeight=1.41, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, gcvars, byref, isz
cbz w25, G_M37807_IG22
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG21: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG21: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
@@ -301,28 +308,26 @@ G_M37807_IG21: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=1
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG36
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ cbz w0, G_M37807_IG37
+ mov x0, x27
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG22: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- cbz x23, G_M37807_IG25
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG22: ; bbWeight=1.41, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ cbz x23, G_M37807_IG28
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
+ add x1, x27, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x27
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x27]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -331,23 +336,19 @@ G_M37807_IG23: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG28
- ;; size=56 bbWeight=0.49 PerfScore 10.22
-G_M37807_IG24: ; bbWeight=0.24, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ bne G_M37807_IG29
+ ;; size=48 bbWeight=0.49 PerfScore 10.46
+G_M37807_IG24: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.24 PerfScore 0.61
-G_M37807_IG25: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ ;; size=8 bbWeight=0.24 PerfScore 0.36
+G_M37807_IG25: ; bbWeight=1.41, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x27
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -356,41 +357,45 @@ G_M37807_IG25: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x27]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.41 PerfScore 14.80
+ ;; size=48 bbWeight=1.41 PerfScore 15.50
G_M37807_IG26: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w22, w22, #1
cmp w24, w22
bgt G_M37807_IG19
- ;; size=28 bbWeight=1.54 PerfScore 6.95
+ ;; size=20 bbWeight=1.54 PerfScore 5.41
G_M37807_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x28]
- b G_M37807_IG29
+ b G_M37807_IG30
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG28: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
...
@@ -9,55 +9,56 @@
; 4 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T01] ( 6, 6 ) byref -> x20 single-def
; V02 arg1 [V02,T03] ( 14, 4.75) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T00] ( 6, 6.54) int -> x19
-; V04 arg3 [V04,T06] ( 4, 3.90) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T09] ( 3, 3 ) ubyte -> x24 single-def
-; V06 loc0 [V06,T21] ( 3, 2.41) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T25] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T23] ( 7, 2.00) int -> x27 ld-addr-op
-; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.90) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T10] ( 3, 3 ) ubyte -> x24 single-def
+; V06 loc0 [V06,T22] ( 3, 2.41) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T26] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T24] ( 7, 2.00) int -> x27 ld-addr-op
+; V09 loc3 [V09,T21] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.41) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.18) int -> x24
-; V12 loc6 [V12,T04] ( 7, 5.96) ref -> x27 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T05] ( 7, 5.96) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T13] ( 5, 4.06) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T08] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V20 tmp7 [V20,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T14] ( 5, 4.06) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T09] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V20 tmp7 [V20,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V27 tmp14 [V27,T12] ( 4, 4.26) byref -> x22 single-def "Inlining Arg"
+; V27 tmp14 [V27,T13] ( 4, 4.26) byref -> x22 single-def "Inlining Arg"
;* V28 tmp15 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V29 tmp16 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V30 tmp17 [V30,T07] ( 14, 5.01) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T27] ( 4, 0.51) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V30 tmp17 [V30,T08] ( 14, 5.01) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
+; V31 tmp18 [V31,T28] ( 4, 0.51) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V33 tmp20 [V33,T24] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V34 tmp21 [V34,T14] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V35 tmp22 [V35,T16] ( 4, 3.75) ref -> x0
-; V36 tmp23 [V36,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V37 tmp24 [V37,T28] ( 4, 0 ) ref -> x0
-; V38 tmp25 [V38,T15] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V33 tmp20 [V33,T25] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
+; V34 tmp21 [V34,T15] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V35 tmp22 [V35,T17] ( 4, 3.75) ref -> x0
+; V36 tmp23 [V36,T30] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V37 tmp24 [V37,T29] ( 4, 0 ) ref -> x0
+; V38 tmp25 [V38,T16] ( 2, 4 ) int -> x1 "Inlining Arg"
; V39 tmp26 [V39 ] ( 3, 3.41) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V40 tmp27 [V40 ] ( 3, 3.41) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V41 tmp28 [V41 ] ( 3, 3.41) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V42 tmp29 [V42 ] ( 3, 3.41) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V43 tmp30 [V43,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V44 cse0 [V44,T10] ( 3, 4.63) int -> x0 "CSE - moderate"
-; V45 cse1 [V45,T18] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V46 cse2 [V46,T11] ( 4, 4.54) int -> x22 "CSE - aggressive"
-; V47 cse3 [V47,T22] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
-; V48 cse4 [V48,T17] ( 3, 3 ) ref -> x1 "CSE - moderate"
+;* V43 tmp30 [V43,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V44 cse0 [V44,T11] ( 3, 4.63) int -> x0 "CSE - moderate"
+; V45 cse1 [V45,T19] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V46 cse2 [V46,T04] ( 10, 6.53) long -> x27 hoist multi-def "CSE - aggressive"
+; V47 cse3 [V47,T12] ( 4, 4.54) int -> x22 "CSE - moderate"
+; V48 cse4 [V48,T23] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
+; V49 cse5 [V49,T18] ( 3, 3 ) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 32
@@ -141,7 +142,7 @@ G_M37807_IG08: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=10
;; size=4 bbWeight=1 PerfScore 0.50
G_M37807_IG09: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=100000 {x20}, byref, isz
tst w24, #255
- bne G_M37807_IG33
+ bne G_M37807_IG34
b G_M37807_IG04
;; size=12 bbWeight=1 PerfScore 2.50
G_M37807_IG10: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=100000 {x20}, byref
@@ -202,7 +203,7 @@ G_M37807_IG14: ; bbWeight=0.06, gcrefRegs=1A00000 {x21 x23 x24}, byrefReg
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x24]
; byrRegs -[x14]
- cbz x22, G_M37807_IG34
+ cbz x22, G_M37807_IG35
mov x0, x22
; byrRegs +[x0]
mov x1, x28
@@ -226,8 +227,8 @@ G_M37807_IG15: ; bbWeight=1.00, gcrefRegs=10A00000 {x21 x23 x28}, byrefRe
;; size=12 bbWeight=1.00 PerfScore 4.50
G_M37807_IG16: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=100000 {x20}, byref, isz
cmp w27, #2
- beq G_M37807_IG35
- b G_M37807_IG37
+ beq G_M37807_IG36
+ b G_M37807_IG38
;; size=12 bbWeight=0 PerfScore 0.00
G_M37807_IG17: ; bbWeight=1, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=100000 {x20}, byref, isz
add x0, x28, #32
@@ -271,30 +272,36 @@ G_M37807_IG19: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100
stp wzr, w1, [fp, #0x28] // [V41 tmp28], [V42 tmp29]
mov w24, wzr
cmp w22, #0
- ble G_M37807_IG31
+ ble G_M37807_IG32
;; size=32 bbWeight=1 PerfScore 8.00
G_M37807_IG20: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100000 {x20}, byref
add x28, x0, #16
; byrRegs +[x28]
- ;; size=4 bbWeight=0.61 PerfScore 0.30
+ movz x27, #0xD1FFAB1E
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #1 LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.21
G_M37807_IG21: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
; gcrRegs -[x0]
- ldr x27, [x28, w24, UXTW #3]
- ; gcrRegs +[x27]
- ldr w0, [x27, #0x58]
+ ldr x2, [x28, w24, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w19, w0
cmp w1, w0
bne G_M37807_IG28
- ;; size=20 bbWeight=1.54 PerfScore 12.35
-G_M37807_IG22: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
+ ;; size=24 bbWeight=1.54 PerfScore 13.90
+G_M37807_IG22: ; bbWeight=1.41, gcVars=0000000000000020 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, gcvars, byref, isz
cbz w25, G_M37807_IG24
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG23: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG23: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
@@ -302,28 +309,26 @@ G_M37807_IG23: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=1
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG39
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ cbz w0, G_M37807_IG40
+ mov x0, x27
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG24: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- cbz x23, G_M37807_IG27
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG24: ; bbWeight=1.41, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ cbz x23, G_M37807_IG30
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG25: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG25: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
+ add x1, x27, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x27
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x27]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -332,23 +337,19 @@ G_M37807_IG25: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG30
- ;; size=56 bbWeight=0.49 PerfScore 10.22
-G_M37807_IG26: ; bbWeight=0.24, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ bne G_M37807_IG31
+ ;; size=48 bbWeight=0.49 PerfScore 10.46
+G_M37807_IG26: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.24 PerfScore 0.61
-G_M37807_IG27: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ ;; size=8 bbWeight=0.24 PerfScore 0.36
+G_M37807_IG27: ; bbWeight=1.41, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x27
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -357,41 +358,45 @@ G_M37807_IG27: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x27]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.41 PerfScore 14.80
+ ;; size=48 bbWeight=1.41 PerfScore 15.50
G_M37807_IG28: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
...
@@ -9,57 +9,58 @@
; 4 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x21 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x21 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> x19 single-def
-; V02 arg1 [V02,T07] ( 14, 3 ) ref -> x23 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T08] ( 14, 3 ) ref -> x23 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T01] ( 6, 5.54) int -> x20
-; V04 arg3 [V04,T06] ( 4, 3.90) ref -> x22 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T15] ( 3, 2 ) ubyte -> x24 single-def
-; V06 loc0 [V06,T20] ( 3, 2.41) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T23] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T12] ( 7, 4 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T19] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.90) ref -> x22 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T16] ( 3, 2 ) ubyte -> x24 single-def
+; V06 loc0 [V06,T21] ( 3, 2.41) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T24] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T13] ( 7, 4 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.41) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.18) int -> x21
-; V12 loc6 [V12,T03] ( 7, 5.96) ref -> x27 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 5.96) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T13] ( 5, 4 ) ref -> x28 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T09] ( 4, 4 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V20 tmp7 [V20,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T14] ( 5, 4 ) ref -> x28 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T10] ( 4, 4 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V20 tmp7 [V20,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V27 tmp14 [V27,T14] ( 4, 4 ) byref -> x21 single-def "Inlining Arg"
+; V27 tmp14 [V27,T15] ( 4, 4 ) byref -> x21 single-def "Inlining Arg"
;* V28 tmp15 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V29 tmp16 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V30 tmp17 [V30,T08] ( 14, 5 ) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T25] ( 4, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V30 tmp17 [V30,T09] ( 14, 5 ) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
+; V31 tmp18 [V31,T26] ( 4, 0 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V33 tmp20 [V33,T22] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V34 tmp21 [V34,T28] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V35 tmp22 [V35,T26] ( 4, 0 ) ref -> x0
-; V36 tmp23 [V36,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V37 tmp24 [V37,T27] ( 4, 0 ) ref -> x0
+; V33 tmp20 [V33,T23] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
+; V34 tmp21 [V34,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V35 tmp22 [V35,T27] ( 4, 0 ) ref -> x0
+; V36 tmp23 [V36,T30] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V37 tmp24 [V37,T28] ( 4, 0 ) ref -> x0
;* V38 tmp25 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp26 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp27 [V40,T16] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V40 tmp27 [V40,T17] ( 2, 4 ) int -> x1 "Inlining Arg"
; V41 tmp28 [V41 ] ( 3, 3.41) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V42 tmp29 [V42 ] ( 3, 3.41) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V43 tmp30 [V43 ] ( 3, 3.41) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V44 tmp31 [V44 ] ( 3, 3.41) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V45 tmp32 [V45,T24] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V46 cse0 [V46,T10] ( 3, 4.63) int -> x0 "CSE - moderate"
-; V47 cse1 [V47,T17] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V48 cse2 [V48,T11] ( 4, 4.54) int -> x24 "CSE - aggressive"
-; V49 cse3 [V49,T04] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
-; V50 cse4 [V50,T21] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
+;* V45 tmp32 [V45,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V46 cse0 [V46,T11] ( 3, 4.63) int -> x0 "CSE - moderate"
+; V47 cse1 [V47,T18] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V48 cse2 [V48,T03] ( 10, 6.53) long -> x27 hoist multi-def "CSE - aggressive"
+; V49 cse3 [V49,T12] ( 4, 4.54) int -> x24 "CSE - moderate"
+; V50 cse4 [V50,T05] ( 6, 6 ) ref -> x1 multi-def "CSE - aggressive"
+; V51 cse5 [V51,T22] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
;
; Lcl frame size = 32
@@ -272,8 +273,8 @@ G_M37807_IG14: ; bbWeight=0, gcrefRegs=1C00000 {x22 x23 x24}, byrefRegs=8
; gcrRegs -[x2] +[x0]
; byrRegs -[x0]
; gcr arg pop 0
- cbnz x0, G_M37807_IG38
- b G_M37807_IG37
+ cbnz x0, G_M37807_IG39
+ b G_M37807_IG38
;; size=48 bbWeight=0 PerfScore 0.00
G_M37807_IG15: ; bbWeight=1, gcrefRegs=1C00000 {x22 x23 x24}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x0]
@@ -331,7 +332,7 @@ G_M37807_IG18: ; bbWeight=1, gcrefRegs=1C00000 {x22 x23 x24}, byrefRegs=8
;; size=40 bbWeight=1 PerfScore 8.50
G_M37807_IG19: ; bbWeight=1, gcrefRegs=1C00000 {x22 x23 x24}, byrefRegs=80000 {x19}, byref, isz
ldapurb w0, [x24, #0x18]
- cbnz w0, G_M37807_IG32
+ cbnz w0, G_M37807_IG33
;; size=8 bbWeight=1 PerfScore 4.00
G_M37807_IG20: ; bbWeight=0, gcrefRegs=1C00000 {x22 x23 x24}, byrefRegs=80000 {x19}, byref
mov x0, x24
@@ -355,30 +356,36 @@ G_M37807_IG21: ; bbWeight=1, gcrefRegs=C00001 {x0 x22 x23}, byrefRegs=800
stp wzr, w1, [fp, #0x28] // [V43 tmp30], [V44 tmp31]
mov w21, wzr
cmp w24, #0
- ble G_M37807_IG33
+ ble G_M37807_IG34
;; size=32 bbWeight=1 PerfScore 8.00
G_M37807_IG22: ; bbWeight=0.61, gcrefRegs=C00001 {x0 x22 x23}, byrefRegs=80000 {x19}, byref
add x28, x0, #16
; byrRegs +[x28]
- ;; size=4 bbWeight=0.61 PerfScore 0.30
+ movz x27, #0xD1FFAB1E
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #1 LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.21
G_M37807_IG23: ; bbWeight=1.54, gcrefRegs=C00000 {x22 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
; gcrRegs -[x0]
- ldr x27, [x28, w21, UXTW #3]
- ; gcrRegs +[x27]
- ldr w0, [x27, #0x58]
+ ldr x2, [x28, w21, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w20, w0
cmp w1, w0
bne G_M37807_IG30
- ;; size=20 bbWeight=1.54 PerfScore 12.35
-G_M37807_IG24: ; bbWeight=1.41, gcrefRegs=8C00000 {x22 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
+ ;; size=24 bbWeight=1.54 PerfScore 13.90
+G_M37807_IG24: ; bbWeight=1.41, gcVars=0000000000000010 {V12}, gcrefRegs=C00004 {x2 x22 x23}, byrefRegs=10080000 {x19 x28}, gcvars, byref, isz
cbz w25, G_M37807_IG26
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG25: ; bbWeight=0, gcrefRegs=8C00000 {x22 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
- mov x0, x27
+G_M37807_IG25: ; bbWeight=0, gcrefRegs=C00004 {x2 x22 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x23
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
@@ -386,28 +393,26 @@ G_M37807_IG25: ; bbWeight=0, gcrefRegs=8C00000 {x22 x23 x27}, byrefRegs=1
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG36
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ cbz w0, G_M37807_IG37
+ mov x0, x27
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG26: ; bbWeight=1.41, gcrefRegs=8C00000 {x22 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
- cbz x22, G_M37807_IG29
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG26: ; bbWeight=1.41, gcrefRegs=C00004 {x2 x22 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
+ cbz x22, G_M37807_IG32
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG27: ; bbWeight=0.49, gcrefRegs=8C00000 {x22 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
- mov x0, x27
+G_M37807_IG27: ; bbWeight=0.49, gcrefRegs=C00004 {x2 x22 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
+ add x1, x27, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x27
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x27]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -416,23 +421,19 @@ G_M37807_IG27: ; bbWeight=0.49, gcrefRegs=8C00000 {x22 x23 x27}, byrefReg
; gcrRegs -[x0]
ldr w1, [x22, #0x08]
cmp w0, w1
- bne G_M37807_IG35
- ;; size=56 bbWeight=0.49 PerfScore 10.22
-G_M37807_IG28: ; bbWeight=0.24, gcrefRegs=8C00000 {x22 x23 x27}, byrefRegs=10080000 {x19 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ bne G_M37807_IG36
+ ;; size=48 bbWeight=0.49 PerfScore 10.46
+G_M37807_IG28: ; bbWeight=0.24, gcrefRegs=C00000 {x22 x23}, byrefRegs=10080000 {x19 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.24 PerfScore 0.61
-G_M37807_IG29: ; bbWeight=1.41, gcrefRegs=8C00000 {x22 x23 x27}, byrefRegs=10080000 {x19 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ ;; size=8 bbWeight=0.24 PerfScore 0.36
+G_M37807_IG29: ; bbWeight=1.41, gcrefRegs=C00000 {x22 x23}, byrefRegs=10080000 {x19 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x27
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -441,36 +442,44 @@ G_M37807_IG29: ; bbWeight=1.41, gcrefRegs=8C00000 {x22 x23 x27}, byrefReg
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x27]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.41 PerfScore 14.80
+ ;; size=48 bbWeight=1.41 PerfScore 15.50
G_M37807_IG30: ; bbWeight=1.54, gcrefRegs=C00000 {x22 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w21, w21, #1
cmp w24, w21
bgt G_M37807_IG23
- ;; size=28 bbWeight=1.54 PerfScore 6.95
+ ;; size=20 bbWeight=1.54 PerfScore 5.41
G_M37807_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
...
@@ -10,27 +10,27 @@
;
; V00 this [V00,T16] ( 11, 32.50) ref -> [fp+0x30] this class-hnd EH-live single-def <System.Buffers.SharedArrayPool`1[System.__Canon]>
; V01 loc0 [V01,T18] ( 5, 33.50) int -> x19
-; V02 loc1 [V02,T38] ( 5, 19 ) int -> x20
+; V02 loc1 [V02,T37] ( 5, 19 ) int -> x20
; V03 loc2 [V03,T28] ( 7, 27 ) ref -> x21 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T52] ( 4, 10 ) ref -> x22 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T37] ( 6, 19 ) int -> x23
-; V06 loc5 [V06,T46] ( 8, 10.50) ref -> [fp+0x28] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T51] ( 4, 10 ) ref -> x22 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T36] ( 6, 19 ) int -> x23
+; V06 loc5 [V06,T45] ( 8, 10.50) ref -> [fp+0x28] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T47] ( 8, 10.50) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T46] ( 8, 10.50) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T32] ( 3, 20 ) ref -> x23 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T31] ( 3, 20 ) ref -> x23 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T05] ( 5, 66 ) int -> x19
; V12 loc11 [V12,T03] ( 6, 64 ) ref -> x26 class-hnd <<unknown class>>
-; V13 loc12 [V13,T55] ( 2, 8.50) int -> x23
-; V14 loc13 [V14,T79] ( 3, 1.50) int -> x23
-; V15 loc14 [V15,T48] ( 8, 10.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T54] ( 2, 8.50) int -> x23
+; V14 loc13 [V14,T78] ( 3, 1.50) int -> x23
+; V15 loc14 [V15,T47] ( 8, 10.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T13] ( 5, 36 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T12] ( 6, 44 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> x26
-; V19 loc18 [V19,T30] ( 3, 24 ) int -> x2
+; V19 loc18 [V19,T29] ( 3, 24 ) int -> x1
; V20 loc19 [V20,T09] ( 6, 48 ) ref -> x28 class-hnd <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T33] ( 3, 20 ) ref -> x24 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T32] ( 3, 20 ) ref -> x24 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T14] ( 2, 36 ) int -> x25 "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -42,85 +42,84 @@
; V31 tmp10 [V31,T23] ( 2, 32 ) int -> x27 "impAppendStmt"
; V32 tmp11 [V32,T24] ( 2, 32 ) int -> x26 "impAppendStmt"
;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V34 tmp13 [V34,T67] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
+; V34 tmp13 [V34,T66] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V36 tmp15 [V36 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V38 tmp17 [V38,T68] ( 3, 3 ) ref -> x20 single-def "handle histogram profile tmp"
+; V38 tmp17 [V38,T67] ( 3, 3 ) ref -> x20 single-def "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V42 tmp21 [V42 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V43 tmp22 [V43,T69] ( 3, 3 ) ref -> x24 single-def "handle histogram profile tmp"
+; V43 tmp22 [V43,T68] ( 3, 3 ) ref -> x24 single-def "handle histogram profile tmp"
;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V48 tmp27 [V48,T34] ( 3, 20 ) int -> x26 "Inline stloc first use temp"
+; V48 tmp27 [V48,T33] ( 3, 20 ) int -> x26 "Inline stloc first use temp"
;* V49 tmp28 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp29 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V51 tmp30 [V51,T63] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V51 tmp30 [V51,T62] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V52 tmp31 [V52,T06] ( 5, 66 ) int -> x24 "Inline stloc first use temp"
; V53 tmp32 [V53,T25] ( 2, 32 ) int -> x4 "Inlining Arg"
; V54 tmp33 [V54,T26] ( 2, 32 ) int -> x4 "Inlining Arg"
-; V55 tmp34 [V55,T64] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T76] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T65] ( 2, 4 ) ref -> x23 "field V09.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T77] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
-; V59 tmp38 [V59,T66] ( 2, 4 ) ref -> x24 "field V16.key (fldOffset=0x0)" P-INDEP
-; V60 tmp39 [V60,T78] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T63] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T75] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T64] ( 2, 4 ) ref -> x23 "field V09.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T76] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
+; V59 tmp38 [V59,T65] ( 2, 4 ) ref -> x24 "field V16.key (fldOffset=0x0)" P-INDEP
+; V60 tmp39 [V60,T77] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V29.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V29.value (fldOffset=0x8)" P-DEP
;* V65 tmp44 [V65 ] ( 0, 0 ) ref -> zero-ref "field V33.key (fldOffset=0x0)" P-DEP
;* V66 tmp45 [V66 ] ( 0, 0 ) ref -> zero-ref "field V33.value (fldOffset=0x8)" P-DEP
-; V67 tmp46 [V67,T70] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V68 tmp47 [V68,T40] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V69 tmp48 [V69,T60] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V67 tmp46 [V67,T69] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V68 tmp47 [V68,T39] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V69 tmp48 [V69,T59] ( 2, 8 ) ref -> x0 "argument with side effect"
; V70 tmp49 [V70,T27] ( 2, 32 ) long -> x1 "argument with side effect"
; V71 tmp50 [V71,T20] ( 2, 32 ) ref -> x2 "argument with side effect"
-;* V72 tmp51 [V72,T43] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V73 tmp52 [V73,T81] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V74 tmp53 [V74,T71] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V75 tmp54 [V75,T72] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V76 tmp55 [V76,T41] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V77 tmp56 [V77,T61] ( 2, 8 ) ref -> x0 "argument with side effect"
+;* V72 tmp51 [V72,T42] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V73 tmp52 [V73,T80] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V74 tmp53 [V74,T70] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V75 tmp54 [V75,T71] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V76 tmp55 [V76,T40] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V77 tmp56 [V77,T60] ( 2, 8 ) ref -> x0 "argument with side effect"
; V78 tmp57 [V78,T08] ( 2, 64 ) long -> x1 "argument with side effect"
; V79 tmp58 [V79,T07] ( 2, 64 ) ref -> x2 "argument with side effect"
-;* V80 tmp59 [V80,T44] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V81 tmp60 [V81,T82] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V82 tmp61 [V82,T73] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V83 tmp62 [V83,T74] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V84 tmp63 [V84,T42] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V85 tmp64 [V85,T62] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V86 tmp65 [V86,T83] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V87 tmp66 [V87,T75] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V88 PSPSym [V88,T80] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+;* V80 tmp59 [V80,T43] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V81 tmp60 [V81,T81] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V82 tmp61 [V82,T72] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V83 tmp62 [V83,T73] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V84 tmp63 [V84,T41] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V85 tmp64 [V85,T61] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V86 tmp65 [V86,T82] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V87 tmp66 [V87,T74] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V88 PSPSym [V88,T79] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
; V89 cse0 [V89,T17] ( 4, 34 ) long -> registers hoist multi-def "CSE - aggressive"
-; V90 cse1 [V90,T56] ( 4, 8 ) ref -> x22 multi-def "CSE - moderate"
-; V91 cse2 [V91,T49] ( 6, 10.50) ref -> x22 multi-def "CSE - moderate"
-; V92 cse3 [V92,T57] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
-; V93 cse4 [V93,T50] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
-; V94 cse5 [V94,T58] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
-; V95 cse6 [V95,T51] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
-; V96 cse7 [V96,T29] ( 3, 24 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
-; V97 cse8 [V97,T10] ( 4, 48 ) long -> x28 "CSE - aggressive"
-; V98 cse9 [V98,T04] ( 3, 68 ) int -> x27 "CSE - aggressive"
-; V99 cse10 [V99,T01] ( 18,100.50) long -> x22 hoist multi-def "CSE - aggressive"
-; V100 cse11 [V100,T02] ( 44, 93.50) long -> registers multi-def "CSE - aggressive"
-; V101 cse12 [V101,T31] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
-; V102 cse13 [V102,T39] ( 2, 18 ) byref -> x28 hoist "CSE - moderate"
-; V103 cse14 [V103,T35] ( 3, 20 ) int -> x27 "CSE - moderate"
-; V104 cse15 [V104,T36] ( 3, 20 ) int -> x22 "CSE - moderate"
-; V105 rat0 [V105,T53] ( 3, 9.44) long -> x1 "Spilling to split statement for tree"
-; V106 rat1 [V106,T59] ( 3, 8 ) long -> x24 "runtime lookup"
-; V107 rat2 [V107,T45] ( 3, 11.20) long -> x2 "spilling expr"
-; V108 rat3 [V108,T54] ( 3, 8.96) long -> x24 "fgMakeTemp is creating a new local variable"
-; V109 rat4 [V109,T12] ( 3, 37.76) long -> x1 "Spilling to split statement for tree"
-; V110 rat5 [V110,T19] ( 3, 32 ) long -> registers "runtime lookup"
-; V111 rat6 [V111,T11] ( 3, 44.80) long -> x2 "spilling expr"
-; V112 rat7 [V112,T15] ( 3, 35.84) long -> x2 "fgMakeTemp is creating a new local variable"
+; V90 cse1 [V90,T55] ( 4, 8 ) ref -> x22 multi-def "CSE - moderate"
+; V91 cse2 [V91,T48] ( 6, 10.50) ref -> x22 multi-def "CSE - moderate"
+; V92 cse3 [V92,T56] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
+; V93 cse4 [V93,T49] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
+; V94 cse5 [V94,T57] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
+; V95 cse6 [V95,T50] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
+; V96 cse7 [V96,T10] ( 5, 56 ) long -> x28 "CSE - aggressive"
+; V97 cse8 [V97,T01] ( 18,100.50) long -> x22 hoist multi-def "CSE - aggressive"
+; V98 cse9 [V98,T02] ( 44, 93.50) long -> registers multi-def "CSE - aggressive"
+; V99 cse10 [V99,T04] ( 3, 68 ) int -> x27 "CSE - aggressive"
+; V100 cse11 [V100,T30] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
+; V101 cse12 [V101,T38] ( 2, 18 ) byref -> x28 hoist "CSE - moderate"
+; V102 cse13 [V102,T34] ( 3, 20 ) int -> x27 "CSE - moderate"
+; V103 cse14 [V103,T35] ( 3, 20 ) int -> x22 "CSE - moderate"
+; V104 rat0 [V104,T52] ( 3, 9.44) long -> x1 "Spilling to split statement for tree"
+; V105 rat1 [V105,T58] ( 3, 8 ) long -> x24 "runtime lookup"
+; V106 rat2 [V106,T44] ( 3, 11.20) long -> x2 "spilling expr"
+; V107 rat3 [V107,T53] ( 3, 8.96) long -> x24 "fgMakeTemp is creating a new local variable"
+; V108 rat4 [V108,T13] ( 3, 37.76) long -> x1 "Spilling to split statement for tree"
+; V109 rat5 [V109,T19] ( 3, 32 ) long -> registers "runtime lookup"
+; V110 rat6 [V110,T11] ( 3, 44.80) long -> x2 "spilling expr"
+; V111 rat7 [V111,T15] ( 3, 35.84) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 64
@@ -301,7 +300,7 @@ G_M16529_IG11: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}
str x0, [fp, #0x28] // [V06 loc5]
; GC ptr vars +{V06}
;; size=72 bbWeight=0.50 PerfScore 10.00
-G_M16529_IG12: ; bbWeight=0.50, gcVars=00000000000000000000400000010000 {V00 V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG12: ; bbWeight=0.50, gcVars=00000000000000000000200000010000 {V00 V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
b G_M16529_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M16529_IG13: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
@@ -403,7 +402,7 @@ G_M16529_IG16: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}
str x0, [fp, #0x20] // [V08 loc7]
; GC ptr vars +{V08}
;; size=64 bbWeight=0.50 PerfScore 8.00
-G_M16529_IG17: ; bbWeight=0.50, gcVars=00000000000000000000800000010000 {V00 V08}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG17: ; bbWeight=0.50, gcVars=00000000000000000000400000010000 {V00 V08}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
b G_M16529_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M16529_IG18: ; bbWeight=2, gcrefRegs=A00000 {x21 x23}, byrefRegs=0000 {}, byref, isz
@@ -622,7 +621,7 @@ G_M16529_IG30: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}
str x0, [fp, #0x18] // [V15 loc14]
; GC ptr vars +{V15}
;; size=64 bbWeight=0.50 PerfScore 8.00
-G_M16529_IG31: ; bbWeight=0.50, gcVars=00000000000000000001000000010000 {V00 V15}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG31: ; bbWeight=0.50, gcVars=00000000000000000000800000010000 {V00 V15}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #1 LSL #32
@@ -660,23 +659,20 @@ G_M16529_IG33: ; bbWeight=16, gcrefRegs=1200000 {x21 x24}, byrefRegs=0000
;; size=16 bbWeight=16 PerfScore 88.00
G_M16529_IG34: ; bbWeight=8, gcrefRegs=1200000 {x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- add x1, x24, x28
- ; byrRegs +[x1]
- str x1, [fp, #0x10] // [V96 cse7]
- ; GC ptr vars +{V96}
- ldr w2, [x1, #0x08]
- cbnz w2, G_M16529_IG39
+ add x0, x24, x28
+ ; byrRegs +[x0]
+ ldr w1, [x0, #0x08]
+ cbnz w1, G_M16529_IG39
add x0, x25, #0xD1FFAB1E
+ ; byrRegs -[x0]
bl CORINFO_HELP_COUNTPROFILE32
- ; byrRegs -[x1]
; gcr arg pop 0
- ldr x28, [fp, #0x10] // [V96 cse7]
- ; byrRegs +[x28]
- str w19, [x28, #0x08]
- ;; size=32 bbWeight=8 PerfScore 80.00
-G_M16529_IG35: ; bbWeight=64, gcVars=00000000000000000001000000010000 {V00 V15}, gcrefRegs=1200000 {x21 x24}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[x28]
- ; GC ptr vars -{V96}
+ add x0, x24, x28
+ ; byrRegs +[x0]
+ str w19, [x0, #0x08]
+ ;; size=28 bbWeight=8 PerfScore 60.00
+G_M16529_IG35: ; bbWeight=64, gcrefRegs=1200000 {x21 x24}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0]
sub x0, x22, #8
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
@@ -721,7 +717,7 @@ G_M16529_IG38: ; bbWeight=0.50, gcrefRegs=1000000 {x24}, byrefRegs=0000 {
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M16529_IG39: ; bbWeight=8, gcrefRegs=1200000 {x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
- sub w0, w19, w2
+ sub w0, w19, w1
sxtw x0, w0
mov w1, w23
cmp x0, x1
@@ -871,7 +867,7 @@ G_M16529_IG49: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0xA0
...
@@ -9,93 +9,93 @@
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 4, 10 ) ref -> [fp+0xF8] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Array>
-; V01 loc1 [V01,T07] ( 6, 21 ) int -> x20
+; V01 loc1 [V01,T06] ( 6, 21 ) int -> x20
; V02 loc2 [V02 ] ( 8, 4 ) ref -> [fp+0xF0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
; V03 loc3 [V03 ] ( 38, 13 ) ref -> [fp+0xE8] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <ulong[,]>
-;* V04 loc4 [V04,T59] ( 0, 0 ) int -> zero-ref
-;* V05 loc5 [V05,T50] ( 0, 0 ) int -> zero-ref
-; V06 loc6 [V06 ] ( 4, 33 ) ref -> [fp+0xE0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
-; V07 loc7 [V07,T02] ( 7, 72.50) int -> x0
-; V08 loc8 [V08,T00] ( 7,100 ) int -> x1
-; V09 loc9 [V09,T31] ( 4, 2 ) ref -> x0 class-hnd exact single-def <<unknown class>>
-; V10 loc10 [V10,T17] ( 12, 6 ) ref -> x0 class-hnd single-def <ulong[,]>
-; V11 loc11 [V11,T32] ( 4, 2 ) ref -> x19 class-hnd exact single-def <<unknown class>>
-; V12 loc12 [V12,T25] ( 8, 4 ) ref -> x0 class-hnd <<unknown class>>
+;* V04 loc4 [V04,T58] ( 0, 0 ) int -> zero-ref
+;* V05 loc5 [V05,T49] ( 0, 0 ) int -> zero-ref
+; V06 loc6 [V06 ] ( 5, 7 ) ref -> [fp+0xE0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
+;* V07 loc7 [V07,T59] ( 0, 0 ) int -> zero-ref
+; V08 loc8 [V08,T02] ( 14, 26.50) int -> x0
+; V09 loc9 [V09,T30] ( 4, 2 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V10 loc10 [V10,T15] ( 12, 6 ) ref -> x0 class-hnd single-def <ulong[,]>
+; V11 loc11 [V11,T31] ( 4, 2 ) ref -> x20 class-hnd exact single-def <<unknown class>>
+; V12 loc12 [V12,T24] ( 8, 4 ) ref -> x0 class-hnd <<unknown class>>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14 ] ( 3, 1.50) struct ( 8) [fp+0xD8] do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
; V16 tmp3 [V16 ] ( 3, 6 ) int -> [fp+0xD0] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
;* V18 tmp5 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V19 tmp6 [V19,T51] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V20 tmp7 [V20,T26] ( 3, 4 ) int -> x20 "Inlining Arg"
-; V21 tmp8 [V21,T38] ( 2, 2 ) ref -> x0 class-hnd single-def "Inline return value spill temp" <System.Array>
+;* V19 tmp6 [V19,T50] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+; V20 tmp7 [V20,T25] ( 3, 4 ) int -> x20 "Inlining Arg"
+; V21 tmp8 [V21,T37] ( 2, 2 ) ref -> x0 class-hnd single-def "Inline return value spill temp" <System.Array>
; V22 tmp9 [V22 ] ( 4, 4 ) ref -> [fp+0xC8] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
; V23 tmp10 [V23 ] ( 3, 6 ) ref -> [fp+0xC0] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
; V24 tmp11 [V24 ] ( 4, 8 ) struct (16) [fp+0xB0] do-not-enreg[XSF] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-; V25 tmp12 [V25,T20] ( 3, 6 ) struct (16) [fp+0xA0] do-not-enreg[SFA] multireg-arg "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
+; V25 tmp12 [V25,T19] ( 3, 6 ) struct (16) [fp+0xA0] do-not-enreg[SFA] multireg-arg "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
;* V26 tmp13 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V27 tmp14 [V27,T23] ( 3, 5.01) ref -> x0 class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V28 tmp15 [V28,T39] ( 2, 2 ) byref -> x1 single-def
+; V27 tmp14 [V27,T22] ( 3, 5.01) ref -> x0 class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V28 tmp15 [V28,T38] ( 2, 2 ) byref -> x1 single-def
;* V29 tmp16 [V29 ] ( 0, 0 ) ref -> zero-ref single-def
;* V30 tmp17 [V30 ] ( 0, 0 ) byref -> zero-ref single-def
-; V31 tmp18 [V31,T41] ( 3, 1.50) long -> x3
-; V32 tmp19 [V32,T27] ( 2, 4 ) struct ( 8) [fp+0x98] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V31 tmp18 [V31,T40] ( 3, 1.50) long -> x3
+; V32 tmp19 [V32,T26] ( 2, 4 ) struct ( 8) [fp+0x98] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V33 tmp20 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V34 tmp21 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V35 tmp22 [V35,T03] ( 5, 40 ) ref -> x19 class-hnd "Inlining Arg" <System.Array>
-; V36 tmp23 [V36,T21] ( 2, 4 ) int -> x0 "Inline return value spill temp"
+; V35 tmp22 [V35,T00] ( 5, 40 ) ref -> x19 class-hnd "Inlining Arg" <System.Array>
+; V36 tmp23 [V36,T20] ( 2, 4 ) int -> x0 "Inline return value spill temp"
;* V37 tmp24 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V38 tmp25 [V38,T15] ( 3, 10 ) int -> x0 "Inline stloc first use temp"
-; V39 tmp26 [V39,T05] ( 3, 24 ) byref -> x21 "Inlining Arg"
+; V38 tmp25 [V38,T13] ( 3, 10 ) int -> x0 "Inline stloc first use temp"
+; V39 tmp26 [V39,T04] ( 3, 24 ) byref -> x21 "Inlining Arg"
;* V40 tmp27 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp28 [V41,T04] ( 5, 40 ) ref -> x19 class-hnd "Inlining Arg" <System.Array>
-; V42 tmp29 [V42,T22] ( 2, 4 ) int -> x0 "Inline return value spill temp"
+; V41 tmp28 [V41,T01] ( 5, 40 ) ref -> x19 class-hnd "Inlining Arg" <System.Array>
+; V42 tmp29 [V42,T21] ( 2, 4 ) int -> x0 "Inline return value spill temp"
;* V43 tmp30 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V44 tmp31 [V44,T16] ( 3, 10 ) int -> x0 "Inline stloc first use temp"
-; V45 tmp32 [V45,T06] ( 3, 24 ) byref -> x21 "Inlining Arg"
+; V44 tmp31 [V44,T14] ( 3, 10 ) int -> x0 "Inline stloc first use temp"
+; V45 tmp32 [V45,T05] ( 3, 24 ) byref -> x21 "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V47 tmp34 [V47,T19] ( 5, 6 ) int -> x0 "Single return block return value"
-; V48 FramesRoot [V48,T18] ( 6, 6 ) long -> x19 "Pinvoke FrameListRoot"
+; V47 tmp34 [V47,T17] ( 5, 6 ) int -> x0 "Single return block return value"
+; V48 FramesRoot [V48,T16] ( 6, 6 ) long -> x19 "Pinvoke FrameListRoot"
; V49 PInvokeFrame [V49 ] ( 8, 8 ) struct (72) [fp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V50 tmp37 [V50,T60] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V51 tmp38 [V51 ] ( 4, 8 ) struct (16) [fp+0x88] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V52 tmp39 [V52,T10] ( 2, 16 ) long -> x1 "argument with side effect"
-; V53 tmp40 [V53,T11] ( 2, 16 ) long -> x1 "argument with side effect"
+; V52 tmp39 [V52,T07] ( 2, 16 ) long -> x1 "argument with side effect"
+; V53 tmp40 [V53,T08] ( 2, 16 ) long -> x1 "argument with side effect"
; V54 tmp41 [V54 ] ( 4, 4 ) struct (16) [fp+0x78] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V55 tmp42 [V55,T40] ( 2, 2 ) long -> x2 "argument with side effect"
+; V55 tmp42 [V55,T39] ( 2, 2 ) long -> x2 "argument with side effect"
; V56 tmp43 [V56 ] ( 4, 4 ) struct (16) [fp+0x68] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
; V57 tmp44 [V57 ] ( 4, 4 ) struct (16) [fp+0x58] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V58 tmp45 [V58,T01] ( 3, 96 ) ref -> x4 "arr expr"
-; V59 tmp46 [V59,T12] ( 21, 15 ) int -> x2 "MD array shared temp"
-; V60 tmp47 [V60,T13] ( 21, 15 ) int -> x6 "MD array shared temp"
-;* V61 tmp48 [V61,T52] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-; V62 tmp49 [V62,T28] ( 3, 3 ) int -> x7 "MD array shared temp"
-;* V63 tmp50 [V63,T53] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-; V64 tmp51 [V64,T29] ( 3, 3 ) int -> x5 "MD array shared temp"
-; V65 tmp52 [V65,T30] ( 3, 3 ) int -> x1 "MD array shared temp"
-;* V66 tmp53 [V66,T54] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V67 tmp54 [V67,T55] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V68 tmp55 [V68,T56] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V69 tmp56 [V69,T57] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V70 tmp57 [V70,T58] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-; V71 cse0 [V71,T33] ( 4, 2 ) int -> x2 "CSE - moderate"
-; V72 cse1 [V72,T34] ( 4, 2 ) int -> x1 "CSE - moderate"
-; V73 cse2 [V73,T42] ( 3, 1.50) int -> x6 "CSE - moderate"
-; V74 cse3 [V74,T43] ( 3, 1.50) int -> x7 "CSE - moderate"
-; V75 cse4 [V75,T44] ( 3, 1.50) int -> x5 "CSE - moderate"
-; V76 cse5 [V76,T08] ( 2, 20 ) int -> x3 hoist "CSE - aggressive"
-; V77 cse6 [V77,T35] ( 2, 1 ) int -> x2 "CSE - moderate"
-; V78 cse7 [V78,T36] ( 2, 1 ) int -> x1 "CSE - moderate"
-; V79 cse8 [V79,T45] ( 2, 1 ) int -> x6 "CSE - moderate"
-; V80 cse9 [V80,T46] ( 2, 1 ) int -> x7 "CSE - moderate"
-; V81 cse10 [V81,T47] ( 2, 1 ) int -> x5 "CSE - moderate"
-; V82 cse11 [V82,T09] ( 2, 20 ) long -> x2 hoist "CSE - aggressive"
-; V83 cse12 [V83,T24] ( 10, 5 ) int -> x4 "CSE - moderate"
-; V84 cse13 [V84,T14] ( 6, 12 ) ref -> x1 multi-def "CSE - moderate"
-; V85 cse14 [V85,T48] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V86 cse15 [V86,T49] ( 3, 1.50) int -> x3 "CSE - moderate"
-; V87 cse16 [V87,T37] ( 4, 2 ) int -> x5 "CSE - moderate"
+; V58 tmp45 [V58,T03] ( 6, 24 ) ref -> x2 "arr expr"
+; V59 tmp46 [V59,T09] ( 21, 15 ) int -> x2 "MD array shared temp"
+; V60 tmp47 [V60,T10] ( 21, 15 ) int -> x6 "MD array shared temp"
+;* V61 tmp48 [V61,T51] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+; V62 tmp49 [V62,T27] ( 3, 3 ) int -> x7 "MD array shared temp"
+;* V63 tmp50 [V63,T52] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+; V64 tmp51 [V64,T28] ( 3, 3 ) int -> x5 "MD array shared temp"
+; V65 tmp52 [V65,T29] ( 3, 3 ) int -> x1 "MD array shared temp"
+;* V66 tmp53 [V66,T53] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V67 tmp54 [V67,T54] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V68 tmp55 [V68,T55] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V69 tmp56 [V69,T56] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V70 tmp57 [V70,T57] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+; V71 cse0 [V71,T32] ( 4, 2 ) int -> x2 "CSE - moderate"
+; V72 cse1 [V72,T33] ( 4, 2 ) int -> x1 "CSE - moderate"
+; V73 cse2 [V73,T41] ( 3, 1.50) int -> x6 "CSE - moderate"
+; V74 cse3 [V74,T42] ( 3, 1.50) int -> x7 "CSE - moderate"
+; V75 cse4 [V75,T43] ( 3, 1.50) int -> x5 "CSE - moderate"
+; V76 cse5 [V76,T18] ( 3, 6 ) byref -> x1 "CSE - moderate"
+; V77 cse6 [V77,T34] ( 2, 1 ) int -> x2 "CSE - moderate"
+; V78 cse7 [V78,T35] ( 2, 1 ) int -> x1 "CSE - moderate"
+; V79 cse8 [V79,T44] ( 2, 1 ) int -> x6 "CSE - moderate"
+; V80 cse9 [V80,T45] ( 2, 1 ) int -> x7 "CSE - moderate"
+; V81 cse10 [V81,T46] ( 2, 1 ) int -> x5 "CSE - moderate"
+; V82 cse11 [V82,T23] ( 10, 5 ) int -> x4 "CSE - moderate"
+; V83 cse12 [V83,T11] ( 6, 12 ) ref -> x1 multi-def "CSE - aggressive"
+; V84 cse13 [V84,T47] ( 3, 1.50) int -> x1 "CSE - moderate"
+; V85 cse14 [V85,T48] ( 3, 1.50) int -> x3 "CSE - moderate"
+; V86 cse15 [V86,T36] ( 4, 2 ) int -> x5 "CSE - moderate"
+; V87 cse16 [V87,T12] ( 6, 10 ) long -> x19 "CSE - aggressive"
;
; Lcl frame size = 240
@@ -375,19 +375,17 @@ G_M55471_IG21: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
ldr x0, [x0]
; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x0, x1
+ movz x19, #0xD1FFAB1E
+ movk x19, #0xD1FFAB1E LSL #16
+ movk x19, #1 LSL #32
+ cmp x0, x19
bne G_M55471_IG24
add w20, w20, #1
cmp w20, #16
blt G_M55471_IG12
;; size=92 bbWeight=4 PerfScore 84.00
G_M55471_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ add x0, x19, #0xD1FFAB1E
mov x1, #3
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
@@ -401,10 +399,8 @@ G_M55471_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[x0]
; byrRegs +[x0]
str x0, [fp, #0x78] // [V54 tmp41]
- movz x0, #0xD1FFAB1E
+ add x0, x19, #0xD1FFAB1E
; byrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
str x0, [fp, #0x80] // [V54 tmp41+0x08]
ldp x0, x1, [fp, #0x78] // [V54 tmp41], [V54 tmp41+0x08]
; byrRegs +[x0]
@@ -451,7 +447,7 @@ G_M55471_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[x2]
cmp x2, #4
beq G_M55471_IG25
- ;; size=184 bbWeight=0.50 PerfScore 30.00
+ ;; size=168 bbWeight=0.50 PerfScore 29.00
G_M55471_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #2
b G_M55471_IG35
@@ -775,12 +771,10 @@ G_M55471_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[x0]
; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- movz x0, #0xD1FFAB1E
+ mov x20, x0
+ ; gcrRegs +[x20]
+ add x0, x19, #0xD1FFAB1E
; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
mov x1, #3
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
@@ -789,16 +783,14 @@ G_M55471_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
str q16, [x0, #0x10]
mov x14, #3
str x14, [x0, #0x20]
- add x14, x19, #16
+ add x14, x20, #16
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ add x0, x19, #0xD1FFAB1E
mov x1, #3
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
@@ -807,14 +799,14 @@ G_M55471_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
str q16, [x0, #0x10]
mov x14, #6
str x14, [x0, #0x20]
- add x14, x19, #24
+ add x14, x20, #24
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- str x19, [fp, #0xE0] // [V06 loc6]
+ str x20, [fp, #0xE0] // [V06 loc6]
...
@@ -13,12 +13,12 @@
; V01 arg1 [V01,T01] ( 9, 4.27) ref -> x20 ld-addr-op class-hnd <System.String>
; V02 arg2 [V02,T00] ( 6, 5.32) int -> x19
; V03 loc0 [V03,T13] ( 6, 2.57) int -> x22 ld-addr-op
-; V04 loc1 [V04,T16] ( 3, 2.24) ref -> x0 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
-; V05 loc2 [V05,T12] ( 16, 2.64) ref -> x21 class-hnd <System.Reflection.FieldInfo>
-; V06 loc3 [V06,T18] ( 3, 2 ) ubyte -> x22
+; V04 loc1 [V04,T14] ( 4, 2.56) ref -> x21 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
+; V05 loc2 [V05,T12] ( 16, 2.64) ref -> x22 class-hnd <System.Reflection.FieldInfo>
+; V06 loc3 [V06,T17] ( 3, 2 ) ubyte -> x23
;* V07 loc4 [V07 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op
-; V08 loc5 [V08,T15] ( 5, 2.28) int -> x23
-; V09 loc6 [V09,T19] ( 12, 0.96) ref -> x27 class-hnd <System.Reflection.RuntimeFieldInfo>
+; V08 loc5 [V08,T15] ( 5, 2.28) int -> x25
+; V09 loc6 [V09,T18] ( 12, 0.96) ref -> x27 class-hnd <System.Reflection.RuntimeFieldInfo>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -28,7 +28,7 @@
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V19 tmp9 [V19,T24] ( 3, 0 ) ref -> x20 "handle histogram profile tmp"
+; V19 tmp9 [V19,T23] ( 3, 0 ) ref -> x20 "handle histogram profile tmp"
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
@@ -48,32 +48,31 @@
;* V36 tmp26 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V37 tmp27 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
; V38 tmp28 [V38,T03] ( 14, 5.18) ref -> x24 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V39 tmp29 [V39,T21] ( 4, 0.64) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V39 tmp29 [V39,T20] ( 4, 0.64) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V41 tmp31 [V41,T17] ( 5, 2.00) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimeFieldInfo[]>
+; V41 tmp31 [V41,T16] ( 5, 2.00) ref -> x21 class-hnd "Inline return value spill temp" <System.Reflection.RuntimeFieldInfo[]>
; V42 tmp32 [V42,T10] ( 2, 2.82) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
; V43 tmp33 [V43,T11] ( 4, 2.68) ref -> x0
-; V44 tmp34 [V44,T31] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V45 tmp35 [V45,T23] ( 4, 0 ) ref -> x0
+; V44 tmp34 [V44,T30] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V45 tmp35 [V45,T22] ( 4, 0 ) ref -> x21
;* V46 tmp36 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp37 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp38 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp39 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V50 tmp40 [V50,T33] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V51 tmp41 [V51,T25] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V52 tmp42 [V52,T26] ( 3, 0 ) ref -> x0 "argument with side effect"
-;* V53 tmp43 [V53,T34] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V54 tmp44 [V54,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V55 tmp45 [V55,T27] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V56 tmp46 [V56,T28] ( 3, 0 ) ref -> x20 "argument with side effect"
-; V57 tmp47 [V57,T32] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V58 tmp48 [V58,T29] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V59 tmp49 [V59,T30] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V60 cse0 [V60,T20] ( 3, 0.96) int -> x0 "CSE - conservative"
-; V61 cse1 [V61,T14] ( 3, 2.32) int -> x25 "CSE - moderate"
-; V62 cse2 [V62,T22] ( 2, 0.56) byref -> x26 hoist "CSE - conservative"
-; V63 cse3 [V63,T08] ( 3, 3 ) long -> x0 "CSE - aggressive"
-; V64 cse4 [V64,T07] ( 6, 3.88) ref -> x1 multi-def "CSE - aggressive"
+;* V50 tmp40 [V50,T32] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V51 tmp41 [V51,T24] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V52 tmp42 [V52,T25] ( 3, 0 ) ref -> x0 "argument with side effect"
+;* V53 tmp43 [V53,T33] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V54 tmp44 [V54,T34] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V55 tmp45 [V55,T26] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V56 tmp46 [V56,T27] ( 3, 0 ) ref -> x20 "argument with side effect"
+; V57 tmp47 [V57,T31] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V58 tmp48 [V58,T28] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V59 tmp49 [V59,T29] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
+; V60 cse0 [V60,T19] ( 3, 0.96) int -> x0 "CSE - conservative"
+; V61 cse1 [V61,T21] ( 2, 0.56) byref -> x26 hoist "CSE - conservative"
+; V62 cse2 [V62,T08] ( 3, 3 ) long -> x0 "CSE - aggressive"
+; V63 cse3 [V63,T07] ( 6, 3.88) ref -> x1 multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -211,7 +210,7 @@ G_M40435_IG11: ; bbWeight=0.08, gcrefRegs=900000 {x20 x23}, byrefRegs=200
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x23]
; byrRegs -[x14]
- cbz x21, G_M40435_IG31
+ cbz x21, G_M40435_IG32
mov x0, x21
; byrRegs +[x0]
mov x1, x25
@@ -234,7 +233,7 @@ G_M40435_IG12: ; bbWeight=1, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000
;; size=12 bbWeight=1 PerfScore 4.50
G_M40435_IG13: ; bbWeight=0.29, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000 {}, byref, isz
cmp w22, #2
- bne G_M40435_IG22
+ bne G_M40435_IG23
;; size=8 bbWeight=0.29 PerfScore 0.44
G_M40435_IG14: ; bbWeight=0, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000 {}, byref, isz
add x0, x24, #40
@@ -252,11 +251,13 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000
; gcrRegs -[x2] +[x0]
; byrRegs -[x0]
; gcr arg pop 0
- cbnz x0, G_M40435_IG21
- b G_M40435_IG20
- ;; size=48 bbWeight=0 PerfScore 0.00
+ mov x21, x0
+ ; gcrRegs +[x21]
+ cbnz x21, G_M40435_IG22
+ b G_M40435_IG21
+ ;; size=52 bbWeight=0 PerfScore 0.00
G_M40435_IG15: ; bbWeight=0.71, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
add x0, x24, #32
; byrRegs +[x0]
mov x2, x20
@@ -290,33 +291,37 @@ G_M40435_IG16: ; bbWeight=0.57, gcrefRegs=1100000 {x20 x24}, byrefRegs=00
; gcrRegs -[x1 x20 x24]
; gcr arg pop 0
;; size=36 bbWeight=0.57 PerfScore 4.26
-G_M40435_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- mov x21, xzr
+G_M40435_IG17: ; bbWeight=0.71, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ mov x21, x0
; gcrRegs +[x21]
+ ;; size=4 bbWeight=0.71 PerfScore 0.35
+G_M40435_IG18: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ mov x22, xzr
+ ; gcrRegs +[x22]
eor w19, w19, #2
- mov w22, wzr
mov w23, wzr
- ldr w25, [x0, #0x08]
- cmp w25, #0
- ble G_M40435_IG25
+ mov w25, wzr
+ ldr w0, [x21, #0x08]
+ cmp w0, #0
+ ble G_M40435_IG26
;; size=28 bbWeight=1 PerfScore 6.50
-G_M40435_IG18: ; bbWeight=0.24, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref
- add x26, x0, #16
+G_M40435_IG19: ; bbWeight=0.24, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
+ add x26, x21, #16
; byrRegs +[x26]
;; size=4 bbWeight=0.24 PerfScore 0.12
-G_M40435_IG19: ; bbWeight=0.32, gcrefRegs=200000 {x21}, byrefRegs=4000000 {x26}, byref, isz
- ; gcrRegs -[x0]
- ldr x27, [x26, w23, UXTW #3]
+G_M40435_IG20: ; bbWeight=0.32, gcrefRegs=600000 {x21 x22}, byrefRegs=4000000 {x26}, byref, isz
+ ldr x27, [x26, w25, UXTW #3]
; gcrRegs +[x27]
ldr w0, [x27, #0x18]
and w1, w19, w0
cmp w1, w0
- bne G_M40435_IG30
- cbz x21, G_M40435_IG29
- b G_M40435_IG32
+ bne G_M40435_IG31
+ cbz x22, G_M40435_IG30
+ b G_M40435_IG33
;; size=28 bbWeight=0.32 PerfScore 3.20
-G_M40435_IG20: ; bbWeight=0, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21 x27] +[x20 x24]
+G_M40435_IG21: ; bbWeight=0, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21-x22 x27] +[x20 x24]
; byrRegs -[x26]
mov x0, x24
; gcrRegs +[x0]
@@ -331,13 +336,16 @@ G_M40435_IG20: ; bbWeight=0, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000
blr x4
; gcrRegs -[x1 x20 x24]
; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M40435_IG21: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- b G_M40435_IG17
+ mov x21, x0
+ ; gcrRegs +[x21]
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M40435_IG22: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M40435_IG18
;; size=4 bbWeight=0 PerfScore 0.00
-G_M40435_IG22: ; bbWeight=0.29, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x24]
- cbz w22, G_M40435_IG23
+G_M40435_IG23: ; bbWeight=0.29, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x21] +[x24]
+ cbz w22, G_M40435_IG24
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -351,22 +359,22 @@ G_M40435_IG22: ; bbWeight=0.29, gcrefRegs=1000000 {x24}, byrefRegs=0000 {
; gcrRegs -[x0]
; gcr arg pop 0
;; size=40 bbWeight=0.29 PerfScore 2.50
-G_M40435_IG23: ; bbWeight=0.29, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref, isz
+G_M40435_IG24: ; bbWeight=0.29, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref, isz
ldapurb w0, [x24, #0x18]
- cbz w0, G_M40435_IG26
+ cbz w0, G_M40435_IG27
;; size=8 bbWeight=0.29 PerfScore 1.18
-G_M40435_IG24: ; bbWeight=0.25, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
- ldr x0, [x24, #0x08]
- ; gcrRegs +[x0]
- b G_M40435_IG17
+G_M40435_IG25: ; bbWeight=0.25, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
+ ldr x21, [x24, #0x08]
+ ; gcrRegs +[x21]
+ b G_M40435_IG18
;; size=8 bbWeight=0.25 PerfScore 1.01
-G_M40435_IG25: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x24] +[x21]
- cbz w22, G_M40435_IG27
- b G_M40435_IG39
+G_M40435_IG26: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x21 x24] +[x22]
+ cbz w23, G_M40435_IG28
+ b G_M40435_IG40
;; size=8 bbWeight=1 PerfScore 2.00
-G_M40435_IG26: ; bbWeight=0.04, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21] +[x24]
+G_M40435_IG27: ; bbWeight=0.04, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x22] +[x24]
mov x0, x24
; gcrRegs +[x0]
mov w2, w22
@@ -379,19 +387,21 @@ G_M40435_IG26: ; bbWeight=0.04, gcrefRegs=1000000 {x24}, byrefRegs=0000 {
blr x4
; gcrRegs -[x24]
; gcr arg pop 0
- b G_M40435_IG17
- ;; size=40 bbWeight=0.04 PerfScore 0.35
-G_M40435_IG27: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x21]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ b G_M40435_IG18
+ ;; size=44 bbWeight=0.04 PerfScore 0.37
+G_M40435_IG28: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x21] +[x22]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov x0, x21
+ mov x0, x22
; gcrRegs +[x0]
;; size=20 bbWeight=1 PerfScore 3.00
-G_M40435_IG28: ; bbWeight=1, epilog, nogc, extend
...
@@ -9,25 +9,25 @@
; 0 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T23] ( 18, 19 ) ref -> [fp+0x28] this class-hnd EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V00 this [V00,T23] ( 18, 19 ) ref -> [fp+0x30] this class-hnd EH-live single-def <System.Runtime.Caching.ExpiresBucket>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T30] ( 8, 7 ) ubyte -> [fp+0x54] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 12,132 ) ref -> x25 class-hnd <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 68 ) ref -> x25 class-hnd <<unknown class>>
; V05 loc2 [V05,T28] ( 3, 12 ) int -> x0
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> [fp+0x20] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> [fp+0x28] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T15] ( 5, 35 ) int -> [fp+0x50] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T34] ( 2, 5 ) ref -> x19 class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T04] ( 13, 71 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T03] ( 13, 71 ) ref -> [fp+0x20] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 4, 4 ) ubyte -> [fp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T26] ( 4, 13 ) int -> x22
;* V14 loc11 [V14,T36] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
; V15 loc12 [V15,T07] ( 7, 57 ) int -> x23
; V16 loc13 [V16,T08] ( 4, 52 ) int -> x27
; V17 loc14 [V17,T00] ( 6,148 ) int -> x28
-; V18 loc15 [V18,T13] ( 8, 35 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V18 loc15 [V18,T13] ( 8, 35 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V19 loc16 [V19 ] ( 4, 3 ) ubyte -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V21 tmp1 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.Caching.ExpiresEntryRef>
@@ -45,7 +45,7 @@
; V33 tmp13 [V33,T31] ( 6, 6 ) ref -> x19 class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V34 tmp14 [V34,T22] ( 5, 20 ) long -> x19 single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V35 tmp15 [V35,T16] ( 5, 35 ) int -> [fp+0x3C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V36 tmp16 [V36,T05] ( 13, 71 ) int -> x4 "field V09._ref (fldOffset=0x0)" P-INDEP
+; V36 tmp16 [V36,T04] ( 13, 71 ) int -> x4 "field V09._ref (fldOffset=0x0)" P-INDEP
; V37 tmp17 [V37,T19] ( 4, 24 ) int -> x20 "field V10._ref (fldOffset=0x0)" P-INDEP
; V38 tmp18 [V38,T17] ( 2, 32 ) int -> x0 "field V21._ref (fldOffset=0x0)" P-INDEP
; V39 tmp19 [V39,T18] ( 2, 32 ) int -> x0 "field V26._ref (fldOffset=0x0)" P-INDEP
@@ -55,8 +55,8 @@
; V43 tmp23 [V43,T11] ( 3, 48 ) ref -> x1 "arr expr"
; V44 PSPSym [V44,T37] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
; V45 cse0 [V45,T24] ( 3, 18 ) ref -> x21 "CSE - moderate"
-; V46 cse1 [V46,T25] ( 4, 16 ) byref -> x0 "CSE - moderate"
-; V47 cse2 [V47,T02] ( 6,128 ) long -> [fp+0x30] spill-single-def "CSE - aggressive"
+; V46 cse1 [V46,T01] ( 6,128 ) byref -> [fp+0x10] spill-single-def "CSE - aggressive"
+; V47 cse2 [V47,T25] ( 4, 16 ) byref -> x0 "CSE - moderate"
; V48 cse3 [V48,T06] ( 6, 65 ) long -> registers hoist multi-def "CSE - aggressive"
; V49 cse4 [V49,T14] ( 8, 35 ) long -> x24 hoist multi-def "CSE - aggressive"
; V50 cse5 [V50,T35] ( 3, 3 ) long -> x20 "CSE - moderate"
@@ -77,7 +77,7 @@ G_M744_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
stp xzr, xzr, [fp, #0x40] // [V19 loc16], [V12 loc9]
add x3, sp, #176
str x3, [fp, #0x58] // [V44 PSPSym]
- str x0, [fp, #0x28] // [V00 this]
+ str x0, [fp, #0x30] // [V00 this]
; GC ptr vars +{V00}
str w2, [fp, #0x54] // [V02 arg2]
mov x19, x1
@@ -133,7 +133,7 @@ G_M744_IG06: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byr
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
ldr x0, [x1, x0]
; gcrRegs +[x0]
@@ -155,15 +155,15 @@ G_M744_IG06: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byr
;; size=80 bbWeight=1 PerfScore 32.00
G_M744_IG07: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
mov x0, x1
; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V11 loc8]
+ str x0, [fp, #0x20] // [V11 loc8]
; GC ptr vars +{V11}
str wzr, [fp, #0x48] // [V12 loc9]
;; size=16 bbWeight=1 PerfScore 4.50
-G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG08: ; bbWeight=1, gcVars=0000000000800008 {V00 V11}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x1]
add x1, fp, #72 // [V12 loc9]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -172,7 +172,7 @@ G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=2
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V11 loc8]
+ ldr x0, [fp, #0x20] // [V11 loc8]
; gcrRegs +[x0]
ldr w1, [x0, x20]
cbz w1, G_M744_IG21
@@ -184,7 +184,7 @@ G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=2
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M744_IG21
- ldr x0, [fp, #0x18] // [V11 loc8]
+ ldr x0, [fp, #0x20] // [V11 loc8]
; gcrRegs +[x0]
mov x1, x19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -196,7 +196,7 @@ G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=2
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x20, [fp, #0x18] // [V11 loc8]
+ ldr x20, [fp, #0x20] // [V11 loc8]
; gcrRegs +[x20]
ldr w22, [x20, x0]
mov w23, wzr
@@ -239,35 +239,38 @@ G_M744_IG10: ; bbWeight=4, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=000
;; size=40 bbWeight=4 PerfScore 44.00
G_M744_IG11: ; bbWeight=32, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, byref, isz
ubfiz x0, x28, #4, #32
- add x2, x0, #16
- str x2, [fp, #0x30] // [V47 cse2]
- add x0, x25, x2
- ; byrRegs +[x0]
- ldr x3, [x0, #0x08]
+ add x0, x0, #16
+ add x2, x25, x0
+ ; byrRegs +[x2]
+ str x2, [fp, #0x10] // [V46 cse1]
+ ; GC ptr vars +{V46}
+ ldr x3, [x2, #0x08]
; gcrRegs +[x3]
- str x3, [fp, #0x20] // [V06 loc3]
+ str x3, [fp, #0x28] // [V06 loc3]
; GC ptr vars +{V06}
cbz x3, G_M744_IG14
;; size=28 bbWeight=32 PerfScore 256.00
-G_M744_IG12: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG12: ; bbWeight=16, gcVars=000000000080000E {V00 V06 V11 V46}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0004 {x2}, gcvars, byref, isz
; gcrRegs -[x3]
- ; byrRegs -[x0]
- ldr x0, [x25, x2]
+ ldr x0, [x2]
mov x1, x19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x4, [x11]
blr x4
+ ; byrRegs -[x2]
; gcr arg pop 0
cbz w0, G_M744_IG19
- ldr x2, [fp, #0x30] // [V47 cse2]
- ldr x1, [x25, x2]
+ ldr x2, [fp, #0x10] // [V46 cse1]
+ ; byrRegs +[x2]
+ ldr x1, [x2]
mov x0, x20
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
- ; GC ptr vars -{V06}
+ ; byrRegs -[x2]
+ ; GC ptr vars -{V06 V46}
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
@@ -315,14 +318,14 @@ G_M744_IG18: ; bbWeight=0, gcVars=0000000000800000 {V00}, gcrefRegs=0000
blr x0
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M744_IG19: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, gcvars, byref
+G_M744_IG19: ; bbWeight=16, gcVars=000000000080000E {V00 V06 V11 V46}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x20-x21 x25]
- ; GC ptr vars +{V04 V06 V11}
+ ; GC ptr vars +{V02 V06 V11 V46}
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
mov w11, #255
- ldr x1, [fp, #0x20] // [V06 loc3]
+ ldr x1, [fp, #0x28] // [V06 loc3]
; gcrRegs +[x1]
strb w11, [x1, x0]
ldr w0, [x21, #0x08]
@@ -330,15 +333,12 @@ G_M744_IG19: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefR
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x11, [x11]
str w0, [x1, x11]
- ldr x0, [fp, #0x30] // [V47 cse2]
- add x11, x25, x0
+ mov w0, #1
+ ldr x11, [fp, #0x10] // [V46 cse1]
; byrRegs +[x11]
- mov w1, #1
- ; gcrRegs -[x1]
- str w1, [x11, #0x04]
- ldr w11, [fp, #0x3C] // [V35 tmp15]
- ; byrRegs -[x11]
- str w11, [x25, x0]
+ str w0, [x11, #0x04]
+ ldr w0, [fp, #0x3C] // [V35 tmp15]
+ str w0, [x11]
uxtb w0, w28
orr w0, w0, w23, LSL #8
str w0, [fp, #0x3C] // [V35 tmp15]
@@ -347,18 +347,19 @@ G_M744_IG19: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefR
str w0, [fp, #0x50] // [V07 loc4]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x0]
- ldr w0, [x20, x1]
+ ldr x2, [x0]
+ ldr w0, [x20, x2]
add w0, w0, #1
- str w0, [x20, x1]
+ str w0, [x20, x2]
b G_M744_IG13
- ;; size=120 bbWeight=16 PerfScore 608.00
+ ;; size=116 bbWeight=16 PerfScore 600.00
G_M744_IG20: ; bbWeight=1, gcVars=0000000000800000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x20-x21 x25]
- ; GC ptr vars -{V04 V06 V11}
+ ; gcrRegs -[x1 x20-x21 x25]
+ ; byrRegs -[x11]
+ ; GC ptr vars -{V02 V06 V11 V46}
ldrb w0, [fp, #0x48] // [V12 loc9]
cbz w0, G_M744_IG24
- ldr x0, [fp, #0x28] // [V00 this]
+ ldr x0, [fp, #0x30] // [V00 this]
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -382,7 +383,7 @@ G_M744_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, i
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
ldr x0, [x1, x0]
; gcrRegs +[x0]
@@ -416,7 +417,7 @@ G_M744_IG26: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
ldr x0, [x1, x0]
; gcrRegs +[x0]
...
@@ -4,46 +4,45 @@
; ReadyToRun compilation
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T05] ( 4, 4 ) struct (16) [fp+0x38] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T00] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 4, 4 ) struct (16) [fp+0x38] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T01] ( 9, 12 ) int -> x22
+; V03 loc1 [V03,T06] ( 9, 4.75) int -> x22
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-; V07 tmp2 [V07 ] ( 4, 8 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
+; V07 tmp2 [V07 ] ( 4, 8 ) struct (16) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
; V08 tmp3 [V08 ] ( 3, 6 ) struct (16) [fp+0x18] do-not-enreg[SFAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Decimal>
-; V09 tmp4 [V09,T09] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T08] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T10] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T11] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T14] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T15] ( 2, 2 ) int -> x0 "impAppendStmt"
+; V13 tmp8 [V13,T16] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T09] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T10] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x0 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x11
-; V24 tmp19 [V24,T03] ( 9, 9 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp20 [V25,T04] ( 7, 8 ) int -> x21 "field V02._length (fldOffset=0x8)" P-INDEP
+; V23 tmp18 [V23,T17] ( 2, 1 ) int -> x11
+; V24 tmp19 [V24,T01] ( 11, 6.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp20 [V25,T07] ( 5, 3.50) int -> x21 "field V02._length (fldOffset=0x8)" P-INDEP
;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
; V28 tmp23 [V28 ] ( 3, 5 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed ptr "field V07._reference (fldOffset=0x0)" P-DEP
; V29 tmp24 [V29 ] ( 3, 5 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed ptr "field V07._length (fldOffset=0x8)" P-DEP
-; V30 tmp25 [V30,T06] ( 3, 6 ) int -> [fp+0x18] do-not-enreg[] "field V08._flags (fldOffset=0x0)" P-DEP
-; V31 tmp26 [V31,T07] ( 3, 6 ) int -> [fp+0x1C] do-not-enreg[] "field V08._hi32 (fldOffset=0x4)" P-DEP
-; V32 tmp27 [V32,T08] ( 3, 6 ) long -> [fp+0x20] do-not-enreg[] "field V08._lo64 (fldOffset=0x8)" P-DEP
+; V30 tmp25 [V30,T03] ( 3, 6 ) int -> [fp+0x18] do-not-enreg[] "field V08._flags (fldOffset=0x0)" P-DEP
+; V31 tmp26 [V31,T04] ( 3, 6 ) int -> [fp+0x1C] do-not-enreg[] "field V08._hi32 (fldOffset=0x4)" P-DEP
+; V32 tmp27 [V32,T05] ( 3, 6 ) long -> [fp+0x20] do-not-enreg[] "field V08._lo64 (fldOffset=0x8)" P-DEP
; V33 GsCookie [V33 ] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V34 cse0 [V34,T16] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V35 cse1 [V35,T00] ( 4, 14 ) int -> x11 "CSE - aggressive"
+; V34 cse0 [V34,T15] ( 3, 1.50) int -> x0 "CSE - moderate"
;
; Lcl frame size = 80
@@ -52,7 +51,6 @@ G_M46478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x60]
stp x21, x22, [sp, #0x70]
mov fp, sp
- str xzr, [fp, #0x28] // [V07 tmp2]
adrp x3, [HIGH RELOC #0xD1FFAB1E] // [SetGlobalSecurityCookie]
add x3, x3, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x3]
@@ -60,7 +58,7 @@ G_M46478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x1, x2, [fp, #0x38] // [V01 arg1], [V01 arg1+0x08]
mov x19, x0
; byrRegs +[x19]
- ;; size=44 bbWeight=1 PerfScore 11.00
+ ;; size=40 bbWeight=1 PerfScore 10.00
G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
stp xzr, xzr, [fp, #0x28]
add x0, fp, #40 // [V07 tmp2]
@@ -70,7 +68,6 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
mov w2, #4
ldr x3, [x11]
blr x3
- ; gcr arg pop 0
ldr x20, [fp, #0x28] // [V28 tmp23]
; byrRegs +[x20]
ldr w21, [fp, #0x30] // [V29 tmp24]
@@ -79,7 +76,6 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcr arg pop 0
stp x0, x1, [fp, #0x18] // [V08 tmp3], [V08 tmp3+0x08]
mov x2, x20
; byrRegs +[x2]
@@ -90,33 +86,51 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
ldr x4, [x11]
blr x4
; byrRegs -[x2]
- ; gcr arg pop 0
mov w22, #3
b G_M46478_IG04
;; size=100 bbWeight=1 PerfScore 31.00
-G_M46478_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w22, w11
- cmp w22, #0
- ble G_M46478_IG05
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w11, w22, #1
- cmp w11, w21
- bhs G_M46478_IG14
- ldr w0, [x20, w11, UXTW #2]
- cbz w0, G_M46478_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w22, G_M46478_IG08
+G_M46478_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w22, #2
+ b G_M46478_IG07
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cmp w21, #2
+ bls G_M46478_IG20
+ ldr w11, [x20, #0x08]
+ cbz w11, G_M46478_IG03
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M46478_IG05: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG11
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w22, #1
+ b G_M46478_IG10
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w11, [x20, #0x04]
+ cbz w11, G_M46478_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG08: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG11
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w22, wzr
+ b G_M46478_IG11
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w11, [x20]
+ cbz w11, G_M46478_IG09
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w22, G_M46478_IG14
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x11]
blr x0
; byrRegs +[x0]
- ; gcr arg pop 0
ldr x13, [x0, #0x50]
; gcrRegs +[x13]
add x13, x13, #8
@@ -136,31 +150,30 @@ G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr xip0, [xip0]
ldr xip1, [fp, #0x58] // [V33 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG07
+ beq G_M46478_IG13
adrp xip0, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_FAIL_FAST
add xip0, xip0, [LOW RELOC #0xD1FFAB1E]
ldr xip0, [xip0]
blr xip0
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 15.25
-G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x21, x22, [sp, #0x70]
ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x80
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w22, #1
- bne G_M46478_IG10
+ bne G_M46478_IG16
ldr w0, [x20]
cmp w0, #0
- ble G_M46478_IG10
+ ble G_M46478_IG16
str w0, [x19, #0x08]
ldr w0, [x19, #0x08]
cmp w21, #3
- bls G_M46478_IG14
+ bls G_M46478_IG20
ldr w11, [x20, #0x0C]
movn w1, #0
mov w2, #1
@@ -174,21 +187,20 @@ G_M46478_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr xip0, [xip0]
ldr xip1, [fp, #0x58] // [V33 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG09
+ beq G_M46478_IG15
adrp xip0, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_FAIL_FAST
add xip0, xip0, [LOW RELOC #0xD1FFAB1E]
ldr xip0, [xip0]
blr xip0
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=108 bbWeight=0.50 PerfScore 16.50
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x21, x22, [sp, #0x70]
ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x80
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x0, w22
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -196,7 +208,6 @@ G_M46478_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr x1, [x11]
blr x1
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -212,37 +223,33 @@ G_M46478_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG14
+ bls G_M46478_IG20
str w1, [x0, #0x10]
cmp w22, #1
- ble G_M46478_IG11
+ ble G_M46478_IG17
...
@@ -10,72 +10,71 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <ILCompiler.DevirtualizationManager>
; V01 arg1 [V01,T00] ( 21, 26 ) ref -> x19 class-hnd <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T16] ( 14, 8 ) ref -> x20 class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T19] ( 8, 5.50) byref -> x21 single-def
+; V02 arg2 [V02,T17] ( 14, 8 ) ref -> x20 class-hnd single-def <Internal.TypeSystem.DefType>
+; V03 arg3 [V03,T20] ( 8, 5.50) byref -> x21 single-def
; V04 loc0 [V04,T22] ( 11, 5.50) ref -> x23 class-hnd <Internal.TypeSystem.MethodDesc>
-; V05 loc1 [V05,T42] ( 3, 1.50) ref -> x24 class-hnd single-def <Internal.TypeSystem.DefType[]>
+; V05 loc1 [V05,T41] ( 3, 1.50) ref -> x24 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> x23
-; V07 loc3 [V07,T20] ( 5, 7.50) ref -> x25 class-hnd single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> x25 class-hnd single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> x26
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [fp+0x30] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> x28 class-hnd <Internal.TypeSystem.DefType>
; V10 loc6 [V10,T26] ( 6, 4.50) ref -> x24 class-hnd <Internal.TypeSystem.MethodDesc>
-; V11 loc7 [V11,T43] ( 3, 1.50) ref -> x0 class-hnd single-def <Internal.TypeSystem.DefType[]>
+; V11 loc7 [V11,T42] ( 3, 1.50) ref -> x0 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> x25
; V13 loc9 [V13,T05] ( 6, 20 ) ref -> x28 class-hnd <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T48] ( 3, 1.50) int -> x0 single-def
+; V15 loc11 [V15,T47] ( 3, 1.50) int -> x0 single-def
; V16 loc12 [V16,T03] ( 10, 20 ) ref -> x23 class-hnd <Internal.TypeSystem.TypeDesc>
;* V17 loc13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;* V18 loc14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
-; V21 tmp2 [V21,T34] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V22 tmp3 [V22,T49] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
-; V23 tmp4 [V23,T31] ( 5, 3.75) ref -> x25 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V21 tmp2 [V21,T33] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
+; V22 tmp3 [V22,T48] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V23 tmp4 [V23,T30] ( 5, 3.75) ref -> x25 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
; V24 tmp5 [V24,T23] ( 3, 5 ) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V25 tmp6 [V25,T35] ( 3, 2 ) int -> x2 "Inline return value spill temp"
-; V26 tmp7 [V26,T33] ( 3, 2.50) int -> x2 single-def "Inline stloc first use temp"
-; V27 tmp8 [V27,T44] ( 3, 1.50) ref -> x24 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V25 tmp6 [V25,T34] ( 3, 2 ) int -> x2 "Inline return value spill temp"
+; V26 tmp7 [V26,T32] ( 3, 2.50) int -> x2 single-def "Inline stloc first use temp"
+; V27 tmp8 [V27,T43] ( 3, 1.50) ref -> x24 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V29 tmp10 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
-; V30 tmp11 [V30,T17] ( 5, 10 ) ref -> [fp+0x28] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V31 tmp12 [V31,T30] ( 2, 4 ) ref -> x2 class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T18] ( 5, 10 ) ref -> [fp+0x30] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V31 tmp12 [V31,T29] ( 2, 4 ) ref -> x1 class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp14 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V34 tmp15 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp16 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V36 tmp17 [V36,T45] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V36 tmp17 [V36,T44] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V38 tmp19 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V39 tmp20 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V40 tmp21 [V40 ] ( 0, 0 ) int -> zero-ref
; V41 tmp22 [V41,T02] ( 3, 24 ) ref -> x24 class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V42 tmp23 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V43 tmp24 [V43 ] ( 0, 0 ) int -> zero-ref
-; V44 tmp25 [V44,T36] ( 2, 2 ) ref -> x0 single-def "Single return block return value"
+; V44 tmp25 [V44,T35] ( 2, 2 ) ref -> x0 single-def "Single return block return value"
; V45 tmp26 [V45,T09] ( 2, 16 ) ref -> x25 "argument with side effect"
; V46 tmp27 [V46,T10] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V47 tmp28 [V47,T37] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V48 tmp29 [V48,T38] ( 2, 2 ) ref -> x24 single-def "argument with side effect"
-; V49 tmp30 [V49,T39] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V50 tmp31 [V50,T32] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-; V51 tmp32 [V51,T40] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [fp+0x18] spill-single-def "argument with side effect"
+; V47 tmp28 [V47,T36] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V48 tmp29 [V48,T37] ( 2, 2 ) ref -> x24 single-def "argument with side effect"
+; V49 tmp30 [V49,T38] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V50 tmp31 [V50,T31] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V51 tmp32 [V51,T39] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [fp+0x20] spill-single-def "argument with side effect"
; V53 tmp34 [V53,T12] ( 2, 16 ) ref -> x1 "argument with side effect"
;* V54 tmp35 [V54 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V55 tmp36 [V55,T41] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V55 tmp36 [V55,T40] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V56 tmp37 [V56,T13] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [fp+0x10] spill-single-def "argument with side effect"
+; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [fp+0x18] spill-single-def "argument with side effect"
; V58 tmp39 [V58,T15] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V59 tmp40 [V59,T18] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V59 tmp40 [V59,T19] ( 2, 8 ) ref -> x1 "argument with side effect"
; V60 cse0 [V60,T06] ( 10, 18 ) long -> x22 "CSE - aggressive"
-; V61 cse1 [V61,T29] ( 2, 4.50) long -> x28 hoist "CSE - moderate"
-; V62 cse2 [V62,T46] ( 3, 1.50) ref -> x23 "CSE - conservative"
-; V63 cse3 [V63,T47] ( 3, 1.50) ref -> x25 "CSE - conservative"
+; V61 cse1 [V61,T45] ( 3, 1.50) ref -> x23 "CSE - moderate"
+; V62 cse2 [V62,T46] ( 3, 1.50) ref -> x25 "CSE - moderate"
+; V63 cse3 [V63,T24] ( 3, 5 ) int -> x27 "CSE - moderate"
; V64 cse4 [V64,T27] ( 2, 4.50) byref -> x24 hoist "CSE - moderate"
-; V65 cse5 [V65,T24] ( 3, 5 ) int -> x27 "CSE - moderate"
-; V66 cse6 [V66,T28] ( 2, 4.50) byref -> x27 hoist "CSE - moderate"
-; V67 cse7 [V67,T25] ( 3, 5 ) int -> x26 "CSE - moderate"
+; V65 cse5 [V65,T28] ( 2, 4.50) byref -> x27 hoist "CSE - moderate"
+; V66 cse6 [V66,T25] ( 3, 5 ) int -> x26 "CSE - moderate"
;
; Lcl frame size = 48
@@ -215,30 +214,26 @@ G_M48343_IG12: ; bbWeight=0.50, gcrefRegs=3180000 {x19 x20 x24 x25}, byre
add x24, x24, #16
; gcrRegs -[x24]
; byrRegs +[x24]
- ldr xzr, [x25]
- ldr x0, [x25]
- ldr x28, [x0, #0x58]
- ;; size=32 bbWeight=0.50 PerfScore 7.25
+ ;; size=20 bbWeight=0.50 PerfScore 2.75
G_M48343_IG13: ; bbWeight=4, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1200000 {x21 x24}, byref, isz
- ldr x1, [x24, w26, UXTW #3]
- ; gcrRegs +[x1]
- str x1, [fp, #0x30] // [V09 loc5]
- ; GC ptr vars +{V09}
+ ldr x28, [x24, w26, UXTW #3]
+ ; gcrRegs +[x28]
mov x0, x25
; gcrRegs +[x0]
- ldr x2, [x28, #0x20]
- blr x2
- ; gcrRegs -[x1]
- str x0, [fp, #0x18] // [V52 tmp33]
+ ldr x1, [x25]
+ ldr x1, [x1, #0x58]
+ ldr x1, [x1, #0x20]
+ blr x1
+ str x0, [fp, #0x20] // [V52 tmp33]
; GC ptr vars +{V52}
- ldr x0, [fp, #0x30] // [V09 loc5]
- ldr x2, [x0]
+ mov x0, x28
+ ldr x2, [x28]
ldr x2, [x2, #0x58]
ldr x2, [x2, #0x20]
blr x2
mov x1, x0
; gcrRegs +[x1]
- ldr x0, [fp, #0x18] // [V52 tmp33]
+ ldr x0, [fp, #0x20] // [V52 tmp33]
movz x2, #0xD1FFAB1E // code for Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -247,28 +242,26 @@ G_M48343_IG13: ; bbWeight=4, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1
blr x2
; gcrRegs -[x0-x1]
cbz w0, G_M48343_IG16
- ;; size=76 bbWeight=4 PerfScore 122.00
-G_M48343_IG14: ; bbWeight=2, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1200000 {x21 x24}, byref, isz
- ldr x1, [fp, #0x30] // [V09 loc5]
+ ;; size=80 bbWeight=4 PerfScore 136.00
+G_M48343_IG14: ; bbWeight=2, gcrefRegs=12180000 {x19 x20 x25 x28}, byrefRegs=1200000 {x21 x24}, byref, isz
+ ldr x1, [x28, #0x08]
; gcrRegs +[x1]
- ldr x2, [x1, #0x08]
- ; gcrRegs +[x2]
- str x2, [fp, #0x28] // [V30 tmp11]
+ str x1, [fp, #0x30] // [V30 tmp11]
; GC ptr vars +{V30}
mov w0, #1
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
- ldr x2, [fp, #0x28] // [V30 tmp11]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x1]
+ ldr x2, [fp, #0x30] // [V30 tmp11]
; gcrRegs +[x2]
cbnz x2, G_M48343_IG15
- ldr x0, [fp, #0x30] // [V09 loc5]
+ mov x0, x28
; gcrRegs +[x0]
mov w1, wzr
- ldr x2, [x0]
+ ldr x2, [x28]
; gcrRegs -[x2]
ldr x2, [x2, #0x48]
ldr x2, [x2, #0x28]
@@ -276,8 +269,8 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1
blr x2
mov x3, x0
; gcrRegs +[x3]
- ldr x0, [fp, #0x30] // [V09 loc5]
- str x3, [fp, #0x28] // [V30 tmp11]
+ mov x0, x28
+ str x3, [fp, #0x30] // [V30 tmp11]
; GC ptr vars +{V30}
mov x2, x3
; gcrRegs +[x2]
@@ -286,12 +279,11 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1
movk x4, #0xD1FFAB1E LSL #16
movk x4, #1 LSL #32
ldr x4, [x4]
- ; GC ptr vars -{V09}
blr x4
- ; gcrRegs -[x0 x2-x3]
- ldr x2, [fp, #0x28] // [V30 tmp11]
+ ; gcrRegs -[x0 x2-x3 x28]
+ ldr x2, [fp, #0x30] // [V30 tmp11]
; gcrRegs +[x2]
- ;; size=112 bbWeight=2 PerfScore 79.00
+ ;; size=108 bbWeight=2 PerfScore 69.00
G_M48343_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=2180004 {x2 x19 x20 x25}, byrefRegs=1200000 {x21 x24}, gcvars, byref, isz
; GC ptr vars -{V30}
mov x0, x2
@@ -426,16 +418,16 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
; gcrRegs +[x0]
ldr x1, [x22, #0x18]
blr x1
- str x0, [fp, #0x20] // [V37 tmp18]
+ str x0, [fp, #0x28] // [V37 tmp18]
; GC ptr vars +{V37}
mov x0, x28
ldr x2, [x28]
ldr x2, [x2, #0x58]
ldr x2, [x2, #0x20]
blr x2
- str x0, [fp, #0x10] // [V57 tmp38]
+ str x0, [fp, #0x18] // [V57 tmp38]
; GC ptr vars +{V57}
- ldr x0, [fp, #0x20] // [V37 tmp18]
+ ldr x0, [fp, #0x28] // [V37 tmp18]
ldr x2, [x0]
ldr x2, [x2, #0x58]
ldr x2, [x2, #0x20]
@@ -443,7 +435,7 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
blr x2
mov x1, x0
; gcrRegs +[x1]
- ldr x0, [fp, #0x10] // [V57 tmp38]
+ ldr x0, [fp, #0x18] // [V57 tmp38]
movz x2, #0xD1FFAB1E // code for Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
@@ -727,7 +719,7 @@ G_M48343_IG40: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
-; Total bytes of code 1684, prolog size 32, PerfScore 829.50, instruction count 421, allocated bytes for code 1684 (MethodHash=11874328) for method ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
...
@@ -12,14 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T30] ( 8, 7 ) ubyte -> [fp+0x44] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 11,116 ) ref -> x24 class-hnd <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 68 ) ref -> x24 class-hnd <<unknown class>>
; V05 loc2 [V05,T28] ( 3, 12 ) int -> x1
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> x2 class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> x2 class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T14] ( 5, 35 ) int -> [fp+0x40] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T38] ( 2, 5 ) ref -> x20 class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T04] ( 16, 74 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T03] ( 16, 74 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 6, 6 ) ubyte -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T26] ( 4, 13 ) int -> x19
;* V14 loc11 [V14,T47] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
@@ -59,7 +59,7 @@
; V48 tmp28 [V48,T32] ( 6, 6 ) ref -> x19 class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V49 tmp29 [V49,T31] ( 5, 5 ) long -> x19 single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V50 tmp30 [V50,T15] ( 5, 35 ) int -> [fp+0x2C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V51 tmp31 [V51,T05] ( 13, 71 ) int -> x1 "field V09._ref (fldOffset=0x0)" P-INDEP
+; V51 tmp31 [V51,T04] ( 13, 71 ) int -> x1 "field V09._ref (fldOffset=0x0)" P-INDEP
; V52 tmp32 [V52,T20] ( 4, 24 ) int -> registers "field V10._ref (fldOffset=0x0)" P-INDEP
; V53 tmp33 [V53,T16] ( 2, 32 ) int -> x0 "field V21._ref (fldOffset=0x0)" P-INDEP
;* V54 tmp34 [V54 ] ( 0, 0 ) long -> zero-ref single-def "field V26._dateData (fldOffset=0x0)" P-INDEP
@@ -77,9 +77,9 @@
; V66 tmp46 [V66,T10] ( 3, 48 ) ref -> x0 "arr expr"
; V67 PSPSym [V67,T50] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
;* V68 cse0 [V68,T51] ( 0, 0 ) long -> zero-ref "CSE - moderate"
-; V69 cse1 [V69,T25] ( 4, 16 ) byref -> x1 "CSE - moderate"
-; V70 cse2 [V70,T11] ( 3, 48 ) long -> x1 "CSE - aggressive"
-; V71 cse3 [V71,T02] ( 5,112 ) long -> x28 "CSE - aggressive"
+; V69 cse1 [V69,T11] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V70 cse2 [V70,T01] ( 5,112 ) byref -> x28 "CSE - aggressive"
+; V71 cse3 [V71,T25] ( 4, 16 ) byref -> x1 "CSE - moderate"
; V72 cse4 [V72,T45] ( 3, 3 ) ref -> x2 "CSE - moderate"
; V73 cse5 [V73,T46] ( 3, 3 ) ref -> x1 "CSE - moderate"
; V74 cse6 [V74,T12] ( 4, 44 ) int -> x25 "CSE - aggressive"
@@ -215,7 +215,7 @@ G_M744_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; GC ptr vars +{V11}
str wzr, [fp, #0x38] // [V12 loc9]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M744_IG11: ; bbWeight=1, gcVars=0000000000080010 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG11: ; bbWeight=1, gcVars=0000000000080008 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldrb w1, [fp, #0x38] // [V12 loc9]
cbnz w1, G_M744_IG15
@@ -266,9 +266,9 @@ G_M744_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M744_IG16: ; bbWeight=1, gcVars=0000000000080010 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG16: ; bbWeight=1, gcVars=0000000000080008 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x22]
- ; GC ptr vars +{V04 V11}
+ ; GC ptr vars +{V11}
mov x0, x22
; gcrRegs +[x0]
mov x1, x19
@@ -350,16 +350,15 @@ G_M744_IG21: ; bbWeight=4, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}
;; size=40 bbWeight=4 PerfScore 44.00
G_M744_IG22: ; bbWeight=32, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
ubfiz x1, x27, #4, #32
- add x28, x1, #16
- add x1, x24, x28
- ; byrRegs +[x1]
- ldr x2, [x1, #0x08]
+ add x1, x1, #16
+ add x28, x24, x1
+ ; byrRegs +[x28]
+ ldr x2, [x28, #0x08]
; gcrRegs +[x2]
cbz x2, G_M744_IG26
;; size=20 bbWeight=32 PerfScore 192.00
-G_M744_IG23: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x1]
- ldr x1, [x24, x28]
+G_M744_IG23: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=10000000 {x28}, byref, isz
+ ldr x1, [x28]
mov x0, x1
and x0, x0, #0xD1FFAB1E
cmp x0, x20
@@ -373,22 +372,21 @@ G_M744_IG23: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=000
ldr x2, [x2]
blr x2
; gcrRegs -[x0]
+ ; byrRegs -[x28]
; gcr arg pop 0
b G_M744_IG25
;; size=48 bbWeight=16 PerfScore 200.00
-G_M744_IG24: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=0000 {}, byref
+G_M744_IG24: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=10000000 {x28}, byref
; gcrRegs +[x2]
+ ; byrRegs +[x28]
mov w0, #255
strb w0, [x2, #0x30]
ldr w0, [x21]
str w0, [x2, #0x50]
- add x0, x24, x28
- ; byrRegs +[x0]
- mov w1, #1
- str w1, [x0, #0x04]
+ mov w0, #1
+ str w0, [x28, #0x04]
ldr w0, [fp, #0x2C] // [V50 tmp30]
- ; byrRegs -[x0]
- str w0, [x24, x28]
+ str w0, [x28]
uxtb w0, w27
orr w0, w0, w23, LSL #8
str w0, [fp, #0x2C] // [V50 tmp30]
@@ -398,9 +396,10 @@ G_M744_IG24: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=000
ldr w0, [x22, #0x28]
add w0, w0, #1
str w0, [x22, #0x28]
- ;; size=72 bbWeight=16 PerfScore 336.00
+ ;; size=68 bbWeight=16 PerfScore 328.00
G_M744_IG25: ; bbWeight=16, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
+ ; byrRegs -[x28]
sub w26, w26, #1
cbz w26, G_M744_IG27
;; size=8 bbWeight=16 PerfScore 24.00
@@ -431,7 +430,7 @@ G_M744_IG29: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byr
;; size=16 bbWeight=1 PerfScore 4.50
G_M744_IG30: ; bbWeight=1, gcVars=0000000000080000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x22]
- ; GC ptr vars -{V04 V11}
+ ; GC ptr vars -{V11}
ldrb w0, [fp, #0x38] // [V12 loc9]
cbz w0, G_M744_IG34
ldr x0, [fp, #0x20] // [V00 this]
@@ -885,7 +884,7 @@ G_M744_IG66: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, f
ret lr
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1972, prolog size 52, PerfScore 1891.50, instruction count 493, allocated bytes for code 1972 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1968, prolog size 52, PerfScore 1883.50, instruction count 492, allocated bytes for code 1968 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -896,7 +895,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 395 (0x0018b) Actual length = 1580 (0x00062c)
+ Function Length : 394 (0x0018a) Actual length = 1576 (0x000628)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -3,48 +3,48 @@
; FullOpts code
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> x21
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> x21
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T18] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x1 "impAppendStmt"
+; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> x1 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T19] ( 2, 1 ) int -> x0
+; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x0
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,12 +53,11 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T17] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V50 cse1 [V50,T00] ( 4, 14 ) int -> x13 "CSE - aggressive"
+; V49 cse0 [V49,T16] ( 3, 1.50) int -> x1 "CSE - moderate"
;
; Lcl frame size = 56
@@ -95,7 +94,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldp w13, w14, [fp, #0x10] // [V40 tmp35], [V41 tmp36]
@@ -107,30 +105,48 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
mov w21, #3
b G_M46478_IG06
;; size=32 bbWeight=1 PerfScore 9.50
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w21, w13
- cmp w21, #0
- ble G_M46478_IG07
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w13, w21, #1
- cmp w13, #4
- bhs G_M46478_IG17
- ldr w14, [x20, w13, UXTW #2]
- cbz w14, G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w21, G_M46478_IG11
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #2
+ b G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x08]
+ cbz w13, G_M46478_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #1
+ b G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x04]
+ cbz w13, G_M46478_IG08
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, wzr
+ b G_M46478_IG13
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20]
+ cbz w13, G_M46478_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w21, G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
movz x13, #0xD1FFAB1E
movk x13, #0xD1FFAB1E LSL #16
movk x13, #1 LSL #32
ldr w13, [x13]
- tbz w13, #0, G_M46478_IG18
+ tbz w13, #0, G_M46478_IG24
;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x13, #0xD1FFAB1E // box for <unknown class>:<unknown field>
movk x13, #0xD1FFAB1E LSL #16
movk x13, #2 LSL #32
@@ -151,24 +167,23 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG10
+ beq G_M46478_IG16
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=68 bbWeight=0.50 PerfScore 8.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w21, #1
- bne G_M46478_IG13
+ bne G_M46478_IG19
ldr w1, [x20]
cmp w1, #0
- ble G_M46478_IG13
+ ble G_M46478_IG19
str w1, [x19, #0x08]
ldr w1, [x19, #0x08]
ldr w0, [x20, #0x0C]
@@ -185,18 +200,17 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG12
+ beq G_M46478_IG18
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 12.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x1, w21
movz x0, #0xD1FFAB1E
@@ -204,7 +218,6 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -217,30 +230,30 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x10]
cmp w21, #1
- ble G_M46478_IG14
+ ble G_M46478_IG20
ldr x0, [x19]
ldr w1, [x20, #0x04]
ldr w2, [x0, #0x08]
cmp w2, #1
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x14]
;; size=88 bbWeight=0.50 PerfScore 14.75
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
; gcrRegs -[x0]
cmp w21, #2
- ble G_M46478_IG15
+ ble G_M46478_IG21
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x20, #0x08]
ldr w2, [x0, #0x08]
cmp w2, #2
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x18]
...
@@ -9,47 +9,48 @@
; 3 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> x19 single-def
-; V02 arg1 [V02,T04] ( 11, 4.02) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T05] ( 11, 4.02) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T01] ( 6, 5.56) int -> x20
-; V04 arg3 [V04,T06] ( 4, 3.90) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T12] ( 3, 2.02) ubyte -> x24 single-def
-; V06 loc0 [V06,T18] ( 3, 2.41) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T21] ( 3, 1.01) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T20] ( 4, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T17] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.90) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T13] ( 3, 2.02) ubyte -> x24 single-def
+; V06 loc0 [V06,T19] ( 3, 2.41) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T22] ( 3, 1.01) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T21] ( 4, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T18] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.41) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.18) int -> x24
-; V12 loc6 [V12,T03] ( 7, 5.96) ref -> x27 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 5.96) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T11] ( 5, 4.04) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T07] ( 5, 5 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V20 tmp7 [V20,T13] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T12] ( 5, 4.04) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T08] ( 5, 5 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V20 tmp7 [V20,T14] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V24 tmp11 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V25 tmp12 [V25,T10] ( 4, 4.14) byref -> x22 single-def "Inlining Arg"
+; V25 tmp12 [V25,T11] ( 4, 4.14) byref -> x22 single-def "Inlining Arg"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V27 tmp14 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V28 tmp15 [V28,T15] ( 7, 3.14) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V29 tmp16 [V29,T23] ( 4, 0.28) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp15 [V28,T16] ( 7, 3.14) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp16 [V29,T24] ( 4, 0.28) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T14] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V31 tmp18 [V31,T15] ( 2, 4 ) int -> x1 "Inlining Arg"
; V32 tmp19 [V32 ] ( 3, 3.41) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V33 tmp20 [V33 ] ( 3, 3.41) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V34 tmp21 [V34 ] ( 3, 3.41) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V35 tmp22 [V35 ] ( 3, 3.41) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V36 tmp23 [V36,T22] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V37 cse0 [V37,T08] ( 3, 4.63) int -> x0 "CSE - aggressive"
-; V38 cse1 [V38,T16] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V39 cse2 [V39,T09] ( 4, 4.54) int -> x22 "CSE - aggressive"
-; V40 cse3 [V40,T19] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
+;* V36 tmp23 [V36,T23] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V37 cse0 [V37,T09] ( 3, 4.63) int -> x0 "CSE - aggressive"
+; V38 cse1 [V38,T17] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V39 cse2 [V39,T03] ( 10, 6.53) long -> x27 hoist multi-def "CSE - aggressive"
+; V40 cse3 [V40,T10] ( 4, 4.54) int -> x22 "CSE - moderate"
+; V41 cse4 [V41,T20] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
;
; Lcl frame size = 32
@@ -212,7 +213,7 @@ G_M37807_IG12: ; bbWeight=0.04, gcrefRegs=1A00000 {x21 x23 x24}, byrefReg
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x24]
; byrRegs -[x14]
- cbz x22, G_M37807_IG27
+ cbz x22, G_M37807_IG28
mov x0, x22
; byrRegs +[x0]
mov x1, x28
@@ -246,30 +247,36 @@ G_M37807_IG13: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=800
stp wzr, w1, [fp, #0x28] // [V34 tmp21], [V35 tmp22]
mov w24, wzr
cmp w22, #0
- ble G_M37807_IG25
+ ble G_M37807_IG26
;; size=68 bbWeight=1 PerfScore 18.00
G_M37807_IG14: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=80000 {x19}, byref
add x28, x0, #16
; byrRegs +[x28]
- ;; size=4 bbWeight=0.61 PerfScore 0.30
+ movz x27, #0xD1FFAB1E
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #1 LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.21
G_M37807_IG15: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
; gcrRegs -[x0]
- ldr x27, [x28, w24, UXTW #3]
- ; gcrRegs +[x27]
- ldr w0, [x27, #0x58]
+ ldr x2, [x28, w24, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w20, w0
cmp w1, w0
bne G_M37807_IG22
- ;; size=20 bbWeight=1.54 PerfScore 12.35
-G_M37807_IG16: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
+ ;; size=24 bbWeight=1.54 PerfScore 13.90
+G_M37807_IG16: ; bbWeight=1.41, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10080000 {x19 x28}, gcvars, byref, isz
cbz w25, G_M37807_IG18
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG17: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
- mov x0, x27
+G_M37807_IG17: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
@@ -277,28 +284,26 @@ G_M37807_IG17: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=1
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG28
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ cbz w0, G_M37807_IG29
+ mov x0, x27
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG18: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
- cbz x23, G_M37807_IG21
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG18: ; bbWeight=1.41, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
+ cbz x23, G_M37807_IG24
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
- mov x0, x27
+G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
+ add x1, x27, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x27
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x27]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -307,23 +312,19 @@ G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG24
- ;; size=56 bbWeight=0.49 PerfScore 10.22
-G_M37807_IG20: ; bbWeight=0.24, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ bne G_M37807_IG25
+ ;; size=48 bbWeight=0.49 PerfScore 10.46
+G_M37807_IG20: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.24 PerfScore 0.61
-G_M37807_IG21: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ ;; size=8 bbWeight=0.24 PerfScore 0.36
+G_M37807_IG21: ; bbWeight=1.41, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x27
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -332,41 +333,45 @@ G_M37807_IG21: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x27]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.41 PerfScore 14.80
+ ;; size=48 bbWeight=1.41 PerfScore 15.50
G_M37807_IG22: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w24, w24, #1
cmp w22, w24
bgt G_M37807_IG15
- ;; size=28 bbWeight=1.54 PerfScore 6.95
+ ;; size=20 bbWeight=1.54 PerfScore 5.41
G_M37807_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x28]
- b G_M37807_IG25
+ b G_M37807_IG26
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG24: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, byref
- ; gcrRegs +[x21 x23]
+G_M37807_IG24: ; bbWeight=0.70, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10080000 {x19 x28}, gcvars, byref
+ ; gcrRegs +[x2 x21 x23]
; byrRegs +[x28]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ ; GC ptr vars +{V04 V12}
+ b G_M37807_IG21
+ ;; size=4 bbWeight=0.70 PerfScore 0.70
+G_M37807_IG25: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, gcvars, byref
+ ; gcrRegs -[x2]
+ ; GC ptr vars -{V04 V12}
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
b G_M37807_IG22
- ;; size=20 bbWeight=0.24 PerfScore 0.85
-G_M37807_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ ;; size=12 bbWeight=0.24 PerfScore 0.61
+G_M37807_IG26: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
...
@@ -9,47 +9,48 @@
; 3 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> x19 single-def
-; V02 arg1 [V02,T04] ( 11, 4.00) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T05] ( 11, 4.00) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T01] ( 6, 5.62) int -> x20
-; V04 arg3 [V04,T06] ( 4, 3.90) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T12] ( 3, 2.08) ubyte -> x24 single-def
-; V06 loc0 [V06,T18] ( 3, 2.41) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T22] ( 3, 1.00) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T20] ( 4, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T17] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.90) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T13] ( 3, 2.08) ubyte -> x24 single-def
+; V06 loc0 [V06,T19] ( 3, 2.41) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T23] ( 3, 1.00) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T21] ( 4, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T18] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.41) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.18) int -> x24
-; V12 loc6 [V12,T03] ( 7, 5.96) ref -> x27 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 5.96) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T11] ( 5, 4.14) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T07] ( 5, 5 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V20 tmp7 [V20,T13] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T12] ( 5, 4.14) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T08] ( 5, 5 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V20 tmp7 [V20,T14] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V24 tmp11 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V25 tmp12 [V25,T09] ( 4, 4.55) byref -> x22 single-def "Inlining Arg"
+; V25 tmp12 [V25,T10] ( 4, 4.55) byref -> x22 single-def "Inlining Arg"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V27 tmp14 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V28 tmp15 [V28,T15] ( 7, 3.55) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V29 tmp16 [V29,T21] ( 4, 1.10) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp15 [V28,T16] ( 7, 3.55) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp16 [V29,T22] ( 4, 1.10) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T14] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V31 tmp18 [V31,T15] ( 2, 4 ) int -> x1 "Inlining Arg"
; V32 tmp19 [V32 ] ( 3, 3.41) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V33 tmp20 [V33 ] ( 3, 3.41) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V34 tmp21 [V34 ] ( 3, 3.41) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V35 tmp22 [V35 ] ( 3, 3.41) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V36 tmp23 [V36,T23] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V37 cse0 [V37,T08] ( 3, 4.63) int -> x0 "CSE - aggressive"
-; V38 cse1 [V38,T16] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V39 cse2 [V39,T10] ( 4, 4.54) int -> x22 "CSE - aggressive"
-; V40 cse3 [V40,T19] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
+;* V36 tmp23 [V36,T24] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V37 cse0 [V37,T09] ( 3, 4.63) int -> x0 "CSE - aggressive"
+; V38 cse1 [V38,T17] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V39 cse2 [V39,T03] ( 10, 6.53) long -> x27 hoist multi-def "CSE - aggressive"
+; V40 cse3 [V40,T11] ( 4, 4.54) int -> x22 "CSE - moderate"
+; V41 cse4 [V41,T20] ( 2, 2.15) byref -> x28 hoist "CSE - moderate"
;
; Lcl frame size = 32
@@ -212,7 +213,7 @@ G_M37807_IG12: ; bbWeight=0.14, gcrefRegs=1A00000 {x21 x23 x24}, byrefReg
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x24]
; byrRegs -[x14]
- cbz x22, G_M37807_IG27
+ cbz x22, G_M37807_IG28
mov x0, x22
; byrRegs +[x0]
mov x1, x28
@@ -246,30 +247,36 @@ G_M37807_IG13: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=800
stp wzr, w1, [fp, #0x28] // [V34 tmp21], [V35 tmp22]
mov w24, wzr
cmp w22, #0
- ble G_M37807_IG25
+ ble G_M37807_IG26
;; size=68 bbWeight=1 PerfScore 18.00
G_M37807_IG14: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=80000 {x19}, byref
add x28, x0, #16
; byrRegs +[x28]
- ;; size=4 bbWeight=0.61 PerfScore 0.30
+ movz x27, #0xD1FFAB1E
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #1 LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.21
G_M37807_IG15: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
; gcrRegs -[x0]
- ldr x27, [x28, w24, UXTW #3]
- ; gcrRegs +[x27]
- ldr w0, [x27, #0x58]
+ ldr x2, [x28, w24, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w20, w0
cmp w1, w0
bne G_M37807_IG22
- ;; size=20 bbWeight=1.54 PerfScore 12.35
-G_M37807_IG16: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
+ ;; size=24 bbWeight=1.54 PerfScore 13.90
+G_M37807_IG16: ; bbWeight=1.41, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10080000 {x19 x28}, gcvars, byref, isz
cbz w25, G_M37807_IG18
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG17: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
- mov x0, x27
+G_M37807_IG17: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
@@ -277,28 +284,26 @@ G_M37807_IG17: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=1
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG28
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ cbz w0, G_M37807_IG29
+ mov x0, x27
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG18: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
- cbz x23, G_M37807_IG21
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG18: ; bbWeight=1.41, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
+ cbz x23, G_M37807_IG24
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref, isz
- mov x0, x27
+G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
+ add x1, x27, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x27
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x27]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -307,23 +312,19 @@ G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG24
- ;; size=56 bbWeight=0.49 PerfScore 10.22
-G_M37807_IG20: ; bbWeight=0.24, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ bne G_M37807_IG25
+ ;; size=48 bbWeight=0.49 PerfScore 10.46
+G_M37807_IG20: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.24 PerfScore 0.61
-G_M37807_IG21: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10080000 {x19 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ ;; size=8 bbWeight=0.24 PerfScore 0.36
+G_M37807_IG21: ; bbWeight=1.41, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x27
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -332,41 +333,45 @@ G_M37807_IG21: ; bbWeight=1.41, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x27]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.41 PerfScore 14.80
+ ;; size=48 bbWeight=1.41 PerfScore 15.50
G_M37807_IG22: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w24, w24, #1
cmp w22, w24
bgt G_M37807_IG15
- ;; size=28 bbWeight=1.54 PerfScore 6.95
+ ;; size=20 bbWeight=1.54 PerfScore 5.41
G_M37807_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x28]
- b G_M37807_IG25
+ b G_M37807_IG26
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG24: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, byref
- ; gcrRegs +[x21 x23]
+G_M37807_IG24: ; bbWeight=0.70, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10080000 {x19 x28}, gcvars, byref
+ ; gcrRegs +[x2 x21 x23]
; byrRegs +[x28]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ ; GC ptr vars +{V04 V12}
+ b G_M37807_IG21
+ ;; size=4 bbWeight=0.70 PerfScore 0.70
+G_M37807_IG25: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=A00000 {x21 x23}, byrefRegs=10080000 {x19 x28}, gcvars, byref
+ ; gcrRegs -[x2]
+ ; GC ptr vars -{V04 V12}
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
b G_M37807_IG22
- ;; size=20 bbWeight=0.24 PerfScore 0.85
-G_M37807_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ ;; size=12 bbWeight=0.24 PerfScore 0.61
+G_M37807_IG26: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
...
@@ -9,47 +9,48 @@
; 3 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> x19 single-def
-; V02 arg1 [V02,T04] ( 11, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T05] ( 11, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T01] ( 6, 5.56) int -> x20
-; V04 arg3 [V04,T06] ( 4, 3.90) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T13] ( 3, 2.02) ubyte -> x24 single-def
-; V06 loc0 [V06,T18] ( 3, 2.41) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T22] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T21] ( 4, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T17] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.90) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T14] ( 3, 2.02) ubyte -> x24 single-def
+; V06 loc0 [V06,T19] ( 3, 2.41) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T23] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T22] ( 4, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T18] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.41) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.18) int -> x24
-; V12 loc6 [V12,T03] ( 7, 5.96) ref -> x28 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 5.96) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T11] ( 5, 4.26) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T08] ( 5, 5 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V20 tmp7 [V20,T14] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T12] ( 5, 4.26) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T09] ( 5, 5 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V20 tmp7 [V20,T15] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V24 tmp11 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V25 tmp12 [V25,T07] ( 4, 5.04) byref -> x22 single-def "Inlining Arg"
+; V25 tmp12 [V25,T08] ( 4, 5.04) byref -> x22 single-def "Inlining Arg"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V27 tmp14 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V28 tmp15 [V28,T12] ( 7, 4.04) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V29 tmp16 [V29,T20] ( 4, 2.08) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp15 [V28,T13] ( 7, 4.04) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp16 [V29,T21] ( 4, 2.08) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T15] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V31 tmp18 [V31,T16] ( 2, 4 ) int -> x1 "Inlining Arg"
; V32 tmp19 [V32 ] ( 3, 3.41) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V33 tmp20 [V33 ] ( 3, 3.41) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V34 tmp21 [V34 ] ( 3, 3.41) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V35 tmp22 [V35 ] ( 3, 3.41) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V36 tmp23 [V36,T23] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V37 cse0 [V37,T09] ( 3, 4.63) int -> x0 "CSE - aggressive"
-; V38 cse1 [V38,T16] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V39 cse2 [V39,T10] ( 4, 4.54) int -> x22 "CSE - aggressive"
-; V40 cse3 [V40,T19] ( 2, 2.15) byref -> x27 hoist "CSE - moderate"
+;* V36 tmp23 [V36,T24] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V37 cse0 [V37,T10] ( 3, 4.63) int -> x0 "CSE - aggressive"
+; V38 cse1 [V38,T17] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V39 cse2 [V39,T03] ( 10, 6.53) long -> x28 hoist multi-def "CSE - aggressive"
+; V40 cse3 [V40,T11] ( 4, 4.54) int -> x22 "CSE - moderate"
+; V41 cse4 [V41,T20] ( 2, 2.15) byref -> x27 hoist "CSE - moderate"
;
; Lcl frame size = 32
@@ -212,7 +213,7 @@ G_M37807_IG12: ; bbWeight=0.26, gcrefRegs=1A00000 {x21 x23 x24}, byrefReg
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x24]
; byrRegs -[x14]
- cbz x22, G_M37807_IG27
+ cbz x22, G_M37807_IG28
mov x0, x22
; byrRegs +[x0]
mov x1, x28
@@ -246,30 +247,36 @@ G_M37807_IG13: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=800
stp wzr, w1, [fp, #0x28] // [V34 tmp21], [V35 tmp22]
mov w24, wzr
cmp w22, #0
- ble G_M37807_IG25
+ ble G_M37807_IG26
;; size=68 bbWeight=1 PerfScore 18.00
G_M37807_IG14: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=80000 {x19}, byref
add x27, x0, #16
; byrRegs +[x27]
- ;; size=4 bbWeight=0.61 PerfScore 0.30
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #1 LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.21
G_M37807_IG15: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
; gcrRegs -[x0]
- ldr x28, [x27, w24, UXTW #3]
- ; gcrRegs +[x28]
- ldr w0, [x28, #0x58]
+ ldr x2, [x27, w24, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w20, w0
cmp w1, w0
bne G_M37807_IG22
- ;; size=20 bbWeight=1.54 PerfScore 12.35
-G_M37807_IG16: ; bbWeight=1.41, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
+ ;; size=24 bbWeight=1.54 PerfScore 13.90
+G_M37807_IG16: ; bbWeight=1.41, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref, isz
cbz w25, G_M37807_IG18
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG17: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- mov x0, x28
+G_M37807_IG17: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
@@ -277,28 +284,26 @@ G_M37807_IG17: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG28
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ cbz w0, G_M37807_IG29
+ mov x0, x28
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG18: ; bbWeight=1.41, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- cbz x23, G_M37807_IG21
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG18: ; bbWeight=1.41, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ cbz x23, G_M37807_IG24
;; size=4 bbWeight=1.41 PerfScore 1.41
-G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- mov x0, x28
+G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
+ add x1, x28, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x28
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x28]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -307,23 +312,19 @@ G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=10A00000 {x21 x23 x28}, byrefRe
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG24
- ;; size=56 bbWeight=0.49 PerfScore 10.22
-G_M37807_IG20: ; bbWeight=0.24, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ bne G_M37807_IG25
+ ;; size=48 bbWeight=0.49 PerfScore 10.46
+G_M37807_IG20: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.24 PerfScore 0.61
-G_M37807_IG21: ; bbWeight=1.41, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ ;; size=8 bbWeight=0.24 PerfScore 0.36
+G_M37807_IG21: ; bbWeight=1.41, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x28
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -332,41 +333,45 @@ G_M37807_IG21: ; bbWeight=1.41, gcrefRegs=10A00000 {x21 x23 x28}, byrefRe
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x28]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.41 PerfScore 14.80
+ ;; size=48 bbWeight=1.41 PerfScore 15.50
G_M37807_IG22: ; bbWeight=1.54, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w24, w24, #1
cmp w22, w24
bgt G_M37807_IG15
- ;; size=28 bbWeight=1.54 PerfScore 6.95
+ ;; size=20 bbWeight=1.54 PerfScore 5.41
G_M37807_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x27]
- b G_M37807_IG25
+ b G_M37807_IG26
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG24: ; bbWeight=0.24, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
- ; gcrRegs +[x21 x23]
+G_M37807_IG24: ; bbWeight=0.70, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref
+ ; gcrRegs +[x2 x21 x23]
; byrRegs +[x27]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
+ ; GC ptr vars +{V04 V12}
+ b G_M37807_IG21
+ ;; size=4 bbWeight=0.70 PerfScore 0.70
+G_M37807_IG25: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref
+ ; gcrRegs -[x2]
+ ; GC ptr vars -{V04 V12}
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
b G_M37807_IG22
- ;; size=20 bbWeight=0.24 PerfScore 0.85
-G_M37807_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ ;; size=12 bbWeight=0.24 PerfScore 0.61
+G_M37807_IG26: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
...
@@ -12,13 +12,13 @@
; V00 this [V00,T02] ( 4, 4 ) ref -> x21 this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T01] ( 6, 4.02) ref -> x20 ld-addr-op class-hnd <System.String>
; V02 arg2 [V02,T00] ( 6, 5.32) int -> x19
-; V03 loc0 [V03,T15] ( 3, 1.03) int -> x22 ld-addr-op
-; V04 loc1 [V04,T12] ( 3, 2.24) ref -> x0 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
-; V05 loc2 [V05,T09] ( 16, 2.64) ref -> x20 class-hnd <System.Reflection.FieldInfo>
-; V06 loc3 [V06,T13] ( 3, 2 ) ubyte -> x21
+; V03 loc0 [V03,T14] ( 3, 1.03) int -> x22 ld-addr-op
+; V04 loc1 [V04,T10] ( 4, 2.56) ref -> x20 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
+; V05 loc2 [V05,T09] ( 16, 2.64) ref -> x21 class-hnd <System.Reflection.FieldInfo>
+; V06 loc3 [V06,T12] ( 3, 2 ) ubyte -> x22
;* V07 loc4 [V07 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op
-; V08 loc5 [V08,T11] ( 5, 2.28) int -> x22
-; V09 loc6 [V09,T16] ( 12, 0.96) ref -> x25 class-hnd <System.Reflection.RuntimeFieldInfo>
+; V08 loc5 [V08,T11] ( 5, 2.28) int -> x23
+; V09 loc6 [V09,T15] ( 12, 0.96) ref -> x25 class-hnd <System.Reflection.RuntimeFieldInfo>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -28,7 +28,7 @@
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V19 tmp9 [V19,T19] ( 3, 0 ) ref -> x26 "handle histogram profile tmp"
+; V19 tmp9 [V19,T18] ( 3, 0 ) ref -> x26 "handle histogram profile tmp"
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
@@ -46,24 +46,23 @@
;* V34 tmp24 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V35 tmp25 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
; V36 tmp26 [V36,T07] ( 7, 3.88) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V37 tmp27 [V37,T14] ( 4, 1.76) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V37 tmp27 [V37,T13] ( 4, 1.76) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V38 tmp28 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V39 tmp29 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp30 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V41 tmp31 [V41,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V42 tmp32 [V42,T20] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V43 tmp33 [V43,T21] ( 3, 0 ) ref -> x0 "argument with side effect"
-;* V44 tmp34 [V44,T28] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V45 tmp35 [V45,T29] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V46 tmp36 [V46,T22] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V47 tmp37 [V47,T23] ( 3, 0 ) ref -> x26 "argument with side effect"
-; V48 tmp38 [V48,T26] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V49 tmp39 [V49,T24] ( 3, 0 ) ref -> x0 "argument with side effect"
-; V50 tmp40 [V50,T25] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V51 cse0 [V51,T17] ( 3, 0.96) int -> x0 "CSE - conservative"
-; V52 cse1 [V52,T10] ( 3, 2.32) int -> x23 "CSE - moderate"
-; V53 cse2 [V53,T18] ( 2, 0.56) byref -> x24 hoist "CSE - conservative"
-; V54 cse3 [V54,T08] ( 3, 3 ) long -> x0 "CSE - aggressive"
+;* V41 tmp31 [V41,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V42 tmp32 [V42,T19] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V43 tmp33 [V43,T20] ( 3, 0 ) ref -> x0 "argument with side effect"
+;* V44 tmp34 [V44,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V45 tmp35 [V45,T28] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V46 tmp36 [V46,T21] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V47 tmp37 [V47,T22] ( 3, 0 ) ref -> x26 "argument with side effect"
+; V48 tmp38 [V48,T25] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V49 tmp39 [V49,T23] ( 3, 0 ) ref -> x0 "argument with side effect"
+; V50 tmp40 [V50,T24] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
+; V51 cse0 [V51,T16] ( 3, 0.96) int -> x0 "CSE - conservative"
+; V52 cse1 [V52,T17] ( 2, 0.56) byref -> x24 hoist "CSE - conservative"
+; V53 cse2 [V53,T08] ( 3, 3 ) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -224,30 +223,32 @@ G_M40435_IG11: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}
blr x4
; gcrRegs -[x2 x20]
; gcr arg pop 0
- mov x20, xzr
+ mov x20, x0
; gcrRegs +[x20]
+ mov x21, xzr
+ ; gcrRegs +[x21]
eor w19, w19, #2
- mov w21, wzr
mov w22, wzr
- ldr w23, [x0, #0x08]
- cmp w23, #0
+ mov w23, wzr
+ ldr w0, [x20, #0x08]
+ ; gcrRegs -[x0]
+ cmp w0, #0
ble G_M40435_IG18
- ;; size=64 bbWeight=1 PerfScore 16.50
-G_M40435_IG12: ; bbWeight=0.24, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
- add x24, x0, #16
+ ;; size=68 bbWeight=1 PerfScore 17.00
+G_M40435_IG12: ; bbWeight=0.24, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+ add x24, x20, #16
; byrRegs +[x24]
;; size=4 bbWeight=0.24 PerfScore 0.12
-G_M40435_IG13: ; bbWeight=0.32, gcrefRegs=100000 {x20}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs -[x0]
- ldr x25, [x24, w22, UXTW #3]
+G_M40435_IG13: ; bbWeight=0.32, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
+ ldr x25, [x24, w23, UXTW #3]
; gcrRegs +[x25]
ldr w0, [x25, #0x18]
and w1, w19, w0
cmp w1, w0
bne G_M40435_IG17
- cbz x20, G_M40435_IG16
+ cbz x21, G_M40435_IG16
;; size=24 bbWeight=0.32 PerfScore 2.88
-G_M40435_IG14: ; bbWeight=0, gcrefRegs=2100000 {x20 x25}, byrefRegs=1000000 {x24}, byref, isz
+G_M40435_IG14: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=1000000 {x24}, byref, isz
mov x0, x25
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -265,14 +266,14 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=2100000 {x20 x25}, byrefRegs=10000
; gcr arg pop 0
mov x26, x0
; gcrRegs +[x26]
- mov x0, x20
+ mov x0, x21
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x20
+ mov x0, x21
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -281,14 +282,14 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=2100000 {x20 x25}, byrefRegs=10000
; gcr arg pop 0
cmp x26, x0
beq G_M40435_IG28
- mov x0, x20
+ mov x0, x21
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0 x26]
; gcr arg pop 0
- mov x0, x20
+ mov x0, x21
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -333,9 +334,9 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=2100000 {x20 x25}, byrefRegs=10000
movk x0, #1 LSL #32
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov w21, #1
+ mov w22, #1
;; size=248 bbWeight=0 PerfScore 0.00
-G_M40435_IG15: ; bbWeight=0, gcrefRegs=2100000 {x20 x25}, byrefRegs=1000000 {x24}, byref, isz
+G_M40435_IG15: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=1000000 {x24}, byref, isz
mov x0, x25
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -359,7 +360,7 @@ G_M40435_IG15: ; bbWeight=0, gcrefRegs=2100000 {x20 x25}, byrefRegs=10000
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x20
+ mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -367,7 +368,7 @@ G_M40435_IG15: ; bbWeight=0, gcrefRegs=2100000 {x20 x25}, byrefRegs=10000
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x20
+ mov x0, x21
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -384,7 +385,7 @@ G_M40435_IG15: ; bbWeight=0, gcrefRegs=2100000 {x20 x25}, byrefRegs=10000
; gcrRegs -[x0-x1 x26]
; gcr arg pop 0
cbnz w0, G_M40435_IG25
- mov x0, x20
+ mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -392,7 +393,7 @@ G_M40435_IG15: ; bbWeight=0, gcrefRegs=2100000 {x20 x25}, byrefRegs=10000
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x20
+ mov x0, x21
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x48]
@@ -412,35 +413,37 @@ G_M40435_IG15: ; bbWeight=0, gcrefRegs=2100000 {x20 x25}, byrefRegs=10000
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_COUNTPROFILE32
- ; gcrRegs -[x20]
+ ; gcrRegs -[x21]
; gcr arg pop 0
;; size=212 bbWeight=0 PerfScore 0.00
-G_M40435_IG16: ; bbWeight=0.32, gcrefRegs=2000000 {x25}, byrefRegs=1000000 {x24}, byref
+G_M40435_IG16: ; bbWeight=0.32, gcrefRegs=2100000 {x20 x25}, byrefRegs=1000000 {x24}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov x20, x25
- ; gcrRegs +[x20]
+ mov x21, x25
+ ; gcrRegs +[x21]
;; size=20 bbWeight=0.32 PerfScore 0.96
-G_M40435_IG17: ; bbWeight=0.32, gcrefRegs=100000 {x20}, byrefRegs=1000000 {x24}, byref, isz
+G_M40435_IG17: ; bbWeight=0.32, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
; gcrRegs -[x25]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- add w22, w22, #1
- cmp w23, w22
+ add w23, w23, #1
+ ldr w0, [x20, #0x08]
+ cmp w0, w23
bgt G_M40435_IG13
- ;; size=28 bbWeight=0.32 PerfScore 1.44
-G_M40435_IG18: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.32 PerfScore 2.40
+G_M40435_IG18: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
; byrRegs -[x24]
- cbz w21, G_M40435_IG21
+ cbz w22, G_M40435_IG21
;; size=4 bbWeight=1 PerfScore 1.00
-G_M40435_IG19: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+G_M40435_IG19: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+ mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -448,7 +451,7 @@ G_M40435_IG19: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- mov x0, x20
...
@@ -19,25 +19,26 @@
;* V08 loc5 [V08 ] ( 0, 0 ) struct (24) zero-ref <System.ValueTuple`4[System.String,int,int,System.String]>
;* V09 loc6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T14] ( 3, 2 ) int -> x20
-; V12 tmp2 [V12,T12] ( 3, 2.50) int -> x0 "Inline return value spill temp"
-; V13 tmp3 [V13,T13] ( 3, 2.45) int -> x0 "Inlining Arg"
-; V14 tmp4 [V14,T03] ( 4, 14 ) ref -> x26 "field V08.Item1 (fldOffset=0x0)" P-INDEP
+; V11 tmp1 [V11,T15] ( 3, 2 ) int -> x20
+; V12 tmp2 [V12,T13] ( 3, 2.50) int -> x0 "Inline return value spill temp"
+; V13 tmp3 [V13,T14] ( 3, 2.45) int -> x0 "Inlining Arg"
+; V14 tmp4 [V14,T03] ( 4, 14 ) ref -> x27 "field V08.Item1 (fldOffset=0x0)" P-INDEP
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref "field V08.Item4 (fldOffset=0x8)" P-INDEP
-; V16 tmp6 [V16,T04] ( 4, 10.50) int -> x27 "field V08.Item2 (fldOffset=0x10)" P-INDEP
+; V16 tmp6 [V16,T04] ( 4, 10.50) int -> x28 "field V08.Item2 (fldOffset=0x10)" P-INDEP
;* V17 tmp7 [V17 ] ( 0, 0 ) int -> zero-ref "field V08.Item3 (fldOffset=0x14)" P-INDEP
; V18 tmp8 [V18,T01] ( 3, 24 ) byref -> x0 "BlockOp address local"
; V19 cse0 [V19,T02] ( 3, 18 ) int -> x25 "CSE - aggressive"
+; V20 cse1 [V20,T12] ( 2, 5 ) ref -> x26 hoist "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M36645_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- stp x25, x26, [sp, #0x48]
- str x27, [sp, #0x58]
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
+ stp x27, x28, [sp, #0x50]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -82,61 +83,65 @@ G_M36645_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
ldr w25, [x20, #0x08]
cmp w25, #0
ble G_M36645_IG13
- ;; size=108 bbWeight=1 PerfScore 23.50
-G_M36645_IG03: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ movz x26, #0xD1FFAB1E
+ movk x26, #0xD1FFAB1E LSL #16
+ movk x26, #1 LSL #32
+ ;; size=120 bbWeight=1 PerfScore 25.00
+G_M36645_IG03: ; bbWeight=4, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x26]
mov w0, #24
mov x1, #16
umaddl x0, w24, w0, x1
add x0, x20, x0
; byrRegs +[x0]
- ldr x26, [x0]
- ; gcrRegs +[x26]
- ldr w27, [x0, #0x10]
- cmp x26, #0
+ ldr x27, [x0]
+ ; gcrRegs +[x27]
+ ldr w28, [x0, #0x10]
+ cmp x27, #0
cset x0, ne
; byrRegs -[x0]
- cmp w27, #0
+ cmp w28, #0
cset x1, ge
eor w0, w0, w1
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
+ mov x1, x26
+ ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- cbz x26, G_M36645_IG05
- ;; size=80 bbWeight=4 PerfScore 92.00
-G_M36645_IG04: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
- ldr w0, [x26, #0x08]
+ ; gcrRegs -[x1]
+ cbz x27, G_M36645_IG05
+ ;; size=72 bbWeight=4 PerfScore 88.00
+G_M36645_IG04: ; bbWeight=2, gcrefRegs=C180000 {x19 x20 x26 x27}, byrefRegs=0000 {}, byref
+ ldr w0, [x27, #0x08]
add w21, w0, w21
b G_M36645_IG10
;; size=12 bbWeight=2 PerfScore 9.00
-G_M36645_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x26]
- tbnz w27, #31, G_M36645_IG12
+G_M36645_IG05: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x27]
+ tbnz w28, #31, G_M36645_IG12
;; size=4 bbWeight=2 PerfScore 2.00
-G_M36645_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M36645_IG06: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_COUNTPROFILE32
add w22, w22, #1
- add w0, w27, #1
+ add w0, w28, #1
cmp w23, w0
bge G_M36645_IG08
;; size=32 bbWeight=0.50 PerfScore 2.50
-G_M36645_IG07: ; bbWeight=0.22, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M36645_IG07: ; bbWeight=0.22, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
b G_M36645_IG09
;; size=4 bbWeight=0.22 PerfScore 0.22
-G_M36645_IG08: ; bbWeight=0.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M36645_IG08: ; bbWeight=0.28, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
sxtw w0, w23
;; size=4 bbWeight=0.28 PerfScore 0.14
-G_M36645_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M36645_IG09: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
sxtw w23, w0
;; size=4 bbWeight=2 PerfScore 1.00
-G_M36645_IG10: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M36645_IG10: ; bbWeight=16, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -146,11 +151,11 @@ G_M36645_IG10: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
bgt G_M36645_IG03
;; size=28 bbWeight=16 PerfScore 72.00
G_M36645_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
+ ; gcrRegs -[x20 x26]
b G_M36645_IG13
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M36645_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x20]
+G_M36645_IG12: ; bbWeight=2, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x20 x26]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -158,7 +163,7 @@ G_M36645_IG12: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M36645_IG10
;; size=20 bbWeight=2 PerfScore 7.00
G_M36645_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
+ ; gcrRegs -[x20 x26]
cmp w21, #0
cset x0, ge
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -202,16 +207,16 @@ G_M36645_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
str w23, [x19, #0x20]
;; size=48 bbWeight=1 PerfScore 10.50
G_M36645_IG17: ; bbWeight=1, epilog, nogc, extend
- ldr x27, [sp, #0x58]
- ldp x25, x26, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ldp x27, x28, [sp, #0x50]
+ ldp x25, x26, [sp, #0x40]
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x60
ret lr
- ;; size=28 bbWeight=1 PerfScore 8.00
+ ;; size=28 bbWeight=1 PerfScore 7.00
-; Total bytes of code 508, prolog size 28, PerfScore 252.86, instruction count 127, allocated bytes for code 508 (MethodHash=db0370da) for method System.Text.CompositeFormat:.ctor(System.String,System.ValueTuple`4[System.String,int,int,System.String][]):this (Instrumented Tier1)
+; Total bytes of code 512, prolog size 28, PerfScore 249.36, instruction count 128, allocated bytes for code 512 (MethodHash=db0370da) for method System.Text.CompositeFormat:.ctor(System.String,System.ValueTuple`4[System.String,int,int,System.String][]):this (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -222,7 +227,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 127 (0x0007f) Actual length = 508 (0x0001fc)
+ Function Length : 128 (0x00080) Actual length = 512 (0x000200)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -230,13 +235,14 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D2 0B save_reg X#8 Z#11 (0x0B); str x27, [sp, #88]
E6 save_next
E6 save_next
E6 save_next
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ E6 save_next
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
E4 end
+ E4 end
@@ -3,48 +3,48 @@
; Tier-0 switched to FullOpts code
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> x21
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> x21
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T18] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x1 "impAppendStmt"
+; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> x1 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T19] ( 2, 1 ) int -> x0
+; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x0
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,12 +53,11 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T17] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V50 cse1 [V50,T00] ( 4, 14 ) int -> x13 "CSE - aggressive"
+; V49 cse0 [V49,T16] ( 3, 1.50) int -> x1 "CSE - moderate"
;
; Lcl frame size = 56
@@ -95,7 +94,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
movk x3, #2 LSL #32
ldr x3, [x3]
blr x3
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldp w13, w14, [fp, #0x10] // [V40 tmp35], [V41 tmp36]
@@ -107,30 +105,48 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
mov w21, #3
b G_M46478_IG06
;; size=32 bbWeight=1 PerfScore 9.50
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w21, w13
- cmp w21, #0
- ble G_M46478_IG07
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w13, w21, #1
- cmp w13, #4
- bhs G_M46478_IG17
- ldr w14, [x20, w13, UXTW #2]
- cbz w14, G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w21, G_M46478_IG11
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #2
+ b G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x08]
+ cbz w13, G_M46478_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #1
+ b G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x04]
+ cbz w13, G_M46478_IG08
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, wzr
+ b G_M46478_IG13
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20]
+ cbz w13, G_M46478_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w21, G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
movz x13, #0xD1FFAB1E
movk x13, #0xD1FFAB1E LSL #16
movk x13, #2 LSL #32
ldr w13, [x13]
- tbz w13, #0, G_M46478_IG18
+ tbz w13, #0, G_M46478_IG24
;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x13, #0xD1FFAB1E // box for <unknown class>:<unknown field>
movk x13, #0xD1FFAB1E LSL #16
movk x13, #1 LSL #32
@@ -151,24 +167,23 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG10
+ beq G_M46478_IG16
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=68 bbWeight=0.50 PerfScore 8.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w21, #1
- bne G_M46478_IG13
+ bne G_M46478_IG19
ldr w1, [x20]
cmp w1, #0
- ble G_M46478_IG13
+ ble G_M46478_IG19
str w1, [x19, #0x08]
ldr w1, [x19, #0x08]
ldr w0, [x20, #0x0C]
@@ -185,18 +200,17 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG12
+ beq G_M46478_IG18
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 12.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x1, w21
movz x0, #0xD1FFAB1E
@@ -204,7 +218,6 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #2 LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -217,30 +230,30 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x10]
cmp w21, #1
- ble G_M46478_IG14
+ ble G_M46478_IG20
ldr x0, [x19]
ldr w1, [x20, #0x04]
ldr w2, [x0, #0x08]
cmp w2, #1
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x14]
;; size=88 bbWeight=0.50 PerfScore 14.75
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
; gcrRegs -[x0]
cmp w21, #2
- ble G_M46478_IG15
+ ble G_M46478_IG21
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x20, #0x08]
ldr w2, [x0, #0x08]
cmp w2, #2
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x18]
...
@@ -3,48 +3,48 @@
; FullOpts code
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> x21
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> x21
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T18] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x1 "impAppendStmt"
+; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> x1 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T19] ( 2, 1 ) int -> x0
+; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x0
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,12 +53,11 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T17] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V50 cse1 [V50,T00] ( 4, 14 ) int -> x13 "CSE - aggressive"
+; V49 cse0 [V49,T16] ( 3, 1.50) int -> x1 "CSE - moderate"
;
; Lcl frame size = 56
@@ -95,7 +94,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldp w13, w14, [fp, #0x10] // [V40 tmp35], [V41 tmp36]
@@ -107,30 +105,48 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
mov w21, #3
b G_M46478_IG06
;; size=32 bbWeight=1 PerfScore 9.50
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w21, w13
- cmp w21, #0
- ble G_M46478_IG07
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w13, w21, #1
- cmp w13, #4
- bhs G_M46478_IG17
- ldr w14, [x20, w13, UXTW #2]
- cbz w14, G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w21, G_M46478_IG11
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #2
+ b G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x08]
+ cbz w13, G_M46478_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #1
+ b G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x04]
+ cbz w13, G_M46478_IG08
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, wzr
+ b G_M46478_IG13
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20]
+ cbz w13, G_M46478_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w21, G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
movz x13, #0xD1FFAB1E
movk x13, #0xD1FFAB1E LSL #16
movk x13, #1 LSL #32
ldr w13, [x13]
- tbz w13, #0, G_M46478_IG18
+ tbz w13, #0, G_M46478_IG24
;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x13, #0xD1FFAB1E // box for <unknown class>:<unknown field>
movk x13, #0xD1FFAB1E LSL #16
movk x13, #2 LSL #32
@@ -151,24 +167,23 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG10
+ beq G_M46478_IG16
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=68 bbWeight=0.50 PerfScore 8.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w21, #1
- bne G_M46478_IG13
+ bne G_M46478_IG19
ldr w1, [x20]
cmp w1, #0
- ble G_M46478_IG13
+ ble G_M46478_IG19
str w1, [x19, #0x08]
ldr w1, [x19, #0x08]
ldr w0, [x20, #0x0C]
@@ -185,18 +200,17 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG12
+ beq G_M46478_IG18
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 12.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x1, w21
movz x0, #0xD1FFAB1E
@@ -204,7 +218,6 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -217,30 +230,30 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x10]
cmp w21, #1
- ble G_M46478_IG14
+ ble G_M46478_IG20
ldr x0, [x19]
ldr w1, [x20, #0x04]
ldr w2, [x0, #0x08]
cmp w2, #1
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x14]
;; size=88 bbWeight=0.50 PerfScore 14.75
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
; gcrRegs -[x0]
cmp w21, #2
- ble G_M46478_IG15
+ ble G_M46478_IG21
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x20, #0x08]
ldr w2, [x0, #0x08]
cmp w2, #2
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x18]
...
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.osx.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_pgo.osx.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_tiered.osx.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
coreclr_tests.run.osx.arm64.checked.mch | 28 | 20 | 8 | 0 | -420 | +3,256 |
libraries.crossgen2.osx.arm64.checked.mch | 6 | 5 | 1 | 0 | -396 | +12 |
libraries.pmi.osx.arm64.checked.mch | 8 | 6 | 2 | 0 | -360 | +356 |
libraries_tests.run.osx.arm64.Release.mch | 313 | 127 | 186 | 0 | -4,432 | +529,992 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 11 | 9 | 2 | 0 | -1,056 | +172 |
realworld.run.osx.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
366 | 167 | 199 | 0 | -6,664 | +533,788 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.osx.arm64.checked.mch | 24,855 | 4 | 24,851 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.osx.arm64.checked.mch | 84,590 | 48,412 | 36,178 | 84 (0.10%) | 84 (0.10%) |
benchmarks.run_tiered.osx.arm64.checked.mch | 48,261 | 37,318 | 10,943 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.osx.arm64.checked.mch | 585,832 | 357,177 | 228,655 | 326 (0.06%) | 389 (0.07%) |
libraries.crossgen2.osx.arm64.checked.mch | 233,353 | 15 | 233,338 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.osx.arm64.checked.mch | 314,716 | 18 | 314,698 | 0 (0.00%) | 0 (0.00%) |
libraries_tests.run.osx.arm64.Release.mch | 637,144 | 466,371 | 170,773 | 2,509 (0.39%) | 2,722 (0.43%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 302,469 | 21,558 | 280,911 | 6 (0.00%) | 6 (0.00%) |
realworld.run.osx.arm64.checked.mch | 31,544 | 3 | 31,541 | 0 (0.00%) | 0 (0.00%) |
2,262,764 | 930,876 | 1,331,888 | 2,925 (0.13%) | 3,201 (0.14%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 485342836 (overridden on cmd)
Total bytes of diff: 485345672 (overridden on cmd)
Total bytes of delta: 2836 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
904 : 2263.dasm (35.70 % of base)
540 : 209350.dasm (18.02 % of base)
540 : 247318.dasm (17.93 % of base)
532 : 28982.dasm (15.57 % of base)
532 : 168325.dasm (15.57 % of base)
180 : 30617.dasm (8.60 % of base)
20 : 247296.dasm (1.33 % of base)
8 : 519391.dasm (0.36 % of base)
Top file improvements (bytes):
-28 : 209375.dasm (-1.94 % of base)
-28 : 306896.dasm (-2.13 % of base)
-28 : 370667.dasm (-1.99 % of base)
-28 : 376109.dasm (-2.13 % of base)
-28 : 383273.dasm (-2.13 % of base)
-28 : 168416.dasm (-1.94 % of base)
-28 : 261446.dasm (-2.48 % of base)
-28 : 301956.dasm (-1.94 % of base)
-28 : 30707.dasm (-2.44 % of base)
-28 : 375454.dasm (-1.95 % of base)
-28 : 375652.dasm (-2.51 % of base)
-28 : 229199.dasm (-2.48 % of base)
-28 : 246178.dasm (-2.48 % of base)
-16 : 1100.dasm (-1.45 % of base)
-12 : 582208.dasm (-0.71 % of base)
-12 : 386461.dasm (-1.06 % of base)
-4 : 255981.dasm (-0.19 % of base)
-4 : 28924.dasm (-0.19 % of base)
-4 : 228637.dasm (-0.18 % of base)
-4 : 28925.dasm (-0.19 % of base)
28 total files with Code Size differences (20 improved, 8 regressed), 0 unchanged.
Top method regressions (bytes):
904 (35.70 % of base) : 2263.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
540 (18.02 % of base) : 209350.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
540 (17.93 % of base) : 247318.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
532 (15.57 % of base) : 28982.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
532 (15.57 % of base) : 168325.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
180 (8.60 % of base) : 30617.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
20 (1.33 % of base) : 247296.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
8 (0.36 % of base) : 519391.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
Top method improvements (bytes):
-28 (-1.94 % of base) : 209375.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.13 % of base) : 306896.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-1.99 % of base) : 370667.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.13 % of base) : 376109.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.13 % of base) : 383273.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-1.94 % of base) : 168416.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 261446.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-1.94 % of base) : 301956.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.44 % of base) : 30707.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-1.95 % of base) : 375454.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.51 % of base) : 375652.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 229199.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 246178.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-16 (-1.45 % of base) : 1100.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Instrumented Tier1)
-12 (-0.71 % of base) : 582208.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-12 (-1.06 % of base) : 386461.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-4 (-0.19 % of base) : 255981.dasm - System.Buffers.SharedArrayPool`1[int]:Trim():ubyte:this (Instrumented Tier1)
-4 (-0.18 % of base) : 228637.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
-4 (-0.19 % of base) : 28925.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Instrumented Tier1)
-4 (-0.19 % of base) : 28924.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Instrumented Tier1)
Top method regressions (percentages):
904 (35.70 % of base) : 2263.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
540 (18.02 % of base) : 209350.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
540 (17.93 % of base) : 247318.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
532 (15.57 % of base) : 28982.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
532 (15.57 % of base) : 168325.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
180 (8.60 % of base) : 30617.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
20 (1.33 % of base) : 247296.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
8 (0.36 % of base) : 519391.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
Top method improvements (percentages):
-28 (-2.51 % of base) : 375652.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 261446.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 229199.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 246178.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.44 % of base) : 30707.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.13 % of base) : 306896.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.13 % of base) : 376109.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.13 % of base) : 383273.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-1.99 % of base) : 370667.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-1.95 % of base) : 375454.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-1.94 % of base) : 209375.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-1.94 % of base) : 168416.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-1.94 % of base) : 301956.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-16 (-1.45 % of base) : 1100.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Instrumented Tier1)
-12 (-1.06 % of base) : 386461.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-0.71 % of base) : 582208.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-4 (-0.19 % of base) : 255981.dasm - System.Buffers.SharedArrayPool`1[int]:Trim():ubyte:this (Instrumented Tier1)
-4 (-0.19 % of base) : 28925.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Instrumented Tier1)
-4 (-0.19 % of base) : 28924.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Instrumented Tier1)
-4 (-0.18 % of base) : 228637.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
28 total methods with Code Size differences (20 improved, 8 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55620836 (overridden on cmd)
Total bytes of diff: 55620452 (overridden on cmd)
Total bytes of delta: -384 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
12 : 227749.dasm (1.80 % of base)
Top file improvements (bytes):
-220 : 92401.dasm (-15.15 % of base)
-60 : 27764.dasm (-11.03 % of base)
-56 : 205350.dasm (-13.86 % of base)
-56 : 156493.dasm (-13.86 % of base)
-4 : 213865.dasm (-0.20 % of base)
6 total files with Code Size differences (5 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
12 (1.80 % of base) : 227749.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-220 (-15.15 % of base) : 92401.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-60 (-11.03 % of base) : 27764.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-56 (-13.86 % of base) : 156493.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-13.86 % of base) : 205350.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-4 (-0.20 % of base) : 213865.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
12 (1.80 % of base) : 227749.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-220 (-15.15 % of base) : 92401.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-56 (-13.86 % of base) : 156493.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-13.86 % of base) : 205350.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-60 (-11.03 % of base) : 27764.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-4 (-0.20 % of base) : 213865.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
6 total methods with Code Size differences (5 improved, 1 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79959744 (overridden on cmd)
Total bytes of diff: 79959740 (overridden on cmd)
Total bytes of delta: -4 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
332 : 279243.dasm (2.72 % of base)
24 : 292986.dasm (3.97 % of base)
Top file improvements (bytes):
-168 : 118275.dasm (-14.53 % of base)
-64 : 18325.dasm (-12.21 % of base)
-56 : 206916.dasm (-10.53 % of base)
-56 : 308938.dasm (-11.97 % of base)
-12 : 71687.dasm (-0.71 % of base)
-4 : 282535.dasm (-0.20 % of base)
8 total files with Code Size differences (6 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
332 (2.72 % of base) : 279243.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
24 (3.97 % of base) : 292986.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-168 (-14.53 % of base) : 118275.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-64 (-12.21 % of base) : 18325.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-56 (-11.97 % of base) : 308938.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-10.53 % of base) : 206916.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-12 (-0.71 % of base) : 71687.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-4 (-0.20 % of base) : 282535.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
24 (3.97 % of base) : 292986.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
332 (2.72 % of base) : 279243.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
Top method improvements (percentages):
-168 (-14.53 % of base) : 118275.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-64 (-12.21 % of base) : 18325.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-56 (-11.97 % of base) : 308938.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-10.53 % of base) : 206916.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-12 (-0.71 % of base) : 71687.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-4 (-0.20 % of base) : 282535.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
8 total methods with Code Size differences (6 improved, 2 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 312234552 (overridden on cmd)
Total bytes of diff: 312760112 (overridden on cmd)
Total bytes of delta: 525560 (0.17 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
4932 : 358434.dasm (51.27 % of base)
4932 : 73373.dasm (51.38 % of base)
4888 : 95682.dasm (51.56 % of base)
4844 : 182961.dasm (49.88 % of base)
4844 : 337631.dasm (50.84 % of base)
4844 : 357830.dasm (49.88 % of base)
4844 : 437175.dasm (50.84 % of base)
4844 : 274083.dasm (50.84 % of base)
4844 : 178131.dasm (50.84 % of base)
4836 : 95116.dasm (50.78 % of base)
4828 : 25669.dasm (49.69 % of base)
4824 : 618529.dasm (49.67 % of base)
4820 : 129092.dasm (50.91 % of base)
4820 : 438683.dasm (50.91 % of base)
4820 : 324803.dasm (50.10 % of base)
4820 : 571742.dasm (50.78 % of base)
4820 : 100844.dasm (50.91 % of base)
4816 : 124737.dasm (50.12 % of base)
4808 : 370032.dasm (50.10 % of base)
4808 : 341764.dasm (49.96 % of base)
Top file improvements (bytes):
-228 : 577463.dasm (-14.54 % of base)
-228 : 581216.dasm (-14.18 % of base)
-192 : 581709.dasm (-21.62 % of base)
-148 : 577674.dasm (-20.56 % of base)
-140 : 577819.dasm (-18.32 % of base)
-140 : 577742.dasm (-22.01 % of base)
-120 : 460943.dasm (-15.87 % of base)
-104 : 578570.dasm (-17.93 % of base)
-80 : 610529.dasm (-14.93 % of base)
-52 : 581708.dasm (-10.57 % of base)
-28 : 372510.dasm (-3.24 % of base)
-28 : 419103.dasm (-3.24 % of base)
-28 : 100609.dasm (-3.21 % of base)
-28 : 182953.dasm (-3.21 % of base)
-28 : 216385.dasm (-3.21 % of base)
-28 : 222707.dasm (-3.24 % of base)
-28 : 71621.dasm (-3.21 % of base)
-28 : 95325.dasm (-3.21 % of base)
-28 : 119991.dasm (-3.24 % of base)
-28 : 140641.dasm (-3.21 % of base)
62 total files with Code Size differences (29 improved, 33 regressed), 0 unchanged.
Top method regressions (bytes):
4932 (51.27 % of base) : 358434.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4932 (51.38 % of base) : 73373.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4888 (51.56 % of base) : 95682.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4844 (49.88 % of base) : 182961.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4844 (50.84 % of base) : 337631.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4844 (49.88 % of base) : 357830.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4844 (50.84 % of base) : 437175.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4844 (50.84 % of base) : 274083.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4844 (50.84 % of base) : 178131.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4836 (50.78 % of base) : 95116.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4828 (49.69 % of base) : 25669.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4824 (49.67 % of base) : 618529.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4820 (50.91 % of base) : 129092.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4820 (50.91 % of base) : 438683.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4820 (50.10 % of base) : 324803.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4820 (50.78 % of base) : 571742.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4820 (50.91 % of base) : 100844.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4816 (50.12 % of base) : 124737.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4808 (50.10 % of base) : 370032.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4808 (49.96 % of base) : 341764.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (bytes):
-228 (-14.18 % of base) : 581216.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4268_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-228 (-14.54 % of base) : 577463.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex787_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-192 (-21.62 % of base) : 581709.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4565_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-148 (-20.56 % of base) : 577674.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex818_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-140 (-22.01 % of base) : 577742.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex825_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-140 (-18.32 % of base) : 577819.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex832_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-120 (-15.87 % of base) : 460943.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-104 (-17.93 % of base) : 578570.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex927_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-80 (-14.93 % of base) : 610529.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3747_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-52 (-10.57 % of base) : 581708.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4564_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-28 (-3.24 % of base) : 372510.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.24 % of base) : 419103.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 100609.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 182953.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 216385.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.24 % of base) : 222707.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 71621.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 95325.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.24 % of base) : 119991.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 140641.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
Top method regressions (percentages):
4888 (51.56 % of base) : 95682.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4932 (51.38 % of base) : 73373.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4932 (51.27 % of base) : 358434.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4780 (51.16 % of base) : 291640.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4800 (51.13 % of base) : 123624.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4804 (51.08 % of base) : 631896.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4820 (50.91 % of base) : 129092.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4820 (50.91 % of base) : 438683.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4820 (50.91 % of base) : 100844.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4844 (50.84 % of base) : 337631.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4844 (50.84 % of base) : 437175.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4844 (50.84 % of base) : 274083.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4844 (50.84 % of base) : 178131.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4820 (50.78 % of base) : 571742.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4836 (50.78 % of base) : 95116.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4780 (50.70 % of base) : 465900.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4748 (50.64 % of base) : 347930.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4796 (50.57 % of base) : 623532.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4760 (50.45 % of base) : 633693.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4796 (50.44 % of base) : 540497.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (percentages):
-140 (-22.01 % of base) : 577742.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex825_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-192 (-21.62 % of base) : 581709.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4565_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-148 (-20.56 % of base) : 577674.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex818_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-140 (-18.32 % of base) : 577819.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex832_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-104 (-17.93 % of base) : 578570.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex927_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-120 (-15.87 % of base) : 460943.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-80 (-14.93 % of base) : 610529.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3747_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-228 (-14.54 % of base) : 577463.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex787_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-228 (-14.18 % of base) : 581216.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4268_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-52 (-10.57 % of base) : 581708.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4564_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-28 (-3.24 % of base) : 372510.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.24 % of base) : 419103.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.24 % of base) : 222707.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.24 % of base) : 119991.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.24 % of base) : 337691.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 100609.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 182953.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 216385.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 71621.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 95325.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 160790848 (overridden on cmd)
Total bytes of diff: 160789964 (overridden on cmd)
Total bytes of delta: -884 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
148 : 266841.dasm (6.29 % of base)
24 : 115538.dasm (3.97 % of base)
Top file improvements (bytes):
-200 : 271962.dasm (-21.65 % of base)
-172 : 277254.dasm (-22.75 % of base)
-164 : 277261.dasm (-23.56 % of base)
-160 : 277267.dasm (-18.60 % of base)
-116 : 277437.dasm (-18.83 % of base)
-68 : 287019.dasm (-12.98 % of base)
-64 : 271960.dasm (-12.12 % of base)
-56 : 193333.dasm (-11.97 % of base)
-56 : 61271.dasm (-11.97 % of base)
11 total files with Code Size differences (9 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
148 (6.29 % of base) : 266841.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
24 (3.97 % of base) : 115538.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-200 (-21.65 % of base) : 271962.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex654_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-172 (-22.75 % of base) : 277254.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5740_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-164 (-23.56 % of base) : 277261.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5747_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-160 (-18.60 % of base) : 277267.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5754_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-18.83 % of base) : 277437.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5849_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-68 (-12.98 % of base) : 287019.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4972_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-64 (-12.12 % of base) : 271960.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex653_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-11.97 % of base) : 61271.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-11.97 % of base) : 193333.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
Top method regressions (percentages):
148 (6.29 % of base) : 266841.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
24 (3.97 % of base) : 115538.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-164 (-23.56 % of base) : 277261.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5747_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-172 (-22.75 % of base) : 277254.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5740_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-200 (-21.65 % of base) : 271962.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex654_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-18.83 % of base) : 277437.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5849_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-160 (-18.60 % of base) : 277267.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5754_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-68 (-12.98 % of base) : 287019.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4972_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-64 (-12.12 % of base) : 271960.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex653_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-11.97 % of base) : 61271.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-11.97 % of base) : 193333.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
11 total methods with Code Size differences (9 improved, 2 regressed).
Diffs are based on 2,318,293 contexts (931,543 MinOpts, 1,386,750 FullOpts).
MISSED contexts: base: 2,587 (0.11%), diff: 2,601 (0.11%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.windows.arm64.checked.mch | 495,323,964 | +19,784 |
libraries.crossgen2.windows.arm64.checked.mch | 58,963,476 | -384 |
libraries.pmi.windows.arm64.checked.mch | 79,567,996 | +60 |
libraries_tests.run.windows.arm64.Release.mch | 309,697,012 | +713,120 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 169,004,992 | -888 |
smoke_tests.nativeaot.windows.arm64.checked.mch | 3,972,452 | +256 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.windows.arm64.checked.mch | 156,232,436 | +19,784 |
libraries.crossgen2.windows.arm64.checked.mch | 58,961,840 | -384 |
libraries.pmi.windows.arm64.checked.mch | 79,448,012 | +60 |
libraries_tests.run.windows.arm64.Release.mch | 108,115,508 | +713,120 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 155,867,528 | -888 |
smoke_tests.nativeaot.windows.arm64.checked.mch | 3,971,480 | +256 |
@@ -9,50 +9,51 @@
; 3 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T01] ( 6, 6 ) byref -> x20 single-def
-; V02 arg1 [V02,T04] ( 11, 4.19) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T05] ( 11, 4.19) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T00] ( 6, 6.53) int -> x19
-; V04 arg3 [V04,T06] ( 4, 3.96) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T08] ( 3, 2.94) ubyte -> x24 single-def
-; V06 loc0 [V06,T19] ( 3, 2.46) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T23] ( 3, 1.10) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T21] ( 4, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T18] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.96) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T09] ( 3, 2.94) ubyte -> x24 single-def
+; V06 loc0 [V06,T20] ( 3, 2.46) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T24] ( 3, 1.10) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T22] ( 4, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T19] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.46) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.36) int -> x24
-; V12 loc6 [V12,T03] ( 7, 6.12) ref -> x27 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 6.12) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T12] ( 5, 4.23) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T07] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V20 tmp7 [V20,T17] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T13] ( 5, 4.23) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T08] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V20 tmp7 [V20,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V27 tmp14 [V27,T09] ( 4, 4.91) byref -> x22 single-def "Inlining Arg"
+; V27 tmp14 [V27,T10] ( 4, 4.91) byref -> x22 single-def "Inlining Arg"
;* V28 tmp15 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V29 tmp16 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V30 tmp17 [V30,T14] ( 7, 3.91) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T22] ( 4, 1.81) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V30 tmp17 [V30,T15] ( 7, 3.91) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V31 tmp18 [V31,T23] ( 4, 1.81) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V33 tmp20 [V33,T13] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V33 tmp20 [V33,T14] ( 2, 4 ) int -> x1 "Inlining Arg"
; V34 tmp21 [V34 ] ( 3, 3.46) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V35 tmp22 [V35 ] ( 3, 3.46) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V36 tmp23 [V36 ] ( 3, 3.46) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V37 tmp24 [V37 ] ( 3, 3.46) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V38 tmp25 [V38,T24] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V39 cse0 [V39,T10] ( 3, 4.77) int -> x0 "CSE - aggressive"
-; V40 cse1 [V40,T16] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V41 cse2 [V41,T11] ( 4, 4.59) int -> x22 "CSE - aggressive"
-; V42 cse3 [V42,T20] ( 2, 2.20) byref -> x28 hoist "CSE - moderate"
-; V43 cse4 [V43,T15] ( 3, 3 ) ref -> x1 "CSE - moderate"
+;* V38 tmp25 [V38,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V39 cse0 [V39,T11] ( 3, 4.77) int -> x0 "CSE - aggressive"
+; V40 cse1 [V40,T17] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V41 cse2 [V41,T03] ( 10, 6.65) long -> x27 hoist multi-def "CSE - aggressive"
+; V42 cse3 [V42,T12] ( 4, 4.59) int -> x22 "CSE - moderate"
+; V43 cse4 [V43,T21] ( 2, 2.20) byref -> x28 hoist "CSE - moderate"
+; V44 cse5 [V44,T16] ( 3, 3 ) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 32
@@ -218,7 +219,7 @@ G_M37807_IG13: ; bbWeight=0.23, gcrefRegs=1A00000 {x21 x23 x24}, byrefReg
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x24]
; byrRegs -[x14]
- cbz x22, G_M37807_IG28
+ cbz x22, G_M37807_IG29
mov x0, x22
; byrRegs +[x0]
mov x1, x28
@@ -252,30 +253,36 @@ G_M37807_IG14: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100
stp wzr, w1, [fp, #0x28] // [V36 tmp23], [V37 tmp24]
mov w24, wzr
cmp w22, #0
- ble G_M37807_IG26
+ ble G_M37807_IG27
;; size=68 bbWeight=1 PerfScore 18.00
G_M37807_IG15: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100000 {x20}, byref
add x28, x0, #16
; byrRegs +[x28]
- ;; size=4 bbWeight=0.61 PerfScore 0.31
+ movz x27, #0xD1FFAB1E
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #0xD1FFAB1E LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.23
G_M37807_IG16: ; bbWeight=1.59, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
; gcrRegs -[x0]
- ldr x27, [x28, w24, UXTW #3]
- ; gcrRegs +[x27]
- ldr w0, [x27, #0x58]
+ ldr x2, [x28, w24, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w19, w0
cmp w1, w0
bne G_M37807_IG23
- ;; size=20 bbWeight=1.59 PerfScore 12.71
-G_M37807_IG17: ; bbWeight=1.46, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
+ ;; size=24 bbWeight=1.59 PerfScore 14.30
+G_M37807_IG17: ; bbWeight=1.46, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, gcvars, byref, isz
cbz w25, G_M37807_IG19
;; size=4 bbWeight=1.46 PerfScore 1.46
-G_M37807_IG18: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG18: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -283,28 +290,26 @@ G_M37807_IG18: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=1
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG29
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ cbz w0, G_M37807_IG30
+ mov x0, x27
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG19: ; bbWeight=1.46, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- cbz x23, G_M37807_IG22
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG19: ; bbWeight=1.46, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ cbz x23, G_M37807_IG25
;; size=4 bbWeight=1.46 PerfScore 1.46
-G_M37807_IG20: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG20: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ add x1, x27, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x27
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x27]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -313,23 +318,19 @@ G_M37807_IG20: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG25
- ;; size=56 bbWeight=0.49 PerfScore 10.37
-G_M37807_IG21: ; bbWeight=0.25, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ bne G_M37807_IG26
+ ;; size=48 bbWeight=0.49 PerfScore 10.62
+G_M37807_IG21: ; bbWeight=0.25, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.25 PerfScore 0.62
-G_M37807_IG22: ; bbWeight=1.46, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ;; size=8 bbWeight=0.25 PerfScore 0.37
+G_M37807_IG22: ; bbWeight=1.46, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x27
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -338,41 +339,45 @@ G_M37807_IG22: ; bbWeight=1.46, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x27]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.46 PerfScore 15.36
+ ;; size=48 bbWeight=1.46 PerfScore 16.09
G_M37807_IG23: ; bbWeight=1.59, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w24, w24, #1
cmp w22, w24
bgt G_M37807_IG16
- ;; size=28 bbWeight=1.59 PerfScore 7.15
+ ;; size=20 bbWeight=1.59 PerfScore 5.56
G_M37807_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x28]
- b G_M37807_IG26
+ b G_M37807_IG27
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG25: ; bbWeight=0.25, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
- ; gcrRegs +[x21 x23]
+G_M37807_IG25: ; bbWeight=0.73, gcVars=0000000000000010 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, gcvars, byref
+ ; gcrRegs +[x2 x21 x23]
; byrRegs +[x28]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ; GC ptr vars +{V04 V12}
+ b G_M37807_IG22
+ ;; size=4 bbWeight=0.73 PerfScore 0.73
+G_M37807_IG26: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, gcvars, byref
+ ; gcrRegs -[x2]
+ ; GC ptr vars -{V04 V12}
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
b G_M37807_IG23
...
@@ -9,52 +9,53 @@
; 4 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x21 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x21 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T01] ( 6, 6 ) byref -> x20 single-def
-; V02 arg1 [V02,T08] ( 14, 3.76) ref -> x23 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T09] ( 14, 3.76) ref -> x23 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T00] ( 6, 6.09) int -> x19
-; V04 arg3 [V04,T06] ( 4, 3.96) ref -> x22 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T12] ( 3, 2.50) ubyte -> x24 single-def
-; V06 loc0 [V06,T20] ( 3, 2.46) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T25] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T17] ( 7, 3.26) int -> x27 ld-addr-op
-; V09 loc3 [V09,T19] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.96) ref -> x22 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T13] ( 3, 2.50) ubyte -> x24 single-def
+; V06 loc0 [V06,T21] ( 3, 2.46) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T26] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T18] ( 7, 3.26) int -> x27 ld-addr-op
+; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.46) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.36) int -> x24
-; V12 loc6 [V12,T03] ( 7, 6.12) ref -> x28 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T04] ( 7, 6.12) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T13] ( 5, 4.46) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T09] ( 5, 5 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V20 tmp7 [V20,T14] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T14] ( 5, 4.46) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T10] ( 5, 5 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V20 tmp7 [V20,T15] ( 2, 4 ) ref -> x0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V24 tmp11 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V25 tmp12 [V25,T07] ( 4, 5.84) byref -> x21 single-def "Inlining Arg"
+; V25 tmp12 [V25,T08] ( 4, 5.84) byref -> x21 single-def "Inlining Arg"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V27 tmp14 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V28 tmp15 [V28,T04] ( 14, 6.61) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
-; V29 tmp16 [V29,T16] ( 4, 3.68) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp15 [V28,T05] ( 14, 6.61) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp16 [V29,T17] ( 4, 3.68) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T22] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V32 tmp19 [V32,T23] ( 2, 2 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V33 tmp20 [V33,T24] ( 4, 1.76) ref -> x0
-; V34 tmp21 [V34,T28] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V35 tmp22 [V35,T27] ( 4, 0 ) ref -> x0
-; V36 tmp23 [V36,T15] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V31 tmp18 [V31,T23] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
+; V32 tmp19 [V32,T24] ( 2, 2 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V33 tmp20 [V33,T25] ( 4, 1.76) ref -> x0
+; V34 tmp21 [V34,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V35 tmp22 [V35,T28] ( 4, 0 ) ref -> x0
+; V36 tmp23 [V36,T16] ( 2, 4 ) int -> x1 "Inlining Arg"
; V37 tmp24 [V37 ] ( 3, 3.46) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V38 tmp25 [V38 ] ( 3, 3.46) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V39 tmp26 [V39 ] ( 3, 3.46) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V40 tmp27 [V40 ] ( 3, 3.46) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V41 tmp28 [V41,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V42 cse0 [V42,T10] ( 3, 4.77) int -> x0 "CSE - moderate"
-; V43 cse1 [V43,T18] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V44 cse2 [V44,T11] ( 4, 4.59) int -> x21 "CSE - aggressive"
-; V45 cse3 [V45,T21] ( 2, 2.20) byref -> x27 hoist "CSE - moderate"
+;* V41 tmp28 [V41,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V42 cse0 [V42,T11] ( 3, 4.77) int -> x0 "CSE - moderate"
+; V43 cse1 [V43,T19] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V44 cse2 [V44,T03] ( 10, 6.65) long -> x28 hoist multi-def "CSE - aggressive"
+; V45 cse3 [V45,T12] ( 4, 4.59) int -> x21 "CSE - moderate"
+; V46 cse4 [V46,T22] ( 2, 2.20) byref -> x27 hoist "CSE - moderate"
;
; Lcl frame size = 32
@@ -217,7 +218,7 @@ G_M37807_IG12: ; bbWeight=0.46, gcrefRegs=1C00000 {x22 x23 x24}, byrefReg
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x24]
; byrRegs -[x14]
- cbz x21, G_M37807_IG36
+ cbz x21, G_M37807_IG37
mov x0, x21
; byrRegs +[x0]
mov x1, x28
@@ -276,7 +277,7 @@ G_M37807_IG16: ; bbWeight=0.50, gcrefRegs=10C00000 {x22 x23 x28}, byrefRe
; byrRegs +[x0]
ldaprb w0, [x0]
; byrRegs -[x0]
- cbz w0, G_M37807_IG27
+ cbz w0, G_M37807_IG28
b G_M37807_IG25
;; size=44 bbWeight=0.50 PerfScore 6.00
G_M37807_IG17: ; bbWeight=0.50, gcrefRegs=10C00000 {x22 x23 x28}, byrefRegs=100000 {x20}, byref, isz
@@ -321,27 +322,34 @@ G_M37807_IG19: ; bbWeight=1, gcrefRegs=C00001 {x0 x22 x23}, byrefRegs=100
stp wzr, w1, [fp, #0x28] // [V39 tmp26], [V40 tmp27]
mov w24, wzr
cmp w21, #0
- ble G_M37807_IG34
+ ble G_M37807_IG35
;; size=32 bbWeight=1 PerfScore 8.00
G_M37807_IG20: ; bbWeight=0.61, gcrefRegs=C00001 {x0 x22 x23}, byrefRegs=100000 {x20}, byref
add x27, x0, #16
; byrRegs +[x27]
- ;; size=4 bbWeight=0.61 PerfScore 0.31
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #0xD1FFAB1E LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.23
G_M37807_IG21: ; bbWeight=1.59, gcrefRegs=C00000 {x22 x23}, byrefRegs=8100000 {x20 x27}, byref, isz
; gcrRegs -[x0]
- ldr x28, [x27, w24, UXTW #3]
- ; gcrRegs +[x28]
- ldr w0, [x28, #0x58]
+ ldr x2, [x27, w24, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w19, w0
cmp w1, w0
- bne G_M37807_IG31
- ;; size=20 bbWeight=1.59 PerfScore 12.71
-G_M37807_IG22: ; bbWeight=1.46, gcrefRegs=10C00000 {x22 x23 x28}, byrefRegs=8100000 {x20 x27}, byref, isz
+ bne G_M37807_IG32
+ ;; size=24 bbWeight=1.59 PerfScore 14.30
+G_M37807_IG22: ; bbWeight=1.46, gcVars=0000000000000010 {V12}, gcrefRegs=C00004 {x2 x22 x23}, byrefRegs=8100000 {x20 x27}, gcvars, byref, isz
cbz w25, G_M37807_IG26
- b G_M37807_IG37
+ b G_M37807_IG38
;; size=8 bbWeight=1.46 PerfScore 2.93
-G_M37807_IG23: ; bbWeight=0, gcrefRegs=10C00000 {x22 x23 x28}, byrefRegs=100000 {x20}, byref
+G_M37807_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=10C00000 {x22 x23 x28}, byrefRegs=100000 {x20}, gcvars, byref
+ ; gcrRegs -[x2] +[x28]
; byrRegs -[x27]
+ ; GC ptr vars -{V12}
mov x0, x28
; gcrRegs +[x0]
mov x1, x23
@@ -365,14 +373,20 @@ G_M37807_IG25: ; bbWeight=0.24, gcrefRegs=10C00000 {x22 x23 x28}, byrefRe
; gcrRegs +[x0]
b G_M37807_IG19
;; size=8 bbWeight=0.24 PerfScore 0.94
-G_M37807_IG26: ; bbWeight=1.46, gcrefRegs=10C00000 {x22 x23 x28}, byrefRegs=8100000 {x20 x27}, byref, isz
- ; gcrRegs -[x0]
+G_M37807_IG26: ; bbWeight=1.46, gcVars=0000000000000010 {V12}, gcrefRegs=C00004 {x2 x22 x23}, byrefRegs=8100000 {x20 x27}, gcvars, byref, isz
+ ; gcrRegs -[x0 x28] +[x2]
; byrRegs +[x27]
- cbz x22, G_M37807_IG30
- b G_M37807_IG28
+ ; GC ptr vars +{V04 V12}
+ cbz x22, G_M37807_IG27
+ b G_M37807_IG29
;; size=8 bbWeight=1.46 PerfScore 2.93
-G_M37807_IG27: ; bbWeight=0.26, gcrefRegs=10C00000 {x22 x23 x28}, byrefRegs=100000 {x20}, byref
+G_M37807_IG27: ; bbWeight=0.73, gcrefRegs=C00004 {x2 x22 x23}, byrefRegs=8100000 {x20 x27}, byref
+ b G_M37807_IG31
+ ;; size=4 bbWeight=0.73 PerfScore 0.73
+G_M37807_IG28: ; bbWeight=0.26, gcVars=0000000000000000 {}, gcrefRegs=10C00000 {x22 x23 x28}, byrefRegs=100000 {x20}, gcvars, byref
+ ; gcrRegs -[x2] +[x28]
; byrRegs -[x27]
+ ; GC ptr vars -{V04 V12}
mov x0, x28
; gcrRegs +[x0]
mov w2, w27
@@ -387,20 +401,19 @@ G_M37807_IG27: ; bbWeight=0.26, gcrefRegs=10C00000 {x22 x23 x28}, byrefRe
; gcr arg pop 0
b G_M37807_IG19
;; size=40 bbWeight=0.26 PerfScore 2.25
-G_M37807_IG28: ; bbWeight=0.49, gcrefRegs=10C00000 {x22 x23 x28}, byrefRegs=8100000 {x20 x27}, byref, isz
- ; gcrRegs -[x0] +[x28]
+G_M37807_IG29: ; bbWeight=0.49, gcVars=0000000000000010 {V12}, gcrefRegs=C00004 {x2 x22 x23}, byrefRegs=8100000 {x20 x27}, gcvars, byref, isz
+ ; gcrRegs -[x0] +[x2]
; byrRegs +[x27]
- mov x0, x28
+ ; GC ptr vars +{V04 V12}
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ add x1, x28, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x28
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x28]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -409,23 +422,19 @@ G_M37807_IG28: ; bbWeight=0.49, gcrefRegs=10C00000 {x22 x23 x28}, byrefRe
; gcrRegs -[x0]
ldr w1, [x22, #0x08]
cmp w0, w1
- bne G_M37807_IG33
- ;; size=56 bbWeight=0.49 PerfScore 10.37
-G_M37807_IG29: ; bbWeight=0.25, gcrefRegs=10C00000 {x22 x23 x28}, byrefRegs=8100000 {x20 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ bne G_M37807_IG34
+ ;; size=48 bbWeight=0.49 PerfScore 10.62
+G_M37807_IG30: ; bbWeight=0.25, gcrefRegs=C00000 {x22 x23}, byrefRegs=8100000 {x20 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.25 PerfScore 0.62
-G_M37807_IG30: ; bbWeight=1.46, gcrefRegs=10C00000 {x22 x23 x28}, byrefRegs=8100000 {x20 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ;; size=8 bbWeight=0.25 PerfScore 0.37
+G_M37807_IG31: ; bbWeight=1.46, gcrefRegs=C00000 {x22 x23}, byrefRegs=8100000 {x20 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x28
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -434,41 +443,39 @@ G_M37807_IG30: ; bbWeight=1.46, gcrefRegs=10C00000 {x22 x23 x28}, byrefRe
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V04 V12}
blr x3
- ; gcrRegs -[x2 x28]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.46 PerfScore 15.36
-G_M37807_IG31: ; bbWeight=1.59, gcrefRegs=C00000 {x22 x23}, byrefRegs=8100000 {x20 x27}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ;; size=48 bbWeight=1.46 PerfScore 16.09
+G_M37807_IG32: ; bbWeight=1.59, gcrefRegs=C00000 {x22 x23}, byrefRegs=8100000 {x20 x27}, byref, isz
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w24, w24, #1
...
@@ -9,55 +9,56 @@
; 4 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T06] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T01] ( 6, 6 ) byref -> x20 single-def
; V02 arg1 [V02,T03] ( 14, 4.73) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T00] ( 6, 6.59) int -> x19
-; V04 arg3 [V04,T06] ( 4, 3.96) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T09] ( 3, 3 ) ubyte -> x24 single-def
-; V06 loc0 [V06,T21] ( 3, 2.46) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T25] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T23] ( 7, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T07] ( 4, 3.96) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T10] ( 3, 3 ) ubyte -> x24 single-def
+; V06 loc0 [V06,T22] ( 3, 2.46) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T26] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T24] ( 7, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T21] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.46) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T02] ( 5, 7.36) int -> x24
-; V12 loc6 [V12,T04] ( 7, 6.12) ref -> x27 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T05] ( 7, 6.12) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T13] ( 5, 4.11) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T08] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V20 tmp7 [V20,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T14] ( 5, 4.11) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T09] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V20 tmp7 [V20,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V27 tmp14 [V27,T12] ( 4, 4.43) byref -> x22 single-def "Inlining Arg"
+; V27 tmp14 [V27,T13] ( 4, 4.43) byref -> x22 single-def "Inlining Arg"
;* V28 tmp15 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V29 tmp16 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V30 tmp17 [V30,T07] ( 14, 5.16) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T27] ( 4, 0.85) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V30 tmp17 [V30,T08] ( 14, 5.16) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
+; V31 tmp18 [V31,T28] ( 4, 0.85) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V33 tmp20 [V33,T24] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V34 tmp21 [V34,T14] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V35 tmp22 [V35,T16] ( 4, 3.73) ref -> x0
-; V36 tmp23 [V36,T29] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
-; V37 tmp24 [V37,T28] ( 4, 0 ) ref -> x0
-; V38 tmp25 [V38,T15] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V33 tmp20 [V33,T25] ( 5, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
+; V34 tmp21 [V34,T15] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V35 tmp22 [V35,T17] ( 4, 3.73) ref -> x0
+; V36 tmp23 [V36,T30] ( 2, 0 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon>
+; V37 tmp24 [V37,T29] ( 4, 0 ) ref -> x0
+; V38 tmp25 [V38,T16] ( 2, 4 ) int -> x1 "Inlining Arg"
; V39 tmp26 [V39 ] ( 3, 3.46) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V40 tmp27 [V40 ] ( 3, 3.46) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V41 tmp28 [V41 ] ( 3, 3.46) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V42 tmp29 [V42 ] ( 3, 3.46) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V43 tmp30 [V43,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V44 cse0 [V44,T10] ( 3, 4.77) int -> x0 "CSE - moderate"
-; V45 cse1 [V45,T18] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V46 cse2 [V46,T11] ( 4, 4.59) int -> x22 "CSE - aggressive"
-; V47 cse3 [V47,T22] ( 2, 2.20) byref -> x28 hoist "CSE - moderate"
-; V48 cse4 [V48,T17] ( 3, 3 ) ref -> x1 "CSE - moderate"
+;* V43 tmp30 [V43,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V44 cse0 [V44,T11] ( 3, 4.77) int -> x0 "CSE - moderate"
+; V45 cse1 [V45,T19] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V46 cse2 [V46,T04] ( 10, 6.65) long -> x27 hoist multi-def "CSE - aggressive"
+; V47 cse3 [V47,T12] ( 4, 4.59) int -> x22 "CSE - moderate"
+; V48 cse4 [V48,T23] ( 2, 2.20) byref -> x28 hoist "CSE - moderate"
+; V49 cse5 [V49,T18] ( 3, 3 ) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 32
@@ -141,7 +142,7 @@ G_M37807_IG08: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=10
;; size=4 bbWeight=1 PerfScore 0.50
G_M37807_IG09: ; bbWeight=1, gcrefRegs=E00000 {x21 x22 x23}, byrefRegs=100000 {x20}, byref, isz
tst w24, #255
- bne G_M37807_IG33
+ bne G_M37807_IG34
b G_M37807_IG04
;; size=12 bbWeight=1 PerfScore 2.50
G_M37807_IG10: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=100000 {x20}, byref
@@ -202,7 +203,7 @@ G_M37807_IG14: ; bbWeight=0.11, gcrefRegs=1A00000 {x21 x23 x24}, byrefReg
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x24]
; byrRegs -[x14]
- cbz x22, G_M37807_IG34
+ cbz x22, G_M37807_IG35
mov x0, x22
; byrRegs +[x0]
mov x1, x28
@@ -226,8 +227,8 @@ G_M37807_IG15: ; bbWeight=1, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=
;; size=12 bbWeight=1 PerfScore 4.50
G_M37807_IG16: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=100000 {x20}, byref, isz
cmp w27, #2
- beq G_M37807_IG35
- b G_M37807_IG37
+ beq G_M37807_IG36
+ b G_M37807_IG38
;; size=12 bbWeight=0 PerfScore 0.00
G_M37807_IG17: ; bbWeight=1, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=100000 {x20}, byref, isz
add x0, x28, #32
@@ -271,30 +272,36 @@ G_M37807_IG19: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100
stp wzr, w1, [fp, #0x28] // [V41 tmp28], [V42 tmp29]
mov w24, wzr
cmp w22, #0
- ble G_M37807_IG31
+ ble G_M37807_IG32
;; size=32 bbWeight=1 PerfScore 8.00
G_M37807_IG20: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=100000 {x20}, byref
add x28, x0, #16
; byrRegs +[x28]
- ;; size=4 bbWeight=0.61 PerfScore 0.31
+ movz x27, #0xD1FFAB1E
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #0xD1FFAB1E LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.23
G_M37807_IG21: ; bbWeight=1.59, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
; gcrRegs -[x0]
- ldr x27, [x28, w24, UXTW #3]
- ; gcrRegs +[x27]
- ldr w0, [x27, #0x58]
+ ldr x2, [x28, w24, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w19, w0
cmp w1, w0
bne G_M37807_IG28
- ;; size=20 bbWeight=1.59 PerfScore 12.71
-G_M37807_IG22: ; bbWeight=1.46, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
+ ;; size=24 bbWeight=1.59 PerfScore 14.30
+G_M37807_IG22: ; bbWeight=1.46, gcVars=0000000000000020 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, gcvars, byref, isz
cbz w25, G_M37807_IG24
;; size=4 bbWeight=1.46 PerfScore 1.46
-G_M37807_IG23: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG23: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -302,28 +309,26 @@ G_M37807_IG23: ; bbWeight=0, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=1
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG39
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ cbz w0, G_M37807_IG40
+ mov x0, x27
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG24: ; bbWeight=1.46, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- cbz x23, G_M37807_IG27
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG24: ; bbWeight=1.46, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ cbz x23, G_M37807_IG30
;; size=4 bbWeight=1.46 PerfScore 1.46
-G_M37807_IG25: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref, isz
- mov x0, x27
+G_M37807_IG25: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ add x1, x27, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x27
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x27]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -332,23 +337,19 @@ G_M37807_IG25: ; bbWeight=0.49, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG30
- ;; size=56 bbWeight=0.49 PerfScore 10.37
-G_M37807_IG26: ; bbWeight=0.25, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ bne G_M37807_IG31
+ ;; size=48 bbWeight=0.49 PerfScore 10.62
+G_M37807_IG26: ; bbWeight=0.25, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.25 PerfScore 0.62
-G_M37807_IG27: ; bbWeight=1.46, gcrefRegs=8A00000 {x21 x23 x27}, byrefRegs=10100000 {x20 x28}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ;; size=8 bbWeight=0.25 PerfScore 0.37
+G_M37807_IG27: ; bbWeight=1.46, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x27
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -357,41 +358,45 @@ G_M37807_IG27: ; bbWeight=1.46, gcrefRegs=8A00000 {x21 x23 x27}, byrefReg
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x27]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.46 PerfScore 15.36
+ ;; size=48 bbWeight=1.46 PerfScore 16.09
G_M37807_IG28: ; bbWeight=1.59, gcrefRegs=A00000 {x21 x23}, byrefRegs=10100000 {x20 x28}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ add x0, x27, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
...
@@ -10,27 +10,27 @@
;
; V00 this [V00,T16] ( 11, 32.50) ref -> [fp+0x28] this class-hnd EH-live single-def <System.Buffers.SharedArrayPool`1[System.__Canon]>
; V01 loc0 [V01,T18] ( 5, 33.50) int -> x19
-; V02 loc1 [V02,T38] ( 5, 19 ) int -> x20
+; V02 loc1 [V02,T37] ( 5, 19 ) int -> x20
; V03 loc2 [V03,T28] ( 7, 27 ) ref -> x21 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T52] ( 4, 10 ) ref -> x22 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T37] ( 6, 19 ) int -> x23
-; V06 loc5 [V06,T46] ( 8, 10.50) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T51] ( 4, 10 ) ref -> x22 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T36] ( 6, 19 ) int -> x23
+; V06 loc5 [V06,T45] ( 8, 10.50) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T47] ( 8, 10.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T46] ( 8, 10.50) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T32] ( 3, 20 ) ref -> x23 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T31] ( 3, 20 ) ref -> x23 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T05] ( 5, 66 ) int -> x19
; V12 loc11 [V12,T02] ( 6, 64 ) ref -> x26 class-hnd <<unknown class>>
-; V13 loc12 [V13,T55] ( 2, 8.50) int -> x23
-; V14 loc13 [V14,T79] ( 3, 1.50) int -> x23
-; V15 loc14 [V15,T48] ( 8, 10.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T54] ( 2, 8.50) int -> x23
+; V14 loc13 [V14,T78] ( 3, 1.50) int -> x23
+; V15 loc14 [V15,T47] ( 8, 10.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T13] ( 5, 36 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T12] ( 6, 44 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> x25
-; V19 loc18 [V19,T30] ( 3, 24 ) int -> x1
+; V19 loc18 [V19,T29] ( 3, 24 ) int -> x28
; V20 loc19 [V20,T09] ( 6, 48 ) ref -> x27 class-hnd <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T33] ( 3, 20 ) ref -> x24 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T32] ( 3, 20 ) ref -> x24 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T14] ( 2, 36 ) int -> x25 "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -42,85 +42,84 @@
; V31 tmp10 [V31,T23] ( 2, 32 ) int -> x27 "impAppendStmt"
; V32 tmp11 [V32,T24] ( 2, 32 ) int -> x26 "impAppendStmt"
;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V34 tmp13 [V34,T67] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
+; V34 tmp13 [V34,T66] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V36 tmp15 [V36 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V38 tmp17 [V38,T68] ( 3, 3 ) ref -> x20 single-def "handle histogram profile tmp"
+; V38 tmp17 [V38,T67] ( 3, 3 ) ref -> x20 single-def "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V42 tmp21 [V42 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V43 tmp22 [V43,T69] ( 3, 3 ) ref -> x24 single-def "handle histogram profile tmp"
+; V43 tmp22 [V43,T68] ( 3, 3 ) ref -> x24 single-def "handle histogram profile tmp"
;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V48 tmp27 [V48,T34] ( 3, 20 ) int -> x26 "Inline stloc first use temp"
+; V48 tmp27 [V48,T33] ( 3, 20 ) int -> x26 "Inline stloc first use temp"
;* V49 tmp28 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp29 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V51 tmp30 [V51,T63] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V51 tmp30 [V51,T62] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V52 tmp31 [V52,T06] ( 5, 66 ) int -> x24 "Inline stloc first use temp"
; V53 tmp32 [V53,T25] ( 2, 32 ) int -> x4 "Inlining Arg"
; V54 tmp33 [V54,T26] ( 2, 32 ) int -> x4 "Inlining Arg"
-; V55 tmp34 [V55,T64] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T76] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T65] ( 2, 4 ) ref -> x23 "field V09.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T77] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
-; V59 tmp38 [V59,T66] ( 2, 4 ) ref -> x24 "field V16.key (fldOffset=0x0)" P-INDEP
-; V60 tmp39 [V60,T78] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T63] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T75] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T64] ( 2, 4 ) ref -> x23 "field V09.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T76] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
+; V59 tmp38 [V59,T65] ( 2, 4 ) ref -> x24 "field V16.key (fldOffset=0x0)" P-INDEP
+; V60 tmp39 [V60,T77] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V29.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V29.value (fldOffset=0x8)" P-DEP
;* V65 tmp44 [V65 ] ( 0, 0 ) ref -> zero-ref "field V33.key (fldOffset=0x0)" P-DEP
;* V66 tmp45 [V66 ] ( 0, 0 ) ref -> zero-ref "field V33.value (fldOffset=0x8)" P-DEP
-; V67 tmp46 [V67,T70] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V68 tmp47 [V68,T40] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V69 tmp48 [V69,T60] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V67 tmp46 [V67,T69] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V68 tmp47 [V68,T39] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V69 tmp48 [V69,T59] ( 2, 8 ) ref -> x0 "argument with side effect"
; V70 tmp49 [V70,T27] ( 2, 32 ) long -> x28 "argument with side effect"
; V71 tmp50 [V71,T20] ( 2, 32 ) ref -> x1 "argument with side effect"
-;* V72 tmp51 [V72,T43] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V73 tmp52 [V73,T81] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V74 tmp53 [V74,T71] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V75 tmp54 [V75,T72] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V76 tmp55 [V76,T41] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V77 tmp56 [V77,T61] ( 2, 8 ) ref -> x0 "argument with side effect"
+;* V72 tmp51 [V72,T42] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V73 tmp52 [V73,T80] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V74 tmp53 [V74,T70] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V75 tmp54 [V75,T71] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V76 tmp55 [V76,T40] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V77 tmp56 [V77,T60] ( 2, 8 ) ref -> x0 "argument with side effect"
; V78 tmp57 [V78,T08] ( 2, 64 ) long -> x1 "argument with side effect"
; V79 tmp58 [V79,T07] ( 2, 64 ) ref -> x2 "argument with side effect"
-;* V80 tmp59 [V80,T44] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V81 tmp60 [V81,T82] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V82 tmp61 [V82,T73] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V83 tmp62 [V83,T74] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V84 tmp63 [V84,T42] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V85 tmp64 [V85,T62] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V86 tmp65 [V86,T83] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V87 tmp66 [V87,T75] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V88 PSPSym [V88,T80] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
+;* V80 tmp59 [V80,T43] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V81 tmp60 [V81,T81] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V82 tmp61 [V82,T72] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V83 tmp62 [V83,T73] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V84 tmp63 [V84,T41] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V85 tmp64 [V85,T61] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V86 tmp65 [V86,T82] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V87 tmp66 [V87,T74] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V88 PSPSym [V88,T79] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
; V89 cse0 [V89,T17] ( 4, 34 ) long -> registers hoist multi-def "CSE - aggressive"
-; V90 cse1 [V90,T56] ( 4, 8 ) ref -> x22 multi-def "CSE - moderate"
-; V91 cse2 [V91,T49] ( 6, 10.50) ref -> x22 multi-def "CSE - moderate"
-; V92 cse3 [V92,T57] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
-; V93 cse4 [V93,T50] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
-; V94 cse5 [V94,T58] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
-; V95 cse6 [V95,T51] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
-; V96 cse7 [V96,T29] ( 3, 24 ) byref -> x28 "CSE - moderate"
-; V97 cse8 [V97,T10] ( 4, 48 ) long -> x27 "CSE - aggressive"
-; V98 cse9 [V98,T01] ( 22,126.50) long -> x22 hoist multi-def "CSE - aggressive"
-; V99 cse10 [V99,T03] ( 3, 68 ) int -> x26 "CSE - aggressive"
-; V100 cse11 [V100,T04] ( 40, 67.50) long -> registers multi-def "CSE - aggressive"
-; V101 cse12 [V101,T31] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
-; V102 cse13 [V102,T39] ( 2, 18 ) byref -> x28 hoist "CSE - moderate"
-; V103 cse14 [V103,T35] ( 3, 20 ) int -> x27 "CSE - moderate"
-; V104 cse15 [V104,T36] ( 3, 20 ) int -> x22 "CSE - moderate"
-; V105 rat0 [V105,T53] ( 3, 9.44) long -> x1 "Spilling to split statement for tree"
-; V106 rat1 [V106,T59] ( 3, 8 ) long -> x24 "runtime lookup"
-; V107 rat2 [V107,T45] ( 3, 11.20) long -> x2 "spilling expr"
-; V108 rat3 [V108,T54] ( 3, 8.96) long -> x24 "fgMakeTemp is creating a new local variable"
-; V109 rat4 [V109,T12] ( 3, 37.76) long -> x1 "Spilling to split statement for tree"
-; V110 rat5 [V110,T19] ( 3, 32 ) long -> registers "runtime lookup"
-; V111 rat6 [V111,T11] ( 3, 44.80) long -> x2 "spilling expr"
-; V112 rat7 [V112,T15] ( 3, 35.84) long -> x2 "fgMakeTemp is creating a new local variable"
+; V90 cse1 [V90,T55] ( 4, 8 ) ref -> x22 multi-def "CSE - moderate"
+; V91 cse2 [V91,T48] ( 6, 10.50) ref -> x22 multi-def "CSE - moderate"
+; V92 cse3 [V92,T56] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
+; V93 cse4 [V93,T49] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
+; V94 cse5 [V94,T57] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
+; V95 cse6 [V95,T50] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
+; V96 cse7 [V96,T10] ( 5, 56 ) long -> x27 "CSE - aggressive"
+; V97 cse8 [V97,T01] ( 22,126.50) long -> x22 hoist multi-def "CSE - aggressive"
+; V98 cse9 [V98,T03] ( 3, 68 ) int -> x26 "CSE - aggressive"
+; V99 cse10 [V99,T04] ( 40, 67.50) long -> registers multi-def "CSE - aggressive"
+; V100 cse11 [V100,T30] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
+; V101 cse12 [V101,T38] ( 2, 18 ) byref -> x28 hoist "CSE - moderate"
+; V102 cse13 [V102,T34] ( 3, 20 ) int -> x27 "CSE - moderate"
+; V103 cse14 [V103,T35] ( 3, 20 ) int -> x22 "CSE - moderate"
+; V104 rat0 [V104,T52] ( 3, 9.44) long -> x1 "Spilling to split statement for tree"
+; V105 rat1 [V105,T58] ( 3, 8 ) long -> x24 "runtime lookup"
+; V106 rat2 [V106,T44] ( 3, 11.20) long -> x2 "spilling expr"
+; V107 rat3 [V107,T53] ( 3, 8.96) long -> x24 "fgMakeTemp is creating a new local variable"
+; V108 rat4 [V108,T13] ( 3, 37.76) long -> x1 "Spilling to split statement for tree"
+; V109 rat5 [V109,T19] ( 3, 32 ) long -> registers "runtime lookup"
+; V110 rat6 [V110,T11] ( 3, 44.80) long -> x2 "spilling expr"
+; V111 rat7 [V111,T15] ( 3, 35.84) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
@@ -301,7 +300,7 @@ G_M16529_IG11: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}
str x0, [fp, #0x20] // [V06 loc5]
; GC ptr vars +{V06}
;; size=72 bbWeight=0.50 PerfScore 10.00
-G_M16529_IG12: ; bbWeight=0.50, gcVars=00000000000000000000400000010000 {V00 V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG12: ; bbWeight=0.50, gcVars=00000000000000000000200000010000 {V00 V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
b G_M16529_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M16529_IG13: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
@@ -403,7 +402,7 @@ G_M16529_IG16: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}
str x0, [fp, #0x18] // [V08 loc7]
; GC ptr vars +{V08}
;; size=64 bbWeight=0.50 PerfScore 8.00
-G_M16529_IG17: ; bbWeight=0.50, gcVars=00000000000000000000800000010000 {V00 V08}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG17: ; bbWeight=0.50, gcVars=00000000000000000000400000010000 {V00 V08}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
b G_M16529_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M16529_IG18: ; bbWeight=2, gcrefRegs=A00000 {x21 x23}, byrefRegs=0000 {}, byref, isz
@@ -622,7 +621,7 @@ G_M16529_IG30: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}
str x0, [fp, #0x10] // [V15 loc14]
; GC ptr vars +{V15}
;; size=64 bbWeight=0.50 PerfScore 8.00
-G_M16529_IG31: ; bbWeight=0.50, gcVars=00000000000000000001000000010000 {V00 V15}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG31: ; bbWeight=0.50, gcVars=00000000000000000000800000010000 {V00 V15}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
@@ -660,17 +659,20 @@ G_M16529_IG33: ; bbWeight=16, gcrefRegs=1200000 {x21 x24}, byrefRegs=0000
;; size=16 bbWeight=16 PerfScore 88.00
G_M16529_IG34: ; bbWeight=8, gcrefRegs=1200000 {x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- add x28, x24, x27
- ; byrRegs +[x28]
- ldr w1, [x28, #0x08]
- cbnz w1, G_M16529_IG39
+ add x0, x24, x27
+ ; byrRegs +[x0]
+ ldr w28, [x0, #0x08]
+ cbnz w28, G_M16529_IG39
add x0, x22, #0xD1FFAB1E
+ ; byrRegs -[x0]
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- str w19, [x28, #0x08]
- ;; size=24 bbWeight=8 PerfScore 56.00
+ add x0, x24, x27
+ ; byrRegs +[x0]
+ str w19, [x0, #0x08]
+ ;; size=28 bbWeight=8 PerfScore 60.00
G_M16529_IG35: ; bbWeight=64, gcrefRegs=1200000 {x21 x24}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x28]
+ ; byrRegs -[x0]
add x0, x22, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
@@ -715,7 +717,7 @@ G_M16529_IG38: ; bbWeight=0.50, gcrefRegs=1000000 {x24}, byrefRegs=0000 {
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M16529_IG39: ; bbWeight=8, gcrefRegs=1200000 {x21 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
- sub w0, w19, w1
+ sub w0, w19, w28
sxtw x0, w0
mov w1, w23
cmp x0, x1
@@ -863,7 +865,7 @@ G_M16529_IG49: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x90
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M16529_IG50: ; bbWeight=0, gcVars=00000000000000000000400000010000 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M16529_IG50: ; bbWeight=0, gcVars=00000000000000000000200000010000 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V06}
stp fp, lr, [sp, #-0x70]!
stp x19, x20, [sp, #0x20]
...
@@ -12,13 +12,13 @@
; V00 this [V00,T02] ( 4, 4 ) ref -> x21 this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T01] ( 6, 4.19) ref -> x20 ld-addr-op class-hnd <System.String>
; V02 arg2 [V02,T00] ( 6, 5.42) int -> x19
-; V03 loc0 [V03,T14] ( 3, 2.04) int -> x22 ld-addr-op
-; V04 loc1 [V04,T12] ( 3, 2.42) ref -> x20 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
+; V03 loc0 [V03,T13] ( 3, 2.04) int -> x22 ld-addr-op
+; V04 loc1 [V04,T11] ( 4, 2.71) ref -> x20 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
; V05 loc2 [V05,T10] ( 16, 2.84) ref -> x21 class-hnd <System.Reflection.FieldInfo>
-; V06 loc3 [V06,T15] ( 3, 2 ) ubyte -> x22
+; V06 loc3 [V06,T14] ( 3, 2 ) ubyte -> x22
;* V07 loc4 [V07 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op
-; V08 loc5 [V08,T11] ( 5, 2.67) int -> x23
-; V09 loc6 [V09,T17] ( 12, 1.25) ref -> x25 class-hnd <System.Reflection.RuntimeFieldInfo>
+; V08 loc5 [V08,T12] ( 5, 2.67) int -> x23
+; V09 loc6 [V09,T16] ( 12, 1.25) ref -> x25 class-hnd <System.Reflection.RuntimeFieldInfo>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -48,7 +48,7 @@
;* V36 tmp26 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V37 tmp27 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
; V38 tmp28 [V38,T06] ( 7, 3.91) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V39 tmp29 [V39,T16] ( 4, 1.81) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V39 tmp29 [V39,T15] ( 4, 1.81) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V41 tmp31 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V42 tmp32 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -62,10 +62,10 @@
; V50 tmp40 [V50,T26] ( 2, 0 ) ref -> x1 "argument with side effect"
; V51 tmp41 [V51,T24] ( 3, 0 ) ref -> x0 "argument with side effect"
; V52 tmp42 [V52,T25] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V53 cse0 [V53,T18] ( 3, 1.25) int -> x0 "CSE - moderate"
-; V54 cse1 [V54,T08] ( 3, 3 ) long -> x0 "CSE - aggressive"
-; V55 cse2 [V55,T13] ( 3, 2.42) int -> x24 "CSE - aggressive"
-; V56 cse3 [V56,T07] ( 3, 3 ) ref -> x1 "CSE - moderate"
+; V53 cse0 [V53,T17] ( 3, 1.25) int -> x0 "CSE - moderate"
+; V54 cse1 [V54,T18] ( 2, 0.71) byref -> x24 hoist "CSE - moderate"
+; V55 cse2 [V55,T08] ( 3, 3 ) long -> x0 "CSE - aggressive"
+; V56 cse3 [V56,T07] ( 3, 3 ) ref -> x1 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -203,7 +203,7 @@ G_M40435_IG11: ; bbWeight=0.23, gcrefRegs=900000 {x20 x23}, byrefRegs=200
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x23]
; byrRegs -[x14]
- cbz x21, G_M40435_IG23
+ cbz x21, G_M40435_IG24
mov x0, x21
; byrRegs +[x0]
mov x1, x24
@@ -237,24 +237,25 @@ G_M40435_IG12: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}
eor w19, w19, #2
mov w22, wzr
mov w23, wzr
- ldr w24, [x20, #0x08]
- cmp w24, #0
- ble G_M40435_IG18
- ;; size=68 bbWeight=1 PerfScore 17.00
-G_M40435_IG13: ; bbWeight=0.42, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x20, #0x08]
; gcrRegs -[x0]
- add x0, x20, #16
- ; byrRegs +[x0]
- ldr x25, [x0, w23, UXTW #3]
+ cmp w0, #0
+ ble G_M40435_IG19
+ ;; size=68 bbWeight=1 PerfScore 17.00
+G_M40435_IG13: ; bbWeight=0.29, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+ add x24, x20, #16
+ ; byrRegs +[x24]
+ ;; size=4 bbWeight=0.29 PerfScore 0.15
+G_M40435_IG14: ; bbWeight=0.42, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
+ ldr x25, [x24, w23, UXTW #3]
; gcrRegs +[x25]
ldr w0, [x25, #0x18]
- ; byrRegs -[x0]
and w1, w19, w0
cmp w1, w0
- bne G_M40435_IG17
- cbz x21, G_M40435_IG16
- ;; size=28 bbWeight=0.42 PerfScore 3.97
-G_M40435_IG14: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, byref, isz
+ bne G_M40435_IG18
+ cbz x21, G_M40435_IG17
+ ;; size=24 bbWeight=0.42 PerfScore 3.76
+G_M40435_IG15: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=1000000 {x24}, byref, isz
mov x0, x25
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -287,7 +288,7 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0
blr x1
; gcr arg pop 0
cmp x26, x0
- beq G_M40435_IG28
+ beq G_M40435_IG29
mov x0, x21
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -310,7 +311,7 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M40435_IG27
+ cbz w0, G_M40435_IG28
mov x0, x25
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -334,7 +335,7 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M40435_IG26
+ cbz w0, G_M40435_IG27
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -342,7 +343,7 @@ G_M40435_IG14: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0
; gcr arg pop 0
mov w22, #1
;; size=248 bbWeight=0 PerfScore 0.00
-G_M40435_IG15: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, byref, isz
+G_M40435_IG16: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=1000000 {x24}, byref, isz
mov x0, x25
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -390,7 +391,7 @@ G_M40435_IG15: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0
blr x2
; gcrRegs -[x0-x1 x26]
; gcr arg pop 0
- cbnz w0, G_M40435_IG25
+ cbnz w0, G_M40435_IG26
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -414,7 +415,7 @@ G_M40435_IG15: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M40435_IG24
+ cbz w0, G_M40435_IG25
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -422,7 +423,7 @@ G_M40435_IG15: ; bbWeight=0, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0
; gcrRegs -[x21]
; gcr arg pop 0
;; size=212 bbWeight=0 PerfScore 0.00
-G_M40435_IG16: ; bbWeight=0.42, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref
+G_M40435_IG17: ; bbWeight=0.42, gcrefRegs=2100000 {x20 x25}, byrefRegs=1000000 {x24}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -431,7 +432,7 @@ G_M40435_IG16: ; bbWeight=0.42, gcrefRegs=2100000 {x20 x25}, byrefRegs=00
mov x21, x25
; gcrRegs +[x21]
;; size=20 bbWeight=0.42 PerfScore 1.25
-G_M40435_IG17: ; bbWeight=0.42, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M40435_IG18: ; bbWeight=0.42, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
; gcrRegs -[x25]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -439,14 +440,16 @@ G_M40435_IG17: ; bbWeight=0.42, gcrefRegs=300000 {x20 x21}, byrefRegs=000
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w23, w23, #1
- cmp w24, w23
- bgt G_M40435_IG13
- ;; size=28 bbWeight=0.42 PerfScore 1.88
-G_M40435_IG18: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x20, #0x08]
+ cmp w0, w23
+ bgt G_M40435_IG14
+ ;; size=32 bbWeight=0.42 PerfScore 3.14
+G_M40435_IG19: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20]
- cbz w22, G_M40435_IG21
+ ; byrRegs -[x24]
+ cbz w22, G_M40435_IG22
;; size=4 bbWeight=1 PerfScore 1.00
-G_M40435_IG19: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M40435_IG20: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -470,7 +473,7 @@ G_M40435_IG19: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M40435_IG20
+ cbz w0, G_M40435_IG21
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -484,7 +487,7 @@ G_M40435_IG19: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
; gcr arg pop 0
;; size=96 bbWeight=0 PerfScore 0.00
-G_M40435_IG20: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M40435_IG21: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x21]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -492,7 +495,7 @@ G_M40435_IG20: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M40435_IG21: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M40435_IG22: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -501,7 +504,7 @@ G_M40435_IG21: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
mov x0, x21
; gcrRegs +[x0]
;; size=20 bbWeight=1 PerfScore 3.00
-G_M40435_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M40435_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
@@ -509,7 +512,7 @@ G_M40435_IG22: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
-G_M40435_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M40435_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x21]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowNullReferenceException()
movk x0, #0xD1FFAB1E LSL #16
@@ -519,8 +522,18 @@ G_M40435_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M40435_IG24: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M40435_IG25: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref
; gcrRegs +[x20-x21]
+ ; byrRegs +[x24]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_COUNTPROFILE32
+ ; gcr arg pop 0
+ b G_M40435_IG18
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M40435_IG26: ; bbWeight=0, gcrefRegs=2100000 {x20 x25}, byrefRegs=1000000 {x24}, byref
+ ; gcrRegs -[x21] +[x25]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
...
@@ -10,27 +10,27 @@
;
; V00 this [V00,T23] ( 9, 22.50) ref -> x19 this class-hnd single-def <System.Buffers.SharedArrayPool`1[ushort]>
; V01 loc0 [V01,T14] ( 5, 33.50) int -> x20
-; V02 loc1 [V02,T33] ( 5, 19 ) int -> x21
+; V02 loc1 [V02,T32] ( 5, 19 ) int -> x21
; V03 loc2 [V03,T22] ( 7, 27 ) ref -> x22 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T46] ( 4, 10 ) ref -> x23 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T32] ( 6, 19 ) int -> x24
-; V06 loc5 [V06,T40] ( 8, 10.50) ref -> [fp+0x48] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T45] ( 4, 10 ) ref -> x23 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T31] ( 6, 19 ) int -> x24
+; V06 loc5 [V06,T39] ( 8, 10.50) ref -> [fp+0x40] class-hnd EH-live spill-single-def <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T41] ( 8, 10.50) ref -> [fp+0x40] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T40] ( 8, 10.50) ref -> [fp+0x38] class-hnd EH-live spill-single-def <<unknown class>>
;* V09 loc8 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T27] ( 3, 20 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T26] ( 3, 20 ) ref -> x24 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T06] ( 5, 66 ) int -> x20
; V12 loc11 [V12,T04] ( 6, 64 ) ref -> x25 class-hnd <<unknown class>>
-; V13 loc12 [V13,T47] ( 2, 8.50) int -> x24
-; V14 loc13 [V14,T70] ( 3, 1.50) int -> x24
-; V15 loc14 [V15,T42] ( 8, 10.50) ref -> [fp+0x38] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T46] ( 2, 8.50) int -> x24
+; V14 loc13 [V14,T69] ( 3, 1.50) int -> x24
+; V15 loc14 [V15,T41] ( 8, 10.50) ref -> [fp+0x30] class-hnd EH-live spill-single-def <<unknown class>>
;* V16 loc15 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T12] ( 5, 36 ) ref -> x25 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T12] ( 6, 44 ) ref -> x25 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> x27
-; V19 loc18 [V19,T25] ( 3, 24 ) int -> x3
-; V20 loc19 [V20,T09] ( 6, 48 ) ref -> [fp+0x30] class-hnd spill-single-def <<unknown class>>
+; V19 loc18 [V19,T24] ( 3, 24 ) int -> x2
+; V20 loc19 [V20,T09] ( 6, 48 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>>
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T28] ( 3, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T27] ( 3, 20 ) ref -> x25 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T13] ( 2, 36 ) int -> x26 "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
@@ -40,76 +40,75 @@
; V29 tmp8 [V29,T18] ( 2, 32 ) int -> x27 "impAppendStmt"
; V30 tmp9 [V30,T19] ( 2, 32 ) int -> x25 "impAppendStmt"
;* V31 tmp10 [V31 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V32 tmp11 [V32,T58] ( 3, 3 ) ref -> x19 single-def "handle histogram profile tmp"
+; V32 tmp11 [V32,T57] ( 3, 3 ) ref -> x19 single-def "handle histogram profile tmp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V36 tmp15 [V36,T59] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
+; V36 tmp15 [V36,T58] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
; V38 tmp17 [V38,T03] ( 3, 96 ) ref -> x25 "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V42 tmp21 [V42,T60] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
+; V42 tmp21 [V42,T59] ( 3, 3 ) ref -> x21 single-def "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V44 tmp23 [V44,T11] ( 3, 48 ) ref -> [fp+0x28] spill-single-def "handle histogram profile tmp"
+; V44 tmp23 [V44,T11] ( 3, 48 ) ref -> [fp+0x20] spill-single-def "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V48 tmp27 [V48,T29] ( 3, 20 ) int -> x27 "Inline stloc first use temp"
+; V48 tmp27 [V48,T28] ( 3, 20 ) int -> x27 "Inline stloc first use temp"
;* V49 tmp28 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp29 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V51 tmp30 [V51,T54] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V51 tmp30 [V51,T53] ( 3, 6 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V52 tmp31 [V52,T07] ( 5, 66 ) int -> x25 "Inline stloc first use temp"
; V53 tmp32 [V53,T20] ( 2, 32 ) int -> x4 "Inlining Arg"
; V54 tmp33 [V54,T21] ( 2, 32 ) int -> x4 "Inlining Arg"
-; V55 tmp34 [V55,T55] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
-; V56 tmp35 [V56,T67] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
-; V57 tmp36 [V57,T56] ( 2, 4 ) ref -> x24 "field V09.key (fldOffset=0x0)" P-INDEP
-; V58 tmp37 [V58,T68] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
-; V59 tmp38 [V59,T57] ( 2, 4 ) ref -> x25 "field V16.key (fldOffset=0x0)" P-INDEP
-; V60 tmp39 [V60,T69] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
+; V55 tmp34 [V55,T54] ( 2, 4 ) ref -> x0 "field V07.key (fldOffset=0x0)" P-INDEP
+; V56 tmp35 [V56,T66] ( 1, 2 ) ref -> x1 "field V07.value (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T55] ( 2, 4 ) ref -> x24 "field V09.key (fldOffset=0x0)" P-INDEP
+; V58 tmp37 [V58,T67] ( 1, 2 ) ref -> x1 "field V09.value (fldOffset=0x8)" P-INDEP
+; V59 tmp38 [V59,T56] ( 2, 4 ) ref -> x25 "field V16.key (fldOffset=0x0)" P-INDEP
+; V60 tmp39 [V60,T68] ( 1, 2 ) ref -> x1 "field V16.value (fldOffset=0x8)" P-INDEP
;* V61 tmp40 [V61 ] ( 0, 0 ) ref -> zero-ref "field V25.key (fldOffset=0x0)" P-DEP
;* V62 tmp41 [V62 ] ( 0, 0 ) ref -> zero-ref "field V25.value (fldOffset=0x8)" P-DEP
;* V63 tmp42 [V63 ] ( 0, 0 ) ref -> zero-ref "field V28.key (fldOffset=0x0)" P-DEP
;* V64 tmp43 [V64 ] ( 0, 0 ) ref -> zero-ref "field V28.value (fldOffset=0x8)" P-DEP
;* V65 tmp44 [V65 ] ( 0, 0 ) ref -> zero-ref "field V31.key (fldOffset=0x0)" P-DEP
;* V66 tmp45 [V66 ] ( 0, 0 ) ref -> zero-ref "field V31.value (fldOffset=0x8)" P-DEP
-; V67 tmp46 [V67,T61] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V68 tmp47 [V68,T35] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V69 tmp48 [V69,T51] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V67 tmp46 [V67,T60] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V68 tmp47 [V68,T34] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V69 tmp48 [V69,T50] ( 2, 8 ) ref -> x0 "argument with side effect"
; V70 tmp49 [V70,T15] ( 2, 32 ) ref -> x1 "argument with side effect"
-;* V71 tmp50 [V71,T38] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V72 tmp51 [V72,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V73 tmp52 [V73,T62] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V74 tmp53 [V74,T63] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V75 tmp54 [V75,T36] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V76 tmp55 [V76,T52] ( 2, 8 ) ref -> x0 "argument with side effect"
+;* V71 tmp50 [V71,T37] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V72 tmp51 [V72,T71] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V73 tmp52 [V73,T61] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V74 tmp53 [V74,T62] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V75 tmp54 [V75,T35] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V76 tmp55 [V76,T51] ( 2, 8 ) ref -> x0 "argument with side effect"
; V77 tmp56 [V77,T08] ( 2, 64 ) ref -> x1 "argument with side effect"
-;* V78 tmp57 [V78,T39] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V79 tmp58 [V79,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V80 tmp59 [V80,T64] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V81 tmp60 [V81,T65] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V82 tmp61 [V82,T37] ( 2, 16 ) ref -> x11 "argument with side effect"
-; V83 tmp62 [V83,T53] ( 2, 8 ) ref -> x0 "argument with side effect"
-; V84 tmp63 [V84,T74] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V85 tmp64 [V85,T66] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V86 PSPSym [V86,T71] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
-; V87 cse0 [V87,T48] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
-; V88 cse1 [V88,T43] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
-; V89 cse2 [V89,T49] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
-; V90 cse3 [V90,T44] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
-; V91 cse4 [V91,T50] ( 4, 8 ) ref -> x25 multi-def "CSE - moderate"
-; V92 cse5 [V92,T45] ( 6, 10.50) ref -> x25 multi-def "CSE - moderate"
-; V93 cse6 [V93,T24] ( 3, 24 ) byref -> [fp+0x20] spill-single-def "CSE - moderate"
-; V94 cse7 [V94,T10] ( 4, 48 ) long -> x1 "CSE - aggressive"
-; V95 cse8 [V95,T01] ( 46,117.50) long -> registers multi-def "CSE - aggressive"
+;* V78 tmp57 [V78,T38] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V79 tmp58 [V79,T72] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V80 tmp59 [V80,T63] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V81 tmp60 [V81,T64] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V82 tmp61 [V82,T36] ( 2, 16 ) ref -> x11 "argument with side effect"
+; V83 tmp62 [V83,T52] ( 2, 8 ) ref -> x0 "argument with side effect"
+; V84 tmp63 [V84,T73] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V85 tmp64 [V85,T65] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V86 PSPSym [V86,T70] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
+; V87 cse0 [V87,T47] ( 4, 8 ) ref -> x23 multi-def "CSE - moderate"
+; V88 cse1 [V88,T42] ( 6, 10.50) ref -> x23 multi-def "CSE - moderate"
+; V89 cse2 [V89,T48] ( 4, 8 ) ref -> x24 multi-def "CSE - moderate"
+; V90 cse3 [V90,T43] ( 6, 10.50) ref -> x24 multi-def "CSE - moderate"
+; V91 cse4 [V91,T49] ( 4, 8 ) ref -> x25 multi-def "CSE - moderate"
+; V92 cse5 [V92,T44] ( 6, 10.50) ref -> x25 multi-def "CSE - moderate"
+; V93 cse6 [V93,T10] ( 5, 56 ) long -> [fp+0x48] spill-single-def "CSE - aggressive"
+; V94 cse7 [V94,T01] ( 46,117.50) long -> registers multi-def "CSE - aggressive"
+; V95 cse8 [V95,T02] ( 18,100.50) long -> x23 hoist multi-def "CSE - aggressive"
; V96 cse9 [V96,T05] ( 3, 68 ) int -> x28 "CSE - aggressive"
-; V97 cse10 [V97,T02] ( 18,100.50) long -> x23 hoist multi-def "CSE - aggressive"
-; V98 cse11 [V98,T26] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
-; V99 cse12 [V99,T34] ( 2, 18 ) byref -> [fp+0x18] spill-single-def hoist "CSE - moderate"
-; V100 cse13 [V100,T30] ( 3, 20 ) int -> x28 "CSE - moderate"
-; V101 cse14 [V101,T31] ( 3, 20 ) int -> x23 "CSE - moderate"
+; V97 cse10 [V97,T25] ( 21, 22.50) long -> registers multi-def "CSE - moderate"
+; V98 cse11 [V98,T33] ( 2, 18 ) byref -> [fp+0x18] spill-single-def hoist "CSE - moderate"
+; V99 cse12 [V99,T29] ( 3, 20 ) int -> x28 "CSE - moderate"
+; V100 cse13 [V100,T30] ( 3, 20 ) int -> x23 "CSE - moderate"
;
; Lcl frame size = 80
@@ -221,10 +220,10 @@ G_M16016_IG07: ; bbWeight=2, gcrefRegs=2C80000 {x19 x22 x23 x25}, byrefRe
ble G_M16016_IG09
add x5, x0, #16
; byrRegs +[x5]
- str x5, [fp, #0x18] // [V99 cse12]
- ; GC ptr vars +{V99}
+ str x5, [fp, #0x18] // [V98 cse11]
+ ; GC ptr vars +{V98}
;; size=28 bbWeight=2 PerfScore 19.00
-G_M16016_IG08: ; bbWeight=16, gcVars=00000000000000000000000400000000 {V99}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0020 {x5}, gcvars, byref, isz
+G_M16016_IG08: ; bbWeight=16, gcVars=00000000000000000000000200000000 {V98}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0020 {x5}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x0, [x5, w25, UXTW #3]
; gcrRegs +[x0]
@@ -243,13 +242,13 @@ G_M16016_IG08: ; bbWeight=16, gcVars=00000000000000000000000400000000 {V9
; gcr arg pop 0
add w25, w25, #1
cmp w28, w25
- ldr x5, [fp, #0x18] // [V99 cse12]
+ ldr x5, [fp, #0x18] // [V98 cse11]
; byrRegs +[x5]
bgt G_M16016_IG08
;; size=60 bbWeight=16 PerfScore 280.00
G_M16016_IG09: ; bbWeight=4, gcVars=00000000000000000000000000000000 {}, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x5]
- ; GC ptr vars -{V99}
+ ; GC ptr vars -{V98}
movz x26, #0xD1FFAB1E
movk x26, #0xD1FFAB1E LSL #16
movk x26, #0xD1FFAB1E LSL #32
@@ -289,10 +288,10 @@ G_M16016_IG11: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=000
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x48] // [V06 loc5]
+ str x0, [fp, #0x40] // [V06 loc5]
; GC ptr vars +{V06}
;; size=68 bbWeight=0.50 PerfScore 9.00
-G_M16016_IG12: ; bbWeight=0.50, gcVars=00000000000000000000010000000000 {V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M16016_IG12: ; bbWeight=0.50, gcVars=00000000000000000000008000000000 {V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
b G_M16016_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M16016_IG13: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
@@ -300,7 +299,7 @@ G_M16016_IG13: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b
add x0, x26, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
add x1, x26, #0xD1FFAB1E
bl CORINFO_HELP_CLASSPROFILE32
@@ -321,7 +320,7 @@ G_M16016_IG13: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
;; size=60 bbWeight=2 PerfScore 35.00
G_M16016_IG14: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
@@ -329,7 +328,7 @@ G_M16016_IG14: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
bl CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
mov x23, x0
; gcrRegs +[x23]
@@ -348,7 +347,7 @@ G_M16016_IG15: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=0000 {}
add x0, x26, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V06 loc5]
+ ldr x0, [fp, #0x40] // [V06 loc5]
; gcrRegs +[x0]
add x1, x26, #0xD1FFAB1E
; GC ptr vars -{V06}
@@ -390,15 +389,15 @@ G_M16016_IG16: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=000
ldr x1, [x11]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x40] // [V08 loc7]
+ str x0, [fp, #0x38] // [V08 loc7]
; GC ptr vars +{V08}
;; size=60 bbWeight=0.50 PerfScore 7.00
-G_M16016_IG17: ; bbWeight=4, gcVars=00000000000000000000020000000000 {V08}, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16016_IG17: ; bbWeight=4, gcVars=00000000000000000000010000000000 {V08}, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
...
@@ -9,25 +9,25 @@
; 0 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T23] ( 18, 19 ) ref -> [fp+0x28] this class-hnd EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V00 this [V00,T23] ( 18, 19 ) ref -> [fp+0x30] this class-hnd EH-live single-def <System.Runtime.Caching.ExpiresBucket>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T30] ( 8, 7 ) ubyte -> [fp+0x54] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 12,132 ) ref -> x25 class-hnd <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 68 ) ref -> x25 class-hnd <<unknown class>>
; V05 loc2 [V05,T28] ( 3, 12 ) int -> x0
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> [fp+0x20] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> [fp+0x28] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T15] ( 5, 35 ) int -> [fp+0x50] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T34] ( 2, 5 ) ref -> x19 class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T04] ( 13, 71 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T03] ( 13, 71 ) ref -> [fp+0x20] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 4, 4 ) ubyte -> [fp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T26] ( 4, 13 ) int -> x22
;* V14 loc11 [V14,T36] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
; V15 loc12 [V15,T07] ( 7, 57 ) int -> x23
; V16 loc13 [V16,T08] ( 4, 52 ) int -> x27
; V17 loc14 [V17,T00] ( 6,148 ) int -> x28
-; V18 loc15 [V18,T13] ( 8, 35 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V18 loc15 [V18,T13] ( 8, 35 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V19 loc16 [V19 ] ( 4, 3 ) ubyte -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V21 tmp1 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.Caching.ExpiresEntryRef>
@@ -45,7 +45,7 @@
; V33 tmp13 [V33,T31] ( 6, 6 ) ref -> x19 class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V34 tmp14 [V34,T22] ( 5, 20 ) long -> x19 single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V35 tmp15 [V35,T16] ( 5, 35 ) int -> [fp+0x3C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V36 tmp16 [V36,T05] ( 13, 71 ) int -> x4 "field V09._ref (fldOffset=0x0)" P-INDEP
+; V36 tmp16 [V36,T04] ( 13, 71 ) int -> x4 "field V09._ref (fldOffset=0x0)" P-INDEP
; V37 tmp17 [V37,T19] ( 4, 24 ) int -> x20 "field V10._ref (fldOffset=0x0)" P-INDEP
; V38 tmp18 [V38,T17] ( 2, 32 ) int -> x0 "field V21._ref (fldOffset=0x0)" P-INDEP
; V39 tmp19 [V39,T18] ( 2, 32 ) int -> x0 "field V26._ref (fldOffset=0x0)" P-INDEP
@@ -55,8 +55,8 @@
; V43 tmp23 [V43,T11] ( 3, 48 ) ref -> x1 "arr expr"
; V44 PSPSym [V44,T37] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
; V45 cse0 [V45,T24] ( 3, 18 ) ref -> x21 "CSE - moderate"
-; V46 cse1 [V46,T25] ( 4, 16 ) byref -> x0 "CSE - moderate"
-; V47 cse2 [V47,T02] ( 6,128 ) long -> [fp+0x30] spill-single-def "CSE - aggressive"
+; V46 cse1 [V46,T01] ( 6,128 ) byref -> [fp+0x10] spill-single-def "CSE - aggressive"
+; V47 cse2 [V47,T25] ( 4, 16 ) byref -> x0 "CSE - moderate"
; V48 cse3 [V48,T06] ( 6, 65 ) long -> registers hoist multi-def "CSE - aggressive"
; V49 cse4 [V49,T14] ( 8, 35 ) long -> x24 hoist multi-def "CSE - aggressive"
; V50 cse5 [V50,T35] ( 3, 3 ) long -> x20 "CSE - moderate"
@@ -77,7 +77,7 @@ G_M744_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
stp xzr, xzr, [fp, #0x40] // [V19 loc16], [V12 loc9]
add x3, sp, #176
str x3, [fp, #0x58] // [V44 PSPSym]
- str x0, [fp, #0x28] // [V00 this]
+ str x0, [fp, #0x30] // [V00 this]
; GC ptr vars +{V00}
str w2, [fp, #0x54] // [V02 arg2]
mov x19, x1
@@ -133,7 +133,7 @@ G_M744_IG06: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byr
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
ldr x0, [x1, x0]
; gcrRegs +[x0]
@@ -158,15 +158,15 @@ G_M744_IG06: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byr
G_M744_IG07: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
; byrRegs -[x1]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
mov x0, x1
; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V11 loc8]
+ str x0, [fp, #0x20] // [V11 loc8]
; GC ptr vars +{V11}
str wzr, [fp, #0x48] // [V12 loc9]
;; size=16 bbWeight=1 PerfScore 4.50
-G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG08: ; bbWeight=1, gcVars=0000000000800008 {V00 V11}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x1]
add x1, fp, #72 // [V12 loc9]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -175,7 +175,7 @@ G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=2
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- ldr x0, [fp, #0x18] // [V11 loc8]
+ ldr x0, [fp, #0x20] // [V11 loc8]
; gcrRegs +[x0]
ldr w1, [x0, x20]
cbz w1, G_M744_IG21
@@ -187,7 +187,7 @@ G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=2
; gcrRegs -[x0]
; gcr arg pop 0
cbz w0, G_M744_IG21
- ldr x0, [fp, #0x18] // [V11 loc8]
+ ldr x0, [fp, #0x20] // [V11 loc8]
; gcrRegs +[x0]
mov x1, x19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -199,7 +199,7 @@ G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=2
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x20, [fp, #0x18] // [V11 loc8]
+ ldr x20, [fp, #0x20] // [V11 loc8]
; gcrRegs +[x20]
ldr w22, [x20, x0]
mov w23, wzr
@@ -242,35 +242,38 @@ G_M744_IG10: ; bbWeight=4, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=000
;; size=40 bbWeight=4 PerfScore 44.00
G_M744_IG11: ; bbWeight=32, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, byref, isz
ubfiz x0, x28, #4, #32
- add x2, x0, #16
- str x2, [fp, #0x30] // [V47 cse2]
- add x0, x25, x2
- ; byrRegs +[x0]
- ldr x3, [x0, #0x08]
+ add x0, x0, #16
+ add x2, x25, x0
+ ; byrRegs +[x2]
+ str x2, [fp, #0x10] // [V46 cse1]
+ ; GC ptr vars +{V46}
+ ldr x3, [x2, #0x08]
; gcrRegs +[x3]
- str x3, [fp, #0x20] // [V06 loc3]
+ str x3, [fp, #0x28] // [V06 loc3]
; GC ptr vars +{V06}
cbz x3, G_M744_IG14
;; size=28 bbWeight=32 PerfScore 256.00
-G_M744_IG12: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG12: ; bbWeight=16, gcVars=000000000080000E {V00 V06 V11 V46}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0004 {x2}, gcvars, byref, isz
; gcrRegs -[x3]
- ; byrRegs -[x0]
- ldr x0, [x25, x2]
+ ldr x0, [x2]
mov x1, x19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x4, [x11]
blr x4
+ ; byrRegs -[x2]
; gcr arg pop 0
cbz w0, G_M744_IG19
- ldr x2, [fp, #0x30] // [V47 cse2]
- ldr x1, [x25, x2]
+ ldr x2, [fp, #0x10] // [V46 cse1]
+ ; byrRegs +[x2]
+ ldr x1, [x2]
mov x0, x20
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
- ; GC ptr vars -{V06}
+ ; byrRegs -[x2]
+ ; GC ptr vars -{V06 V46}
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
@@ -318,14 +321,14 @@ G_M744_IG18: ; bbWeight=0, gcVars=0000000000800000 {V00}, gcrefRegs=0000
blr x0
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M744_IG19: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, gcvars, byref
+G_M744_IG19: ; bbWeight=16, gcVars=000000000080000E {V00 V06 V11 V46}, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x20-x21 x25]
- ; GC ptr vars +{V04 V06 V11}
+ ; GC ptr vars +{V02 V06 V11 V46}
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
mov w11, #255
- ldr x1, [fp, #0x20] // [V06 loc3]
+ ldr x1, [fp, #0x28] // [V06 loc3]
; gcrRegs +[x1]
strb w11, [x1, x0]
ldr w0, [x21, #0x08]
@@ -333,15 +336,12 @@ G_M744_IG19: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefR
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x11, [x11]
str w0, [x1, x11]
- ldr x0, [fp, #0x30] // [V47 cse2]
- add x11, x25, x0
+ mov w0, #1
+ ldr x11, [fp, #0x10] // [V46 cse1]
; byrRegs +[x11]
- mov w1, #1
- ; gcrRegs -[x1]
- str w1, [x11, #0x04]
- ldr w11, [fp, #0x3C] // [V35 tmp15]
- ; byrRegs -[x11]
- str w11, [x25, x0]
+ str w0, [x11, #0x04]
+ ldr w0, [fp, #0x3C] // [V35 tmp15]
+ str w0, [x11]
uxtb w0, w28
orr w0, w0, w23, LSL #8
str w0, [fp, #0x3C] // [V35 tmp15]
@@ -350,18 +350,19 @@ G_M744_IG19: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefR
str w0, [fp, #0x50] // [V07 loc4]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x0]
- ldr w0, [x20, x1]
+ ldr x2, [x0]
+ ldr w0, [x20, x2]
add w0, w0, #1
- str w0, [x20, x1]
+ str w0, [x20, x2]
b G_M744_IG13
- ;; size=120 bbWeight=16 PerfScore 608.00
+ ;; size=116 bbWeight=16 PerfScore 600.00
G_M744_IG20: ; bbWeight=1, gcVars=0000000000800000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x20-x21 x25]
- ; GC ptr vars -{V04 V06 V11}
+ ; gcrRegs -[x1 x20-x21 x25]
+ ; byrRegs -[x11]
+ ; GC ptr vars -{V02 V06 V11 V46}
ldrb w0, [fp, #0x48] // [V12 loc9]
cbz w0, G_M744_IG24
- ldr x0, [fp, #0x28] // [V00 this]
+ ldr x0, [fp, #0x30] // [V00 this]
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -385,7 +386,7 @@ G_M744_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, i
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
ldr x0, [x1, x0]
; gcrRegs +[x0]
@@ -424,7 +425,7 @@ G_M744_IG26: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
- ldr x1, [fp, #0x28] // [V00 this]
+ ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
ldr x0, [x1, x0]
; gcrRegs +[x0]
...
@@ -4,46 +4,45 @@
; ReadyToRun compilation
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T05] ( 4, 4 ) struct (16) [fp+0x38] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T00] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 4, 4 ) struct (16) [fp+0x38] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T01] ( 9, 12 ) int -> x22
+; V03 loc1 [V03,T06] ( 9, 4.75) int -> x22
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-; V07 tmp2 [V07 ] ( 4, 8 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
+; V07 tmp2 [V07 ] ( 4, 8 ) struct (16) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
; V08 tmp3 [V08 ] ( 3, 6 ) struct (16) [fp+0x18] do-not-enreg[SFAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Decimal>
-; V09 tmp4 [V09,T09] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T08] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T10] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T11] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T14] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T15] ( 2, 2 ) int -> x0 "impAppendStmt"
+; V13 tmp8 [V13,T16] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T09] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T10] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x0 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x11
-; V24 tmp19 [V24,T03] ( 9, 9 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp20 [V25,T04] ( 7, 8 ) int -> x21 "field V02._length (fldOffset=0x8)" P-INDEP
+; V23 tmp18 [V23,T17] ( 2, 1 ) int -> x11
+; V24 tmp19 [V24,T01] ( 11, 6.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp20 [V25,T07] ( 5, 3.50) int -> x21 "field V02._length (fldOffset=0x8)" P-INDEP
;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
; V28 tmp23 [V28 ] ( 3, 5 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed ptr "field V07._reference (fldOffset=0x0)" P-DEP
; V29 tmp24 [V29 ] ( 3, 5 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed ptr "field V07._length (fldOffset=0x8)" P-DEP
-; V30 tmp25 [V30,T06] ( 3, 6 ) int -> [fp+0x18] do-not-enreg[] "field V08._flags (fldOffset=0x0)" P-DEP
-; V31 tmp26 [V31,T07] ( 3, 6 ) int -> [fp+0x1C] do-not-enreg[] "field V08._hi32 (fldOffset=0x4)" P-DEP
-; V32 tmp27 [V32,T08] ( 3, 6 ) long -> [fp+0x20] do-not-enreg[] "field V08._lo64 (fldOffset=0x8)" P-DEP
+; V30 tmp25 [V30,T03] ( 3, 6 ) int -> [fp+0x18] do-not-enreg[] "field V08._flags (fldOffset=0x0)" P-DEP
+; V31 tmp26 [V31,T04] ( 3, 6 ) int -> [fp+0x1C] do-not-enreg[] "field V08._hi32 (fldOffset=0x4)" P-DEP
+; V32 tmp27 [V32,T05] ( 3, 6 ) long -> [fp+0x20] do-not-enreg[] "field V08._lo64 (fldOffset=0x8)" P-DEP
; V33 GsCookie [V33 ] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V34 cse0 [V34,T16] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V35 cse1 [V35,T00] ( 4, 14 ) int -> x11 "CSE - aggressive"
+; V34 cse0 [V34,T15] ( 3, 1.50) int -> x0 "CSE - moderate"
;
; Lcl frame size = 80
@@ -52,7 +51,6 @@ G_M46478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x60]
stp x21, x22, [sp, #0x70]
mov fp, sp
- str xzr, [fp, #0x28] // [V07 tmp2]
adrp x3, [HIGH RELOC #0xD1FFAB1E] // [SetGlobalSecurityCookie]
add x3, x3, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x3]
@@ -60,7 +58,7 @@ G_M46478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x1, x2, [fp, #0x38] // [V01 arg1], [V01 arg1+0x08]
mov x19, x0
; byrRegs +[x19]
- ;; size=44 bbWeight=1 PerfScore 11.00
+ ;; size=40 bbWeight=1 PerfScore 10.00
G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
stp xzr, xzr, [fp, #0x28]
add x0, fp, #40 // [V07 tmp2]
@@ -70,7 +68,6 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
mov w2, #4
ldr x3, [x11]
blr x3
- ; gcr arg pop 0
ldr x20, [fp, #0x28] // [V28 tmp23]
; byrRegs +[x20]
ldr w21, [fp, #0x30] // [V29 tmp24]
@@ -79,7 +76,6 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
blr x2
- ; gcr arg pop 0
stp x0, x1, [fp, #0x18] // [V08 tmp3], [V08 tmp3+0x08]
mov x2, x20
; byrRegs +[x2]
@@ -90,33 +86,51 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
ldr x4, [x11]
blr x4
; byrRegs -[x2]
- ; gcr arg pop 0
mov w22, #3
b G_M46478_IG04
;; size=100 bbWeight=1 PerfScore 31.00
-G_M46478_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w22, w11
- cmp w22, #0
- ble G_M46478_IG05
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w11, w22, #1
- cmp w11, w21
- bhs G_M46478_IG14
- ldr w0, [x20, w11, UXTW #2]
- cbz w0, G_M46478_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w22, G_M46478_IG08
+G_M46478_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w22, #2
+ b G_M46478_IG07
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cmp w21, #2
+ bls G_M46478_IG20
+ ldr w11, [x20, #0x08]
+ cbz w11, G_M46478_IG03
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M46478_IG05: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG11
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w22, #1
+ b G_M46478_IG10
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w11, [x20, #0x04]
+ cbz w11, G_M46478_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG08: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG11
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w22, wzr
+ b G_M46478_IG11
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w11, [x20]
+ cbz w11, G_M46478_IG09
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w22, G_M46478_IG14
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x11]
blr x0
; byrRegs +[x0]
- ; gcr arg pop 0
ldr x13, [x0, #0x50]
; gcrRegs +[x13]
add x13, x13, #8
@@ -136,31 +150,30 @@ G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr xip0, [xip0]
ldr xip1, [fp, #0x58] // [V33 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG07
+ beq G_M46478_IG13
adrp xip0, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_FAIL_FAST
add xip0, xip0, [LOW RELOC #0xD1FFAB1E]
ldr xip0, [xip0]
blr xip0
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 15.25
-G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x21, x22, [sp, #0x70]
ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x80
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w22, #1
- bne G_M46478_IG10
+ bne G_M46478_IG16
ldr w0, [x20]
cmp w0, #0
- ble G_M46478_IG10
+ ble G_M46478_IG16
str w0, [x19, #0x08]
ldr w0, [x19, #0x08]
cmp w21, #3
- bls G_M46478_IG14
+ bls G_M46478_IG20
ldr w11, [x20, #0x0C]
movn w1, #0
mov w2, #1
@@ -174,21 +187,20 @@ G_M46478_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr xip0, [xip0]
ldr xip1, [fp, #0x58] // [V33 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG09
+ beq G_M46478_IG15
adrp xip0, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_FAIL_FAST
add xip0, xip0, [LOW RELOC #0xD1FFAB1E]
ldr xip0, [xip0]
blr xip0
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=108 bbWeight=0.50 PerfScore 16.50
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x21, x22, [sp, #0x70]
ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x80
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x0, w22
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -196,7 +208,6 @@ G_M46478_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr x1, [x11]
blr x1
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -212,37 +223,33 @@ G_M46478_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG14
+ bls G_M46478_IG20
str w1, [x0, #0x10]
cmp w22, #1
- ble G_M46478_IG11
+ ble G_M46478_IG17
...
@@ -10,72 +10,71 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <ILCompiler.DevirtualizationManager>
; V01 arg1 [V01,T00] ( 21, 26 ) ref -> x19 class-hnd <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T16] ( 14, 8 ) ref -> x20 class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T19] ( 8, 5.50) byref -> x21 single-def
+; V02 arg2 [V02,T17] ( 14, 8 ) ref -> x20 class-hnd single-def <Internal.TypeSystem.DefType>
+; V03 arg3 [V03,T20] ( 8, 5.50) byref -> x21 single-def
; V04 loc0 [V04,T22] ( 11, 5.50) ref -> x23 class-hnd <Internal.TypeSystem.MethodDesc>
-; V05 loc1 [V05,T42] ( 3, 1.50) ref -> x24 class-hnd single-def <Internal.TypeSystem.DefType[]>
+; V05 loc1 [V05,T41] ( 3, 1.50) ref -> x24 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> x23
-; V07 loc3 [V07,T20] ( 5, 7.50) ref -> x25 class-hnd single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> x25 class-hnd single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> x26
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [fp+0x30] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> x28 class-hnd <Internal.TypeSystem.DefType>
; V10 loc6 [V10,T26] ( 6, 4.50) ref -> x24 class-hnd <Internal.TypeSystem.MethodDesc>
-; V11 loc7 [V11,T43] ( 3, 1.50) ref -> x0 class-hnd single-def <Internal.TypeSystem.DefType[]>
+; V11 loc7 [V11,T42] ( 3, 1.50) ref -> x0 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> x25
; V13 loc9 [V13,T05] ( 6, 20 ) ref -> x28 class-hnd <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T48] ( 3, 1.50) int -> x0 single-def
+; V15 loc11 [V15,T47] ( 3, 1.50) int -> x0 single-def
; V16 loc12 [V16,T03] ( 10, 20 ) ref -> x23 class-hnd <Internal.TypeSystem.TypeDesc>
;* V17 loc13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;* V18 loc14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
-; V21 tmp2 [V21,T34] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
-; V22 tmp3 [V22,T49] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
-; V23 tmp4 [V23,T31] ( 5, 3.75) ref -> x25 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V21 tmp2 [V21,T33] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
+; V22 tmp3 [V22,T48] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
+; V23 tmp4 [V23,T30] ( 5, 3.75) ref -> x25 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
; V24 tmp5 [V24,T23] ( 3, 5 ) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V25 tmp6 [V25,T35] ( 3, 2 ) int -> x2 "Inline return value spill temp"
-; V26 tmp7 [V26,T33] ( 3, 2.50) int -> x2 single-def "Inline stloc first use temp"
-; V27 tmp8 [V27,T44] ( 3, 1.50) ref -> x24 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V25 tmp6 [V25,T34] ( 3, 2 ) int -> x2 "Inline return value spill temp"
+; V26 tmp7 [V26,T32] ( 3, 2.50) int -> x2 single-def "Inline stloc first use temp"
+; V27 tmp8 [V27,T43] ( 3, 1.50) ref -> x24 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V29 tmp10 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
-; V30 tmp11 [V30,T17] ( 5, 10 ) ref -> [fp+0x28] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V31 tmp12 [V31,T30] ( 2, 4 ) ref -> x2 class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T18] ( 5, 10 ) ref -> [fp+0x30] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V31 tmp12 [V31,T29] ( 2, 4 ) ref -> x1 class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp14 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V34 tmp15 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp16 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V36 tmp17 [V36,T45] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [fp+0x20] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V36 tmp17 [V36,T44] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V38 tmp19 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V39 tmp20 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V40 tmp21 [V40 ] ( 0, 0 ) int -> zero-ref
; V41 tmp22 [V41,T02] ( 3, 24 ) ref -> x24 class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V42 tmp23 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V43 tmp24 [V43 ] ( 0, 0 ) int -> zero-ref
-; V44 tmp25 [V44,T36] ( 2, 2 ) ref -> x0 single-def "Single return block return value"
+; V44 tmp25 [V44,T35] ( 2, 2 ) ref -> x0 single-def "Single return block return value"
; V45 tmp26 [V45,T09] ( 2, 16 ) ref -> x25 "argument with side effect"
; V46 tmp27 [V46,T10] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V47 tmp28 [V47,T37] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V48 tmp29 [V48,T38] ( 2, 2 ) ref -> x24 single-def "argument with side effect"
-; V49 tmp30 [V49,T39] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V50 tmp31 [V50,T32] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-; V51 tmp32 [V51,T40] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [fp+0x18] spill-single-def "argument with side effect"
+; V47 tmp28 [V47,T36] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V48 tmp29 [V48,T37] ( 2, 2 ) ref -> x24 single-def "argument with side effect"
+; V49 tmp30 [V49,T38] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V50 tmp31 [V50,T31] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V51 tmp32 [V51,T39] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [fp+0x20] spill-single-def "argument with side effect"
; V53 tmp34 [V53,T12] ( 2, 16 ) ref -> x1 "argument with side effect"
;* V54 tmp35 [V54 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V55 tmp36 [V55,T41] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V55 tmp36 [V55,T40] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V56 tmp37 [V56,T13] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [fp+0x10] spill-single-def "argument with side effect"
+; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [fp+0x18] spill-single-def "argument with side effect"
; V58 tmp39 [V58,T15] ( 2, 16 ) ref -> x1 "argument with side effect"
-; V59 tmp40 [V59,T18] ( 2, 8 ) ref -> x1 "argument with side effect"
+; V59 tmp40 [V59,T19] ( 2, 8 ) ref -> x1 "argument with side effect"
; V60 cse0 [V60,T06] ( 10, 18 ) long -> x22 "CSE - aggressive"
-; V61 cse1 [V61,T29] ( 2, 4.50) long -> x28 hoist "CSE - moderate"
-; V62 cse2 [V62,T46] ( 3, 1.50) ref -> x23 "CSE - conservative"
-; V63 cse3 [V63,T47] ( 3, 1.50) ref -> x25 "CSE - conservative"
+; V61 cse1 [V61,T45] ( 3, 1.50) ref -> x23 "CSE - moderate"
+; V62 cse2 [V62,T46] ( 3, 1.50) ref -> x25 "CSE - moderate"
+; V63 cse3 [V63,T24] ( 3, 5 ) int -> x27 "CSE - moderate"
; V64 cse4 [V64,T27] ( 2, 4.50) byref -> x24 hoist "CSE - moderate"
-; V65 cse5 [V65,T24] ( 3, 5 ) int -> x27 "CSE - moderate"
-; V66 cse6 [V66,T28] ( 2, 4.50) byref -> x27 hoist "CSE - moderate"
-; V67 cse7 [V67,T25] ( 3, 5 ) int -> x26 "CSE - moderate"
+; V65 cse5 [V65,T28] ( 2, 4.50) byref -> x27 hoist "CSE - moderate"
+; V66 cse6 [V66,T25] ( 3, 5 ) int -> x26 "CSE - moderate"
;
; Lcl frame size = 48
@@ -215,30 +214,26 @@ G_M48343_IG12: ; bbWeight=0.50, gcrefRegs=3180000 {x19 x20 x24 x25}, byre
add x24, x24, #16
; gcrRegs -[x24]
; byrRegs +[x24]
- ldr xzr, [x25]
- ldr x0, [x25]
- ldr x28, [x0, #0x58]
- ;; size=32 bbWeight=0.50 PerfScore 7.25
+ ;; size=20 bbWeight=0.50 PerfScore 2.75
G_M48343_IG13: ; bbWeight=4, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1200000 {x21 x24}, byref, isz
- ldr x1, [x24, w26, UXTW #3]
- ; gcrRegs +[x1]
- str x1, [fp, #0x30] // [V09 loc5]
- ; GC ptr vars +{V09}
+ ldr x28, [x24, w26, UXTW #3]
+ ; gcrRegs +[x28]
mov x0, x25
; gcrRegs +[x0]
- ldr x2, [x28, #0x20]
- blr x2
- ; gcrRegs -[x1]
- str x0, [fp, #0x18] // [V52 tmp33]
+ ldr x1, [x25]
+ ldr x1, [x1, #0x58]
+ ldr x1, [x1, #0x20]
+ blr x1
+ str x0, [fp, #0x20] // [V52 tmp33]
; GC ptr vars +{V52}
- ldr x0, [fp, #0x30] // [V09 loc5]
- ldr x2, [x0]
+ mov x0, x28
+ ldr x2, [x28]
ldr x2, [x2, #0x58]
ldr x2, [x2, #0x20]
blr x2
mov x1, x0
; gcrRegs +[x1]
- ldr x0, [fp, #0x18] // [V52 tmp33]
+ ldr x0, [fp, #0x20] // [V52 tmp33]
movz x2, #0xD1FFAB1E // code for Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -247,28 +242,26 @@ G_M48343_IG13: ; bbWeight=4, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1
blr x2
; gcrRegs -[x0-x1]
cbz w0, G_M48343_IG16
- ;; size=76 bbWeight=4 PerfScore 122.00
-G_M48343_IG14: ; bbWeight=2, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1200000 {x21 x24}, byref, isz
- ldr x1, [fp, #0x30] // [V09 loc5]
+ ;; size=80 bbWeight=4 PerfScore 136.00
+G_M48343_IG14: ; bbWeight=2, gcrefRegs=12180000 {x19 x20 x25 x28}, byrefRegs=1200000 {x21 x24}, byref, isz
+ ldr x1, [x28, #0x08]
; gcrRegs +[x1]
- ldr x2, [x1, #0x08]
- ; gcrRegs +[x2]
- str x2, [fp, #0x28] // [V30 tmp11]
+ str x1, [fp, #0x30] // [V30 tmp11]
; GC ptr vars +{V30}
mov w0, #1
- movz x3, #0xD1FFAB1E // code for <unknown method>
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x1-x2]
- ldr x2, [fp, #0x28] // [V30 tmp11]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x1]
+ ldr x2, [fp, #0x30] // [V30 tmp11]
; gcrRegs +[x2]
cbnz x2, G_M48343_IG15
- ldr x0, [fp, #0x30] // [V09 loc5]
+ mov x0, x28
; gcrRegs +[x0]
mov w1, wzr
- ldr x2, [x0]
+ ldr x2, [x28]
; gcrRegs -[x2]
ldr x2, [x2, #0x48]
ldr x2, [x2, #0x28]
@@ -276,8 +269,8 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1
blr x2
mov x3, x0
; gcrRegs +[x3]
- ldr x0, [fp, #0x30] // [V09 loc5]
- str x3, [fp, #0x28] // [V30 tmp11]
+ mov x0, x28
+ str x3, [fp, #0x30] // [V30 tmp11]
; GC ptr vars +{V30}
mov x2, x3
; gcrRegs +[x2]
@@ -286,12 +279,11 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=1
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
- ; GC ptr vars -{V09}
blr x4
- ; gcrRegs -[x0 x2-x3]
- ldr x2, [fp, #0x28] // [V30 tmp11]
+ ; gcrRegs -[x0 x2-x3 x28]
+ ldr x2, [fp, #0x30] // [V30 tmp11]
; gcrRegs +[x2]
- ;; size=112 bbWeight=2 PerfScore 79.00
+ ;; size=108 bbWeight=2 PerfScore 69.00
G_M48343_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=2180004 {x2 x19 x20 x25}, byrefRegs=1200000 {x21 x24}, gcvars, byref, isz
; GC ptr vars -{V30}
mov x0, x2
@@ -426,16 +418,16 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
; gcrRegs +[x0]
ldr x1, [x22, #0x18]
blr x1
- str x0, [fp, #0x20] // [V37 tmp18]
+ str x0, [fp, #0x28] // [V37 tmp18]
; GC ptr vars +{V37}
mov x0, x28
ldr x2, [x28]
ldr x2, [x2, #0x58]
ldr x2, [x2, #0x20]
blr x2
- str x0, [fp, #0x10] // [V57 tmp38]
+ str x0, [fp, #0x18] // [V57 tmp38]
; GC ptr vars +{V57}
- ldr x0, [fp, #0x20] // [V37 tmp18]
+ ldr x0, [fp, #0x28] // [V37 tmp18]
ldr x2, [x0]
ldr x2, [x2, #0x58]
ldr x2, [x2, #0x20]
@@ -443,7 +435,7 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
blr x2
mov x1, x0
; gcrRegs +[x1]
- ldr x0, [fp, #0x10] // [V57 tmp38]
+ ldr x0, [fp, #0x18] // [V57 tmp38]
movz x2, #0xD1FFAB1E // code for Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -727,7 +719,7 @@ G_M48343_IG40: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
-; Total bytes of code 1684, prolog size 32, PerfScore 829.50, instruction count 421, allocated bytes for code 1684 (MethodHash=11874328) for method ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
...
@@ -12,14 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T30] ( 8, 7 ) ubyte -> [fp+0x44] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 11,116 ) ref -> x24 class-hnd <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 68 ) ref -> x24 class-hnd <<unknown class>>
; V05 loc2 [V05,T28] ( 3, 12 ) int -> x1
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> x2 class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> x2 class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T14] ( 5, 35 ) int -> [fp+0x40] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T38] ( 2, 5 ) ref -> x20 class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T04] ( 16, 74 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T03] ( 16, 74 ) ref -> [fp+0x18] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 6, 6 ) ubyte -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T26] ( 4, 13 ) int -> x19
;* V14 loc11 [V14,T47] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
@@ -59,7 +59,7 @@
; V48 tmp28 [V48,T32] ( 6, 6 ) ref -> x19 class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V49 tmp29 [V49,T31] ( 5, 5 ) long -> x19 single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V50 tmp30 [V50,T15] ( 5, 35 ) int -> [fp+0x2C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V51 tmp31 [V51,T05] ( 13, 71 ) int -> x1 "field V09._ref (fldOffset=0x0)" P-INDEP
+; V51 tmp31 [V51,T04] ( 13, 71 ) int -> x1 "field V09._ref (fldOffset=0x0)" P-INDEP
; V52 tmp32 [V52,T20] ( 4, 24 ) int -> registers "field V10._ref (fldOffset=0x0)" P-INDEP
; V53 tmp33 [V53,T16] ( 2, 32 ) int -> x0 "field V21._ref (fldOffset=0x0)" P-INDEP
;* V54 tmp34 [V54 ] ( 0, 0 ) long -> zero-ref single-def "field V26._dateData (fldOffset=0x0)" P-INDEP
@@ -77,9 +77,9 @@
; V66 tmp46 [V66,T10] ( 3, 48 ) ref -> x0 "arr expr"
; V67 PSPSym [V67,T50] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
;* V68 cse0 [V68,T51] ( 0, 0 ) long -> zero-ref "CSE - moderate"
-; V69 cse1 [V69,T25] ( 4, 16 ) byref -> x1 "CSE - moderate"
-; V70 cse2 [V70,T11] ( 3, 48 ) long -> x1 "CSE - aggressive"
-; V71 cse3 [V71,T02] ( 5,112 ) long -> x28 "CSE - aggressive"
+; V69 cse1 [V69,T11] ( 3, 48 ) long -> x1 "CSE - aggressive"
+; V70 cse2 [V70,T01] ( 5,112 ) byref -> x28 "CSE - aggressive"
+; V71 cse3 [V71,T25] ( 4, 16 ) byref -> x1 "CSE - moderate"
; V72 cse4 [V72,T45] ( 3, 3 ) ref -> x2 "CSE - moderate"
; V73 cse5 [V73,T46] ( 3, 3 ) ref -> x1 "CSE - moderate"
; V74 cse6 [V74,T12] ( 4, 44 ) int -> x25 "CSE - aggressive"
@@ -215,7 +215,7 @@ G_M744_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; GC ptr vars +{V11}
str wzr, [fp, #0x38] // [V12 loc9]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M744_IG11: ; bbWeight=1, gcVars=0000000000080010 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG11: ; bbWeight=1, gcVars=0000000000080008 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldrb w1, [fp, #0x38] // [V12 loc9]
cbz w1, G_M744_IG14
@@ -235,9 +235,9 @@ G_M744_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M744_IG14: ; bbWeight=1, gcVars=0000000000080010 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG14: ; bbWeight=1, gcVars=0000000000080008 {V00 V11}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x22]
- ; GC ptr vars +{V04 V11}
+ ; GC ptr vars +{V11}
add x1, fp, #56 // [V12 loc9]
mov x0, x22
; gcrRegs +[x0]
@@ -344,16 +344,15 @@ G_M744_IG19: ; bbWeight=4, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}
;; size=40 bbWeight=4 PerfScore 44.00
G_M744_IG20: ; bbWeight=32, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
ubfiz x1, x27, #4, #32
- add x28, x1, #16
- add x1, x24, x28
- ; byrRegs +[x1]
- ldr x2, [x1, #0x08]
+ add x1, x1, #16
+ add x28, x24, x1
+ ; byrRegs +[x28]
+ ldr x2, [x28, #0x08]
; gcrRegs +[x2]
cbz x2, G_M744_IG24
;; size=20 bbWeight=32 PerfScore 192.00
-G_M744_IG21: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x1]
- ldr x1, [x24, x28]
+G_M744_IG21: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=10000000 {x28}, byref, isz
+ ldr x1, [x28]
mov x0, x1
and x0, x0, #0xD1FFAB1E
cmp x0, x20
@@ -367,22 +366,21 @@ G_M744_IG21: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=000
ldr x2, [x2]
blr x2
; gcrRegs -[x0]
+ ; byrRegs -[x28]
; gcr arg pop 0
b G_M744_IG23
;; size=48 bbWeight=16 PerfScore 200.00
-G_M744_IG22: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=0000 {}, byref
+G_M744_IG22: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=10000000 {x28}, byref
; gcrRegs +[x2]
+ ; byrRegs +[x28]
mov w0, #255
strb w0, [x2, #0x30]
ldr w0, [x21]
str w0, [x2, #0x50]
- add x0, x24, x28
- ; byrRegs +[x0]
- mov w1, #1
- str w1, [x0, #0x04]
+ mov w0, #1
+ str w0, [x28, #0x04]
ldr w0, [fp, #0x2C] // [V50 tmp30]
- ; byrRegs -[x0]
- str w0, [x24, x28]
+ str w0, [x28]
uxtb w0, w27
orr w0, w0, w23, LSL #8
str w0, [fp, #0x2C] // [V50 tmp30]
@@ -392,9 +390,10 @@ G_M744_IG22: ; bbWeight=16, gcrefRegs=1400004 {x2 x22 x24}, byrefRegs=000
ldr w0, [x22, #0x28]
add w0, w0, #1
str w0, [x22, #0x28]
- ;; size=72 bbWeight=16 PerfScore 336.00
+ ;; size=68 bbWeight=16 PerfScore 328.00
G_M744_IG23: ; bbWeight=16, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
+ ; byrRegs -[x28]
sub w26, w26, #1
cbz w26, G_M744_IG25
;; size=8 bbWeight=16 PerfScore 24.00
@@ -425,7 +424,7 @@ G_M744_IG27: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byr
;; size=16 bbWeight=1 PerfScore 4.50
G_M744_IG28: ; bbWeight=1, gcVars=0000000000080000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x22]
- ; GC ptr vars -{V04 V11}
+ ; GC ptr vars -{V11}
ldrb w0, [fp, #0x38] // [V12 loc9]
cbz w0, G_M744_IG32
ldr x0, [fp, #0x20] // [V00 this]
@@ -884,7 +883,7 @@ G_M744_IG65: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, f
ret lr
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1960, prolog size 52, PerfScore 1888.50, instruction count 490, allocated bytes for code 1960 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1956, prolog size 52, PerfScore 1880.50, instruction count 489, allocated bytes for code 1956 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -895,7 +894,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 392 (0x00188) Actual length = 1568 (0x000620)
+ Function Length : 391 (0x00187) Actual length = 1564 (0x00061c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -3,48 +3,48 @@
; FullOpts code
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> x21
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> x21
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T18] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x1 "impAppendStmt"
+; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> x1 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T19] ( 2, 1 ) int -> x0
+; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x0
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,12 +53,11 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T17] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V50 cse1 [V50,T00] ( 4, 14 ) int -> x13 "CSE - aggressive"
+; V49 cse0 [V49,T16] ( 3, 1.50) int -> x1 "CSE - moderate"
;
; Lcl frame size = 56
@@ -95,7 +94,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldp w13, w14, [fp, #0x10] // [V40 tmp35], [V41 tmp36]
@@ -107,30 +105,48 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
mov w21, #3
b G_M46478_IG06
;; size=32 bbWeight=1 PerfScore 9.50
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w21, w13
- cmp w21, #0
- ble G_M46478_IG07
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w13, w21, #1
- cmp w13, #4
- bhs G_M46478_IG17
- ldr w14, [x20, w13, UXTW #2]
- cbz w14, G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w21, G_M46478_IG11
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #2
+ b G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x08]
+ cbz w13, G_M46478_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #1
+ b G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x04]
+ cbz w13, G_M46478_IG08
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, wzr
+ b G_M46478_IG13
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20]
+ cbz w13, G_M46478_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w21, G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
movz x13, #0xD1FFAB1E
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
ldr w13, [x13]
- tbz w13, #0, G_M46478_IG18
+ tbz w13, #0, G_M46478_IG24
;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x13, #0xD1FFAB1E // box for <unknown class>:<unknown field>
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
@@ -151,24 +167,23 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG10
+ beq G_M46478_IG16
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=68 bbWeight=0.50 PerfScore 8.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w21, #1
- bne G_M46478_IG13
+ bne G_M46478_IG19
ldr w1, [x20]
cmp w1, #0
- ble G_M46478_IG13
+ ble G_M46478_IG19
str w1, [x19, #0x08]
ldr w1, [x19, #0x08]
ldr w0, [x20, #0x0C]
@@ -185,18 +200,17 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG12
+ beq G_M46478_IG18
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 12.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x1, w21
movz x0, #0xD1FFAB1E
@@ -204,7 +218,6 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -217,30 +230,30 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x10]
cmp w21, #1
- ble G_M46478_IG14
+ ble G_M46478_IG20
ldr x0, [x19]
ldr w1, [x20, #0x04]
ldr w2, [x0, #0x08]
cmp w2, #1
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x14]
;; size=88 bbWeight=0.50 PerfScore 14.75
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
; gcrRegs -[x0]
cmp w21, #2
- ble G_M46478_IG15
+ ble G_M46478_IG21
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x20, #0x08]
ldr w2, [x0, #0x08]
cmp w2, #2
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x18]
...
@@ -4,7 +4,7 @@
; optimized code
; optimized using Dynamic PGO
; fp based frame
-; partially interruptible
+; fully interruptible
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 78
; 3 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
@@ -12,27 +12,27 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
; V01 arg1 [V01,T01] ( 7, 3 ) byref -> x19 single-def
; V02 arg2 [V02,T02] ( 7, 3 ) byref -> x20 single-def
-; V03 loc0 [V03,T05] ( 20, 3.08) int -> x21
+; V03 loc0 [V03,T05] ( 11, 3.08) int -> x21
; V04 loc1 [V04,T04] ( 6, 3.97) int -> x22
; V05 loc2 [V05,T17] ( 2, 0 ) int -> x0
-; V06 loc3 [V06 ] ( 2, 0 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.Text.Rune>
-; V07 loc4 [V07 ] ( 3, 0 ) int -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
-;* V08 loc5 [V08,T07] ( 0, 0 ) int -> zero-ref
+; V06 loc3 [V06 ] ( 2, 0 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op <System.Text.Rune>
+; V07 loc4 [V07 ] ( 3, 0 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
+; V08 loc5 [V08,T07] ( 4, 0.03) int -> x23
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V12 tmp3 [V12 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V13 tmp4 [V13,T10] ( 3, 0 ) int -> x21 "Inlining Arg"
-; V14 tmp5 [V14,T12] ( 2, 0 ) byref -> x22 single-def "Inlining Arg"
+; V14 tmp5 [V14,T12] ( 2, 0 ) byref -> x23 single-def "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V16 tmp7 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V17 tmp8 [V17,T09] ( 5, 0 ) int -> x21 "Inlining Arg"
; V18 tmp9 [V18,T13] ( 2, 0 ) byref -> x22 "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
; V20 tmp11 [V20,T11] ( 3, 0 ) int -> x0 "Single return block return value"
-; V21 tmp12 [V21,T03] ( 7, 2 ) byref -> x0 "field V00._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp13 [V22,T00] ( 9, 3.03) int -> x1 "field V00._length (fldOffset=0x8)" P-INDEP
-; V23 tmp14 [V23 ] ( 2, 0 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V06._value (fldOffset=0x0)" P-DEP
+; V21 tmp12 [V21,T03] ( 5, 2 ) byref -> x0 "field V00._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp13 [V22,T00] ( 6, 3.03) int -> x1 "field V00._length (fldOffset=0x8)" P-INDEP
+; V23 tmp14 [V23 ] ( 2, 0 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V06._value (fldOffset=0x0)" P-DEP
;* V24 tmp15 [V24 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
; V26 tmp17 [V26,T06] ( 2, 1.95) int -> x22 "field V11._value (fldOffset=0x0)" P-INDEP
@@ -44,18 +44,19 @@
;* V32 tmp23 [V32,T20] ( 0, 0 ) int -> zero-ref "field V19._value (fldOffset=0x0)" P-INDEP
; V33 tmp24 [V33,T16] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M6810_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
+ stp fp, lr, [sp, #-0x50]!
+ stp x19, x20, [sp, #0x28]
+ stp x21, x22, [sp, #0x38]
+ str x23, [sp, #0x48]
mov fp, sp
mov x19, x2
; byrRegs +[x19]
mov x20, x3
; byrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M6810_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref, isz
; byrRegs +[x0]
sub w21, w1, #1
@@ -70,17 +71,19 @@ G_M6810_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; gcr arg pop 0
mov w0, #0xD1FFAB1E
str w0, [x19]
str wzr, [x20]
mov w0, #2
;; size=40 bbWeight=0 PerfScore 0.00
G_M6810_IG04: ; bbWeight=0, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldr x23, [sp, #0x48]
+ ldp x21, x22, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M6810_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, gcvars, byref, isz
; byrRegs +[x0]
ldrb w22, [x0, w21, UXTW #2]
@@ -108,6 +111,7 @@ G_M6810_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr
ldr x1, [x1]
blr x1
; gcrRegs +[x0]
+ ; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -123,31 +127,34 @@ G_M6810_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr
ldr x3, [x3]
blr x3
; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
+ ; gcr arg pop 0
;; size=92 bbWeight=0 PerfScore 0.00
G_M6810_IG08: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
str w22, [x19]
mov w0, wzr
;; size=8 bbWeight=0.97 PerfScore 1.46
G_M6810_IG09: ; bbWeight=0.97, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+ ldr x23, [sp, #0x48]
+ ldp x21, x22, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0.97 PerfScore 3.90
+ ;; size=20 bbWeight=0.97 PerfScore 5.85
G_M6810_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, gcvars, byref, isz
; byrRegs +[x0 x20]
tbz w22, #6, G_M6810_IG12
;; size=4 bbWeight=0.03 PerfScore 0.03
G_M6810_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref
mov w2, w21
- add x22, x0, x2
- ; byrRegs +[x22]
+ add x23, x0, x2
+ ; byrRegs +[x23]
sub w21, w1, w21
cmp w21, #0
cset x0, ge
@@ -157,7 +164,8 @@ G_M6810_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- mov x0, x22
+ ; gcr arg pop 0
+ mov x0, x23
; byrRegs +[x0]
sxtw w1, w21
mov x2, x19
@@ -169,33 +177,28 @@ G_M6810_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ; byrRegs -[x0 x2-x3 x19-x20 x22]
+ ; byrRegs -[x0 x2-x3 x19-x20 x23]
+ ; gcr arg pop 0
b G_M6810_IG18
;; size=80 bbWeight=0 PerfScore 0.00
-G_M6810_IG12: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref, isz
+G_M6810_IG12: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref
; byrRegs +[x0 x19-x20]
+ mov w23, #3
+ ;; size=4 bbWeight=0.03 PerfScore 0.01
+G_M6810_IG13: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref, isz
sub w21, w21, #1
cmp w21, w1
- bhs G_M6810_IG14
+ bhs G_M6810_IG15
;; size=12 bbWeight=0.03 PerfScore 0.05
-G_M6810_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref, isz
+G_M6810_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref, isz
ldrsb w2, [x0, w21, UXTW #2]
cmn w2, #64
- bge G_M6810_IG16
- sub w21, w21, #1
- cmp w21, w1
- bhs G_M6810_IG14
- ldrsb w2, [x0, w21, UXTW #2]
- cmn w2, #64
- bge G_M6810_IG16
- sub w21, w21, #1
- cmp w21, w1
- bhs G_M6810_IG14
- ldrsb w2, [x0, w21, UXTW #2]
- cmn w2, #64
- bge G_M6810_IG16
- ;; size=60 bbWeight=0 PerfScore 0.00
-G_M6810_IG14: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ bge G_M6810_IG17
+ sub w23, w23, #1
+ cmp w23, #0
+ bgt G_M6810_IG13
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M6810_IG15: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
; byrRegs -[x0]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E // code for System.Text.UnicodeDebug:AssertIsValidScalar(uint)
@@ -203,33 +206,22 @@ G_M6810_IG14: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; gcr arg pop 0
mov w0, #0xD1FFAB1E
str w0, [x19]
mov w0, #1
str w0, [x20]
mov w0, #3
;; size=44 bbWeight=0.03 PerfScore 0.24
-G_M6810_IG15: ; bbWeight=0.03, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
+G_M6810_IG16: ; bbWeight=0.03, epilog, nogc, extend
+ ldr x23, [sp, #0x48]
+ ldp x21, x22, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=0.03 PerfScore 0.10
-G_M6810_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, gcvars, byref, isz
+ ;; size=20 bbWeight=0.03 PerfScore 0.15
+G_M6810_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, gcvars, byref, isz
; byrRegs +[x0]
- cmp w21, w1
- bls G_M6810_IG17
- movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
- ; byrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- blr x0
- ; byrRegs -[x19-x20]
- brk_windows #0
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M6810_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x20}, byref, isz
- ; byrRegs +[x0 x19-x20]
mov w2, w21
add x22, x0, x2
; byrRegs +[x22]
@@ -242,6 +234,7 @@ G_M6810_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=180001 {x0 x19 x
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; gcr arg pop 0
sxtw w0, w21
cmp w0, #0
...
@@ -9,27 +9,27 @@
; 3 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T09] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> x19 single-def
-; V02 arg1 [V02,T07] ( 11, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T08] ( 11, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T03] ( 6, 5.62) int -> x20
-; V04 arg3 [V04,T09] ( 4, 3.96) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T14] ( 3, 2.03) ubyte -> x24 single-def
-; V06 loc0 [V06,T20] ( 3, 2.46) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T23] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T22] ( 4, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T19] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T10] ( 4, 3.96) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T15] ( 3, 2.03) ubyte -> x24 single-def
+; V06 loc0 [V06,T21] ( 3, 2.46) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T24] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T23] ( 4, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.46) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T04] ( 5, 7.36) int -> x24
-; V12 loc6 [V12,T06] ( 7, 6.12) ref -> x28 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T07] ( 7, 6.12) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T10] ( 5, 5 ) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T11] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V20 tmp7 [V20,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T11] ( 5, 5 ) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T12] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V20 tmp7 [V20,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -42,17 +42,18 @@
; V30 tmp17 [V30,T05] ( 7, 7 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V31 tmp18 [V31,T02] ( 4, 8 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V33 tmp20 [V33,T15] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V33 tmp20 [V33,T16] ( 2, 4 ) int -> x1 "Inlining Arg"
; V34 tmp21 [V34 ] ( 3, 3.46) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V35 tmp22 [V35 ] ( 3, 3.46) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V36 tmp23 [V36 ] ( 3, 3.46) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V37 tmp24 [V37 ] ( 3, 3.46) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V38 tmp25 [V38,T24] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V39 cse0 [V39,T12] ( 3, 4.77) int -> x0 "CSE - moderate"
-; V40 cse1 [V40,T17] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V41 cse2 [V41,T13] ( 4, 4.59) int -> x22 "CSE - aggressive"
-; V42 cse3 [V42,T21] ( 2, 2.20) byref -> x27 hoist "CSE - moderate"
-; V43 cse4 [V43,T16] ( 3, 3 ) ref -> x1 "CSE - moderate"
+;* V38 tmp25 [V38,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V39 cse0 [V39,T13] ( 3, 4.77) int -> x0 "CSE - moderate"
+; V40 cse1 [V40,T18] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V41 cse2 [V41,T06] ( 10, 6.65) long -> x28 hoist multi-def "CSE - aggressive"
+; V42 cse3 [V42,T14] ( 4, 4.59) int -> x22 "CSE - moderate"
+; V43 cse4 [V43,T22] ( 2, 2.20) byref -> x27 hoist "CSE - moderate"
+; V44 cse5 [V44,T17] ( 3, 3 ) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 32
@@ -216,7 +217,7 @@ G_M37807_IG12: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=8
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x24]
; byrRegs -[x14]
- cbz x22, G_M37807_IG27
+ cbz x22, G_M37807_IG28
mov x0, x22
; byrRegs +[x0]
mov x1, x28
@@ -250,30 +251,36 @@ G_M37807_IG13: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=800
stp wzr, w1, [fp, #0x28] // [V36 tmp23], [V37 tmp24]
mov w24, wzr
cmp w22, #0
- ble G_M37807_IG25
+ ble G_M37807_IG26
;; size=68 bbWeight=1 PerfScore 18.00
G_M37807_IG14: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=80000 {x19}, byref
add x27, x0, #16
; byrRegs +[x27]
- ;; size=4 bbWeight=0.61 PerfScore 0.31
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #0xD1FFAB1E LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.23
G_M37807_IG15: ; bbWeight=1.59, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
; gcrRegs -[x0]
- ldr x28, [x27, w24, UXTW #3]
- ; gcrRegs +[x28]
- ldr w0, [x28, #0x58]
+ ldr x2, [x27, w24, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w20, w0
cmp w1, w0
bne G_M37807_IG22
- ;; size=20 bbWeight=1.59 PerfScore 12.71
-G_M37807_IG16: ; bbWeight=1.46, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
+ ;; size=24 bbWeight=1.59 PerfScore 14.30
+G_M37807_IG16: ; bbWeight=1.46, gcVars=0000000000000080 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref, isz
cbz w25, G_M37807_IG18
;; size=4 bbWeight=1.46 PerfScore 1.46
-G_M37807_IG17: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- mov x0, x28
+G_M37807_IG17: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -281,28 +288,26 @@ G_M37807_IG17: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG28
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ cbz w0, G_M37807_IG29
+ mov x0, x28
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG18: ; bbWeight=1.46, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- cbz x23, G_M37807_IG21
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG18: ; bbWeight=1.46, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ cbz x23, G_M37807_IG24
;; size=4 bbWeight=1.46 PerfScore 1.46
-G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- mov x0, x28
+G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ add x1, x28, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x28
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x28]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -311,23 +316,19 @@ G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=10A00000 {x21 x23 x28}, byrefRe
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG24
- ;; size=56 bbWeight=0.49 PerfScore 10.37
-G_M37807_IG20: ; bbWeight=0.25, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ bne G_M37807_IG25
+ ;; size=48 bbWeight=0.49 PerfScore 10.62
+G_M37807_IG20: ; bbWeight=0.25, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.25 PerfScore 0.62
-G_M37807_IG21: ; bbWeight=1.46, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ;; size=8 bbWeight=0.25 PerfScore 0.37
+G_M37807_IG21: ; bbWeight=1.46, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x28
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -336,41 +337,45 @@ G_M37807_IG21: ; bbWeight=1.46, gcrefRegs=10A00000 {x21 x23 x28}, byrefRe
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x28]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.46 PerfScore 15.36
+ ;; size=48 bbWeight=1.46 PerfScore 16.09
G_M37807_IG22: ; bbWeight=1.59, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w24, w24, #1
cmp w22, w24
bgt G_M37807_IG15
- ;; size=28 bbWeight=1.59 PerfScore 7.15
+ ;; size=20 bbWeight=1.59 PerfScore 5.56
G_M37807_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x27]
- b G_M37807_IG25
+ b G_M37807_IG26
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG24: ; bbWeight=0.25, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
- ; gcrRegs +[x21 x23]
+G_M37807_IG24: ; bbWeight=0.73, gcVars=0000000000000080 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref
+ ; gcrRegs +[x2 x21 x23]
; byrRegs +[x27]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ; GC ptr vars +{V07 V12}
+ b G_M37807_IG21
+ ;; size=4 bbWeight=0.73 PerfScore 0.73
+G_M37807_IG25: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref
+ ; gcrRegs -[x2]
+ ; GC ptr vars -{V07 V12}
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
b G_M37807_IG22
- ;; size=20 bbWeight=0.25 PerfScore 0.86
-G_M37807_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ ;; size=12 bbWeight=0.25 PerfScore 0.62
+G_M37807_IG26: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x27]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
...
@@ -9,27 +9,27 @@
; 3 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T09] ( 4, 4 ) ref -> x22 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> x19 single-def
-; V02 arg1 [V02,T07] ( 11, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T08] ( 11, 4 ) ref -> x21 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T03] ( 6, 5.68) int -> x20
-; V04 arg3 [V04,T09] ( 4, 3.96) ref -> x23 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T14] ( 3, 2.09) ubyte -> x24 single-def
-; V06 loc0 [V06,T20] ( 3, 2.46) ubyte -> x25 ld-addr-op
-; V07 loc1 [V07,T23] ( 3, 1 ) ubyte -> x26 ld-addr-op
-; V08 loc2 [V08,T22] ( 4, 2 ) int -> x27 ld-addr-op
-; V09 loc3 [V09,T19] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T10] ( 4, 3.96) ref -> x23 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T15] ( 3, 2.09) ubyte -> x24 single-def
+; V06 loc0 [V06,T21] ( 3, 2.46) ubyte -> x25 ld-addr-op
+; V07 loc1 [V07,T24] ( 3, 1 ) ubyte -> x26 ld-addr-op
+; V08 loc2 [V08,T23] ( 4, 2 ) int -> x27 ld-addr-op
+; V09 loc3 [V09,T20] ( 3, 2.61) ref -> x0 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.46) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T04] ( 5, 7.36) int -> x24
-; V12 loc6 [V12,T06] ( 7, 6.12) ref -> x28 class-hnd exact <System.Reflection.RuntimePropertyInfo>
+; V12 loc6 [V12,T07] ( 7, 6.12) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
-; V18 tmp5 [V18,T10] ( 5, 5 ) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T11] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V20 tmp7 [V20,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T11] ( 5, 5 ) ref -> x24 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T12] ( 4, 4 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V20 tmp7 [V20,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -42,17 +42,18 @@
; V30 tmp17 [V30,T05] ( 7, 7 ) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V31 tmp18 [V31,T02] ( 4, 8 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V33 tmp20 [V33,T15] ( 2, 4 ) int -> x1 "Inlining Arg"
+; V33 tmp20 [V33,T16] ( 2, 4 ) int -> x1 "Inlining Arg"
; V34 tmp21 [V34 ] ( 3, 3.46) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V35 tmp22 [V35 ] ( 3, 3.46) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x8)" P-DEP
; V36 tmp23 [V36 ] ( 3, 3.46) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x10)" P-DEP
; V37 tmp24 [V37 ] ( 3, 3.46) int -> [fp+0x2C] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0x14)" P-DEP
-;* V38 tmp25 [V38,T24] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V39 cse0 [V39,T12] ( 3, 4.77) int -> x0 "CSE - moderate"
-; V40 cse1 [V40,T17] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V41 cse2 [V41,T13] ( 4, 4.59) int -> x22 "CSE - aggressive"
-; V42 cse3 [V42,T21] ( 2, 2.20) byref -> x27 hoist "CSE - moderate"
-; V43 cse4 [V43,T16] ( 3, 3 ) ref -> x1 "CSE - moderate"
+;* V38 tmp25 [V38,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V39 cse0 [V39,T13] ( 3, 4.77) int -> x0 "CSE - moderate"
+; V40 cse1 [V40,T18] ( 3, 3 ) long -> x0 "CSE - moderate"
+; V41 cse2 [V41,T06] ( 10, 6.65) long -> x28 hoist multi-def "CSE - aggressive"
+; V42 cse3 [V42,T14] ( 4, 4.59) int -> x22 "CSE - moderate"
+; V43 cse4 [V43,T22] ( 2, 2.20) byref -> x27 hoist "CSE - moderate"
+; V44 cse5 [V44,T17] ( 3, 3 ) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 32
@@ -216,7 +217,7 @@ G_M37807_IG12: ; bbWeight=1, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=8
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x24]
; byrRegs -[x14]
- cbz x22, G_M37807_IG27
+ cbz x22, G_M37807_IG28
mov x0, x22
; byrRegs +[x0]
mov x1, x28
@@ -250,30 +251,36 @@ G_M37807_IG13: ; bbWeight=1, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=800
stp wzr, w1, [fp, #0x28] // [V36 tmp23], [V37 tmp24]
mov w24, wzr
cmp w22, #0
- ble G_M37807_IG25
+ ble G_M37807_IG26
;; size=68 bbWeight=1 PerfScore 18.00
G_M37807_IG14: ; bbWeight=0.61, gcrefRegs=A00001 {x0 x21 x23}, byrefRegs=80000 {x19}, byref
add x27, x0, #16
; byrRegs +[x27]
- ;; size=4 bbWeight=0.61 PerfScore 0.31
+ movz x28, #0xD1FFAB1E
+ movk x28, #0xD1FFAB1E LSL #16
+ movk x28, #0xD1FFAB1E LSL #32
+ ;; size=16 bbWeight=0.61 PerfScore 1.23
G_M37807_IG15: ; bbWeight=1.59, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
; gcrRegs -[x0]
- ldr x28, [x27, w24, UXTW #3]
- ; gcrRegs +[x28]
- ldr w0, [x28, #0x58]
+ ldr x2, [x27, w24, UXTW #3]
+ ; gcrRegs +[x2]
+ str x2, [fp, #0x10] // [V12 loc6]
+ ; GC ptr vars +{V12}
+ ldr w0, [x2, #0x58]
and w1, w20, w0
cmp w1, w0
bne G_M37807_IG22
- ;; size=20 bbWeight=1.59 PerfScore 12.71
-G_M37807_IG16: ; bbWeight=1.46, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
+ ;; size=24 bbWeight=1.59 PerfScore 14.30
+G_M37807_IG16: ; bbWeight=1.46, gcVars=0000000000000080 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref, isz
cbz w25, G_M37807_IG18
;; size=4 bbWeight=1.46 PerfScore 1.46
-G_M37807_IG17: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- mov x0, x28
+G_M37807_IG17: ; bbWeight=0, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
mov x1, x21
; gcrRegs +[x1]
mov w2, w26
+ ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for System.RuntimeType:FilterApplyPrefixLookup(System.Reflection.MemberInfo,System.String,ubyte):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -281,28 +288,26 @@ G_M37807_IG17: ; bbWeight=0, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbz w0, G_M37807_IG28
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ cbz w0, G_M37807_IG29
+ mov x0, x28
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00
-G_M37807_IG18: ; bbWeight=1.46, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- cbz x23, G_M37807_IG21
+ ldr x2, [fp, #0x10] // [V12 loc6]
+ ; gcrRegs +[x2]
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M37807_IG18: ; bbWeight=1.46, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ cbz x23, G_M37807_IG24
;; size=4 bbWeight=1.46 PerfScore 1.46
-G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref, isz
- mov x0, x28
+G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
+ mov x0, x2
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
+ add x1, x28, #8
bl CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
; gcr arg pop 0
- mov x0, x28
+ ldr x0, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x0]
- ldr x1, [x28]
+ ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x18]
blr x1
@@ -311,23 +316,19 @@ G_M37807_IG19: ; bbWeight=0.49, gcrefRegs=10A00000 {x21 x23 x28}, byrefRe
; gcrRegs -[x0]
ldr w1, [x23, #0x08]
cmp w0, w1
- bne G_M37807_IG24
- ;; size=56 bbWeight=0.49 PerfScore 10.37
-G_M37807_IG20: ; bbWeight=0.25, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ bne G_M37807_IG25
+ ;; size=48 bbWeight=0.49 PerfScore 10.62
+G_M37807_IG20: ; bbWeight=0.25, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=16 bbWeight=0.25 PerfScore 0.62
-G_M37807_IG21: ; bbWeight=1.46, gcrefRegs=10A00000 {x21 x23 x28}, byrefRegs=8080000 {x19 x27}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ;; size=8 bbWeight=0.25 PerfScore 0.37
+G_M37807_IG21: ; bbWeight=1.46, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add x0, fp, #24 // [V10 loc4]
- mov x2, x28
+ ldr x2, [fp, #0x10] // [V12 loc6]
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -336,41 +337,45 @@ G_M37807_IG21: ; bbWeight=1.46, gcrefRegs=10A00000 {x21 x23 x28}, byrefRe
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V12}
blr x3
- ; gcrRegs -[x2 x28]
+ ; gcrRegs -[x2]
; gcr arg pop 0
- ;; size=56 bbWeight=1.46 PerfScore 15.36
+ ;; size=48 bbWeight=1.46 PerfScore 16.09
G_M37807_IG22: ; bbWeight=1.59, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref, isz
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w24, w24, #1
cmp w22, w24
bgt G_M37807_IG15
- ;; size=28 bbWeight=1.59 PerfScore 7.15
+ ;; size=20 bbWeight=1.59 PerfScore 5.56
G_M37807_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x27]
- b G_M37807_IG25
+ b G_M37807_IG26
;; size=4 bbWeight=1 PerfScore 1.00
-G_M37807_IG24: ; bbWeight=0.25, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, byref
- ; gcrRegs +[x21 x23]
+G_M37807_IG24: ; bbWeight=0.73, gcVars=0000000000000080 {V12}, gcrefRegs=A00004 {x2 x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref
+ ; gcrRegs +[x2 x21 x23]
; byrRegs +[x27]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ ; GC ptr vars +{V07 V12}
+ b G_M37807_IG21
+ ;; size=4 bbWeight=0.73 PerfScore 0.73
+G_M37807_IG25: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=A00000 {x21 x23}, byrefRegs=8080000 {x19 x27}, gcvars, byref
+ ; gcrRegs -[x2]
+ ; GC ptr vars -{V07 V12}
+ add x0, x28, #0xD1FFAB1E
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
b G_M37807_IG22
- ;; size=20 bbWeight=0.25 PerfScore 0.86
-G_M37807_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ ;; size=12 bbWeight=0.25 PerfScore 0.62
+G_M37807_IG26: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x21 x23]
; byrRegs -[x27]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
...
@@ -9,19 +9,19 @@
; Final local variable assignments
;
; V00 arg0 [V00,T15] ( 6, 5.50) byref -> x23 single-def
-; V01 arg1 [V01,T04] ( 7, 11.50) ref -> x19 class-hnd single-def <System.Diagnostics.Tracing.EventSource+EventMetadata[]>
+; V01 arg1 [V01,T04] ( 8, 13.50) ref -> x19 class-hnd single-def <System.Diagnostics.Tracing.EventSource+EventMetadata[]>
; V02 arg2 [V02,T10] ( 6, 6 ) ref -> x22 class-hnd single-def <System.Reflection.MethodInfo>
-; V03 arg3 [V03,T05] ( 9, 10 ) ref -> x20 class-hnd single-def <System.Diagnostics.Tracing.EventAttribute>
+; V03 arg3 [V03,T06] ( 9, 10 ) ref -> x20 class-hnd single-def <System.Diagnostics.Tracing.EventAttribute>
; V04 arg4 [V04,T09] ( 12, 8.50) ref -> x21 class-hnd single-def <System.Diagnostics.Tracing.ManifestBuilder>
-; V05 arg5 [V05,T24] ( 3, 4 ) int -> x24 single-def
+; V05 arg5 [V05,T23] ( 3, 4 ) int -> x24 single-def
; V06 loc0 [V06,T14] ( 10, 7.50) int -> x25
; V07 loc1 [V07,T11] ( 9, 8 ) ref -> x27 class-hnd exact single-def <System.String>
-; V08 loc2 [V08,T26] ( 4, 3 ) int -> x22
+; V08 loc2 [V08,T25] ( 4, 3 ) int -> x22
; V09 loc3 [V09,T00] ( 6, 55 ) int -> x28
-;* V10 loc4 [V10,T54] ( 0, 0 ) ubyte -> zero-ref
-; V11 loc5 [V11,T55] ( 2, 1 ) int -> x20
+;* V10 loc4 [V10,T53] ( 0, 0 ) ubyte -> zero-ref
+; V11 loc5 [V11,T54] ( 2, 1 ) int -> x20
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T37] ( 3, 2 ) int -> x0
+; V13 tmp1 [V13,T36] ( 3, 2 ) int -> x0
;* V14 tmp2 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp3 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V16 tmp4 [V16,T02] ( 6, 24 ) ref -> [fp+0x20] class-hnd exact spill-single-def "dup spill" <System.Object[]>
@@ -29,52 +29,51 @@
; V18 tmp6 [V18,T07] ( 3, 12 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
; V19 tmp7 [V19,T13] ( 2, 8 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
; V20 tmp8 [V20,T08] ( 3, 12 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V21 tmp9 [V21,T28] ( 3, 3 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V22 tmp10 [V22,T29] ( 3, 3 ) ref -> x19 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V23 tmp11 [V23,T38] ( 2, 2 ) ref -> x0 class-hnd exact single-def "impImportAndPushBox" <System.String>
-; V24 tmp12 [V24,T30] ( 3, 3 ) ref -> x28 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V25 tmp13 [V25,T39] ( 2, 2 ) ref -> x0 class-hnd exact single-def "impImportAndPushBox" <System.String>
-; V26 tmp14 [V26,T31] ( 3, 3 ) ref -> x28 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V27 tmp15 [V27,T40] ( 2, 2 ) ref -> [fp+0x10] class-hnd exact spill-single-def "impImportAndPushBox" <System.String>
-; V28 tmp16 [V28,T32] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V21 tmp9 [V21,T27] ( 3, 3 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V22 tmp10 [V22,T28] ( 3, 3 ) ref -> x19 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V23 tmp11 [V23,T37] ( 2, 2 ) ref -> x0 class-hnd exact single-def "impImportAndPushBox" <System.String>
+; V24 tmp12 [V24,T29] ( 3, 3 ) ref -> x28 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V25 tmp13 [V25,T38] ( 2, 2 ) ref -> x0 class-hnd exact single-def "impImportAndPushBox" <System.String>
+; V26 tmp14 [V26,T30] ( 3, 3 ) ref -> x28 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V27 tmp15 [V27,T39] ( 2, 2 ) ref -> [fp+0x10] class-hnd exact spill-single-def "impImportAndPushBox" <System.String>
+; V28 tmp16 [V28,T31] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V29 tmp17 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
-; V30 tmp18 [V30,T33] ( 4, 2.64) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String>
-; V31 tmp19 [V31,T56] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V30 tmp18 [V30,T32] ( 4, 2.64) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String>
+; V31 tmp19 [V31,T55] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V32 tmp20 [V32,T16] ( 7, 6.64) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V33 tmp21 [V33,T49] ( 3, 1.32) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V34 tmp22 [V34,T43] ( 4, 1.64) int -> x15 "Inline stloc first use temp"
+; V33 tmp21 [V33,T48] ( 3, 1.32) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V34 tmp22 [V34,T42] ( 4, 1.64) int -> x15 "Inline stloc first use temp"
;* V35 tmp23 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V36 tmp24 [V36,T34] ( 4, 2.64) ref -> x28 class-hnd exact single-def "Inlining Arg" <System.String>
-; V37 tmp25 [V37,T57] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp24 [V36,T33] ( 4, 2.64) ref -> x28 class-hnd exact single-def "Inlining Arg" <System.String>
+; V37 tmp25 [V37,T56] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V38 tmp26 [V38,T17] ( 7, 6.64) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V39 tmp27 [V39,T50] ( 3, 1.32) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V40 tmp28 [V40,T44] ( 4, 1.64) int -> x15 "Inline stloc first use temp"
+; V39 tmp27 [V39,T49] ( 3, 1.32) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V40 tmp28 [V40,T43] ( 4, 1.64) int -> x15 "Inline stloc first use temp"
;* V41 tmp29 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V43 tmp31 [V43,T25] ( 3, 5 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
+; V43 tmp31 [V43,T24] ( 3, 5 ) ref -> x1 class-hnd exact "Inlining Arg" <System.String>
; V44 tmp32 [V44,T19] ( 7, 6.00) ref -> x0 class-hnd "Inlining Arg" <<unknown class>>
-; V45 tmp33 [V45,T51] ( 3, 1.32) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V46 tmp34 [V46,T45] ( 4, 1.64) int -> x15 "Inline stloc first use temp"
-; V47 tmp35 [V47,T36] ( 3, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
+; V45 tmp33 [V45,T50] ( 3, 1.32) ref -> x14 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V46 tmp34 [V46,T44] ( 4, 1.64) int -> x15 "Inline stloc first use temp"
+; V47 tmp35 [V47,T35] ( 3, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
; V48 tmp36 [V48,T20] ( 7, 6.00) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V49 tmp37 [V49,T52] ( 3, 1.32) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V50 tmp38 [V50,T46] ( 4, 1.64) int -> x15 "Inline stloc first use temp"
+; V49 tmp37 [V49,T51] ( 3, 1.32) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V50 tmp38 [V50,T45] ( 4, 1.64) int -> x15 "Inline stloc first use temp"
; V51 tmp39 [V51,T21] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
-; V52 tmp40 [V52,T35] ( 4, 2.64) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.String>
-; V53 tmp41 [V53,T58] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V52 tmp40 [V52,T34] ( 4, 2.64) ref -> x19 class-hnd exact single-def "Inlining Arg" <System.String>
+; V53 tmp41 [V53,T57] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V54 tmp42 [V54,T18] ( 7, 6.64) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V55 tmp43 [V55,T53] ( 3, 1.32) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V56 tmp44 [V56,T47] ( 4, 1.64) int -> x15 "Inline stloc first use temp"
+; V55 tmp43 [V55,T52] ( 3, 1.32) ref -> x14 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V56 tmp44 [V56,T46] ( 4, 1.64) int -> x15 "Inline stloc first use temp"
; V57 tmp45 [V57,T22] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
;* V58 tmp46 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V59 tmp47 [V59,T42] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V60 tmp48 [V60,T41] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-; V61 cse0 [V61,T23] ( 3, 6 ) byref -> x0 "CSE - moderate"
-; V62 cse1 [V62,T06] ( 4, 12 ) long -> [fp+0x28] spill-single-def "CSE - aggressive"
-; V63 cse2 [V63,T27] ( 4, 3 ) int -> x19 "CSE - moderate"
-; V64 cse3 [V64,T48] ( 3, 1.50) int -> x22 "CSE - moderate"
+;* V59 tmp47 [V59,T41] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V60 tmp48 [V60,T40] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V61 cse0 [V61,T05] ( 5, 14 ) long -> [fp+0x28] spill-single-def "CSE - aggressive"
+; V62 cse1 [V62,T26] ( 4, 3 ) int -> x19 "CSE - moderate"
+; V63 cse2 [V63,T47] ( 3, 1.50) int -> x22 "CSE - moderate"
+; V64 cse3 [V64,T01] ( 21, 29.25) long -> x26 "CSE - aggressive"
; V65 cse4 [V65,T03] ( 5, 19.50) int -> x22 "CSE - aggressive"
-; V66 cse5 [V66,T01] ( 21, 29.25) long -> x26 "CSE - aggressive"
;
; Lcl frame size = 32
@@ -361,7 +360,7 @@ G_M46894_IG18: ; bbWeight=4, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRe
mov w0, #96
mov x1, #16
umaddl x1, w28, w0, x1
- str x1, [fp, #0x28] // [V62 cse1]
+ str x1, [fp, #0x28] // [V61 cse0]
ldr x0, [x19, x1]
; gcrRegs +[x0]
cbz x0, G_M46894_IG25
@@ -370,10 +369,13 @@ G_M46894_IG19: ; bbWeight=2, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRe
; gcrRegs -[x0]
add x0, x19, x1
; byrRegs +[x0]
- ldrh w2, [x0, #0x56]
- ldr w3, [x20, #0x20]
- cmp w2, w3
+ ldrh w0, [x0, #0x56]
+ ; byrRegs -[x0]
+ ldr w2, [x20, #0x20]
+ cmp w0, w2
bne G_M46894_IG28
+ add x0, x19, x1
+ ; byrRegs +[x0]
ldrb w0, [x0, #0x55]
; byrRegs -[x0]
ldr w2, [x20, #0x2C]
@@ -426,7 +428,7 @@ G_M46894_IG19: ; bbWeight=2, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRe
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ldr x14, [fp, #0x28] // [V62 cse1]
+ ldr x14, [fp, #0x28] // [V61 cse0]
ldr x15, [x19, x14]
; gcrRegs +[x15]
add x14, x1, #32
@@ -464,7 +466,7 @@ G_M46894_IG19: ; bbWeight=2, gcrefRegs=8380000 {x19 x20 x21 x27}, byrefRe
; gcrRegs +[x1]
ldr w14, [x21, #0x88]
tbz w14, #0, G_M46894_IG23
- ;; size=236 bbWeight=2 PerfScore 127.00
+ ;; size=240 bbWeight=2 PerfScore 128.00
G_M46894_IG20: ; bbWeight=0.50, gcrefRegs=8380002 {x1 x19 x20 x21 x27}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs -[x0]
ldr x0, [x21, #0x60]
@@ -909,7 +911,7 @@ G_M46894_IG53: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_windows #0
;; size=56 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1924, prolog size 52, PerfScore 471.38, instruction count 481, allocated bytes for code 1924 (MethodHash=3e2a48d1) for method System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
+; Total bytes of code 1928, prolog size 52, PerfScore 472.38, instruction count 482, allocated bytes for code 1928 (MethodHash=3e2a48d1) for method System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -920,7 +922,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 481 (0x001e1) Actual length = 1924 (0x000784)
+ Function Length : 482 (0x001e2) Actual length = 1928 (0x000788)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -12,13 +12,13 @@
; V00 this [V00,T05] ( 4, 4 ) ref -> x21 this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T04] ( 6, 4 ) ref -> x20 ld-addr-op class-hnd <System.String>
; V02 arg2 [V02,T02] ( 6, 5.42) int -> x19
-; V03 loc0 [V03,T17] ( 3, 1.02) int -> x22 ld-addr-op
-; V04 loc1 [V04,T12] ( 3, 2.42) ref -> x21 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
+; V03 loc0 [V03,T16] ( 3, 1.02) int -> x22 ld-addr-op
+; V04 loc1 [V04,T11] ( 4, 2.71) ref -> x21 class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
; V05 loc2 [V05,T10] ( 16, 2.84) ref -> x22 class-hnd <System.Reflection.FieldInfo>
-; V06 loc3 [V06,T14] ( 3, 2 ) ubyte -> x23
+; V06 loc3 [V06,T13] ( 3, 2 ) ubyte -> x23
;* V07 loc4 [V07 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op
-; V08 loc5 [V08,T11] ( 5, 2.67) int -> x24
-; V09 loc6 [V09,T15] ( 12, 1.25) ref -> x26 class-hnd <System.Reflection.RuntimeFieldInfo>
+; V08 loc5 [V08,T12] ( 5, 2.67) int -> x24
+; V09 loc6 [V09,T14] ( 12, 1.25) ref -> x26 class-hnd <System.Reflection.RuntimeFieldInfo>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -60,9 +60,9 @@
; V48 tmp38 [V48,T25] ( 2, 0 ) ref -> x1 "argument with side effect"
; V49 tmp39 [V49,T23] ( 3, 0 ) ref -> x0 "argument with side effect"
; V50 tmp40 [V50,T24] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V51 cse0 [V51,T16] ( 3, 1.25) int -> x0 "CSE - moderate"
-; V52 cse1 [V52,T09] ( 3, 3 ) long -> x0 "CSE - aggressive"
-; V53 cse2 [V53,T13] ( 3, 2.42) int -> x25 "CSE - aggressive"
+; V51 cse0 [V51,T15] ( 3, 1.25) int -> x0 "CSE - moderate"
+; V52 cse1 [V52,T17] ( 2, 0.71) byref -> x25 hoist "CSE - moderate"
+; V53 cse2 [V53,T09] ( 3, 3 ) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -195,7 +195,7 @@ G_M40435_IG09: ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x23]
; byrRegs -[x14]
- cbz x21, G_M40435_IG21
+ cbz x21, G_M40435_IG22
mov x0, x21
; byrRegs +[x0]
mov x1, x24
@@ -229,24 +229,25 @@ G_M40435_IG10: ; bbWeight=1, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}
eor w19, w19, #2
mov w23, wzr
mov w24, wzr
- ldr w25, [x21, #0x08]
- cmp w25, #0
- ble G_M40435_IG16
- ;; size=68 bbWeight=1 PerfScore 17.00
-G_M40435_IG11: ; bbWeight=0.42, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x21, #0x08]
; gcrRegs -[x0]
- add x0, x21, #16
- ; byrRegs +[x0]
- ldr x26, [x0, w24, UXTW #3]
+ cmp w0, #0
+ ble G_M40435_IG17
+ ;; size=68 bbWeight=1 PerfScore 17.00
+G_M40435_IG11: ; bbWeight=0.29, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
+ add x25, x21, #16
+ ; byrRegs +[x25]
+ ;; size=4 bbWeight=0.29 PerfScore 0.15
+G_M40435_IG12: ; bbWeight=0.42, gcrefRegs=600000 {x21 x22}, byrefRegs=2000000 {x25}, byref, isz
+ ldr x26, [x25, w24, UXTW #3]
; gcrRegs +[x26]
ldr w0, [x26, #0x18]
- ; byrRegs -[x0]
and w1, w19, w0
cmp w1, w0
- bne G_M40435_IG15
- cbz x22, G_M40435_IG14
- ;; size=28 bbWeight=0.42 PerfScore 3.97
-G_M40435_IG12: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+ bne G_M40435_IG16
+ cbz x22, G_M40435_IG15
+ ;; size=24 bbWeight=0.42 PerfScore 3.76
+G_M40435_IG13: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=2000000 {x25}, byref, isz
mov x0, x26
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -279,7 +280,7 @@ G_M40435_IG12: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0
blr x1
; gcr arg pop 0
cmp x20, x0
- beq G_M40435_IG26
+ beq G_M40435_IG27
mov x0, x22
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -302,7 +303,7 @@ G_M40435_IG12: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M40435_IG25
+ cbz w0, G_M40435_IG26
mov x0, x26
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -326,7 +327,7 @@ G_M40435_IG12: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M40435_IG24
+ cbz w0, G_M40435_IG25
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -334,7 +335,7 @@ G_M40435_IG12: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0
; gcr arg pop 0
mov w23, #1
;; size=248 bbWeight=0 PerfScore 0.00
-G_M40435_IG13: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+G_M40435_IG14: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=2000000 {x25}, byref, isz
mov x0, x26
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -382,7 +383,7 @@ G_M40435_IG13: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0
blr x2
; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
- cbnz w0, G_M40435_IG23
+ cbnz w0, G_M40435_IG24
mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -406,7 +407,7 @@ G_M40435_IG13: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M40435_IG22
+ cbz w0, G_M40435_IG23
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -414,7 +415,7 @@ G_M40435_IG13: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0
; gcrRegs -[x22]
; gcr arg pop 0
;; size=212 bbWeight=0 PerfScore 0.00
-G_M40435_IG14: ; bbWeight=0.42, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
+G_M40435_IG15: ; bbWeight=0.42, gcrefRegs=4200000 {x21 x26}, byrefRegs=2000000 {x25}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -423,7 +424,7 @@ G_M40435_IG14: ; bbWeight=0.42, gcrefRegs=4200000 {x21 x26}, byrefRegs=00
mov x22, x26
; gcrRegs +[x22]
;; size=20 bbWeight=0.42 PerfScore 1.25
-G_M40435_IG15: ; bbWeight=0.42, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M40435_IG16: ; bbWeight=0.42, gcrefRegs=600000 {x21 x22}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x26]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -431,14 +432,16 @@ G_M40435_IG15: ; bbWeight=0.42, gcrefRegs=600000 {x21 x22}, byrefRegs=000
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add w24, w24, #1
- cmp w25, w24
- bgt G_M40435_IG11
- ;; size=28 bbWeight=0.42 PerfScore 1.88
-G_M40435_IG16: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x21, #0x08]
+ cmp w0, w24
+ bgt G_M40435_IG12
+ ;; size=32 bbWeight=0.42 PerfScore 3.14
+G_M40435_IG17: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
- cbz w23, G_M40435_IG19
+ ; byrRegs -[x25]
+ cbz w23, G_M40435_IG20
;; size=4 bbWeight=1 PerfScore 1.00
-G_M40435_IG17: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+G_M40435_IG18: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -462,7 +465,7 @@ G_M40435_IG17: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M40435_IG18
+ cbz w0, G_M40435_IG19
mov x0, x22
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -476,7 +479,7 @@ G_M40435_IG17: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
; gcr arg pop 0
;; size=96 bbWeight=0 PerfScore 0.00
-G_M40435_IG18: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M40435_IG19: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x22]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -484,7 +487,7 @@ G_M40435_IG18: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b
bl CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M40435_IG19: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M40435_IG20: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -493,7 +496,7 @@ G_M40435_IG19: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b
mov x0, x22
; gcrRegs +[x0]
;; size=20 bbWeight=1 PerfScore 3.00
-G_M40435_IG20: ; bbWeight=1, epilog, nogc, extend
+G_M40435_IG21: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
@@ -501,7 +504,7 @@ G_M40435_IG20: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
-G_M40435_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M40435_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowNullReferenceException()
movk x0, #0xD1FFAB1E LSL #16
@@ -511,8 +514,18 @@ G_M40435_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M40435_IG22: ; bbWeight=0, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
+G_M40435_IG23: ; bbWeight=0, gcrefRegs=600000 {x21 x22}, byrefRegs=2000000 {x25}, byref
; gcrRegs +[x21-x22]
+ ; byrRegs +[x25]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_COUNTPROFILE32
+ ; gcr arg pop 0
+ b G_M40435_IG16
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M40435_IG24: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=2000000 {x25}, byref
+ ; gcrRegs -[x22] +[x26]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -520,8 +533,8 @@ G_M40435_IG22: ; bbWeight=0, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {
; gcr arg pop 0
b G_M40435_IG15
;; size=20 bbWeight=0 PerfScore 0.00
-G_M40435_IG23: ; bbWeight=0, gcrefRegs=4200000 {x21 x26}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x22] +[x26]
+G_M40435_IG25: ; bbWeight=0, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=2000000 {x25}, byref
+ ; gcrRegs +[x22]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
...
@@ -3,48 +3,48 @@
; Tier-0 switched to FullOpts code
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> x21
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> x21
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T18] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x1 "impAppendStmt"
+; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> x1 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T19] ( 2, 1 ) int -> x0
+; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x0
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,12 +53,11 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T17] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V50 cse1 [V50,T00] ( 4, 14 ) int -> x13 "CSE - aggressive"
+; V49 cse0 [V49,T16] ( 3, 1.50) int -> x1 "CSE - moderate"
;
; Lcl frame size = 56
@@ -95,7 +94,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldp w13, w14, [fp, #0x10] // [V40 tmp35], [V41 tmp36]
@@ -107,30 +105,48 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
mov w21, #3
b G_M46478_IG06
;; size=32 bbWeight=1 PerfScore 9.50
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w21, w13
- cmp w21, #0
- ble G_M46478_IG07
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w13, w21, #1
- cmp w13, #4
- bhs G_M46478_IG17
- ldr w14, [x20, w13, UXTW #2]
- cbz w14, G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w21, G_M46478_IG11
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #2
+ b G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x08]
+ cbz w13, G_M46478_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #1
+ b G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x04]
+ cbz w13, G_M46478_IG08
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, wzr
+ b G_M46478_IG13
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20]
+ cbz w13, G_M46478_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w21, G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
movz x13, #0xD1FFAB1E
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
ldr w13, [x13]
- tbz w13, #0, G_M46478_IG18
+ tbz w13, #0, G_M46478_IG24
;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x13, #0xD1FFAB1E // box for <unknown class>:<unknown field>
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
@@ -151,24 +167,23 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG10
+ beq G_M46478_IG16
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=68 bbWeight=0.50 PerfScore 8.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w21, #1
- bne G_M46478_IG13
+ bne G_M46478_IG19
ldr w1, [x20]
cmp w1, #0
- ble G_M46478_IG13
+ ble G_M46478_IG19
str w1, [x19, #0x08]
ldr w1, [x19, #0x08]
ldr w0, [x20, #0x0C]
@@ -185,18 +200,17 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG12
+ beq G_M46478_IG18
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 12.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x1, w21
movz x0, #0xD1FFAB1E
@@ -204,7 +218,6 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -217,30 +230,30 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x10]
cmp w21, #1
- ble G_M46478_IG14
+ ble G_M46478_IG20
ldr x0, [x19]
ldr w1, [x20, #0x04]
ldr w2, [x0, #0x08]
cmp w2, #1
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x14]
;; size=88 bbWeight=0.50 PerfScore 14.75
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
; gcrRegs -[x0]
cmp w21, #2
- ble G_M46478_IG15
+ ble G_M46478_IG21
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x20, #0x08]
ldr w2, [x0, #0x08]
cmp w2, #2
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x18]
...
@@ -3,48 +3,48 @@
; FullOpts code
; optimized code
; fp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 12, 7 ) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> x19 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> x21
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> x21
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T18] ( 2, 1 ) int -> x0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> x1 "impAppendStmt"
+; V13 tmp8 [V13,T17] ( 2, 1 ) int -> x0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> x1 "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T19] ( 2, 1 ) int -> x0
+; V23 tmp18 [V23,T18] ( 2, 1 ) int -> x0
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> x1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> x20 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,12 +53,11 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> x13 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> x14 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> x12 "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T17] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V50 cse1 [V50,T00] ( 4, 14 ) int -> x13 "CSE - aggressive"
+; V49 cse0 [V49,T16] ( 3, 1.50) int -> x1 "CSE - moderate"
;
; Lcl frame size = 56
@@ -95,7 +94,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldp w13, w14, [fp, #0x10] // [V40 tmp35], [V41 tmp36]
@@ -107,30 +105,48 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
mov w21, #3
b G_M46478_IG06
;; size=32 bbWeight=1 PerfScore 9.50
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sxtw w21, w13
- cmp w21, #0
- ble G_M46478_IG07
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- sub w13, w21, #1
- cmp w13, #4
- bhs G_M46478_IG17
- ldr w14, [x20, w13, UXTW #2]
- cbz w14, G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
- cbnz w21, G_M46478_IG11
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #2
+ b G_M46478_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x08]
+ cbz w13, G_M46478_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, #1
+ b G_M46478_IG12
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20, #0x04]
+ cbz w13, G_M46478_IG08
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ b G_M46478_IG13
+ ;; size=4 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov w21, wzr
+ b G_M46478_IG13
+ ;; size=8 bbWeight=0.25 PerfScore 0.38
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ ldr w13, [x20]
+ cbz w13, G_M46478_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+ cbnz w21, G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x20]
movz x13, #0xD1FFAB1E
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
ldr w13, [x13]
- tbz w13, #0, G_M46478_IG18
+ tbz w13, #0, G_M46478_IG24
;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x13, #0xD1FFAB1E // box for <unknown class>:<unknown field>
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
@@ -151,24 +167,23 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG10
+ beq G_M46478_IG16
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x13-x14]
- ; gcr arg pop 0
;; size=68 bbWeight=0.50 PerfScore 8.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
cmp w21, #1
- bne G_M46478_IG13
+ bne G_M46478_IG19
ldr w1, [x20]
cmp w1, #0
- ble G_M46478_IG13
+ ble G_M46478_IG19
str w1, [x19, #0x08]
ldr w1, [x19, #0x08]
ldr w0, [x20, #0x0C]
@@ -185,18 +200,17 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x40] // [V48 GsCookie]
cmp xip0, xip1
- beq G_M46478_IG12
+ beq G_M46478_IG18
bl CORINFO_HELP_FAIL_FAST
; byrRegs -[x19-x20]
- ; gcr arg pop 0
;; size=92 bbWeight=0.50 PerfScore 12.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x58]
ldp x19, x20, [sp, #0x48]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, gcvars, byref, isz
; byrRegs +[x19-x20]
sxtw x1, w21
movz x0, #0xD1FFAB1E
@@ -204,7 +218,6 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
- ; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
mov x14, x19
@@ -217,30 +230,30 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr w1, [x20]
ldr w2, [x0, #0x08]
cmp w2, #0
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x10]
cmp w21, #1
- ble G_M46478_IG14
+ ble G_M46478_IG20
ldr x0, [x19]
ldr w1, [x20, #0x04]
ldr w2, [x0, #0x08]
cmp w2, #1
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x14]
;; size=88 bbWeight=0.50 PerfScore 14.75
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
; gcrRegs -[x0]
cmp w21, #2
- ble G_M46478_IG15
+ ble G_M46478_IG21
ldr x0, [x19]
; gcrRegs +[x0]
ldr w1, [x20, #0x08]
ldr w2, [x0, #0x08]
cmp w2, #2
- bls G_M46478_IG17
+ bls G_M46478_IG23
str w1, [x0, #0x18]
...
@@ -13,8 +13,8 @@
; V02 arg2 [V02,T24] ( 5, 15 ) ref -> x20 class-hnd exact single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T54] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [fp+0x6C]
+; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [fp+0x6C]
; V07 loc3 [V07,T06] ( 12,102 ) int -> x28
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [fp+0x68]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -130,9 +130,9 @@
; V119 tmp98 [V119,T49] ( 2, 8 ) int -> x2 "field V75._length (fldOffset=0x8)" P-INDEP
; V120 tmp99 [V120,T37] ( 3, 12 ) ref -> x0 "argument with side effect"
; V121 cse0 [V121,T39] ( 3, 12 ) int -> x2 "CSE - moderate"
-; V122 cse1 [V122,T03] ( 18,142 ) int -> x26 "CSE - aggressive"
+; V122 cse1 [V122,T03] ( 20,142 ) int -> x26 "CSE - aggressive"
; V123 cse2 [V123,T05] ( 7,108 ) int -> x27 "CSE - aggressive"
-; V124 cse3 [V124,T04] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V124 cse3 [V124,T04] ( 17,120 ) byref -> x27 "CSE - aggressive"
; V125 cse4 [V125,T40] ( 3, 12 ) int -> x0 "CSE - moderate"
; V126 cse5 [V126,T14] ( 20, 40 ) ref -> registers multi-def "CSE - aggressive"
; V127 rat0 [V127,T41] ( 3, 12 ) long -> x6 "ReplaceWithLclVar is creating a new local variable"
@@ -160,7 +160,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w23, w4
;; size=48 bbWeight=1 PerfScore 9.00
G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG73
+ cbz x20, G_M36935_IG77
cbnz x21, G_M36935_IG04
;; size=8 bbWeight=1 PerfScore 2.00
G_M36935_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref
@@ -232,7 +232,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M36935_IG69
+ bls G_M36935_IG73
;; size=12 bbWeight=8 PerfScore 36.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz
add x27, x20, #12
@@ -271,10 +271,10 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x60] // [V15 loc11]
- tbnz w3, #31, G_M36935_IG70
+ tbnz w3, #31, G_M36935_IG74
ldr w4, [fp, #0x44] // [V97 tmp76]
cmp w3, w4
- bhi G_M36935_IG80
+ bhi G_M36935_IG84
mov x1, x28
; byrRegs +[x1]
mov w2, w3
@@ -286,11 +286,11 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
ldr w28, [fp, #0x60] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M36935_IG72
+ bhs G_M36935_IG76
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M36935_IG17
@@ -324,7 +324,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs +[x27]
cmp w28, #123
- bne G_M36935_IG74
+ bne G_M36935_IG78
mov w28, wzr
str wzr, [fp, #0x68] // [V08 loc4]
str xzr, [fp, #0x18] // [V88 tmp67]
@@ -332,7 +332,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str wzr, [fp, #0x48] // [V89 tmp68]
sub w0, w25, #1
cmp w0, w26
- bhs G_M36935_IG72
+ bhs G_M36935_IG76
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M36935_IG19
@@ -372,10 +372,10 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
ldr w2, [fp, #0x6C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M36935_IG75
+ bhs G_M36935_IG79
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M36935_IG23
@@ -386,7 +386,7 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
ldr x4, [fp, #0x18] // [V88 tmp67]
; byrRegs +[x4]
- b G_M36935_IG40
+ b G_M36935_IG44
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs -[x4]
@@ -396,7 +396,7 @@ G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str w6, [fp, #0x64] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x64] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -410,101 +410,125 @@ G_M36935_IG25: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=
;; size=24 bbWeight=16 PerfScore 56.00
G_M36935_IG26: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #32
- bne G_M36935_IG28
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG27: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bne G_M36935_IG30
+ tbnz w25, #31, G_M36935_IG29
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M36935_IG27: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG27
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w2, #44
- bne G_M36935_IG36
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG29: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
+ b G_M36935_IG30
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M36935_IG29: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG29
- ;; size=24 bbWeight=16 PerfScore 104.00
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
G_M36935_IG30: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M36935_IG40
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M36935_IG31: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M36935_IG80
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M36935_IG31
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M36935_IG32: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #45
- bne G_M36935_IG31
+ bne G_M36935_IG33
mov w3, #1
str w3, [fp, #0x68] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG33: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M36935_IG75
+ bhs G_M36935_IG79
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
- b G_M36935_IG33
+ bls G_M36935_IG80
+ b G_M36935_IG35
;; size=28 bbWeight=2 PerfScore 10.00
-G_M36935_IG32: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG34: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
mov w0, #10
madd w2, w28, w0, w2
sub w28, w2, #48
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
;; size=24 bbWeight=8 PerfScore 40.00
-G_M36935_IG33: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG35: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w25, w26
- bhs G_M36935_IG72
+ bhs G_M36935_IG76
ldrh w2, [x27, w25, UXTW #2]
sub w0, w2, #48
movz w1, #0xD1FFAB1E
movk w1, #15 LSL #16
cmp w0, #9
ccmp w28, w1, z, ls
- blt G_M36935_IG32
+ blt G_M36935_IG34
;; size=36 bbWeight=16 PerfScore 128.00
-G_M36935_IG34: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG36: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #32
- bne G_M36935_IG36
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG35: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bne G_M36935_IG40
+ tbnz w25, #31, G_M36935_IG39
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M36935_IG37: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
- beq G_M36935_IG35
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M36935_IG36: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ beq G_M36935_IG37
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M36935_IG38: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
+ b G_M36935_IG40
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M36935_IG39: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M36935_IG80
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M36935_IG39
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
+G_M36935_IG40: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #125
...
@@ -12,8 +12,8 @@
; V02 arg2 [V02,T24] ( 5, 15 ) ref -> x20 class-hnd exact single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T50] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [fp+0x6C]
+; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [fp+0x6C]
; V07 loc3 [V07,T06] ( 12,102 ) int -> x28
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [fp+0x68]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -128,9 +128,9 @@
; V118 tmp97 [V118,T42] ( 2, 8 ) byref -> x1 "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T45] ( 2, 8 ) int -> x2 "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T37] ( 3, 12 ) int -> x2 "CSE - moderate"
-; V121 cse1 [V121,T03] ( 18,142 ) int -> x26 "CSE - aggressive"
+; V121 cse1 [V121,T03] ( 20,142 ) int -> x26 "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> x27 "CSE - aggressive"
-; V123 cse3 [V123,T04] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V123 cse3 [V123,T04] ( 17,120 ) byref -> x27 "CSE - aggressive"
; V124 cse4 [V124,T38] ( 3, 12 ) int -> x0 "CSE - moderate"
; V125 cse5 [V125,T14] ( 20, 40 ) ref -> registers multi-def "CSE - aggressive"
;
@@ -155,7 +155,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w23, w4
;; size=48 bbWeight=1 PerfScore 9.00
G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG73
+ cbz x20, G_M36935_IG77
cbnz x21, G_M36935_IG04
;; size=8 bbWeight=1 PerfScore 2.00
G_M36935_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref
@@ -227,7 +227,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M36935_IG69
+ bls G_M36935_IG73
;; size=12 bbWeight=8 PerfScore 36.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz
add x27, x20, #12
@@ -266,10 +266,10 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x60] // [V15 loc11]
- tbnz w3, #31, G_M36935_IG70
+ tbnz w3, #31, G_M36935_IG74
ldr w4, [fp, #0x44] // [V97 tmp76]
cmp w3, w4
- bhi G_M36935_IG80
+ bhi G_M36935_IG84
mov x1, x28
; byrRegs +[x1]
mov w2, w3
@@ -281,11 +281,11 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
ldr w28, [fp, #0x60] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M36935_IG72
+ bhs G_M36935_IG76
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M36935_IG17
@@ -319,7 +319,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs +[x27]
cmp w28, #123
- bne G_M36935_IG74
+ bne G_M36935_IG78
mov w28, wzr
str wzr, [fp, #0x68] // [V08 loc4]
str xzr, [fp, #0x18] // [V88 tmp67]
@@ -327,7 +327,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str wzr, [fp, #0x48] // [V89 tmp68]
sub w0, w25, #1
cmp w0, w26
- bhs G_M36935_IG72
+ bhs G_M36935_IG76
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M36935_IG19
@@ -367,10 +367,10 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
ldr w2, [fp, #0x6C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M36935_IG75
+ bhs G_M36935_IG79
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M36935_IG23
@@ -381,7 +381,7 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
ldr x4, [fp, #0x18] // [V88 tmp67]
; byrRegs +[x4]
- b G_M36935_IG40
+ b G_M36935_IG44
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs -[x4]
@@ -391,7 +391,7 @@ G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str w6, [fp, #0x64] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x64] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -405,101 +405,125 @@ G_M36935_IG25: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=
;; size=24 bbWeight=16 PerfScore 56.00
G_M36935_IG26: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #32
- bne G_M36935_IG28
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG27: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bne G_M36935_IG30
+ tbnz w25, #31, G_M36935_IG29
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M36935_IG27: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG27
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w2, #44
- bne G_M36935_IG36
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG29: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
+ b G_M36935_IG30
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M36935_IG29: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG29
- ;; size=24 bbWeight=16 PerfScore 104.00
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
G_M36935_IG30: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M36935_IG40
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M36935_IG31: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M36935_IG80
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M36935_IG31
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M36935_IG32: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #45
- bne G_M36935_IG31
+ bne G_M36935_IG33
mov w3, #1
str w3, [fp, #0x68] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG33: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M36935_IG75
+ bhs G_M36935_IG79
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
- b G_M36935_IG33
+ bls G_M36935_IG80
+ b G_M36935_IG35
;; size=28 bbWeight=2 PerfScore 10.00
-G_M36935_IG32: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG34: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
mov w0, #10
madd w2, w28, w0, w2
sub w28, w2, #48
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
;; size=24 bbWeight=8 PerfScore 40.00
-G_M36935_IG33: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG35: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w25, w26
- bhs G_M36935_IG72
+ bhs G_M36935_IG76
ldrh w2, [x27, w25, UXTW #2]
sub w0, w2, #48
movz w1, #0xD1FFAB1E
movk w1, #15 LSL #16
cmp w0, #9
ccmp w28, w1, z, ls
- blt G_M36935_IG32
+ blt G_M36935_IG34
;; size=36 bbWeight=16 PerfScore 128.00
-G_M36935_IG34: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG36: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #32
- bne G_M36935_IG36
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG35: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bne G_M36935_IG40
+ tbnz w25, #31, G_M36935_IG39
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M36935_IG37: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG76
+ bls G_M36935_IG80
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
- beq G_M36935_IG35
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M36935_IG36: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ beq G_M36935_IG37
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M36935_IG38: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
+ b G_M36935_IG40
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M36935_IG39: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M36935_IG80
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M36935_IG39
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
+G_M36935_IG40: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #125
...
@@ -13,8 +13,8 @@
; V02 arg2 [V02,T19] ( 5, 15 ) ref -> x20 class-hnd exact single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T53] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 30,260 ) ushort -> [fp+0x5C]
+; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x5C]
; V07 loc3 [V07,T05] ( 12, 74 ) int -> x28
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [fp+0x58]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -136,8 +136,8 @@
; V125 cse1 [V125,T35] ( 3, 12 ) ref -> x15 "CSE - moderate"
; V126 cse2 [V126,T38] ( 3, 12 ) int -> x10 "CSE - moderate"
; V127 cse3 [V127,T36] ( 3, 12 ) ref -> x0 "CSE - moderate"
-; V128 cse4 [V128,T02] ( 18,142 ) int -> x26 "CSE - aggressive"
-; V129 cse5 [V129,T03] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V128 cse4 [V128,T02] ( 20,142 ) int -> x26 "CSE - aggressive"
+; V129 cse5 [V129,T03] ( 17,120 ) byref -> x27 "CSE - aggressive"
; V130 cse6 [V130,T06] ( 6, 60 ) int -> x27 "CSE - aggressive"
; V131 cse7 [V131,T39] ( 3, 12 ) int -> x0 "CSE - moderate"
; V132 cse8 [V132,T10] ( 17, 34 ) ref -> registers multi-def "CSE - aggressive"
@@ -166,7 +166,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w23, w4
;; size=48 bbWeight=1 PerfScore 9.00
G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x20, G_M4730_IG65
+ cbz x20, G_M4730_IG69
cbnz x21, G_M4730_IG04
;; size=8 bbWeight=1 PerfScore 2.00
G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref
@@ -238,7 +238,7 @@ G_M4730_IG10: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M4730_IG60
+ bls G_M4730_IG64
;; size=12 bbWeight=8 PerfScore 36.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz
add x27, x20, #12
@@ -277,10 +277,10 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x50] // [V15 loc11]
- tbnz w3, #31, G_M4730_IG62
+ tbnz w3, #31, G_M4730_IG66
ldr w4, [fp, #0x38] // [V96 tmp74]
cmp w3, w4
- bhi G_M4730_IG72
+ bhi G_M4730_IG76
mov x0, x19
; gcrRegs +[x0]
mov x1, x28
@@ -293,11 +293,11 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w28, [fp, #0x50] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M4730_IG64
+ bhs G_M4730_IG68
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M4730_IG14
@@ -314,7 +314,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
; byrRegs +[x27]
cmp w28, #123
- bne G_M4730_IG66
+ bne G_M4730_IG70
mov w28, wzr
str wzr, [fp, #0x58] // [V08 loc4]
str xzr, [fp, #0x18] // [V85 tmp63]
@@ -322,7 +322,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str wzr, [fp, #0x3C] // [V86 tmp64]
sub w0, w25, #1
cmp w0, w26
- bhs G_M4730_IG64
+ bhs G_M4730_IG68
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M4730_IG16
@@ -362,10 +362,10 @@ G_M4730_IG18: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x5C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M4730_IG67
+ bhs G_M4730_IG71
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M4730_IG20
@@ -376,7 +376,7 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
ldr x4, [fp, #0x18] // [V85 tmp63]
; byrRegs +[x4]
- b G_M4730_IG37
+ b G_M4730_IG41
;; size=8 bbWeight=2 PerfScore 6.00
G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
; byrRegs -[x4]
@@ -386,7 +386,7 @@ G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str w6, [fp, #0x54] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x54] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -400,101 +400,125 @@ G_M4730_IG22: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
;; size=24 bbWeight=16 PerfScore 56.00
G_M4730_IG23: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #32
- bne G_M4730_IG25
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG24: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bne G_M4730_IG27
+ tbnz w25, #31, G_M4730_IG26
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG24
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w2, #44
- bne G_M4730_IG33
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG26: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
+ b G_M4730_IG27
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M4730_IG26: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG26
- ;; size=24 bbWeight=16 PerfScore 104.00
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
G_M4730_IG27: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M4730_IG37
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M4730_IG28: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M4730_IG72
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M4730_IG28
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M4730_IG29: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #45
- bne G_M4730_IG28
+ bne G_M4730_IG30
mov w3, #1
str w3, [fp, #0x58] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M4730_IG28: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG30: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M4730_IG67
+ bhs G_M4730_IG71
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
- b G_M4730_IG30
+ bls G_M4730_IG72
+ b G_M4730_IG32
;; size=28 bbWeight=2 PerfScore 10.00
-G_M4730_IG29: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG31: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
mov w0, #10
madd w2, w28, w0, w2
sub w28, w2, #48
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
;; size=24 bbWeight=8 PerfScore 40.00
-G_M4730_IG30: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG32: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w25, w26
- bhs G_M4730_IG64
+ bhs G_M4730_IG68
ldrh w2, [x27, w25, UXTW #2]
sub w0, w2, #48
movz w1, #0xD1FFAB1E
movk w1, #15 LSL #16
cmp w0, #9
ccmp w28, w1, z, ls
- blt G_M4730_IG29
+ blt G_M4730_IG31
;; size=36 bbWeight=16 PerfScore 128.00
-G_M4730_IG31: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG33: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #32
- bne G_M4730_IG33
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG32: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bne G_M4730_IG37
+ tbnz w25, #31, G_M4730_IG36
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M4730_IG34: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
- beq G_M4730_IG32
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M4730_IG33: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ beq G_M4730_IG34
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M4730_IG35: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
+ b G_M4730_IG37
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M4730_IG36: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M4730_IG72
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M4730_IG36
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
+G_M4730_IG37: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #125
ldr x4, [fp, #0x18] // [V85 tmp63]
...
@@ -12,8 +12,8 @@
; V02 arg2 [V02,T19] ( 5, 15 ) ref -> x20 class-hnd exact single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T49] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 30,260 ) ushort -> [fp+0x5C]
+; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x5C]
; V07 loc3 [V07,T05] ( 12, 74 ) int -> x28
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [fp+0x58]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -134,8 +134,8 @@
; V124 cse1 [V124,T33] ( 3, 12 ) ref -> x4 "CSE - moderate"
; V125 cse2 [V125,T36] ( 3, 12 ) int -> x1 "CSE - moderate"
; V126 cse3 [V126,T34] ( 3, 12 ) ref -> x0 "CSE - moderate"
-; V127 cse4 [V127,T02] ( 18,142 ) int -> x26 "CSE - aggressive"
-; V128 cse5 [V128,T03] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V127 cse4 [V127,T02] ( 20,142 ) int -> x26 "CSE - aggressive"
+; V128 cse5 [V128,T03] ( 17,120 ) byref -> x27 "CSE - aggressive"
; V129 cse6 [V129,T06] ( 6, 60 ) int -> x27 "CSE - aggressive"
; V130 cse7 [V130,T37] ( 3, 12 ) int -> x0 "CSE - moderate"
; V131 cse8 [V131,T10] ( 17, 34 ) ref -> registers multi-def "CSE - aggressive"
@@ -161,7 +161,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w23, w4
;; size=48 bbWeight=1 PerfScore 9.00
G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x20, G_M4730_IG65
+ cbz x20, G_M4730_IG69
cbnz x21, G_M4730_IG04
;; size=8 bbWeight=1 PerfScore 2.00
G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref
@@ -233,7 +233,7 @@ G_M4730_IG10: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M4730_IG60
+ bls G_M4730_IG64
;; size=12 bbWeight=8 PerfScore 36.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz
add x27, x20, #12
@@ -272,10 +272,10 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x50] // [V15 loc11]
- tbnz w3, #31, G_M4730_IG62
+ tbnz w3, #31, G_M4730_IG66
ldr w4, [fp, #0x38] // [V96 tmp74]
cmp w3, w4
- bhi G_M4730_IG72
+ bhi G_M4730_IG76
mov x0, x19
; gcrRegs +[x0]
mov x1, x28
@@ -288,11 +288,11 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w28, [fp, #0x50] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M4730_IG64
+ bhs G_M4730_IG68
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M4730_IG14
@@ -309,7 +309,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
; byrRegs +[x27]
cmp w28, #123
- bne G_M4730_IG66
+ bne G_M4730_IG70
mov w28, wzr
str wzr, [fp, #0x58] // [V08 loc4]
str xzr, [fp, #0x18] // [V85 tmp63]
@@ -317,7 +317,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str wzr, [fp, #0x3C] // [V86 tmp64]
sub w0, w25, #1
cmp w0, w26
- bhs G_M4730_IG64
+ bhs G_M4730_IG68
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M4730_IG16
@@ -357,10 +357,10 @@ G_M4730_IG18: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x5C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M4730_IG67
+ bhs G_M4730_IG71
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M4730_IG20
@@ -371,7 +371,7 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
ldr x4, [fp, #0x18] // [V85 tmp63]
; byrRegs +[x4]
- b G_M4730_IG37
+ b G_M4730_IG41
;; size=8 bbWeight=2 PerfScore 6.00
G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
; byrRegs -[x4]
@@ -381,7 +381,7 @@ G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str w6, [fp, #0x54] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x54] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -395,101 +395,125 @@ G_M4730_IG22: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
;; size=24 bbWeight=16 PerfScore 56.00
G_M4730_IG23: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #32
- bne G_M4730_IG25
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG24: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bne G_M4730_IG27
+ tbnz w25, #31, G_M4730_IG26
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG24
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w2, #44
- bne G_M4730_IG33
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG26: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
+ b G_M4730_IG27
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M4730_IG26: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG26
- ;; size=24 bbWeight=16 PerfScore 104.00
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
G_M4730_IG27: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M4730_IG37
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M4730_IG28: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M4730_IG72
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M4730_IG28
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M4730_IG29: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #45
- bne G_M4730_IG28
+ bne G_M4730_IG30
mov w3, #1
str w3, [fp, #0x58] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M4730_IG28: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG30: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M4730_IG67
+ bhs G_M4730_IG71
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
- b G_M4730_IG30
+ bls G_M4730_IG72
+ b G_M4730_IG32
;; size=28 bbWeight=2 PerfScore 10.00
-G_M4730_IG29: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG31: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
mov w0, #10
madd w2, w28, w0, w2
sub w28, w2, #48
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
;; size=24 bbWeight=8 PerfScore 40.00
-G_M4730_IG30: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG32: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w25, w26
- bhs G_M4730_IG64
+ bhs G_M4730_IG68
ldrh w2, [x27, w25, UXTW #2]
sub w0, w2, #48
movz w1, #0xD1FFAB1E
movk w1, #15 LSL #16
cmp w0, #9
ccmp w28, w1, z, ls
- blt G_M4730_IG29
+ blt G_M4730_IG31
;; size=36 bbWeight=16 PerfScore 128.00
-G_M4730_IG31: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG33: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #32
- bne G_M4730_IG33
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG32: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bne G_M4730_IG37
+ tbnz w25, #31, G_M4730_IG36
+ ;; size=12 bbWeight=2 PerfScore 5.00
+G_M4730_IG34: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG68
+ bls G_M4730_IG72
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
- beq G_M4730_IG32
- ;; size=24 bbWeight=16 PerfScore 104.00
-G_M4730_IG33: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ beq G_M4730_IG34
+ ;; size=24 bbWeight=15.84 PerfScore 102.96
+G_M4730_IG35: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
+ b G_M4730_IG37
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M4730_IG36: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ add w25, w25, #1
+ cmp w26, w25
+ bls G_M4730_IG72
+ ldrh w2, [x27, w25, UXTW #2]
+ cmp w2, #32
+ beq G_M4730_IG36
+ ;; size=24 bbWeight=0.16 PerfScore 1.04
+G_M4730_IG37: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #125
ldr x4, [fp, #0x18] // [V85 tmp63]
...
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.windows.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_pgo.windows.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_tiered.windows.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
coreclr_tests.run.windows.arm64.checked.mch | 109 | 15 | 94 | 0 | -308 | +20,092 |
libraries.crossgen2.windows.arm64.checked.mch | 6 | 5 | 1 | 0 | -396 | +12 |
libraries.pmi.windows.arm64.checked.mch | 7 | 5 | 2 | 0 | -296 | +356 |
libraries_tests.run.windows.arm64.Release.mch | 587 | 150 | 437 | 0 | -5,092 | +718,212 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 11 | 9 | 2 | 0 | -1,060 | +172 |
realworld.run.windows.arm64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
smoke_tests.nativeaot.windows.arm64.checked.mch | 4 | 0 | 4 | 0 | -0 | +256 |
724 | 184 | 540 | 0 | -7,152 | +739,100 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.windows.arm64.checked.mch | 24,449 | 4 | 24,445 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.windows.arm64.checked.mch | 98,319 | 48,543 | 49,776 | 114 (0.12%) | 114 (0.12%) |
benchmarks.run_tiered.windows.arm64.checked.mch | 48,505 | 36,685 | 11,820 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.windows.arm64.checked.mch | 595,369 | 362,737 | 232,632 | 315 (0.05%) | 316 (0.05%) |
libraries.crossgen2.windows.arm64.checked.mch | 243,430 | 15 | 243,415 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.windows.arm64.checked.mch | 304,053 | 6 | 304,047 | 0 (0.00%) | 0 (0.00%) |
libraries_tests.run.windows.arm64.Release.mch | 630,491 | 461,984 | 168,507 | 2,158 (0.34%) | 2,171 (0.34%) |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 316,301 | 21,559 | 294,742 | 0 (0.00%) | 0 (0.00%) |
realworld.run.windows.arm64.checked.mch | 33,195 | 3 | 33,192 | 0 (0.00%) | 0 (0.00%) |
smoke_tests.nativeaot.windows.arm64.checked.mch | 24,181 | 7 | 24,174 | 0 (0.00%) | 0 (0.00%) |
2,318,293 | 931,543 | 1,386,750 | 2,587 (0.11%) | 2,601 (0.11%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 495323964 (overridden on cmd)
Total bytes of diff: 495343748 (overridden on cmd)
Total bytes of delta: 19784 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
904 : 2551.dasm (35.59 % of base)
540 : 147869.dasm (17.88 % of base)
540 : 253005.dasm (18.22 % of base)
536 : 199352.dasm (15.86 % of base)
532 : 36668.dasm (15.89 % of base)
528 : 99870.dasm (17.72 % of base)
528 : 140240.dasm (16.02 % of base)
520 : 31074.dasm (14.72 % of base)
204 : 1926.dasm (22.27 % of base)
200 : 149597.dasm (10.02 % of base)
200 : 377448.dasm (10.10 % of base)
200 : 377491.dasm (10.10 % of base)
200 : 226527.dasm (10.02 % of base)
200 : 377566.dasm (10.10 % of base)
200 : 380117.dasm (10.02 % of base)
200 : 391008.dasm (10.02 % of base)
200 : 1429.dasm (10.02 % of base)
200 : 269985.dasm (9.88 % of base)
200 : 357948.dasm (10.02 % of base)
184 : 257857.dasm (9.47 % of base)
Top file improvements (bytes):
-28 : 218315.dasm (-3.21 % of base)
-28 : 24991.dasm (-2.42 % of base)
-28 : 382578.dasm (-2.44 % of base)
-28 : 383302.dasm (-2.48 % of base)
-28 : 145537.dasm (-2.42 % of base)
-28 : 252784.dasm (-2.42 % of base)
-28 : 296826.dasm (-2.47 % of base)
-28 : 383911.dasm (-2.47 % of base)
-28 : 391056.dasm (-2.47 % of base)
-16 : 1376.dasm (-1.39 % of base)
-12 : 592166.dasm (-0.71 % of base)
-12 : 193666.dasm (-1.04 % of base)
-8 : 528182.dasm (-0.36 % of base)
-4 : 63892.dasm (-0.19 % of base)
-4 : 242828.dasm (-0.19 % of base)
41 total files with Code Size differences (15 improved, 26 regressed), 0 unchanged.
Top method regressions (bytes):
904 (35.59 % of base) : 2551.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
540 (17.88 % of base) : 147869.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
540 (18.22 % of base) : 253005.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
536 (15.86 % of base) : 199352.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
532 (15.89 % of base) : 36668.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
528 (17.72 % of base) : 99870.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
528 (16.02 % of base) : 140240.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
520 (14.72 % of base) : 31074.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
204 (22.27 % of base) : 1926.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Instrumented Tier1)
200 (10.02 % of base) : 149597.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.10 % of base) : 377448.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.10 % of base) : 377491.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.02 % of base) : 226527.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.10 % of base) : 377566.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.02 % of base) : 380117.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.02 % of base) : 391008.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.02 % of base) : 1429.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (9.88 % of base) : 269985.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.02 % of base) : 357948.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
184 (9.47 % of base) : 257857.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
Top method improvements (bytes):
-28 (-3.21 % of base) : 218315.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.42 % of base) : 24991.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.44 % of base) : 382578.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 383302.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.42 % of base) : 145537.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.42 % of base) : 252784.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 296826.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 383911.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 391056.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-16 (-1.39 % of base) : 1376.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Instrumented Tier1)
-12 (-0.71 % of base) : 592166.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-12 (-1.04 % of base) : 193666.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-8 (-0.36 % of base) : 528182.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
-4 (-0.19 % of base) : 242828.dasm - System.Buffers.SharedArrayPool`1[int]:Trim():ubyte:this (Instrumented Tier1)
-4 (-0.19 % of base) : 63892.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Instrumented Tier1)
Top method regressions (percentages):
904 (35.59 % of base) : 2551.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
204 (22.27 % of base) : 1926.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Instrumented Tier1)
540 (18.22 % of base) : 253005.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
540 (17.88 % of base) : 147869.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
528 (17.72 % of base) : 99870.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
528 (16.02 % of base) : 140240.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
532 (15.89 % of base) : 36668.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
536 (15.86 % of base) : 199352.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
520 (14.72 % of base) : 31074.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
200 (10.10 % of base) : 377448.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.10 % of base) : 377491.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.10 % of base) : 377566.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.02 % of base) : 149597.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.02 % of base) : 226527.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.02 % of base) : 380117.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.02 % of base) : 391008.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.02 % of base) : 1429.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (10.02 % of base) : 357948.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
200 (9.88 % of base) : 269985.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
184 (9.54 % of base) : 515416.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
Top method improvements (percentages):
-28 (-3.21 % of base) : 218315.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.48 % of base) : 383302.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 296826.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 383911.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.47 % of base) : 391056.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.44 % of base) : 382578.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.42 % of base) : 24991.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.42 % of base) : 145537.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-2.42 % of base) : 252784.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-16 (-1.39 % of base) : 1376.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Instrumented Tier1)
-12 (-1.04 % of base) : 193666.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-0.71 % of base) : 592166.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-8 (-0.36 % of base) : 528182.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
-4 (-0.19 % of base) : 242828.dasm - System.Buffers.SharedArrayPool`1[int]:Trim():ubyte:this (Instrumented Tier1)
-4 (-0.19 % of base) : 63892.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Instrumented Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 58963476 (overridden on cmd)
Total bytes of diff: 58963092 (overridden on cmd)
Total bytes of delta: -384 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
12 : 213941.dasm (1.80 % of base)
Top file improvements (bytes):
-220 : 96547.dasm (-15.15 % of base)
-60 : 10374.dasm (-11.03 % of base)
-56 : 189810.dasm (-13.86 % of base)
-56 : 217819.dasm (-13.86 % of base)
-4 : 219407.dasm (-0.19 % of base)
6 total files with Code Size differences (5 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
12 (1.80 % of base) : 213941.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-220 (-15.15 % of base) : 96547.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-60 (-11.03 % of base) : 10374.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-56 (-13.86 % of base) : 217819.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-13.86 % of base) : 189810.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-4 (-0.19 % of base) : 219407.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
12 (1.80 % of base) : 213941.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-220 (-15.15 % of base) : 96547.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-56 (-13.86 % of base) : 217819.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-13.86 % of base) : 189810.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-60 (-11.03 % of base) : 10374.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-4 (-0.19 % of base) : 219407.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
6 total methods with Code Size differences (5 improved, 1 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79567996 (overridden on cmd)
Total bytes of diff: 79568056 (overridden on cmd)
Total bytes of delta: 60 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
332 : 243736.dasm (2.71 % of base)
24 : 291942.dasm (3.97 % of base)
Top file improvements (bytes):
-168 : 98933.dasm (-14.53 % of base)
-56 : 203164.dasm (-11.97 % of base)
-56 : 250402.dasm (-11.97 % of base)
-12 : 232696.dasm (-0.71 % of base)
-4 : 291023.dasm (-0.20 % of base)
7 total files with Code Size differences (5 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
332 (2.71 % of base) : 243736.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
24 (3.97 % of base) : 291942.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-168 (-14.53 % of base) : 98933.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-56 (-11.97 % of base) : 250402.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-11.97 % of base) : 203164.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-12 (-0.71 % of base) : 232696.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-4 (-0.20 % of base) : 291023.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
24 (3.97 % of base) : 291942.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
332 (2.71 % of base) : 243736.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
Top method improvements (percentages):
-168 (-14.53 % of base) : 98933.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-56 (-11.97 % of base) : 250402.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-11.97 % of base) : 203164.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-12 (-0.71 % of base) : 232696.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-4 (-0.20 % of base) : 291023.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
7 total methods with Code Size differences (5 improved, 2 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 309697012 (overridden on cmd)
Total bytes of diff: 310410132 (overridden on cmd)
Total bytes of delta: 713120 (0.23 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
6676 : 169009.dasm (74.98 % of base)
6624 : 187537.dasm (75.51 % of base)
6624 : 114038.dasm (75.51 % of base)
6624 : 478480.dasm (75.07 % of base)
6608 : 201665.dasm (74.89 % of base)
6608 : 374667.dasm (74.89 % of base)
6604 : 423296.dasm (74.88 % of base)
6592 : 276034.dasm (74.84 % of base)
6592 : 508727.dasm (74.84 % of base)
6576 : 125815.dasm (74.52 % of base)
6576 : 501299.dasm (74.52 % of base)
6576 : 105349.dasm (74.52 % of base)
6532 : 120761.dasm (75.08 % of base)
6532 : 235461.dasm (75.08 % of base)
6516 : 288162.dasm (73.41 % of base)
6512 : 122881.dasm (73.23 % of base)
6512 : 372245.dasm (73.23 % of base)
6504 : 367202.dasm (73.34 % of base)
6452 : 242711.dasm (72.69 % of base)
6452 : 72400.dasm (72.69 % of base)
Top file improvements (bytes):
-228 : 573184.dasm (-14.54 % of base)
-228 : 591157.dasm (-14.18 % of base)
-192 : 591492.dasm (-21.62 % of base)
-148 : 573211.dasm (-20.56 % of base)
-140 : 573221.dasm (-18.32 % of base)
-140 : 573215.dasm (-22.01 % of base)
-120 : 455998.dasm (-15.71 % of base)
-104 : 573362.dasm (-17.93 % of base)
-80 : 601714.dasm (-14.93 % of base)
-52 : 591491.dasm (-10.57 % of base)
-44 : 467988.dasm (-6.59 % of base)
-28 : 274909.dasm (-3.21 % of base)
-28 : 119521.dasm (-3.21 % of base)
-28 : 242669.dasm (-3.21 % of base)
-28 : 270025.dasm (-3.21 % of base)
-28 : 285285.dasm (-3.21 % of base)
-28 : 337097.dasm (-3.21 % of base)
-28 : 123121.dasm (-3.17 % of base)
-28 : 68609.dasm (-3.21 % of base)
-28 : 124465.dasm (-3.17 % of base)
59 total files with Code Size differences (29 improved, 30 regressed), 0 unchanged.
Top method regressions (bytes):
6676 (74.98 % of base) : 169009.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6624 (75.51 % of base) : 187537.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6624 (75.51 % of base) : 114038.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6624 (75.07 % of base) : 478480.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6608 (74.89 % of base) : 201665.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6608 (74.89 % of base) : 374667.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6604 (74.88 % of base) : 423296.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6592 (74.84 % of base) : 276034.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6592 (74.84 % of base) : 508727.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6576 (74.52 % of base) : 125815.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6576 (74.52 % of base) : 501299.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6576 (74.52 % of base) : 105349.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6532 (75.08 % of base) : 120761.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6532 (75.08 % of base) : 235461.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6516 (73.41 % of base) : 288162.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6512 (73.23 % of base) : 122881.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6512 (73.23 % of base) : 372245.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6504 (73.34 % of base) : 367202.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6452 (72.69 % of base) : 242711.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6452 (72.69 % of base) : 72400.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (bytes):
-228 (-14.54 % of base) : 573184.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1455_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-228 (-14.18 % of base) : 591157.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29613_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-192 (-21.62 % of base) : 591492.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29910_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-148 (-20.56 % of base) : 573211.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1486_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-140 (-22.01 % of base) : 573215.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1493_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-140 (-18.32 % of base) : 573221.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1500_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-120 (-15.71 % of base) : 455998.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-104 (-17.93 % of base) : 573362.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1595_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-80 (-14.93 % of base) : 601714.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33032_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-52 (-10.57 % of base) : 591491.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29909_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-44 (-6.59 % of base) : 467988.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Tier1)
-28 (-3.21 % of base) : 274909.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 119521.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 242669.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 270025.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 285285.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 337097.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.17 % of base) : 123121.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 68609.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.17 % of base) : 124465.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
Top method regressions (percentages):
6624 (75.51 % of base) : 187537.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6624 (75.51 % of base) : 114038.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6532 (75.08 % of base) : 120761.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6532 (75.08 % of base) : 235461.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6624 (75.07 % of base) : 478480.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6676 (74.98 % of base) : 169009.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6448 (74.94 % of base) : 343326.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6448 (74.94 % of base) : 226927.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6448 (74.94 % of base) : 285450.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6448 (74.94 % of base) : 67858.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6448 (74.94 % of base) : 230314.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6448 (74.94 % of base) : 352703.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6608 (74.89 % of base) : 201665.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6608 (74.89 % of base) : 374667.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6604 (74.88 % of base) : 423296.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6592 (74.84 % of base) : 276034.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6592 (74.84 % of base) : 508727.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6576 (74.52 % of base) : 125815.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6576 (74.52 % of base) : 501299.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6576 (74.52 % of base) : 105349.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (percentages):
-140 (-22.01 % of base) : 573215.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1493_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-192 (-21.62 % of base) : 591492.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29910_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-148 (-20.56 % of base) : 573211.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1486_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-140 (-18.32 % of base) : 573221.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1500_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-104 (-17.93 % of base) : 573362.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1595_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-120 (-15.71 % of base) : 455998.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-80 (-14.93 % of base) : 601714.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33032_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-228 (-14.54 % of base) : 573184.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1455_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-228 (-14.18 % of base) : 591157.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29613_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-52 (-10.57 % of base) : 591491.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29909_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-44 (-6.59 % of base) : 467988.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Tier1)
-28 (-3.21 % of base) : 274909.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 119521.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 242669.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 270025.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 285285.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 337097.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 68609.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 213949.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-28 (-3.21 % of base) : 288105.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 169004992 (overridden on cmd)
Total bytes of diff: 169004104 (overridden on cmd)
Total bytes of delta: -888 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
148 : 279104.dasm (6.29 % of base)
24 : 118968.dasm (3.97 % of base)
Top file improvements (bytes):
-204 : 301867.dasm (-22.08 % of base)
-172 : 297961.dasm (-22.75 % of base)
-164 : 297964.dasm (-23.56 % of base)
-160 : 297967.dasm (-18.60 % of base)
-116 : 298049.dasm (-18.83 % of base)
-68 : 286285.dasm (-12.98 % of base)
-64 : 301866.dasm (-12.12 % of base)
-56 : 204853.dasm (-11.97 % of base)
-56 : 62524.dasm (-11.97 % of base)
11 total files with Code Size differences (9 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
148 (6.29 % of base) : 279104.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
24 (3.97 % of base) : 118968.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-204 (-22.08 % of base) : 301867.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32921_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-172 (-22.75 % of base) : 297961.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31846_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-164 (-23.56 % of base) : 297964.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31853_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-160 (-18.60 % of base) : 297967.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31861_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-18.83 % of base) : 298049.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31956_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-68 (-12.98 % of base) : 286285.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2746_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-64 (-12.12 % of base) : 301866.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32920_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-11.97 % of base) : 62524.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-11.97 % of base) : 204853.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
Top method regressions (percentages):
148 (6.29 % of base) : 279104.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
24 (3.97 % of base) : 118968.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-164 (-23.56 % of base) : 297964.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31853_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-172 (-22.75 % of base) : 297961.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31846_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-204 (-22.08 % of base) : 301867.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32921_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-18.83 % of base) : 298049.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31956_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-160 (-18.60 % of base) : 297967.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31861_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-68 (-12.98 % of base) : 286285.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2746_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-64 (-12.12 % of base) : 301866.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32920_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-11.97 % of base) : 62524.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-56 (-11.97 % of base) : 204853.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
11 total methods with Code Size differences (9 improved, 2 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3972452 (overridden on cmd)
Total bytes of diff: 3972708 (overridden on cmd)
Total bytes of delta: 256 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
64 : 1579.dasm (3.09 % of base)
64 : 11754.dasm (3.41 % of base)
64 : 4605.dasm (2.96 % of base)
64 : 6510.dasm (3.26 % of base)
4 total files with Code Size differences (0 improved, 4 regressed), 0 unchanged.
Top method regressions (bytes):
64 (3.41 % of base) : 11754.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (3.26 % of base) : 6510.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (3.09 % of base) : 1579.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
64 (2.96 % of base) : 4605.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
64 (3.41 % of base) : 11754.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (3.26 % of base) : 6510.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (3.09 % of base) : 1579.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
64 (2.96 % of base) : 4605.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
4 total methods with Code Size differences (0 improved, 4 regressed).
Diffs are based on 2,492,949 contexts (983,689 MinOpts, 1,509,260 FullOpts).
MISSED contexts: base: 3,859 (0.15%), diff: 3,862 (0.15%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 41,762,326 | +26,409 |
coreclr_tests.run.windows.x64.checked.mch | 392,865,429 | +22,605 |
libraries.crossgen2.windows.x64.checked.mch | 39,442,575 | -362 |
libraries.pmi.windows.x64.checked.mch | 61,196,926 | -77 |
libraries_tests.run.windows.x64.Release.mch | 279,033,795 | +831,714 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 133,435,993 | -1,213 |
smoke_tests.nativeaot.windows.x64.checked.mch | 5,091,660 | +357 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 27,103,601 | +26,409 |
coreclr_tests.run.windows.x64.checked.mch | 119,322,437 | +22,605 |
libraries.crossgen2.windows.x64.checked.mch | 39,441,386 | -362 |
libraries.pmi.windows.x64.checked.mch | 61,083,407 | -77 |
libraries_tests.run.windows.x64.Release.mch | 100,665,479 | +831,714 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 123,012,623 | -1,213 |
smoke_tests.nativeaot.windows.x64.checked.mch | 5,090,751 | +357 |
@@ -12,74 +12,74 @@
; V00 this [V00,T05] ( 8, 4.04) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 14, 10.04) byref -> rbx ld-addr-op single-def
; V02 loc0 [V02 ] ( 13, 4.87) struct (24) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.RuntimeType]>
-; V03 loc1 [V03,T13] ( 5, 3 ) ref -> rdi class-hnd exact single-def <System.RuntimeType>
+; V03 loc1 [V03,T12] ( 5, 3 ) ref -> rdi class-hnd exact single-def <System.RuntimeType>
; V04 loc2 [V04,T04] ( 5, 6.65) ref -> rdi class-hnd single-def <<unknown class>>
; V05 loc3 [V05,T02] ( 5, 8.71) int -> r14
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType>
;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType>
-; V08 loc6 [V08,T50] ( 4, 0 ) ref -> rsi class-hnd exact single-def <<unknown class>>
-; V09 loc7 [V09,T52] ( 3, 0 ) ref -> rdi class-hnd single-def <<unknown class>>
-; V10 loc8 [V10,T48] ( 5, 0 ) int -> r14
+; V08 loc6 [V08,T49] ( 4, 0 ) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V09 loc7 [V09,T51] ( 3, 0 ) ref -> rdi class-hnd single-def <<unknown class>>
+; V10 loc8 [V10,T47] ( 5, 0 ) int -> r14
;* V11 loc9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType>
-; V12 loc10 [V12,T53] ( 3, 0 ) ref -> r15 class-hnd <<unknown class>>
-; V13 loc11 [V13,T49] ( 5, 0 ) int -> r13
+; V12 loc10 [V12,T52] ( 3, 0 ) ref -> r15 class-hnd <<unknown class>>
+; V13 loc11 [V13,T48] ( 5, 0 ) int -> r13
; V14 loc12 [V14 ] ( 3, 0 ) struct (24) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.HashSet`1+Enumerator[System.RuntimeType]>
-; V15 loc13 [V15,T54] ( 3, 0 ) ref -> rsi class-hnd exact <System.RuntimeType>
+; V15 loc13 [V15,T53] ( 3, 0 ) ref -> rsi class-hnd exact <System.RuntimeType>
; V16 OutArgs [V16 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V17 tmp1 [V17,T55] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp2 [V18,T56] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
-; V19 tmp3 [V19,T60] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V20 tmp4 [V20,T47] ( 7, 0 ) ref -> r15 class-hnd "spilling QMark2" <System.RuntimeType>
-; V21 tmp5 [V21,T57] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
-; V22 tmp6 [V22,T61] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V23 tmp7 [V23,T51] ( 4, 0 ) ref -> rax class-hnd "spilling QMark2" <System.RuntimeType>
+; V17 tmp1 [V17,T54] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp2 [V18,T55] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
+; V19 tmp3 [V19,T59] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
+; V20 tmp4 [V20,T46] ( 7, 0 ) ref -> r15 class-hnd "spilling QMark2" <System.RuntimeType>
+; V21 tmp5 [V21,T56] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
+; V22 tmp6 [V22,T60] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
+; V23 tmp7 [V23,T50] ( 4, 0 ) ref -> rax class-hnd "spilling QMark2" <System.RuntimeType>
;* V24 tmp8 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.MdUtf8String>
-; V25 tmp9 [V25,T32] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V26 tmp10 [V26,T39] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V27 tmp11 [V27,T21] ( 8, 0.15) ref -> r13 class-hnd single-def "spilling QMark2" <System.RuntimeType>
-; V28 tmp12 [V28,T25] ( 3, 0.06) ref -> rdi class-hnd exact single-def "dup spill" <<unknown class>>
+; V25 tmp9 [V25,T31] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V26 tmp10 [V26,T38] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V27 tmp11 [V27,T20] ( 8, 0.15) ref -> r15 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V28 tmp12 [V28,T24] ( 3, 0.06) ref -> rdi class-hnd exact single-def "dup spill" <<unknown class>>
; V29 tmp13 [V29 ] ( 2, 0.04) struct (24) [rbp-0x80] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.RuntimeType+RuntimeTypeCache+Filter>
;* V30 tmp14 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V31 tmp15 [V31,T33] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V32 tmp16 [V32,T40] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V33 tmp17 [V33,T22] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
-; V34 tmp18 [V34,T26] ( 3, 0.06) ref -> r14 class-hnd exact single-def "dup spill" <<unknown class>>
+; V31 tmp15 [V31,T32] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V32 tmp16 [V32,T39] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V33 tmp17 [V33,T21] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V34 tmp18 [V34,T25] ( 3, 0.06) ref -> r14 class-hnd exact single-def "dup spill" <<unknown class>>
; V35 tmp19 [V35 ] ( 2, 0.04) struct (24) [rbp-0x98] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.RuntimeType+RuntimeTypeCache+Filter>
;* V36 tmp20 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V37 tmp21 [V37,T34] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V38 tmp22 [V38,T41] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V39 tmp23 [V39,T23] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
-; V40 tmp24 [V40,T27] ( 3, 0.06) ref -> rbx class-hnd exact single-def "dup spill" <<unknown class>>
+; V37 tmp21 [V37,T33] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V38 tmp22 [V38,T40] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V39 tmp23 [V39,T22] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V40 tmp24 [V40,T26] ( 3, 0.06) ref -> rbx class-hnd exact single-def "dup spill" <<unknown class>>
; V41 tmp25 [V41 ] ( 2, 0.04) struct (24) [rbp-0xB0] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.RuntimeType+RuntimeTypeCache+Filter>
;* V42 tmp26 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V43 tmp27 [V43,T35] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V44 tmp28 [V44,T42] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V45 tmp29 [V45,T24] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V43 tmp27 [V43,T34] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V44 tmp28 [V44,T41] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V45 tmp29 [V45,T23] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
; V46 tmp30 [V46,T03] ( 3, 8.11) ref -> rdx "CASTCLASS eval op1"
-; V47 tmp31 [V47,T11] ( 3, 4.06) long -> rcx "fgMakeTemp is creating a new local variable"
-; V48 tmp32 [V48,T00] ( 5, 17.87) ref -> r13 class-hnd "spilling QMark2" <System.RuntimeType>
+; V47 tmp31 [V47,T10] ( 3, 4.06) long -> rcx "fgMakeTemp is creating a new local variable"
+; V48 tmp32 [V48,T00] ( 5, 17.87) ref -> r15 class-hnd "spilling QMark2" <System.RuntimeType>
;* V49 tmp33 [V49 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.MdUtf8String>
; V50 tmp34 [V50,T06] ( 3, 6 ) ref -> rdi single-def "handle histogram profile tmp"
-; V51 tmp35 [V51,T28] ( 3, 0.06) ref -> r14 single-def "handle histogram profile tmp"
+; V51 tmp35 [V51,T27] ( 3, 0.06) ref -> r14 single-def "handle histogram profile tmp"
;* V52 tmp36 [V52 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V53 tmp37 [V53 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V54 tmp38 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V55 tmp39 [V55 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V56 tmp40 [V56 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V57 tmp41 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
-;* V58 tmp42 [V58,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V58 tmp42 [V58,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V59 tmp43 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-; V60 tmp44 [V60,T12] ( 5, 9.95) long -> r12 "Inlining Arg"
+; V60 tmp44 [V60,T11] ( 5, 9.95) long -> r13 "Inlining Arg"
;* V61 tmp45 [V61 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V62 tmp46 [V62,T16] ( 3, 0.88) ubyte -> r15 "Inline stloc first use temp"
-; V63 tmp47 [V63,T19] ( 3, 0.88) ubyte -> r15 "Inline return value spill temp"
+; V62 tmp46 [V62,T15] ( 3, 0.88) ubyte -> r12 "Inline stloc first use temp"
+; V63 tmp47 [V63,T18] ( 3, 0.88) ubyte -> r12 "Inline return value spill temp"
;* V64 tmp48 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V65 tmp49 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V66 tmp50 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V67 tmp51 [V67 ] ( 1, 0 ) int -> [rbp-0xB8] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V68 tmp52 [V68 ] ( 1, 0 ) int -> [rbp-0xC0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V69 tmp53 [V69 ] ( 3, 0 ) struct (16) [rbp-0xD0] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-; V70 tmp54 [V70,T15] ( 4, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.RuntimeType[]>
+; V70 tmp54 [V70,T14] ( 4, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.RuntimeType[]>
; V71 tmp55 [V71,T07] ( 3, 6 ) ref -> rbx class-hnd exact single-def "dup spill" <System.RuntimeType[]>
; V72 tmp56 [V72 ] ( 7, 1.87) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V02._items (fldOffset=0x0)" P-DEP
; V73 tmp57 [V73 ] ( 6, 2.87) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V02._item (fldOffset=0x8)" P-DEP
@@ -93,29 +93,28 @@
;* V81 tmp65 [V81 ] ( 0, 0 ) int -> zero-ref "field V24.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
;* V82 tmp66 [V82 ] ( 0, 0 ) long -> zero-ref "field V49.m_pStringHeap (fldOffset=0x0)" P-INDEP
;* V83 tmp67 [V83 ] ( 0, 0 ) int -> zero-ref "field V49.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-; V84 tmp68 [V84,T20] ( 2, 0.44) long -> r15 "field V59.m_pStringHeap (fldOffset=0x0)" P-INDEP
-; V85 tmp69 [V85,T18] ( 4, 0.88) int -> rax "field V59.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+; V84 tmp68 [V84,T19] ( 2, 0.44) long -> r12 "field V59.m_pStringHeap (fldOffset=0x0)" P-INDEP
+; V85 tmp69 [V85,T17] ( 4, 0.88) int -> rax "field V59.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
; V86 tmp70 [V86 ] ( 3, 0 ) long -> [rbp-0xD0] do-not-enreg[X] addr-exposed "field V69.m_pStringHeap (fldOffset=0x0)" P-DEP
; V87 tmp71 [V87 ] ( 3, 0 ) int -> [rbp-0xC8] do-not-enreg[X] addr-exposed "field V69.m_StringHeapByteLength (fldOffset=0x8)" P-DEP
-; V88 tmp72 [V88,T58] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
-; V89 tmp73 [V89,T59] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V90 tmp74 [V90,T62] ( 2, 0 ) long -> rdx "argument with side effect"
+; V88 tmp72 [V88,T57] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
+; V89 tmp73 [V89,T58] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V90 tmp74 [V90,T61] ( 2, 0 ) long -> rdx "argument with side effect"
; V91 tmp75 [V91 ] ( 5, 0.01) struct (16) [rbp-0xE0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.MdUtf8String>
-;* V92 tmp76 [V92,T63] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V93 tmp77 [V93,T46] ( 0, 0 ) byref -> zero-ref "argument with side effect"
+;* V92 tmp76 [V92,T62] ( 0, 0 ) byref -> zero-ref "argument with side effect"
+;* V93 tmp77 [V93,T45] ( 0, 0 ) byref -> zero-ref "argument with side effect"
; V94 tmp78 [V94,T08] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
-; V95 tmp79 [V95,T29] ( 3, 0.06) ref -> rcx single-def "argument with side effect"
-;* V96 tmp80 [V96,T43] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V97 tmp81 [V97,T44] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V98 tmp82 [V98,T45] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V99 PSPSym [V99,T17] ( 1, 1 ) long -> [rbp-0xE8] do-not-enreg[V] "PSPSym"
-; V100 cse0 [V100,T30] ( 4, 0.04) long -> rdi "CSE - conservative"
-; V101 cse1 [V101,T10] ( 3, 5.00) int -> rcx "CSE - aggressive"
-; V102 cse2 [V102,T09] ( 4, 5.25) int -> r15 multi-def "CSE - aggressive"
-; V103 cse3 [V103,T31] ( 4, 0.04) long -> r12 "CSE - conservative"
+; V95 tmp79 [V95,T28] ( 3, 0.06) ref -> rcx single-def "argument with side effect"
+;* V96 tmp80 [V96,T42] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V97 tmp81 [V97,T43] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V98 tmp82 [V98,T44] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V99 PSPSym [V99,T16] ( 1, 1 ) long -> [rbp-0xE8] do-not-enreg[V] "PSPSym"
+; V100 cse0 [V100,T29] ( 4, 0.04) long -> rdi "CSE - conservative"
+; V101 cse1 [V101,T09] ( 3, 5.00) int -> rcx "CSE - aggressive"
+; V102 cse2 [V102,T30] ( 4, 0.04) long -> r13 "CSE - conservative"
+; V103 cse3 [V103,T35] ( 2, 0.02) ref -> rcx "CSE - conservative"
; V104 cse4 [V104,T36] ( 2, 0.02) ref -> rcx "CSE - conservative"
; V105 cse5 [V105,T37] ( 2, 0.02) ref -> rcx "CSE - conservative"
-; V106 cse6 [V106,T38] ( 2, 0.02) ref -> rcx "CSE - conservative"
;
; Lcl frame size = 216
@@ -202,104 +201,103 @@ G_M12189_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb
G_M12189_IG05: ; bbWeight=0.60, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
xor r14d, r14d
- mov r15d, dword ptr [rdi+0x08]
- test r15d, r15d
+ cmp dword ptr [rdi+0x08], 0
jle G_M12189_IG25
- ;; size=16 bbWeight=0.60 PerfScore 2.09
+ ;; size=13 bbWeight=0.60 PerfScore 2.54
G_M12189_IG06: ; bbWeight=2.03, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, r14d
mov rdx, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[rdx]
- mov r13, rdx
- ; gcrRegs +[r13]
- test r13, r13
+ mov r15, rdx
+ ; gcrRegs +[r15]
+ test r15, r15
je SHORT G_M12189_IG09
;; size=16 bbWeight=2.03 PerfScore 7.60
-G_M12189_IG07: ; bbWeight=1.01, gcrefRegs=20C4 {rdx rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
+G_M12189_IG07: ; bbWeight=1.01, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, 0xD1FFAB1E ; System.RuntimeType
- cmp qword ptr [r13], rcx
+ cmp qword ptr [r15], rcx
je SHORT G_M12189_IG09
- ;; size=16 bbWeight=1.01 PerfScore 4.31
+ ;; size=15 bbWeight=1.01 PerfScore 4.31
G_M12189_IG08: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi r13]
+ ; gcrRegs -[rsi rdi r15]
; byrRegs -[rbx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M12189_IG09: ; bbWeight=2.03, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rax] +[rsi rdi r13]
+G_M12189_IG09: ; bbWeight=2.03, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[rax] +[rsi rdi r15]
; byrRegs +[rbx]
mov ecx, dword ptr [rbx+0x10]
cmp ecx, 1
je SHORT G_M12189_IG11
;; size=8 bbWeight=2.03 PerfScore 6.59
-G_M12189_IG10: ; bbWeight=0.94, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
+G_M12189_IG10: ; bbWeight=0.94, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
cmp ecx, 2
jne SHORT G_M12189_IG21
;; size=5 bbWeight=0.94 PerfScore 1.18
-G_M12189_IG11: ; bbWeight=2.03, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, r13
+G_M12189_IG11: ; bbWeight=2.03, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ mov rcx, r15
; gcrRegs +[rcx]
call <unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r12, rax
- test r12, r12
+ mov r13, rax
+ test r13, r13
jne SHORT G_M12189_IG16
;; size=16 bbWeight=2.03 PerfScore 5.58
-G_M12189_IG12: ; bbWeight=0, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref
+G_M12189_IG12: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
-G_M12189_IG13: ; bbWeight=0.44, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- mov r15, r12
+G_M12189_IG13: ; bbWeight=0.44, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ mov r12, r13
cmp dword ptr [rbx+0x10], 1
jne SHORT G_M12189_IG17
;; size=9 bbWeight=0.44 PerfScore 1.87
-G_M12189_IG14: ; bbWeight=0.44, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
+G_M12189_IG14: ; bbWeight=0.44, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
cmp eax, dword ptr [rbx+0x08]
je SHORT G_M12189_IG18
;; size=5 bbWeight=0.44 PerfScore 1.75
-G_M12189_IG15: ; bbWeight=0.40, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- xor r15d, r15d
+G_M12189_IG15: ; bbWeight=0.40, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ xor r12d, r12d
jmp SHORT G_M12189_IG19
;; size=5 bbWeight=0.40 PerfScore 0.90
-G_M12189_IG16: ; bbWeight=0.44, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, r12
+G_M12189_IG16: ; bbWeight=0.44, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
...
@@ -12,74 +12,74 @@
; V00 this [V00,T05] ( 8, 4.04) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 14, 10.04) byref -> rbx ld-addr-op single-def
; V02 loc0 [V02 ] ( 13, 4.87) struct (24) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.RuntimeType]>
-; V03 loc1 [V03,T13] ( 5, 3 ) ref -> rdi class-hnd exact single-def <System.RuntimeType>
+; V03 loc1 [V03,T12] ( 5, 3 ) ref -> rdi class-hnd exact single-def <System.RuntimeType>
; V04 loc2 [V04,T04] ( 5, 6.65) ref -> rdi class-hnd single-def <<unknown class>>
; V05 loc3 [V05,T02] ( 5, 8.71) int -> r14
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType>
;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType>
-; V08 loc6 [V08,T50] ( 4, 0 ) ref -> rsi class-hnd exact single-def <<unknown class>>
-; V09 loc7 [V09,T52] ( 3, 0 ) ref -> rdi class-hnd single-def <<unknown class>>
-; V10 loc8 [V10,T48] ( 5, 0 ) int -> r14
+; V08 loc6 [V08,T49] ( 4, 0 ) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V09 loc7 [V09,T51] ( 3, 0 ) ref -> rdi class-hnd single-def <<unknown class>>
+; V10 loc8 [V10,T47] ( 5, 0 ) int -> r14
;* V11 loc9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType>
-; V12 loc10 [V12,T53] ( 3, 0 ) ref -> r15 class-hnd <<unknown class>>
-; V13 loc11 [V13,T49] ( 5, 0 ) int -> r13
+; V12 loc10 [V12,T52] ( 3, 0 ) ref -> r15 class-hnd <<unknown class>>
+; V13 loc11 [V13,T48] ( 5, 0 ) int -> r13
; V14 loc12 [V14 ] ( 3, 0 ) struct (24) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.HashSet`1+Enumerator[System.RuntimeType]>
-; V15 loc13 [V15,T54] ( 3, 0 ) ref -> rsi class-hnd exact <System.RuntimeType>
+; V15 loc13 [V15,T53] ( 3, 0 ) ref -> rsi class-hnd exact <System.RuntimeType>
; V16 OutArgs [V16 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V17 tmp1 [V17,T55] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp2 [V18,T56] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
-; V19 tmp3 [V19,T60] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V20 tmp4 [V20,T47] ( 7, 0 ) ref -> r15 class-hnd "spilling QMark2" <System.RuntimeType>
-; V21 tmp5 [V21,T57] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
-; V22 tmp6 [V22,T61] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V23 tmp7 [V23,T51] ( 4, 0 ) ref -> rax class-hnd "spilling QMark2" <System.RuntimeType>
+; V17 tmp1 [V17,T54] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp2 [V18,T55] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
+; V19 tmp3 [V19,T59] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
+; V20 tmp4 [V20,T46] ( 7, 0 ) ref -> r15 class-hnd "spilling QMark2" <System.RuntimeType>
+; V21 tmp5 [V21,T56] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
+; V22 tmp6 [V22,T60] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
+; V23 tmp7 [V23,T50] ( 4, 0 ) ref -> rax class-hnd "spilling QMark2" <System.RuntimeType>
;* V24 tmp8 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.MdUtf8String>
-; V25 tmp9 [V25,T32] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V26 tmp10 [V26,T39] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V27 tmp11 [V27,T21] ( 8, 0.15) ref -> r13 class-hnd single-def "spilling QMark2" <System.RuntimeType>
-; V28 tmp12 [V28,T25] ( 3, 0.06) ref -> rdi class-hnd exact single-def "dup spill" <<unknown class>>
+; V25 tmp9 [V25,T31] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V26 tmp10 [V26,T38] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V27 tmp11 [V27,T20] ( 8, 0.15) ref -> r15 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V28 tmp12 [V28,T24] ( 3, 0.06) ref -> rdi class-hnd exact single-def "dup spill" <<unknown class>>
; V29 tmp13 [V29 ] ( 2, 0.04) struct (24) [rbp-0x80] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.RuntimeType+RuntimeTypeCache+Filter>
;* V30 tmp14 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V31 tmp15 [V31,T33] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V32 tmp16 [V32,T40] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V33 tmp17 [V33,T22] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
-; V34 tmp18 [V34,T26] ( 3, 0.06) ref -> r14 class-hnd exact single-def "dup spill" <<unknown class>>
+; V31 tmp15 [V31,T32] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V32 tmp16 [V32,T39] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V33 tmp17 [V33,T21] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V34 tmp18 [V34,T25] ( 3, 0.06) ref -> r14 class-hnd exact single-def "dup spill" <<unknown class>>
; V35 tmp19 [V35 ] ( 2, 0.04) struct (24) [rbp-0x98] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.RuntimeType+RuntimeTypeCache+Filter>
;* V36 tmp20 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V37 tmp21 [V37,T34] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V38 tmp22 [V38,T41] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V39 tmp23 [V39,T23] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
-; V40 tmp24 [V40,T27] ( 3, 0.06) ref -> rbx class-hnd exact single-def "dup spill" <<unknown class>>
+; V37 tmp21 [V37,T33] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V38 tmp22 [V38,T40] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V39 tmp23 [V39,T22] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V40 tmp24 [V40,T26] ( 3, 0.06) ref -> rbx class-hnd exact single-def "dup spill" <<unknown class>>
; V41 tmp25 [V41 ] ( 2, 0.04) struct (24) [rbp-0xB0] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.RuntimeType+RuntimeTypeCache+Filter>
;* V42 tmp26 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V43 tmp27 [V43,T35] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V44 tmp28 [V44,T42] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V45 tmp29 [V45,T24] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V43 tmp27 [V43,T34] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V44 tmp28 [V44,T41] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V45 tmp29 [V45,T23] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
; V46 tmp30 [V46,T03] ( 3, 8.11) ref -> rdx "CASTCLASS eval op1"
-; V47 tmp31 [V47,T11] ( 3, 4.06) long -> rcx "fgMakeTemp is creating a new local variable"
-; V48 tmp32 [V48,T00] ( 5, 17.87) ref -> r13 class-hnd "spilling QMark2" <System.RuntimeType>
+; V47 tmp31 [V47,T10] ( 3, 4.06) long -> rcx "fgMakeTemp is creating a new local variable"
+; V48 tmp32 [V48,T00] ( 5, 17.87) ref -> r15 class-hnd "spilling QMark2" <System.RuntimeType>
;* V49 tmp33 [V49 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.MdUtf8String>
; V50 tmp34 [V50,T06] ( 3, 6 ) ref -> rdi single-def "handle histogram profile tmp"
-; V51 tmp35 [V51,T28] ( 3, 0.06) ref -> r14 single-def "handle histogram profile tmp"
+; V51 tmp35 [V51,T27] ( 3, 0.06) ref -> r14 single-def "handle histogram profile tmp"
;* V52 tmp36 [V52 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V53 tmp37 [V53 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V54 tmp38 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V55 tmp39 [V55 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V56 tmp40 [V56 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V57 tmp41 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
-;* V58 tmp42 [V58,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V58 tmp42 [V58,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V59 tmp43 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-; V60 tmp44 [V60,T12] ( 5, 9.95) long -> r12 "Inlining Arg"
+; V60 tmp44 [V60,T11] ( 5, 9.95) long -> r13 "Inlining Arg"
;* V61 tmp45 [V61 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V62 tmp46 [V62,T16] ( 3, 0.88) ubyte -> r15 "Inline stloc first use temp"
-; V63 tmp47 [V63,T19] ( 3, 0.88) ubyte -> r15 "Inline return value spill temp"
+; V62 tmp46 [V62,T15] ( 3, 0.88) ubyte -> r12 "Inline stloc first use temp"
+; V63 tmp47 [V63,T18] ( 3, 0.88) ubyte -> r12 "Inline return value spill temp"
;* V64 tmp48 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V65 tmp49 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V66 tmp50 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V67 tmp51 [V67 ] ( 1, 0 ) int -> [rbp-0xB8] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V68 tmp52 [V68 ] ( 1, 0 ) int -> [rbp-0xC0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V69 tmp53 [V69 ] ( 3, 0 ) struct (16) [rbp-0xD0] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-; V70 tmp54 [V70,T15] ( 4, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.RuntimeType[]>
+; V70 tmp54 [V70,T14] ( 4, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.RuntimeType[]>
; V71 tmp55 [V71,T07] ( 3, 6 ) ref -> rbx class-hnd exact single-def "dup spill" <System.RuntimeType[]>
; V72 tmp56 [V72 ] ( 7, 1.87) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V02._items (fldOffset=0x0)" P-DEP
; V73 tmp57 [V73 ] ( 6, 2.87) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V02._item (fldOffset=0x8)" P-DEP
@@ -93,29 +93,28 @@
;* V81 tmp65 [V81 ] ( 0, 0 ) int -> zero-ref "field V24.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
;* V82 tmp66 [V82 ] ( 0, 0 ) long -> zero-ref "field V49.m_pStringHeap (fldOffset=0x0)" P-INDEP
;* V83 tmp67 [V83 ] ( 0, 0 ) int -> zero-ref "field V49.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-; V84 tmp68 [V84,T20] ( 2, 0.44) long -> r15 "field V59.m_pStringHeap (fldOffset=0x0)" P-INDEP
-; V85 tmp69 [V85,T18] ( 4, 0.88) int -> rax "field V59.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+; V84 tmp68 [V84,T19] ( 2, 0.44) long -> r12 "field V59.m_pStringHeap (fldOffset=0x0)" P-INDEP
+; V85 tmp69 [V85,T17] ( 4, 0.88) int -> rax "field V59.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
; V86 tmp70 [V86 ] ( 3, 0 ) long -> [rbp-0xD0] do-not-enreg[X] addr-exposed "field V69.m_pStringHeap (fldOffset=0x0)" P-DEP
; V87 tmp71 [V87 ] ( 3, 0 ) int -> [rbp-0xC8] do-not-enreg[X] addr-exposed "field V69.m_StringHeapByteLength (fldOffset=0x8)" P-DEP
-; V88 tmp72 [V88,T58] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
-; V89 tmp73 [V89,T59] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V90 tmp74 [V90,T62] ( 2, 0 ) long -> rdx "argument with side effect"
+; V88 tmp72 [V88,T57] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
+; V89 tmp73 [V89,T58] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V90 tmp74 [V90,T61] ( 2, 0 ) long -> rdx "argument with side effect"
; V91 tmp75 [V91 ] ( 5, 0.01) struct (16) [rbp-0xE0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.MdUtf8String>
-;* V92 tmp76 [V92,T63] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V93 tmp77 [V93,T46] ( 0, 0 ) byref -> zero-ref "argument with side effect"
+;* V92 tmp76 [V92,T62] ( 0, 0 ) byref -> zero-ref "argument with side effect"
+;* V93 tmp77 [V93,T45] ( 0, 0 ) byref -> zero-ref "argument with side effect"
; V94 tmp78 [V94,T08] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
-; V95 tmp79 [V95,T29] ( 3, 0.06) ref -> rcx single-def "argument with side effect"
-;* V96 tmp80 [V96,T43] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V97 tmp81 [V97,T44] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V98 tmp82 [V98,T45] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V99 PSPSym [V99,T17] ( 1, 1 ) long -> [rbp-0xE8] do-not-enreg[V] "PSPSym"
-; V100 cse0 [V100,T30] ( 4, 0.04) long -> rdi "CSE - conservative"
-; V101 cse1 [V101,T10] ( 3, 5.00) int -> rcx "CSE - aggressive"
-; V102 cse2 [V102,T09] ( 4, 5.25) int -> r15 multi-def "CSE - aggressive"
-; V103 cse3 [V103,T31] ( 4, 0.04) long -> r12 "CSE - conservative"
+; V95 tmp79 [V95,T28] ( 3, 0.06) ref -> rcx single-def "argument with side effect"
+;* V96 tmp80 [V96,T42] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V97 tmp81 [V97,T43] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V98 tmp82 [V98,T44] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V99 PSPSym [V99,T16] ( 1, 1 ) long -> [rbp-0xE8] do-not-enreg[V] "PSPSym"
+; V100 cse0 [V100,T29] ( 4, 0.04) long -> rdi "CSE - conservative"
+; V101 cse1 [V101,T09] ( 3, 5.00) int -> rcx "CSE - aggressive"
+; V102 cse2 [V102,T30] ( 4, 0.04) long -> r13 "CSE - conservative"
+; V103 cse3 [V103,T35] ( 2, 0.02) ref -> rcx "CSE - conservative"
; V104 cse4 [V104,T36] ( 2, 0.02) ref -> rcx "CSE - conservative"
; V105 cse5 [V105,T37] ( 2, 0.02) ref -> rcx "CSE - conservative"
-; V106 cse6 [V106,T38] ( 2, 0.02) ref -> rcx "CSE - conservative"
;
; Lcl frame size = 216
@@ -202,104 +201,103 @@ G_M12189_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb
G_M12189_IG05: ; bbWeight=0.60, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
xor r14d, r14d
- mov r15d, dword ptr [rdi+0x08]
- test r15d, r15d
+ cmp dword ptr [rdi+0x08], 0
jle G_M12189_IG25
- ;; size=16 bbWeight=0.60 PerfScore 2.09
+ ;; size=13 bbWeight=0.60 PerfScore 2.54
G_M12189_IG06: ; bbWeight=2.03, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, r14d
mov rdx, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[rdx]
- mov r13, rdx
- ; gcrRegs +[r13]
- test r13, r13
+ mov r15, rdx
+ ; gcrRegs +[r15]
+ test r15, r15
je SHORT G_M12189_IG09
;; size=16 bbWeight=2.03 PerfScore 7.60
-G_M12189_IG07: ; bbWeight=1.01, gcrefRegs=20C4 {rdx rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
+G_M12189_IG07: ; bbWeight=1.01, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, 0xD1FFAB1E ; System.RuntimeType
- cmp qword ptr [r13], rcx
+ cmp qword ptr [r15], rcx
je SHORT G_M12189_IG09
- ;; size=16 bbWeight=1.01 PerfScore 4.31
+ ;; size=15 bbWeight=1.01 PerfScore 4.31
G_M12189_IG08: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi r13]
+ ; gcrRegs -[rsi rdi r15]
; byrRegs -[rbx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M12189_IG09: ; bbWeight=2.03, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rax] +[rsi rdi r13]
+G_M12189_IG09: ; bbWeight=2.03, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[rax] +[rsi rdi r15]
; byrRegs +[rbx]
mov ecx, dword ptr [rbx+0x10]
cmp ecx, 1
je SHORT G_M12189_IG11
;; size=8 bbWeight=2.03 PerfScore 6.59
-G_M12189_IG10: ; bbWeight=0.94, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
+G_M12189_IG10: ; bbWeight=0.94, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
cmp ecx, 2
jne SHORT G_M12189_IG21
;; size=5 bbWeight=0.94 PerfScore 1.18
-G_M12189_IG11: ; bbWeight=2.03, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, r13
+G_M12189_IG11: ; bbWeight=2.03, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ mov rcx, r15
; gcrRegs +[rcx]
call <unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r12, rax
- test r12, r12
+ mov r13, rax
+ test r13, r13
jne SHORT G_M12189_IG16
;; size=16 bbWeight=2.03 PerfScore 5.58
-G_M12189_IG12: ; bbWeight=0, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref
+G_M12189_IG12: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
-G_M12189_IG13: ; bbWeight=0.44, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- mov r15, r12
+G_M12189_IG13: ; bbWeight=0.44, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ mov r12, r13
cmp dword ptr [rbx+0x10], 1
jne SHORT G_M12189_IG17
;; size=9 bbWeight=0.44 PerfScore 1.87
-G_M12189_IG14: ; bbWeight=0.44, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
+G_M12189_IG14: ; bbWeight=0.44, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
cmp eax, dword ptr [rbx+0x08]
je SHORT G_M12189_IG18
;; size=5 bbWeight=0.44 PerfScore 1.75
-G_M12189_IG15: ; bbWeight=0.40, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- xor r15d, r15d
+G_M12189_IG15: ; bbWeight=0.40, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ xor r12d, r12d
jmp SHORT G_M12189_IG19
;; size=5 bbWeight=0.40 PerfScore 0.90
-G_M12189_IG16: ; bbWeight=0.44, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, r12
+G_M12189_IG16: ; bbWeight=0.44, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
...
@@ -12,74 +12,74 @@
; V00 this [V00,T05] ( 8, 4.04) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 14, 10.04) byref -> rbx ld-addr-op single-def
; V02 loc0 [V02 ] ( 13, 4.87) struct (24) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.RuntimeType]>
-; V03 loc1 [V03,T13] ( 5, 3 ) ref -> rdi class-hnd exact single-def <System.RuntimeType>
+; V03 loc1 [V03,T12] ( 5, 3 ) ref -> rdi class-hnd exact single-def <System.RuntimeType>
; V04 loc2 [V04,T04] ( 5, 6.65) ref -> rdi class-hnd single-def <<unknown class>>
; V05 loc3 [V05,T02] ( 5, 8.71) int -> r14
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType>
;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType>
-; V08 loc6 [V08,T50] ( 4, 0 ) ref -> rsi class-hnd exact single-def <<unknown class>>
-; V09 loc7 [V09,T52] ( 3, 0 ) ref -> rdi class-hnd single-def <<unknown class>>
-; V10 loc8 [V10,T48] ( 5, 0 ) int -> r14
+; V08 loc6 [V08,T49] ( 4, 0 ) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V09 loc7 [V09,T51] ( 3, 0 ) ref -> rdi class-hnd single-def <<unknown class>>
+; V10 loc8 [V10,T47] ( 5, 0 ) int -> r14
;* V11 loc9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType>
-; V12 loc10 [V12,T53] ( 3, 0 ) ref -> r15 class-hnd <<unknown class>>
-; V13 loc11 [V13,T49] ( 5, 0 ) int -> r13
+; V12 loc10 [V12,T52] ( 3, 0 ) ref -> r15 class-hnd <<unknown class>>
+; V13 loc11 [V13,T48] ( 5, 0 ) int -> r13
; V14 loc12 [V14 ] ( 3, 0 ) struct (24) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.HashSet`1+Enumerator[System.RuntimeType]>
-; V15 loc13 [V15,T54] ( 3, 0 ) ref -> rsi class-hnd exact <System.RuntimeType>
+; V15 loc13 [V15,T53] ( 3, 0 ) ref -> rsi class-hnd exact <System.RuntimeType>
; V16 OutArgs [V16 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V17 tmp1 [V17,T55] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp2 [V18,T56] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
-; V19 tmp3 [V19,T60] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V20 tmp4 [V20,T47] ( 7, 0 ) ref -> r15 class-hnd "spilling QMark2" <System.RuntimeType>
-; V21 tmp5 [V21,T57] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
-; V22 tmp6 [V22,T61] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
-; V23 tmp7 [V23,T51] ( 4, 0 ) ref -> rax class-hnd "spilling QMark2" <System.RuntimeType>
+; V17 tmp1 [V17,T54] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp2 [V18,T55] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
+; V19 tmp3 [V19,T59] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
+; V20 tmp4 [V20,T46] ( 7, 0 ) ref -> r15 class-hnd "spilling QMark2" <System.RuntimeType>
+; V21 tmp5 [V21,T56] ( 3, 0 ) ref -> rdx "CASTCLASS eval op1"
+; V22 tmp6 [V22,T60] ( 3, 0 ) long -> rcx "fgMakeTemp is creating a new local variable"
+; V23 tmp7 [V23,T50] ( 4, 0 ) ref -> rax class-hnd "spilling QMark2" <System.RuntimeType>
;* V24 tmp8 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.MdUtf8String>
-; V25 tmp9 [V25,T32] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V26 tmp10 [V26,T39] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V27 tmp11 [V27,T21] ( 8, 0.15) ref -> r13 class-hnd single-def "spilling QMark2" <System.RuntimeType>
-; V28 tmp12 [V28,T25] ( 3, 0.06) ref -> rdi class-hnd exact single-def "dup spill" <<unknown class>>
+; V25 tmp9 [V25,T31] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V26 tmp10 [V26,T38] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V27 tmp11 [V27,T20] ( 8, 0.15) ref -> r15 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V28 tmp12 [V28,T24] ( 3, 0.06) ref -> rdi class-hnd exact single-def "dup spill" <<unknown class>>
; V29 tmp13 [V29 ] ( 2, 0.04) struct (24) [rbp-0x80] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.RuntimeType+RuntimeTypeCache+Filter>
;* V30 tmp14 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V31 tmp15 [V31,T33] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V32 tmp16 [V32,T40] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V33 tmp17 [V33,T22] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
-; V34 tmp18 [V34,T26] ( 3, 0.06) ref -> r14 class-hnd exact single-def "dup spill" <<unknown class>>
+; V31 tmp15 [V31,T32] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V32 tmp16 [V32,T39] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V33 tmp17 [V33,T21] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V34 tmp18 [V34,T25] ( 3, 0.06) ref -> r14 class-hnd exact single-def "dup spill" <<unknown class>>
; V35 tmp19 [V35 ] ( 2, 0.04) struct (24) [rbp-0x98] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.RuntimeType+RuntimeTypeCache+Filter>
;* V36 tmp20 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V37 tmp21 [V37,T34] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V38 tmp22 [V38,T41] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V39 tmp23 [V39,T23] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
-; V40 tmp24 [V40,T27] ( 3, 0.06) ref -> rbx class-hnd exact single-def "dup spill" <<unknown class>>
+; V37 tmp21 [V37,T33] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V38 tmp22 [V38,T40] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V39 tmp23 [V39,T22] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V40 tmp24 [V40,T26] ( 3, 0.06) ref -> rbx class-hnd exact single-def "dup spill" <<unknown class>>
; V41 tmp25 [V41 ] ( 2, 0.04) struct (24) [rbp-0xB0] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.RuntimeType+RuntimeTypeCache+Filter>
;* V42 tmp26 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V43 tmp27 [V43,T35] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
-; V44 tmp28 [V44,T42] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
-; V45 tmp29 [V45,T24] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
+; V43 tmp27 [V43,T34] ( 3, 0.04) ref -> rax single-def "CASTCLASS eval op1"
+; V44 tmp28 [V44,T41] ( 3, 0.02) long -> rcx "fgMakeTemp is creating a new local variable"
+; V45 tmp29 [V45,T23] ( 4, 0.07) ref -> r9 class-hnd single-def "spilling QMark2" <System.RuntimeType>
; V46 tmp30 [V46,T03] ( 3, 8.11) ref -> rdx "CASTCLASS eval op1"
-; V47 tmp31 [V47,T11] ( 3, 4.06) long -> rcx "fgMakeTemp is creating a new local variable"
-; V48 tmp32 [V48,T00] ( 5, 17.87) ref -> r13 class-hnd "spilling QMark2" <System.RuntimeType>
+; V47 tmp31 [V47,T10] ( 3, 4.06) long -> rcx "fgMakeTemp is creating a new local variable"
+; V48 tmp32 [V48,T00] ( 5, 17.87) ref -> r15 class-hnd "spilling QMark2" <System.RuntimeType>
;* V49 tmp33 [V49 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.MdUtf8String>
; V50 tmp34 [V50,T06] ( 3, 6 ) ref -> rdi single-def "handle histogram profile tmp"
-; V51 tmp35 [V51,T28] ( 3, 0.06) ref -> r14 single-def "handle histogram profile tmp"
+; V51 tmp35 [V51,T27] ( 3, 0.06) ref -> r14 single-def "handle histogram profile tmp"
;* V52 tmp36 [V52 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V53 tmp37 [V53 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V54 tmp38 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V55 tmp39 [V55 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V56 tmp40 [V56 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V57 tmp41 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
-;* V58 tmp42 [V58,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V58 tmp42 [V58,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V59 tmp43 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-; V60 tmp44 [V60,T12] ( 5, 9.95) long -> r12 "Inlining Arg"
+; V60 tmp44 [V60,T11] ( 5, 9.95) long -> r13 "Inlining Arg"
;* V61 tmp45 [V61 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V62 tmp46 [V62,T16] ( 3, 0.88) ubyte -> r15 "Inline stloc first use temp"
-; V63 tmp47 [V63,T19] ( 3, 0.88) ubyte -> r15 "Inline return value spill temp"
+; V62 tmp46 [V62,T15] ( 3, 0.88) ubyte -> r12 "Inline stloc first use temp"
+; V63 tmp47 [V63,T18] ( 3, 0.88) ubyte -> r12 "Inline return value spill temp"
;* V64 tmp48 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V65 tmp49 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V66 tmp50 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V67 tmp51 [V67 ] ( 1, 0 ) int -> [rbp-0xB8] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V68 tmp52 [V68 ] ( 1, 0 ) int -> [rbp-0xC0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V69 tmp53 [V69 ] ( 3, 0 ) struct (16) [rbp-0xD0] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-; V70 tmp54 [V70,T15] ( 4, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.RuntimeType[]>
+; V70 tmp54 [V70,T14] ( 4, 2 ) ref -> rax class-hnd "Inline return value spill temp" <System.RuntimeType[]>
; V71 tmp55 [V71,T07] ( 3, 6 ) ref -> rbx class-hnd exact single-def "dup spill" <System.RuntimeType[]>
; V72 tmp56 [V72 ] ( 7, 1.87) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V02._items (fldOffset=0x0)" P-DEP
; V73 tmp57 [V73 ] ( 6, 2.87) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V02._item (fldOffset=0x8)" P-DEP
@@ -93,29 +93,28 @@
;* V81 tmp65 [V81 ] ( 0, 0 ) int -> zero-ref "field V24.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
;* V82 tmp66 [V82 ] ( 0, 0 ) long -> zero-ref "field V49.m_pStringHeap (fldOffset=0x0)" P-INDEP
;* V83 tmp67 [V83 ] ( 0, 0 ) int -> zero-ref "field V49.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-; V84 tmp68 [V84,T20] ( 2, 0.44) long -> r15 "field V59.m_pStringHeap (fldOffset=0x0)" P-INDEP
-; V85 tmp69 [V85,T18] ( 4, 0.88) int -> rax "field V59.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+; V84 tmp68 [V84,T19] ( 2, 0.44) long -> r12 "field V59.m_pStringHeap (fldOffset=0x0)" P-INDEP
+; V85 tmp69 [V85,T17] ( 4, 0.88) int -> rax "field V59.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
; V86 tmp70 [V86 ] ( 3, 0 ) long -> [rbp-0xD0] do-not-enreg[X] addr-exposed "field V69.m_pStringHeap (fldOffset=0x0)" P-DEP
; V87 tmp71 [V87 ] ( 3, 0 ) int -> [rbp-0xC8] do-not-enreg[X] addr-exposed "field V69.m_StringHeapByteLength (fldOffset=0x8)" P-DEP
-; V88 tmp72 [V88,T58] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
-; V89 tmp73 [V89,T59] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V90 tmp74 [V90,T62] ( 2, 0 ) long -> rdx "argument with side effect"
+; V88 tmp72 [V88,T57] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
+; V89 tmp73 [V89,T58] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V90 tmp74 [V90,T61] ( 2, 0 ) long -> rdx "argument with side effect"
; V91 tmp75 [V91 ] ( 5, 0.01) struct (16) [rbp-0xE0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.MdUtf8String>
-;* V92 tmp76 [V92,T63] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V93 tmp77 [V93,T46] ( 0, 0 ) byref -> zero-ref "argument with side effect"
+;* V92 tmp76 [V92,T62] ( 0, 0 ) byref -> zero-ref "argument with side effect"
+;* V93 tmp77 [V93,T45] ( 0, 0 ) byref -> zero-ref "argument with side effect"
; V94 tmp78 [V94,T08] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
-; V95 tmp79 [V95,T29] ( 3, 0.06) ref -> rcx single-def "argument with side effect"
-;* V96 tmp80 [V96,T43] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V97 tmp81 [V97,T44] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V98 tmp82 [V98,T45] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V99 PSPSym [V99,T17] ( 1, 1 ) long -> [rbp-0xE8] do-not-enreg[V] "PSPSym"
-; V100 cse0 [V100,T30] ( 4, 0.04) long -> rdi "CSE - conservative"
-; V101 cse1 [V101,T10] ( 3, 5.00) int -> rcx "CSE - aggressive"
-; V102 cse2 [V102,T09] ( 4, 5.25) int -> r15 multi-def "CSE - aggressive"
-; V103 cse3 [V103,T31] ( 4, 0.04) long -> r12 "CSE - conservative"
+; V95 tmp79 [V95,T28] ( 3, 0.06) ref -> rcx single-def "argument with side effect"
+;* V96 tmp80 [V96,T42] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V97 tmp81 [V97,T43] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V98 tmp82 [V98,T44] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V99 PSPSym [V99,T16] ( 1, 1 ) long -> [rbp-0xE8] do-not-enreg[V] "PSPSym"
+; V100 cse0 [V100,T29] ( 4, 0.04) long -> rdi "CSE - conservative"
+; V101 cse1 [V101,T09] ( 3, 5.00) int -> rcx "CSE - aggressive"
+; V102 cse2 [V102,T30] ( 4, 0.04) long -> r13 "CSE - conservative"
+; V103 cse3 [V103,T35] ( 2, 0.02) ref -> rcx "CSE - conservative"
; V104 cse4 [V104,T36] ( 2, 0.02) ref -> rcx "CSE - conservative"
; V105 cse5 [V105,T37] ( 2, 0.02) ref -> rcx "CSE - conservative"
-; V106 cse6 [V106,T38] ( 2, 0.02) ref -> rcx "CSE - conservative"
;
; Lcl frame size = 216
@@ -202,104 +201,103 @@ G_M12189_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb
G_M12189_IG05: ; bbWeight=0.60, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
xor r14d, r14d
- mov r15d, dword ptr [rdi+0x08]
- test r15d, r15d
+ cmp dword ptr [rdi+0x08], 0
jle G_M12189_IG25
- ;; size=16 bbWeight=0.60 PerfScore 2.09
+ ;; size=13 bbWeight=0.60 PerfScore 2.54
G_M12189_IG06: ; bbWeight=2.03, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, r14d
mov rdx, gword ptr [rdi+8*rcx+0x10]
; gcrRegs +[rdx]
- mov r13, rdx
- ; gcrRegs +[r13]
- test r13, r13
+ mov r15, rdx
+ ; gcrRegs +[r15]
+ test r15, r15
je SHORT G_M12189_IG09
;; size=16 bbWeight=2.03 PerfScore 7.60
-G_M12189_IG07: ; bbWeight=1.01, gcrefRegs=20C4 {rdx rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
+G_M12189_IG07: ; bbWeight=1.01, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, 0xD1FFAB1E ; System.RuntimeType
- cmp qword ptr [r13], rcx
+ cmp qword ptr [r15], rcx
je SHORT G_M12189_IG09
- ;; size=16 bbWeight=1.01 PerfScore 4.31
+ ;; size=15 bbWeight=1.01 PerfScore 4.31
G_M12189_IG08: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi r13]
+ ; gcrRegs -[rsi rdi r15]
; byrRegs -[rbx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M12189_IG09: ; bbWeight=2.03, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rax] +[rsi rdi r13]
+G_M12189_IG09: ; bbWeight=2.03, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[rax] +[rsi rdi r15]
; byrRegs +[rbx]
mov ecx, dword ptr [rbx+0x10]
cmp ecx, 1
je SHORT G_M12189_IG11
;; size=8 bbWeight=2.03 PerfScore 6.59
-G_M12189_IG10: ; bbWeight=0.94, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
+G_M12189_IG10: ; bbWeight=0.94, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
cmp ecx, 2
jne SHORT G_M12189_IG21
;; size=5 bbWeight=0.94 PerfScore 1.18
-G_M12189_IG11: ; bbWeight=2.03, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, r13
+G_M12189_IG11: ; bbWeight=2.03, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ mov rcx, r15
; gcrRegs +[rcx]
call <unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r12, rax
- test r12, r12
+ mov r13, rax
+ test r13, r13
jne SHORT G_M12189_IG16
;; size=16 bbWeight=2.03 PerfScore 5.58
-G_M12189_IG12: ; bbWeight=0, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref
+G_M12189_IG12: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
-G_M12189_IG13: ; bbWeight=0.44, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- mov r15, r12
+G_M12189_IG13: ; bbWeight=0.44, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ mov r12, r13
cmp dword ptr [rbx+0x10], 1
jne SHORT G_M12189_IG17
;; size=9 bbWeight=0.44 PerfScore 1.87
-G_M12189_IG14: ; bbWeight=0.44, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
+G_M12189_IG14: ; bbWeight=0.44, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
cmp eax, dword ptr [rbx+0x08]
je SHORT G_M12189_IG18
;; size=5 bbWeight=0.44 PerfScore 1.75
-G_M12189_IG15: ; bbWeight=0.40, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- xor r15d, r15d
+G_M12189_IG15: ; bbWeight=0.40, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ xor r12d, r12d
jmp SHORT G_M12189_IG19
;; size=5 bbWeight=0.40 PerfScore 0.90
-G_M12189_IG16: ; bbWeight=0.44, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, r12
+G_M12189_IG16: ; bbWeight=0.44, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
...
@@ -12,13 +12,13 @@
; V00 this [V00,T02] ( 4, 3.01) ref -> rdi this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T01] ( 9, 3.02) ref -> rsi ld-addr-op class-hnd <System.String>
; V02 arg2 [V02,T00] ( 6, 5.33) int -> rbx
-; V03 loc0 [V03,T12] ( 5, 2.02) int -> rbp ld-addr-op
-; V04 loc1 [V04,T09] ( 3, 2.33) ref -> rdi class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
+; V03 loc0 [V03,T11] ( 5, 2.02) int -> rbp ld-addr-op
+; V04 loc1 [V04,T09] ( 4, 2.66) ref -> rdi class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
; V05 loc2 [V05,T08] ( 16, 2.66) ref -> rbp class-hnd <System.Reflection.FieldInfo>
-; V06 loc3 [V06,T14] ( 3, 2 ) ubyte -> r14
+; V06 loc3 [V06,T13] ( 3, 2 ) ubyte -> r14
;* V07 loc4 [V07 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op
-; V08 loc5 [V08,T11] ( 5, 2.32) int -> r13
-; V09 loc6 [V09,T15] ( 12, 0.99) ref -> rsi class-hnd <System.Reflection.RuntimeFieldInfo>
+; V08 loc5 [V08,T10] ( 5, 2.32) int -> r13
+; V09 loc6 [V09,T14] ( 12, 0.99) ref -> r12 class-hnd <System.Reflection.RuntimeFieldInfo>
; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -28,7 +28,7 @@
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V19 tmp9 [V19,T20] ( 3, 0 ) ref -> r15 "handle histogram profile tmp"
+; V19 tmp9 [V19,T19] ( 3, 0 ) ref -> rsi "handle histogram profile tmp"
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
@@ -46,28 +46,27 @@
;* V34 tmp24 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V35 tmp25 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
; V36 tmp26 [V36,T03] ( 14, 5.00) ref -> r15 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V37 tmp27 [V37,T17] ( 4, 0.00) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V37 tmp27 [V37,T16] ( 4, 0.00) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V38 tmp28 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V39 tmp29 [V39,T13] ( 5, 2 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.RuntimeFieldInfo[]>
-; V40 tmp30 [V40,T27] ( 2, 0 ) ref -> rax class-hnd single-def "dup spill" <System.__Canon>
-; V41 tmp31 [V41,T18] ( 4, 0 ) ref -> rdi
-; V42 tmp32 [V42,T28] ( 2, 0 ) ref -> rax class-hnd single-def "dup spill" <System.__Canon>
-; V43 tmp33 [V43,T19] ( 4, 0 ) ref -> rdi
+; V39 tmp29 [V39,T12] ( 5, 2 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.RuntimeFieldInfo[]>
+; V40 tmp30 [V40,T26] ( 2, 0 ) ref -> rax class-hnd single-def "dup spill" <System.__Canon>
+; V41 tmp31 [V41,T17] ( 4, 0 ) ref -> rdi
+; V42 tmp32 [V42,T27] ( 2, 0 ) ref -> rax class-hnd single-def "dup spill" <System.__Canon>
+; V43 tmp33 [V43,T18] ( 4, 0 ) ref -> rdi
;* V44 tmp34 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V45 tmp35 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V46 tmp36 [V46,T30] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V47 tmp37 [V47,T21] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V48 tmp38 [V48,T22] ( 3, 0 ) ref -> rcx "argument with side effect"
-;* V49 tmp39 [V49,T31] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V50 tmp40 [V50,T32] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V51 tmp41 [V51,T23] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V52 tmp42 [V52,T24] ( 3, 0 ) ref -> r15 "argument with side effect"
-; V53 tmp43 [V53,T29] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V54 tmp44 [V54,T25] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V55 tmp45 [V55,T26] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
-; V56 cse0 [V56,T16] ( 3, 0.99) int -> rcx "CSE - conservative"
-; V57 cse1 [V57,T10] ( 3, 2.33) int -> r12 "CSE - moderate"
-; V58 cse2 [V58,T06] ( 3, 2.99) long -> rcx "CSE - moderate"
+;* V46 tmp36 [V46,T29] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V47 tmp37 [V47,T20] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V48 tmp38 [V48,T21] ( 3, 0 ) ref -> rcx "argument with side effect"
+;* V49 tmp39 [V49,T30] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V50 tmp40 [V50,T31] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V51 tmp41 [V51,T22] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V52 tmp42 [V52,T23] ( 3, 0 ) ref -> rsi "argument with side effect"
+; V53 tmp43 [V53,T28] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V54 tmp44 [V54,T24] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V55 tmp45 [V55,T25] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
+; V56 cse0 [V56,T15] ( 3, 0.99) int -> rcx "CSE - conservative"
+; V57 cse1 [V57,T06] ( 3, 2.99) long -> rcx "CSE - moderate"
;
; Lcl frame size = 40
@@ -249,15 +248,14 @@ G_M40435_IG17: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
xor ebx, 2
xor r14d, r14d
xor r13d, r13d
- mov r12d, dword ptr [rdi+0x08]
- test r12d, r12d
+ cmp dword ptr [rdi+0x08], 0
jle SHORT G_M40435_IG21
- ;; size=20 bbWeight=1 PerfScore 4.25
+ ;; size=17 bbWeight=1 PerfScore 5.00
G_M40435_IG18: ; bbWeight=0.33, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, r13d
- mov rsi, gword ptr [rdi+8*rcx+0x10]
- ; gcrRegs +[rsi]
- mov ecx, dword ptr [rsi+0x18]
+ mov r12, gword ptr [rdi+8*rcx+0x10]
+ ; gcrRegs +[r12]
+ mov ecx, dword ptr [r12+0x18]
mov eax, ebx
and eax, ecx
cmp eax, ecx
@@ -265,9 +263,9 @@ G_M40435_IG18: ; bbWeight=0.33, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000
test rbp, rbp
je G_M40435_IG28
jmp SHORT G_M40435_IG26
- ;; size=34 bbWeight=0.33 PerfScore 3.04
+ ;; size=36 bbWeight=0.33 PerfScore 3.04
G_M40435_IG19: ; bbWeight=1.00, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbp rsi rdi] +[r15]
+ ; gcrRegs -[rbp rdi r12] +[r15]
mov rdi, gword ptr [r15+0x08]
; gcrRegs +[rdi]
jmp SHORT G_M40435_IG17
@@ -325,23 +323,23 @@ G_M40435_IG25: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
; gcrRegs -[rax]
jmp G_M40435_IG17
;; size=5 bbWeight=0 PerfScore 0.00
-G_M40435_IG26: ; bbWeight=0, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbp rsi]
- mov rcx, rsi
+G_M40435_IG26: ; bbWeight=0, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbp r12]
+ mov rcx, r12
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, rsi
+ mov rcx, r12
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi]
+ mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
mov rcx, rbp
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -355,13 +353,13 @@ G_M40435_IG26: ; bbWeight=0, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- cmp r15, rax
+ cmp rsi, rax
je G_M40435_IG37
mov rcx, rbp
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[rax rcx r15]
+ ; gcrRegs -[rax rcx rsi]
; gcr arg pop 0
mov rcx, rbp
; gcrRegs +[rcx]
@@ -378,15 +376,15 @@ G_M40435_IG26: ; bbWeight=0, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000
; gcr arg pop 0
test eax, eax
je G_M40435_IG36
- mov rcx, rsi
+ mov rcx, r12
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, rsi
+ mov rcx, r12
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi]
+ mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
@@ -403,24 +401,24 @@ G_M40435_IG26: ; bbWeight=0, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov r14d, 1
- ;; size=195 bbWeight=0 PerfScore 0.00
-G_M40435_IG27: ; bbWeight=0, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rsi
+ ;; size=197 bbWeight=0 PerfScore 0.00
+G_M40435_IG27: ; bbWeight=0, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0000 {}, byref, isz
+ mov rcx, r12
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, rsi
+ mov rcx, r12
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi]
+ mov rax, qword ptr [r12]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- mov rcx, r15
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
@@ -441,13 +439,13 @@ G_M40435_IG27: ; bbWeight=0, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, r15
+ mov rcx, rsi
; gcrRegs +[rcx]
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [rsi]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0xB0]
call [rax+0x18]<unknown method>
- ; gcrRegs -[rcx rdx r15]
+ ; gcrRegs -[rcx rdx rsi]
; gcr arg pop 0
test eax, eax
jne G_M40435_IG34
@@ -476,24 +474,24 @@ G_M40435_IG27: ; bbWeight=0, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000
call CORINFO_HELP_COUNTPROFILE32
; gcrRegs -[rbp]
; gcr arg pop 0
- ;; size=171 bbWeight=0 PerfScore 0.00
-G_M40435_IG28: ; bbWeight=0.33, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=172 bbWeight=0 PerfScore 0.00
+G_M40435_IG28: ; bbWeight=0.33, gcrefRegs=1080 {rdi r12}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rbp, rsi
+ mov rbp, r12
; gcrRegs +[rbp]
;; size=18 bbWeight=0.33 PerfScore 0.49
G_M40435_IG29: ; bbWeight=0.33, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
+ ; gcrRegs -[r12]
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
inc r13d
- cmp r12d, r13d
+ cmp dword ptr [rdi+0x08], r13d
jg G_M40435_IG18
jmp G_M40435_IG21
...
1[Microsoft.AspNetCore.Http.Endpoint],System.Collections.Generic.IComparer
1[Microsoft.AspNetCore.Http.Endpoint]):this (Instrumented Tier1)@@ -10,19 +10,19 @@
;
; V00 this [V00,T10] ( 13, 25.50) ref -> rsi this class-hnd single-def <Microsoft.AspNetCore.Routing.Matching.CandidateSet>
; V01 arg1 [V01,T05] ( 21, 31 ) int -> rbx single-def
-; V02 arg2 [V02,T21] ( 12, 12 ) ref -> rbp class-hnd single-def <System.Collections.Generic.IReadOnlyList`1[Microsoft.AspNetCore.Http.Endpoint]>
-; V03 arg3 [V03,T14] ( 6, 11.50) ref -> rdi class-hnd single-def <System.Collections.Generic.IComparer`1[Microsoft.AspNetCore.Http.Endpoint]>
-; V04 loc0 [V04,T15] ( 3, 17 ) int -> r15 single-def
-; V05 loc1 [V05,T04] ( 3, 17 ) ref -> [rsp+0x60] class-hnd spill-single-def <Microsoft.AspNetCore.Routing.RouteValueDictionary>
-; V06 loc2 [V06,T27] ( 6, 9 ) ref -> r13 class-hnd exact single-def <<unknown class>>
-; V07 loc3 [V07,T36] ( 8, 6.54) ref -> [rsp+0x58] class-hnd exact spill-single-def <<unknown class>>
-; V08 loc4 [V08,T11] ( 8, 26.50) ref -> [rsp+0x50] class-hnd spill-single-def <<unknown class>>
-; V09 loc5 [V09,T12] ( 5, 22.50) int -> [rsp+0x84]
-; V10 loc6 [V10,T50] ( 3, 2.50) int -> rax single-def
-; V11 loc7 [V11,T16] ( 11, 16.58) int -> [rsp+0x80]
-; V12 loc8 [V12,T02] ( 8, 88.50) int -> [rsp+0x7C]
-; V13 loc9 [V13,T26] ( 3, 10 ) int -> rax
-; V14 loc10 [V14,T20] ( 7, 14.50) int -> rbx
+; V02 arg2 [V02,T22] ( 12, 12 ) ref -> rbp class-hnd single-def <System.Collections.Generic.IReadOnlyList`1[Microsoft.AspNetCore.Http.Endpoint]>
+; V03 arg3 [V03,T15] ( 6, 11.50) ref -> rdi class-hnd single-def <System.Collections.Generic.IComparer`1[Microsoft.AspNetCore.Http.Endpoint]>
+; V04 loc0 [V04,T16] ( 3, 17 ) int -> r15 single-def
+; V05 loc1 [V05,T04] ( 3, 17 ) ref -> [rsp+0x58] class-hnd spill-single-def <Microsoft.AspNetCore.Routing.RouteValueDictionary>
+; V06 loc2 [V06,T28] ( 6, 9 ) ref -> r13 class-hnd exact single-def <<unknown class>>
+; V07 loc3 [V07,T37] ( 8, 6.54) ref -> [rsp+0x50] class-hnd exact spill-single-def <<unknown class>>
+; V08 loc4 [V08,T11] ( 8, 26.50) ref -> [rsp+0x48] class-hnd spill-single-def <<unknown class>>
+; V09 loc5 [V09,T13] ( 5, 22.50) int -> [rsp+0x84]
+; V10 loc6 [V10,T51] ( 3, 2.50) int -> rax single-def
+; V11 loc7 [V11,T17] ( 11, 16.58) int -> [rsp+0x80]
+; V12 loc8 [V12,T02] ( 7, 72.50) int -> [rsp+0x7C]
+; V13 loc9 [V13,T27] ( 3, 10 ) int -> rax
+; V14 loc10 [V14,T21] ( 7, 14.50) int -> rbx
; V15 OutArgs [V15 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V16 tmp1 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.__Canon>
;* V17 tmp2 [V17 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
@@ -30,20 +30,20 @@
;* V19 tmp4 [V19 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.AspNetCore.Routing.Matching.CandidateState>
;* V20 tmp5 [V20 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.AspNetCore.Routing.Matching.CandidateState>
; V21 tmp6 [V21,T01] ( 3, 96 ) ref -> rcx class-hnd exact "impAppendStmt" <<unknown class>>
-; V22 tmp7 [V22,T22] ( 3, 12 ) ref -> rdi class-hnd exact "non-inline candidate call" <<unknown class>>
-; V23 tmp8 [V23,T23] ( 3, 12 ) int -> rcx "impAppendStmt"
-; V24 tmp9 [V24,T32] ( 2, 8 ) ref -> rax class-hnd "impAppendStmt" <Microsoft.AspNetCore.Http.Endpoint>
-; V25 tmp10 [V25,T33] ( 2, 8 ) ref -> r15 class-hnd "impAppendStmt" <Microsoft.AspNetCore.Routing.RouteValueDictionary>
+; V22 tmp7 [V22,T23] ( 3, 12 ) ref -> rdi class-hnd exact "non-inline candidate call" <<unknown class>>
+; V23 tmp8 [V23,T24] ( 3, 12 ) int -> rcx "impAppendStmt"
+; V24 tmp9 [V24,T33] ( 2, 8 ) ref -> rax class-hnd "impAppendStmt" <Microsoft.AspNetCore.Http.Endpoint>
+; V25 tmp10 [V25,T34] ( 2, 8 ) ref -> r15 class-hnd "impAppendStmt" <Microsoft.AspNetCore.Routing.RouteValueDictionary>
;* V26 tmp11 [V26 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.AspNetCore.Routing.Matching.CandidateState>
;* V27 tmp12 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V28 tmp13 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V29 tmp14 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V30 tmp15 [V30 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V31 tmp16 [V31 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-;* V32 tmp17 [V32,T64] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>>
+;* V32 tmp17 [V32,T65] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V33 tmp18 [V33 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.AspNetCore.Routing.Matching.CandidateState>
;* V34 tmp19 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V35 tmp20 [V35,T57] ( 2, 2 ) int -> rdx "Inlining Arg"
+; V35 tmp20 [V35,T58] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V36 tmp21 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V37 tmp22 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V38 tmp23 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.AspNetCore.Http.Endpoint>
@@ -52,55 +52,56 @@
;* V41 tmp26 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V42 tmp27 [V42 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V43 tmp28 [V43 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V44 tmp29 [V44,T34] ( 2, 8 ) int -> r10 "Inlining Arg"
-; V45 tmp30 [V45,T29] ( 4, 8 ) ref -> rdx "field V18.<Endpoint>k__BackingField (fldOffset=0x0)" P-INDEP
-; V46 tmp31 [V46,T30] ( 4, 8 ) ref -> [rsp+0x48] "field V18.<Values>k__BackingField (fldOffset=0x8)" P-INDEP
-; V47 tmp32 [V47,T31] ( 4, 8 ) int -> [rsp+0x78] "field V18.<Score>k__BackingField (fldOffset=0x10)" P-INDEP
-; V48 tmp33 [V48,T62] ( 2, 1 ) ref -> rdx single-def "field V19.<Endpoint>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V49 tmp34 [V49,T66] ( 0, 0 ) ref -> zero-ref single-def "field V19.<Values>k__BackingField (fldOffset=0x8)" P-INDEP
-;* V50 tmp35 [V50,T69] ( 0, 0 ) int -> zero-ref single-def "field V19.<Score>k__BackingField (fldOffset=0x10)" P-INDEP
+; V44 tmp29 [V44,T35] ( 2, 8 ) int -> r10 "Inlining Arg"
+; V45 tmp30 [V45,T30] ( 4, 8 ) ref -> rdx "field V18.<Endpoint>k__BackingField (fldOffset=0x0)" P-INDEP
+; V46 tmp31 [V46,T31] ( 4, 8 ) ref -> [rsp+0x40] "field V18.<Values>k__BackingField (fldOffset=0x8)" P-INDEP
+; V47 tmp32 [V47,T32] ( 4, 8 ) int -> [rsp+0x78] "field V18.<Score>k__BackingField (fldOffset=0x10)" P-INDEP
+; V48 tmp33 [V48,T63] ( 2, 1 ) ref -> rdx single-def "field V19.<Endpoint>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V49 tmp34 [V49,T67] ( 0, 0 ) ref -> zero-ref single-def "field V19.<Values>k__BackingField (fldOffset=0x8)" P-INDEP
+;* V50 tmp35 [V50,T70] ( 0, 0 ) int -> zero-ref single-def "field V19.<Score>k__BackingField (fldOffset=0x10)" P-INDEP
; V51 tmp36 [V51,T08] ( 2, 32 ) ref -> rdx "field V20.<Endpoint>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V52 tmp37 [V52,T19] ( 0, 0 ) ref -> zero-ref "field V20.<Values>k__BackingField (fldOffset=0x8)" P-INDEP
+;* V52 tmp37 [V52,T20] ( 0, 0 ) ref -> zero-ref "field V20.<Values>k__BackingField (fldOffset=0x8)" P-INDEP
; V53 tmp38 [V53,T09] ( 2, 32 ) int -> [rsp+0x74] spill-single-def "field V20.<Score>k__BackingField (fldOffset=0x10)" P-INDEP
-; V54 tmp39 [V54,T43] ( 2, 4 ) ref -> rax "field V26.<Endpoint>k__BackingField (fldOffset=0x0)" P-INDEP
-; V55 tmp40 [V55,T44] ( 2, 4 ) ref -> r15 "field V26.<Values>k__BackingField (fldOffset=0x8)" P-INDEP
-; V56 tmp41 [V56,T45] ( 2, 4 ) int -> [rsp+0x70] spill-single-def "field V26.<Score>k__BackingField (fldOffset=0x10)" P-INDEP
-;* V57 tmp42 [V57,T67] ( 0, 0 ) ref -> zero-ref single-def "field V33.<Endpoint>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V58 tmp43 [V58,T68] ( 0, 0 ) ref -> zero-ref single-def "field V33.<Values>k__BackingField (fldOffset=0x8)" P-INDEP
-; V59 tmp44 [V59,T63] ( 2, 1 ) int -> rdx single-def "field V33.<Score>k__BackingField (fldOffset=0x10)" P-INDEP
-;* V60 tmp45 [V60,T59] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V61 tmp46 [V61,T47] ( 3, 3 ) ref -> rcx single-def "arr expr"
-; V62 tmp47 [V62,T40] ( 4, 4 ) byref -> rcx single-def "BlockOp address local"
-; V63 tmp48 [V63,T52] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V64 tmp49 [V64,T48] ( 3, 3 ) ref -> rdx single-def "arr expr"
-; V65 tmp50 [V65,T53] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V66 tmp51 [V66,T42] ( 4, 4 ) int -> rbx "argument with side effect"
-; V67 tmp52 [V67,T54] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V68 tmp53 [V68,T55] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
-; V69 tmp54 [V69,T49] ( 3, 3 ) ref -> rcx single-def "arr expr"
-;* V70 tmp55 [V70,T65] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V71 tmp56 [V71,T58] ( 2, 2 ) long -> rdx "argument with side effect"
+; V54 tmp39 [V54,T44] ( 2, 4 ) ref -> rax "field V26.<Endpoint>k__BackingField (fldOffset=0x0)" P-INDEP
+; V55 tmp40 [V55,T45] ( 2, 4 ) ref -> r15 "field V26.<Values>k__BackingField (fldOffset=0x8)" P-INDEP
+; V56 tmp41 [V56,T46] ( 2, 4 ) int -> [rsp+0x70] spill-single-def "field V26.<Score>k__BackingField (fldOffset=0x10)" P-INDEP
+;* V57 tmp42 [V57,T68] ( 0, 0 ) ref -> zero-ref single-def "field V33.<Endpoint>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V58 tmp43 [V58,T69] ( 0, 0 ) ref -> zero-ref single-def "field V33.<Values>k__BackingField (fldOffset=0x8)" P-INDEP
+; V59 tmp44 [V59,T64] ( 2, 1 ) int -> rdx single-def "field V33.<Score>k__BackingField (fldOffset=0x10)" P-INDEP
+;* V60 tmp45 [V60,T60] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V61 tmp46 [V61,T48] ( 3, 3 ) ref -> rcx single-def "arr expr"
+; V62 tmp47 [V62,T41] ( 4, 4 ) byref -> rcx single-def "BlockOp address local"
+; V63 tmp48 [V63,T53] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V64 tmp49 [V64,T49] ( 3, 3 ) ref -> rdx single-def "arr expr"
+; V65 tmp50 [V65,T54] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
+; V66 tmp51 [V66,T43] ( 4, 4 ) int -> rbx "argument with side effect"
+; V67 tmp52 [V67,T55] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V68 tmp53 [V68,T56] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
+; V69 tmp54 [V69,T50] ( 3, 3 ) ref -> rcx single-def "arr expr"
+;* V70 tmp55 [V70,T66] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V71 tmp56 [V71,T59] ( 2, 2 ) long -> rdx "argument with side effect"
; V72 tmp57 [V72,T06] ( 8, 32 ) byref -> r8 "BlockOp address local"
-; V73 tmp58 [V73,T07] ( 8, 32 ) byref -> [rsp+0x40] "BlockOp address local"
-; V74 tmp59 [V74,T41] ( 4, 4 ) byref -> [rsp+0x38] spill-single-def "BlockOp address local"
-;* V75 tmp60 [V75,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V76 tmp61 [V76,T18] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V77 tmp62 [V77,T00] ( 4,128 ) byref -> [rsp+0x30] spill-single-def "BlockOp address local"
-;* V78 tmp63 [V78,T46] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V79 tmp64 [V79,T17] ( 4, 16 ) byref -> rdi "BlockOp address local"
-; V80 cse0 [V80,T56] ( 2, 2 ) ref -> r14 "CSE - moderate"
-; V81 cse1 [V81,T39] ( 2, 1.50) ref -> r14 "CSE - moderate"
-; V82 cse2 [V82,T37] ( 3, 6 ) byref -> rdx "CSE - moderate"
-; V83 cse3 [V83,T60] ( 3, 1.50) byref -> rcx "CSE - conservative"
-; V84 cse4 [V84,T38] ( 3, 6 ) long -> rdx "CSE - moderate"
-; V85 cse5 [V85,T25] ( 3, 11.88) long -> rcx "CSE - moderate"
-; V86 cse6 [V86,T70] ( 3, 0.12) long -> rcx "CSE - conservative"
-; V87 cse7 [V87,T51] ( 3, 1.50) ref -> rcx "CSE - conservative"
-; V88 cse8 [V88,T61] ( 3, 1.50) ref -> r13 "CSE - conservative"
-; V89 cse9 [V89,T13] ( 6, 22 ) int -> [rsp+0x6C] spill-single-def "CSE - aggressive"
+; V73 tmp58 [V73,T07] ( 8, 32 ) byref -> [rsp+0x38] "BlockOp address local"
+; V74 tmp59 [V74,T42] ( 4, 4 ) byref -> [rsp+0x30] spill-single-def "BlockOp address local"
+;* V75 tmp60 [V75,T36] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V76 tmp61 [V76,T19] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V77 tmp62 [V77,T00] ( 4,128 ) byref -> [rsp+0x28] spill-single-def "BlockOp address local"
+;* V78 tmp63 [V78,T47] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V79 tmp64 [V79,T18] ( 4, 16 ) byref -> rdi "BlockOp address local"
+; V80 cse0 [V80,T57] ( 2, 2 ) ref -> r14 "CSE - moderate"
+; V81 cse1 [V81,T40] ( 2, 1.50) ref -> r14 "CSE - moderate"
+; V82 cse2 [V82,T38] ( 3, 6 ) byref -> rdx "CSE - moderate"
+; V83 cse3 [V83,T61] ( 3, 1.50) byref -> rcx "CSE - conservative"
+; V84 cse4 [V84,T39] ( 3, 6 ) long -> rdx "CSE - moderate"
+; V85 cse5 [V85,T26] ( 3, 11.88) long -> rcx "CSE - moderate"
+; V86 cse6 [V86,T71] ( 3, 0.12) long -> rcx "CSE - conservative"
+; V87 cse7 [V87,T52] ( 3, 1.50) ref -> rcx "CSE - conservative"
+; V88 cse8 [V88,T62] ( 3, 1.50) ref -> r13 "CSE - conservative"
+; V89 cse9 [V89,T14] ( 6, 22 ) int -> [rsp+0x6C] spill-single-def "CSE - moderate"
; V90 cse10 [V90,T03] ( 3, 48 ) int -> r11 "CSE - aggressive"
-; V91 cse11 [V91,T28] ( 7, 8.04) int -> r12 "CSE - moderate"
-; V92 cse12 [V92,T24] ( 3, 12 ) int -> rcx "CSE - moderate"
+; V91 cse11 [V91,T29] ( 7, 8.04) int -> r12 "CSE - moderate"
+; V92 cse12 [V92,T25] ( 3, 12 ) int -> rcx "CSE - moderate"
+; V93 cse13 [V93,T12] ( 3, 24 ) long -> [rsp+0x60] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 136
@@ -287,7 +288,7 @@ G_M5072_IG12: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}
lea rdx, [rdx+2*rdx]
mov rax, gword ptr [rcx+8*rdx+0x18]
; gcrRegs +[rax]
- mov gword ptr [rsp+0x60], rax
+ mov gword ptr [rsp+0x58], rax
; GC ptr vars +{V05}
mov rcx, rbp
mov rdx, 0xD1FFAB1E
@@ -306,7 +307,7 @@ G_M5072_IG12: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x58], rax
+ mov gword ptr [rsp+0x50], rax
; GC ptr vars +{V07}
lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
@@ -323,7 +324,7 @@ G_M5072_IG12: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}
je G_M5072_IG15
cmp r12d, ebx
jl G_M5072_IG15
- mov rdx, gword ptr [rsp+0x58]
+ mov rdx, gword ptr [rsp+0x50]
; gcrRegs +[rdx]
cmp dword ptr [rdx+0x08], ebx
jl G_M5072_IG15
@@ -341,30 +342,30 @@ G_M5072_IG13: ; bbWeight=3.96, gcrefRegs=60E0 {rbp rsi rdi r13 r14}, byre
; gcrRegs +[rdx]
mov r10, gword ptr [r8+0x08]
; gcrRegs +[r10]
- mov gword ptr [rsp+0x48], r10
+ mov gword ptr [rsp+0x40], r10
; GC ptr vars +{V46}
mov r9d, dword ptr [r8+0x10]
mov dword ptr [rsp+0x78], r9d
- mov r11, gword ptr [rsp+0x58]
+ mov r11, gword ptr [rsp+0x50]
; gcrRegs +[r11]
lea rcx, bword ptr [r11+8*rcx+0x10]
; byrRegs +[rcx]
- mov bword ptr [rsp+0x40], rcx
+ mov bword ptr [rsp+0x38], rcx
; GC ptr vars +{V73}
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx r10-r11]
; byrRegs -[rcx r8]
- mov rax, bword ptr [rsp+0x40]
+ mov rax, bword ptr [rsp+0x38]
; byrRegs +[rax]
lea rcx, bword ptr [rax+0x08]
; byrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x48]
+ mov rdx, gword ptr [rsp+0x40]
; gcrRegs +[rdx]
; GC ptr vars -{V46}
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rax rcx]
- mov rax, bword ptr [rsp+0x40]
+ mov rax, bword ptr [rsp+0x38]
; byrRegs +[rax]
mov edx, dword ptr [rsp+0x78]
mov dword ptr [rax+0x10], edx
@@ -375,7 +376,7 @@ G_M5072_IG13: ; bbWeight=3.96, gcrefRegs=60E0 {rbp rsi rdi r13 r14}, byre
mov dword ptr [rsp+0x80], eax
jl SHORT G_M5072_IG13
;; size=123 bbWeight=3.96 PerfScore 105.93
-G_M5072_IG14: ; bbWeight=0.50, gcVars=00000000000000000000001000000010 {V05 V07}, gcrefRegs=60E0 {rbp rsi rdi r13 r14}, byrefRegs=0000 {}, gcvars, byref
+G_M5072_IG14: ; bbWeight=0.50, gcVars=00000000000000000000002000000010 {V05 V07}, gcrefRegs=60E0 {rbp rsi rdi r13 r14}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V07 V73}
jmp G_M5072_IG16
;; size=5 bbWeight=0.50 PerfScore 1.00
@@ -394,35 +395,35 @@ G_M5072_IG15: ; bbWeight=0.04, gcrefRegs=60E0 {rbp rsi rdi r13 r14}, byre
; gcrRegs +[rdx]
mov r10, gword ptr [r8+0x08]
; gcrRegs +[r10]
- mov gword ptr [rsp+0x48], r10
+ mov gword ptr [rsp+0x40], r10
; GC ptr vars +{V46}
mov r8d, dword ptr [r8+0x10]
; byrRegs -[r8]
mov dword ptr [rsp+0x78], r8d
mov dword ptr [rsp+0x80], eax
- mov r9, gword ptr [rsp+0x58]
+ mov r9, gword ptr [rsp+0x50]
; gcrRegs +[r9]
cmp eax, dword ptr [r9+0x08]
...
@@ -8,58 +8,61 @@
; 1 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T19] ( 9, 8.50) ref -> rsi this class-hnd single-def <Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]>
-; V01 arg1 [V01,T06] ( 11, 17.59) ref -> rbx class-hnd single-def <System.String>
-; V02 loc0 [V02,T14] ( 6, 12 ) ref -> rbp class-hnd single-def <System.__Canon>
-; V03 loc1 [V03,T30] ( 3, 6 ) ref -> r14 class-hnd single-def <<unknown class>>
+; V00 this [V00,T14] ( 9, 8.50) ref -> rsi this class-hnd single-def <Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]>
+; V01 arg1 [V01,T03] ( 11, 17.59) ref -> rbx class-hnd single-def <System.String>
+; V02 loc0 [V02,T09] ( 6, 12 ) ref -> rbp class-hnd single-def <System.__Canon>
+; V03 loc1 [V03,T25] ( 3, 6 ) ref -> r14 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T00] ( 5, 53 ) int -> r15
-; V05 loc3 [V05,T23] ( 3, 10 ) ref -> r12 class-hnd <<unknown class>>
-; V06 loc4 [V06,T24] ( 3, 10 ) ref -> [rsp+0x20] class-hnd spill-single-def <<unknown class>>
-; V07 loc5 [V07,T35] ( 3, 4 ) ref -> r14 class-hnd single-def <<unknown class>>
-; V08 loc6 [V08,T13] ( 5, 15 ) int -> r15
+; V05 loc3 [V05,T18] ( 3, 10 ) ref -> [rsp+0x30] class-hnd spill-single-def <<unknown class>>
+; V06 loc4 [V06,T19] ( 3, 10 ) ref -> [rsp+0x28] class-hnd spill-single-def <<unknown class>>
+; V07 loc5 [V07,T34] ( 3, 4 ) ref -> r14 class-hnd single-def <<unknown class>>
+; V08 loc6 [V08,T07] ( 5, 15 ) int -> r15
; V09 loc7 [V09,T36] ( 2, 4 ) ref -> r12 class-hnd <<unknown class>>
; V10 loc8 [V10,T37] ( 4, 3 ) ref -> r14 class-hnd exact single-def <<unknown class>>
-; V11 loc9 [V11,T33] ( 3, 5 ) ref -> rsi class-hnd single-def <<unknown class>>
+; V11 loc9 [V11,T29] ( 3, 5 ) ref -> rsi class-hnd single-def <<unknown class>>
; V12 loc10 [V12,T01] ( 5, 52.50) int -> r15
-; V13 loc11 [V13,T29] ( 2, 8 ) ref -> r12 class-hnd <<unknown class>>
-; V14 loc12 [V14,T15] ( 4, 12 ) ref -> r12 class-hnd <Microsoft.Extensions.Options.ValidateOptionsResult>
+; V13 loc11 [V13,T24] ( 2, 8 ) ref -> rcx class-hnd <<unknown class>>
+; V14 loc12 [V14,T10] ( 4, 12 ) ref -> [rsp+0x20] class-hnd spill-single-def <Microsoft.Extensions.Options.ValidateOptionsResult>
; V15 OutArgs [V15 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V16 tmp1 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V17 tmp2 [V17 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V18 tmp3 [V18,T16] ( 4, 12 ) long -> r11 "VirtualCall with runtime lookup"
+; V18 tmp3 [V18,T11] ( 4, 12 ) long -> r11 "VirtualCall with runtime lookup"
;* V19 tmp4 [V19 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V20 tmp5 [V20,T17] ( 4, 12 ) long -> r11 "VirtualCall with runtime lookup"
+; V20 tmp5 [V20,T12] ( 4, 12 ) long -> r11 "VirtualCall with runtime lookup"
;* V21 tmp6 [V21 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V22 tmp7 [V22,T18] ( 4, 12 ) long -> r11 "VirtualCall with runtime lookup"
+; V22 tmp7 [V22,T13] ( 4, 12 ) long -> r11 "VirtualCall with runtime lookup"
; V23 tmp8 [V23,T38] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V24 tmp9 [V24 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V25 tmp10 [V25,T02] ( 4, 24 ) long -> r11 "VirtualCall with runtime lookup"
-; V26 tmp11 [V26,T40] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp10 [V25,T02] ( 3, 24 ) long -> r11 "VirtualCall with runtime lookup"
+; V26 tmp11 [V26,T43] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V27 tmp12 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
-; V28 tmp13 [V28,T32] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
+; V28 tmp13 [V28,T28] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
;* V29 tmp14 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-;* V30 tmp15 [V30,T39] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V31 tmp16 [V31,T12] ( 2, 16 ) long -> rcx "argument with side effect"
-; V32 tmp17 [V32,T41] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V33 cse0 [V33,T10] ( 3, 17 ) int -> r13 "CSE - aggressive"
-; V34 cse1 [V34,T07] ( 3, 18 ) int -> r13 "CSE - aggressive"
-; V35 cse2 [V35,T05] ( 13, 21.04) long -> rdi "CSE - aggressive"
-; V36 cse3 [V36,T25] ( 2, 9 ) int -> r13 hoist "CSE - moderate"
-; V37 cse4 [V37,T31] ( 3, 6 ) ref -> rdx "CSE - moderate"
-; V38 cse5 [V38,T34] ( 3, 4.58) int -> r8 "CSE - moderate"
-; V39 rat0 [V39,T11] ( 3, 16 ) long -> rcx "runtime lookup"
-; V40 rat1 [V40,T03] ( 3, 22.40) long -> rcx "spilling expr"
-; V41 rat2 [V41,T08] ( 3, 17.92) long -> rcx "fgMakeTemp is creating a new local variable"
-; V42 rat3 [V42,T20] ( 3, 11.20) long -> rcx "spilling expr"
-; V43 rat4 [V43,T26] ( 3, 8.96) long -> r11 "fgMakeTemp is creating a new local variable"
-; V44 rat5 [V44,T21] ( 3, 11.20) long -> rcx "spilling expr"
-; V45 rat6 [V45,T27] ( 3, 8.96) long -> r11 "fgMakeTemp is creating a new local variable"
-; V46 rat7 [V46,T22] ( 3, 11.20) long -> rcx "spilling expr"
-; V47 rat8 [V47,T28] ( 3, 8.96) long -> r11 "fgMakeTemp is creating a new local variable"
-; V48 rat9 [V48,T04] ( 3, 22.40) long -> rcx "spilling expr"
-; V49 rat10 [V49,T09] ( 3, 17.92) long -> r11 "fgMakeTemp is creating a new local variable"
+;* V30 tmp15 [V30,T42] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V31 tmp16 [V31,T06] ( 2, 16 ) long -> rcx "argument with side effect"
+; V32 tmp17 [V32,T44] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
+; V33 cse0 [V33,T32] ( 2, 4.50) long -> r12 hoist "CSE - moderate"
+; V34 cse1 [V34,T30] ( 2, 5 ) long -> r12 hoist "CSE - moderate"
+; V35 cse2 [V35,T05] ( 3, 17 ) int -> r13 "CSE - aggressive"
+; V36 cse3 [V36,T04] ( 3, 18 ) int -> r13 "CSE - aggressive"
+; V37 cse4 [V37,T08] ( 13, 12.20) long -> rdi "CSE - moderate"
+; V38 cse5 [V38,T20] ( 2, 9 ) int -> r13 hoist "CSE - moderate"
+; V39 cse6 [V39,T26] ( 3, 6 ) ref -> rdx "CSE - moderate"
+; V40 cse7 [V40,T31] ( 3, 4.58) int -> r8 "CSE - moderate"
+; V41 rat0 [V41,T35] ( 3, 4 ) long -> r12 "runtime lookup"
+; V42 rat1 [V42,T27] ( 3, 5.60) long -> rcx "spilling expr"
+; V43 rat2 [V43,T33] ( 3, 4.48) long -> r12 "fgMakeTemp is creating a new local variable"
+; V44 rat3 [V44,T15] ( 3, 11.20) long -> rcx "spilling expr"
+; V45 rat4 [V45,T21] ( 3, 8.96) long -> r11 "fgMakeTemp is creating a new local variable"
+; V46 rat5 [V46,T16] ( 3, 11.20) long -> rcx "spilling expr"
+; V47 rat6 [V47,T22] ( 3, 8.96) long -> r11 "fgMakeTemp is creating a new local variable"
+; V48 rat7 [V48,T17] ( 3, 11.20) long -> rcx "spilling expr"
+; V49 rat8 [V49,T23] ( 3, 8.96) long -> r11 "fgMakeTemp is creating a new local variable"
+; V50 rat9 [V50,T41] ( 3, 2 ) long -> r12 "runtime lookup"
+; V51 rat10 [V51,T39] ( 3, 2.80) long -> rcx "spilling expr"
+; V52 rat11 [V52,T40] ( 3, 2.24) long -> r12 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M22830_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -70,13 +73,13 @@ G_M22830_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 56
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
;; size=22 bbWeight=1 PerfScore 8.75
-G_M22830_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M22830_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -99,74 +102,76 @@ G_M22830_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
xor r15d, r15d
mov r13d, dword ptr [r14+0x08]
test r13d, r13d
- jle G_M22830_IG26
- ;; size=57 bbWeight=1 PerfScore 14.75
-G_M22830_IG03: ; bbWeight=4, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov ecx, r15d
- mov r12, gword ptr [r14+8*rcx+0x10]
- ; gcrRegs +[r12]
+ jle G_M22830_IG25
mov rcx, qword ptr [rdi+0x30]
mov rcx, qword ptr [rcx]
cmp qword ptr [rcx+0x08], 136
- jle SHORT G_M22830_IG06
- ;; size=25 bbWeight=4 PerfScore 41.00
-G_M22830_IG04: ; bbWeight=3.20, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rcx+0x88]
- test rcx, rcx
- je SHORT G_M22830_IG06
- ;; size=12 bbWeight=3.20 PerfScore 10.40
-G_M22830_IG05: ; bbWeight=2.56, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M22830_IG07
- ;; size=2 bbWeight=2.56 PerfScore 5.12
-G_M22830_IG06: ; bbWeight=1.44, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefRegs=0000 {}, byref
+ jle SHORT G_M22830_IG05
+ ;; size=74 bbWeight=1 PerfScore 22.75
+G_M22830_IG03: ; bbWeight=0.80, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov r12, qword ptr [rcx+0x88]
+ test r12, r12
+ je SHORT G_M22830_IG05
+ ;; size=12 bbWeight=0.80 PerfScore 2.60
+G_M22830_IG04: ; bbWeight=0.64, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M22830_IG06
+ ;; size=2 bbWeight=0.64 PerfScore 1.28
+G_M22830_IG05: ; bbWeight=0.36, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
mov rcx, rdi
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov rcx, rax
- ;; size=21 bbWeight=1.44 PerfScore 2.52
-G_M22830_IG07: ; bbWeight=4, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefRegs=0000 {}, byref, isz
- mov rdx, r12
+ mov r12, rax
+ ;; size=21 bbWeight=0.36 PerfScore 0.63
+G_M22830_IG06: ; bbWeight=4, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ mov ecx, r15d
+ mov rax, gword ptr [r14+8*rcx+0x10]
+ ; gcrRegs +[rax]
+ mov gword ptr [rsp+0x30], rax
+ ; GC ptr vars +{V05}
+ mov rcx, r12
+ mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ISINSTANCEOFANY
- ; gcrRegs -[rdx] +[rax]
+ ; gcrRegs -[rdx]
; gcr arg pop 0
- mov gword ptr [rsp+0x20], rax
+ mov gword ptr [rsp+0x28], rax
; GC ptr vars +{V06}
test rax, rax
- je SHORT G_M22830_IG14
- ;; size=18 bbWeight=4 PerfScore 14.00
-G_M22830_IG08: ; bbWeight=2, gcVars=0000000001000000 {V06}, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax r12]
- mov rax, gword ptr [rsp+0x20]
+ je SHORT G_M22830_IG13
+ ;; size=34 bbWeight=4 PerfScore 28.00
+G_M22830_IG07: ; bbWeight=2, gcVars=0000000000080000 {V06}, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ ; GC ptr vars -{V05}
+ mov rax, gword ptr [rsp+0x28]
; gcrRegs +[rax]
mov rcx, qword ptr [rdi+0x30]
mov rcx, qword ptr [rcx]
cmp qword ptr [rcx+0x08], 152
- jle SHORT G_M22830_IG12
+ jle SHORT G_M22830_IG11
;; size=22 bbWeight=2 PerfScore 18.00
-G_M22830_IG09: ; bbWeight=1.60, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M22830_IG08: ; bbWeight=1.60, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
mov r11, qword ptr [rcx+0x98]
test r11, r11
- je SHORT G_M22830_IG11
+ je SHORT G_M22830_IG10
;; size=12 bbWeight=1.60 PerfScore 5.20
-G_M22830_IG10: ; bbWeight=1.28, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M22830_IG13
+G_M22830_IG09: ; bbWeight=1.28, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M22830_IG12
;; size=2 bbWeight=1.28 PerfScore 2.56
-G_M22830_IG11: ; bbWeight=0.80, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M22830_IG10: ; bbWeight=0.80, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
;; size=0 bbWeight=0.80 PerfScore 0.00
-G_M22830_IG12: ; bbWeight=0.72, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M22830_IG11: ; bbWeight=0.72, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, rdi
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r11, rax
- mov rax, gword ptr [rsp+0x20]
+ mov rax, gword ptr [rsp+0x28]
; gcrRegs +[rax]
;; size=26 bbWeight=0.72 PerfScore 1.98
-G_M22830_IG13: ; bbWeight=2, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M22830_IG12: ; bbWeight=2, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
mov rcx, rax
; gcrRegs +[rcx]
mov rdx, rbx
@@ -177,25 +182,25 @@ G_M22830_IG13: ; bbWeight=2, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefR
call [r11]
; gcrRegs -[rax rcx rdx r8]
; gcr arg pop 0
- jmp G_M22830_IG23
+ jmp G_M22830_IG22
;; size=17 bbWeight=2 PerfScore 11.50
-G_M22830_IG14: ; bbWeight=2, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r12]
+G_M22830_IG13: ; bbWeight=2, gcVars=0000000000040000 {V05}, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V05 V18}
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
cmp rbx, rdx
- je SHORT G_M22830_IG18
+ je SHORT G_M22830_IG17
;; size=15 bbWeight=2 PerfScore 3.00
-G_M22830_IG15: ; bbWeight=1.30, gcrefRegs=506C {rdx rbx rbp rsi r12 r14}, byrefRegs=0000 {}, byref
+G_M22830_IG14: ; bbWeight=1.30, gcrefRegs=406C {rdx rbx rbp rsi r14}, byrefRegs=0000 {}, byref
...
@@ -13,14 +13,14 @@
; V01 RetBuf [V01,T00] ( 7, 7 ) byref -> rbx single-def
; V02 arg1 [V02 ] ( 5, 4 ) ref -> [rsp+0xB0] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.String>
; V03 arg2 [V03,T01] ( 6, 5.38) int -> rsi
-; V04 arg3 [V04,T18] ( 1, 1 ) ubyte -> [rsp+0xC0] single-def
+; V04 arg3 [V04,T17] ( 1, 1 ) ubyte -> [rsp+0xC0] single-def
; V05 loc0 [V05 ] ( 2, 1.38) ubyte -> [rsp+0x58] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc1 [V06 ] ( 2, 1 ) ubyte -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
; V07 loc2 [V07 ] ( 2, 2 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op
-; V08 loc3 [V08,T14] ( 4, 2.77) ref -> rdi class-hnd exact single-def <System.Reflection.RuntimeEventInfo[]>
+; V08 loc3 [V08,T09] ( 5, 3.77) ref -> rdi class-hnd exact single-def <System.Reflection.RuntimeEventInfo[]>
; V09 loc4 [V09 ] ( 9, 8.38) struct (24) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]>
-; V10 loc5 [V10,T15] ( 5, 2.54) int -> r14
-; V11 loc6 [V11,T16] ( 5, 1.15) ref -> r15 class-hnd exact <System.Reflection.RuntimeEventInfo>
+; V10 loc5 [V10,T14] ( 5, 2.54) int -> rbp
+; V11 loc6 [V11,T15] ( 5, 1.15) ref -> r14 class-hnd exact <System.Reflection.RuntimeEventInfo>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V14 tmp2 [V14,T05] ( 5, 4.12) ref -> rbp class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
@@ -36,24 +36,23 @@
;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V25 tmp13 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
; V26 tmp14 [V26,T10] ( 7, 3.48) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
-; V27 tmp15 [V27,T19] ( 4, 0.96) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V27 tmp15 [V27,T18] ( 4, 0.96) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V28 tmp16 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
; V29 tmp17 [V29,T08] ( 2, 4 ) int -> rcx "Inlining Arg"
-;* V30 tmp18 [V30,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V31 tmp19 [V31,T20] ( 4, 0 ) ref -> rbp class-hnd exact "Inlining Arg" <System.String>
-; V32 tmp20 [V32,T24] ( 2, 0 ) ubyte -> r13 "Inlining Arg"
+;* V30 tmp18 [V30,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V31 tmp19 [V31,T19] ( 4, 0 ) ref -> r15 class-hnd exact "Inlining Arg" <System.String>
+; V32 tmp20 [V32,T23] ( 2, 0 ) ubyte -> r13 "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp22 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V35 tmp23 [V35 ] ( 3, 2.38) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V09._items (fldOffset=0x0)" P-DEP
; V36 tmp24 [V36 ] ( 3, 2.38) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V09._item (fldOffset=0x8)" P-DEP
; V37 tmp25 [V37 ] ( 3, 2.38) int -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V09._count (fldOffset=0x10)" P-DEP
; V38 tmp26 [V38 ] ( 3, 2.38) int -> [rsp+0x44] do-not-enreg[X] addr-exposed "field V09._capacity (fldOffset=0x14)" P-DEP
-; V39 tmp27 [V39,T21] ( 2, 0 ) ref -> rcx "argument with side effect"
-; V40 tmp28 [V40,T22] ( 2, 0 ) ref -> rcx "argument with side effect"
-; V41 cse0 [V41,T17] ( 3, 1.15) int -> rcx "CSE - moderate"
+; V39 tmp27 [V39,T20] ( 2, 0 ) ref -> rcx "argument with side effect"
+; V40 tmp28 [V40,T21] ( 2, 0 ) ref -> rcx "argument with side effect"
+; V41 cse0 [V41,T16] ( 3, 1.15) int -> rcx "CSE - moderate"
; V42 cse1 [V42,T12] ( 3, 3 ) long -> rcx "CSE - moderate"
-; V43 cse2 [V43,T09] ( 5, 3.77) int -> rbp multi-def "CSE - moderate"
-; V44 cse3 [V44,T11] ( 6, 3 ) ref -> rdx multi-def "CSE - moderate"
+; V43 cse2 [V43,T11] ( 6, 3 ) ref -> rdx multi-def "CSE - moderate"
;
; Lcl frame size = 96
@@ -182,11 +181,10 @@ G_M48278_IG08: ; bbWeight=1, gcrefRegs=4002 {rcx r14}, byrefRegs=0008 {rb
mov rdi, rax
; gcrRegs +[rdi]
xor esi, 2
- mov ebp, dword ptr [rdi+0x08]
- mov ecx, ebp
+ mov ecx, dword ptr [rdi+0x08]
xor rax, rax
mov gword ptr [rsp+0x30], rax
- ;; size=37 bbWeight=1 PerfScore 10.75
+ ;; size=35 bbWeight=1 PerfScore 10.50
G_M48278_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
mov gword ptr [rsp+0x38], rax
@@ -196,27 +194,27 @@ G_M48278_IG10: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx},
mov dword ptr [rsp+0x44], ecx
;; size=8 bbWeight=1 PerfScore 2.00
G_M48278_IG11: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
- xor r14d, r14d
- test ebp, ebp
+ xor ebp, ebp
+ cmp dword ptr [rdi+0x08], 0
jle G_M48278_IG19
- ;; size=11 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 4.25
G_M48278_IG12: ; bbWeight=0.38, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
- mov ecx, r14d
- mov r15, gword ptr [rdi+8*rcx+0x10]
- ; gcrRegs +[r15]
- mov ecx, dword ptr [r15+0x50]
+ mov ecx, ebp
+ mov r14, gword ptr [rdi+8*rcx+0x10]
+ ; gcrRegs +[r14]
+ mov ecx, dword ptr [r14+0x50]
mov eax, esi
and eax, ecx
cmp eax, ecx
jne G_M48278_IG18
cmp byte ptr [rsp+0x58], 0
je G_M48278_IG17
- ;; size=35 bbWeight=0.38 PerfScore 3.46
-G_M48278_IG13: ; bbWeight=0, gcrefRegs=8080 {rdi r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rbp, gword ptr [rsp+0xB0]
- ; gcrRegs +[rbp]
+ ;; size=34 bbWeight=0.38 PerfScore 3.46
+G_M48278_IG13: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0008 {rbx}, byref, isz
+ mov r15, gword ptr [rsp+0xB0]
+ ; gcrRegs +[r15]
movzx r13, byte ptr [rsp+0x50]
- test rbp, rbp
+ test r15, r15
jne SHORT G_M48278_IG14
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -226,72 +224,71 @@ G_M48278_IG13: ; bbWeight=0, gcrefRegs=8080 {rdi r15}, byrefRegs=0008 {rb
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=38 bbWeight=0 PerfScore 0.00
-G_M48278_IG14: ; bbWeight=0, gcrefRegs=80A0 {rbp rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M48278_IG14: ; bbWeight=0, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0008 {rbx}, byref, isz
test r13d, r13d
je SHORT G_M48278_IG15
- mov rcx, r15
+ mov rcx, r14
; gcrRegs +[rcx]
call [System.Reflection.RuntimeEventInfo:get_Name():System.String:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- mov rdx, rbp
+ mov rdx, r15
; gcrRegs +[rdx]
mov r8d, 5
cmp dword ptr [rcx], ecx
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx rbp]
+ ; gcrRegs -[rax rcx rdx r15]
; gcr arg pop 0
test eax, eax
jne SHORT G_M48278_IG16
jmp G_M48278_IG22
;; size=43 bbWeight=0 PerfScore 0.00
-G_M48278_IG15: ; bbWeight=0, gcrefRegs=80A0 {rbp rdi r15}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs +[rbp]
- mov rcx, r15
+G_M48278_IG15: ; bbWeight=0, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs +[r15]
+ mov rcx, r14
; gcrRegs +[rcx]
call [System.Reflection.RuntimeEventInfo:get_Name():System.String:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- mov rdx, rbp
+ mov rdx, r15
; gcrRegs +[rdx]
mov r8d, 4
cmp dword ptr [rcx], ecx
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx rbp]
+ ; gcrRegs -[rax rcx rdx r15]
; gcr arg pop 0
test eax, eax
je G_M48278_IG22
;; size=37 bbWeight=0 PerfScore 0.00
-G_M48278_IG16: ; bbWeight=0, gcrefRegs=8080 {rdi r15}, byrefRegs=0008 {rbx}, byref
+G_M48278_IG16: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0008 {rbx}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
;; size=15 bbWeight=0 PerfScore 0.00
-G_M48278_IG17: ; bbWeight=0.38, gcrefRegs=8080 {rdi r15}, byrefRegs=0008 {rbx}, byref
+G_M48278_IG17: ; bbWeight=0.38, gcrefRegs=4080 {rdi r14}, byrefRegs=0008 {rbx}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
lea rcx, [rsp+0x30]
- mov r8, r15
+ mov r8, r14
; gcrRegs +[r8]
mov rdx, 0xD1FFAB1E ; System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]
call [<unknown method>]
- ; gcrRegs -[r8 r15]
+ ; gcrRegs -[r8 r14]
; gcr arg pop 0
;; size=39 bbWeight=0.38 PerfScore 2.02
G_M48278_IG18: ; bbWeight=0.38, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- inc r14d
- mov ebp, dword ptr [rdi+0x08]
- cmp ebp, r14d
+ inc ebp
+ cmp dword ptr [rdi+0x08], ebp
jg G_M48278_IG12
- ;; size=30 bbWeight=0.38 PerfScore 1.83
+ ;; size=26 bbWeight=0.38 PerfScore 2.12
G_M48278_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rdi]
mov rcx, 0xD1FFAB1E
@@ -344,7 +341,7 @@ G_M48278_IG22: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx},
jmp SHORT G_M48278_IG18
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 656, prolog size 48, PerfScore 86.98, instruction count 159, allocated bytes for code 656 (MethodHash=d9964369) for method System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
+; Total bytes of code 650, prolog size 48, PerfScore 89.77, instruction count 157, allocated bytes for code 650 (MethodHash=d9964369) for method System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -10,72 +10,71 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <ILCompiler.DevirtualizationManager>
; V01 arg1 [V01,T00] ( 21, 26 ) ref -> rbx class-hnd <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T16] ( 14, 8 ) ref -> rsi class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T19] ( 8, 5.50) byref -> rdi single-def
+; V02 arg2 [V02,T17] ( 14, 8 ) ref -> rsi class-hnd single-def <Internal.TypeSystem.DefType>
+; V03 arg3 [V03,T20] ( 8, 5.50) byref -> rdi single-def
; V04 loc0 [V04,T22] ( 11, 5.50) ref -> r14 class-hnd <Internal.TypeSystem.MethodDesc>
; V05 loc1 [V05,T23] ( 3, 5 ) ref -> r15 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> r14
-; V07 loc3 [V07,T20] ( 4, 7 ) ref -> r13 class-hnd single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> r13 class-hnd single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> r12
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [rsp+0x48] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [rsp+0x50] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V10 loc6 [V10,T28] ( 6, 4.50) ref -> r15 class-hnd <Internal.TypeSystem.MethodDesc>
; V11 loc7 [V11,T24] ( 3, 5 ) ref -> r12 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> r13
-; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [rsp+0x40] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [rsp+0x48] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [rsp+0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T46] ( 3, 1.50) int -> rax single-def
+; V15 loc11 [V15,T45] ( 3, 1.50) int -> rax single-def
; V16 loc12 [V16,T03] ( 10, 20 ) ref -> r14 class-hnd <Internal.TypeSystem.TypeDesc>
;* V17 loc13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;* V18 loc14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
; V19 OutArgs [V19 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
-; V21 tmp2 [V21,T34] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1"
-; V22 tmp3 [V22,T47] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V23 tmp4 [V23,T31] ( 5, 3.75) ref -> r13 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V21 tmp2 [V21,T33] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1"
+; V22 tmp3 [V22,T46] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
+; V23 tmp4 [V23,T30] ( 5, 3.75) ref -> r13 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
; V24 tmp5 [V24,T25] ( 3, 5 ) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V25 tmp6 [V25,T35] ( 3, 2 ) int -> r8 "Inline return value spill temp"
-; V26 tmp7 [V26,T33] ( 3, 2.50) int -> r8 single-def "Inline stloc first use temp"
-; V27 tmp8 [V27,T42] ( 3, 1.50) ref -> r15 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V25 tmp6 [V25,T34] ( 3, 2 ) int -> r8 "Inline return value spill temp"
+; V26 tmp7 [V26,T32] ( 3, 2.50) int -> r8 single-def "Inline stloc first use temp"
+; V27 tmp8 [V27,T41] ( 3, 1.50) ref -> r15 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V29 tmp10 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
-; V30 tmp11 [V30,T17] ( 5, 10 ) ref -> [rsp+0x38] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V31 tmp12 [V31,T30] ( 2, 4 ) ref -> rdx class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T18] ( 5, 10 ) ref -> [rsp+0x40] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V31 tmp12 [V31,T29] ( 2, 4 ) ref -> rdx class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp14 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V34 tmp15 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V35 tmp16 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp17 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V37 tmp18 [V37,T43] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V38 tmp19 [V38,T01] ( 3, 24 ) ref -> [rsp+0x30] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V37 tmp18 [V37,T42] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V38 tmp19 [V38,T01] ( 3, 24 ) ref -> [rsp+0x38] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V39 tmp20 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V40 tmp21 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V41 tmp22 [V41 ] ( 0, 0 ) int -> zero-ref
; V42 tmp23 [V42,T02] ( 3, 24 ) ref -> r15 class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V43 tmp24 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V44 tmp25 [V44 ] ( 0, 0 ) int -> zero-ref
-; V45 tmp26 [V45,T36] ( 2, 2 ) ref -> rax single-def "Single return block return value"
+; V45 tmp26 [V45,T35] ( 2, 2 ) ref -> rax single-def "Single return block return value"
; V46 tmp27 [V46,T09] ( 2, 16 ) ref -> r13 "argument with side effect"
; V47 tmp28 [V47,T10] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V48 tmp29 [V48,T37] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V49 tmp30 [V49,T38] ( 2, 2 ) ref -> r15 single-def "argument with side effect"
-; V50 tmp31 [V50,T39] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V51 tmp32 [V51,T32] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V52 tmp33 [V52,T40] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V53 tmp34 [V53,T11] ( 2, 16 ) ref -> [rsp+0x28] spill-single-def "argument with side effect"
+; V48 tmp29 [V48,T36] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V49 tmp30 [V49,T37] ( 2, 2 ) ref -> r15 single-def "argument with side effect"
+; V50 tmp31 [V50,T38] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V51 tmp32 [V51,T31] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V52 tmp33 [V52,T39] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V53 tmp34 [V53,T11] ( 2, 16 ) ref -> [rsp+0x30] spill-single-def "argument with side effect"
; V54 tmp35 [V54,T12] ( 2, 16 ) ref -> rdx "argument with side effect"
;* V55 tmp36 [V55 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V56 tmp37 [V56 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V57 tmp38 [V57,T41] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V57 tmp38 [V57,T40] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V58 tmp39 [V58,T13] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V59 tmp40 [V59,T14] ( 2, 16 ) ref -> [rsp+0x20] spill-single-def "argument with side effect"
+; V59 tmp40 [V59,T14] ( 2, 16 ) ref -> [rsp+0x28] spill-single-def "argument with side effect"
; V60 tmp41 [V60,T15] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V61 tmp42 [V61,T18] ( 2, 8 ) ref -> rdx "argument with side effect"
+; V61 tmp42 [V61,T19] ( 2, 8 ) ref -> rdx "argument with side effect"
; V62 cse0 [V62,T06] ( 10, 18 ) long -> rbp "CSE - aggressive"
-; V63 cse1 [V63,T29] ( 2, 4.50) long -> [rsp+0x58] spill-single-def hoist "CSE - moderate"
-; V64 cse2 [V64,T44] ( 3, 1.50) ref -> r14 "CSE - conservative"
-; V65 cse3 [V65,T45] ( 3, 1.50) ref -> r13 "CSE - conservative"
-; V66 cse4 [V66,T26] ( 3, 5 ) int -> [rsp+0x54] spill-single-def "CSE - moderate"
-; V67 cse5 [V67,T27] ( 3, 5 ) int -> [rsp+0x50] spill-single-def "CSE - moderate"
+; V63 cse1 [V63,T43] ( 3, 1.50) ref -> r14 "CSE - conservative"
+; V64 cse2 [V64,T44] ( 3, 1.50) ref -> r13 "CSE - conservative"
+; V65 cse3 [V65,T26] ( 3, 5 ) int -> [rsp+0x5C] spill-single-def "CSE - moderate"
+; V66 cse4 [V66,T27] ( 3, 5 ) int -> [rsp+0x58] spill-single-def "CSE - moderate"
;
; Lcl frame size = 104
@@ -216,27 +215,26 @@ G_M48343_IG12: ; bbWeight=0.50, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRe
; gcrRegs -[rax]
xor r12d, r12d
mov eax, dword ptr [r15+0x08]
- mov dword ptr [rsp+0x54], eax
+ mov dword ptr [rsp+0x5C], eax
test eax, eax
jle G_M48343_IG17
- mov rcx, qword ptr [r13]
- mov rdx, qword ptr [rcx+0x58]
- mov qword ptr [rsp+0x58], rdx
- ;; size=32 bbWeight=0.50 PerfScore 4.75
+ ;; size=19 bbWeight=0.50 PerfScore 2.25
G_M48343_IG13: ; bbWeight=4, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0080 {rdi}, byref, isz
mov ecx, r12d
- mov r8, gword ptr [r15+8*rcx+0x10]
- ; gcrRegs +[r8]
- mov gword ptr [rsp+0x48], r8
+ mov rdx, gword ptr [r15+8*rcx+0x10]
+ ; gcrRegs +[rdx]
+ mov gword ptr [rsp+0x50], rdx
; GC ptr vars +{V09}
mov rcx, r13
; gcrRegs +[rcx]
- call [rdx+0x20]<unknown method>
- ; gcrRegs -[rcx r8] +[rax]
+ mov r8, qword ptr [r13]
+ mov r8, qword ptr [r8+0x58]
+ call [r8+0x20]<unknown method>
+ ; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x28], rax
+ mov gword ptr [rsp+0x30], rax
; GC ptr vars +{V53}
- mov rcx, gword ptr [rsp+0x48]
+ mov rcx, gword ptr [rsp+0x50]
; gcrRegs +[rcx]
mov rdx, qword ptr [rcx]
mov rdx, qword ptr [rdx+0x58]
@@ -245,7 +243,7 @@ G_M48343_IG13: ; bbWeight=4, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, gword ptr [rsp+0x28]
+ mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
; GC ptr vars -{V53}
call [Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte]
@@ -253,23 +251,23 @@ G_M48343_IG13: ; bbWeight=4, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=
; gcr arg pop 0
test eax, eax
je SHORT G_M48343_IG16
- ;; size=57 bbWeight=4 PerfScore 84.00
+ ;; size=66 bbWeight=4 PerfScore 100.00
G_M48343_IG14: ; bbWeight=2, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0080 {rdi}, byref, isz
- mov rax, gword ptr [rsp+0x48]
+ mov rax, gword ptr [rsp+0x50]
; gcrRegs +[rax]
mov rdx, gword ptr [rax+0x08]
; gcrRegs +[rdx]
- mov gword ptr [rsp+0x38], rdx
+ mov gword ptr [rsp+0x40], rdx
; GC ptr vars +{V30}
mov ecx, 1
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- mov rax, gword ptr [rsp+0x38]
+ mov rax, gword ptr [rsp+0x40]
; gcrRegs +[rax]
test rax, rax
jne SHORT G_M48343_IG15
- mov rcx, gword ptr [rsp+0x48]
+ mov rcx, gword ptr [rsp+0x50]
; gcrRegs +[rcx]
xor edx, edx
mov rax, qword ptr [rcx]
@@ -279,9 +277,9 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=
call [rax+0x28]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov rcx, gword ptr [rsp+0x48]
+ mov rcx, gword ptr [rsp+0x50]
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x38], rax
+ mov gword ptr [rsp+0x40], rax
; GC ptr vars +{V30}
mov r8, rax
; gcrRegs +[r8]
@@ -290,7 +288,7 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=
call [Internal.TypeSystem.TypeDesc:SetCachedCanonValue(int,Internal.TypeSystem.TypeDesc):this]
; gcrRegs -[rax rcx r8]
; gcr arg pop 0
- mov rax, gword ptr [rsp+0x38]
+ mov rax, gword ptr [rsp+0x40]
; gcrRegs +[rax]
;; size=78 bbWeight=2 PerfScore 48.50
G_M48343_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=A049 {rax rbx rsi r13 r15}, byrefRegs=0080 {rdi}, gcvars, byref, isz
@@ -310,11 +308,10 @@ G_M48343_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=A049 {
;; size=25 bbWeight=2 PerfScore 12.50
G_M48343_IG16: ; bbWeight=4, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0080 {rdi}, byref
inc r12d
- mov ecx, dword ptr [rsp+0x54]
+ mov ecx, dword ptr [rsp+0x5C]
cmp ecx, r12d
- mov rdx, qword ptr [rsp+0x58]
jg G_M48343_IG13
- ;; size=21 bbWeight=4 PerfScore 14.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M48343_IG17: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[r13 r15]
mov rcx, rbx
@@ -393,7 +390,7 @@ G_M48343_IG22: ; bbWeight=0.50, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byr
; gcrRegs -[r13]
xor r13d, r13d
mov eax, dword ptr [r12+0x08]
- mov dword ptr [rsp+0x50], eax
+ mov dword ptr [rsp+0x58], eax
test eax, eax
jle G_M48343_IG28
;; size=20 bbWeight=0.50 PerfScore 2.25
@@ -401,7 +398,7 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefR
mov ecx, r13d
mov rdx, gword ptr [r12+8*rcx+0x10]
; gcrRegs +[rdx]
- mov gword ptr [rsp+0x40], rdx
+ mov gword ptr [rsp+0x48], rdx
; GC ptr vars +{V13}
mov rcx, rbx
; gcrRegs +[rcx]
@@ -410,7 +407,7 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefR
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, gword ptr [rsp+0x40]
+ mov rcx, gword ptr [rsp+0x48]
; gcrRegs +[rcx]
call [Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte]
; gcrRegs -[rax rcx rdx]
@@ -422,18 +419,18 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefR
call [rbp+0x18]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x30], rax
+ mov gword ptr [rsp+0x38], rax
; GC ptr vars +{V38}
- mov rcx, gword ptr [rsp+0x40]
...
@@ -12,13 +12,13 @@
; V00 this [V00,T02] ( 4, 4 ) ref -> rdi this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T01] ( 9, 4.12) ref -> rsi ld-addr-op class-hnd <System.String>
; V02 arg2 [V02,T00] ( 6, 5.33) int -> rbx
-; V03 loc0 [V03,T16] ( 6, 2.31) int -> rbp ld-addr-op
-; V04 loc1 [V04,T13] ( 3, 2.33) ref -> rdi class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
+; V03 loc0 [V03,T15] ( 6, 2.31) int -> rbp ld-addr-op
+; V04 loc1 [V04,T12] ( 4, 2.66) ref -> rdi class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
; V05 loc2 [V05,T11] ( 16, 2.66) ref -> rsi class-hnd <System.Reflection.FieldInfo>
-; V06 loc3 [V06,T18] ( 3, 2 ) ubyte -> rbp
+; V06 loc3 [V06,T17] ( 3, 2 ) ubyte -> rbp
;* V07 loc4 [V07 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op
-; V08 loc5 [V08,T15] ( 5, 2.32) int -> r14
-; V09 loc6 [V09,T19] ( 12, 0.99) ref -> r13 class-hnd <System.Reflection.RuntimeFieldInfo>
+; V08 loc5 [V08,T14] ( 5, 2.32) int -> r14
+; V09 loc6 [V09,T18] ( 12, 0.99) ref -> r15 class-hnd <System.Reflection.RuntimeFieldInfo>
; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -28,7 +28,7 @@
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V19 tmp9 [V19,T24] ( 3, 0 ) ref -> r12 "handle histogram profile tmp"
+; V19 tmp9 [V19,T23] ( 3, 0 ) ref -> r13 "handle histogram profile tmp"
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
@@ -48,48 +48,46 @@
;* V36 tmp26 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V37 tmp27 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
; V38 tmp28 [V38,T04] ( 14, 4.67) ref -> r15 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V39 tmp29 [V39,T21] ( 4, 0.98) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V39 tmp29 [V39,T20] ( 4, 0.98) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V41 tmp31 [V41,T17] ( 5, 2 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.RuntimeFieldInfo[]>
+; V41 tmp31 [V41,T16] ( 5, 2 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.RuntimeFieldInfo[]>
; V42 tmp32 [V42,T07] ( 2, 3.38) ref -> rax class-hnd single-def "dup spill" <System.__Canon>
-; V43 tmp33 [V43,T12] ( 4, 2.61) ref -> rax
-; V44 tmp34 [V44,T22] ( 2, 0.24) ref -> rax class-hnd single-def "dup spill" <System.__Canon>
-; V45 tmp35 [V45,T23] ( 4, 0.19) ref -> rdi
+; V43 tmp33 [V43,T13] ( 4, 2.61) ref -> rax
+; V44 tmp34 [V44,T21] ( 2, 0.24) ref -> rax class-hnd single-def "dup spill" <System.__Canon>
+; V45 tmp35 [V45,T22] ( 4, 0.19) ref -> rdi
;* V46 tmp36 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V47 tmp37 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V48 tmp38 [V48,T32] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V49 tmp39 [V49,T25] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V50 tmp40 [V50,T26] ( 3, 0 ) ref -> rcx "argument with side effect"
-;* V51 tmp41 [V51,T33] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V52 tmp42 [V52,T34] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V53 tmp43 [V53,T27] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V54 tmp44 [V54,T28] ( 3, 0 ) ref -> r12 "argument with side effect"
-; V55 tmp45 [V55,T31] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V56 tmp46 [V56,T29] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V57 tmp47 [V57,T30] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
-; V58 cse0 [V58,T20] ( 3, 0.99) int -> rcx "CSE - conservative"
-; V59 cse1 [V59,T14] ( 3, 2.33) int -> r15 "CSE - moderate"
-; V60 cse2 [V60,T09] ( 3, 3 ) long -> rcx "CSE - moderate"
-; V61 cse3 [V61,T08] ( 3, 3 ) ref -> rdx "CSE - moderate"
+;* V48 tmp38 [V48,T31] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V49 tmp39 [V49,T24] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V50 tmp40 [V50,T25] ( 3, 0 ) ref -> rcx "argument with side effect"
+;* V51 tmp41 [V51,T32] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V52 tmp42 [V52,T33] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V53 tmp43 [V53,T26] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V54 tmp44 [V54,T27] ( 3, 0 ) ref -> r13 "argument with side effect"
+; V55 tmp45 [V55,T30] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V56 tmp46 [V56,T28] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V57 tmp47 [V57,T29] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
+; V58 cse0 [V58,T19] ( 3, 0.99) int -> rcx "CSE - conservative"
+; V59 cse1 [V59,T09] ( 3, 3 ) long -> rcx "CSE - moderate"
+; V60 cse2 [V60,T08] ( 3, 3 ) ref -> rdx "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M40435_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
push r13
- push r12
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rdi, rcx
; gcrRegs +[rdi]
mov rsi, rdx
; gcrRegs +[rsi]
mov ebx, r8d
- ;; size=25 bbWeight=1 PerfScore 9.00
+ ;; size=23 bbWeight=1 PerfScore 8.00
G_M40435_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
jne SHORT G_M40435_IG04
@@ -259,15 +257,14 @@ G_M40435_IG18: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
xor ebx, 2
xor ebp, ebp
xor r14d, r14d
- mov r15d, dword ptr [rdi+0x08]
- test r15d, r15d
+ cmp dword ptr [rdi+0x08], 0
jle G_M40435_IG27
- ;; size=23 bbWeight=1 PerfScore 4.25
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M40435_IG19: ; bbWeight=0.33, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
mov ecx, r14d
- mov r13, gword ptr [rdi+8*rcx+0x10]
- ; gcrRegs +[r13]
- mov ecx, dword ptr [r13+0x18]
+ mov r15, gword ptr [rdi+8*rcx+0x10]
+ ; gcrRegs +[r15]
+ mov ecx, dword ptr [r15+0x18]
mov eax, ebx
and eax, ecx
cmp eax, ecx
@@ -275,22 +272,22 @@ G_M40435_IG19: ; bbWeight=0.33, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
test rsi, rsi
je G_M40435_IG22
;; size=33 bbWeight=0.33 PerfScore 2.38
-G_M40435_IG20: ; bbWeight=0, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000 {}, byref
- mov rcx, r13
+G_M40435_IG20: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref
+ mov rcx, r15
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, r13
+ mov rcx, r15
; gcrRegs +[rcx]
- mov rax, qword ptr [r13]
+ mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
+ mov r13, rax
+ ; gcrRegs +[r13]
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -304,13 +301,13 @@ G_M40435_IG20: ; bbWeight=0, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- cmp r12, rax
+ cmp r13, rax
je G_M40435_IG37
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
- ; gcrRegs -[rax rcx r12]
+ ; gcrRegs -[rax rcx r13]
; gcr arg pop 0
mov rcx, rsi
; gcrRegs +[rcx]
@@ -327,15 +324,15 @@ G_M40435_IG20: ; bbWeight=0, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000
; gcr arg pop 0
test eax, eax
je G_M40435_IG36
- mov rcx, r13
+ mov rcx, r15
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, r13
+ mov rcx, r15
; gcrRegs +[rcx]
- mov rax, qword ptr [r13]
+ mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
@@ -352,24 +349,24 @@ G_M40435_IG20: ; bbWeight=0, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov ebp, 1
- ;; size=196 bbWeight=0 PerfScore 0.00
-G_M40435_IG21: ; bbWeight=0, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000 {}, byref
- mov rcx, r13
+ ;; size=194 bbWeight=0 PerfScore 0.00
+G_M40435_IG21: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref
+ mov rcx, r15
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, r13
+ mov rcx, r15
; gcrRegs +[rcx]
- mov rax, qword ptr [r13]
+ mov rax, qword ptr [r15]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- mov rcx, r12
+ mov r13, rax
+ ; gcrRegs +[r13]
+ mov rcx, r13
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
@@ -390,13 +387,13 @@ G_M40435_IG21: ; bbWeight=0, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx]
- mov rax, qword ptr [r12]
+ mov rax, qword ptr [r13]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0xB8]
call [rax+0x18]<unknown method>
- ; gcrRegs -[rcx rdx r12]
+ ; gcrRegs -[rcx rdx r13]
; gcr arg pop 0
test eax, eax
jne G_M40435_IG34
@@ -425,24 +422,24 @@ G_M40435_IG21: ; bbWeight=0, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000
call CORINFO_HELP_COUNTPROFILE32
; gcrRegs -[rsi]
; gcr arg pop 0
- ;; size=177 bbWeight=0 PerfScore 0.00
-G_M40435_IG22: ; bbWeight=0.33, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
+ ;; size=176 bbWeight=0 PerfScore 0.00
+G_M40435_IG22: ; bbWeight=0.33, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rsi, r13
+ mov rsi, r15
; gcrRegs +[rsi]
;; size=18 bbWeight=0.33 PerfScore 0.49
G_M40435_IG23: ; bbWeight=0.33, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r13]
...
@@ -10,53 +10,53 @@
;
; V00 this [V00,T21] ( 9, 22.50) ref -> rbx this class-hnd single-def <System.Buffers.SharedArrayPool`1[ubyte]>
; V01 loc0 [V01,T12] ( 5, 33.50) int -> rsi
-; V02 loc1 [V02,T31] ( 5, 19 ) int -> rdi
+; V02 loc1 [V02,T30] ( 5, 19 ) int -> rdi
; V03 loc2 [V03,T20] ( 7, 27 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T43] ( 4, 10 ) ref -> r15 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T30] ( 6, 19 ) int -> r13
-; V06 loc5 [V06,T37] ( 8, 10.50) ref -> [rbp-0x88] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T42] ( 4, 10 ) ref -> r15 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T29] ( 6, 19 ) int -> r13
+; V06 loc5 [V06,T36] ( 8, 10.50) ref -> [rbp-0x98] class-hnd EH-live spill-single-def <<unknown class>>
; V07 loc6 [V07 ] ( 2, 4 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T38] ( 8, 10.50) ref -> [rbp-0x90] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T37] ( 8, 10.50) ref -> [rbp-0xA0] class-hnd EH-live spill-single-def <<unknown class>>
; V09 loc8 [V09 ] ( 2, 4 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T24] ( 3, 20 ) ref -> rdi class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T23] ( 3, 20 ) ref -> rdi class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T04] ( 5, 66 ) int -> rsi
; V12 loc11 [V12,T02] ( 6, 64 ) ref -> r13 class-hnd <<unknown class>>
-; V13 loc12 [V13,T44] ( 2, 8.50) int -> rdi
-; V14 loc13 [V14,T60] ( 3, 1.50) int -> rdi
-; V15 loc14 [V15,T39] ( 8, 10.50) ref -> [rbp-0x98] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T43] ( 2, 8.50) int -> rdi
+; V14 loc13 [V14,T59] ( 3, 1.50) int -> rdi
+; V15 loc14 [V15,T38] ( 8, 10.50) ref -> [rbp-0xA8] class-hnd EH-live spill-single-def <<unknown class>>
; V16 loc15 [V16 ] ( 2, 4 ) struct (16) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T10] ( 5, 36 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T10] ( 6, 44 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> r13
-; V19 loc18 [V19,T23] ( 3, 24 ) int -> r8
-; V20 loc19 [V20,T07] ( 6, 48 ) ref -> [rbp-0xA0] class-hnd spill-single-def <<unknown class>>
+; V19 loc18 [V19,T22] ( 3, 24 ) int -> rdx
+; V20 loc19 [V20,T07] ( 6, 48 ) ref -> [rbp-0xB0] class-hnd spill-single-def <<unknown class>>
; V21 OutArgs [V21 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T25] ( 3, 20 ) ref -> r12 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T24] ( 3, 20 ) ref -> r12 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T11] ( 2, 36 ) int -> [rbp-0x6C] spill-single-def "impAppendStmt"
; V25 tmp4 [V25,T14] ( 2, 32 ) int -> [rbp-0x70] spill-single-def "impAppendStmt"
; V26 tmp5 [V26,T15] ( 2, 32 ) int -> [rbp-0x74] spill-single-def "impAppendStmt"
; V27 tmp6 [V27,T16] ( 2, 32 ) int -> r12 "impAppendStmt"
; V28 tmp7 [V28,T17] ( 2, 32 ) int -> r13 "impAppendStmt"
-; V29 tmp8 [V29,T51] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
+; V29 tmp8 [V29,T50] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
;* V30 tmp9 [V30 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V31 tmp10 [V31 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V32 tmp11 [V32 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V33 tmp12 [V33,T52] ( 3, 3 ) ref -> rdi single-def "handle histogram profile tmp"
+; V33 tmp12 [V33,T51] ( 3, 3 ) ref -> rdi single-def "handle histogram profile tmp"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
; V35 tmp14 [V35,T01] ( 3, 96 ) ref -> r13 "handle histogram profile tmp"
;* V36 tmp15 [V36 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V38 tmp17 [V38 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V39 tmp18 [V39,T53] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
+; V39 tmp18 [V39,T52] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V41 tmp20 [V41,T09] ( 3, 48 ) ref -> [rbp-0xA8] spill-single-def "handle histogram profile tmp"
+; V41 tmp20 [V41,T09] ( 3, 48 ) ref -> [rbp-0xB8] spill-single-def "handle histogram profile tmp"
;* V42 tmp21 [V42 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V45 tmp24 [V45,T27] ( 3, 20 ) int -> [rbp-0x78] spill-single-def "Inline stloc first use temp"
+; V45 tmp24 [V45,T26] ( 3, 20 ) int -> [rbp-0x78] spill-single-def "Inline stloc first use temp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp26 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp27 [V48,T26] ( 3, 20 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V48 tmp27 [V48,T25] ( 3, 20 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V49 tmp28 [V49,T05] ( 5, 66 ) int -> [rbp-0x7C] "Inline stloc first use temp"
; V50 tmp29 [V50,T18] ( 2, 32 ) int -> rax "Inlining Arg"
; V51 tmp30 [V51,T19] ( 2, 32 ) int -> rax "Inlining Arg"
@@ -66,39 +66,38 @@
; V55 tmp34 [V55 ] ( 1, 2 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V09.value (fldOffset=0x8)" P-DEP
; V56 tmp35 [V56 ] ( 2, 4 ) ref -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V16.key (fldOffset=0x0)" P-DEP
; V57 tmp36 [V57 ] ( 1, 2 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V16.value (fldOffset=0x8)" P-DEP
-; V58 tmp37 [V58,T54] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V59 tmp38 [V59,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V60 tmp39 [V60,T48] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V58 tmp37 [V58,T53] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V59 tmp38 [V59,T31] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V60 tmp39 [V60,T47] ( 2, 8 ) ref -> rcx "argument with side effect"
; V61 tmp40 [V61,T13] ( 2, 32 ) ref -> rdx "argument with side effect"
-;* V62 tmp41 [V62,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V63 tmp42 [V63,T62] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V64 tmp43 [V64,T55] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V65 tmp44 [V65,T56] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V66 tmp45 [V66,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V67 tmp46 [V67,T49] ( 2, 8 ) ref -> rcx "argument with side effect"
+;* V62 tmp41 [V62,T34] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V63 tmp42 [V63,T61] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V64 tmp43 [V64,T54] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V65 tmp44 [V65,T55] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V66 tmp45 [V66,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V67 tmp46 [V67,T48] ( 2, 8 ) ref -> rcx "argument with side effect"
; V68 tmp47 [V68,T06] ( 2, 64 ) ref -> rdx "argument with side effect"
-;* V69 tmp48 [V69,T36] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V70 tmp49 [V70,T63] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V71 tmp50 [V71,T57] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V72 tmp51 [V72,T58] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V73 tmp52 [V73,T34] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V74 tmp53 [V74,T50] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V75 tmp54 [V75,T64] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V76 tmp55 [V76,T59] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V77 PSPSym [V77,T61] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
-; V78 cse0 [V78,T45] ( 4, 8 ) ref -> rbx multi-def "CSE - moderate"
-; V79 cse1 [V79,T40] ( 6, 10.50) ref -> rbx multi-def "CSE - moderate"
-; V80 cse2 [V80,T46] ( 4, 8 ) ref -> rdi multi-def "CSE - moderate"
-; V81 cse3 [V81,T41] ( 6, 10.50) ref -> rdi multi-def "CSE - moderate"
-; V82 cse4 [V82,T47] ( 4, 8 ) ref -> r15 multi-def "CSE - moderate"
-; V83 cse5 [V83,T42] ( 6, 10.50) ref -> r15 multi-def "CSE - moderate"
-; V84 cse6 [V84,T22] ( 3, 24 ) byref -> [rbp-0xB0] spill-single-def "CSE - moderate"
-; V85 cse7 [V85,T08] ( 4, 48 ) long -> rax "CSE - aggressive"
-; V86 cse8 [V86,T03] ( 3, 68 ) int -> r12 "CSE - aggressive"
-; V87 cse9 [V87,T28] ( 3, 20 ) int -> [rbp-0x80] spill-single-def "CSE - moderate"
-; V88 cse10 [V88,T29] ( 3, 20 ) int -> r15 "CSE - moderate"
+;* V69 tmp48 [V69,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V70 tmp49 [V70,T62] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V71 tmp50 [V71,T56] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V72 tmp51 [V72,T57] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V73 tmp52 [V73,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V74 tmp53 [V74,T49] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V75 tmp54 [V75,T63] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V76 tmp55 [V76,T58] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V77 PSPSym [V77,T60] ( 1, 1 ) long -> [rbp-0xC8] do-not-enreg[V] "PSPSym"
+; V78 cse0 [V78,T44] ( 4, 8 ) ref -> rbx multi-def "CSE - moderate"
+; V79 cse1 [V79,T39] ( 6, 10.50) ref -> rbx multi-def "CSE - moderate"
+; V80 cse2 [V80,T45] ( 4, 8 ) ref -> rdi multi-def "CSE - moderate"
+; V81 cse3 [V81,T40] ( 6, 10.50) ref -> rdi multi-def "CSE - moderate"
+; V82 cse4 [V82,T46] ( 4, 8 ) ref -> r15 multi-def "CSE - moderate"
+; V83 cse5 [V83,T41] ( 6, 10.50) ref -> r15 multi-def "CSE - moderate"
+; V84 cse6 [V84,T08] ( 5, 56 ) long -> [rbp-0x88] spill-single-def "CSE - aggressive"
+; V85 cse7 [V85,T03] ( 3, 68 ) int -> r12 "CSE - aggressive"
+; V86 cse8 [V86,T27] ( 3, 20 ) int -> [rbp-0x8C] spill-single-def "CSE - moderate"
+; V87 cse9 [V87,T28] ( 3, 20 ) int -> r15 "CSE - moderate"
;
-; Lcl frame size = 168
+; Lcl frame size = 184
G_M18152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -109,14 +108,14 @@ G_M18152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 168
- lea rbp, [rsp+0xE0]
+ sub rsp, 184
+ lea rbp, [rsp+0xF0]
xor eax, eax
mov qword ptr [rbp-0x68], rax
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rbp-0x60], ymm4
mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0xB8], rsp
+ mov qword ptr [rbp-0xC8], rsp
mov rbx, rcx
; gcrRegs +[rbx]
;; size=56 bbWeight=1 PerfScore 14.58
@@ -188,10 +187,10 @@ G_M18152_IG07: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
mov r12, gword ptr [r12+0x08]
xor r10d, r10d
mov r11d, dword ptr [r12+0x08]
- mov dword ptr [rbp-0x80], r11d
+ mov dword ptr [rbp-0x8C], r11d
test r11d, r11d
jle SHORT G_M18152_IG09
- ;; size=22 bbWeight=2 PerfScore 13.00
+ ;; size=25 bbWeight=2 PerfScore 13.00
G_M18152_IG08: ; bbWeight=16, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rbp-0x78]
mov dword ptr [rsp+0x20], r8d
@@ -208,11 +207,11 @@ G_M18152_IG08: ; bbWeight=16, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs
; gcr arg pop 0
mov r10d, dword ptr [rbp-0x7C]
inc r10d
- mov ecx, dword ptr [rbp-0x80]
+ mov ecx, dword ptr [rbp-0x8C]
cmp ecx, r10d
mov eax, dword ptr [rbp-0x6C]
jg SHORT G_M18152_IG08
- ;; size=55 bbWeight=16 PerfScore 264.00
+ ;; size=58 bbWeight=16 PerfScore 264.00
G_M18152_IG09: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r12]
mov rcx, 0xD1FFAB1E
@@ -243,10 +242,10 @@ G_M18152_IG11: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rcx rbx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x88], rax
+ mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V06}
;; size=59 bbWeight=0.50 PerfScore 6.00
-G_M18152_IG12: ; bbWeight=0.50, gcVars=00000000000000000000002000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M18152_IG12: ; bbWeight=0.50, gcVars=0000001000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
jmp SHORT G_M18152_IG14
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M18152_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
@@ -254,7 +253,7 @@ G_M18152_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x88]
+ mov rcx, gword ptr [rbp-0x98]
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
@@ -272,7 +271,7 @@ G_M18152_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Array:Clear(System.Array)]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x88]
+ mov rax, gword ptr [rbp-0x98]
; gcrRegs +[rax]
;; size=74 bbWeight=2 PerfScore 25.00
G_M18152_IG14: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
@@ -282,7 +281,7 @@ G_M18152_IG14: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rcx]
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x88]
+ mov rcx, gword ptr [rbp-0x98]
; gcrRegs +[rcx]
mov rbx, rcx
; gcrRegs +[rbx]
@@ -301,7 +300,7 @@ G_M18152_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x88]
+ mov rcx, gword ptr [rbp-0x98]
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; GC ptr vars -{V06}
@@ -317,7 +316,7 @@ G_M18152_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- jmp G_M18152_IG42
+ jmp G_M18152_IG43
;; size=73 bbWeight=0.50 PerfScore 5.12
G_M18152_IG16: ; bbWeight=1, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx r12 r14-r15]
@@ -340,17 +339,17 @@ G_M18152_IG17: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rcx rdi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x90], rax
...
@@ -10,53 +10,53 @@
;
; V00 this [V00,T21] ( 9, 22.50) ref -> rbx this class-hnd single-def <System.Buffers.SharedArrayPool`1[int]>
; V01 loc0 [V01,T12] ( 5, 33.50) int -> rsi
-; V02 loc1 [V02,T31] ( 5, 19 ) int -> rdi
+; V02 loc1 [V02,T30] ( 5, 19 ) int -> rdi
; V03 loc2 [V03,T20] ( 7, 27 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T43] ( 4, 10 ) ref -> r15 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T30] ( 6, 19 ) int -> r13
-; V06 loc5 [V06,T37] ( 8, 10.50) ref -> [rbp-0x88] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T42] ( 4, 10 ) ref -> r15 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T29] ( 6, 19 ) int -> r13
+; V06 loc5 [V06,T36] ( 8, 10.50) ref -> [rbp-0x98] class-hnd EH-live spill-single-def <<unknown class>>
; V07 loc6 [V07 ] ( 2, 4 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T38] ( 8, 10.50) ref -> [rbp-0x90] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T37] ( 8, 10.50) ref -> [rbp-0xA0] class-hnd EH-live spill-single-def <<unknown class>>
; V09 loc8 [V09 ] ( 2, 4 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T24] ( 3, 20 ) ref -> rdi class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T23] ( 3, 20 ) ref -> rdi class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T04] ( 5, 66 ) int -> rsi
; V12 loc11 [V12,T02] ( 6, 64 ) ref -> r13 class-hnd <<unknown class>>
-; V13 loc12 [V13,T44] ( 2, 8.50) int -> rdi
-; V14 loc13 [V14,T60] ( 3, 1.50) int -> rdi
-; V15 loc14 [V15,T39] ( 8, 10.50) ref -> [rbp-0x98] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T43] ( 2, 8.50) int -> rdi
+; V14 loc13 [V14,T59] ( 3, 1.50) int -> rdi
+; V15 loc14 [V15,T38] ( 8, 10.50) ref -> [rbp-0xA8] class-hnd EH-live spill-single-def <<unknown class>>
; V16 loc15 [V16 ] ( 2, 4 ) struct (16) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T10] ( 5, 36 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T10] ( 6, 44 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> r13
-; V19 loc18 [V19,T23] ( 3, 24 ) int -> r8
-; V20 loc19 [V20,T07] ( 6, 48 ) ref -> [rbp-0xA0] class-hnd spill-single-def <<unknown class>>
+; V19 loc18 [V19,T22] ( 3, 24 ) int -> rdx
+; V20 loc19 [V20,T07] ( 6, 48 ) ref -> [rbp-0xB0] class-hnd spill-single-def <<unknown class>>
; V21 OutArgs [V21 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T25] ( 3, 20 ) ref -> r12 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T24] ( 3, 20 ) ref -> r12 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T11] ( 2, 36 ) int -> [rbp-0x6C] spill-single-def "impAppendStmt"
; V25 tmp4 [V25,T14] ( 2, 32 ) int -> [rbp-0x70] spill-single-def "impAppendStmt"
; V26 tmp5 [V26,T15] ( 2, 32 ) int -> [rbp-0x74] spill-single-def "impAppendStmt"
; V27 tmp6 [V27,T16] ( 2, 32 ) int -> r12 "impAppendStmt"
; V28 tmp7 [V28,T17] ( 2, 32 ) int -> r13 "impAppendStmt"
-; V29 tmp8 [V29,T51] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
+; V29 tmp8 [V29,T50] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
;* V30 tmp9 [V30 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V31 tmp10 [V31 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V32 tmp11 [V32 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V33 tmp12 [V33,T52] ( 3, 3 ) ref -> rdi single-def "handle histogram profile tmp"
+; V33 tmp12 [V33,T51] ( 3, 3 ) ref -> rdi single-def "handle histogram profile tmp"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
; V35 tmp14 [V35,T01] ( 3, 96 ) ref -> r13 "handle histogram profile tmp"
;* V36 tmp15 [V36 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V38 tmp17 [V38 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V39 tmp18 [V39,T53] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
+; V39 tmp18 [V39,T52] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V41 tmp20 [V41,T09] ( 3, 48 ) ref -> [rbp-0xA8] spill-single-def "handle histogram profile tmp"
+; V41 tmp20 [V41,T09] ( 3, 48 ) ref -> [rbp-0xB8] spill-single-def "handle histogram profile tmp"
;* V42 tmp21 [V42 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V45 tmp24 [V45,T27] ( 3, 20 ) int -> [rbp-0x78] spill-single-def "Inline stloc first use temp"
+; V45 tmp24 [V45,T26] ( 3, 20 ) int -> [rbp-0x78] spill-single-def "Inline stloc first use temp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp26 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp27 [V48,T26] ( 3, 20 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V48 tmp27 [V48,T25] ( 3, 20 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V49 tmp28 [V49,T05] ( 5, 66 ) int -> [rbp-0x7C] "Inline stloc first use temp"
; V50 tmp29 [V50,T18] ( 2, 32 ) int -> rax "Inlining Arg"
; V51 tmp30 [V51,T19] ( 2, 32 ) int -> rax "Inlining Arg"
@@ -66,39 +66,38 @@
; V55 tmp34 [V55 ] ( 1, 2 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V09.value (fldOffset=0x8)" P-DEP
; V56 tmp35 [V56 ] ( 2, 4 ) ref -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V16.key (fldOffset=0x0)" P-DEP
; V57 tmp36 [V57 ] ( 1, 2 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V16.value (fldOffset=0x8)" P-DEP
-; V58 tmp37 [V58,T54] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V59 tmp38 [V59,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V60 tmp39 [V60,T48] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V58 tmp37 [V58,T53] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V59 tmp38 [V59,T31] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V60 tmp39 [V60,T47] ( 2, 8 ) ref -> rcx "argument with side effect"
; V61 tmp40 [V61,T13] ( 2, 32 ) ref -> rdx "argument with side effect"
-;* V62 tmp41 [V62,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V63 tmp42 [V63,T62] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V64 tmp43 [V64,T55] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V65 tmp44 [V65,T56] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V66 tmp45 [V66,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V67 tmp46 [V67,T49] ( 2, 8 ) ref -> rcx "argument with side effect"
+;* V62 tmp41 [V62,T34] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V63 tmp42 [V63,T61] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V64 tmp43 [V64,T54] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V65 tmp44 [V65,T55] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V66 tmp45 [V66,T32] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V67 tmp46 [V67,T48] ( 2, 8 ) ref -> rcx "argument with side effect"
; V68 tmp47 [V68,T06] ( 2, 64 ) ref -> rdx "argument with side effect"
-;* V69 tmp48 [V69,T36] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V70 tmp49 [V70,T63] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V71 tmp50 [V71,T57] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V72 tmp51 [V72,T58] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V73 tmp52 [V73,T34] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V74 tmp53 [V74,T50] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V75 tmp54 [V75,T64] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V76 tmp55 [V76,T59] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V77 PSPSym [V77,T61] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
-; V78 cse0 [V78,T45] ( 4, 8 ) ref -> rbx multi-def "CSE - moderate"
-; V79 cse1 [V79,T40] ( 6, 10.50) ref -> rbx multi-def "CSE - moderate"
-; V80 cse2 [V80,T46] ( 4, 8 ) ref -> rdi multi-def "CSE - moderate"
-; V81 cse3 [V81,T41] ( 6, 10.50) ref -> rdi multi-def "CSE - moderate"
-; V82 cse4 [V82,T47] ( 4, 8 ) ref -> r15 multi-def "CSE - moderate"
-; V83 cse5 [V83,T42] ( 6, 10.50) ref -> r15 multi-def "CSE - moderate"
-; V84 cse6 [V84,T22] ( 3, 24 ) byref -> [rbp-0xB0] spill-single-def "CSE - moderate"
-; V85 cse7 [V85,T08] ( 4, 48 ) long -> rax "CSE - aggressive"
-; V86 cse8 [V86,T03] ( 3, 68 ) int -> r12 "CSE - aggressive"
-; V87 cse9 [V87,T28] ( 3, 20 ) int -> [rbp-0x80] spill-single-def "CSE - moderate"
-; V88 cse10 [V88,T29] ( 3, 20 ) int -> r15 "CSE - moderate"
+;* V69 tmp48 [V69,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V70 tmp49 [V70,T62] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V71 tmp50 [V71,T56] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V72 tmp51 [V72,T57] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V73 tmp52 [V73,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V74 tmp53 [V74,T49] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V75 tmp54 [V75,T63] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V76 tmp55 [V76,T58] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V77 PSPSym [V77,T60] ( 1, 1 ) long -> [rbp-0xC8] do-not-enreg[V] "PSPSym"
+; V78 cse0 [V78,T44] ( 4, 8 ) ref -> rbx multi-def "CSE - moderate"
+; V79 cse1 [V79,T39] ( 6, 10.50) ref -> rbx multi-def "CSE - moderate"
+; V80 cse2 [V80,T45] ( 4, 8 ) ref -> rdi multi-def "CSE - moderate"
+; V81 cse3 [V81,T40] ( 6, 10.50) ref -> rdi multi-def "CSE - moderate"
+; V82 cse4 [V82,T46] ( 4, 8 ) ref -> r15 multi-def "CSE - moderate"
+; V83 cse5 [V83,T41] ( 6, 10.50) ref -> r15 multi-def "CSE - moderate"
+; V84 cse6 [V84,T08] ( 5, 56 ) long -> [rbp-0x88] spill-single-def "CSE - aggressive"
+; V85 cse7 [V85,T03] ( 3, 68 ) int -> r12 "CSE - aggressive"
+; V86 cse8 [V86,T27] ( 3, 20 ) int -> [rbp-0x8C] spill-single-def "CSE - moderate"
+; V87 cse9 [V87,T28] ( 3, 20 ) int -> r15 "CSE - moderate"
;
-; Lcl frame size = 168
+; Lcl frame size = 184
G_M34916_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -109,14 +108,14 @@ G_M34916_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 168
- lea rbp, [rsp+0xE0]
+ sub rsp, 184
+ lea rbp, [rsp+0xF0]
xor eax, eax
mov qword ptr [rbp-0x68], rax
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rbp-0x60], ymm4
mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0xB8], rsp
+ mov qword ptr [rbp-0xC8], rsp
mov rbx, rcx
; gcrRegs +[rbx]
;; size=56 bbWeight=1 PerfScore 14.58
@@ -188,10 +187,10 @@ G_M34916_IG07: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
mov r12, gword ptr [r12+0x08]
xor r10d, r10d
mov r11d, dword ptr [r12+0x08]
- mov dword ptr [rbp-0x80], r11d
+ mov dword ptr [rbp-0x8C], r11d
test r11d, r11d
jle SHORT G_M34916_IG09
- ;; size=22 bbWeight=2 PerfScore 13.00
+ ;; size=25 bbWeight=2 PerfScore 13.00
G_M34916_IG08: ; bbWeight=16, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rbp-0x78]
mov dword ptr [rsp+0x20], r8d
@@ -208,11 +207,11 @@ G_M34916_IG08: ; bbWeight=16, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs
; gcr arg pop 0
mov r10d, dword ptr [rbp-0x7C]
inc r10d
- mov ecx, dword ptr [rbp-0x80]
+ mov ecx, dword ptr [rbp-0x8C]
cmp ecx, r10d
mov eax, dword ptr [rbp-0x6C]
jg SHORT G_M34916_IG08
- ;; size=55 bbWeight=16 PerfScore 264.00
+ ;; size=58 bbWeight=16 PerfScore 264.00
G_M34916_IG09: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r12]
mov rcx, 0xD1FFAB1E
@@ -243,10 +242,10 @@ G_M34916_IG11: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rcx rbx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x88], rax
+ mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V06}
;; size=59 bbWeight=0.50 PerfScore 6.00
-G_M34916_IG12: ; bbWeight=0.50, gcVars=00000000000000000000002000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34916_IG12: ; bbWeight=0.50, gcVars=0000001000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
jmp SHORT G_M34916_IG14
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M34916_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
@@ -254,7 +253,7 @@ G_M34916_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x88]
+ mov rcx, gword ptr [rbp-0x98]
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
@@ -272,7 +271,7 @@ G_M34916_IG13: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Array:Clear(System.Array)]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x88]
+ mov rax, gword ptr [rbp-0x98]
; gcrRegs +[rax]
;; size=74 bbWeight=2 PerfScore 25.00
G_M34916_IG14: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
@@ -282,7 +281,7 @@ G_M34916_IG14: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rcx]
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x88]
+ mov rcx, gword ptr [rbp-0x98]
; gcrRegs +[rcx]
mov rbx, rcx
; gcrRegs +[rbx]
@@ -301,7 +300,7 @@ G_M34916_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x88]
+ mov rcx, gword ptr [rbp-0x98]
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; GC ptr vars -{V06}
@@ -317,7 +316,7 @@ G_M34916_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- jmp G_M34916_IG42
+ jmp G_M34916_IG43
;; size=73 bbWeight=0.50 PerfScore 5.12
G_M34916_IG16: ; bbWeight=1, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx r12 r14-r15]
@@ -340,17 +339,17 @@ G_M34916_IG17: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rcx rdi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x90], rax
...
@@ -9,91 +9,89 @@
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 4, 10 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Array>
-; V01 loc1 [V01,T07] ( 6, 21 ) int -> rsi
+; V01 loc1 [V01,T06] ( 6, 21 ) int -> rsi
; V02 loc2 [V02 ] ( 8, 4 ) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
; V03 loc3 [V03 ] ( 38, 13 ) ref -> [rbp-0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <ulong[,]>
-;* V04 loc4 [V04,T56] ( 0, 0 ) int -> zero-ref
-;* V05 loc5 [V05,T47] ( 0, 0 ) int -> zero-ref
-; V06 loc6 [V06 ] ( 4, 33 ) ref -> [rbp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
-; V07 loc7 [V07,T02] ( 7, 72.50) int -> rcx
-; V08 loc8 [V08,T00] ( 7,100 ) int -> rax
-; V09 loc9 [V09,T30] ( 5, 2.50) ref -> rax class-hnd exact single-def <<unknown class>>
-; V10 loc10 [V10,T17] ( 14, 7 ) ref -> rax class-hnd single-def <ulong[,]>
-; V11 loc11 [V11,T31] ( 4, 2 ) ref -> rbx class-hnd exact single-def <<unknown class>>
-; V12 loc12 [V12,T22] ( 10, 5 ) ref -> rax class-hnd <<unknown class>>
+;* V04 loc4 [V04,T53] ( 0, 0 ) int -> zero-ref
+;* V05 loc5 [V05,T44] ( 0, 0 ) int -> zero-ref
+; V06 loc6 [V06 ] ( 6, 9 ) ref -> [rbp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
+;* V07 loc7 [V07,T54] ( 0, 0 ) int -> zero-ref
+; V08 loc8 [V08,T02] ( 14, 26.50) int -> rcx
+; V09 loc9 [V09,T27] ( 5, 2.50) ref -> rax class-hnd exact single-def <<unknown class>>
+; V10 loc10 [V10,T14] ( 14, 7 ) ref -> rax class-hnd single-def <ulong[,]>
+; V11 loc11 [V11,T28] ( 4, 2 ) ref -> rbx class-hnd exact single-def <<unknown class>>
+; V12 loc12 [V12,T19] ( 10, 5 ) ref -> rax class-hnd <<unknown class>>
; V13 OutArgs [V13 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14 ] ( 3, 1.50) struct ( 8) [rbp-0x60] do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
; V16 tmp3 [V16 ] ( 3, 6 ) int -> [rbp-0x68] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"
;* V18 tmp5 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-;* V19 tmp6 [V19,T48] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V20 tmp7 [V20,T25] ( 3, 4 ) int -> rsi "Inlining Arg"
-; V21 tmp8 [V21,T37] ( 2, 2 ) ref -> rcx class-hnd single-def "Inline return value spill temp" <System.Array>
+;* V19 tmp6 [V19,T45] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+; V20 tmp7 [V20,T22] ( 3, 4 ) int -> rsi "Inlining Arg"
+; V21 tmp8 [V21,T34] ( 2, 2 ) ref -> rcx class-hnd single-def "Inline return value spill temp" <System.Array>
; V22 tmp9 [V22 ] ( 4, 4 ) ref -> [rbp-0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Array>
; V23 tmp10 [V23 ] ( 3, 6 ) ref -> [rbp-0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
; V24 tmp11 [V24 ] ( 4, 8 ) struct (16) [rbp-0x88] do-not-enreg[XSF] addr-exposed ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
; V25 tmp12 [V25 ] ( 2, 4 ) struct (16) [rbp-0x98] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.Runtime.CompilerServices.QCallTypeHandle>
;* V26 tmp13 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
-; V27 tmp14 [V27,T24] ( 3, 5 ) ref -> rcx class-hnd exact single-def "dup spill" <System.RuntimeType>
-; V28 tmp15 [V28,T38] ( 2, 2 ) byref -> rdi single-def
+; V27 tmp14 [V27,T21] ( 3, 5 ) ref -> rcx class-hnd exact single-def "dup spill" <System.RuntimeType>
+; V28 tmp15 [V28,T35] ( 2, 2 ) byref -> rdi single-def
;* V29 tmp16 [V29 ] ( 0, 0 ) ref -> zero-ref single-def
;* V30 tmp17 [V30 ] ( 0, 0 ) byref -> zero-ref single-def
-; V31 tmp18 [V31,T40] ( 3, 1.50) long -> r14
-; V32 tmp19 [V32,T26] ( 2, 4 ) struct ( 8) [rbp-0xA0] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
+; V31 tmp18 [V31,T37] ( 3, 1.50) long -> r14
+; V32 tmp19 [V32,T23] ( 2, 4 ) struct ( 8) [rbp-0xA0] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V33 tmp20 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V34 tmp21 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V35 tmp22 [V35,T03] ( 5, 40 ) ref -> r14 class-hnd "Inlining Arg" <System.Array>
-; V36 tmp23 [V36,T20] ( 2, 4 ) int -> rcx "Inline return value spill temp"
+; V35 tmp22 [V35,T00] ( 5, 40 ) ref -> r14 class-hnd "Inlining Arg" <System.Array>
+; V36 tmp23 [V36,T17] ( 2, 4 ) int -> rcx "Inline return value spill temp"
;* V37 tmp24 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V38 tmp25 [V38,T15] ( 3, 10.00) int -> rcx "Inline stloc first use temp"
-; V39 tmp26 [V39,T05] ( 3, 24 ) byref -> rbx "Inlining Arg"
+; V38 tmp25 [V38,T12] ( 3, 10.00) int -> rcx "Inline stloc first use temp"
+; V39 tmp26 [V39,T04] ( 3, 24 ) byref -> rbx "Inlining Arg"
;* V40 tmp27 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp28 [V41,T04] ( 5, 40 ) ref -> rdi class-hnd "Inlining Arg" <System.Array>
-; V42 tmp29 [V42,T21] ( 2, 4 ) int -> rcx "Inline return value spill temp"
+; V41 tmp28 [V41,T01] ( 5, 40 ) ref -> rdi class-hnd "Inlining Arg" <System.Array>
+; V42 tmp29 [V42,T18] ( 2, 4 ) int -> rcx "Inline return value spill temp"
;* V43 tmp30 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V44 tmp31 [V44,T16] ( 3, 10.00) int -> rcx "Inline stloc first use temp"
-; V45 tmp32 [V45,T06] ( 3, 24 ) byref -> rbx "Inlining Arg"
+; V44 tmp31 [V44,T13] ( 3, 10.00) int -> rcx "Inline stloc first use temp"
+; V45 tmp32 [V45,T05] ( 3, 24 ) byref -> rbx "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V47 tmp34 [V47,T19] ( 5, 6 ) int -> rax "Single return block return value"
-; V48 FramesRoot [V48,T18] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot"
+; V47 tmp34 [V47,T16] ( 5, 6 ) int -> rax "Single return block return value"
+; V48 FramesRoot [V48,T15] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot"
; V49 PInvokeFrame [V49 ] ( 8, 8 ) struct (72) [rbp-0x128] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V50 tmp37 [V50,T57] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V50 tmp37 [V50,T55] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V51 tmp38 [V51 ] ( 3, 6 ) struct (16) [rbp-0xB0] do-not-enreg[XS] must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V52 tmp39 [V52,T10] ( 2, 16 ) long -> rdx "argument with side effect"
-; V53 tmp40 [V53,T11] ( 2, 16 ) long -> rdx "argument with side effect"
+; V52 tmp39 [V52,T07] ( 2, 16 ) long -> rdx "argument with side effect"
+; V53 tmp40 [V53,T08] ( 2, 16 ) long -> rdx "argument with side effect"
; V54 tmp41 [V54 ] ( 3, 3 ) struct (16) [rbp-0xC0] do-not-enreg[XS] must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V55 tmp42 [V55,T39] ( 2, 2 ) long -> r8 "argument with side effect"
+; V55 tmp42 [V55,T36] ( 2, 2 ) long -> r8 "argument with side effect"
; V56 tmp43 [V56 ] ( 3, 3 ) struct (16) [rbp-0xD0] do-not-enreg[XS] must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
; V57 tmp44 [V57 ] ( 3, 3 ) struct (16) [rbp-0xE0] do-not-enreg[XS] must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V58 tmp45 [V58,T01] ( 3, 96 ) ref -> r10 "arr expr"
-; V59 tmp46 [V59,T12] ( 21, 15 ) int -> rcx "MD array shared temp"
-; V60 tmp47 [V60,T13] ( 21, 15 ) int -> r9 "MD array shared temp"
-;* V61 tmp48 [V61,T49] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-; V62 tmp49 [V62,T27] ( 3, 3 ) int -> r11 "MD array shared temp"
-;* V63 tmp50 [V63,T50] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-; V64 tmp51 [V64,T28] ( 3, 3 ) int -> r8 "MD array shared temp"
-; V65 tmp52 [V65,T29] ( 3, 3 ) int -> rcx "MD array shared temp"
-;* V66 tmp53 [V66,T51] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V67 tmp54 [V67,T52] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V68 tmp55 [V68,T53] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V69 tmp56 [V69,T54] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-;* V70 tmp57 [V70,T55] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-; V71 cse0 [V71,T32] ( 4, 2 ) int -> rcx "CSE - conservative"
-; V72 cse1 [V72,T33] ( 4, 2 ) int -> rcx "CSE - conservative"
-; V73 cse2 [V73,T41] ( 3, 1.50) int -> r9 "CSE - conservative"
-; V74 cse3 [V74,T42] ( 3, 1.50) int -> r11 "CSE - conservative"
-; V75 cse4 [V75,T43] ( 3, 1.50) int -> r8 "CSE - conservative"
-; V76 cse5 [V76,T08] ( 2, 20 ) int -> r8 hoist "CSE - aggressive"
-; V77 cse6 [V77,T34] ( 2, 1 ) int -> rcx "CSE - conservative"
-; V78 cse7 [V78,T35] ( 2, 1 ) int -> rcx "CSE - conservative"
-; V79 cse8 [V79,T44] ( 2, 1 ) int -> r9 "CSE - conservative"
-; V80 cse9 [V80,T45] ( 2, 1 ) int -> r11 "CSE - conservative"
-; V81 cse10 [V81,T46] ( 2, 1 ) int -> r8 "CSE - conservative"
-; V82 cse11 [V82,T23] ( 10, 5 ) int -> rdx "CSE - moderate"
-; V83 cse12 [V83,T14] ( 6, 12.00) ref -> rdx multi-def "CSE - moderate"
-; V84 cse13 [V84,T36] ( 4, 2 ) int -> r10 "CSE - conservative"
-; V85 cse14 [V85,T09] ( 2, 20 ) long -> rdx hoist "CSE - aggressive"
+; V58 tmp45 [V58,T03] ( 6, 24 ) ref -> rax "arr expr"
+; V59 tmp46 [V59,T09] ( 21, 15 ) int -> rcx "MD array shared temp"
+; V60 tmp47 [V60,T10] ( 21, 15 ) int -> r9 "MD array shared temp"
+;* V61 tmp48 [V61,T46] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+; V62 tmp49 [V62,T24] ( 3, 3 ) int -> r11 "MD array shared temp"
+;* V63 tmp50 [V63,T47] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+; V64 tmp51 [V64,T25] ( 3, 3 ) int -> r8 "MD array shared temp"
+; V65 tmp52 [V65,T26] ( 3, 3 ) int -> rcx "MD array shared temp"
+;* V66 tmp53 [V66,T48] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V67 tmp54 [V67,T49] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V68 tmp55 [V68,T50] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V69 tmp56 [V69,T51] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+;* V70 tmp57 [V70,T52] ( 0, 0 ) int -> zero-ref "MD array shared temp"
+; V71 cse0 [V71,T29] ( 4, 2 ) int -> rcx "CSE - conservative"
+; V72 cse1 [V72,T30] ( 4, 2 ) int -> rcx "CSE - conservative"
+; V73 cse2 [V73,T38] ( 3, 1.50) int -> r9 "CSE - conservative"
+; V74 cse3 [V74,T39] ( 3, 1.50) int -> r11 "CSE - conservative"
+; V75 cse4 [V75,T40] ( 3, 1.50) int -> r8 "CSE - conservative"
+; V76 cse5 [V76,T31] ( 2, 1 ) int -> rcx "CSE - conservative"
+; V77 cse6 [V77,T32] ( 2, 1 ) int -> rcx "CSE - conservative"
+; V78 cse7 [V78,T41] ( 2, 1 ) int -> r9 "CSE - conservative"
+; V79 cse8 [V79,T42] ( 2, 1 ) int -> r11 "CSE - conservative"
+; V80 cse9 [V80,T43] ( 2, 1 ) int -> r8 "CSE - conservative"
+; V81 cse10 [V81,T20] ( 10, 5 ) int -> rdx "CSE - moderate"
+; V82 cse11 [V82,T11] ( 6, 12.00) ref -> rdx multi-def "CSE - moderate"
+; V83 cse12 [V83,T33] ( 4, 2 ) int -> r10 "CSE - conservative"
;
; Lcl frame size = 296
@@ -603,7 +601,7 @@ G_M55471_IG29: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cmp qword ptr [rdx+8*rcx+0x20], 5
jne G_M55471_IG35
;; size=167 bbWeight=0.25 PerfScore 15.06
-G_M55471_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55471_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
@@ -652,35 +650,9 @@ G_M55471_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
call [<unknown method>]
; gcrRegs -[rbx]
; gcr arg pop 0
- xor ecx, ecx
- ;; size=182 bbWeight=0.50 PerfScore 10.88
-G_M55471_IG31: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- xor eax, eax
- jmp SHORT G_M55471_IG34
- ;; size=4 bbWeight=4 PerfScore 9.00
-G_M55471_IG32: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r10, gword ptr [rbp-0x58]
- ; gcrRegs +[r10]
- cmp ecx, dword ptr [r10+0x08]
- jae SHORT G_M55471_IG37
- mov r10, gword ptr [rbp-0x58]
- mov r10, gword ptr [r10+8*rdx+0x10]
- cmp eax, dword ptr [r10+0x08]
- jae SHORT G_M55471_IG37
- mov r9d, eax
- lea r11d, [r8+rax]
- movsxd r11, r11d
- cmp qword ptr [r10+8*r9+0x10], r11
- jne SHORT G_M55471_IG35
- inc eax
- cmp eax, 3
- jl SHORT G_M55471_IG32
- inc ecx
- cmp ecx, 2
- jl SHORT G_M55471_IG31
- ;; size=56 bbWeight=16 PerfScore 320.00
-G_M55471_IG33: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r10]
+ jmp SHORT G_M55471_IG32
+ ;; size=182 bbWeight=0.50 PerfScore 11.75
+G_M55471_IG31: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
call [<unknown method>]
@@ -689,12 +661,49 @@ G_M55471_IG33: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov eax, 100
jmp SHORT G_M55471_IG36
;; size=23 bbWeight=0.50 PerfScore 2.75
-G_M55471_IG34: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M55471_IG32: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor ecx, ecx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M55471_IG33: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rax, gword ptr [rbp-0x58]
+ ; gcrRegs +[rax]
+ cmp dword ptr [rax+0x08], 0
+ jbe SHORT G_M55471_IG37
+ mov rax, gword ptr [rbp-0x58]
+ mov rax, gword ptr [rax+0x10]
+ cmp ecx, dword ptr [rax+0x08]
+ jae SHORT G_M55471_IG37
mov edx, ecx
- lea r8d, [rcx+2*rcx]
- jmp SHORT G_M55471_IG32
- ;; size=8 bbWeight=4 PerfScore 11.00
+ movsxd r8, ecx
+ cmp qword ptr [rax+8*rdx+0x10], r8
+ jne SHORT G_M55471_IG35
+ inc ecx
+ cmp ecx, 3
+ jl SHORT G_M55471_IG33
+ xor ecx, ecx
+ ;; size=44 bbWeight=2 PerfScore 36.50
+G_M55471_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rax, gword ptr [rbp-0x58]
+ ; gcrRegs +[rax]
+ cmp dword ptr [rax+0x08], 1
+ jbe SHORT G_M55471_IG37
+ mov rax, gword ptr [rbp-0x58]
+ mov rax, gword ptr [rax+0x18]
+ cmp ecx, dword ptr [rax+0x08]
+ jae SHORT G_M55471_IG37
+ mov edx, ecx
+ lea r8d, [rcx+0x03]
+ movsxd r8, r8d
+ cmp qword ptr [rax+8*rdx+0x10], r8
+ jne SHORT G_M55471_IG35
+ inc ecx
+ cmp ecx, 3
+ jl SHORT G_M55471_IG34
+ jmp SHORT G_M55471_IG31
+ ;; size=48 bbWeight=2 PerfScore 41.00
G_M55471_IG35: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov eax, 3
;; size=5 bbWeight=0.50 PerfScore 0.12
...
@@ -4,50 +4,50 @@
; ReadyToRun compilation
; optimized code
; rsp based frame
-; partially interruptible
+; fully interruptible
; No matching PGO data
; 0 inlinees with PGO data; 19 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 arg1 [V01,T02] ( 7, 4.50) byref -> rbx single-def
-; V02 arg2 [V02,T03] ( 7, 4.50) byref -> rsi single-def
-; V03 loc0 [V03,T00] ( 20, 11 ) int -> r14
-; V04 loc1 [V04,T10] ( 5, 2.50) int -> r15
-; V05 loc2 [V05,T15] ( 2, 1 ) int -> rax
+; V00 arg0 [V00,T02] ( 4, 8 ) byref -> rcx ld-addr-op single-def
+; V01 arg1 [V01,T04] ( 7, 4.50) byref -> rbx single-def
+; V02 arg2 [V02,T05] ( 7, 4.50) byref -> rsi single-def
+; V03 loc0 [V03,T00] ( 11, 20.50) int -> r14
+; V04 loc1 [V04,T11] ( 5, 2.50) int -> r15
+; V05 loc2 [V05,T16] ( 2, 1 ) int -> rax
; V06 loc3 [V06 ] ( 2, 1 ) struct ( 8) [rsp+0x40] do-not-enreg[XS] addr-exposed ld-addr-op <System.Text.Rune>
; V07 loc4 [V07 ] ( 3, 1.50) int -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op
-;* V08 loc5 [V08,T19] ( 0, 0 ) int -> zero-ref
+; V08 loc5 [V08,T01] ( 4, 12.50) int -> rax
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V12 tmp3 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V13 tmp4 [V13,T08] ( 3, 3 ) int -> rbp "Inlining Arg"
-; V14 tmp5 [V14,T11] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V13 tmp4 [V13,T09] ( 3, 3 ) int -> rbp "Inlining Arg"
+; V14 tmp5 [V14,T12] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V19 tmp10 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V20 tmp11 [V20,T05] ( 5, 5 ) int -> rdi "Inlining Arg"
-; V21 tmp12 [V21,T12] ( 2, 2 ) byref -> r15 "Inlining Arg"
+; V20 tmp11 [V20,T07] ( 5, 5 ) int -> rdi "Inlining Arg"
+; V21 tmp12 [V21,T13] ( 2, 2 ) byref -> r15 "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp15 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp16 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V26 tmp17 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V27 tmp18 [V27,T09] ( 3, 3 ) int -> rax "Single return block return value"
-; V28 tmp19 [V28,T07] ( 7, 4 ) byref -> rdi "field V00._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp20 [V29,T04] ( 9, 6 ) int -> rbp "field V00._length (fldOffset=0x8)" P-INDEP
+; V27 tmp18 [V27,T10] ( 3, 3 ) int -> rax "Single return block return value"
+; V28 tmp19 [V28,T06] ( 5, 6.50) byref -> rdi "field V00._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp20 [V29,T03] ( 6, 8 ) int -> rbp "field V00._length (fldOffset=0x8)" P-INDEP
; V30 tmp21 [V30 ] ( 2, 1 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V06._value (fldOffset=0x0)" P-DEP
;* V31 tmp22 [V31 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V33 tmp24 [V33,T16] ( 2, 1 ) int -> r15 "field V11._value (fldOffset=0x0)" P-INDEP
-; V34 tmp25 [V34,T13] ( 2, 1 ) byref -> rdi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-; V35 tmp26 [V35,T17] ( 2, 1 ) int -> rbp "field V12._length (fldOffset=0x8)" P-INDEP
+; V33 tmp24 [V33,T17] ( 2, 1 ) int -> r15 "field V11._value (fldOffset=0x0)" P-INDEP
+; V34 tmp25 [V34,T14] ( 2, 1 ) byref -> rdi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V35 tmp26 [V35,T18] ( 2, 1 ) int -> rbp "field V12._length (fldOffset=0x8)" P-INDEP
;* V36 tmp27 [V36,T20] ( 0, 0 ) int -> zero-ref "field V17._value (fldOffset=0x0)" P-INDEP
-; V37 tmp28 [V37,T14] ( 2, 1 ) byref -> r15 "field V19._reference (fldOffset=0x0)" P-INDEP
-; V38 tmp29 [V38,T18] ( 2, 1 ) int -> rcx "field V19._length (fldOffset=0x8)" P-INDEP
+; V37 tmp28 [V37,T15] ( 2, 1 ) byref -> r15 "field V19._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp29 [V38,T19] ( 2, 1 ) int -> rcx "field V19._length (fldOffset=0x8)" P-INDEP
;* V39 tmp30 [V39,T21] ( 0, 0 ) int -> zero-ref "field V25._value (fldOffset=0x0)" P-INDEP
;* V40 tmp31 [V40 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
;* V41 tmp32 [V41 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
@@ -55,11 +55,11 @@
; V43 tmp34 [V43 ] ( 6, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
;* V44 tmp35 [V44 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V45 tmp36 [V45 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V46 cse0 [V46,T06] ( 8, 4 ) ref -> rdx multi-def "CSE - aggressive"
+; V46 cse0 [V46,T08] ( 8, 4 ) ref -> rdx multi-def "CSE - aggressive"
;
; Lcl frame size = 72
-G_M6810_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M6810_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push r15
push r14
push rdi
@@ -81,7 +81,7 @@ G_M6810_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=004A {rcx rbx rs
mov ebp, dword ptr [rcx+0x08]
lea r14d, [rbp-0x01]
cmp r14d, ebp
- jae G_M6810_IG14
+ jae G_M6810_IG15
;; size=19 bbWeight=1 PerfScore 5.75
G_M6810_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
; byrRegs -[rcx]
@@ -135,36 +135,30 @@ G_M6810_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi
call [<unknown method>]
; byrRegs -[rdx rbx rsi rdi r8]
; gcr arg pop 0
- jmp G_M6810_IG13
+ jmp G_M6810_IG14
;; size=31 bbWeight=0.50 PerfScore 4.00
-G_M6810_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M6810_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
; byrRegs +[rbx rsi rdi]
+ mov eax, 3
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M6810_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
dec r14d
cmp r14d, ebp
- jae SHORT G_M6810_IG08
- mov eax, r14d
- cmp byte ptr [rdi+rax], -64
- jge SHORT G_M6810_IG10
- dec r14d
- cmp r14d, ebp
- jae SHORT G_M6810_IG08
- mov eax, r14d
- cmp byte ptr [rdi+rax], -64
- jge SHORT G_M6810_IG10
- dec r14d
- cmp r14d, ebp
- jae SHORT G_M6810_IG08
- mov eax, r14d
- cmp byte ptr [rdi+rax], -64
- jge SHORT G_M6810_IG10
- ;; size=51 bbWeight=0.50 PerfScore 8.62
-G_M6810_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+ jae SHORT G_M6810_IG09
+ mov ecx, r14d
+ cmp byte ptr [rdi+rcx], -64
+ jge SHORT G_M6810_IG11
+ dec eax
+ test eax, eax
+ jg SHORT G_M6810_IG08
+ ;; size=23 bbWeight=4 PerfScore 29.00
+G_M6810_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
; byrRegs -[rdi]
mov dword ptr [rbx], 0xFFFD
mov dword ptr [rsi], 1
mov eax, 3
;; size=17 bbWeight=0.50 PerfScore 1.12
-G_M6810_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M6810_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -174,17 +168,15 @@ G_M6810_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M6810_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, gcvars, byref, isz
+G_M6810_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, gcvars, byref, isz
; byrRegs +[rdi]
- cmp r14d, ebp
- ja G_M6810_IG16
mov r15d, r14d
add r15, rdi
; byrRegs +[r15]
mov edi, ebp
; byrRegs -[rdi]
sub edi, r14d
- jns SHORT G_M6810_IG11
+ jns SHORT G_M6810_IG12
mov rcx, qword ptr [(reloc)] ; const ptr
mov rdx, gword ptr [rcx]
; gcrRegs +[rdx]
@@ -193,11 +185,11 @@ G_M6810_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=41 bbWeight=0.50 PerfScore 5.25
-G_M6810_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8048 {rbx rsi r15}, byref, isz
+ ;; size=32 bbWeight=0.50 PerfScore 4.62
+G_M6810_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8048 {rbx rsi r15}, byref, isz
mov ecx, edi
test ecx, ecx
- jne SHORT G_M6810_IG12
+ jne SHORT G_M6810_IG13
mov rcx, qword ptr [(reloc)] ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
@@ -208,7 +200,7 @@ G_M6810_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8048 {rbx rsi
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=32 bbWeight=0.50 PerfScore 6.25
-G_M6810_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8048 {rbx rsi r15}, byref
+G_M6810_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8048 {rbx rsi r15}, byref
mov bword ptr [rsp+0x28], r15
mov dword ptr [rsp+0x30], edi
lea rcx, [rsp+0x28]
@@ -218,13 +210,13 @@ G_M6810_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8048 {rbx rsi
; byrRegs -[r15]
; gcr arg pop 0
cmp dword ptr [rsp+0x38], edi
- jne G_M6810_IG08
+ jne G_M6810_IG09
mov ecx, dword ptr [rsp+0x38]
mov dword ptr [rsi], ecx
mov ecx, dword ptr [rsp+0x40]
mov dword ptr [rbx], ecx
;; size=52 bbWeight=0.50 PerfScore 6.75
-G_M6810_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M6810_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbx rsi]
add rsp, 72
pop rbx
@@ -235,14 +227,14 @@ G_M6810_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
pop r15
ret
;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M6810_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
+G_M6810_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
; byrRegs +[rbx rsi]
mov dword ptr [rbx], 0xFFFD
xor eax, eax
mov dword ptr [rsi], eax
mov eax, 2
;; size=15 bbWeight=0.50 PerfScore 1.25
-G_M6810_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M6810_IG16: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -252,14 +244,8 @@ G_M6810_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M6810_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rbx rsi]
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 412, prolog size 19, PerfScore 65.12, instruction count 132, allocated bytes for code 412 (MethodHash=fdd5e565) for method System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
+; Total bytes of code 373, prolog size 25, PerfScore 85.00, instruction count 120, allocated bytes for code 373 (MethodHash=fdd5e565) for method System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -4,49 +4,48 @@
; ReadyToRun compilation
; optimized code
; rsp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 3, 3 ) byref -> rcx this single-def
-; V01 arg1 [V01,T04] ( 3, 6 ) byref -> rsi single-def
+; V00 this [V00,T03] ( 3, 3 ) byref -> rcx this single-def
+; V01 arg1 [V01,T00] ( 3, 6 ) byref -> rsi single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T01] ( 9, 12 ) int -> r14
+; V03 loc1 [V03,T04] ( 9, 4.75) int -> r14
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rsp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-; V07 tmp2 [V07 ] ( 4, 8 ) struct (16) [rsp+0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
+; V07 tmp2 [V07 ] ( 4, 8 ) struct (16) [rsp+0x68] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
; V08 tmp3 [V08 ] ( 2, 4 ) struct (16) [rsp+0x58] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T10] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T13] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T09] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T12] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T18] ( 2, 1 ) int -> rax
-; V14 tmp9 [V14,T11] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T14] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T12] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T15] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T16] ( 2, 2 ) int -> rcx "impAppendStmt"
+; V13 tmp8 [V13,T17] ( 2, 1 ) int -> rax
+; V14 tmp9 [V14,T10] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T13] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T11] ( 3, 3 ) ref -> rax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T14] ( 2, 2 ) int -> rcx "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T15] ( 2, 2 ) int -> rcx "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T19] ( 2, 1 ) int -> rax
-; V24 tmp19 [V24,T02] ( 9, 9 ) byref -> rbx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp20 [V25,T03] ( 7, 8 ) int -> rbp "field V02._length (fldOffset=0x8)" P-INDEP
+; V23 tmp18 [V23,T18] ( 2, 1 ) int -> rax
+; V24 tmp19 [V24,T01] ( 11, 6.50) byref -> rbx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp20 [V25,T08] ( 5, 3.50) int -> rbp "field V02._length (fldOffset=0x8)" P-INDEP
;* V26 tmp21 [V26 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
; V28 tmp23 [V28 ] ( 3, 5 ) byref -> [rsp+0x68] do-not-enreg[X] addr-exposed ptr "field V07._reference (fldOffset=0x0)" P-DEP
; V29 tmp24 [V29 ] ( 3, 5 ) int -> [rsp+0x70] do-not-enreg[X] addr-exposed ptr "field V07._length (fldOffset=0x8)" P-DEP
-; V30 tmp25 [V30,T07] ( 2, 4 ) int -> [rsp+0x58] do-not-enreg[H] hidden-struct-arg "field V08._flags (fldOffset=0x0)" P-DEP
-; V31 tmp26 [V31,T08] ( 2, 4 ) int -> [rsp+0x5C] do-not-enreg[H] hidden-struct-arg "field V08._hi32 (fldOffset=0x4)" P-DEP
-; V32 tmp27 [V32,T09] ( 2, 4 ) long -> [rsp+0x60] do-not-enreg[H] hidden-struct-arg "field V08._lo64 (fldOffset=0x8)" P-DEP
+; V30 tmp25 [V30,T05] ( 2, 4 ) int -> [rsp+0x58] do-not-enreg[H] hidden-struct-arg "field V08._flags (fldOffset=0x0)" P-DEP
+; V31 tmp26 [V31,T06] ( 2, 4 ) int -> [rsp+0x5C] do-not-enreg[H] hidden-struct-arg "field V08._hi32 (fldOffset=0x4)" P-DEP
+; V32 tmp27 [V32,T07] ( 2, 4 ) long -> [rsp+0x60] do-not-enreg[H] hidden-struct-arg "field V08._lo64 (fldOffset=0x8)" P-DEP
; V33 tmp28 [V33 ] ( 2, 4 ) struct (16) [rsp+0x48] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Decimal>
; V34 tmp29 [V34 ] ( 3, 6 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed ptr "by-value struct argument" <System.Span`1[int]>
; V35 GsCookie [V35 ] ( 1, 1 ) long -> [rsp+0x78] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V36 tmp31 [V36,T05] ( 11, 6 ) byref -> rdi single-def "shadowVar"
-; V37 cse0 [V37,T17] ( 3, 1.50) int -> rcx "CSE - moderate"
-; V38 cse1 [V38,T00] ( 4, 14 ) int -> rax "CSE - aggressive"
+; V36 tmp31 [V36,T02] ( 11, 6 ) byref -> rdi single-def "shadowVar"
+; V37 cse0 [V37,T16] ( 3, 1.50) int -> rcx "CSE - moderate"
;
; Lcl frame size = 128
@@ -59,16 +58,11 @@ G_M46478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 128
xor eax, eax
mov qword ptr [rsp+0x38], rax
- xorps xmm4, xmm4
- movaps xmmword ptr [rsp+0x40], xmm4
- movaps xmmword ptr [rsp+0x50], xmm4
- movaps xmmword ptr [rsp+0x60], xmm4
- mov qword ptr [rsp+0x70], rax
mov rax, qword ptr [(reloc)]
mov qword ptr [rsp+0x78], rax
mov rsi, rdx
; byrRegs +[rsi]
- ;; size=58 bbWeight=1 PerfScore 17.08
+ ;; size=35 bbWeight=1 PerfScore 9.75
G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0042 {rcx rsi}, byref, isz
; byrRegs +[rcx]
mov rdi, rcx
@@ -101,24 +95,43 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0042 {rcx rsi},
mov r14d, 3
jmp SHORT G_M46478_IG04
;; size=99 bbWeight=1 PerfScore 23.83
-G_M46478_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
- mov r14d, eax
- test r14d, r14d
- jle SHORT G_M46478_IG05
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M46478_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
- lea eax, [r14-0x01]
- cmp eax, ebp
- jae G_M46478_IG17
- mov ecx, eax
- cmp dword ptr [rbx+4*rcx], 0
+G_M46478_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ mov r14d, 2
+ jmp SHORT G_M46478_IG07
+ ;; size=8 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp ebp, 2
+ jbe G_M46478_IG23
+ cmp dword ptr [rbx+0x08], 0
je SHORT G_M46478_IG03
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ ;; size=15 bbWeight=0.50 PerfScore 2.62
+G_M46478_IG05: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ jmp SHORT G_M46478_IG11
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ mov r14d, 1
+ jmp SHORT G_M46478_IG10
+ ;; size=8 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp dword ptr [rbx+0x04], 0
+ je SHORT G_M46478_IG06
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG08: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ jmp SHORT G_M46478_IG11
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ xor r14d, r14d
+ jmp SHORT G_M46478_IG11
+ ;; size=5 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp dword ptr [rbx], 0
+ je SHORT G_M46478_IG09
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
test r14d, r14d
- jne SHORT G_M46478_IG09
+ jne SHORT G_M46478_IG15
;; size=5 bbWeight=1 PerfScore 1.25
-G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs -[rbx]
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
; byrRegs +[rax]
@@ -134,15 +147,15 @@ G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi},
lea rcx, [(reloc)]
mov rcx, qword ptr [rcx]
cmp qword ptr [rsp+0x78], rcx
- je SHORT G_M46478_IG07
+ je SHORT G_M46478_IG13
call [CORINFO_HELP_FAIL_FAST]
; byrRegs -[rsi rdi]
; gcr arg pop 0
;; size=45 bbWeight=0.50 PerfScore 8.88
-G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 128
pop rbx
pop rbp
@@ -151,17 +164,17 @@ G_M46478_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop r14
ret
;; size=14 bbWeight=0.50 PerfScore 1.88
-G_M46478_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
; byrRegs +[rbx rdi]
cmp r14d, 1
- jne SHORT G_M46478_IG12
+ jne SHORT G_M46478_IG18
mov ecx, dword ptr [rbx]
test ecx, ecx
- jle SHORT G_M46478_IG12
+ jle SHORT G_M46478_IG18
mov dword ptr [rdi+0x08], ecx
mov ecx, dword ptr [rdi+0x08]
cmp ebp, 3
- jbe G_M46478_IG17
+ jbe G_M46478_IG23
mov eax, -1
mov edx, 1
test dword ptr [rbx+0x0C], 0xD1FFAB1E
@@ -175,15 +188,15 @@ G_M46478_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[rcx]
mov rcx, qword ptr [rcx]
cmp qword ptr [rsp+0x78], rcx
- je SHORT G_M46478_IG10
+ je SHORT G_M46478_IG16
call [CORINFO_HELP_FAIL_FAST]
; byrRegs -[rbx rdi]
; gcr arg pop 0
;; size=81 bbWeight=0.50 PerfScore 12.62
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 128
pop rbx
pop rbp
@@ -192,7 +205,7 @@ G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop r14
ret
;; size=14 bbWeight=0.50 PerfScore 1.88
-G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
+G_M46478_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
; byrRegs +[rbx rdi]
movsxd rcx, r14d
call [CORINFO_HELP_READYTORUN_NEWARR_1]
@@ -209,35 +222,31 @@ G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rax]
mov ecx, dword ptr [rbx]
cmp dword ptr [rax+0x08], 0
- jbe SHORT G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [rax+0x10], ecx
cmp r14d, 1
- jle SHORT G_M46478_IG13
+ jle SHORT G_M46478_IG19
mov rax, gword ptr [rdi]
- cmp ebp, 1
- jbe SHORT G_M46478_IG17
mov ecx, dword ptr [rbx+0x04]
cmp dword ptr [rax+0x08], 1
- jbe SHORT G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [rax+0x14], ecx
- ;; size=61 bbWeight=0.50 PerfScore 13.62
-G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ ;; size=56 bbWeight=0.50 PerfScore 13.00
+G_M46478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; gcrRegs -[rax]
cmp r14d, 2
- jle SHORT G_M46478_IG14
+ jle SHORT G_M46478_IG20
mov rax, gword ptr [rdi]
; gcrRegs +[rax]
- cmp ebp, 2
- jbe SHORT G_M46478_IG17
mov ecx, dword ptr [rbx+0x08]
cmp dword ptr [rax+0x08], 2
- jbe SHORT G_M46478_IG17
...
@@ -13,21 +13,21 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T30] ( 8, 7 ) ubyte -> [rbp+0x20] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 12,132 ) ref -> r12 class-hnd <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 68 ) ref -> r12 class-hnd <<unknown class>>
; V05 loc2 [V05,T28] ( 3, 12 ) int -> rcx
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> [rbp-0x78] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> [rbp-0x68] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T15] ( 5, 35 ) int -> [rbp-0x3C] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T34] ( 2, 5 ) ref -> rbx class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T04] ( 13, 71 ) ref -> [rbp-0x80] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T03] ( 13, 71 ) ref -> [rbp-0x70] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 4, 4 ) ubyte -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T26] ( 4, 13 ) int -> r14
;* V14 loc11 [V14,T35] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
; V15 loc12 [V15,T07] ( 7, 57 ) int -> r15
; V16 loc13 [V16,T08] ( 4, 52 ) int -> [rbp-0x4C]
; V17 loc14 [V17,T00] ( 6,148 ) int -> [rbp-0x50]
-; V18 loc15 [V18,T13] ( 8, 35 ) ref -> [rbp-0x88] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V18 loc15 [V18,T13] ( 8, 35 ) ref -> [rbp-0x78] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V19 loc16 [V19 ] ( 4, 3 ) ubyte -> [rbp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V20 OutArgs [V20 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V21 tmp1 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.Caching.ExpiresEntryRef>
@@ -45,7 +45,7 @@
; V33 tmp13 [V33,T31] ( 6, 6 ) ref -> rbx class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V34 tmp14 [V34,T22] ( 5, 20 ) long -> rbx single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V35 tmp15 [V35,T16] ( 5, 35 ) int -> [rbp-0x5C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V36 tmp16 [V36,T05] ( 13, 71 ) int -> rdx "field V09._ref (fldOffset=0x0)" P-INDEP
+; V36 tmp16 [V36,T04] ( 13, 71 ) int -> rdx "field V09._ref (fldOffset=0x0)" P-INDEP
; V37 tmp17 [V37,T19] ( 4, 24 ) int -> rsi "field V10._ref (fldOffset=0x0)" P-INDEP
; V38 tmp18 [V38,T17] ( 2, 32 ) int -> rcx "field V21._ref (fldOffset=0x0)" P-INDEP
; V39 tmp19 [V39,T18] ( 2, 32 ) int -> rcx "field V26._ref (fldOffset=0x0)" P-INDEP
@@ -55,9 +55,9 @@
; V43 tmp23 [V43,T11] ( 3, 48 ) ref -> rax "arr expr"
; V44 PSPSym [V44,T36] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
; V45 cse0 [V45,T24] ( 3, 18 ) ref -> rsi "CSE - moderate"
-; V46 cse1 [V46,T25] ( 4, 16 ) byref -> rcx "CSE - moderate"
-; V47 cse2 [V47,T02] ( 6,128 ) long -> [rbp-0x68] spill-single-def "CSE - aggressive"
-; V48 cse3 [V48,T12] ( 4, 44 ) int -> [rbp-0x6C] spill-single-def "CSE - aggressive"
+; V46 cse1 [V46,T01] ( 6,128 ) byref -> [rbp-0x80] spill-single-def "CSE - aggressive"
+; V47 cse2 [V47,T25] ( 4, 16 ) byref -> rcx "CSE - moderate"
+; V48 cse3 [V48,T12] ( 4, 44 ) int -> [rbp-0x60] spill-single-def "CSE - aggressive"
; V49 cse4 [V49,T06] ( 6, 65 ) long -> registers hoist multi-def "CSE - aggressive"
; V50 cse5 [V50,T14] ( 8, 35 ) long -> r13 hoist multi-def "CSE - aggressive"
; V51 cse6 [V51,T21] ( 3, 24 ) int -> r8 "CSE - moderate"
@@ -151,19 +151,19 @@ G_M744_IG07: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rax]
mov rcx, rax
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x80], rcx
+ mov gword ptr [rbp-0x70], rcx
; GC ptr vars +{V11}
xor edx, edx
mov dword ptr [rbp-0x48], edx
;; size=16 bbWeight=1 PerfScore 3.50
-G_M744_IG08: ; bbWeight=1, gcVars=0000000000800010 {V00 V11}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M744_IG08: ; bbWeight=1, gcVars=0000000000800008 {V00 V11}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
lea rdx, [rbp-0x48]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
mov rcx, qword ptr [(reloc)] ; const ptr
- mov rdi, gword ptr [rbp-0x80]
+ mov rdi, gword ptr [rbp-0x70]
; gcrRegs +[rdi]
cmp dword ptr [rdi+rcx], 0
je G_M744_IG21
@@ -206,7 +206,7 @@ G_M744_IG09: ; bbWeight=8, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, b
G_M744_IG10: ; bbWeight=4, gcrefRegs=10C0 {rsi rdi r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov eax, dword ptr [r12+0x08]
- mov dword ptr [rbp-0x6C], eax
+ mov dword ptr [rbp-0x60], eax
test eax, eax
je G_M744_IG18
mov ecx, dword ptr [r12+0x14]
@@ -220,33 +220,39 @@ G_M744_IG10: ; bbWeight=4, gcrefRegs=10C0 {rsi rdi r12}, byrefRegs=0000 {
;; size=46 bbWeight=4 PerfScore 38.00
G_M744_IG11: ; bbWeight=32, gcrefRegs=10C0 {rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x50], r10d
- mov r9d, r10d
- shl r9, 4
- mov qword ptr [rbp-0x68], r9
- mov r11, gword ptr [r12+r9+0x18]
+ mov ecx, r10d
+ shl rcx, 4
+ lea r9, bword ptr [r12+rcx+0x10]
+ ; byrRegs +[r9]
+ mov bword ptr [rbp-0x80], r9
+ ; GC ptr vars +{V46}
+ mov r11, gword ptr [r9+0x08]
; gcrRegs +[r11]
- mov gword ptr [rbp-0x78], r11
+ mov gword ptr [rbp-0x68], r11
; GC ptr vars +{V06}
test r11, r11
je SHORT G_M744_IG14
- ;; size=29 bbWeight=32 PerfScore 224.00
-G_M744_IG12: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefRegs=10C0 {rsi rdi r12}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=33 bbWeight=32 PerfScore 256.00
+G_M744_IG12: ; bbWeight=16, gcVars=000000000080000E {V00 V06 V11 V46}, gcrefRegs=10C0 {rsi rdi r12}, byrefRegs=0200 {r9}, gcvars, byref, isz
; gcrRegs -[r11]
- mov rcx, qword ptr [r12+r9+0x10]
+ mov rcx, qword ptr [r9]
mov rdx, rbx
call [<unknown method>]
+ ; byrRegs -[r9]
; gcr arg pop 0
test eax, eax
je SHORT G_M744_IG19
- mov rax, qword ptr [rbp-0x68]
- mov rdx, qword ptr [r12+rax+0x10]
+ mov rax, bword ptr [rbp-0x80]
+ ; byrRegs +[rax]
+ mov rdx, qword ptr [rax]
mov rcx, rdi
; gcrRegs +[rcx]
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V06 V46}
call [System.Runtime.Caching.ExpiresBucket:AddCount(System.DateTime):this]
; gcrRegs -[rcx]
+ ; byrRegs -[rax]
; gcr arg pop 0
- ;; size=36 bbWeight=16 PerfScore 204.00
+ ;; size=32 bbWeight=16 PerfScore 204.00
G_M744_IG13: ; bbWeight=16, gcrefRegs=10C0 {rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rbp-0x4C]
dec r8d
@@ -256,7 +262,7 @@ G_M744_IG13: ; bbWeight=16, gcrefRegs=10C0 {rsi rdi r12}, byrefRegs=0000
G_M744_IG14: ; bbWeight=32, gcrefRegs=10C0 {rsi rdi r12}, byrefRegs=0000 {}, byref, isz
mov r10d, dword ptr [rbp-0x50]
inc r10d
- mov eax, dword ptr [rbp-0x6C]
+ mov eax, dword ptr [rbp-0x60]
cmp eax, r10d
jg SHORT G_M744_IG11
;; size=15 bbWeight=32 PerfScore 112.00
@@ -286,22 +292,24 @@ G_M744_IG18: ; bbWeight=0, gcVars=0000000000800000 {V00}, gcrefRegs=0000
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
;; size=6 bbWeight=0 PerfScore 0.00
-G_M744_IG19: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefRegs=10C0 {rsi rdi r12}, byrefRegs=0000 {}, gcvars, byref
+G_M744_IG19: ; bbWeight=16, gcVars=000000000080000E {V00 V06 V11 V46}, gcrefRegs=10C0 {rsi rdi r12}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi rdi r12]
- ; GC ptr vars +{V04 V06 V11}
+ ; GC ptr vars +{V02 V06 V11 V46}
mov rcx, qword ptr [(reloc)] ; const ptr
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0x68]
; gcrRegs +[rax]
mov byte ptr [rax+rcx], 255
mov ecx, dword ptr [rsi+0x08]
mov rdx, qword ptr [(reloc)] ; const ptr
mov dword ptr [rax+rdx], ecx
- mov rcx, qword ptr [rbp-0x68]
- mov dword ptr [r12+rcx+0x14], 1
+ mov rcx, bword ptr [rbp-0x80]
+ ; byrRegs +[rcx]
+ mov dword ptr [rcx+0x04], 1
mov eax, dword ptr [rbp-0x5C]
; gcrRegs -[rax]
- mov dword ptr [r12+rcx+0x10], eax
+ mov dword ptr [rcx], eax
mov ecx, r15d
+ ; byrRegs -[rcx]
shl ecx, 8
mov r10d, dword ptr [rbp-0x50]
movzx rax, r10b
@@ -314,10 +322,10 @@ G_M744_IG19: ; bbWeight=16, gcVars=0000000000800018 {V00 V06 V11}, gcrefR
inc dword ptr [rdi+rax]
mov dword ptr [rbp-0x50], r10d
jmp G_M744_IG13
- ;; size=95 bbWeight=16 PerfScore 424.00
+ ;; size=90 bbWeight=16 PerfScore 424.00
G_M744_IG20: ; bbWeight=1, gcVars=0000000000800000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rsi rdi r12]
- ; GC ptr vars -{V04 V06 V11}
+ ; GC ptr vars -{V02 V06 V11 V46}
cmp byte ptr [rbp-0x48], 0
je SHORT G_M744_IG24
mov rcx, gword ptr [rbp+0x10]
@@ -443,11 +451,11 @@ G_M744_IG30: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov rcx, rax
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x88], rcx
+ mov gword ptr [rbp-0x78], rcx
; GC ptr vars +{V18}
xor edx, edx
mov dword ptr [rbp-0x58], edx
- ;; size=15 bbWeight=1 PerfScore 2.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M744_IG31: ; bbWeight=1, gcVars=0000000000802000 {V00 V18}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
lea rdx, [rbp-0x58]
@@ -462,7 +470,7 @@ G_M744_IG31: ; bbWeight=1, gcVars=0000000000802000 {V00 V18}, gcrefRegs=0
mov rbx, rax
;; size=34 bbWeight=1 PerfScore 10.00
G_M744_IG32: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [rbp-0x88]
+ mov rcx, gword ptr [rbp-0x78]
; gcrRegs +[rcx]
mov rax, gword ptr [rcx+r13]
; gcrRegs +[rax]
@@ -485,10 +493,10 @@ G_M744_IG32: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, i
mov edx, esi
test edx, edx
jne SHORT G_M744_IG32
- ;; size=71 bbWeight=8 PerfScore 198.00
+ ;; size=68 bbWeight=8 PerfScore 198.00
G_M744_IG33: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [(reloc)] ; const ptr
- mov rbx, gword ptr [rbp-0x88]
+ mov rbx, gword ptr [rbp-0x78]
; gcrRegs +[rbx]
mov byte ptr [rbx+rcx], 0
mov rcx, rbx
@@ -498,7 +506,7 @@ G_M744_IG33: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, i
; gcrRegs -[rcx rbx]
; gcr arg pop 0
jmp SHORT G_M744_IG35
- ;; size=29 bbWeight=1 PerfScore 9.25
+ ;; size=26 bbWeight=1 PerfScore 9.25
G_M744_IG34: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
@@ -744,7 +752,7 @@ G_M744_IG57: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1501, prolog size 52, PerfScore 1817.75, instruction count 435, allocated bytes for code 1501 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1487, prolog size 52, PerfScore 1849.75, instruction count 436, allocated bytes for code 1487 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -10,70 +10,69 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <ILCompiler.DevirtualizationManager>
; V01 arg1 [V01,T00] ( 21, 26 ) ref -> rbx class-hnd <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T16] ( 14, 8 ) ref -> rsi class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T19] ( 8, 5.50) byref -> rdi single-def
+; V02 arg2 [V02,T17] ( 14, 8 ) ref -> rsi class-hnd single-def <Internal.TypeSystem.DefType>
+; V03 arg3 [V03,T20] ( 8, 5.50) byref -> rdi single-def
; V04 loc0 [V04,T22] ( 11, 5.50) ref -> r14 class-hnd <Internal.TypeSystem.MethodDesc>
; V05 loc1 [V05,T23] ( 3, 5 ) ref -> r15 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> r14
-; V07 loc3 [V07,T20] ( 4, 7 ) ref -> r13 class-hnd single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> r13 class-hnd single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> r12
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [rsp+0x48] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [rsp+0x50] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V10 loc6 [V10,T28] ( 6, 4.50) ref -> r15 class-hnd <Internal.TypeSystem.MethodDesc>
; V11 loc7 [V11,T24] ( 3, 5 ) ref -> r12 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> r13
-; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [rsp+0x40] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [rsp+0x48] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [rsp+0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T46] ( 3, 1.50) int -> rax single-def
+; V15 loc11 [V15,T45] ( 3, 1.50) int -> rax single-def
; V16 loc12 [V16,T03] ( 10, 20 ) ref -> r14 class-hnd <Internal.TypeSystem.TypeDesc>
;* V17 loc13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
;* V18 loc14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd <Internal.TypeSystem.MethodDesc>
; V19 OutArgs [V19 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
-; V21 tmp2 [V21,T34] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1"
-; V22 tmp3 [V22,T47] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
-; V23 tmp4 [V23,T31] ( 5, 3.75) ref -> r13 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V21 tmp2 [V21,T33] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1"
+; V22 tmp3 [V22,T46] ( 3, 1.25) long -> rcx "fgMakeTemp is creating a new local variable"
+; V23 tmp4 [V23,T30] ( 5, 3.75) ref -> r13 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
; V24 tmp5 [V24,T25] ( 3, 5 ) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V25 tmp6 [V25,T35] ( 3, 2 ) int -> r8 "Inline return value spill temp"
-; V26 tmp7 [V26,T33] ( 3, 2.50) int -> r8 single-def "Inline stloc first use temp"
-; V27 tmp8 [V27,T42] ( 3, 1.50) ref -> r15 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V25 tmp6 [V25,T34] ( 3, 2 ) int -> r8 "Inline return value spill temp"
+; V26 tmp7 [V26,T32] ( 3, 2.50) int -> r8 single-def "Inline stloc first use temp"
+; V27 tmp8 [V27,T41] ( 3, 1.50) ref -> r15 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V29 tmp10 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
-; V30 tmp11 [V30,T17] ( 5, 10 ) ref -> [rsp+0x38] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V31 tmp12 [V31,T30] ( 2, 4 ) ref -> rdx class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T18] ( 5, 10 ) ref -> [rsp+0x40] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V31 tmp12 [V31,T29] ( 2, 4 ) ref -> rdx class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
;* V32 tmp13 [V32 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp14 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V34 tmp15 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp16 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V36 tmp17 [V36,T43] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [rsp+0x30] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V36 tmp17 [V36,T42] ( 3, 1.50) ref -> r12 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [rsp+0x38] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V38 tmp19 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V39 tmp20 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V40 tmp21 [V40 ] ( 0, 0 ) int -> zero-ref
; V41 tmp22 [V41,T02] ( 3, 24 ) ref -> r15 class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V42 tmp23 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V43 tmp24 [V43 ] ( 0, 0 ) int -> zero-ref
-; V44 tmp25 [V44,T36] ( 2, 2 ) ref -> rax single-def "Single return block return value"
+; V44 tmp25 [V44,T35] ( 2, 2 ) ref -> rax single-def "Single return block return value"
; V45 tmp26 [V45,T09] ( 2, 16 ) ref -> r13 "argument with side effect"
; V46 tmp27 [V46,T10] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V47 tmp28 [V47,T37] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V48 tmp29 [V48,T38] ( 2, 2 ) ref -> r15 single-def "argument with side effect"
-; V49 tmp30 [V49,T39] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V50 tmp31 [V50,T32] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V51 tmp32 [V51,T40] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [rsp+0x28] spill-single-def "argument with side effect"
+; V47 tmp28 [V47,T36] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V48 tmp29 [V48,T37] ( 2, 2 ) ref -> r15 single-def "argument with side effect"
+; V49 tmp30 [V49,T38] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V50 tmp31 [V50,T31] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V51 tmp32 [V51,T39] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [rsp+0x30] spill-single-def "argument with side effect"
; V53 tmp34 [V53,T12] ( 2, 16 ) ref -> rdx "argument with side effect"
;* V54 tmp35 [V54 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V55 tmp36 [V55,T41] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V55 tmp36 [V55,T40] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V56 tmp37 [V56,T13] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [rsp+0x20] spill-single-def "argument with side effect"
+; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [rsp+0x28] spill-single-def "argument with side effect"
; V58 tmp39 [V58,T15] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V59 tmp40 [V59,T18] ( 2, 8 ) ref -> rdx "argument with side effect"
+; V59 tmp40 [V59,T19] ( 2, 8 ) ref -> rdx "argument with side effect"
; V60 cse0 [V60,T06] ( 10, 18 ) long -> rbp "CSE - aggressive"
-; V61 cse1 [V61,T29] ( 2, 4.50) long -> [rsp+0x58] spill-single-def hoist "CSE - moderate"
-; V62 cse2 [V62,T44] ( 3, 1.50) ref -> r14 "CSE - conservative"
-; V63 cse3 [V63,T45] ( 3, 1.50) ref -> r13 "CSE - conservative"
-; V64 cse4 [V64,T26] ( 3, 5 ) int -> [rsp+0x54] spill-single-def "CSE - moderate"
-; V65 cse5 [V65,T27] ( 3, 5 ) int -> [rsp+0x50] spill-single-def "CSE - moderate"
+; V61 cse1 [V61,T43] ( 3, 1.50) ref -> r14 "CSE - conservative"
+; V62 cse2 [V62,T44] ( 3, 1.50) ref -> r13 "CSE - conservative"
+; V63 cse3 [V63,T26] ( 3, 5 ) int -> [rsp+0x5C] spill-single-def "CSE - moderate"
+; V64 cse4 [V64,T27] ( 3, 5 ) int -> [rsp+0x58] spill-single-def "CSE - moderate"
;
; Lcl frame size = 104
@@ -214,27 +213,26 @@ G_M48343_IG12: ; bbWeight=0.50, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRe
; gcrRegs -[rax]
xor r12d, r12d
mov eax, dword ptr [r15+0x08]
- mov dword ptr [rsp+0x54], eax
+ mov dword ptr [rsp+0x5C], eax
test eax, eax
jle G_M48343_IG17
- mov rcx, qword ptr [r13]
- mov rdx, qword ptr [rcx+0x58]
- mov qword ptr [rsp+0x58], rdx
- ;; size=32 bbWeight=0.50 PerfScore 4.75
+ ;; size=19 bbWeight=0.50 PerfScore 2.25
G_M48343_IG13: ; bbWeight=4, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0080 {rdi}, byref, isz
mov ecx, r12d
- mov r8, gword ptr [r15+8*rcx+0x10]
- ; gcrRegs +[r8]
- mov gword ptr [rsp+0x48], r8
+ mov rdx, gword ptr [r15+8*rcx+0x10]
+ ; gcrRegs +[rdx]
+ mov gword ptr [rsp+0x50], rdx
; GC ptr vars +{V09}
mov rcx, r13
; gcrRegs +[rcx]
- call [rdx+0x20]<unknown method>
- ; gcrRegs -[rcx r8] +[rax]
+ mov r8, qword ptr [r13]
+ mov r8, qword ptr [r8+0x58]
+ call [r8+0x20]<unknown method>
+ ; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x28], rax
+ mov gword ptr [rsp+0x30], rax
; GC ptr vars +{V52}
- mov rcx, gword ptr [rsp+0x48]
+ mov rcx, gword ptr [rsp+0x50]
; gcrRegs +[rcx]
mov rdx, qword ptr [rcx]
mov rdx, qword ptr [rdx+0x58]
@@ -243,7 +241,7 @@ G_M48343_IG13: ; bbWeight=4, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, gword ptr [rsp+0x28]
+ mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
; GC ptr vars -{V52}
call [Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte]
@@ -251,23 +249,23 @@ G_M48343_IG13: ; bbWeight=4, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=
; gcr arg pop 0
test eax, eax
je SHORT G_M48343_IG16
- ;; size=57 bbWeight=4 PerfScore 84.00
+ ;; size=66 bbWeight=4 PerfScore 100.00
G_M48343_IG14: ; bbWeight=2, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0080 {rdi}, byref, isz
- mov rax, gword ptr [rsp+0x48]
+ mov rax, gword ptr [rsp+0x50]
; gcrRegs +[rax]
mov rdx, gword ptr [rax+0x08]
; gcrRegs +[rdx]
- mov gword ptr [rsp+0x38], rdx
+ mov gword ptr [rsp+0x40], rdx
; GC ptr vars +{V30}
mov ecx, 1
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- mov rax, gword ptr [rsp+0x38]
+ mov rax, gword ptr [rsp+0x40]
; gcrRegs +[rax]
test rax, rax
jne SHORT G_M48343_IG15
- mov rcx, gword ptr [rsp+0x48]
+ mov rcx, gword ptr [rsp+0x50]
; gcrRegs +[rcx]
xor edx, edx
mov rax, qword ptr [rcx]
@@ -277,9 +275,9 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=
call [rax+0x28]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov rcx, gword ptr [rsp+0x48]
+ mov rcx, gword ptr [rsp+0x50]
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x38], rax
+ mov gword ptr [rsp+0x40], rax
; GC ptr vars +{V30}
mov r8, rax
; gcrRegs +[r8]
@@ -288,7 +286,7 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=
call [Internal.TypeSystem.TypeDesc:SetCachedCanonValue(int,Internal.TypeSystem.TypeDesc):this]
; gcrRegs -[rax rcx r8]
; gcr arg pop 0
- mov rax, gword ptr [rsp+0x38]
+ mov rax, gword ptr [rsp+0x40]
; gcrRegs +[rax]
;; size=78 bbWeight=2 PerfScore 48.50
G_M48343_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=A049 {rax rbx rsi r13 r15}, byrefRegs=0080 {rdi}, gcvars, byref, isz
@@ -308,11 +306,10 @@ G_M48343_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=A049 {
;; size=25 bbWeight=2 PerfScore 12.50
G_M48343_IG16: ; bbWeight=4, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0080 {rdi}, byref
inc r12d
- mov ecx, dword ptr [rsp+0x54]
+ mov ecx, dword ptr [rsp+0x5C]
cmp ecx, r12d
- mov rdx, qword ptr [rsp+0x58]
jg G_M48343_IG13
- ;; size=21 bbWeight=4 PerfScore 14.00
+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M48343_IG17: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[r13 r15]
mov rcx, rbx
@@ -391,7 +388,7 @@ G_M48343_IG22: ; bbWeight=0.50, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byr
; gcrRegs -[r13]
xor r13d, r13d
mov eax, dword ptr [r12+0x08]
- mov dword ptr [rsp+0x50], eax
+ mov dword ptr [rsp+0x58], eax
test eax, eax
jle G_M48343_IG28
;; size=20 bbWeight=0.50 PerfScore 2.25
@@ -399,7 +396,7 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefR
mov ecx, r13d
mov rdx, gword ptr [r12+8*rcx+0x10]
; gcrRegs +[rdx]
- mov gword ptr [rsp+0x40], rdx
+ mov gword ptr [rsp+0x48], rdx
; GC ptr vars +{V13}
mov rcx, rbx
; gcrRegs +[rcx]
@@ -408,7 +405,7 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefR
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, gword ptr [rsp+0x40]
+ mov rcx, gword ptr [rsp+0x48]
; gcrRegs +[rcx]
call [Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte]
; gcrRegs -[rax rcx rdx]
@@ -420,18 +417,18 @@ G_M48343_IG23: ; bbWeight=4, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefR
call [rbp+0x18]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x30], rax
+ mov gword ptr [rsp+0x38], rax
; GC ptr vars +{V37}
- mov rcx, gword ptr [rsp+0x40]
+ mov rcx, gword ptr [rsp+0x48]
; gcrRegs +[rcx]
...
@@ -12,14 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T30] ( 8, 7 ) ubyte -> [rbp+0x20] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 11,116 ) ref -> r13 class-hnd <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 68 ) ref -> r13 class-hnd <<unknown class>>
; V05 loc2 [V05,T28] ( 3, 12 ) int -> rdx
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> registers class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> registers class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T14] ( 5, 35 ) int -> [rbp-0x3C] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T38] ( 2, 5 ) ref -> rsi class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T04] ( 16, 74 ) ref -> [rbp-0x68] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T03] ( 16, 74 ) ref -> [rbp-0x68] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 6, 6 ) ubyte -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T26] ( 4, 13 ) int -> rbx
;* V14 loc11 [V14,T47] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
@@ -59,7 +59,7 @@
; V48 tmp28 [V48,T32] ( 6, 6 ) ref -> rbx class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V49 tmp29 [V49,T31] ( 5, 5 ) long -> rbx single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V50 tmp30 [V50,T15] ( 5, 35 ) int -> [rbp-0x5C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V51 tmp31 [V51,T05] ( 13, 71 ) int -> rdx "field V09._ref (fldOffset=0x0)" P-INDEP
+; V51 tmp31 [V51,T04] ( 13, 71 ) int -> rdx "field V09._ref (fldOffset=0x0)" P-INDEP
; V52 tmp32 [V52,T20] ( 4, 24 ) int -> registers "field V10._ref (fldOffset=0x0)" P-INDEP
; V53 tmp33 [V53,T16] ( 2, 32 ) int -> rcx "field V21._ref (fldOffset=0x0)" P-INDEP
;* V54 tmp34 [V54 ] ( 0, 0 ) long -> zero-ref single-def "field V26._dateData (fldOffset=0x0)" P-INDEP
@@ -77,9 +77,9 @@
; V66 tmp46 [V66,T10] ( 3, 48 ) ref -> rcx "arr expr"
; V67 PSPSym [V67,T50] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
;* V68 cse0 [V68,T51] ( 0, 0 ) long -> zero-ref "CSE - moderate"
-; V69 cse1 [V69,T25] ( 4, 16 ) byref -> rdx "CSE - moderate"
-; V70 cse2 [V70,T11] ( 3, 48 ) long -> rcx "CSE - aggressive"
-; V71 cse3 [V71,T02] ( 5,112 ) long -> r10 "CSE - aggressive"
+; V69 cse1 [V69,T11] ( 3, 48 ) long -> rcx "CSE - aggressive"
+; V70 cse2 [V70,T01] ( 5,112 ) byref -> r10 "CSE - aggressive"
+; V71 cse3 [V71,T25] ( 4, 16 ) byref -> rdx "CSE - moderate"
; V72 cse4 [V72,T23] ( 4, 19 ) long -> rsi "CSE - moderate"
; V73 cse5 [V73,T45] ( 3, 3 ) ref -> rdx "CSE - moderate"
; V74 cse6 [V74,T46] ( 3, 3 ) ref -> rcx "CSE - moderate"
@@ -201,7 +201,7 @@ G_M744_IG10: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
xor edx, edx
mov dword ptr [rbp-0x48], edx
;; size=12 bbWeight=1 PerfScore 2.50
-G_M744_IG11: ; bbWeight=1, gcVars=0000000000080010 {V00 V11}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG11: ; bbWeight=1, gcVars=0000000000080008 {V00 V11}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx]
cmp byte ptr [rbp-0x48], 0
je SHORT G_M744_IG14
@@ -217,9 +217,9 @@ G_M744_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M744_IG14: ; bbWeight=1, gcVars=0000000000080010 {V00 V11}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG14: ; bbWeight=1, gcVars=0000000000080008 {V00 V11}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r14]
- ; GC ptr vars +{V04 V11}
+ ; GC ptr vars +{V11}
lea rdx, [rbp-0x48]
mov rcx, r14
; gcrRegs +[rcx]
@@ -310,15 +310,17 @@ G_M744_IG19: ; bbWeight=4, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, b
;; size=43 bbWeight=4 PerfScore 34.00
G_M744_IG20: ; bbWeight=32, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x50], r8d
- mov r10d, r8d
- shl r10, 4
- mov rdx, gword ptr [r13+r10+0x18]
+ mov edx, r8d
+ shl rdx, 4
+ lea r10, bword ptr [r13+rdx+0x10]
+ ; byrRegs +[r10]
+ mov rdx, gword ptr [r10+0x08]
; gcrRegs +[rdx]
test rdx, rdx
je SHORT G_M744_IG24
- ;; size=21 bbWeight=32 PerfScore 160.00
-G_M744_IG21: ; bbWeight=16, gcrefRegs=6004 {rdx r13 r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [r13+r10+0x10]
+ ;; size=25 bbWeight=32 PerfScore 224.00
+G_M744_IG21: ; bbWeight=16, gcrefRegs=6004 {rdx r13 r14}, byrefRegs=0400 {r10}, byref, isz
+ mov rcx, qword ptr [r10]
mov r9, rcx
mov r11, 0xD1FFAB1E
and r9, r11
@@ -330,17 +332,19 @@ G_M744_IG21: ; bbWeight=16, gcrefRegs=6004 {rdx r13 r14}, byrefRegs=0000
; gcrRegs +[rcx]
call [System.Runtime.Caching.ExpiresBucket:AddCount(System.DateTime):this]
; gcrRegs -[rcx]
+ ; byrRegs -[r10]
; gcr arg pop 0
jmp SHORT G_M744_IG23
- ;; size=40 bbWeight=16 PerfScore 152.00
-G_M744_IG22: ; bbWeight=16, gcrefRegs=6004 {rdx r13 r14}, byrefRegs=0000 {}, byref
+ ;; size=38 bbWeight=16 PerfScore 152.00
+G_M744_IG22: ; bbWeight=16, gcrefRegs=6004 {rdx r13 r14}, byrefRegs=0400 {r10}, byref
; gcrRegs +[rdx]
+ ; byrRegs +[r10]
mov byte ptr [rdx+0x30], 255
mov ecx, dword ptr [rdi]
mov dword ptr [rdx+0x50], ecx
- mov dword ptr [r13+r10+0x14], 1
+ mov dword ptr [r10+0x04], 1
mov ecx, dword ptr [rbp-0x5C]
- mov dword ptr [r13+r10+0x10], ecx
+ mov dword ptr [r10], ecx
mov ecx, r15d
shl ecx, 8
mov r8d, dword ptr [rbp-0x50]
@@ -353,8 +357,9 @@ G_M744_IG22: ; bbWeight=16, gcrefRegs=6004 {rdx r13 r14}, byrefRegs=0000
mov dword ptr [rbp-0x3C], ecx
inc dword ptr [r14+0x28]
mov dword ptr [rbp-0x50], r8d
- ;; size=61 bbWeight=16 PerfScore 264.00
+ ;; size=58 bbWeight=16 PerfScore 264.00
G_M744_IG23: ; bbWeight=16, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r10]
mov eax, dword ptr [rbp-0x4C]
dec eax
mov dword ptr [rbp-0x4C], eax
@@ -386,7 +391,7 @@ G_M744_IG27: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
;; size=11 bbWeight=1 PerfScore 4.00
G_M744_IG28: ; bbWeight=1, gcVars=0000000000080000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r14]
- ; GC ptr vars -{V04 V11}
+ ; GC ptr vars -{V11}
cmp byte ptr [rbp-0x48], 0
je SHORT G_M744_IG32
mov rcx, gword ptr [rbp+0x10]
@@ -821,7 +826,7 @@ G_M744_IG69: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1469, prolog size 49, PerfScore 1495.00, instruction count 448, allocated bytes for code 1469 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1468, prolog size 49, PerfScore 1559.00, instruction count 449, allocated bytes for code 1468 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -3,48 +3,48 @@
; FullOpts code
; optimized code
; rsp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 3, 3 ) byref -> rcx this single-def
-; V01 arg1 [V01,T03] ( 3, 6 ) byref -> rdx single-def
+; V00 this [V00,T03] ( 3, 3 ) byref -> rcx this single-def
+; V01 arg1 [V01,T01] ( 3, 6 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> rbp
+; V03 loc1 [V03,T04] ( 9, 4.75) int -> rbp
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rsp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T06] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T13] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T12] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T20] ( 2, 1 ) int -> rcx
-; V14 tmp9 [V14,T07] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T14] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T08] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T15] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T16] ( 2, 2 ) int -> rdx "impAppendStmt"
+; V13 tmp8 [V13,T19] ( 2, 1 ) int -> rcx
+; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T13] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T14] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T15] ( 2, 2 ) int -> rdx "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T21] ( 2, 1 ) int -> rcx
+; V23 tmp18 [V23,T20] ( 2, 1 ) int -> rcx
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [rsp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op ptr "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T10] ( 3, 2.50) int -> rdx "Inline stloc first use temp"
+; V25 tmp20 [V25,T09] ( 3, 2.50) int -> rdx "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> rbx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T22] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> rbx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T21] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T11] ( 2, 2 ) byref -> rbx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T23] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> rbx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T22] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,14 +53,13 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T17] ( 2, 2 ) int -> rax "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T18] ( 2, 2 ) int -> rcx "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T09] ( 3, 3 ) long -> rdx "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T16] ( 2, 2 ) int -> rax "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T17] ( 2, 2 ) int -> rcx "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T08] ( 3, 3 ) long -> rdx "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [rsp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 tmp44 [V49,T04] ( 11, 6 ) byref -> rdi single-def "shadowVar"
-; V50 tmp45 [V50,T12] ( 2, 2 ) byref -> rdx single-def "shadowVar"
-; V51 cse0 [V51,T19] ( 3, 1.50) int -> rdx "CSE - moderate"
-; V52 cse1 [V52,T00] ( 4, 14 ) int -> rax "CSE - aggressive"
+; V49 tmp44 [V49,T02] ( 11, 6 ) byref -> rdi single-def "shadowVar"
+; V50 tmp45 [V50,T11] ( 2, 2 ) byref -> rdx single-def "shadowVar"
+; V51 cse0 [V51,T18] ( 3, 1.50) int -> rdx "CSE - moderate"
;
; Lcl frame size = 72
@@ -107,29 +106,46 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi},
mov ebp, 3
jmp SHORT G_M46478_IG06
;; size=35 bbWeight=1 PerfScore 9.75
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
- mov ebp, eax
- test ebp, ebp
- jle SHORT G_M46478_IG07
- ;; size=6 bbWeight=2 PerfScore 3.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
- lea eax, [rbp-0x01]
- cmp eax, 4
- jae G_M46478_IG20
- mov ecx, eax
- cmp dword ptr [rbx+4*rcx], 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ mov ebp, 2
+ jmp SHORT G_M46478_IG09
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp dword ptr [rbx+0x08], 0
je SHORT G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ mov ebp, 1
+ jmp SHORT G_M46478_IG12
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp dword ptr [rbx+0x04], 0
+ je SHORT G_M46478_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ xor ebp, ebp
+ jmp SHORT G_M46478_IG13
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp dword ptr [rbx], 0
+ je SHORT G_M46478_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
test ebp, ebp
- jne SHORT G_M46478_IG12
+ jne SHORT G_M46478_IG18
;; size=4 bbWeight=1 PerfScore 1.25
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
; byrRegs -[rbx]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M46478_IG21
+ je G_M46478_IG27
;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
mov rax, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
mov rsi, gword ptr [rax]
; gcrRegs +[rsi]
@@ -140,15 +156,15 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi},
movsq
mov rcx, 0xD1FFAB1E
cmp qword ptr [rsp+0x40], rcx
- je SHORT G_M46478_IG10
+ je SHORT G_M46478_IG16
call CORINFO_HELP_FAIL_FAST
; byrRegs -[rsi rdi]
; gcr arg pop 0
;; size=46 bbWeight=0.50 PerfScore 4.38
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -156,13 +172,13 @@ G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
+G_M46478_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
; byrRegs +[rbx rdi]
cmp ebp, 1
- jne SHORT G_M46478_IG15
+ jne SHORT G_M46478_IG21
mov edx, dword ptr [rbx]
test edx, edx
- jle SHORT G_M46478_IG15
+ jle SHORT G_M46478_IG21
mov dword ptr [rdi+0x08], edx
mov edx, dword ptr [rdi+0x08]
mov ecx, -1
@@ -176,16 +192,16 @@ G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov gword ptr [rdi], rdx
mov rcx, 0xD1FFAB1E
cmp qword ptr [rsp+0x40], rcx
- je SHORT G_M46478_IG13
+ je SHORT G_M46478_IG19
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[rdx]
; byrRegs -[rbx rdi]
; gcr arg pop 0
;; size=70 bbWeight=0.50 PerfScore 9.88
-G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -193,7 +209,7 @@ G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
; byrRegs +[rbx rdi]
movsxd rdx, ebp
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -211,28 +227,28 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rcx]
mov edx, dword ptr [rbx]
cmp dword ptr [rcx+0x08], 0
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rcx+0x10], edx
cmp ebp, 1
- jle SHORT G_M46478_IG16
+ jle SHORT G_M46478_IG22
mov rcx, gword ptr [rdi]
mov edx, dword ptr [rbx+0x04]
cmp dword ptr [rcx+0x08], 1
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rcx+0x14], edx
;; size=63 bbWeight=0.50 PerfScore 11.12
-G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M46478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; gcrRegs -[rcx]
cmp ebp, 2
- jle SHORT G_M46478_IG17
+ jle SHORT G_M46478_IG23
mov rcx, gword ptr [rdi]
; gcrRegs +[rcx]
mov edx, dword ptr [rbx+0x08]
cmp dword ptr [rcx+0x08], 2
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rcx+0x18], edx
;; size=20 bbWeight=0.50 PerfScore 5.12
-G_M46478_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M46478_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
...
@@ -13,14 +13,14 @@
; V01 RetBuf [V01,T00] ( 7, 7 ) byref -> rbx single-def
; V02 arg1 [V02 ] ( 5, 4 ) ref -> [rsp+0xB0] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.String>
; V03 arg2 [V03,T01] ( 6, 5.38) int -> rsi
-; V04 arg3 [V04,T18] ( 1, 1 ) ubyte -> [rsp+0xC0] single-def
+; V04 arg3 [V04,T17] ( 1, 1 ) ubyte -> [rsp+0xC0] single-def
; V05 loc0 [V05 ] ( 2, 1.38) ubyte -> [rsp+0x58] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc1 [V06 ] ( 2, 1 ) ubyte -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
; V07 loc2 [V07 ] ( 2, 2 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op
-; V08 loc3 [V08,T13] ( 4, 2.77) ref -> rdi class-hnd exact single-def <System.Reflection.RuntimeEventInfo[]>
+; V08 loc3 [V08,T11] ( 5, 3.77) ref -> rdi class-hnd exact single-def <System.Reflection.RuntimeEventInfo[]>
; V09 loc4 [V09 ] ( 9, 8.38) struct (24) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]>
-; V10 loc5 [V10,T14] ( 5, 2.54) int -> r14
-; V11 loc6 [V11,T16] ( 5, 1.15) ref -> r15 class-hnd exact <System.Reflection.RuntimeEventInfo>
+; V10 loc5 [V10,T13] ( 5, 2.54) int -> rbp
+; V11 loc6 [V11,T15] ( 5, 1.15) ref -> r14 class-hnd exact <System.Reflection.RuntimeEventInfo>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V14 tmp2 [V14,T05] ( 5, 4.24) ref -> rbp class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
@@ -34,21 +34,20 @@
;* V22 tmp10 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V23 tmp11 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
; V24 tmp12 [V24,T10] ( 7, 3.95) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
-; V25 tmp13 [V25,T15] ( 4, 1.89) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp13 [V25,T14] ( 4, 1.89) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V26 tmp14 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
; V27 tmp15 [V27,T09] ( 2, 4 ) int -> rcx "Inlining Arg"
-;* V28 tmp16 [V28,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V29 tmp17 [V29,T19] ( 4, 0 ) ref -> rbp class-hnd exact "Inlining Arg" <System.String>
-; V30 tmp18 [V30,T23] ( 2, 0 ) ubyte -> r13 "Inlining Arg"
+;* V28 tmp16 [V28,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V29 tmp17 [V29,T18] ( 4, 0 ) ref -> r15 class-hnd exact "Inlining Arg" <System.String>
+; V30 tmp18 [V30,T22] ( 2, 0 ) ubyte -> r13 "Inlining Arg"
; V31 tmp19 [V31 ] ( 3, 2.38) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V09._items (fldOffset=0x0)" P-DEP
; V32 tmp20 [V32 ] ( 3, 2.38) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V09._item (fldOffset=0x8)" P-DEP
; V33 tmp21 [V33 ] ( 3, 2.38) int -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V09._count (fldOffset=0x10)" P-DEP
; V34 tmp22 [V34 ] ( 3, 2.38) int -> [rsp+0x44] do-not-enreg[X] addr-exposed "field V09._capacity (fldOffset=0x14)" P-DEP
-; V35 tmp23 [V35,T20] ( 2, 0 ) ref -> rcx "argument with side effect"
-; V36 tmp24 [V36,T21] ( 2, 0 ) ref -> rcx "argument with side effect"
-; V37 cse0 [V37,T17] ( 3, 1.15) int -> rcx "CSE - moderate"
+; V35 tmp23 [V35,T19] ( 2, 0 ) ref -> rcx "argument with side effect"
+; V36 tmp24 [V36,T20] ( 2, 0 ) ref -> rcx "argument with side effect"
+; V37 cse0 [V37,T16] ( 3, 1.15) int -> rcx "CSE - moderate"
; V38 cse1 [V38,T12] ( 3, 3 ) long -> rcx "CSE - moderate"
-; V39 cse2 [V39,T11] ( 5, 3.77) int -> rbp multi-def "CSE - moderate"
;
; Lcl frame size = 96
@@ -176,11 +175,10 @@ G_M48278_IG06: ; bbWeight=1, gcrefRegs=4002 {rcx r14}, byrefRegs=0008 {rb
mov rdi, rax
; gcrRegs +[rdi]
xor esi, 2
- mov ebp, dword ptr [rdi+0x08]
- mov ecx, ebp
+ mov ecx, dword ptr [rdi+0x08]
xor rax, rax
mov gword ptr [rsp+0x30], rax
- ;; size=37 bbWeight=1 PerfScore 10.75
+ ;; size=35 bbWeight=1 PerfScore 10.50
G_M48278_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
mov gword ptr [rsp+0x38], rax
@@ -190,96 +188,95 @@ G_M48278_IG08: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx},
mov dword ptr [rsp+0x44], ecx
;; size=8 bbWeight=1 PerfScore 2.00
G_M48278_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
- xor r14d, r14d
- test ebp, ebp
+ xor ebp, ebp
+ cmp dword ptr [rdi+0x08], 0
jle G_M48278_IG16
- ;; size=11 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 4.25
G_M48278_IG10: ; bbWeight=0.38, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- mov ecx, r14d
- mov r15, gword ptr [rdi+8*rcx+0x10]
- ; gcrRegs +[r15]
- mov ecx, dword ptr [r15+0x50]
+ mov ecx, ebp
+ mov r14, gword ptr [rdi+8*rcx+0x10]
+ ; gcrRegs +[r14]
+ mov ecx, dword ptr [r14+0x50]
mov eax, esi
and eax, ecx
cmp eax, ecx
jne G_M48278_IG15
cmp byte ptr [rsp+0x58], 0
je SHORT G_M48278_IG14
- ;; size=31 bbWeight=0.38 PerfScore 3.46
-G_M48278_IG11: ; bbWeight=0, gcrefRegs=8080 {rdi r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rbp, gword ptr [rsp+0xB0]
- ; gcrRegs +[rbp]
+ ;; size=30 bbWeight=0.38 PerfScore 3.46
+G_M48278_IG11: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0008 {rbx}, byref, isz
+ mov r15, gword ptr [rsp+0xB0]
+ ; gcrRegs +[r15]
movzx r13, byte ptr [rsp+0x50]
xor ecx, ecx
- test rbp, rbp
+ test r15, r15
setne cl
call [<unknown method>]
; gcr arg pop 0
test r13d, r13d
je SHORT G_M48278_IG12
- mov rcx, r15
+ mov rcx, r14
; gcrRegs +[rcx]
call [System.Reflection.RuntimeEventInfo:get_Name():System.String:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- mov rdx, rbp
+ mov rdx, r15
; gcrRegs +[rdx]
mov r8d, 5
cmp dword ptr [rcx], ecx
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx rbp]
+ ; gcrRegs -[rax rcx rdx r15]
; gcr arg pop 0
test eax, eax
jne SHORT G_M48278_IG13
jmp G_M48278_IG19
;; size=71 bbWeight=0 PerfScore 0.00
-G_M48278_IG12: ; bbWeight=0, gcrefRegs=80A0 {rbp rdi r15}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs +[rbp]
- mov rcx, r15
+G_M48278_IG12: ; bbWeight=0, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs +[r15]
+ mov rcx, r14
; gcrRegs +[rcx]
call [System.Reflection.RuntimeEventInfo:get_Name():System.String:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- mov rdx, rbp
+ mov rdx, r15
; gcrRegs +[rdx]
mov r8d, 4
cmp dword ptr [rcx], ecx
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx rbp]
+ ; gcrRegs -[rax rcx rdx r15]
; gcr arg pop 0
test eax, eax
je G_M48278_IG19
;; size=37 bbWeight=0 PerfScore 0.00
-G_M48278_IG13: ; bbWeight=0, gcrefRegs=8080 {rdi r15}, byrefRegs=0008 {rbx}, byref
+G_M48278_IG13: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0008 {rbx}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
;; size=15 bbWeight=0 PerfScore 0.00
-G_M48278_IG14: ; bbWeight=0.38, gcrefRegs=8080 {rdi r15}, byrefRegs=0008 {rbx}, byref
+G_M48278_IG14: ; bbWeight=0.38, gcrefRegs=4080 {rdi r14}, byrefRegs=0008 {rbx}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
lea rcx, [rsp+0x30]
- mov r8, r15
+ mov r8, r14
; gcrRegs +[r8]
mov rdx, 0xD1FFAB1E ; System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]
call [<unknown method>]
- ; gcrRegs -[r8 r15]
+ ; gcrRegs -[r8 r14]
; gcr arg pop 0
;; size=39 bbWeight=0.38 PerfScore 2.02
G_M48278_IG15: ; bbWeight=0.38, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- inc r14d
- mov ebp, dword ptr [rdi+0x08]
- cmp ebp, r14d
+ inc ebp
+ cmp dword ptr [rdi+0x08], ebp
jg G_M48278_IG10
- ;; size=30 bbWeight=0.38 PerfScore 1.83
+ ;; size=26 bbWeight=0.38 PerfScore 2.12
G_M48278_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rdi]
mov rcx, 0xD1FFAB1E
@@ -332,7 +329,7 @@ G_M48278_IG19: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx},
jmp SHORT G_M48278_IG15
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 645, prolog size 48, PerfScore 88.55, instruction count 161, allocated bytes for code 645 (MethodHash=d9964369) for method System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
+; Total bytes of code 639, prolog size 48, PerfScore 91.34, instruction count 159, allocated bytes for code 639 (MethodHash=d9964369) for method System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -10,27 +10,27 @@
;
; V00 this [V00,T14] ( 11, 32.50) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Buffers.SharedArrayPool`1[System.__Canon]>
; V01 loc0 [V01,T16] ( 5, 33.50) int -> rbx
-; V02 loc1 [V02,T36] ( 5, 19 ) int -> rsi
+; V02 loc1 [V02,T35] ( 5, 19 ) int -> rsi
; V03 loc2 [V03,T26] ( 7, 27 ) ref -> rdi class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T49] ( 4, 10 ) ref -> r14 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T35] ( 6, 19 ) int -> r15
-; V06 loc5 [V06,T43] ( 8, 10.50) ref -> [rbp-0x88] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T48] ( 4, 10 ) ref -> r14 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T34] ( 6, 19 ) int -> r15
+; V06 loc5 [V06,T42] ( 8, 10.50) ref -> [rbp-0x88] class-hnd EH-live spill-single-def <<unknown class>>
; V07 loc6 [V07 ] ( 2, 4 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T44] ( 8, 10.50) ref -> [rbp-0x90] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T43] ( 8, 10.50) ref -> [rbp-0x90] class-hnd EH-live spill-single-def <<unknown class>>
; V09 loc8 [V09 ] ( 2, 4 ) struct (16) [rbp-0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T29] ( 3, 20 ) ref -> rsi class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T28] ( 3, 20 ) ref -> rsi class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T03] ( 5, 66 ) int -> rbx
; V12 loc11 [V12,T01] ( 6, 64 ) ref -> r13 class-hnd <<unknown class>>
-; V13 loc12 [V13,T52] ( 2, 8.50) int -> rsi
-; V14 loc13 [V14,T69] ( 3, 1.50) int -> rsi
-; V15 loc14 [V15,T45] ( 8, 10.50) ref -> [rbp-0x98] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T51] ( 2, 8.50) int -> rsi
+; V14 loc13 [V14,T68] ( 3, 1.50) int -> rsi
+; V15 loc14 [V15,T44] ( 8, 10.50) ref -> [rbp-0x98] class-hnd EH-live spill-single-def <<unknown class>>
; V16 loc15 [V16 ] ( 2, 4 ) struct (16) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T11] ( 5, 36 ) ref -> r14 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T10] ( 6, 44 ) ref -> r14 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> r15
-; V19 loc18 [V19,T28] ( 3, 24 ) int -> rdx
+; V19 loc18 [V19,T27] ( 3, 24 ) int -> rax
; V20 loc19 [V20,T07] ( 6, 48 ) ref -> r12 class-hnd <<unknown class>>
; V21 OutArgs [V21 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T30] ( 3, 20 ) ref -> r13 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T29] ( 3, 20 ) ref -> r13 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T12] ( 2, 36 ) int -> r12 "impAppendStmt"
;* V25 tmp4 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
@@ -39,22 +39,22 @@
;* V28 tmp7 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V29 tmp8 [V29,T21] ( 2, 32 ) int -> r12 "impAppendStmt"
; V30 tmp9 [V30,T22] ( 2, 32 ) int -> r13 "impAppendStmt"
-; V31 tmp10 [V31,T60] ( 3, 3 ) ref -> rdi single-def "handle histogram profile tmp"
+; V31 tmp10 [V31,T59] ( 3, 3 ) ref -> rdi single-def "handle histogram profile tmp"
;* V32 tmp11 [V32 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V35 tmp14 [V35,T61] ( 3, 3 ) ref -> rsi single-def "handle histogram profile tmp"
+; V35 tmp14 [V35,T60] ( 3, 3 ) ref -> rsi single-def "handle histogram profile tmp"
;* V36 tmp15 [V36 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V37 tmp16 [V37 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V38 tmp17 [V38 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V40 tmp19 [V40,T62] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
+; V40 tmp19 [V40,T61] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V42 tmp21 [V42 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V45 tmp24 [V45,T32] ( 3, 20 ) int -> [rbp-0x78] spill-single-def "Inline stloc first use temp"
-; V46 tmp25 [V46,T31] ( 3, 20 ) ref -> r13 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V45 tmp24 [V45,T31] ( 3, 20 ) int -> [rbp-0x78] spill-single-def "Inline stloc first use temp"
+; V46 tmp25 [V46,T30] ( 3, 20 ) ref -> r13 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V47 tmp26 [V47,T04] ( 5, 66 ) int -> [rbp-0x7C] "Inline stloc first use temp"
; V48 tmp27 [V48,T23] ( 2, 32 ) int -> rax "Inlining Arg"
; V49 tmp28 [V49,T24] ( 2, 32 ) int -> rax "Inlining Arg"
@@ -64,48 +64,47 @@
; V53 tmp32 [V53 ] ( 1, 2 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V09.value (fldOffset=0x8)" P-DEP
; V54 tmp33 [V54 ] ( 2, 4 ) ref -> [rbp-0x70] do-not-enreg[X] addr-exposed "field V16.key (fldOffset=0x0)" P-DEP
; V55 tmp34 [V55 ] ( 1, 2 ) ref -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V16.value (fldOffset=0x8)" P-DEP
-; V56 tmp35 [V56,T63] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V57 tmp36 [V57,T37] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V58 tmp37 [V58,T57] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V56 tmp35 [V56,T62] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V57 tmp36 [V57,T36] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V58 tmp37 [V58,T56] ( 2, 8 ) ref -> rcx "argument with side effect"
; V59 tmp38 [V59,T25] ( 2, 32 ) long -> rdx "argument with side effect"
; V60 tmp39 [V60,T18] ( 2, 32 ) ref -> r8 "argument with side effect"
-;* V61 tmp40 [V61,T40] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V62 tmp41 [V62,T71] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V63 tmp42 [V63,T64] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V64 tmp43 [V64,T65] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V65 tmp44 [V65,T38] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V66 tmp45 [V66,T58] ( 2, 8 ) ref -> rcx "argument with side effect"
+;* V61 tmp40 [V61,T39] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V62 tmp41 [V62,T70] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V63 tmp42 [V63,T63] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V64 tmp43 [V64,T64] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V65 tmp44 [V65,T37] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V66 tmp45 [V66,T57] ( 2, 8 ) ref -> rcx "argument with side effect"
; V67 tmp46 [V67,T06] ( 2, 64 ) long -> rdx "argument with side effect"
; V68 tmp47 [V68,T05] ( 2, 64 ) ref -> r8 "argument with side effect"
-;* V69 tmp48 [V69,T41] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V70 tmp49 [V70,T72] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V71 tmp50 [V71,T66] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V72 tmp51 [V72,T67] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V73 tmp52 [V73,T39] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V74 tmp53 [V74,T59] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V75 tmp54 [V75,T73] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V76 tmp55 [V76,T68] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V77 PSPSym [V77,T70] ( 1, 1 ) long -> [rbp-0xA8] do-not-enreg[V] "PSPSym"
+;* V69 tmp48 [V69,T40] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V70 tmp49 [V70,T71] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V71 tmp50 [V71,T65] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V72 tmp51 [V72,T66] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V73 tmp52 [V73,T38] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V74 tmp53 [V74,T58] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V75 tmp54 [V75,T72] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V76 tmp55 [V76,T67] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V77 PSPSym [V77,T69] ( 1, 1 ) long -> [rbp-0xA8] do-not-enreg[V] "PSPSym"
; V78 cse0 [V78,T15] ( 4, 34 ) long -> registers hoist multi-def "CSE - moderate"
-; V79 cse1 [V79,T53] ( 4, 8 ) ref -> rdi multi-def "CSE - moderate"
-; V80 cse2 [V80,T46] ( 6, 10.50) ref -> rdi multi-def "CSE - moderate"
-; V81 cse3 [V81,T54] ( 4, 8 ) ref -> rsi multi-def "CSE - moderate"
-; V82 cse4 [V82,T47] ( 6, 10.50) ref -> rsi multi-def "CSE - moderate"
-; V83 cse5 [V83,T55] ( 4, 8 ) ref -> r14 multi-def "CSE - moderate"
-; V84 cse6 [V84,T48] ( 6, 10.50) ref -> r14 multi-def "CSE - moderate"
-; V85 cse7 [V85,T27] ( 3, 24 ) byref -> [rbp-0xA0] spill-single-def "CSE - moderate"
-; V86 cse8 [V86,T08] ( 4, 48 ) long -> r12 "CSE - aggressive"
-; V87 cse9 [V87,T02] ( 3, 68 ) int -> r13 "CSE - aggressive"
-; V88 cse10 [V88,T33] ( 3, 20 ) int -> [rbp-0x80] spill-single-def "CSE - moderate"
-; V89 cse11 [V89,T34] ( 3, 20 ) int -> r14 "CSE - moderate"
-; V90 rat0 [V90,T50] ( 3, 9.44) long -> rdx "Spilling to split statement for tree"
-; V91 rat1 [V91,T56] ( 3, 8 ) long -> r15 "runtime lookup"
-; V92 rat2 [V92,T42] ( 3, 11.20) long -> rax "spilling expr"
-; V93 rat3 [V93,T51] ( 3, 8.96) long -> r15 "fgMakeTemp is creating a new local variable"
-; V94 rat4 [V94,T10] ( 3, 37.76) long -> rdx "Spilling to split statement for tree"
-; V95 rat5 [V95,T17] ( 3, 32 ) long -> rax "runtime lookup"
-; V96 rat6 [V96,T09] ( 3, 44.80) long -> rax "spilling expr"
-; V97 rat7 [V97,T13] ( 3, 35.84) long -> rax "fgMakeTemp is creating a new local variable"
+; V79 cse1 [V79,T52] ( 4, 8 ) ref -> rdi multi-def "CSE - moderate"
+; V80 cse2 [V80,T45] ( 6, 10.50) ref -> rdi multi-def "CSE - moderate"
+; V81 cse3 [V81,T53] ( 4, 8 ) ref -> rsi multi-def "CSE - moderate"
+; V82 cse4 [V82,T46] ( 6, 10.50) ref -> rsi multi-def "CSE - moderate"
+; V83 cse5 [V83,T54] ( 4, 8 ) ref -> r14 multi-def "CSE - moderate"
+; V84 cse6 [V84,T47] ( 6, 10.50) ref -> r14 multi-def "CSE - moderate"
+; V85 cse7 [V85,T08] ( 5, 56 ) long -> r12 "CSE - aggressive"
+; V86 cse8 [V86,T02] ( 3, 68 ) int -> r13 "CSE - aggressive"
+; V87 cse9 [V87,T32] ( 3, 20 ) int -> [rbp-0x80] spill-single-def "CSE - moderate"
+; V88 cse10 [V88,T33] ( 3, 20 ) int -> r14 "CSE - moderate"
+; V89 rat0 [V89,T49] ( 3, 9.44) long -> rdx "Spilling to split statement for tree"
+; V90 rat1 [V90,T55] ( 3, 8 ) long -> r15 "runtime lookup"
+; V91 rat2 [V91,T41] ( 3, 11.20) long -> rax "spilling expr"
+; V92 rat3 [V92,T50] ( 3, 8.96) long -> r15 "fgMakeTemp is creating a new local variable"
+; V93 rat4 [V93,T11] ( 3, 37.76) long -> rdx "Spilling to split statement for tree"
+; V94 rat5 [V94,T17] ( 3, 32 ) long -> rax "runtime lookup"
+; V95 rat6 [V95,T09] ( 3, 44.80) long -> rax "spilling expr"
+; V96 rat7 [V96,T13] ( 3, 35.84) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 152
@@ -250,7 +249,7 @@ G_M16529_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
mov gword ptr [rbp-0x88], rax
; GC ptr vars +{V06}
;; size=62 bbWeight=0.50 PerfScore 6.50
-G_M16529_IG11: ; bbWeight=0.50, gcVars=00000000000000000000080000004000 {V00 V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16529_IG11: ; bbWeight=0.50, gcVars=00000000000000000000040000004000 {V00 V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
jmp SHORT G_M16529_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M16529_IG12: ; bbWeight=2, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
@@ -343,7 +342,7 @@ G_M16529_IG15: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
mov gword ptr [rbp-0x90], rax
; GC ptr vars +{V08}
;; size=49 bbWeight=0.50 PerfScore 4.50
-G_M16529_IG16: ; bbWeight=0.50, gcVars=00000000000000000000100000004000 {V00 V08}, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG16: ; bbWeight=0.50, gcVars=00000000000000000000080000004000 {V00 V08}, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, gcvars, byref
jmp G_M16529_IG23
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M16529_IG17: ; bbWeight=2, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
@@ -547,7 +546,7 @@ G_M16529_IG29: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V15}
;; size=49 bbWeight=0.50 PerfScore 4.50
-G_M16529_IG30: ; bbWeight=0.50, gcVars=00000000000000000000200000004000 {V00 V15}, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M16529_IG30: ; bbWeight=0.50, gcVars=00000000000000000000100000004000 {V00 V15}, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, gcvars, byref
jmp G_M16529_IG36
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M16529_IG31: ; bbWeight=2, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
@@ -579,24 +578,15 @@ G_M16529_IG32: ; bbWeight=16, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}
je SHORT G_M16529_IG34
;; size=15 bbWeight=16 PerfScore 76.00
G_M16529_IG33: ; bbWeight=8, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
- lea rax, bword ptr [r14+r12+0x10]
- ; byrRegs +[rax]
- mov bword ptr [rbp-0xA0], rax
- ; GC ptr vars +{V85}
- mov edx, dword ptr [rax+0x08]
- test edx, edx
+ mov eax, dword ptr [r14+r12+0x18]
+ test eax, eax
jne G_M16529_IG38
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
- ; byrRegs -[rax]
; gcr arg pop 0
- mov r12, bword ptr [rbp-0xA0]
- ; byrRegs +[r12]
- mov dword ptr [r12+0x08], ebx
- ;; size=50 bbWeight=8 PerfScore 68.00
-G_M16529_IG34: ; bbWeight=64, gcVars=00000000000000000000200000004000 {V00 V15}, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[r12]
- ; GC ptr vars -{V85}
+ mov dword ptr [r14+r12+0x18], ebx
+ ;; size=33 bbWeight=8 PerfScore 44.00
+G_M16529_IG34: ; bbWeight=64, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
@@ -644,7 +634,7 @@ G_M16529_IG37: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
G_M16529_IG38: ; bbWeight=8, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov ecx, ebx
- sub ecx, edx
+ sub ecx, eax
movsxd rcx, ecx
mov edx, esi
cmp rcx, rdx
@@ -786,7 +776,7 @@ G_M16529_IG48: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=20 bbWeight=1 PerfScore 5.25
-G_M16529_IG49: ; bbWeight=0, gcVars=00000000000000000000080000004000 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M16529_IG49: ; bbWeight=0, gcVars=00000000000000000000040000004000 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V06}
push rbp
push r15
@@ -801,7 +791,7 @@ G_M16529_IG49: ; bbWeight=0, gcVars=00000000000000000000080000004000 {V00
mov qword ptr [rsp+0x28], rbp
lea rbp, [rbp+0xD0]
;; size=32 bbWeight=0 PerfScore 0.00
-G_M16529_IG50: ; bbWeight=0, gcVars=00000000000000000000080000004000 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16529_IG50: ; bbWeight=0, gcVars=00000000000000000000040000004000 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x88], 0
je SHORT G_M16529_IG51
mov rcx, 0xD1FFAB1E
@@ -842,7 +832,7 @@ G_M16529_IG52: ; bbWeight=0, funclet epilog, nogc, extend
pop rbp
ret
;; size=17 bbWeight=0 PerfScore 0.00
-G_M16529_IG53: ; bbWeight=0, gcVars=00000000000000000000100000004000 {V00 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M16529_IG53: ; bbWeight=0, gcVars=00000000000000000000080000004000 {V00 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V08}
push rbp
push r15
@@ -857,7 +847,7 @@ G_M16529_IG53: ; bbWeight=0, gcVars=00000000000000000000100000004000 {V00
mov qword ptr [rsp+0x28], rbp
lea rbp, [rbp+0xD0]
;; size=32 bbWeight=0 PerfScore 0.00
...
@@ -12,13 +12,13 @@
; V00 this [V00,T05] ( 4, 4 ) ref -> rdi this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T04] ( 6, 4 ) ref -> rsi ld-addr-op class-hnd <System.String>
; V02 arg2 [V02,T02] ( 6, 5.33) int -> rbx
-; V03 loc0 [V03,T15] ( 3, 1.01) int -> rbp ld-addr-op
-; V04 loc1 [V04,T11] ( 3, 2.33) ref -> rdi class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
+; V03 loc0 [V03,T14] ( 3, 1.01) int -> rbp ld-addr-op
+; V04 loc1 [V04,T11] ( 4, 2.66) ref -> rdi class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
; V05 loc2 [V05,T10] ( 16, 2.66) ref -> rbp class-hnd <System.Reflection.FieldInfo>
-; V06 loc3 [V06,T14] ( 3, 2 ) ubyte -> r14
+; V06 loc3 [V06,T13] ( 3, 2 ) ubyte -> r14
;* V07 loc4 [V07 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op
-; V08 loc5 [V08,T13] ( 5, 2.32) int -> r15
-; V09 loc6 [V09,T16] ( 12, 0.99) ref -> r12 class-hnd <System.Reflection.RuntimeFieldInfo>
+; V08 loc5 [V08,T12] ( 5, 2.32) int -> r15
+; V09 loc6 [V09,T15] ( 12, 0.99) ref -> r13 class-hnd <System.Reflection.RuntimeFieldInfo>
; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
@@ -28,7 +28,7 @@
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V19 tmp9 [V19,T18] ( 3, 0 ) ref -> rsi "handle histogram profile tmp"
+; V19 tmp9 [V19,T17] ( 3, 0 ) ref -> rsi "handle histogram profile tmp"
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
@@ -50,38 +50,36 @@
;* V38 tmp28 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V39 tmp29 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V40 tmp30 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V41 tmp31 [V41,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V42 tmp32 [V42,T19] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V43 tmp33 [V43,T20] ( 3, 0 ) ref -> rcx "argument with side effect"
-;* V44 tmp34 [V44,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V45 tmp35 [V45,T28] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V46 tmp36 [V46,T21] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V47 tmp37 [V47,T22] ( 3, 0 ) ref -> rsi "argument with side effect"
-; V48 tmp38 [V48,T25] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V49 tmp39 [V49,T23] ( 3, 0 ) ref -> rcx "argument with side effect"
-; V50 tmp40 [V50,T24] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
-; V51 cse0 [V51,T17] ( 3, 0.99) int -> rcx "CSE - conservative"
-; V52 cse1 [V52,T12] ( 3, 2.33) int -> r13 "CSE - moderate"
-; V53 cse2 [V53,T09] ( 3, 3 ) long -> rcx "CSE - moderate"
+;* V41 tmp31 [V41,T25] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V42 tmp32 [V42,T18] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V43 tmp33 [V43,T19] ( 3, 0 ) ref -> rcx "argument with side effect"
+;* V44 tmp34 [V44,T26] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V45 tmp35 [V45,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V46 tmp36 [V46,T20] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V47 tmp37 [V47,T21] ( 3, 0 ) ref -> rsi "argument with side effect"
+; V48 tmp38 [V48,T24] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V49 tmp39 [V49,T22] ( 3, 0 ) ref -> rcx "argument with side effect"
+; V50 tmp40 [V50,T23] ( 3, 0 ) ref -> rcx single-def "argument with side effect"
+; V51 cse0 [V51,T16] ( 3, 0.99) int -> rcx "CSE - conservative"
+; V52 cse1 [V52,T09] ( 3, 3 ) long -> rcx "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M40435_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
push r13
- push r12
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rdi, rcx
; gcrRegs +[rdi]
mov rsi, rdx
; gcrRegs +[rsi]
mov ebx, r8d
- ;; size=25 bbWeight=1 PerfScore 9.00
+ ;; size=23 bbWeight=1 PerfScore 8.00
G_M40435_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
jne SHORT G_M40435_IG04
@@ -216,33 +214,32 @@ G_M40435_IG10: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {},
xor ebx, 2
xor r14d, r14d
xor r15d, r15d
- mov r13d, dword ptr [rdi+0x08]
- test r13d, r13d
+ cmp dword ptr [rdi+0x08], 0
jle G_M40435_IG16
- ;; size=46 bbWeight=1 PerfScore 11.25
+ ;; size=43 bbWeight=1 PerfScore 12.00
G_M40435_IG11: ; bbWeight=0.33, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov ecx, r15d
- mov r12, gword ptr [rdi+8*rcx+0x10]
- ; gcrRegs +[r12]
- mov ecx, dword ptr [r12+0x18]
+ mov r13, gword ptr [rdi+8*rcx+0x10]
+ ; gcrRegs +[r13]
+ mov ecx, dword ptr [r13+0x18]
mov eax, ebx
and eax, ecx
cmp eax, ecx
jne G_M40435_IG15
test rbp, rbp
je G_M40435_IG14
- ;; size=34 bbWeight=0.33 PerfScore 2.38
-G_M40435_IG12: ; bbWeight=0, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0000 {}, byref
- mov rcx, r12
+ ;; size=33 bbWeight=0.33 PerfScore 2.38
+G_M40435_IG12: ; bbWeight=0, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0000 {}, byref
+ mov rcx, r13
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx]
- mov rax, qword ptr [r12]
+ mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
@@ -285,15 +282,15 @@ G_M40435_IG12: ; bbWeight=0, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0000
; gcr arg pop 0
test eax, eax
je G_M40435_IG25
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx]
- mov rax, qword ptr [r12]
+ mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
@@ -311,16 +308,16 @@ G_M40435_IG12: ; bbWeight=0, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0000
; gcr arg pop 0
mov r14d, 1
;; size=197 bbWeight=0 PerfScore 0.00
-G_M40435_IG13: ; bbWeight=0, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0000 {}, byref
- mov rcx, r12
+G_M40435_IG13: ; bbWeight=0, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0000 {}, byref
+ mov rcx, r13
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx]
- mov rax, qword ptr [r12]
+ mov rax, qword ptr [r13]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
@@ -384,22 +381,22 @@ G_M40435_IG13: ; bbWeight=0, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0000
; gcrRegs -[rbp]
; gcr arg pop 0
;; size=176 bbWeight=0 PerfScore 0.00
-G_M40435_IG14: ; bbWeight=0.33, gcrefRegs=1080 {rdi r12}, byrefRegs=0000 {}, byref
+G_M40435_IG14: ; bbWeight=0.33, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rbp, r12
+ mov rbp, r13
; gcrRegs +[rbp]
;; size=18 bbWeight=0.33 PerfScore 0.49
G_M40435_IG15: ; bbWeight=0.33, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12]
+ ; gcrRegs -[r13]
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
inc r15d
- cmp r13d, r15d
+ cmp dword ptr [rdi+0x08], r15d
jg G_M40435_IG11
- ;; size=27 bbWeight=0.33 PerfScore 0.90
+ ;; size=28 bbWeight=0.33 PerfScore 1.81
G_M40435_IG16: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
test r14d, r14d
@@ -452,17 +449,16 @@ G_M40435_IG19: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
;; size=18 bbWeight=1 PerfScore 1.50
G_M40435_IG20: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
- pop r12
pop r13
pop r14
pop r15
ret
- ;; size=17 bbWeight=1 PerfScore 5.25
+ ;; size=15 bbWeight=1 PerfScore 4.75
G_M40435_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbp]
call [System.ThrowHelper:ThrowNullReferenceException()]
@@ -476,28 +472,28 @@ G_M40435_IG22: ; bbWeight=0, gcrefRegs=00A0 {rbp rdi}, byrefRegs=0000 {},
; gcr arg pop 0
jmp G_M40435_IG15
;; size=20 bbWeight=0 PerfScore 0.00
-G_M40435_IG23: ; bbWeight=0, gcrefRegs=1080 {rdi r12}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbp] +[r12]
+G_M40435_IG23: ; bbWeight=0, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbp] +[r13]
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
jmp G_M40435_IG14
;; size=20 bbWeight=0 PerfScore 0.00
-G_M40435_IG24: ; bbWeight=0, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0000 {}, byref
+G_M40435_IG24: ; bbWeight=0, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0000 {}, byref
; gcrRegs +[rbp]
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
jmp G_M40435_IG13
;; size=20 bbWeight=0 PerfScore 0.00
-G_M40435_IG25: ; bbWeight=0, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0000 {}, byref
+G_M40435_IG25: ; bbWeight=0, gcrefRegs=20A0 {rbp rdi r13}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
jmp G_M40435_IG13
;; size=20 bbWeight=0 PerfScore 0.00
G_M40435_IG26: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi r12]
+ ; gcrRegs -[rdi r13]
mov rcx, rbp
; gcrRegs +[rcx]
call [<unknown method>]
@@ -511,7 +507,7 @@ G_M40435_IG26: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byr
int3
...
@@ -10,27 +10,27 @@
;
; V00 this [V00,T25] ( 9, 22.50) ref -> rbx this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Buffers.AhoCorasickNode]>
; V01 loc0 [V01,T05] ( 5, 65.50) int -> rsi
-; V02 loc1 [V02,T11] ( 5, 51 ) int -> rdi
+; V02 loc1 [V02,T12] ( 5, 51 ) int -> rdi
; V03 loc2 [V03,T24] ( 7, 27 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T43] ( 4, 10 ) ref -> r15 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T31] ( 6, 19 ) int -> r13
-; V06 loc5 [V06,T37] ( 8, 10.50) ref -> [rbp-0x90] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T42] ( 4, 10 ) ref -> r15 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T30] ( 6, 19 ) int -> r13
+; V06 loc5 [V06,T36] ( 8, 10.50) ref -> [rbp-0xA0] class-hnd EH-live spill-single-def <<unknown class>>
; V07 loc6 [V07 ] ( 2, 4 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T38] ( 8, 10.50) ref -> [rbp-0x98] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T37] ( 8, 10.50) ref -> [rbp-0xA8] class-hnd EH-live spill-single-def <<unknown class>>
; V09 loc8 [V09 ] ( 2, 4 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T28] ( 3, 20 ) ref -> rdi class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T27] ( 3, 20 ) ref -> rdi class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T04] ( 5, 66 ) int -> rsi
; V12 loc11 [V12,T07] ( 6, 60 ) ref -> r13 class-hnd exact <<unknown class>>
-; V13 loc12 [V13,T44] ( 2, 8.50) int -> rdi
-; V14 loc13 [V14,T60] ( 3, 1.50) int -> rdi
-; V15 loc14 [V15,T39] ( 8, 10.50) ref -> [rbp-0xA0] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T43] ( 2, 8.50) int -> rdi
+; V14 loc13 [V14,T59] ( 3, 1.50) int -> rdi
+; V15 loc14 [V15,T38] ( 8, 10.50) ref -> [rbp-0xB0] class-hnd EH-live spill-single-def <<unknown class>>
; V16 loc15 [V16 ] ( 2, 4 ) struct (16) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T14] ( 5, 36 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T14] ( 6, 44 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> r13
-; V19 loc18 [V19,T27] ( 3, 24 ) int -> r8
-; V20 loc19 [V20,T13] ( 6, 44 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def <<unknown class>>
+; V19 loc18 [V19,T26] ( 3, 24 ) int -> rdx
+; V20 loc19 [V20,T13] ( 6, 44 ) ref -> [rbp-0xB8] class-hnd exact spill-single-def <<unknown class>>
; V21 OutArgs [V21 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T29] ( 3, 20 ) ref -> r12 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T28] ( 3, 20 ) ref -> r12 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T02] ( 2,100 ) int -> [rbp-0x6C] spill-single-def "impAppendStmt"
; V25 tmp4 [V25,T15] ( 2, 32 ) ref -> rax "CASTCLASS eval op1"
@@ -41,22 +41,22 @@
;* V30 tmp9 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V31 tmp10 [V31,T20] ( 2, 32 ) int -> r12 "impAppendStmt"
; V32 tmp11 [V32,T21] ( 2, 32 ) int -> r13 "impAppendStmt"
-; V33 tmp12 [V33,T51] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
+; V33 tmp12 [V33,T50] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V36 tmp15 [V36 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V37 tmp16 [V37,T52] ( 3, 3 ) ref -> rdi single-def "handle histogram profile tmp"
+; V37 tmp16 [V37,T51] ( 3, 3 ) ref -> rdi single-def "handle histogram profile tmp"
;* V38 tmp17 [V38 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V42 tmp21 [V42,T53] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
+; V42 tmp21 [V42,T52] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V47 tmp26 [V47,T09] ( 3, 52 ) int -> [rbp-0x78] spill-single-def "Inline stloc first use temp"
-; V48 tmp27 [V48,T08] ( 3, 52 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V47 tmp26 [V47,T10] ( 3, 52 ) int -> [rbp-0x78] spill-single-def "Inline stloc first use temp"
+; V48 tmp27 [V48,T09] ( 3, 52 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V49 tmp28 [V49,T01] ( 5,194 ) int -> [rbp-0x7C] "Inline stloc first use temp"
; V50 tmp29 [V50,T22] ( 2, 32 ) int -> rax "Inlining Arg"
; V51 tmp30 [V51,T23] ( 2, 32 ) int -> rax "Inlining Arg"
@@ -66,39 +66,38 @@
; V55 tmp34 [V55 ] ( 1, 2 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V09.value (fldOffset=0x8)" P-DEP
; V56 tmp35 [V56 ] ( 2, 4 ) ref -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V16.key (fldOffset=0x0)" P-DEP
; V57 tmp36 [V57 ] ( 1, 2 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V16.value (fldOffset=0x8)" P-DEP
-; V58 tmp37 [V58,T54] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V59 tmp38 [V59,T34] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V60 tmp39 [V60,T48] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V58 tmp37 [V58,T53] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V59 tmp38 [V59,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V60 tmp39 [V60,T47] ( 2, 8 ) ref -> rcx "argument with side effect"
; V61 tmp40 [V61,T16] ( 2, 32 ) ref -> rcx "argument with side effect"
-; V62 tmp41 [V62,T62] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V63 tmp42 [V63,T55] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V64 tmp43 [V64,T56] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V65 tmp44 [V65,T35] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V66 tmp45 [V66,T49] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V62 tmp41 [V62,T61] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V63 tmp42 [V63,T54] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V64 tmp43 [V64,T55] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V65 tmp44 [V65,T34] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V66 tmp45 [V66,T48] ( 2, 8 ) ref -> rcx "argument with side effect"
; V67 tmp46 [V67,T17] ( 2, 32 ) ref -> rcx "argument with side effect"
-; V68 tmp47 [V68,T63] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V69 tmp48 [V69,T57] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V70 tmp49 [V70,T58] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V71 tmp50 [V71,T36] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V72 tmp51 [V72,T50] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V73 tmp52 [V73,T64] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V74 tmp53 [V74,T59] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V75 PSPSym [V75,T61] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
-; V76 cse0 [V76,T45] ( 4, 8 ) ref -> rbx multi-def "CSE - moderate"
-; V77 cse1 [V77,T40] ( 6, 10.50) ref -> rbx multi-def "CSE - moderate"
-; V78 cse2 [V78,T46] ( 4, 8 ) ref -> rdi multi-def "CSE - moderate"
-; V79 cse3 [V79,T41] ( 6, 10.50) ref -> rdi multi-def "CSE - moderate"
-; V80 cse4 [V80,T47] ( 4, 8 ) ref -> r15 multi-def "CSE - moderate"
-; V81 cse5 [V81,T42] ( 6, 10.50) ref -> r15 multi-def "CSE - moderate"
-; V82 cse6 [V82,T26] ( 3, 24 ) byref -> [rbp-0xB0] spill-single-def "CSE - moderate"
-; V83 cse7 [V83,T12] ( 4, 48 ) long -> rax "CSE - moderate"
-; V84 cse8 [V84,T03] ( 3, 68 ) int -> r12 "CSE - aggressive"
-; V85 cse9 [V85,T10] ( 3, 52 ) int -> [rbp-0x80] spill-single-def "CSE - moderate"
-; V86 cse10 [V86,T30] ( 3, 20 ) int -> r15 "CSE - moderate"
-; V87 cse11 [V87,T32] ( 3, 16 ) long -> r12 "CSE - moderate"
-; V88 cse12 [V88,T33] ( 3, 16 ) long -> [rbp-0x88] spill-single-def "CSE - moderate"
+; V68 tmp47 [V68,T62] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V69 tmp48 [V69,T56] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V70 tmp49 [V70,T57] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V71 tmp50 [V71,T35] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V72 tmp51 [V72,T49] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V73 tmp52 [V73,T63] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V74 tmp53 [V74,T58] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V75 PSPSym [V75,T60] ( 1, 1 ) long -> [rbp-0xC8] do-not-enreg[V] "PSPSym"
+; V76 cse0 [V76,T44] ( 4, 8 ) ref -> rbx multi-def "CSE - moderate"
+; V77 cse1 [V77,T39] ( 6, 10.50) ref -> rbx multi-def "CSE - moderate"
+; V78 cse2 [V78,T45] ( 4, 8 ) ref -> rdi multi-def "CSE - moderate"
+; V79 cse3 [V79,T40] ( 6, 10.50) ref -> rdi multi-def "CSE - moderate"
+; V80 cse4 [V80,T46] ( 4, 8 ) ref -> r15 multi-def "CSE - moderate"
+; V81 cse5 [V81,T41] ( 6, 10.50) ref -> r15 multi-def "CSE - moderate"
+; V82 cse6 [V82,T08] ( 5, 56 ) long -> [rbp-0x88] spill-single-def "CSE - aggressive"
+; V83 cse7 [V83,T03] ( 3, 68 ) int -> r12 "CSE - aggressive"
+; V84 cse8 [V84,T11] ( 3, 52 ) int -> [rbp-0x8C] spill-single-def "CSE - moderate"
+; V85 cse9 [V85,T29] ( 3, 20 ) int -> r15 "CSE - moderate"
+; V86 cse10 [V86,T31] ( 3, 16 ) long -> r12 "CSE - moderate"
+; V87 cse11 [V87,T32] ( 3, 16 ) long -> [rbp-0x98] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 168
+; Lcl frame size = 184
G_M35178_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -109,14 +108,14 @@ G_M35178_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 168
- lea rbp, [rsp+0xE0]
+ sub rsp, 184
+ lea rbp, [rsp+0xF0]
xor eax, eax
mov qword ptr [rbp-0x68], rax
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rbp-0x60], ymm4
mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0xB8], rsp
+ mov qword ptr [rbp-0xC8], rsp
mov rbx, rcx
; gcrRegs +[rbx]
;; size=56 bbWeight=1 PerfScore 14.58
@@ -153,13 +152,13 @@ G_M35178_IG04: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
cmp dword ptr [r15+0x08], 0
jle G_M35178_IG09
;; size=18 bbWeight=1 PerfScore 6.25
-G_M35178_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35178_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov ecx, r13d
mov r12, gword ptr [r15+8*rcx+0x10]
; gcrRegs +[r12]
test r12, r12
- je SHORT G_M35178_IG08
- ;; size=13 bbWeight=4 PerfScore 14.00
+ je G_M35178_IG08
+ ;; size=17 bbWeight=4 PerfScore 14.00
G_M35178_IG06: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -181,10 +180,10 @@ G_M35178_IG06: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
mov r12, gword ptr [r12+0x08]
xor eax, eax
mov r10d, dword ptr [r12+0x08]
- mov dword ptr [rbp-0x80], r10d
+ mov dword ptr [rbp-0x8C], r10d
test r10d, r10d
jle SHORT G_M35178_IG08
- ;; size=73 bbWeight=2 PerfScore 31.50
+ ;; size=76 bbWeight=2 PerfScore 31.50
G_M35178_IG07: ; bbWeight=48, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov r11d, dword ptr [rbp-0x78]
mov dword ptr [rsp+0x20], r11d
@@ -201,10 +200,10 @@ G_M35178_IG07: ; bbWeight=48, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs
; gcr arg pop 0
mov eax, dword ptr [rbp-0x7C]
inc eax
- mov ecx, dword ptr [rbp-0x80]
+ mov ecx, dword ptr [rbp-0x8C]
cmp ecx, eax
jg SHORT G_M35178_IG07
- ;; size=48 bbWeight=48 PerfScore 780.00
+ ;; size=51 bbWeight=48 PerfScore 780.00
G_M35178_IG08: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r12]
mov rcx, 0xD1FFAB1E
@@ -235,10 +234,10 @@ G_M35178_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rcx rbx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x90], rax
+ mov gword ptr [rbp-0xA0], rax
; GC ptr vars +{V06}
;; size=59 bbWeight=0.50 PerfScore 6.00
-G_M35178_IG11: ; bbWeight=0.50, gcVars=00000000000000000000002000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35178_IG11: ; bbWeight=0.50, gcVars=0000001000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
jmp SHORT G_M35178_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M35178_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
@@ -246,7 +245,7 @@ G_M35178_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x90]
+ mov rcx, gword ptr [rbp-0xA0]
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
@@ -264,7 +263,7 @@ G_M35178_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Array:Clear(System.Array)]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x90]
+ mov rax, gword ptr [rbp-0xA0]
; gcrRegs +[rax]
;; size=74 bbWeight=2 PerfScore 25.00
G_M35178_IG13: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
@@ -274,7 +273,7 @@ G_M35178_IG13: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rcx]
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x90]
+ mov rcx, gword ptr [rbp-0xA0]
; gcrRegs +[rcx]
mov rbx, rcx
; gcrRegs +[rbx]
@@ -293,7 +292,7 @@ G_M35178_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x90]
+ mov rcx, gword ptr [rbp-0xA0]
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; GC ptr vars -{V06}
@@ -327,15 +326,15 @@ G_M35178_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
call [r11]<unknown method>
...
1[System.ReadOnlyMemory
1[ushort]]:Trim():ubyte:this (Instrumented Tier1)@@ -10,27 +10,27 @@
;
; V00 this [V00,T21] ( 9, 22.50) ref -> rbx this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.ReadOnlyMemory`1[ushort]]>
; V01 loc0 [V01,T10] ( 5, 33.50) int -> rsi
-; V02 loc1 [V02,T31] ( 5, 19 ) int -> rdi
+; V02 loc1 [V02,T30] ( 5, 19 ) int -> rdi
; V03 loc2 [V03,T20] ( 7, 27 ) ref -> r14 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T43] ( 4, 10 ) ref -> r15 class-hnd exact single-def <<unknown class>>
-; V05 loc4 [V05,T30] ( 6, 19 ) int -> r13
-; V06 loc5 [V06,T37] ( 8, 10.50) ref -> [rbp-0x90] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T42] ( 4, 10 ) ref -> r15 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T29] ( 6, 19 ) int -> r13
+; V06 loc5 [V06,T36] ( 8, 10.50) ref -> [rbp-0xA0] class-hnd EH-live spill-single-def <<unknown class>>
; V07 loc6 [V07 ] ( 2, 4 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T38] ( 8, 10.50) ref -> [rbp-0x98] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T37] ( 8, 10.50) ref -> [rbp-0xA8] class-hnd EH-live spill-single-def <<unknown class>>
; V09 loc8 [V09 ] ( 2, 4 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T24] ( 3, 20 ) ref -> rdi class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T23] ( 3, 20 ) ref -> rdi class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T02] ( 5, 66 ) int -> rsi
; V12 loc11 [V12,T05] ( 6, 60 ) ref -> r13 class-hnd exact <<unknown class>>
-; V13 loc12 [V13,T44] ( 2, 8.50) int -> rdi
-; V14 loc13 [V14,T60] ( 3, 1.50) int -> rdi
-; V15 loc14 [V15,T39] ( 8, 10.50) ref -> [rbp-0xA0] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T43] ( 2, 8.50) int -> rdi
+; V14 loc13 [V14,T59] ( 3, 1.50) int -> rdi
+; V15 loc14 [V15,T38] ( 8, 10.50) ref -> [rbp-0xB0] class-hnd EH-live spill-single-def <<unknown class>>
; V16 loc15 [V16 ] ( 2, 4 ) struct (16) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T08] ( 5, 36 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T08] ( 6, 44 ) ref -> r15 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> r13
-; V19 loc18 [V19,T23] ( 3, 24 ) int -> r8
-; V20 loc19 [V20,T07] ( 6, 44 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def <<unknown class>>
+; V19 loc18 [V19,T22] ( 3, 24 ) int -> rdx
+; V20 loc19 [V20,T07] ( 6, 44 ) ref -> [rbp-0xB8] class-hnd exact spill-single-def <<unknown class>>
; V21 OutArgs [V21 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T25] ( 3, 20 ) ref -> r12 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T24] ( 3, 20 ) ref -> r12 class-hnd exact "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
; V24 tmp3 [V24,T09] ( 2, 36 ) int -> [rbp-0x6C] spill-single-def "impAppendStmt"
; V25 tmp4 [V25,T11] ( 2, 32 ) ref -> rax "CASTCLASS eval op1"
@@ -41,22 +41,22 @@
;* V30 tmp9 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V31 tmp10 [V31,T16] ( 2, 32 ) int -> r12 "impAppendStmt"
; V32 tmp11 [V32,T17] ( 2, 32 ) int -> r13 "impAppendStmt"
-; V33 tmp12 [V33,T51] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
+; V33 tmp12 [V33,T50] ( 3, 3 ) ref -> rbx single-def "handle histogram profile tmp"
;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V35 tmp14 [V35 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V36 tmp15 [V36 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V37 tmp16 [V37,T52] ( 3, 3 ) ref -> rdi single-def "handle histogram profile tmp"
+; V37 tmp16 [V37,T51] ( 3, 3 ) ref -> rdi single-def "handle histogram profile tmp"
;* V38 tmp17 [V38 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V42 tmp21 [V42,T53] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
+; V42 tmp21 [V42,T52] ( 3, 3 ) ref -> r15 single-def "handle histogram profile tmp"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V44 tmp23 [V44 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
;* V46 tmp25 [V46 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V47 tmp26 [V47,T27] ( 3, 20 ) int -> [rbp-0x78] spill-single-def "Inline stloc first use temp"
-; V48 tmp27 [V48,T26] ( 3, 20 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V47 tmp26 [V47,T26] ( 3, 20 ) int -> [rbp-0x78] spill-single-def "Inline stloc first use temp"
+; V48 tmp27 [V48,T25] ( 3, 20 ) ref -> r12 class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V49 tmp28 [V49,T03] ( 5, 66 ) int -> [rbp-0x7C] "Inline stloc first use temp"
; V50 tmp29 [V50,T18] ( 2, 32 ) int -> rax "Inlining Arg"
; V51 tmp30 [V51,T19] ( 2, 32 ) int -> rax "Inlining Arg"
@@ -66,39 +66,38 @@
; V55 tmp34 [V55 ] ( 1, 2 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V09.value (fldOffset=0x8)" P-DEP
; V56 tmp35 [V56 ] ( 2, 4 ) ref -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V16.key (fldOffset=0x0)" P-DEP
; V57 tmp36 [V57 ] ( 1, 2 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V16.value (fldOffset=0x8)" P-DEP
-; V58 tmp37 [V58,T54] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V59 tmp38 [V59,T34] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V60 tmp39 [V60,T48] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V58 tmp37 [V58,T53] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V59 tmp38 [V59,T33] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V60 tmp39 [V60,T47] ( 2, 8 ) ref -> rcx "argument with side effect"
; V61 tmp40 [V61,T12] ( 2, 32 ) ref -> rcx "argument with side effect"
-; V62 tmp41 [V62,T62] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V63 tmp42 [V63,T55] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V64 tmp43 [V64,T56] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V65 tmp44 [V65,T35] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V66 tmp45 [V66,T49] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V62 tmp41 [V62,T61] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V63 tmp42 [V63,T54] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V64 tmp43 [V64,T55] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V65 tmp44 [V65,T34] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V66 tmp45 [V66,T48] ( 2, 8 ) ref -> rcx "argument with side effect"
; V67 tmp46 [V67,T13] ( 2, 32 ) ref -> rcx "argument with side effect"
-; V68 tmp47 [V68,T63] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V69 tmp48 [V69,T57] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V70 tmp49 [V70,T58] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V71 tmp50 [V71,T36] ( 2, 16 ) ref -> r11 "argument with side effect"
-; V72 tmp51 [V72,T50] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V73 tmp52 [V73,T64] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V74 tmp53 [V74,T59] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V75 PSPSym [V75,T61] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
-; V76 cse0 [V76,T45] ( 4, 8 ) ref -> rbx multi-def "CSE - moderate"
-; V77 cse1 [V77,T40] ( 6, 10.50) ref -> rbx multi-def "CSE - moderate"
-; V78 cse2 [V78,T46] ( 4, 8 ) ref -> rdi multi-def "CSE - moderate"
-; V79 cse3 [V79,T41] ( 6, 10.50) ref -> rdi multi-def "CSE - moderate"
-; V80 cse4 [V80,T47] ( 4, 8 ) ref -> r15 multi-def "CSE - moderate"
-; V81 cse5 [V81,T42] ( 6, 10.50) ref -> r15 multi-def "CSE - moderate"
-; V82 cse6 [V82,T22] ( 3, 24 ) byref -> [rbp-0xB0] spill-single-def "CSE - moderate"
-; V83 cse7 [V83,T06] ( 4, 48 ) long -> rax "CSE - aggressive"
-; V84 cse8 [V84,T01] ( 3, 68 ) int -> r12 "CSE - aggressive"
-; V85 cse9 [V85,T28] ( 3, 20 ) int -> [rbp-0x80] spill-single-def "CSE - moderate"
-; V86 cse10 [V86,T29] ( 3, 20 ) int -> r15 "CSE - moderate"
-; V87 cse11 [V87,T32] ( 3, 16 ) long -> r12 "CSE - moderate"
-; V88 cse12 [V88,T33] ( 3, 16 ) long -> [rbp-0x88] spill-single-def "CSE - moderate"
+; V68 tmp47 [V68,T62] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V69 tmp48 [V69,T56] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V70 tmp49 [V70,T57] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V71 tmp50 [V71,T35] ( 2, 16 ) ref -> r11 "argument with side effect"
+; V72 tmp51 [V72,T49] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V73 tmp52 [V73,T63] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V74 tmp53 [V74,T58] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V75 PSPSym [V75,T60] ( 1, 1 ) long -> [rbp-0xC8] do-not-enreg[V] "PSPSym"
+; V76 cse0 [V76,T44] ( 4, 8 ) ref -> rbx multi-def "CSE - moderate"
+; V77 cse1 [V77,T39] ( 6, 10.50) ref -> rbx multi-def "CSE - moderate"
+; V78 cse2 [V78,T45] ( 4, 8 ) ref -> rdi multi-def "CSE - moderate"
+; V79 cse3 [V79,T40] ( 6, 10.50) ref -> rdi multi-def "CSE - moderate"
+; V80 cse4 [V80,T46] ( 4, 8 ) ref -> r15 multi-def "CSE - moderate"
+; V81 cse5 [V81,T41] ( 6, 10.50) ref -> r15 multi-def "CSE - moderate"
+; V82 cse6 [V82,T06] ( 5, 56 ) long -> [rbp-0x88] spill-single-def "CSE - aggressive"
+; V83 cse7 [V83,T01] ( 3, 68 ) int -> r12 "CSE - aggressive"
+; V84 cse8 [V84,T27] ( 3, 20 ) int -> [rbp-0x8C] spill-single-def "CSE - moderate"
+; V85 cse9 [V85,T28] ( 3, 20 ) int -> r15 "CSE - moderate"
+; V86 cse10 [V86,T31] ( 3, 16 ) long -> r12 "CSE - moderate"
+; V87 cse11 [V87,T32] ( 3, 16 ) long -> [rbp-0x98] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 168
+; Lcl frame size = 184
G_M59307_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -109,14 +108,14 @@ G_M59307_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 168
- lea rbp, [rsp+0xE0]
+ sub rsp, 184
+ lea rbp, [rsp+0xF0]
xor eax, eax
mov qword ptr [rbp-0x68], rax
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rbp-0x60], ymm4
mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0xB8], rsp
+ mov qword ptr [rbp-0xC8], rsp
mov rbx, rcx
; gcrRegs +[rbx]
;; size=56 bbWeight=1 PerfScore 14.58
@@ -153,13 +152,13 @@ G_M59307_IG04: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
cmp dword ptr [r15+0x08], 0
jle G_M59307_IG09
;; size=18 bbWeight=1 PerfScore 6.25
-G_M59307_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M59307_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov ecx, r13d
mov r12, gword ptr [r15+8*rcx+0x10]
; gcrRegs +[r12]
test r12, r12
- je SHORT G_M59307_IG08
- ;; size=13 bbWeight=4 PerfScore 14.00
+ je G_M59307_IG08
+ ;; size=17 bbWeight=4 PerfScore 14.00
G_M59307_IG06: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -181,10 +180,10 @@ G_M59307_IG06: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
mov r12, gword ptr [r12+0x08]
xor eax, eax
mov r10d, dword ptr [r12+0x08]
- mov dword ptr [rbp-0x80], r10d
+ mov dword ptr [rbp-0x8C], r10d
test r10d, r10d
jle SHORT G_M59307_IG08
- ;; size=73 bbWeight=2 PerfScore 31.50
+ ;; size=76 bbWeight=2 PerfScore 31.50
G_M59307_IG07: ; bbWeight=16, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov r11d, dword ptr [rbp-0x78]
mov dword ptr [rsp+0x20], r11d
@@ -201,10 +200,10 @@ G_M59307_IG07: ; bbWeight=16, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs
; gcr arg pop 0
mov eax, dword ptr [rbp-0x7C]
inc eax
- mov ecx, dword ptr [rbp-0x80]
+ mov ecx, dword ptr [rbp-0x8C]
cmp ecx, eax
jg SHORT G_M59307_IG07
- ;; size=48 bbWeight=16 PerfScore 260.00
+ ;; size=51 bbWeight=16 PerfScore 260.00
G_M59307_IG08: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r12]
mov rcx, 0xD1FFAB1E
@@ -235,10 +234,10 @@ G_M59307_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rcx rbx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x90], rax
+ mov gword ptr [rbp-0xA0], rax
; GC ptr vars +{V06}
;; size=59 bbWeight=0.50 PerfScore 6.00
-G_M59307_IG11: ; bbWeight=0.50, gcVars=00000000000000000000002000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M59307_IG11: ; bbWeight=0.50, gcVars=0000001000000000 {V06}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
jmp SHORT G_M59307_IG13
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M59307_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
@@ -246,7 +245,7 @@ G_M59307_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x90]
+ mov rcx, gword ptr [rbp-0xA0]
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
@@ -264,7 +263,7 @@ G_M59307_IG12: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [System.Array:Clear(System.Array)]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x90]
+ mov rax, gword ptr [rbp-0xA0]
; gcrRegs +[rax]
;; size=74 bbWeight=2 PerfScore 25.00
G_M59307_IG13: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
@@ -274,7 +273,7 @@ G_M59307_IG13: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rcx]
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x90]
+ mov rcx, gword ptr [rbp-0xA0]
; gcrRegs +[rcx]
mov rbx, rcx
; gcrRegs +[rbx]
@@ -293,7 +292,7 @@ G_M59307_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x90]
+ mov rcx, gword ptr [rbp-0xA0]
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; GC ptr vars -{V06}
@@ -327,15 +326,15 @@ G_M59307_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
call [r11]<unknown method>
...
@@ -3,48 +3,48 @@
; Tier-0 switched to FullOpts code
; optimized code
; rsp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 3, 3 ) byref -> rcx this single-def
-; V01 arg1 [V01,T03] ( 3, 6 ) byref -> rdx single-def
+; V00 this [V00,T03] ( 3, 3 ) byref -> rcx this single-def
+; V01 arg1 [V01,T01] ( 3, 6 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> rbp
+; V03 loc1 [V03,T04] ( 9, 4.75) int -> rbp
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rsp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T06] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T13] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T12] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T20] ( 2, 1 ) int -> rcx
-; V14 tmp9 [V14,T07] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T14] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T08] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T15] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T16] ( 2, 2 ) int -> rdx "impAppendStmt"
+; V13 tmp8 [V13,T19] ( 2, 1 ) int -> rcx
+; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T13] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T14] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T15] ( 2, 2 ) int -> rdx "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T21] ( 2, 1 ) int -> rcx
+; V23 tmp18 [V23,T20] ( 2, 1 ) int -> rcx
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [rsp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op ptr "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T10] ( 3, 2.50) int -> rdx "Inline stloc first use temp"
+; V25 tmp20 [V25,T09] ( 3, 2.50) int -> rdx "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> rbx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T22] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> rbx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T21] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T11] ( 2, 2 ) byref -> rbx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T23] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> rbx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T22] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,14 +53,13 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T17] ( 2, 2 ) int -> rax "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T18] ( 2, 2 ) int -> rcx "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T09] ( 3, 3 ) long -> rdx "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T16] ( 2, 2 ) int -> rax "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T17] ( 2, 2 ) int -> rcx "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T08] ( 3, 3 ) long -> rdx "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [rsp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 tmp44 [V49,T04] ( 11, 6 ) byref -> rdi single-def "shadowVar"
-; V50 tmp45 [V50,T12] ( 2, 2 ) byref -> rdx single-def "shadowVar"
-; V51 cse0 [V51,T19] ( 3, 1.50) int -> rdx "CSE - moderate"
-; V52 cse1 [V52,T00] ( 4, 14 ) int -> rax "CSE - aggressive"
+; V49 tmp44 [V49,T02] ( 11, 6 ) byref -> rdi single-def "shadowVar"
+; V50 tmp45 [V50,T11] ( 2, 2 ) byref -> rdx single-def "shadowVar"
+; V51 cse0 [V51,T18] ( 3, 1.50) int -> rdx "CSE - moderate"
;
; Lcl frame size = 72
@@ -107,29 +106,46 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi},
mov ebp, 3
jmp SHORT G_M46478_IG06
;; size=35 bbWeight=1 PerfScore 9.75
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
- mov ebp, eax
- test ebp, ebp
- jle SHORT G_M46478_IG07
- ;; size=6 bbWeight=2 PerfScore 3.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
- lea eax, [rbp-0x01]
- cmp eax, 4
- jae G_M46478_IG20
- mov ecx, eax
- cmp dword ptr [rbx+4*rcx], 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ mov ebp, 2
+ jmp SHORT G_M46478_IG09
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp dword ptr [rbx+0x08], 0
je SHORT G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ mov ebp, 1
+ jmp SHORT G_M46478_IG12
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp dword ptr [rbx+0x04], 0
+ je SHORT G_M46478_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ xor ebp, ebp
+ jmp SHORT G_M46478_IG13
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp dword ptr [rbx], 0
+ je SHORT G_M46478_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
test ebp, ebp
- jne SHORT G_M46478_IG12
+ jne SHORT G_M46478_IG18
;; size=4 bbWeight=1 PerfScore 1.25
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
; byrRegs -[rbx]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M46478_IG21
+ je G_M46478_IG27
;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
mov rax, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
mov rsi, gword ptr [rax]
; gcrRegs +[rsi]
@@ -140,15 +156,15 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi},
movsq
mov rcx, 0xD1FFAB1E
cmp qword ptr [rsp+0x40], rcx
- je SHORT G_M46478_IG10
+ je SHORT G_M46478_IG16
call CORINFO_HELP_FAIL_FAST
; byrRegs -[rsi rdi]
; gcr arg pop 0
;; size=46 bbWeight=0.50 PerfScore 4.38
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -156,13 +172,13 @@ G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
+G_M46478_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
; byrRegs +[rbx rdi]
cmp ebp, 1
- jne SHORT G_M46478_IG15
+ jne SHORT G_M46478_IG21
mov edx, dword ptr [rbx]
test edx, edx
- jle SHORT G_M46478_IG15
+ jle SHORT G_M46478_IG21
mov dword ptr [rdi+0x08], edx
mov edx, dword ptr [rdi+0x08]
mov ecx, -1
@@ -176,16 +192,16 @@ G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov gword ptr [rdi], rdx
mov rcx, 0xD1FFAB1E
cmp qword ptr [rsp+0x40], rcx
- je SHORT G_M46478_IG13
+ je SHORT G_M46478_IG19
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[rdx]
; byrRegs -[rbx rdi]
; gcr arg pop 0
;; size=70 bbWeight=0.50 PerfScore 9.88
-G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -193,7 +209,7 @@ G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
; byrRegs +[rbx rdi]
movsxd rdx, ebp
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -211,28 +227,28 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rcx]
mov edx, dword ptr [rbx]
cmp dword ptr [rcx+0x08], 0
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rcx+0x10], edx
cmp ebp, 1
- jle SHORT G_M46478_IG16
+ jle SHORT G_M46478_IG22
mov rcx, gword ptr [rdi]
mov edx, dword ptr [rbx+0x04]
cmp dword ptr [rcx+0x08], 1
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rcx+0x14], edx
;; size=63 bbWeight=0.50 PerfScore 11.12
-G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M46478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; gcrRegs -[rcx]
cmp ebp, 2
- jle SHORT G_M46478_IG17
+ jle SHORT G_M46478_IG23
mov rcx, gword ptr [rdi]
; gcrRegs +[rcx]
mov edx, dword ptr [rbx+0x08]
cmp dword ptr [rcx+0x08], 2
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rcx+0x18], edx
;; size=20 bbWeight=0.50 PerfScore 5.12
-G_M46478_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M46478_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
...
@@ -12,14 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T29] ( 8, 7 ) ubyte -> [rbp+0x20] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 11,116 ) ref -> r15 class-hnd <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 68 ) ref -> r15 class-hnd <<unknown class>>
; V05 loc2 [V05,T27] ( 3, 12 ) int -> rdx
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> registers class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> registers class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T14] ( 5, 35 ) int -> [rbp-0x3C] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T37] ( 2, 5 ) ref -> rbx class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T04] ( 16, 74 ) ref -> [rbp-0x68] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T03] ( 16, 74 ) ref -> [rbp-0x68] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 6, 6 ) ubyte -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T25] ( 4, 13 ) int -> rbx
;* V14 loc11 [V14,T46] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
@@ -60,7 +60,7 @@
; V49 tmp29 [V49,T31] ( 6, 6 ) ref -> rbx class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V50 tmp30 [V50,T30] ( 5, 5 ) long -> rbx single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V51 tmp31 [V51,T15] ( 5, 35 ) int -> [rbp-0x5C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V52 tmp32 [V52,T05] ( 13, 71 ) int -> rdx "field V09._ref (fldOffset=0x0)" P-INDEP
+; V52 tmp32 [V52,T04] ( 13, 71 ) int -> rdx "field V09._ref (fldOffset=0x0)" P-INDEP
; V53 tmp33 [V53,T19] ( 4, 24 ) int -> rsi "field V10._ref (fldOffset=0x0)" P-INDEP
;* V54 tmp34 [V54,T49] ( 0, 0 ) int -> zero-ref single-def "field V21._ref (fldOffset=0x0)" P-INDEP
;* V55 tmp35 [V55,T24] ( 0, 0 ) int -> zero-ref "field V22._ref (fldOffset=0x0)" P-INDEP
@@ -78,9 +78,9 @@
; V67 tmp47 [V67,T09] ( 3, 48 ) ref -> rcx "arr expr"
; V68 tmp48 [V68,T10] ( 3, 48 ) ref -> rcx "arr expr"
; V69 PSPSym [V69,T50] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
-; V70 cse0 [V70,T23] ( 4, 16 ) byref -> rdx "CSE - moderate"
-; V71 cse1 [V71,T11] ( 3, 48 ) long -> rcx "CSE - aggressive"
-; V72 cse2 [V72,T02] ( 5,112 ) long -> r8 "CSE - aggressive"
+; V70 cse0 [V70,T11] ( 3, 48 ) long -> rcx "CSE - aggressive"
+; V71 cse1 [V71,T01] ( 5,112 ) byref -> r8 "CSE - aggressive"
+; V72 cse2 [V72,T23] ( 4, 16 ) byref -> rdx "CSE - moderate"
; V73 cse3 [V73,T22] ( 4, 19 ) long -> rsi "CSE - moderate"
; V74 cse4 [V74,T44] ( 3, 3 ) ref -> rdx "CSE - moderate"
; V75 cse5 [V75,T45] ( 3, 3 ) ref -> rcx "CSE - moderate"
@@ -197,7 +197,7 @@ G_M744_IG10: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
xor edx, edx
mov dword ptr [rbp-0x48], edx
;; size=12 bbWeight=1 PerfScore 2.50
-G_M744_IG11: ; bbWeight=1, gcVars=0000000000040010 {V00 V11}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG11: ; bbWeight=1, gcVars=0000000000040008 {V00 V11}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx]
; GC ptr vars -{V18}
cmp byte ptr [rbp-0x48], 0
@@ -214,9 +214,9 @@ G_M744_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M744_IG14: ; bbWeight=1, gcVars=0000000000040010 {V00 V11}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG14: ; bbWeight=1, gcVars=0000000000040008 {V00 V11}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rdi]
- ; GC ptr vars +{V04 V11}
+ ; GC ptr vars +{V11}
lea rdx, [rbp-0x48]
mov rcx, rdi
; gcrRegs +[rcx]
@@ -306,15 +306,17 @@ G_M744_IG19: ; bbWeight=4, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, b
;; size=42 bbWeight=4 PerfScore 30.00
G_M744_IG20: ; bbWeight=32, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x4C], eax
- mov r8d, eax
- shl r8, 4
- mov rdx, gword ptr [r15+r8+0x18]
+ mov edx, eax
+ shl rdx, 4
+ lea r8, bword ptr [r15+rdx+0x10]
+ ; byrRegs +[r8]
+ mov rdx, gword ptr [r8+0x08]
; gcrRegs +[rdx]
test rdx, rdx
je SHORT G_M744_IG24
- ;; size=20 bbWeight=32 PerfScore 160.00
-G_M744_IG21: ; bbWeight=16, gcrefRegs=8084 {rdx rdi r15}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [r15+r8+0x10]
+ ;; size=23 bbWeight=32 PerfScore 192.00
+G_M744_IG21: ; bbWeight=16, gcrefRegs=8084 {rdx rdi r15}, byrefRegs=0100 {r8}, byref, isz
+ mov rcx, qword ptr [r8]
mov r10, rcx
mov r9, 0xD1FFAB1E
and r10, r9
@@ -326,17 +328,19 @@ G_M744_IG21: ; bbWeight=16, gcrefRegs=8084 {rdx rdi r15}, byrefRegs=0000
; gcrRegs +[rcx]
call [System.Runtime.Caching.ExpiresBucket:AddCount(System.DateTime):this]
; gcrRegs -[rcx]
+ ; byrRegs -[r8]
; gcr arg pop 0
jmp SHORT G_M744_IG23
- ;; size=40 bbWeight=16 PerfScore 152.00
-G_M744_IG22: ; bbWeight=16, gcrefRegs=8084 {rdx rdi r15}, byrefRegs=0000 {}, byref
+ ;; size=38 bbWeight=16 PerfScore 152.00
+G_M744_IG22: ; bbWeight=16, gcrefRegs=8084 {rdx rdi r15}, byrefRegs=0100 {r8}, byref
; gcrRegs +[rdx]
+ ; byrRegs +[r8]
mov byte ptr [rdx+0x30], 255
xor ecx, ecx
mov dword ptr [rdx+0x50], ecx
- mov dword ptr [r15+r8+0x14], 1
+ mov dword ptr [r8+0x04], 1
mov ecx, dword ptr [rbp-0x5C]
- mov dword ptr [r15+r8+0x10], ecx
+ mov dword ptr [r8], ecx
mov ecx, r14d
shl ecx, 8
mov eax, dword ptr [rbp-0x4C]
@@ -349,8 +353,9 @@ G_M744_IG22: ; bbWeight=16, gcrefRegs=8084 {rdx rdi r15}, byrefRegs=0000
mov dword ptr [rbp-0x3C], ecx
inc dword ptr [rdi+0x28]
mov dword ptr [rbp-0x4C], eax
- ;; size=57 bbWeight=16 PerfScore 236.00
+ ;; size=54 bbWeight=16 PerfScore 236.00
G_M744_IG23: ; bbWeight=16, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r8]
dec r12d
je SHORT G_M744_IG25
;; size=5 bbWeight=16 PerfScore 20.00
@@ -380,7 +385,7 @@ G_M744_IG27: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
;; size=10 bbWeight=1 PerfScore 4.00
G_M744_IG28: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi]
- ; GC ptr vars -{V04 V11}
+ ; GC ptr vars -{V11}
cmp byte ptr [rbp-0x48], 0
je SHORT G_M744_IG32
mov rcx, gword ptr [rbp+0x10]
@@ -802,7 +807,7 @@ G_M744_IG68: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1396, prolog size 49, PerfScore 1418.75, instruction count 436, allocated bytes for code 1396 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1394, prolog size 49, PerfScore 1450.75, instruction count 437, allocated bytes for code 1394 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -3,48 +3,48 @@
; FullOpts code
; optimized code
; rsp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 3, 3 ) byref -> rcx this single-def
-; V01 arg1 [V01,T03] ( 3, 6 ) byref -> rdx single-def
+; V00 this [V00,T03] ( 3, 3 ) byref -> rcx this single-def
+; V01 arg1 [V01,T01] ( 3, 6 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T02] ( 9, 12 ) int -> rbp
+; V03 loc1 [V03,T04] ( 9, 4.75) int -> rbp
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[int]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rsp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T06] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T13] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T12] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V13 tmp8 [V13,T20] ( 2, 1 ) int -> rcx
-; V14 tmp9 [V14,T07] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T14] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T08] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T15] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T16] ( 2, 2 ) int -> rdx "impAppendStmt"
+; V13 tmp8 [V13,T19] ( 2, 1 ) int -> rcx
+; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T13] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> rcx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T14] ( 2, 2 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T15] ( 2, 2 ) int -> rdx "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref ptr
-; V23 tmp18 [V23,T21] ( 2, 1 ) int -> rcx
+; V23 tmp18 [V23,T20] ( 2, 1 ) int -> rcx
; V24 tmp19 [V24 ] ( 6, 11 ) struct (16) [rsp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op ptr "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T10] ( 3, 2.50) int -> rdx "Inline stloc first use temp"
+; V25 tmp20 [V25,T09] ( 3, 2.50) int -> rdx "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V31 tmp26 [V31,T01] ( 12, 12 ) byref -> rbx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T22] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> rbx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T21] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V35 tmp30 [V35,T11] ( 2, 2 ) byref -> rbx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T23] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
+; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> rbx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T22] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x8)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V08._flags (fldOffset=0x0)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V08._hi32 (fldOffset=0x4)" P-INDEP
;* V39 tmp34 [V39 ] ( 0, 0 ) long -> zero-ref "field V08._lo64 (fldOffset=0x8)" P-INDEP
@@ -53,14 +53,13 @@
; V42 tmp37 [V42 ] ( 3, 4 ) long -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V24._lo64 (fldOffset=0x8)" P-DEP
;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V26._reference (fldOffset=0x0)" P-INDEP
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ptr "field V26._length (fldOffset=0x8)" P-INDEP
-; V45 tmp40 [V45,T17] ( 2, 2 ) int -> rax "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T18] ( 2, 2 ) int -> rcx "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T09] ( 3, 3 ) long -> rdx "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T16] ( 2, 2 ) int -> rax "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T17] ( 2, 2 ) int -> rcx "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T08] ( 3, 3 ) long -> rdx "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) long -> [rsp+0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 tmp44 [V49,T04] ( 11, 6 ) byref -> rdi single-def "shadowVar"
-; V50 tmp45 [V50,T12] ( 2, 2 ) byref -> rdx single-def "shadowVar"
-; V51 cse0 [V51,T19] ( 3, 1.50) int -> rdx "CSE - moderate"
-; V52 cse1 [V52,T00] ( 4, 14 ) int -> rax "CSE - aggressive"
+; V49 tmp44 [V49,T02] ( 11, 6 ) byref -> rdi single-def "shadowVar"
+; V50 tmp45 [V50,T11] ( 2, 2 ) byref -> rdx single-def "shadowVar"
+; V51 cse0 [V51,T18] ( 3, 1.50) int -> rdx "CSE - moderate"
;
; Lcl frame size = 72
@@ -107,29 +106,46 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi},
mov ebp, 3
jmp SHORT G_M46478_IG06
;; size=35 bbWeight=1 PerfScore 9.75
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
- mov ebp, eax
- test ebp, ebp
- jle SHORT G_M46478_IG07
- ;; size=6 bbWeight=2 PerfScore 3.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
- lea eax, [rbp-0x01]
- cmp eax, 4
- jae G_M46478_IG20
- mov ecx, eax
- cmp dword ptr [rbx+4*rcx], 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ mov ebp, 2
+ jmp SHORT G_M46478_IG09
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp dword ptr [rbx+0x08], 0
je SHORT G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ mov ebp, 1
+ jmp SHORT G_M46478_IG12
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp dword ptr [rbx+0x04], 0
+ je SHORT G_M46478_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ xor ebp, ebp
+ jmp SHORT G_M46478_IG13
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+ cmp dword ptr [rbx], 0
+ je SHORT G_M46478_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
test ebp, ebp
- jne SHORT G_M46478_IG12
+ jne SHORT G_M46478_IG18
;; size=4 bbWeight=1 PerfScore 1.25
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
; byrRegs -[rbx]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M46478_IG21
+ je G_M46478_IG27
;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
mov rax, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
mov rsi, gword ptr [rax]
; gcrRegs +[rsi]
@@ -140,15 +156,15 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi},
movsq
mov rcx, 0xD1FFAB1E
cmp qword ptr [rsp+0x40], rcx
- je SHORT G_M46478_IG10
+ je SHORT G_M46478_IG16
call CORINFO_HELP_FAIL_FAST
; byrRegs -[rsi rdi]
; gcr arg pop 0
;; size=46 bbWeight=0.50 PerfScore 4.38
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -156,13 +172,13 @@ G_M46478_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
+G_M46478_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
; byrRegs +[rbx rdi]
cmp ebp, 1
- jne SHORT G_M46478_IG15
+ jne SHORT G_M46478_IG21
mov edx, dword ptr [rbx]
test edx, edx
- jle SHORT G_M46478_IG15
+ jle SHORT G_M46478_IG21
mov dword ptr [rdi+0x08], edx
mov edx, dword ptr [rdi+0x08]
mov ecx, -1
@@ -176,16 +192,16 @@ G_M46478_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov gword ptr [rdi], rdx
mov rcx, 0xD1FFAB1E
cmp qword ptr [rsp+0x40], rcx
- je SHORT G_M46478_IG13
+ je SHORT G_M46478_IG19
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[rdx]
; byrRegs -[rbx rdi]
; gcr arg pop 0
;; size=70 bbWeight=0.50 PerfScore 9.88
-G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
-G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M46478_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -193,7 +209,7 @@ G_M46478_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, gcvars, byref, isz
; byrRegs +[rbx rdi]
movsxd rdx, ebp
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -211,28 +227,28 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rcx]
mov edx, dword ptr [rbx]
cmp dword ptr [rcx+0x08], 0
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rcx+0x10], edx
cmp ebp, 1
- jle SHORT G_M46478_IG16
+ jle SHORT G_M46478_IG22
mov rcx, gword ptr [rdi]
mov edx, dword ptr [rbx+0x04]
cmp dword ptr [rcx+0x08], 1
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rcx+0x14], edx
;; size=63 bbWeight=0.50 PerfScore 11.12
-G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M46478_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
; gcrRegs -[rcx]
cmp ebp, 2
- jle SHORT G_M46478_IG17
+ jle SHORT G_M46478_IG23
mov rcx, gword ptr [rdi]
; gcrRegs +[rcx]
mov edx, dword ptr [rbx+0x08]
cmp dword ptr [rcx+0x08], 2
- jbe SHORT G_M46478_IG20
+ jbe SHORT G_M46478_IG26
mov dword ptr [rcx+0x18], edx
;; size=20 bbWeight=0.50 PerfScore 5.12
-G_M46478_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M46478_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0088 {rbx rdi}, byref, isz
...
@@ -10,11 +10,11 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T27] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> rsi class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T04] ( 20,127 ) ref -> rsi class-hnd exact single-def <System.String>
; V03 arg3 [V03,T38] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T52] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rsp+0xC4]
+; V05 loc1 [V05,T00] ( 72,463 ) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rsp+0xC4]
; V07 loc3 [V07,T06] ( 12,102 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rsp+0xBC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -136,7 +136,7 @@
; V125 tmp104 [V125,T35] ( 3, 12 ) ref -> rcx "argument with side effect"
;* V126 tmp105 [V126,T65] ( 0, 0 ) byref -> zero-ref single-def "argument with side effect"
; V127 cse0 [V127,T37] ( 3, 12 ) int -> rax "CSE - conservative"
-; V128 cse1 [V128,T03] ( 18,142 ) int -> r12 "CSE - aggressive"
+; V128 cse1 [V128,T03] ( 20,142 ) int -> r12 "CSE - aggressive"
; V129 cse2 [V129,T05] ( 7,108 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 200
@@ -169,7 +169,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0208 {rb
; byrRegs +[rbp]
mov r14d, dword ptr [r9+0x08]
test rsi, rsi
- je G_M36935_IG74
+ je G_M36935_IG79
test rdi, rdi
jne SHORT G_M36935_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -237,7 +237,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcrRegs -[rax]
mov r12d, dword ptr [rsi+0x08]
cmp r12d, r13d
- jbe G_M36935_IG70
+ jbe G_M36935_IG75
;; size=13 bbWeight=8 PerfScore 26.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
mov ecx, r13d
@@ -280,9 +280,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
mov dword ptr [rsp+0xA8], eax
test eax, eax
- jl G_M36935_IG71
+ jl G_M36935_IG76
cmp eax, dword ptr [rsp+0x98]
- ja G_M36935_IG81
+ ja G_M36935_IG86
mov rcx, bword ptr [rsp+0x30]
; byrRegs +[rcx]
mov edx, eax
@@ -296,12 +296,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
add r13d, dword ptr [rsp+0xA8]
cmp r13d, r12d
- jae G_M36935_IG73
+ jae G_M36935_IG78
mov ecx, r13d
movzx rax, word ptr [rsi+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG77
+ jbe G_M36935_IG82
mov ecx, r13d
movzx r8, word ptr [rsi+2*rcx+0x0C]
cmp eax, r8d
@@ -335,7 +335,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=8 bbWeight=4 PerfScore 9.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 123
- jne G_M36935_IG75
+ jne G_M36935_IG80
xor eax, eax
mov dword ptr [rsp+0xC0], eax
xor r10d, r10d
@@ -348,7 +348,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0x9C], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M36935_IG73
+ jae G_M36935_IG78
lea ecx, [r13-0x01]
cmp word ptr [rsi+2*rcx+0x0C], 123
je SHORT G_M36935_IG19
@@ -383,15 +383,15 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov r8d, dword ptr [rsp+0xC4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M36935_IG76
+ jae G_M36935_IG81
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG77
+ jbe G_M36935_IG82
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
mov ecx, r8d
cmp ecx, 125
- je G_M36935_IG40
+ je G_M36935_IG45
;; size=54 bbWeight=4 PerfScore 32.00
G_M36935_IG22: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
jmp SHORT G_M36935_IG24
@@ -402,7 +402,7 @@ G_M36935_IG23: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0xB8], edx
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG77
+ jbe G_M36935_IG82
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
mov edx, dword ptr [rsp+0xB8]
@@ -416,110 +416,139 @@ G_M36935_IG24: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
;; size=18 bbWeight=16 PerfScore 48.00
G_M36935_IG25: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp ecx, 32
- jne SHORT G_M36935_IG27
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG26: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jne SHORT G_M36935_IG29
+ test r13d, r13d
+ jl SHORT G_M36935_IG28
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M36935_IG26: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG77
+ jbe G_M36935_IG82
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M36935_IG26
- ;; size=25 bbWeight=16 PerfScore 80.00
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
- cmp ecx, 44
- mov eax, dword ptr [rsp+0xC0]
- jne G_M36935_IG35
- ;; size=16 bbWeight=2 PerfScore 4.50
-G_M36935_IG28: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG29
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG28: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG77
+ jbe G_M36935_IG82
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M36935_IG28
+ ;; size=25 bbWeight=0.16 PerfScore 0.80
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ cmp ecx, 44
+ jne G_M36935_IG41
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M36935_IG30: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG82
+ mov ecx, r13d
+ movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ cmp ecx, 32
+ je SHORT G_M36935_IG30
;; size=25 bbWeight=16 PerfScore 80.00
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG31: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp ecx, 45
- jne SHORT G_M36935_IG30
+ jne SHORT G_M36935_IG32
mov dword ptr [rsp+0xBC], 1
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG77
+ jbe G_M36935_IG82
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
;; size=36 bbWeight=2 PerfScore 12.00
-G_M36935_IG30: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG32: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea eax, [rcx-0x30]
cmp eax, 10
- jae G_M36935_IG76
+ jae G_M36935_IG81
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG77
- jmp SHORT G_M36935_IG32
+ jbe G_M36935_IG82
+ jmp SHORT G_M36935_IG34
;; size=26 bbWeight=2 PerfScore 10.50
-G_M36935_IG31: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+G_M36935_IG33: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
lea eax, [rax+4*rax]
lea eax, [rcx+2*rax-0x30]
mov dword ptr [rsp+0xC0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xC0]
- jbe G_M36935_IG77
+ jbe G_M36935_IG82
;; size=33 bbWeight=8 PerfScore 40.00
-G_M36935_IG32: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
- jae G_M36935_IG73
+ jae G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
lea r8d, [rcx-0x30]
cmp r8d, 9
- ja SHORT G_M36935_IG33
+ ja SHORT G_M36935_IG35
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG31
+ jl SHORT G_M36935_IG33
;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG33: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 32
- jne SHORT G_M36935_IG35
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- inc r13d
- cmp r12d, r13d
- jbe G_M36935_IG77
- mov ecx, r13d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- cmp ecx, 32
- je SHORT G_M36935_IG34
- ;; size=25 bbWeight=16 PerfScore 80.00
G_M36935_IG35: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp ecx, 32
+ jne SHORT G_M36935_IG38
+ test r13d, r13d
+ jl SHORT G_M36935_IG39
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M36935_IG36: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG82
+ mov ecx, r13d
+ movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ cmp ecx, 32
+ je SHORT G_M36935_IG36
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG37: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
...
@@ -9,11 +9,11 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T27] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> rsi class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T04] ( 20,127 ) ref -> rsi class-hnd exact single-def <System.String>
; V03 arg3 [V03,T37] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T51] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rsp+0xC4]
+; V05 loc1 [V05,T00] ( 72,463 ) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rsp+0xC4]
; V07 loc3 [V07,T06] ( 12,102 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rsp+0xBC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -134,7 +134,7 @@
; V124 tmp103 [V124,T26] ( 2, 16 ) ref -> rcx "argument with side effect"
;* V125 tmp104 [V125,T64] ( 0, 0 ) byref -> zero-ref single-def "argument with side effect"
; V126 cse0 [V126,T36] ( 3, 12 ) int -> rax "CSE - conservative"
-; V127 cse1 [V127,T03] ( 18,142 ) int -> r12 "CSE - aggressive"
+; V127 cse1 [V127,T03] ( 20,142 ) int -> r12 "CSE - aggressive"
; V128 cse2 [V128,T05] ( 7,108 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 200
@@ -167,7 +167,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0208 {rb
; byrRegs +[rbp]
mov r14d, dword ptr [r9+0x08]
test rsi, rsi
- je G_M36935_IG70
+ je G_M36935_IG75
test rdi, rdi
jne SHORT G_M36935_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -235,7 +235,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcrRegs -[rax]
mov r12d, dword ptr [rsi+0x08]
cmp r12d, r13d
- jbe G_M36935_IG66
+ jbe G_M36935_IG71
;; size=13 bbWeight=8 PerfScore 26.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
mov ecx, r13d
@@ -278,9 +278,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
mov dword ptr [rsp+0xA8], eax
test eax, eax
- jl G_M36935_IG67
+ jl G_M36935_IG72
cmp eax, dword ptr [rsp+0x98]
- ja G_M36935_IG77
+ ja G_M36935_IG82
mov rcx, bword ptr [rsp+0x30]
; byrRegs +[rcx]
mov edx, eax
@@ -294,12 +294,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
add r13d, dword ptr [rsp+0xA8]
cmp r13d, r12d
- jae G_M36935_IG69
+ jae G_M36935_IG74
mov ecx, r13d
movzx rax, word ptr [rsi+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx r8, word ptr [rsi+2*rcx+0x0C]
cmp eax, r8d
@@ -333,7 +333,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=8 bbWeight=4 PerfScore 9.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 123
- jne G_M36935_IG71
+ jne G_M36935_IG76
xor eax, eax
mov dword ptr [rsp+0xC0], eax
xor r10d, r10d
@@ -346,7 +346,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0x9C], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M36935_IG69
+ jae G_M36935_IG74
lea ecx, [r13-0x01]
cmp word ptr [rsi+2*rcx+0x0C], 123
je SHORT G_M36935_IG19
@@ -381,15 +381,15 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov r8d, dword ptr [rsp+0xC4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M36935_IG72
+ jae G_M36935_IG77
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
mov ecx, r8d
cmp ecx, 125
- je G_M36935_IG40
+ je G_M36935_IG45
;; size=54 bbWeight=4 PerfScore 32.00
G_M36935_IG22: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
jmp SHORT G_M36935_IG24
@@ -400,7 +400,7 @@ G_M36935_IG23: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0xB8], edx
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
mov edx, dword ptr [rsp+0xB8]
@@ -414,110 +414,139 @@ G_M36935_IG24: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
;; size=18 bbWeight=16 PerfScore 48.00
G_M36935_IG25: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp ecx, 32
- jne SHORT G_M36935_IG27
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG26: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jne SHORT G_M36935_IG29
+ test r13d, r13d
+ jl SHORT G_M36935_IG28
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M36935_IG26: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M36935_IG26
- ;; size=25 bbWeight=16 PerfScore 80.00
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
- cmp ecx, 44
- mov eax, dword ptr [rsp+0xC0]
- jne G_M36935_IG35
- ;; size=16 bbWeight=2 PerfScore 4.50
-G_M36935_IG28: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG29
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG28: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M36935_IG28
+ ;; size=25 bbWeight=0.16 PerfScore 0.80
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ cmp ecx, 44
+ jne G_M36935_IG41
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M36935_IG30: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG78
+ mov ecx, r13d
+ movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ cmp ecx, 32
+ je SHORT G_M36935_IG30
;; size=25 bbWeight=16 PerfScore 80.00
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG31: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp ecx, 45
- jne SHORT G_M36935_IG30
+ jne SHORT G_M36935_IG32
mov dword ptr [rsp+0xBC], 1
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
;; size=36 bbWeight=2 PerfScore 12.00
-G_M36935_IG30: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG32: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea eax, [rcx-0x30]
cmp eax, 10
- jae G_M36935_IG72
+ jae G_M36935_IG77
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
- jmp SHORT G_M36935_IG32
+ jbe G_M36935_IG78
+ jmp SHORT G_M36935_IG34
;; size=26 bbWeight=2 PerfScore 10.50
-G_M36935_IG31: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+G_M36935_IG33: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
lea eax, [rax+4*rax]
lea eax, [rcx+2*rax-0x30]
mov dword ptr [rsp+0xC0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xC0]
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
;; size=33 bbWeight=8 PerfScore 40.00
-G_M36935_IG32: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
- jae G_M36935_IG69
+ jae G_M36935_IG74
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
lea r8d, [rcx-0x30]
cmp r8d, 9
- ja SHORT G_M36935_IG33
+ ja SHORT G_M36935_IG35
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG31
+ jl SHORT G_M36935_IG33
;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG33: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 32
- jne SHORT G_M36935_IG35
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- inc r13d
- cmp r12d, r13d
- jbe G_M36935_IG73
- mov ecx, r13d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- cmp ecx, 32
- je SHORT G_M36935_IG34
- ;; size=25 bbWeight=16 PerfScore 80.00
G_M36935_IG35: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp ecx, 32
+ jne SHORT G_M36935_IG38
+ test r13d, r13d
+ jl SHORT G_M36935_IG39
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M36935_IG36: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG78
+ mov ecx, r13d
+ movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ cmp ecx, 32
+ je SHORT G_M36935_IG36
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG37: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
...
@@ -9,11 +9,11 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T27] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> rsi class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T04] ( 20,127 ) ref -> rsi class-hnd exact single-def <System.String>
; V03 arg3 [V03,T37] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T51] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rsp+0xC4]
+; V05 loc1 [V05,T00] ( 72,463 ) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rsp+0xC4]
; V07 loc3 [V07,T06] ( 12,102 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rsp+0xBC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -134,7 +134,7 @@
; V124 tmp103 [V124,T26] ( 2, 16 ) ref -> rcx "argument with side effect"
;* V125 tmp104 [V125,T64] ( 0, 0 ) byref -> zero-ref single-def "argument with side effect"
; V126 cse0 [V126,T36] ( 3, 12 ) int -> rax "CSE - conservative"
-; V127 cse1 [V127,T03] ( 18,142 ) int -> r12 "CSE - aggressive"
+; V127 cse1 [V127,T03] ( 20,142 ) int -> r12 "CSE - aggressive"
; V128 cse2 [V128,T05] ( 7,108 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 200
@@ -167,7 +167,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0208 {rb
; byrRegs +[rbp]
mov r14d, dword ptr [r9+0x08]
test rsi, rsi
- je G_M36935_IG70
+ je G_M36935_IG75
test rdi, rdi
jne SHORT G_M36935_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -235,7 +235,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcrRegs -[rax]
mov r12d, dword ptr [rsi+0x08]
cmp r12d, r13d
- jbe G_M36935_IG66
+ jbe G_M36935_IG71
;; size=13 bbWeight=8 PerfScore 26.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
mov ecx, r13d
@@ -278,9 +278,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
mov dword ptr [rsp+0xA8], eax
test eax, eax
- jl G_M36935_IG67
+ jl G_M36935_IG72
cmp eax, dword ptr [rsp+0x98]
- ja G_M36935_IG77
+ ja G_M36935_IG82
mov rcx, bword ptr [rsp+0x30]
; byrRegs +[rcx]
mov edx, eax
@@ -294,12 +294,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
add r13d, dword ptr [rsp+0xA8]
cmp r13d, r12d
- jae G_M36935_IG69
+ jae G_M36935_IG74
mov ecx, r13d
movzx rax, word ptr [rsi+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx r8, word ptr [rsi+2*rcx+0x0C]
cmp eax, r8d
@@ -333,7 +333,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=8 bbWeight=4 PerfScore 9.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 123
- jne G_M36935_IG71
+ jne G_M36935_IG76
xor eax, eax
mov dword ptr [rsp+0xC0], eax
xor r10d, r10d
@@ -346,7 +346,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0x9C], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M36935_IG69
+ jae G_M36935_IG74
lea ecx, [r13-0x01]
cmp word ptr [rsi+2*rcx+0x0C], 123
je SHORT G_M36935_IG19
@@ -381,15 +381,15 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov r8d, dword ptr [rsp+0xC4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M36935_IG72
+ jae G_M36935_IG77
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
mov ecx, r8d
cmp ecx, 125
- je G_M36935_IG40
+ je G_M36935_IG45
;; size=54 bbWeight=4 PerfScore 32.00
G_M36935_IG22: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
jmp SHORT G_M36935_IG24
@@ -400,7 +400,7 @@ G_M36935_IG23: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0xB8], edx
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
mov edx, dword ptr [rsp+0xB8]
@@ -414,110 +414,139 @@ G_M36935_IG24: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
;; size=18 bbWeight=16 PerfScore 48.00
G_M36935_IG25: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp ecx, 32
- jne SHORT G_M36935_IG27
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG26: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jne SHORT G_M36935_IG29
+ test r13d, r13d
+ jl SHORT G_M36935_IG28
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M36935_IG26: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M36935_IG26
- ;; size=25 bbWeight=16 PerfScore 80.00
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
- cmp ecx, 44
- mov eax, dword ptr [rsp+0xC0]
- jne G_M36935_IG35
- ;; size=16 bbWeight=2 PerfScore 4.50
-G_M36935_IG28: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG29
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG28: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M36935_IG28
+ ;; size=25 bbWeight=0.16 PerfScore 0.80
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ cmp ecx, 44
+ jne G_M36935_IG41
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M36935_IG30: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG78
+ mov ecx, r13d
+ movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ cmp ecx, 32
+ je SHORT G_M36935_IG30
;; size=25 bbWeight=16 PerfScore 80.00
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG31: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp ecx, 45
- jne SHORT G_M36935_IG30
+ jne SHORT G_M36935_IG32
mov dword ptr [rsp+0xBC], 1
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
;; size=36 bbWeight=2 PerfScore 12.00
-G_M36935_IG30: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG32: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea eax, [rcx-0x30]
cmp eax, 10
- jae G_M36935_IG72
+ jae G_M36935_IG77
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
- jmp SHORT G_M36935_IG32
+ jbe G_M36935_IG78
+ jmp SHORT G_M36935_IG34
;; size=26 bbWeight=2 PerfScore 10.50
-G_M36935_IG31: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+G_M36935_IG33: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
lea eax, [rax+4*rax]
lea eax, [rcx+2*rax-0x30]
mov dword ptr [rsp+0xC0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xC0]
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
;; size=33 bbWeight=8 PerfScore 40.00
-G_M36935_IG32: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
- jae G_M36935_IG69
+ jae G_M36935_IG74
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
lea r8d, [rcx-0x30]
cmp r8d, 9
- ja SHORT G_M36935_IG33
+ ja SHORT G_M36935_IG35
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG31
+ jl SHORT G_M36935_IG33
;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG33: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 32
- jne SHORT G_M36935_IG35
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- inc r13d
- cmp r12d, r13d
- jbe G_M36935_IG73
- mov ecx, r13d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- cmp ecx, 32
- je SHORT G_M36935_IG34
- ;; size=25 bbWeight=16 PerfScore 80.00
G_M36935_IG35: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp ecx, 32
+ jne SHORT G_M36935_IG38
+ test r13d, r13d
+ jl SHORT G_M36935_IG39
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M36935_IG36: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG78
+ mov ecx, r13d
+ movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ cmp ecx, 32
+ je SHORT G_M36935_IG36
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG37: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
...
@@ -9,11 +9,11 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T27] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> rsi class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T04] ( 20,127 ) ref -> rsi class-hnd exact single-def <System.String>
; V03 arg3 [V03,T37] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T51] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rsp+0xC4]
+; V05 loc1 [V05,T00] ( 72,463 ) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rsp+0xC4]
; V07 loc3 [V07,T06] ( 12,102 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rsp+0xBC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -134,7 +134,7 @@
; V124 tmp103 [V124,T26] ( 2, 16 ) ref -> rcx "argument with side effect"
;* V125 tmp104 [V125,T64] ( 0, 0 ) byref -> zero-ref single-def "argument with side effect"
; V126 cse0 [V126,T36] ( 3, 12 ) int -> rax "CSE - conservative"
-; V127 cse1 [V127,T03] ( 18,142 ) int -> r12 "CSE - aggressive"
+; V127 cse1 [V127,T03] ( 20,142 ) int -> r12 "CSE - aggressive"
; V128 cse2 [V128,T05] ( 7,108 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 200
@@ -167,7 +167,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0208 {rb
; byrRegs +[rbp]
mov r14d, dword ptr [r9+0x08]
test rsi, rsi
- je G_M36935_IG70
+ je G_M36935_IG75
test rdi, rdi
jne SHORT G_M36935_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -235,7 +235,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcrRegs -[rax]
mov r12d, dword ptr [rsi+0x08]
cmp r12d, r13d
- jbe G_M36935_IG66
+ jbe G_M36935_IG71
;; size=13 bbWeight=8 PerfScore 26.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
mov ecx, r13d
@@ -278,9 +278,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
mov dword ptr [rsp+0xA8], eax
test eax, eax
- jl G_M36935_IG67
+ jl G_M36935_IG72
cmp eax, dword ptr [rsp+0x98]
- ja G_M36935_IG77
+ ja G_M36935_IG82
mov rcx, bword ptr [rsp+0x30]
; byrRegs +[rcx]
mov edx, eax
@@ -294,12 +294,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
add r13d, dword ptr [rsp+0xA8]
cmp r13d, r12d
- jae G_M36935_IG69
+ jae G_M36935_IG74
mov ecx, r13d
movzx rax, word ptr [rsi+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx r8, word ptr [rsi+2*rcx+0x0C]
cmp eax, r8d
@@ -333,7 +333,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=8 bbWeight=4 PerfScore 9.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 123
- jne G_M36935_IG71
+ jne G_M36935_IG76
xor eax, eax
mov dword ptr [rsp+0xC0], eax
xor r10d, r10d
@@ -346,7 +346,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0x9C], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M36935_IG69
+ jae G_M36935_IG74
lea ecx, [r13-0x01]
cmp word ptr [rsi+2*rcx+0x0C], 123
je SHORT G_M36935_IG19
@@ -381,15 +381,15 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov r8d, dword ptr [rsp+0xC4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M36935_IG72
+ jae G_M36935_IG77
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
mov ecx, r8d
cmp ecx, 125
- je G_M36935_IG40
+ je G_M36935_IG45
;; size=54 bbWeight=4 PerfScore 32.00
G_M36935_IG22: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
jmp SHORT G_M36935_IG24
@@ -400,7 +400,7 @@ G_M36935_IG23: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0xB8], edx
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
mov edx, dword ptr [rsp+0xB8]
@@ -414,110 +414,139 @@ G_M36935_IG24: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
;; size=18 bbWeight=16 PerfScore 48.00
G_M36935_IG25: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp ecx, 32
- jne SHORT G_M36935_IG27
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG26: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jne SHORT G_M36935_IG29
+ test r13d, r13d
+ jl SHORT G_M36935_IG28
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M36935_IG26: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M36935_IG26
- ;; size=25 bbWeight=16 PerfScore 80.00
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
- cmp ecx, 44
- mov eax, dword ptr [rsp+0xC0]
- jne G_M36935_IG35
- ;; size=16 bbWeight=2 PerfScore 4.50
-G_M36935_IG28: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG29
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG28: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M36935_IG28
+ ;; size=25 bbWeight=0.16 PerfScore 0.80
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ cmp ecx, 44
+ jne G_M36935_IG41
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M36935_IG30: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG78
+ mov ecx, r13d
+ movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ cmp ecx, 32
+ je SHORT G_M36935_IG30
;; size=25 bbWeight=16 PerfScore 80.00
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG31: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp ecx, 45
- jne SHORT G_M36935_IG30
+ jne SHORT G_M36935_IG32
mov dword ptr [rsp+0xBC], 1
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
;; size=36 bbWeight=2 PerfScore 12.00
-G_M36935_IG30: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG32: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea eax, [rcx-0x30]
cmp eax, 10
- jae G_M36935_IG72
+ jae G_M36935_IG77
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG73
- jmp SHORT G_M36935_IG32
+ jbe G_M36935_IG78
+ jmp SHORT G_M36935_IG34
;; size=26 bbWeight=2 PerfScore 10.50
-G_M36935_IG31: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+G_M36935_IG33: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
lea eax, [rax+4*rax]
lea eax, [rcx+2*rax-0x30]
mov dword ptr [rsp+0xC0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xC0]
- jbe G_M36935_IG73
+ jbe G_M36935_IG78
;; size=33 bbWeight=8 PerfScore 40.00
-G_M36935_IG32: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
- jae G_M36935_IG69
+ jae G_M36935_IG74
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
lea r8d, [rcx-0x30]
cmp r8d, 9
- ja SHORT G_M36935_IG33
+ ja SHORT G_M36935_IG35
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG31
+ jl SHORT G_M36935_IG33
;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG33: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 32
- jne SHORT G_M36935_IG35
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- inc r13d
- cmp r12d, r13d
- jbe G_M36935_IG73
- mov ecx, r13d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- cmp ecx, 32
- je SHORT G_M36935_IG34
- ;; size=25 bbWeight=16 PerfScore 80.00
G_M36935_IG35: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp ecx, 32
+ jne SHORT G_M36935_IG38
+ test r13d, r13d
+ jl SHORT G_M36935_IG39
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M36935_IG36: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG78
+ mov ecx, r13d
+ movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ cmp ecx, 32
+ je SHORT G_M36935_IG36
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M36935_IG37: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
...
@@ -10,11 +10,11 @@
;
; V00 this [V00,T04] ( 17, 87.50) ref -> rsi this class-hnd exact single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T25] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18,127 ) ref -> rbx class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T03] ( 20,127 ) ref -> rbx class-hnd exact single-def <System.String>
; V03 arg3 [V03,T38] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T50] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 30,260 ) ushort -> [rsp+0xC4]
+; V05 loc1 [V05,T00] ( 71,459 ) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rsp+0xC4]
; V07 loc3 [V07,T05] ( 12, 74 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [rsp+0xBC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -141,7 +141,7 @@
; V130 cse1 [V130,T33] ( 3, 12 ) ref -> rax "CSE - moderate"
; V131 cse2 [V131,T36] ( 3, 12 ) int -> r8 "CSE - moderate"
; V132 cse3 [V132,T34] ( 3, 12 ) ref -> rcx "CSE - moderate"
-; V133 cse4 [V133,T02] ( 18,142 ) int -> r12 "CSE - aggressive"
+; V133 cse4 [V133,T02] ( 20,142 ) int -> r12 "CSE - aggressive"
; V134 cse5 [V134,T06] ( 6, 60 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
; V135 cse6 [V135,T37] ( 3, 12 ) int -> rcx "CSE - moderate"
;
@@ -175,7 +175,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0200
; byrRegs +[rbp]
mov r14d, dword ptr [r9+0x08]
test rbx, rbx
- je G_M4730_IG66
+ je G_M4730_IG71
test rdi, rdi
jne SHORT G_M4730_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -243,7 +243,7 @@ G_M4730_IG10: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcrRegs -[rax]
mov r12d, dword ptr [rbx+0x08]
cmp r12d, r13d
- jbe G_M4730_IG61
+ jbe G_M4730_IG66
;; size=13 bbWeight=8 PerfScore 26.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
mov ecx, r13d
@@ -286,9 +286,9 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
mov dword ptr [rsp+0xA8], eax
test eax, eax
- jl G_M4730_IG63
+ jl G_M4730_IG68
cmp eax, dword ptr [rsp+0x9C]
- ja G_M4730_IG73
+ ja G_M4730_IG78
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, bword ptr [rsp+0x38]
@@ -301,12 +301,12 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
add r13d, dword ptr [rsp+0xA8]
cmp r13d, r12d
- jae G_M4730_IG65
+ jae G_M4730_IG70
mov ecx, r13d
movzx rax, word ptr [rbx+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG69
+ jbe G_M4730_IG74
mov ecx, r13d
movzx r8, word ptr [rbx+2*rcx+0x0C]
cmp eax, r8d
@@ -323,7 +323,7 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
G_M4730_IG14: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax]
cmp eax, 123
- jne G_M4730_IG67
+ jne G_M4730_IG72
xor eax, eax
mov dword ptr [rsp+0xC0], eax
xor r10d, r10d
@@ -336,7 +336,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov dword ptr [rsp+0xA0], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M4730_IG65
+ jae G_M4730_IG70
cmp word ptr [rbx+2*rcx+0x0C], 123
je SHORT G_M4730_IG16
;; size=69 bbWeight=4 PerfScore 48.00
@@ -370,15 +370,15 @@ G_M4730_IG18: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov r8d, dword ptr [rsp+0xC4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M4730_IG68
+ jae G_M4730_IG73
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG69
+ jbe G_M4730_IG74
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
mov ecx, r8d
cmp ecx, 125
- je G_M4730_IG37
+ je G_M4730_IG42
;; size=54 bbWeight=4 PerfScore 32.00
G_M4730_IG19: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
jmp SHORT G_M4730_IG21
@@ -389,7 +389,7 @@ G_M4730_IG20: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov dword ptr [rsp+0xB8], edx
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG69
+ jbe G_M4730_IG74
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
mov edx, dword ptr [rsp+0xB8]
@@ -403,110 +403,139 @@ G_M4730_IG21: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
;; size=18 bbWeight=16 PerfScore 48.00
G_M4730_IG22: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp ecx, 32
- jne SHORT G_M4730_IG24
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M4730_IG23: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jne SHORT G_M4730_IG26
+ test r13d, r13d
+ jl SHORT G_M4730_IG25
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M4730_IG23: ; bbWeight=15.84, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG69
+ jbe G_M4730_IG74
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M4730_IG23
- ;; size=25 bbWeight=16 PerfScore 80.00
-G_M4730_IG24: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
- cmp ecx, 44
- mov eax, dword ptr [rsp+0xC0]
- jne G_M4730_IG32
- ;; size=16 bbWeight=2 PerfScore 4.50
-G_M4730_IG25: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M4730_IG24: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jmp SHORT G_M4730_IG26
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M4730_IG25: ; bbWeight=0.16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG69
+ jbe G_M4730_IG74
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M4730_IG25
+ ;; size=25 bbWeight=0.16 PerfScore 0.80
+G_M4730_IG26: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+ cmp ecx, 44
+ jne G_M4730_IG38
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M4730_IG27: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M4730_IG74
+ mov ecx, r13d
+ movzx rcx, word ptr [rbx+2*rcx+0x0C]
+ cmp ecx, 32
+ je SHORT G_M4730_IG27
;; size=25 bbWeight=16 PerfScore 80.00
-G_M4730_IG26: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG28: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp ecx, 45
- jne SHORT G_M4730_IG27
+ jne SHORT G_M4730_IG29
mov dword ptr [rsp+0xBC], 1
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG69
+ jbe G_M4730_IG74
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
;; size=36 bbWeight=2 PerfScore 12.00
-G_M4730_IG27: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG29: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
lea eax, [rcx-0x30]
cmp eax, 10
- jae G_M4730_IG68
+ jae G_M4730_IG73
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG69
- jmp SHORT G_M4730_IG29
+ jbe G_M4730_IG74
+ jmp SHORT G_M4730_IG31
;; size=26 bbWeight=2 PerfScore 10.50
-G_M4730_IG28: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+G_M4730_IG30: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
lea eax, [rax+4*rax]
lea eax, [rcx+2*rax-0x30]
mov dword ptr [rsp+0xC0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xC0]
- jbe G_M4730_IG69
+ jbe G_M4730_IG74
;; size=33 bbWeight=8 PerfScore 40.00
-G_M4730_IG29: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG31: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp r13d, r12d
- jae G_M4730_IG65
+ jae G_M4730_IG70
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
lea r8d, [rcx-0x30]
cmp r8d, 9
- ja SHORT G_M4730_IG30
+ ja SHORT G_M4730_IG32
cmp eax, 0xD1FFAB1E
- jl SHORT G_M4730_IG28
+ jl SHORT G_M4730_IG30
;; size=34 bbWeight=16 PerfScore 104.00
-G_M4730_IG30: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG32: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp ecx, 32
- jne SHORT G_M4730_IG32
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M4730_IG31: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jne SHORT G_M4730_IG35
+ test r13d, r13d
+ jl SHORT G_M4730_IG36
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M4730_IG33: ; bbWeight=15.84, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG69
+ jbe G_M4730_IG74
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
cmp ecx, 32
- je SHORT G_M4730_IG31
- ;; size=25 bbWeight=16 PerfScore 80.00
-G_M4730_IG32: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ je SHORT G_M4730_IG33
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M4730_IG34: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ mov dword ptr [rsp+0xC0], eax
+ jmp SHORT G_M4730_IG38
+ ;; size=9 bbWeight=2 PerfScore 6.00
+G_M4730_IG35: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ mov dword ptr [rsp+0xC0], eax
...
@@ -9,11 +9,11 @@
;
; V00 this [V00,T04] ( 17, 87.50) ref -> rsi this class-hnd exact single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T25] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18,127 ) ref -> rbx class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T03] ( 20,127 ) ref -> rbx class-hnd exact single-def <System.String>
; V03 arg3 [V03,T37] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T49] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 30,260 ) ushort -> [rsp+0xB4]
+; V05 loc1 [V05,T00] ( 71,459 ) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rsp+0xB4]
; V07 loc3 [V07,T05] ( 12, 74 ) int -> [rsp+0xB0]
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [rsp+0xAC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -139,7 +139,7 @@
; V129 cse1 [V129,T32] ( 3, 12 ) ref -> rdx "CSE - moderate"
; V130 cse2 [V130,T35] ( 3, 12 ) int -> r8 "CSE - moderate"
; V131 cse3 [V131,T33] ( 3, 12 ) ref -> rcx "CSE - moderate"
-; V132 cse4 [V132,T02] ( 18,142 ) int -> r12 "CSE - aggressive"
+; V132 cse4 [V132,T02] ( 20,142 ) int -> r12 "CSE - aggressive"
; V133 cse5 [V133,T06] ( 6, 60 ) int -> [rsp+0x64] spill-single-def "CSE - aggressive"
; V134 cse6 [V134,T36] ( 3, 12 ) int -> rcx "CSE - moderate"
;
@@ -173,7 +173,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0200
; byrRegs +[rbp]
mov r14d, dword ptr [r9+0x08]
test rbx, rbx
- je G_M4730_IG63
+ je G_M4730_IG68
test rdi, rdi
jne SHORT G_M4730_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -241,7 +241,7 @@ G_M4730_IG10: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcrRegs -[rax]
mov r12d, dword ptr [rbx+0x08]
cmp r12d, r13d
- jbe G_M4730_IG58
+ jbe G_M4730_IG63
;; size=13 bbWeight=8 PerfScore 26.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
mov ecx, r13d
@@ -284,9 +284,9 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
mov dword ptr [rsp+0x98], eax
test eax, eax
- jl G_M4730_IG60
+ jl G_M4730_IG65
cmp eax, dword ptr [rsp+0x8C]
- ja G_M4730_IG70
+ ja G_M4730_IG75
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, bword ptr [rsp+0x28]
@@ -299,12 +299,12 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
add r13d, dword ptr [rsp+0x98]
cmp r13d, r12d
- jae G_M4730_IG62
+ jae G_M4730_IG67
mov ecx, r13d
movzx rax, word ptr [rbx+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG66
+ jbe G_M4730_IG71
mov ecx, r13d
movzx r8, word ptr [rbx+2*rcx+0x0C]
cmp eax, r8d
@@ -321,7 +321,7 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
G_M4730_IG14: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax]
cmp eax, 123
- jne G_M4730_IG64
+ jne G_M4730_IG69
xor eax, eax
mov dword ptr [rsp+0xB0], eax
xor r10d, r10d
@@ -334,7 +334,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov dword ptr [rsp+0x90], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M4730_IG62
+ jae G_M4730_IG67
cmp word ptr [rbx+2*rcx+0x0C], 123
je SHORT G_M4730_IG16
;; size=69 bbWeight=4 PerfScore 48.00
@@ -368,15 +368,15 @@ G_M4730_IG18: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov r8d, dword ptr [rsp+0xB4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M4730_IG65
+ jae G_M4730_IG70
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG66
+ jbe G_M4730_IG71
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
mov ecx, r8d
cmp ecx, 125
- je G_M4730_IG37
+ je G_M4730_IG42
;; size=54 bbWeight=4 PerfScore 32.00
G_M4730_IG19: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
jmp SHORT G_M4730_IG21
@@ -387,7 +387,7 @@ G_M4730_IG20: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov dword ptr [rsp+0xA8], edx
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG66
+ jbe G_M4730_IG71
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
mov edx, dword ptr [rsp+0xA8]
@@ -401,110 +401,139 @@ G_M4730_IG21: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
;; size=18 bbWeight=16 PerfScore 48.00
G_M4730_IG22: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp ecx, 32
- jne SHORT G_M4730_IG24
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M4730_IG23: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jne SHORT G_M4730_IG26
+ test r13d, r13d
+ jl SHORT G_M4730_IG25
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M4730_IG23: ; bbWeight=15.84, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG66
+ jbe G_M4730_IG71
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M4730_IG23
- ;; size=25 bbWeight=16 PerfScore 80.00
-G_M4730_IG24: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
- cmp ecx, 44
- mov eax, dword ptr [rsp+0xB0]
- jne G_M4730_IG32
- ;; size=16 bbWeight=2 PerfScore 4.50
-G_M4730_IG25: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M4730_IG24: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jmp SHORT G_M4730_IG26
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M4730_IG25: ; bbWeight=0.16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG66
+ jbe G_M4730_IG71
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
cmp ecx, 32
je SHORT G_M4730_IG25
+ ;; size=25 bbWeight=0.16 PerfScore 0.80
+G_M4730_IG26: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+ cmp ecx, 44
+ jne G_M4730_IG38
+ ;; size=9 bbWeight=2 PerfScore 2.50
+G_M4730_IG27: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M4730_IG71
+ mov ecx, r13d
+ movzx rcx, word ptr [rbx+2*rcx+0x0C]
+ cmp ecx, 32
+ je SHORT G_M4730_IG27
;; size=25 bbWeight=16 PerfScore 80.00
-G_M4730_IG26: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG28: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp ecx, 45
- jne SHORT G_M4730_IG27
+ jne SHORT G_M4730_IG29
mov dword ptr [rsp+0xAC], 1
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG66
+ jbe G_M4730_IG71
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
;; size=36 bbWeight=2 PerfScore 12.00
-G_M4730_IG27: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG29: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
lea eax, [rcx-0x30]
cmp eax, 10
- jae G_M4730_IG65
+ jae G_M4730_IG70
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG66
- jmp SHORT G_M4730_IG29
+ jbe G_M4730_IG71
+ jmp SHORT G_M4730_IG31
;; size=26 bbWeight=2 PerfScore 10.50
-G_M4730_IG28: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+G_M4730_IG30: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
lea eax, [rax+4*rax]
lea eax, [rcx+2*rax-0x30]
mov dword ptr [rsp+0xB0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xB0]
- jbe G_M4730_IG66
+ jbe G_M4730_IG71
;; size=33 bbWeight=8 PerfScore 40.00
-G_M4730_IG29: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG31: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp r13d, r12d
- jae G_M4730_IG62
+ jae G_M4730_IG67
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
lea r8d, [rcx-0x30]
cmp r8d, 9
- ja SHORT G_M4730_IG30
+ ja SHORT G_M4730_IG32
cmp eax, 0xD1FFAB1E
- jl SHORT G_M4730_IG28
+ jl SHORT G_M4730_IG30
;; size=34 bbWeight=16 PerfScore 104.00
-G_M4730_IG30: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG32: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp ecx, 32
- jne SHORT G_M4730_IG32
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M4730_IG31: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jne SHORT G_M4730_IG35
+ test r13d, r13d
+ jl SHORT G_M4730_IG36
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M4730_IG33: ; bbWeight=15.84, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG66
+ jbe G_M4730_IG71
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
cmp ecx, 32
- je SHORT G_M4730_IG31
- ;; size=25 bbWeight=16 PerfScore 80.00
-G_M4730_IG32: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ je SHORT G_M4730_IG33
+ ;; size=25 bbWeight=15.84 PerfScore 79.20
+G_M4730_IG34: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ mov dword ptr [rsp+0xB0], eax
+ jmp SHORT G_M4730_IG38
+ ;; size=9 bbWeight=2 PerfScore 6.00
+G_M4730_IG35: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ mov dword ptr [rsp+0xB0], eax
...
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 25 | 3 | 22 | 0 | -27 | +26,436 |
benchmarks.run.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_pgo.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_tiered.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
coreclr_tests.run.windows.x64.checked.mch | 92 | 5 | 87 | 0 | -45 | +22,650 |
libraries.crossgen2.windows.x64.checked.mch | 6 | 6 | 0 | 0 | -362 | +0 |
libraries.pmi.windows.x64.checked.mch | 7 | 5 | 2 | 0 | -324 | +247 |
libraries_tests.run.windows.x64.Release.mch | 474 | 18 | 456 | 0 | -1,567 | +833,281 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 15 | 13 | 2 | 0 | -1,367 | +154 |
realworld.run.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
smoke_tests.nativeaot.windows.x64.checked.mch | 7 | 0 | 7 | 0 | -0 | +357 |
626 | 50 | 576 | 0 | -3,692 | +883,125 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 113,446 | 48,462 | 64,984 | 967 (0.85%) | 968 (0.85%) |
benchmarks.run.windows.x64.checked.mch | 28,178 | 4 | 28,174 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.windows.x64.checked.mch | 101,027 | 50,170 | 50,857 | 126 (0.12%) | 126 (0.12%) |
benchmarks.run_tiered.windows.x64.checked.mch | 54,255 | 36,844 | 17,411 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.windows.x64.checked.mch | 574,111 | 341,113 | 232,998 | 300 (0.05%) | 301 (0.05%) |
libraries.crossgen2.windows.x64.checked.mch | 243,023 | 15 | 243,008 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.windows.x64.checked.mch | 307,639 | 6 | 307,633 | 2 (0.00%) | 2 (0.00%) |
libraries_tests.run.windows.x64.Release.mch | 682,158 | 485,176 | 196,982 | 2,458 (0.36%) | 2,459 (0.36%) |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 319,780 | 21,886 | 297,894 | 6 (0.00%) | 6 (0.00%) |
realworld.run.windows.x64.checked.mch | 36,888 | 3 | 36,885 | 0 (0.00%) | 0 (0.00%) |
smoke_tests.nativeaot.windows.x64.checked.mch | 32,444 | 10 | 32,434 | 0 (0.00%) | 0 (0.00%) |
2,492,949 | 983,689 | 1,509,260 | 3,859 (0.15%) | 3,862 (0.15%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 41762326 (overridden on cmd)
Total bytes of diff: 41788735 (overridden on cmd)
Total bytes of delta: 26409 (0.06 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
6581 : 96530.dasm (80.25 % of base)
6581 : 112573.dasm (80.25 % of base)
6548 : 94952.dasm (79.84 % of base)
1430 : 37079.dasm (75.94 % of base)
549 : 41905.dasm (20.04 % of base)
549 : 52831.dasm (20.04 % of base)
549 : 96483.dasm (20.04 % of base)
549 : 36469.dasm (20.04 % of base)
549 : 112525.dasm (20.04 % of base)
549 : 94395.dasm (20.04 % of base)
232 : 94319.dasm (32.95 % of base)
221 : 112508.dasm (12.51 % of base)
221 : 36442.dasm (12.51 % of base)
221 : 41901.dasm (12.51 % of base)
221 : 52827.dasm (12.51 % of base)
221 : 94119.dasm (12.51 % of base)
221 : 96467.dasm (12.51 % of base)
220 : 39362.dasm (12.63 % of base)
202 : 37171.dasm (59.59 % of base)
10 : 94267.dasm (1.15 % of base)
Top file improvements (bytes):
-9 : 112679.dasm (-0.50 % of base)
-9 : 95770.dasm (-0.50 % of base)
-9 : 96631.dasm (-0.50 % of base)
25 total files with Code Size differences (3 improved, 22 regressed), 0 unchanged.
Top method regressions (bytes):
6581 (80.25 % of base) : 96530.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6581 (80.25 % of base) : 112573.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6548 (79.84 % of base) : 94952.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
1430 (75.94 % of base) : 37079.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders:ParseConnection(Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders):int (Instrumented Tier1)
549 (20.04 % of base) : 41905.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
549 (20.04 % of base) : 52831.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
549 (20.04 % of base) : 96483.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
549 (20.04 % of base) : 36469.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
549 (20.04 % of base) : 112525.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
549 (20.04 % of base) : 94395.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
232 (32.95 % of base) : 94319.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Instrumented Tier1)
221 (12.51 % of base) : 112508.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
221 (12.51 % of base) : 36442.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
221 (12.51 % of base) : 41901.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
221 (12.51 % of base) : 52827.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
221 (12.51 % of base) : 94119.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
221 (12.51 % of base) : 96467.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
220 (12.63 % of base) : 39362.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
202 (59.59 % of base) : 37171.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker:PrepareArguments(System.Collections.Generic.IDictionary`2[System.String,System.Object],Microsoft.Extensions.Internal.ObjectMethodExecutor):System.Object[] (Instrumented Tier1)
10 (1.15 % of base) : 94267.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Instrumented Tier1)
Top method improvements (bytes):
-9 (-0.50 % of base) : 112679.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateInterfaces(System.RuntimeType+RuntimeTypeCache+Filter):System.RuntimeType[]:this (Instrumented Tier1)
-9 (-0.50 % of base) : 95770.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateInterfaces(System.RuntimeType+RuntimeTypeCache+Filter):System.RuntimeType[]:this (Instrumented Tier1)
-9 (-0.50 % of base) : 96631.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateInterfaces(System.RuntimeType+RuntimeTypeCache+Filter):System.RuntimeType[]:this (Instrumented Tier1)
Top method regressions (percentages):
6581 (80.25 % of base) : 96530.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6581 (80.25 % of base) : 112573.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6548 (79.84 % of base) : 94952.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
1430 (75.94 % of base) : 37079.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders:ParseConnection(Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders):int (Instrumented Tier1)
202 (59.59 % of base) : 37171.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker:PrepareArguments(System.Collections.Generic.IDictionary`2[System.String,System.Object],Microsoft.Extensions.Internal.ObjectMethodExecutor):System.Object[] (Instrumented Tier1)
232 (32.95 % of base) : 94319.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Instrumented Tier1)
549 (20.04 % of base) : 41905.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
549 (20.04 % of base) : 52831.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
549 (20.04 % of base) : 96483.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
549 (20.04 % of base) : 36469.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
549 (20.04 % of base) : 112525.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
549 (20.04 % of base) : 94395.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
220 (12.63 % of base) : 39362.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
221 (12.51 % of base) : 112508.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
221 (12.51 % of base) : 36442.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
221 (12.51 % of base) : 41901.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
221 (12.51 % of base) : 52827.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
221 (12.51 % of base) : 94119.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
221 (12.51 % of base) : 96467.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
10 (1.15 % of base) : 94267.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Instrumented Tier1)
Top method improvements (percentages):
-9 (-0.50 % of base) : 112679.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateInterfaces(System.RuntimeType+RuntimeTypeCache+Filter):System.RuntimeType[]:this (Instrumented Tier1)
-9 (-0.50 % of base) : 95770.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateInterfaces(System.RuntimeType+RuntimeTypeCache+Filter):System.RuntimeType[]:this (Instrumented Tier1)
-9 (-0.50 % of base) : 96631.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateInterfaces(System.RuntimeType+RuntimeTypeCache+Filter):System.RuntimeType[]:this (Instrumented Tier1)
25 total methods with Code Size differences (3 improved, 22 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 392865429 (overridden on cmd)
Total bytes of diff: 392888034 (overridden on cmd)
Total bytes of delta: 22605 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
858 : 2390.dasm (40.00 % of base)
564 : 30632.dasm (16.93 % of base)
564 : 224550.dasm (19.14 % of base)
564 : 232499.dasm (19.19 % of base)
564 : 273261.dasm (19.14 % of base)
564 : 34699.dasm (19.14 % of base)
564 : 51204.dasm (19.19 % of base)
564 : 105893.dasm (16.86 % of base)
556 : 110436.dasm (17.62 % of base)
556 : 154877.dasm (17.75 % of base)
556 : 175212.dasm (17.62 % of base)
232 : 2254.dasm (32.95 % of base)
225 : 24195.dasm (12.91 % of base)
224 : 220469.dasm (12.63 % of base)
224 : 230595.dasm (12.61 % of base)
224 : 288584.dasm (12.76 % of base)
224 : 332328.dasm (12.76 % of base)
224 : 359308.dasm (12.63 % of base)
224 : 105902.dasm (12.64 % of base)
224 : 354156.dasm (12.76 % of base)
Top file improvements (bytes):
-17 : 219830.dasm (-0.77 % of base)
-9 : 192733.dasm (-0.78 % of base)
-9 : 570751.dasm (-0.80 % of base)
-6 : 193233.dasm (-0.91 % of base)
-4 : 235792.dasm (-0.24 % of base)
52 total files with Code Size differences (5 improved, 47 regressed), 0 unchanged.
Top method regressions (bytes):
858 (40.00 % of base) : 2390.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
564 (16.93 % of base) : 30632.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (19.14 % of base) : 224550.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (19.19 % of base) : 232499.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (19.14 % of base) : 273261.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (19.14 % of base) : 34699.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (19.19 % of base) : 51204.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (16.86 % of base) : 105893.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
556 (17.62 % of base) : 110436.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
556 (17.75 % of base) : 154877.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
556 (17.62 % of base) : 175212.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
232 (32.95 % of base) : 2254.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Instrumented Tier1)
225 (12.91 % of base) : 24195.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
224 (12.63 % of base) : 220469.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
224 (12.61 % of base) : 230595.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
224 (12.76 % of base) : 288584.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
224 (12.76 % of base) : 332328.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
224 (12.63 % of base) : 359308.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
224 (12.64 % of base) : 105902.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
224 (12.76 % of base) : 354156.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
Top method improvements (bytes):
-17 (-0.77 % of base) : 219830.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
-9 (-0.80 % of base) : 570751.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-9 (-0.78 % of base) : 192733.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
-6 (-0.91 % of base) : 193233.dasm - System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
-4 (-0.24 % of base) : 235792.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
Top method regressions (percentages):
858 (40.00 % of base) : 2390.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
232 (32.95 % of base) : 2254.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Instrumented Tier1)
564 (19.19 % of base) : 232499.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (19.19 % of base) : 51204.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (19.14 % of base) : 224550.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (19.14 % of base) : 273261.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (19.14 % of base) : 34699.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
556 (17.75 % of base) : 154877.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
556 (17.62 % of base) : 110436.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
556 (17.62 % of base) : 175212.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (16.93 % of base) : 30632.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
564 (16.86 % of base) : 105893.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
225 (12.91 % of base) : 24195.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
223 (12.76 % of base) : 31003.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
223 (12.76 % of base) : 358606.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
223 (12.76 % of base) : 1293.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
223 (12.76 % of base) : 234287.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
223 (12.76 % of base) : 272591.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
223 (12.76 % of base) : 288731.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
223 (12.76 % of base) : 289253.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
Top method improvements (percentages):
-6 (-0.91 % of base) : 193233.dasm - System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
-9 (-0.80 % of base) : 570751.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-9 (-0.78 % of base) : 192733.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
-17 (-0.77 % of base) : 219830.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
-4 (-0.24 % of base) : 235792.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 39442575 (overridden on cmd)
Total bytes of diff: 39442213 (overridden on cmd)
Total bytes of delta: -362 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file improvements (bytes):
-199 : 99712.dasm (-19.38 % of base)
-50 : 224930.dasm (-17.86 % of base)
-50 : 214238.dasm (-17.86 % of base)
-39 : 21666.dasm (-9.47 % of base)
-14 : 231069.dasm (-0.93 % of base)
-10 : 238829.dasm (-1.98 % of base)
6 total files with Code Size differences (6 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-199 (-19.38 % of base) : 99712.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-50 (-17.86 % of base) : 224930.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-50 (-17.86 % of base) : 214238.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-39 (-9.47 % of base) : 21666.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-14 (-0.93 % of base) : 231069.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
-10 (-1.98 % of base) : 238829.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-199 (-19.38 % of base) : 99712.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-50 (-17.86 % of base) : 224930.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-50 (-17.86 % of base) : 214238.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-39 (-9.47 % of base) : 21666.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-10 (-1.98 % of base) : 238829.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
-14 (-0.93 % of base) : 231069.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
6 total methods with Code Size differences (6 improved, 0 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 61196926 (overridden on cmd)
Total bytes of diff: 61196849 (overridden on cmd)
Total bytes of delta: -77 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
234 : 267754.dasm (2.42 % of base)
13 : 300113.dasm (2.82 % of base)
Top file improvements (bytes):
-206 : 104979.dasm (-19.20 % of base)
-54 : 235315.dasm (-16.31 % of base)
-54 : 270218.dasm (-16.31 % of base)
-9 : 254176.dasm (-0.80 % of base)
-1 : 299191.dasm (-0.07 % of base)
7 total files with Code Size differences (5 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
234 (2.42 % of base) : 267754.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
13 (2.82 % of base) : 300113.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-206 (-19.20 % of base) : 104979.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-54 (-16.31 % of base) : 270218.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-54 (-16.31 % of base) : 235315.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-9 (-0.80 % of base) : 254176.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-1 (-0.07 % of base) : 299191.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
13 (2.82 % of base) : 300113.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
234 (2.42 % of base) : 267754.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
Top method improvements (percentages):
-206 (-19.20 % of base) : 104979.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
-54 (-16.31 % of base) : 270218.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-54 (-16.31 % of base) : 235315.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-9 (-0.80 % of base) : 254176.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-1 (-0.07 % of base) : 299191.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
7 total methods with Code Size differences (5 improved, 2 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 279033795 (overridden on cmd)
Total bytes of diff: 279865509 (overridden on cmd)
Total bytes of delta: 831714 (0.30 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
6756 : 293474.dasm (80.34 % of base)
6756 : 320715.dasm (80.34 % of base)
6756 : 340676.dasm (80.34 % of base)
6756 : 382786.dasm (80.34 % of base)
6756 : 199979.dasm (80.34 % of base)
6756 : 408447.dasm (80.34 % of base)
6756 : 547552.dasm (80.34 % of base)
6756 : 409135.dasm (80.34 % of base)
6756 : 543412.dasm (80.34 % of base)
6756 : 547090.dasm (80.34 % of base)
6756 : 681630.dasm (80.34 % of base)
6756 : 683540.dasm (80.34 % of base)
6756 : 186328.dasm (80.34 % of base)
6756 : 272704.dasm (80.34 % of base)
6756 : 305746.dasm (80.34 % of base)
6756 : 319012.dasm (80.34 % of base)
6756 : 395876.dasm (80.34 % of base)
6756 : 400752.dasm (80.34 % of base)
6756 : 507960.dasm (80.34 % of base)
6756 : 681007.dasm (80.34 % of base)
Top file improvements (bytes):
-251 : 638050.dasm (-19.03 % of base)
-205 : 647142.dasm (-15.66 % of base)
-148 : 638264.dasm (-32.10 % of base)
-137 : 647594.dasm (-20.42 % of base)
-136 : 628173.dasm (-19.91 % of base)
-124 : 638071.dasm (-22.50 % of base)
-116 : 638075.dasm (-23.63 % of base)
-115 : 638079.dasm (-19.39 % of base)
-93 : 638267.dasm (-20.13 % of base)
-70 : 497107.dasm (-12.66 % of base)
-70 : 630138.dasm (-17.46 % of base)
-54 : 647593.dasm (-14.40 % of base)
-17 : 30498.dasm (-0.77 % of base)
-10 : 267071.dasm (-0.14 % of base)
-7 : 29645.dasm (-0.72 % of base)
-6 : 99185.dasm (-0.93 % of base)
-4 : 267090.dasm (-0.24 % of base)
-4 : 35538.dasm (-0.39 % of base)
65 total files with Code Size differences (18 improved, 47 regressed), 0 unchanged.
Top method regressions (bytes):
6756 (80.34 % of base) : 293474.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 320715.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 340676.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 382786.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 199979.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 408447.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 547552.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 409135.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 543412.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 547090.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 681630.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 683540.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 186328.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 272704.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 305746.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 319012.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 395876.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 400752.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 507960.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6756 (80.34 % of base) : 681007.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (bytes):
-251 (-19.03 % of base) : 638050.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29752_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-205 (-15.66 % of base) : 647142.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31465_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-148 (-32.10 % of base) : 638264.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29890_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-137 (-20.42 % of base) : 647594.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31763_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-136 (-19.91 % of base) : 628173.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29217_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-124 (-22.50 % of base) : 638071.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29783_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-23.63 % of base) : 638075.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29790_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-115 (-19.39 % of base) : 638079.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29797_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-93 (-20.13 % of base) : 638267.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29892_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-70 (-17.46 % of base) : 630138.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3172_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-70 (-12.66 % of base) : 497107.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-54 (-14.40 % of base) : 647593.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31762_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-17 (-0.77 % of base) : 30498.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
-10 (-0.14 % of base) : 267071.dasm - System.Diagnostics.Tracing.EventSource:CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,int):ubyte[] (Instrumented Tier1)
-7 (-0.72 % of base) : 29645.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
-6 (-0.93 % of base) : 99185.dasm - System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
-4 (-0.24 % of base) : 267090.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
-4 (-0.39 % of base) : 35538.dasm - System.IO.Path:Combine(System.String[]):System.String (Instrumented Tier1)
Top method regressions (percentages):
6624 (80.75 % of base) : 212582.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6624 (80.75 % of base) : 261088.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 190472.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 288660.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 315240.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 351695.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 374299.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 481279.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 579744.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 610811.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 72936.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 358636.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 483939.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 131072.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 212844.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 361980.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 291339.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 321592.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 329792.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
6691 (80.56 % of base) : 517483.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (percentages):
-148 (-32.10 % of base) : 638264.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29890_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-23.63 % of base) : 638075.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29790_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-124 (-22.50 % of base) : 638071.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29783_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-137 (-20.42 % of base) : 647594.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31763_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-93 (-20.13 % of base) : 638267.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29892_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-136 (-19.91 % of base) : 628173.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29217_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-115 (-19.39 % of base) : 638079.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29797_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-251 (-19.03 % of base) : 638050.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29752_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-70 (-17.46 % of base) : 630138.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3172_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-205 (-15.66 % of base) : 647142.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31465_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-54 (-14.40 % of base) : 647593.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31762_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-70 (-12.66 % of base) : 497107.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-6 (-0.93 % of base) : 99185.dasm - System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
-17 (-0.77 % of base) : 30498.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
-7 (-0.72 % of base) : 29645.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
-4 (-0.39 % of base) : 35538.dasm - System.IO.Path:Combine(System.String[]):System.String (Instrumented Tier1)
-4 (-0.24 % of base) : 267090.dasm - System.Diagnostics.Tracing.EventSource:DebugCheckEvent(byref,System.Diagnostics.Tracing.EventSource+EventMetadata[],System.Reflection.MethodInfo,System.Diagnostics.Tracing.EventAttribute,System.Diagnostics.Tracing.ManifestBuilder,int) (Instrumented Tier1)
-10 (-0.14 % of base) : 267071.dasm - System.Diagnostics.Tracing.EventSource:CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,int):ubyte[] (Instrumented Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 133435993 (overridden on cmd)
Total bytes of diff: 133434780 (overridden on cmd)
Total bytes of delta: -1213 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
141 : 302413.dasm (7.91 % of base)
13 : 121925.dasm (2.82 % of base)
Top file improvements (bytes):
-252 : 299331.dasm (-19.63 % of base)
-193 : 305067.dasm (-15.27 % of base)
-127 : 299350.dasm (-21.10 % of base)
-127 : 299344.dasm (-24.19 % of base)
-126 : 305114.dasm (-20.06 % of base)
-119 : 299347.dasm (-24.84 % of base)
-106 : 281948.dasm (-17.32 % of base)
-98 : 299417.dasm (-21.92 % of base)
-55 : 305113.dasm (-15.28 % of base)
-54 : 291728.dasm (-15.52 % of base)
-54 : 65188.dasm (-16.31 % of base)
-54 : 206727.dasm (-16.31 % of base)
-2 : 194247.dasm (-0.14 % of base)
15 total files with Code Size differences (13 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
141 (7.91 % of base) : 302413.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
13 (2.82 % of base) : 121925.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-252 (-19.63 % of base) : 299331.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31163_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-193 (-15.27 % of base) : 305067.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32394_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-127 (-24.19 % of base) : 299344.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31194_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-127 (-21.10 % of base) : 299350.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31208_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-126 (-20.06 % of base) : 305114.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32691_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-119 (-24.84 % of base) : 299347.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31201_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-106 (-17.32 % of base) : 281948.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex17_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-98 (-21.92 % of base) : 299417.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31303_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-55 (-15.28 % of base) : 305113.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32690_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-54 (-16.31 % of base) : 65188.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-54 (-16.31 % of base) : 206727.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-54 (-15.52 % of base) : 291728.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2787_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-2 (-0.14 % of base) : 194247.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
141 (7.91 % of base) : 302413.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
13 (2.82 % of base) : 121925.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-119 (-24.84 % of base) : 299347.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31201_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-127 (-24.19 % of base) : 299344.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31194_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-98 (-21.92 % of base) : 299417.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31303_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-127 (-21.10 % of base) : 299350.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31208_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-126 (-20.06 % of base) : 305114.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32691_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-252 (-19.63 % of base) : 299331.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31163_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-106 (-17.32 % of base) : 281948.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex17_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-54 (-16.31 % of base) : 65188.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-54 (-16.31 % of base) : 206727.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-54 (-15.52 % of base) : 291728.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2787_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-55 (-15.28 % of base) : 305113.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32690_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-193 (-15.27 % of base) : 305067.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32394_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-2 (-0.14 % of base) : 194247.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
15 total methods with Code Size differences (13 improved, 2 regressed).
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5091660 (overridden on cmd)
Total bytes of diff: 5092017 (overridden on cmd)
Total bytes of delta: 357 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
51 : 16647.dasm (2.23 % of base)
51 : 6434.dasm (2.32 % of base)
51 : 11732.dasm (2.43 % of base)
51 : 5210.dasm (2.16 % of base)
51 : 1454.dasm (2.23 % of base)
51 : 21916.dasm (2.23 % of base)
51 : 19295.dasm (2.23 % of base)
7 total files with Code Size differences (0 improved, 7 regressed), 0 unchanged.
Top method regressions (bytes):
51 (2.32 % of base) : 6434.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
51 (2.43 % of base) : 11732.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
51 (2.23 % of base) : 16647.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
51 (2.16 % of base) : 5210.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
51 (2.23 % of base) : 1454.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
51 (2.23 % of base) : 21916.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
51 (2.23 % of base) : 19295.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
51 (2.43 % of base) : 11732.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
51 (2.32 % of base) : 6434.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
51 (2.23 % of base) : 1454.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
51 (2.23 % of base) : 16647.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
51 (2.23 % of base) : 21916.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
51 (2.23 % of base) : 19295.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
51 (2.16 % of base) : 5210.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
7 total methods with Code Size differences (0 improved, 7 regressed).