Diffs are based on 2,237,735 contexts (827,812 MinOpts, 1,409,923 FullOpts).
MISSED contexts: base: 74,052 (3.20%), diff: 74,543 (3.22%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.linux.arm.checked.mch | 321,626,918 | +4,536 |
libraries.crossgen2.linux.arm.checked.mch | 35,174,904 | -364 |
libraries.pmi.linux.arm.checked.mch | 49,554,486 | -270 |
libraries_tests.run.linux.arm.Release.mch | 240,953,450 | +918,678 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 93,043,072 | -546 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.linux.arm.checked.mch | 108,896,784 | +4,536 |
libraries.crossgen2.linux.arm.checked.mch | 35,173,674 | -364 |
libraries.pmi.linux.arm.checked.mch | 49,447,982 | -270 |
libraries_tests.run.linux.arm.Release.mch | 118,950,506 | +918,678 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 82,959,252 | -546 |
@@ -9,16 +9,16 @@
; 4 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 4 ) ref -> r6 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T05] ( 4, 4 ) ref -> r6 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> r4 single-def
-; V02 arg1 [V02,T06] ( 14, 3 ) ref -> r7 ld-addr-op class-hnd <System.String>
+; V02 arg1 [V02,T07] ( 14, 3 ) ref -> r7 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T01] ( 6, 5.54) int -> r5
-; V04 arg3 [V04,T19] ( 2, 1.90) ref -> r8 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T27] ( 1, 0 ) ubyte -> [sp+0x5C] single-def
-; V06 loc0 [V06,T17] ( 3, 2.41) ubyte -> r9 ld-addr-op
-; V07 loc1 [V07,T20] ( 3, 1 ) ubyte -> r10 ld-addr-op
-; V08 loc2 [V08,T12] ( 7, 4.00) int -> [sp+0x2C] ld-addr-op
-; V09 loc3 [V09,T14] ( 3, 3.54) ref -> r6 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T20] ( 2, 1.90) ref -> r8 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T28] ( 1, 0 ) ubyte -> [sp+0x5C] single-def
+; V06 loc0 [V06,T18] ( 3, 2.41) ubyte -> r9 ld-addr-op
+; V07 loc1 [V07,T21] ( 3, 1 ) ubyte -> r10 ld-addr-op
+; V08 loc2 [V08,T13] ( 7, 4.00) int -> [sp+0x2C] ld-addr-op
+; V09 loc3 [V09,T15] ( 3, 3.54) ref -> r6 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.41) struct (16) [sp+0x1C] 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 -> [sp+0x18]
; V12 loc6 [V12,T03] ( 7, 5.96) ref -> [sp+0x10] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
@@ -27,37 +27,38 @@
;* 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.01) ref -> r6 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T07] ( 4, 4 ) ref -> [sp+0x0C] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>
-;* V20 tmp7 [V20,T16] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T12] ( 5, 4.01) ref -> r6 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T08] ( 4, 4 ) ref -> [sp+0x0C] class-hnd spill-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>
;* 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,T10] ( 4, 4.04) byref -> [sp+0x08] spill-single-def "Inlining Arg"
+; V27 tmp14 [V27,T11] ( 4, 4.04) byref -> [sp+0x08] spill-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,T05] ( 13, 5.03) ref -> [sp+0x04] class-hnd "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T22] ( 4, 0.08) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V30 tmp17 [V30,T06] ( 13, 5.03) ref -> [sp+0x04] class-hnd "Inline stloc first use temp" <<unknown class>>
+; V31 tmp18 [V31,T23] ( 4, 0.08) ref -> [sp+0x00] class-hnd exact spill-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,T18] ( 5, 2 ) ref -> r6 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V34 tmp21 [V34,T25] ( 2, 0 ) ref -> r0 class-hnd single-def "dup spill" <System.__Canon>
-; V35 tmp22 [V35,T23] ( 4, 0 ) ref -> r6
-; V36 tmp23 [V36,T26] ( 2, 0 ) ref -> r0 class-hnd single-def "dup spill" <System.__Canon>
-; V37 tmp24 [V37,T24] ( 4, 0 ) ref -> r6
+; V33 tmp20 [V33,T19] ( 5, 2 ) ref -> r6 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
+; V34 tmp21 [V34,T26] ( 2, 0 ) ref -> r0 class-hnd single-def "dup spill" <System.__Canon>
+; V35 tmp22 [V35,T24] ( 4, 0 ) ref -> r6
+; V36 tmp23 [V36,T27] ( 2, 0 ) ref -> r0 class-hnd single-def "dup spill" <System.__Canon>
+; V37 tmp24 [V37,T25] ( 4, 0 ) ref -> r6
;* V38 tmp25 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp26 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp27 [V40,T13] ( 2, 4 ) int -> r0 "Inlining Arg"
+; V40 tmp27 [V40,T14] ( 2, 4 ) int -> r0 "Inlining Arg"
; V41 tmp28 [V41 ] ( 3, 3.41) ref -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V42 tmp29 [V42 ] ( 3, 3.41) ref -> [sp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x4)" P-DEP
; V43 tmp30 [V43 ] ( 3, 3.41) int -> [sp+0x24] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x8)" P-DEP
; V44 tmp31 [V44 ] ( 3, 3.41) int -> [sp+0x28] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0xc)" P-DEP
-;* V45 tmp32 [V45,T21] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V46 cse0 [V46,T08] ( 3, 4.63) int -> r0 "CSE - moderate"
-; V47 cse1 [V47,T15] ( 3, 3 ) int -> r0 "CSE - moderate"
-; V48 cse2 [V48,T09] ( 4, 4.54) int -> [sp+0x14] spill-single-def "CSE - aggressive"
+;* V45 tmp32 [V45,T22] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V46 cse0 [V46,T09] ( 3, 4.63) int -> r0 "CSE - moderate"
+; V47 cse1 [V47,T16] ( 3, 3 ) int -> r0 "CSE - moderate"
+; V48 cse2 [V48,T10] ( 4, 4.54) int -> [sp+0x14] spill-single-def "CSE - moderate"
+; V49 cse3 [V49,T04] ( 6, 6 ) ref -> r1 multi-def "CSE - aggressive"
;
; Lcl frame size = 52
@@ -172,17 +173,17 @@ G_M37807_IG07: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0010 {r
movt r1, 0xd1ff
cmp r0, r1
beq SHORT G_M37807_IG08
- movw r0, 0xd1ff
- movt r0, 0xd1ff
movw r1, 0xd1ff
movt r1, 0xd1ff
+ mov r0, r1
+ ; gcrRegs +[r0]
movw r2, 0xd1ff
movt r2, 0xd1ff
ldr r2, [r2]
blx r2 // <unknown method>
- ; gcrRegs -[r3 r6]
+ ; gcrRegs -[r0 r3 r6]
; gcr arg pop 0
- ;; size=66 bbWeight=1 PerfScore 23.00
+ ;; size=60 bbWeight=1 PerfScore 22.00
G_M37807_IG08: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0010 {r4}, byref, isz
ldr r3, [sp+0x0C] // [V19 tmp6]
; gcrRegs +[r3]
@@ -216,7 +217,7 @@ G_M37807_IG10: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0010 {r
cmp r2, 0
bne SHORT G_M37807_IG14
;; size=16 bbWeight=1 PerfScore 6.00
-G_M37807_IG11: ; bbWeight=0.01, gcVars=00000400 {V27}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M37807_IG11: ; bbWeight=0.01, gcVars=00000800 {V27}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0010 {r4}, gcvars, byref, isz
; gcrRegs -[r2]
; byrRegs -[r3]
movw r0, 0xd1ff
@@ -283,7 +284,7 @@ G_M37807_IG14: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0184 {r2 r7 r8
cmp r6, 1
bne SHORT G_M37807_IG16
;; size=12 bbWeight=1 PerfScore 5.00
-G_M37807_IG15: ; bbWeight=0, gcVars=00000020 {V30}, gcrefRegs=0180 {r7 r8}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M37807_IG15: ; bbWeight=0, gcVars=00000040 {V30}, gcrefRegs=0180 {r7 r8}, byrefRegs=0010 {r4}, gcvars, byref, isz
; gcrRegs -[r2]
ldr r2, [sp+0x04] // [V30 tmp17]
; gcrRegs +[r2]
@@ -348,21 +349,22 @@ G_M37807_IG18: ; bbWeight=0, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0010 {r
; gcrRegs -[r0]
b SHORT G_M37807_IG22
;; size=2 bbWeight=0 PerfScore 0.00
-G_M37807_IG19: ; bbWeight=1, gcVars=00000020 {V30}, gcrefRegs=0180 {r7 r8}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M37807_IG19: ; bbWeight=1, gcVars=00000040 {V30}, gcrefRegs=0180 {r7 r8}, byrefRegs=0010 {r4}, gcvars, byref, isz
; gcrRegs -[r6]
- ; GC ptr vars +{V05 V30}
+ ; GC ptr vars +{V06 V30}
cmp r6, 0
beq SHORT G_M37807_IG20
- movw r0, 0xd1ff
- movt r0, 0xd1ff
movw r1, 0xd1ff
movt r1, 0xd1ff
+ mov r0, r1
+ ; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
+ ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=32 bbWeight=1 PerfScore 10.00
+ ;; size=26 bbWeight=1 PerfScore 9.00
G_M37807_IG20: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0010 {r4}, byref, isz
ldr r2, [sp+0x04]
; gcrRegs +[r2]
@@ -372,7 +374,7 @@ G_M37807_IG20: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0010 {r4},
beq SHORT G_M37807_IG37
;; size=12 bbWeight=1 PerfScore 5.00
G_M37807_IG21: ; bbWeight=1.00, gcVars=00000000 {}, gcrefRegs=0184 {r2 r7 r8}, byrefRegs=0010 {r4}, gcvars, byref
- ; GC ptr vars -{V05 V30}
+ ; GC ptr vars -{V06 V30}
ldr r6, [r2+0x04]
; gcrRegs +[r6]
;; size=2 bbWeight=1.00 PerfScore 1.00
@@ -603,10 +605,10 @@ G_M37807_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M37807_IG43: ; bbWeight=0, gcVars=00000020 {V30}, gcrefRegs=0180 {r7 r8}, byrefRegs=0010 {r4}, gcvars, byref
+G_M37807_IG43: ; bbWeight=0, gcVars=00000040 {V30}, gcrefRegs=0180 {r7 r8}, byrefRegs=0010 {r4}, gcvars, byref
; gcrRegs +[r7-r8]
; byrRegs +[r4]
- ; GC ptr vars +{V05 V30}
+ ; GC ptr vars +{V06 V30}
ldr r0, [sp+0x04]
; gcrRegs +[r0]
mov r1, r7
@@ -616,7 +618,7 @@ G_M37807_IG43: ; bbWeight=0, gcVars=00000020 {V30}, gcrefRegs=0180 {r7 r8
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
- ; GC ptr vars -{V05 V30}
+ ; GC ptr vars -{V06 V30}
blx lr // <unknown method>
; gcrRegs -[r1]
; gcr arg pop 0
@@ -628,7 +630,7 @@ G_M37807_IG44: ; bbWeight=0, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0010 {r
b SHORT G_M37807_IG22
;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 910, prolog size 28, PerfScore 177.84, instruction count 328, allocated bytes for code 910 (MethodHash=847f6c50) for method System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
+; Total bytes of code 898, prolog size 28, PerfScore 175.84, instruction count 326, allocated bytes for code 898 (MethodHash=847f6c50) for method System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -640,7 +642,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 455 (0x001c7) Actual length = 910 (0x00038e)
+ Function Length : 449 (0x001c1) Actual length = 898 (0x000382)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,16 +9,16 @@
; 4 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 4, 4 ) ref -> r7 this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T10] ( 4, 4 ) ref -> r7 this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T01] ( 6, 6 ) byref -> r4 single-def
; V02 arg1 [V02,T07] ( 11, 4 ) ref -> r6 ld-addr-op class-hnd <System.String>
; V03 arg2 [V03,T03] ( 6, 5.54) int -> r5
-; V04 arg3 [V04,T25] ( 2, 1.90) ref -> r8 class-hnd single-def <System.Type[]>
-; V05 arg4 [V05,T32] ( 1, 0 ) ubyte -> [sp+0x5C] single-def
-; V06 loc0 [V06,T21] ( 3, 2.41) ubyte -> r9 ld-addr-op
-; V07 loc1 [V07,T26] ( 3, 1 ) ubyte -> r10 ld-addr-op
-; V08 loc2 [V08,T24] ( 5, 2 ) int -> [sp+0x2C] ld-addr-op
-; V09 loc3 [V09,T18] ( 3, 3.54) ref -> r7 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
+; V04 arg3 [V04,T26] ( 2, 1.90) ref -> r8 class-hnd single-def <System.Type[]>
+; V05 arg4 [V05,T33] ( 1, 0 ) ubyte -> [sp+0x5C] single-def
+; V06 loc0 [V06,T22] ( 3, 2.41) ubyte -> r9 ld-addr-op
+; V07 loc1 [V07,T27] ( 3, 1 ) ubyte -> r10 ld-addr-op
+; V08 loc2 [V08,T25] ( 5, 2 ) int -> [sp+0x2C] ld-addr-op
+; V09 loc3 [V09,T19] ( 3, 3.54) ref -> r7 class-hnd exact single-def <System.Reflection.RuntimePropertyInfo[]>
; V10 loc4 [V10 ] ( 9, 9.41) struct (16) [sp+0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
; V11 loc5 [V11,T04] ( 5, 7.18) int -> [sp+0x18]
; V12 loc6 [V12,T05] ( 7, 5.96) ref -> [sp+0x0C] class-hnd exact spill-single-def <System.Reflection.RuntimePropertyInfo>
@@ -27,37 +27,38 @@
;* 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, 5 ) ref -> r7 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V19 tmp6 [V19,T16] ( 4, 4 ) ref -> [sp+0x08] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>
-; V20 tmp7 [V20,T10] ( 2, 4 ) ref -> r0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V18 tmp5 [V18,T13] ( 5, 5 ) ref -> r7 class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V19 tmp6 [V19,T17] ( 4, 4 ) ref -> [sp+0x08] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>
+; V20 tmp7 [V20,T11] ( 2, 4 ) ref -> r0 class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "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,T00] ( 5, 10 ) int -> [sp+0x14] spill-single-def "Inlining Arg"
-; V25 tmp12 [V25,T22] ( 5, 2 ) ref -> [sp+0x04] class-hnd exact spill-single-def "Inlining Arg" <System.String>
+; V25 tmp12 [V25,T23] ( 5, 2 ) ref -> [sp+0x04] class-hnd exact spill-single-def "Inlining Arg" <System.String>
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
; V27 tmp14 [V27,T02] ( 4, 8 ) byref -> [sp+0x00] spill-single-def "Inlining Arg"
-; V28 tmp15 [V28,T15] ( 9, 4 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V28 tmp15 [V28,T16] ( 9, 4 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V29 tmp16 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <<unknown class>>
; V30 tmp17 [V30,T08] ( 6, 6 ) ref -> registers class-hnd "Inline stloc first use temp" <<unknown class>>
-; V31 tmp18 [V31,T11] ( 3, 6 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V32 tmp19 [V32,T19] ( 3, 3 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V33 tmp20 [V33,T23] ( 5, 2 ) ref -> r7 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
-; V34 tmp21 [V34,T30] ( 2, 0 ) ref -> r0 class-hnd single-def "dup spill" <System.__Canon>
-; V35 tmp22 [V35,T28] ( 4, 0 ) ref -> r0
-; V36 tmp23 [V36,T31] ( 2, 0 ) ref -> r0 class-hnd single-def "dup spill" <System.__Canon>
-; V37 tmp24 [V37,T29] ( 4, 0 ) ref -> r0
+; V31 tmp18 [V31,T12] ( 3, 6 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V32 tmp19 [V32,T20] ( 3, 3 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V33 tmp20 [V33,T24] ( 5, 2 ) ref -> r7 class-hnd "Inline return value spill temp" <System.Reflection.RuntimePropertyInfo[]>
+; V34 tmp21 [V34,T31] ( 2, 0 ) ref -> r0 class-hnd single-def "dup spill" <System.__Canon>
+; V35 tmp22 [V35,T29] ( 4, 0 ) ref -> r0
+; V36 tmp23 [V36,T32] ( 2, 0 ) ref -> r0 class-hnd single-def "dup spill" <System.__Canon>
+; V37 tmp24 [V37,T30] ( 4, 0 ) ref -> r0
;* V38 tmp25 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp26 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp27 [V40,T17] ( 2, 4 ) int -> r0 "Inlining Arg"
+; V40 tmp27 [V40,T18] ( 2, 4 ) int -> r0 "Inlining Arg"
; V41 tmp28 [V41 ] ( 3, 3.41) ref -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V10._items (fldOffset=0x0)" P-DEP
; V42 tmp29 [V42 ] ( 3, 3.41) ref -> [sp+0x20] do-not-enreg[X] addr-exposed "field V10._item (fldOffset=0x4)" P-DEP
; V43 tmp30 [V43 ] ( 3, 3.41) int -> [sp+0x24] do-not-enreg[X] addr-exposed "field V10._count (fldOffset=0x8)" P-DEP
; V44 tmp31 [V44 ] ( 3, 3.41) int -> [sp+0x28] do-not-enreg[X] addr-exposed "field V10._capacity (fldOffset=0xc)" P-DEP
-;* V45 tmp32 [V45,T27] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V46 cse0 [V46,T13] ( 3, 4.63) int -> r0 "CSE - moderate"
-; V47 cse1 [V47,T20] ( 3, 3 ) int -> r0 "CSE - moderate"
-; V48 cse2 [V48,T14] ( 4, 4.54) int -> [sp+0x10] spill-single-def "CSE - moderate"
+;* V45 tmp32 [V45,T28] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V46 cse0 [V46,T14] ( 3, 4.63) int -> r0 "CSE - moderate"
+; V47 cse1 [V47,T21] ( 3, 3 ) int -> r0 "CSE - moderate"
+; V48 cse2 [V48,T15] ( 4, 4.54) int -> [sp+0x10] spill-single-def "CSE - moderate"
+; V49 cse3 [V49,T09] ( 6, 6 ) ref -> r1 multi-def "CSE - aggressive"
;
; Lcl frame size = 52
@@ -175,17 +176,17 @@ G_M37807_IG07: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0010 {r
movt r1, 0xd1ff
cmp r0, r1
beq SHORT G_M37807_IG08
- movw r0, 0xd1ff
- movt r0, 0xd1ff
movw r1, 0xd1ff
movt r1, 0xd1ff
+ mov r0, r1
+ ; gcrRegs +[r0]
movw r2, 0xd1ff
movt r2, 0xd1ff
ldr r2, [r2]
blx r2 // <unknown method>
- ; gcrRegs -[r3 r7]
+ ; gcrRegs -[r0 r3 r7]
; gcr arg pop 0
- ;; size=68 bbWeight=1 PerfScore 24.00
+ ;; size=62 bbWeight=1 PerfScore 23.00
G_M37807_IG08: ; bbWeight=1, gcrefRegs=0140 {r6 r8}, byrefRegs=0010 {r4}, byref, isz
ldr r3, [sp+0x08] // [V19 tmp6]
; gcrRegs +[r3]
@@ -340,17 +341,18 @@ G_M37807_IG16: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0010 {r
; gcrRegs -[r0]
cmp r3, 0
beq SHORT G_M37807_IG19
- movw r0, 0xd1ff
- movt r0, 0xd1ff
movw r1, 0xd1ff
movt r1, 0xd1ff
+ mov r0, r1
+ ; gcrRegs +[r0]
movw r2, 0xd1ff
movt r2, 0xd1ff
ldr r2, [r2]
blx r2 // <unknown method>
+ ; gcrRegs -[r0]
; gcr arg pop 0
ldr r3, [sp+0x14] // [V24 tmp11]
- ;; size=34 bbWeight=1 PerfScore 11.00
+ ;; size=28 bbWeight=1 PerfScore 10.00
G_M37807_IG17: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0010 {r4}, byref, isz
ldrb r0, [r7+0x0C]
dmb 15
@@ -586,7 +588,7 @@ G_M37807_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M37807_IG40: ; bbWeight=0, gcVars=0000000000400000 {V25}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0010 {r4}, gcvars, byref
+G_M37807_IG40: ; bbWeight=0, gcVars=0000000000800000 {V25}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0010 {r4}, gcvars, byref
; gcrRegs +[r6-r8]
; byrRegs +[r4]
; GC ptr vars +{V25}
@@ -610,7 +612,7 @@ G_M37807_IG41: ; bbWeight=0, gcrefRegs=0141 {r0 r6 r8}, byrefRegs=0010 {r
b SHORT G_M37807_IG21
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 916, prolog size 28, PerfScore 215.53, instruction count 330, allocated bytes for code 916 (MethodHash=847f6c50) for method System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
+; Total bytes of code 904, prolog size 28, PerfScore 213.53, instruction count 328, allocated bytes for code 904 (MethodHash=847f6c50) for method System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -622,7 +624,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 458 (0x001ca) Actual length = 916 (0x000394)
+ Function Length : 452 (0x001c4) Actual length = 904 (0x000388)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -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 -> r4 class-hnd <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T16] ( 14, 8 ) ref -> r5 class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T19] ( 8, 5.50) byref -> r6 single-def
+; V02 arg2 [V02,T17] ( 14, 8 ) ref -> r5 class-hnd single-def <Internal.TypeSystem.DefType>
+; V03 arg3 [V03,T20] ( 8, 5.50) byref -> r6 single-def
; V04 loc0 [V04,T22] ( 11, 5.50) ref -> r8 class-hnd <Internal.TypeSystem.MethodDesc>
; V05 loc1 [V05,T23] ( 3, 5 ) ref -> r9 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> r8
-; V07 loc3 [V07,T20] ( 4, 7 ) ref -> r10 class-hnd single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> r10 class-hnd single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> [sp+0x2C]
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [sp+0x14] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [sp+0x18] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V10 loc6 [V10,T28] ( 6, 4.50) ref -> r9 class-hnd <Internal.TypeSystem.MethodDesc>
; V11 loc7 [V11,T24] ( 3, 5 ) ref -> r10 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> [sp+0x28]
-; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [sp+0x10] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [sp+0x14] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [sp+0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T46] ( 3, 1.50) int -> r0 single-def
+; V15 loc11 [V15,T45] ( 3, 1.50) int -> r0 single-def
; V16 loc12 [V16,T03] ( 10, 20 ) ref -> r8 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 -> r1 single-def "CASTCLASS eval op1"
-; V22 tmp3 [V22,T47] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable"
-; V23 tmp4 [V23,T31] ( 5, 3.75) ref -> r10 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V21 tmp2 [V21,T33] ( 3, 2.25) ref -> r1 single-def "CASTCLASS eval op1"
+; V22 tmp3 [V22,T46] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable"
+; V23 tmp4 [V23,T30] ( 5, 3.75) ref -> r10 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
; V24 tmp5 [V24,T25] ( 3, 5 ) ref -> r0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V25 tmp6 [V25,T35] ( 3, 2 ) int -> r3 "Inline return value spill temp"
-; V26 tmp7 [V26,T33] ( 3, 2.50) int -> r3 single-def "Inline stloc first use temp"
-; V27 tmp8 [V27,T42] ( 3, 1.50) ref -> r9 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V25 tmp6 [V25,T34] ( 3, 2 ) int -> r3 "Inline return value spill temp"
+; V26 tmp7 [V26,T32] ( 3, 2.50) int -> r3 single-def "Inline stloc first use temp"
+; V27 tmp8 [V27,T41] ( 3, 1.50) ref -> r9 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 -> [sp+0x0C] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V31 tmp12 [V31,T30] ( 2, 4 ) ref -> r2 class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T18] ( 5, 10 ) ref -> [sp+0x10] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V31 tmp12 [V31,T29] ( 2, 4 ) ref -> r2 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 -> r10 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V38 tmp19 [V38,T01] ( 3, 24 ) ref -> [sp+0x08] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V37 tmp18 [V37,T42] ( 3, 1.50) ref -> r10 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V38 tmp19 [V38,T01] ( 3, 24 ) ref -> [sp+0x0C] 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 -> r9 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 -> r0 single-def "Single return block return value"
+; V45 tmp26 [V45,T35] ( 2, 2 ) ref -> r0 single-def "Single return block return value"
; V46 tmp27 [V46,T09] ( 2, 16 ) ref -> r10 "argument with side effect"
; V47 tmp28 [V47,T10] ( 2, 16 ) ref -> r1 "argument with side effect"
-; V48 tmp29 [V48,T37] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V49 tmp30 [V49,T38] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
-; V50 tmp31 [V50,T39] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
-; V51 tmp32 [V51,T32] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
-; V52 tmp33 [V52,T40] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V53 tmp34 [V53,T11] ( 2, 16 ) ref -> [sp+0x04] spill-single-def "argument with side effect"
+; V48 tmp29 [V48,T36] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V49 tmp30 [V49,T37] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
+; V50 tmp31 [V50,T38] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
+; V51 tmp32 [V51,T31] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
+; V52 tmp33 [V52,T39] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V53 tmp34 [V53,T11] ( 2, 16 ) ref -> [sp+0x08] spill-single-def "argument with side effect"
; V54 tmp35 [V54,T12] ( 2, 16 ) ref -> r1 "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 -> r1 single-def "argument with side effect"
+; V57 tmp38 [V57,T40] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
; V58 tmp39 [V58,T13] ( 2, 16 ) ref -> r1 "argument with side effect"
-; V59 tmp40 [V59,T14] ( 2, 16 ) ref -> [sp+0x00] spill-single-def "argument with side effect"
+; V59 tmp40 [V59,T14] ( 2, 16 ) ref -> [sp+0x04] spill-single-def "argument with side effect"
; V60 tmp41 [V60,T15] ( 2, 16 ) ref -> r1 "argument with side effect"
-; V61 tmp42 [V61,T18] ( 2, 8 ) ref -> r1 "argument with side effect"
+; V61 tmp42 [V61,T19] ( 2, 8 ) ref -> r1 "argument with side effect"
; V62 cse0 [V62,T06] ( 10, 18 ) int -> r7 "CSE - aggressive"
-; V63 cse1 [V63,T29] ( 2, 4.50) int -> [sp+0x20] spill-single-def hoist "CSE - moderate"
-; V64 cse2 [V64,T44] ( 3, 1.50) ref -> r8 "CSE - conservative"
-; V65 cse3 [V65,T45] ( 3, 1.50) ref -> r10 "CSE - conservative"
-; V66 cse4 [V66,T26] ( 3, 5 ) int -> [sp+0x1C] spill-single-def "CSE - moderate"
-; V67 cse5 [V67,T27] ( 3, 5 ) int -> [sp+0x18] spill-single-def "CSE - moderate"
+; V63 cse1 [V63,T43] ( 3, 1.50) ref -> r8 "CSE - conservative"
+; V64 cse2 [V64,T44] ( 3, 1.50) ref -> r10 "CSE - conservative"
+; V65 cse3 [V65,T26] ( 3, 5 ) int -> [sp+0x20] spill-single-def "CSE - moderate"
+; V66 cse4 [V66,T27] ( 3, 5 ) int -> [sp+0x1C] spill-single-def "CSE - moderate"
;
; Lcl frame size = 52
@@ -211,38 +210,37 @@ G_M48343_IG12: ; bbWeight=0.50, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=
; gcrRegs -[r0]
movs r3, 0
ldr r2, [r9+0x04]
- str r2, [sp+0x1C]
+ str r2, [sp+0x20]
cmp r2, 0
ble SHORT G_M48343_IG17
- ldr r0, [r10]
- ldr r1, [r0+0x34]
- str r1, [sp+0x20]
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M48343_IG13: ; bbWeight=4, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=0040 {r6}, byref, isz
add r0, r9, 8
; byrRegs +[r0]
str r3, [sp+0x2C]
- lsl lr, r3, 2
- ldr lr, [r0+lr]
- ; gcrRegs +[lr]
- str lr, [sp+0x14] // [V09 loc5]
+ lsls r1, r3, 2
+ ldr r1, [r0+r1]
+ ; gcrRegs +[r1]
+ str r1, [sp+0x18] // [V09 loc5]
; GC ptr vars +{V09}
mov r0, r10
; gcrRegs +[r0]
; byrRegs -[r0]
- ldr r12, [r1+0x10]
- blx r12 // <unknown method>
- ; gcrRegs -[lr]
- str r0, [sp+0x04] // [V53 tmp34]
+ ldr lr, [r10]
+ ldr lr, [lr+0x34]
+ ldr lr, [lr+0x10]
+ blx lr // <unknown method>
+ ; gcrRegs -[r1]
+ str r0, [sp+0x08] // [V53 tmp34]
; GC ptr vars +{V53}
- ldr r0, [sp+0x14] // [V09 loc5]
+ ldr r0, [sp+0x18] // [V09 loc5]
ldr r2, [r0]
ldr r2, [r2+0x34]
ldr r2, [r2+0x10]
blx r2 // <unknown method>
mov r1, r0
; gcrRegs +[r1]
- ldr r0, [sp+0x04] // [V53 tmp34]
+ ldr r0, [sp+0x08] // [V53 tmp34]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -251,13 +249,13 @@ G_M48343_IG13: ; bbWeight=4, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=004
; gcrRegs -[r0-r1]
cmp r0, 0
beq SHORT G_M48343_IG16
- ;; size=58 bbWeight=4 PerfScore 88.00
+ ;; size=60 bbWeight=4 PerfScore 96.00
G_M48343_IG14: ; bbWeight=2, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=0040 {r6}, byref, isz
- ldr r3, [sp+0x14]
+ ldr r3, [sp+0x18]
; gcrRegs +[r3]
ldr r2, [r3+0x04]
; gcrRegs +[r2]
- str r2, [sp+0x0C] // [V30 tmp11]
+ str r2, [sp+0x10] // [V30 tmp11]
; GC ptr vars +{V30}
movs r0, 1
movw r1, 0xd1ff
@@ -265,11 +263,11 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=004
ldr r1, [r1]
blx r1 // <unknown method>
; gcrRegs -[r2-r3]
- ldr r3, [sp+0x0C]
+ ldr r3, [sp+0x10]
; gcrRegs +[r3]
cmp r3, 0
bne SHORT G_M48343_IG15
- ldr r0, [sp+0x14]
+ ldr r0, [sp+0x18]
; gcrRegs +[r0]
movs r1, 0
ldr r3, [r0]
@@ -280,8 +278,8 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=004
blx r3 // <unknown method>
mov r3, r0
; gcrRegs +[r3]
- ldr r0, [sp+0x14]
- str r3, [sp+0x0C]
+ ldr r0, [sp+0x18]
+ str r3, [sp+0x10]
; GC ptr vars +{V30}
mov r2, r3
; gcrRegs +[r2]
@@ -292,7 +290,7 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=004
; GC ptr vars -{V09}
blx lr // Internal.TypeSystem.TypeDesc:SetCachedCanonValue(int,Internal.TypeSystem.TypeDesc):this
; gcrRegs -[r0 r2-r3]
- ldr r3, [sp+0x0C] // [V30 tmp11]
+ ldr r3, [sp+0x10] // [V30 tmp11]
; gcrRegs +[r3]
;; size=64 bbWeight=2 PerfScore 54.00
G_M48343_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0638 {r3 r4 r5 r9 r10}, byrefRegs=0040 {r6}, gcvars, byref, isz
@@ -316,12 +314,11 @@ G_M48343_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0638 {
G_M48343_IG16: ; bbWeight=4, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=0040 {r6}, byref, isz
ldr r0, [sp+0x2C] // [V08 loc4]
adds r0, r0, 1
- ldr r2, [sp+0x1C] // [V66 cse4]
+ ldr r2, [sp+0x20] // [V65 cse3]
cmp r2, r0
mov r3, r0
- ldr r1, [sp+0x20] // [V63 cse1]
bgt SHORT G_M48343_IG13
- ;; size=14 bbWeight=4 PerfScore 28.00
+ ;; size=12 bbWeight=4 PerfScore 24.00
G_M48343_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0040 {r6}, byref, isz
; gcrRegs -[r9-r10]
mov r0, r4
@@ -400,7 +397,7 @@ G_M48343_IG21: ; bbWeight=0.50, gcrefRegs=0730 {r4 r5 r8 r9 r10}, byrefRe
; gcrRegs -[r0]
movs r3, 0
ldr r2, [r10+0x04]
- str r2, [sp+0x18] // [V67 cse5]
+ str r2, [sp+0x1C] // [V66 cse4]
cmp r2, 0
ble SHORT G_M48343_IG27
;; size=12 bbWeight=0.50 PerfScore 2.50
@@ -411,7 +408,7 @@ G_M48343_IG22: ; bbWeight=4, gcrefRegs=0730 {r4 r5 r8 r9 r10}, byrefRegs=
lsls r1, r3, 2
ldr r1, [r0+r1]
; gcrRegs +[r1]
- str r1, [sp+0x10] // [V13 loc9]
+ str r1, [sp+0x14] // [V13 loc9]
; GC ptr vars +{V13}
mov r0, r4
; gcrRegs +[r0]
@@ -421,7 +418,7 @@ G_M48343_IG22: ; bbWeight=4, gcrefRegs=0730 {r4 r5 r8 r9 r10}, byrefRegs=
; gcrRegs -[r1]
mov r1, r0
; gcrRegs +[r1]
- ldr r0, [sp+0x10]
+ ldr r0, [sp+0x14]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -433,16 +430,16 @@ G_M48343_IG22: ; bbWeight=4, gcrefRegs=0730 {r4 r5 r8 r9 r10}, byrefRegs=
...
@@ -9,59 +9,59 @@
; Final local variable assignments
;
; V00 this [V00,T26] ( 9, 22.50) ref -> r5 this class-hnd single-def <System.Buffers.SharedArrayPool`1[int]>
-; V01 loc0 [V01,T16] ( 5, 33.50) int -> r6
-; V02 loc1 [V02,T32] ( 5, 19 ) int -> [sp+0x6C] spill-single-def
+; V01 loc0 [V01,T17] ( 5, 33.50) int -> r6
+; V02 loc1 [V02,T31] ( 5, 19 ) int -> [sp+0x6C] spill-single-def
; V03 loc2 [V03,T25] ( 7, 27 ) ref -> r8 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T44] ( 4, 10 ) ref -> [sp+0x30] class-hnd exact spill-single-def <<unknown class>>
-; V05 loc4 [V05,T31] ( 6, 19 ) int -> r9
-; V06 loc5 [V06,T38] ( 8, 10.50) ref -> [sp+0x2C] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T43] ( 4, 10 ) ref -> [sp+0x2C] class-hnd exact spill-single-def <<unknown class>>
+; V05 loc4 [V05,T30] ( 6, 19 ) int -> r9
+; V06 loc5 [V06,T37] ( 8, 10.50) ref -> [sp+0x28] class-hnd EH-live spill-single-def <<unknown class>>
; V07 loc6 [V07 ] ( 2, 4 ) struct ( 8) [sp+0x64] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T39] ( 8, 10.50) ref -> [sp+0x28] class-hnd EH-live single-def <<unknown class>>
+; V08 loc7 [V08,T38] ( 8, 10.50) ref -> [sp+0x24] class-hnd EH-live single-def <<unknown class>>
; V09 loc8 [V09 ] ( 2, 4 ) struct ( 8) [sp+0x5C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T13] ( 4, 36 ) ref -> r9 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T14] ( 4, 36 ) ref -> r9 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T05] ( 5, 66 ) int -> r4
; V12 loc11 [V12,T03] ( 6, 64 ) ref -> r7 class-hnd <<unknown class>>
-; V13 loc12 [V13,T45] ( 2, 8.50) int -> r9
-; V14 loc13 [V14,T61] ( 3, 1.50) int -> r9
-; V15 loc14 [V15,T40] ( 8, 10.50) ref -> [sp+0x24] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T44] ( 2, 8.50) int -> r9
+; V14 loc13 [V14,T60] ( 3, 1.50) int -> r9
+; V15 loc14 [V15,T39] ( 8, 10.50) ref -> [sp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
; V16 loc15 [V16 ] ( 2, 4 ) struct ( 8) [sp+0x54] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T12] ( 5, 36 ) ref -> r4 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T13] ( 6, 44 ) ref -> r4 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> [sp+0x50]
-; V19 loc18 [V19,T28] ( 3, 24 ) int -> r12
-; V20 loc19 [V20,T08] ( 6, 48 ) ref -> [sp+0x20] class-hnd spill-single-def <<unknown class>>
+; V19 loc18 [V19,T27] ( 3, 24 ) int -> lr
+; V20 loc19 [V20,T08] ( 6, 48 ) ref -> [sp+0x1C] class-hnd spill-single-def <<unknown class>>
; V21 OutArgs [V21 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T29] ( 3, 20 ) ref -> [sp+0x1C] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T28] ( 3, 20 ) ref -> [sp+0x18] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
-; V24 tmp3 [V24,T15] ( 2, 36 ) int -> [sp+0x4C] spill-single-def "impAppendStmt"
+; V24 tmp3 [V24,T16] ( 2, 36 ) int -> [sp+0x4C] spill-single-def "impAppendStmt"
; V25 tmp4 [V25,T19] ( 2, 32 ) int -> [sp+0x48] spill-single-def "impAppendStmt"
; V26 tmp5 [V26,T20] ( 2, 32 ) int -> [sp+0x44] spill-single-def "impAppendStmt"
; V27 tmp6 [V27,T21] ( 2, 32 ) int -> [sp+0x40] spill-single-def "impAppendStmt"
; V28 tmp7 [V28,T22] ( 2, 32 ) int -> r7 "impAppendStmt"
-; V29 tmp8 [V29,T52] ( 3, 3 ) ref -> r4 single-def "handle histogram profile tmp"
+; V29 tmp8 [V29,T51] ( 3, 3 ) ref -> r4 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,T53] ( 3, 3 ) ref -> r4 single-def "handle histogram profile tmp"
+; V33 tmp12 [V33,T52] ( 3, 3 ) ref -> r4 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 -> r7 "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,T54] ( 3, 3 ) ref -> r4 single-def "handle histogram profile tmp"
+; V39 tmp18 [V39,T53] ( 3, 3 ) ref -> r4 single-def "handle histogram profile tmp"
;* V40 tmp19 [V40 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V41 tmp20 [V41,T10] ( 3, 48 ) ref -> [sp+0x18] spill-single-def "handle histogram profile tmp"
+; V41 tmp20 [V41,T10] ( 3, 48 ) ref -> [sp+0x14] 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,T30] ( 3, 20 ) int -> [sp+0x3C] spill-single-def "Inline stloc first use temp"
+; V45 tmp24 [V45,T29] ( 3, 20 ) int -> [sp+0x3C] 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,T14] ( 4, 36 ) ref -> [sp+0x14] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V48 tmp27 [V48,T15] ( 4, 36 ) ref -> [sp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V49 tmp28 [V49,T06] ( 5, 66 ) int -> [sp+0x38] "Inline stloc first use temp"
; V50 tmp29 [V50,T02] ( 3, 96 ) byref -> r0 "Inlining Arg"
;* V51 tmp30 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Array>
; V52 tmp31 [V52,T23] ( 2, 32 ) int -> r0 "Inlining Arg"
-; V53 tmp32 [V53,T17] ( 2, 32 ) byref -> r0 "Inlining Arg"
+; V53 tmp32 [V53,T11] ( 3, 48 ) byref -> r0 "Inlining Arg"
;* V54 tmp33 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Array>
; V55 tmp34 [V55,T24] ( 2, 32 ) int -> r0 "Inlining Arg"
; V56 tmp35 [V56 ] ( 2, 4 ) ref -> [sp+0x64] do-not-enreg[X] addr-exposed "field V07.key (fldOffset=0x0)" P-DEP
@@ -70,36 +70,35 @@
; V59 tmp38 [V59 ] ( 1, 2 ) ref -> [sp+0x60] do-not-enreg[X] addr-exposed "field V09.value (fldOffset=0x4)" P-DEP
; V60 tmp39 [V60 ] ( 2, 4 ) ref -> [sp+0x54] do-not-enreg[X] addr-exposed "field V16.key (fldOffset=0x0)" P-DEP
; V61 tmp40 [V61 ] ( 1, 2 ) ref -> [sp+0x58] do-not-enreg[X] addr-exposed "field V16.value (fldOffset=0x4)" P-DEP
-; V62 tmp41 [V62,T55] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V63 tmp42 [V63,T33] ( 2, 16 ) ref -> r3 "argument with side effect"
-; V64 tmp43 [V64,T49] ( 2, 8 ) ref -> r0 "argument with side effect"
+; V62 tmp41 [V62,T54] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V63 tmp42 [V63,T32] ( 2, 16 ) ref -> r3 "argument with side effect"
+; V64 tmp43 [V64,T48] ( 2, 8 ) ref -> r0 "argument with side effect"
; V65 tmp44 [V65,T18] ( 2, 32 ) ref -> r1 "argument with side effect"
-;* V66 tmp45 [V66,T36] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V67 tmp46 [V67,T63] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V68 tmp47 [V68,T56] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V69 tmp48 [V69,T57] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V70 tmp49 [V70,T34] ( 2, 16 ) ref -> r0 "argument with side effect"
-; V71 tmp50 [V71,T50] ( 2, 8 ) ref -> r0 "argument with side effect"
+;* V66 tmp45 [V66,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V67 tmp46 [V67,T62] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V68 tmp47 [V68,T55] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V69 tmp48 [V69,T56] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V70 tmp49 [V70,T33] ( 2, 16 ) ref -> r0 "argument with side effect"
+; V71 tmp50 [V71,T49] ( 2, 8 ) ref -> r0 "argument with side effect"
; V72 tmp51 [V72,T07] ( 2, 64 ) ref -> r1 "argument with side effect"
-;* V73 tmp52 [V73,T37] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V74 tmp53 [V74,T64] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V75 tmp54 [V75,T58] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V76 tmp55 [V76,T59] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V77 tmp56 [V77,T35] ( 2, 16 ) ref -> r0 "argument with side effect"
-; V78 tmp57 [V78,T51] ( 2, 8 ) ref -> r0 "argument with side effect"
-; V79 tmp58 [V79,T65] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V80 tmp59 [V80,T60] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V81 PSPSym [V81,T62] ( 1, 1 ) int -> [sp+0x70] do-not-enreg[V] "PSPSym"
-; V82 cse0 [V82,T46] ( 4, 8 ) ref -> r6 multi-def "CSE - conservative"
-; V83 cse1 [V83,T41] ( 6, 10.50) ref -> r6 multi-def "CSE - conservative"
-; V84 cse2 [V84,T47] ( 4, 8 ) ref -> r9 multi-def "CSE - conservative"
-; V85 cse3 [V85,T42] ( 6, 10.50) ref -> r9 multi-def "CSE - conservative"
-; V86 cse4 [V86,T48] ( 4, 8 ) ref -> registers multi-def "CSE - conservative"
-; V87 cse5 [V87,T43] ( 6, 10.50) ref -> [sp+0x10] multi-def "CSE - conservative"
-; V88 cse6 [V88,T27] ( 3, 24 ) byref -> [sp+0x0C] spill-single-def "CSE - moderate"
-; V89 cse7 [V89,T09] ( 4, 48 ) int -> r1 "CSE - moderate"
-; V90 cse8 [V90,T04] ( 3, 68 ) int -> [sp+0x34] spill-single-def "CSE - aggressive"
-; V91 rat0 [V91,T11] ( 3, 48 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+;* V73 tmp52 [V73,T36] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V74 tmp53 [V74,T63] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V75 tmp54 [V75,T57] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V76 tmp55 [V76,T58] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V77 tmp56 [V77,T34] ( 2, 16 ) ref -> r0 "argument with side effect"
+; V78 tmp57 [V78,T50] ( 2, 8 ) ref -> r0 "argument with side effect"
+; V79 tmp58 [V79,T64] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V80 tmp59 [V80,T59] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V81 PSPSym [V81,T61] ( 1, 1 ) int -> [sp+0x70] do-not-enreg[V] "PSPSym"
+; V82 cse0 [V82,T45] ( 4, 8 ) ref -> r6 multi-def "CSE - conservative"
+; V83 cse1 [V83,T40] ( 6, 10.50) ref -> r6 multi-def "CSE - conservative"
+; V84 cse2 [V84,T46] ( 4, 8 ) ref -> r9 multi-def "CSE - conservative"
+; V85 cse3 [V85,T41] ( 6, 10.50) ref -> r9 multi-def "CSE - conservative"
+; V86 cse4 [V86,T47] ( 4, 8 ) ref -> registers multi-def "CSE - conservative"
+; V87 cse5 [V87,T42] ( 6, 10.50) ref -> [sp+0x0C] multi-def "CSE - conservative"
+; V88 cse6 [V88,T09] ( 5, 56 ) int -> [sp+0x34] spill-single-def "CSE - aggressive"
+; V89 cse7 [V89,T04] ( 3, 68 ) int -> [sp+0x30] spill-single-def "CSE - aggressive"
+; V90 rat0 [V90,T12] ( 3, 48 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 116
@@ -161,25 +160,25 @@ G_M34916_IG03: ; bbWeight=0.50, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}
G_M34916_IG04: ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz
ldr r4, [r5+0x08]
; gcrRegs +[r4]
- str r4, [sp+0x30]
+ str r4, [sp+0x2C]
; GC ptr vars +{V04}
mov r9, 0
ldr r0, [r4+0x04]
cmp r0, 0
ble G_M34916_IG21
;; size=16 bbWeight=1 PerfScore 6.00
-G_M34916_IG05: ; bbWeight=4, gcVars=000000000000100000000000 {V04}, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34916_IG05: ; bbWeight=4, gcVars=000000000000080000000000 {V04}, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
add r0, r4, 8
; byrRegs +[r0]
lsl r3, r9, 2
ldr r3, [r0+r3]
; gcrRegs +[r3]
- str r3, [sp+0x1C]
+ str r3, [sp+0x18]
; GC ptr vars +{V22}
cmp r3, 0
beq G_M34916_IG20
;; size=18 bbWeight=4 PerfScore 24.00
-G_M34916_IG06: ; bbWeight=2, gcVars=000000000000100020000000 {V04 V22}, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34916_IG06: ; bbWeight=2, gcVars=000000000000080010000000 {V04 V22}, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r3-r4]
; byrRegs -[r0]
movw r0, 0xd1ff
@@ -214,11 +213,11 @@ G_M34916_IG06: ; bbWeight=2, gcVars=000000000000100020000000 {V04 V22}, g
ldr r3, [sp+0x4C] // [V24 tmp3]
;; size=82 bbWeight=2 PerfScore 50.00
G_M34916_IG07: ; bbWeight=2, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz
- ldr r0, [sp+0x1C]
+ ldr r0, [sp+0x18]
; gcrRegs +[r0]
ldr lr, [r0+0x04]
; gcrRegs +[lr]
- str lr, [sp+0x14]
+ str lr, [sp+0x10]
; GC ptr vars +{V48}
mov r12, 0
ldr r0, [lr+0x04]
@@ -226,7 +225,7 @@ G_M34916_IG07: ; bbWeight=2, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, b
cmp r0, 0
ble G_M34916_IG18
;; size=24 bbWeight=2 PerfScore 14.00
-G_M34916_IG08: ; bbWeight=16, gcVars=000000000000100000004000 {V04 V48}, gcrefRegs=4120 {r5 r8 lr}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34916_IG08: ; bbWeight=16, gcVars=000000000000080000008000 {V04 V48}, gcrefRegs=4120 {r5 r8 lr}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V22}
ldr r2, [sp+0x3C] // [V45 tmp24]
str r2, [sp] // [V21 OutArgs]
@@ -249,7 +248,7 @@ G_M34916_IG08: ; bbWeight=16, gcVars=000000000000100000004000 {V04 V48},
; gcr arg pop 0
ldr r4, [sp+0x38] // [V49 tmp28]
adds r4, r4, 1
- ldr r7, [sp+0x14] // [V48 tmp27]
+ ldr r7, [sp+0x10] // [V48 tmp27]
; gcrRegs +[r7]
ldr r0, [r7+0x04]
cmp r0, r4
@@ -259,7 +258,7 @@ G_M34916_IG08: ; bbWeight=16, gcVars=000000000000100000004000 {V04 V48},
ldr r3, [sp+0x4C] // [V24 tmp3]
bgt G_M34916_IG17
;; size=58 bbWeight=16 PerfScore 368.00
-G_M34916_IG09: ; bbWeight=4, gcVars=000000000000100000000000 {V04}, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34916_IG09: ; bbWeight=4, gcVars=000000000000080000000000 {V04}, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r7 lr]
; GC ptr vars -{V48}
movw r0, 0xd1ff
@@ -269,7 +268,7 @@ G_M34916_IG09: ; bbWeight=4, gcVars=000000000000100000000000 {V04}, gcref
blx r3 // CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add r9, r9, 1
- ldr r4, [sp+0x30] // [V04 loc3]
+ ldr r4, [sp+0x2C] // [V04 loc3]
; gcrRegs +[r4]
ldr r0, [r4+0x04]
cmp r0, r9
@@ -307,10 +306,10 @@ G_M34916_IG11: ; bbWeight=0.50, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}
; gcr arg pop 0
mov r9, r0
; gcrRegs +[r9]
- str r9, [sp+0x2C] // [V06 loc5]
+ str r9, [sp+0x28] // [V06 loc5]
; GC ptr vars +{V06}
;; size=50 bbWeight=0.50 PerfScore 8.50
-G_M34916_IG12: ; bbWeight=0.50, gcVars=000000000000004000000000 {V06}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34916_IG12: ; bbWeight=0.50, gcVars=000000000000002000000000 {V06}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
b SHORT G_M34916_IG14
;; size=2 bbWeight=0.50 PerfScore 0.50
@@ -403,32 +402,32 @@ G_M34916_IG15: ; bbWeight=0.50, gcrefRegs=0240 {r6 r9}, byrefRegs=0000 {}
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- b SHORT G_M34916_IG49
+ b SHORT G_M34916_IG50
;; size=72 bbWeight=0.50 PerfScore 11.00
-G_M34916_IG16: ; bbWeight=2, gcVars=000000000000100000000000 {V04}, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34916_IG16: ; bbWeight=2, gcVars=000000000000080000000000 {V04}, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4-r5 r8]
; GC ptr vars +{V04}
...
@@ -9,16 +9,16 @@
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 4, 10 ) ref -> [sp+0x8C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Array>
-; V01 loc1 [V01,T09] ( 6, 21 ) int -> r4
+; V01 loc1 [V01,T06] ( 6, 21 ) int -> r4
; V02 loc2 [V02 ] ( 8, 4 ) ref -> [sp+0x88] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
; V03 loc3 [V03 ] ( 38, 13 ) ref -> [sp+0x84] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <ulong[,]>
;* V04 loc4 [V04,T83] ( 0, 0 ) int -> zero-ref
;* V05 loc5 [V05,T74] ( 0, 0 ) int -> zero-ref
-; V06 loc6 [V06 ] ( 4, 33 ) ref -> [sp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
-; V07 loc7 [V07,T04] ( 7, 72.50) int -> r0
-; V08 loc8 [V08,T00] ( 7,100 ) int -> r3
+; V06 loc6 [V06 ] ( 5, 7 ) ref -> [sp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
+;* V07 loc7 [V07,T84] ( 0, 0 ) int -> zero-ref
+; V08 loc8 [V08,T02] ( 14, 26.50) int -> r0
; V09 loc9 [V09,T52] ( 5, 2.50) ref -> r0 class-hnd exact single-def <<unknown class>>
-; V10 loc10 [V10,T18] ( 14, 7 ) ref -> r0 class-hnd single-def <ulong[,]>
+; V10 loc10 [V10,T17] ( 14, 7 ) ref -> r0 class-hnd single-def <ulong[,]>
; V11 loc11 [V11,T53] ( 4, 2 ) ref -> r4 class-hnd exact single-def <<unknown class>>
; V12 loc12 [V12,T24] ( 10, 5 ) ref -> r1 class-hnd <<unknown class>>
; V13 OutArgs [V13 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -43,32 +43,32 @@
; V32 tmp19 [V32,T28] ( 2, 4 ) struct ( 4) [sp+0x58] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V33 tmp20 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V34 tmp21 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V35 tmp22 [V35,T05] ( 5, 40 ) ref -> r6 class-hnd "Inlining Arg" <System.Array>
+; V35 tmp22 [V35,T00] ( 5, 40 ) ref -> r6 class-hnd "Inlining Arg" <System.Array>
; V36 tmp23 [V36,T21] ( 2, 4 ) int -> r0 "Inline return value spill temp"
;* V37 tmp24 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V38 tmp25 [V38,T16] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
-; V39 tmp26 [V39,T07] ( 3, 24 ) byref -> r7 "Inlining Arg"
+; V38 tmp25 [V38,T15] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
+; V39 tmp26 [V39,T04] ( 3, 24 ) byref -> r7 "Inlining Arg"
;* V40 tmp27 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp28 [V41,T06] ( 5, 40 ) ref -> r6 class-hnd "Inlining Arg" <System.Array>
+; V41 tmp28 [V41,T01] ( 5, 40 ) ref -> r6 class-hnd "Inlining Arg" <System.Array>
; V42 tmp29 [V42,T22] ( 2, 4 ) int -> r0 "Inline return value spill temp"
;* V43 tmp30 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V44 tmp31 [V44,T17] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
-; V45 tmp32 [V45,T08] ( 3, 24 ) byref -> r7 "Inlining Arg"
+; V44 tmp31 [V44,T16] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
+; V45 tmp32 [V45,T05] ( 3, 24 ) byref -> r7 "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V47 tmp34 [V47,T19] ( 5, 6 ) int -> r0 "Single return block return value"
+; V47 tmp34 [V47,T18] ( 5, 6 ) int -> r0 "Single return block return value"
; V48 FramesRoot [V48,T26] ( 5, 5 ) int -> r5 "Pinvoke FrameListRoot"
; V49 PInvokeFrame [V49 ] ( 6, 6 ) struct (36) [sp+0x14] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V50 tmp37 [V50,T84] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V50 tmp37 [V50,T85] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V51 tmp38 [V51 ] ( 4, 8 ) struct ( 8) [sp+0x50] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V52 tmp39 [V52,T12] ( 2, 16 ) int -> r1 "argument with side effect"
-; V53 tmp40 [V53,T13] ( 2, 16 ) int -> r1 "argument with side effect"
+; V52 tmp39 [V52,T07] ( 2, 16 ) int -> r1 "argument with side effect"
+; V53 tmp40 [V53,T08] ( 2, 16 ) int -> r1 "argument with side effect"
; V54 tmp41 [V54 ] ( 4, 4 ) struct ( 8) [sp+0x48] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
; V55 tmp42 [V55,T61] ( 2, 2 ) int -> r2 "argument with side effect"
; V56 tmp43 [V56 ] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
; V57 tmp44 [V57 ] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V58 tmp45 [V58,T01] ( 3, 96 ) ref -> lr "arr expr"
-; V59 tmp46 [V59,T14] ( 21, 15 ) int -> r1 "MD array shared temp"
-; V60 tmp47 [V60,T15] ( 21, 15 ) int -> r12 "MD array shared temp"
+; V58 tmp45 [V58,T03] ( 6, 24 ) ref -> r2 "arr expr"
+; V59 tmp46 [V59,T09] ( 21, 15 ) int -> r1 "MD array shared temp"
+; V60 tmp47 [V60,T10] ( 21, 15 ) int -> r12 "MD array shared temp"
;* V61 tmp48 [V61,T76] ( 0, 0 ) int -> zero-ref "MD array shared temp"
; V62 tmp49 [V62,T49] ( 3, 3 ) int -> r4 "MD array shared temp"
;* V63 tmp50 [V63,T77] ( 0, 0 ) int -> zero-ref "MD array shared temp"
@@ -84,41 +84,42 @@
; V73 cse2 [V73,T68] ( 3, 1.50) int -> r12 "CSE - conservative"
; V74 cse3 [V74,T69] ( 3, 1.50) int -> r4 "CSE - conservative"
; V75 cse4 [V75,T70] ( 3, 1.50) int -> r2 "CSE - conservative"
-; V76 cse5 [V76,T10] ( 2, 20 ) int -> r1 hoist "CSE - aggressive"
+; V76 cse5 [V76,T19] ( 3, 6 ) byref -> r3 "CSE - moderate"
; V77 cse6 [V77,T56] ( 2, 1 ) int -> r1 "CSE - conservative"
; V78 cse7 [V78,T57] ( 2, 1 ) int -> r1 "CSE - conservative"
; V79 cse8 [V79,T71] ( 2, 1 ) int -> r12 "CSE - conservative"
; V80 cse9 [V80,T72] ( 2, 1 ) int -> r4 "CSE - conservative"
; V81 cse10 [V81,T73] ( 2, 1 ) int -> r2 "CSE - conservative"
-; V82 cse11 [V82,T11] ( 2, 20 ) int -> r2 hoist "CSE - aggressive"
-; V83 cse12 [V83,T25] ( 10, 5 ) int -> r3 "CSE - moderate"
-; V84 cse13 [V84,T58] ( 4, 2 ) int -> lr "CSE - conservative"
-; V85 rat0 [V85,T29] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V86 rat1 [V86,T30] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V87 rat2 [V87,T31] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V88 rat3 [V88,T32] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V89 rat4 [V89,T33] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V90 rat5 [V90,T34] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V91 rat6 [V91,T35] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V92 rat7 [V92,T36] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V93 rat8 [V93,T37] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V94 rat9 [V94,T38] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
-; V95 rat10 [V95,T39] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
-; V96 rat11 [V96,T40] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V97 rat12 [V97,T41] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V98 rat13 [V98,T64] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V99 rat14 [V99,T65] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V100 rat15 [V100,T42] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V101 rat16 [V101,T66] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V102 rat17 [V102,T67] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V103 rat18 [V103,T43] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V104 rat19 [V104,T44] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V105 rat20 [V105,T45] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V106 rat21 [V106,T46] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V107 rat22 [V107,T47] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V108 rat23 [V108,T48] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V109 rat24 [V109,T02] ( 3, 96 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
-; V110 rat25 [V110,T03] ( 3, 96 ) int -> r4 "ReplaceWithLclVar is creating a new local variable"
+; V82 cse11 [V82,T25] ( 10, 5 ) int -> r3 "CSE - moderate"
+; V83 cse12 [V83,T58] ( 4, 2 ) int -> lr "CSE - conservative"
+; V84 rat0 [V84,T29] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V85 rat1 [V85,T30] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V86 rat2 [V86,T31] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V87 rat3 [V87,T32] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V88 rat4 [V88,T33] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V89 rat5 [V89,T34] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V90 rat6 [V90,T35] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V91 rat7 [V91,T36] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V92 rat8 [V92,T37] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V93 rat9 [V93,T38] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
+; V94 rat10 [V94,T39] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
+; V95 rat11 [V95,T40] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V96 rat12 [V96,T41] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V97 rat13 [V97,T64] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V98 rat14 [V98,T65] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V99 rat15 [V99,T42] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V100 rat16 [V100,T66] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V101 rat17 [V101,T67] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V102 rat18 [V102,T43] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V103 rat19 [V103,T44] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V104 rat20 [V104,T45] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V105 rat21 [V105,T46] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V106 rat22 [V106,T47] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V107 rat23 [V107,T48] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V108 rat24 [V108,T11] ( 3, 12 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V109 rat25 [V109,T13] ( 3, 12 ) int -> lr "ReplaceWithLclVar is creating a new local variable"
+; V110 rat26 [V110,T12] ( 3, 12 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V111 rat27 [V111,T14] ( 3, 12 ) int -> lr "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 148
@@ -908,7 +909,7 @@ G_M55471_IG36: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
orrs r0, r1
bne G_M55471_IG42
;; size=142 bbWeight=0.25 PerfScore 14.50
-G_M55471_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55471_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movs r1, 2
@@ -1004,52 +1005,9 @@ G_M55471_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r4]
; byrRegs -[r0]
; gcr arg pop 0
- movs r0, 0
+ b SHORT G_M55471_IG39
;; size=200 bbWeight=0.50 PerfScore 36.00
-G_M55471_IG38: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movs r3, 0
- b SHORT G_M55471_IG41
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M55471_IG39: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr lr, [sp+0x80] // [V06 loc6]
- ; gcrRegs +[lr]
- ldr lr, [lr+0x04]
- ; gcrRegs -[lr]
- cmp r0, lr
- bhs SHORT G_M55471_IG45
- ldr lr, [sp+0x80] // [V06 loc6]
- ; gcrRegs +[lr]
- add lr, lr, 8
- ; gcrRegs -[lr]
- ; byrRegs +[lr]
- ldr lr, [lr+r2]
- ; gcrRegs +[lr]
- ; byrRegs -[lr]
- ldr r12, [lr+0x04]
- cmp r3, r12
- bhs SHORT G_M55471_IG45
- add lr, lr, 8
- ; gcrRegs -[lr]
- ; byrRegs +[lr]
- lsl r12, r3, 3
- add lr, r12
- ldr r12, [lr]
- ldr lr, [lr+0x04]
- ; byrRegs -[lr]
- adds r4, r1, r3
- asrs r6, r4, 31
- eor r12, r12, r4
- eor lr, lr, r6
- orrs lr, r12, lr
- bne SHORT G_M55471_IG42
- adds r3, r3, 1
- cmp r3, 3
- blt SHORT G_M55471_IG39
- adds r0, r0, 1
- cmp r0, 2
- blt SHORT G_M55471_IG38
- ;; size=80 bbWeight=16 PerfScore 432.00
-G_M55471_IG40: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M55471_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -1060,13 +1018,80 @@ G_M55471_IG40: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movs r0, 100
b SHORT G_M55471_IG43
;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M55471_IG41: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lsls r2, r0, 2
- movs r1, 3
- mul r1, r0, r1
- b SHORT G_M55471_IG39
- ;; size=10 bbWeight=4 PerfScore 16.00
+G_M55471_IG39: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r0, 0
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M55471_IG40: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movs r3, 0
+ ldr r2, [sp+0x80] // [V06 loc6]
+ ; gcrRegs +[r2]
+ ldr r2, [r2+0x04]
+ ; gcrRegs -[r2]
+ cmp r3, r2
+ bhs SHORT G_M55471_IG45
+ ldr r3, [sp+0x80] // [V06 loc6]
+ ; gcrRegs +[r3]
+ adds r3, 8
+ ; gcrRegs -[r3]
+ ; byrRegs +[r3]
+ ldr r2, [r3]
+ ; gcrRegs +[r2]
+ ldr r1, [r2+0x04]
+ cmp r0, r1
+ bhs SHORT G_M55471_IG45
+ adds r2, 8
+ ; gcrRegs -[r2]
+ ; byrRegs +[r2]
+ lsls r1, r0, 3
+ adds r2, r2, r1
+ ldr r1, [r2]
+ ldr r2, [r2+0x04]
+ ; byrRegs -[r2]
+ mov lr, r0
+ asr r12, lr, 31
+ eor r1, r1, lr
+ eor r2, r2, r12
+ orrs r2, r1
+ bne SHORT G_M55471_IG42
...
@@ -9,16 +9,16 @@
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 4, 10 ) ref -> [sp+0x8C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Array>
-; V01 loc1 [V01,T09] ( 6, 21 ) int -> r4
+; V01 loc1 [V01,T06] ( 6, 21 ) int -> r4
; V02 loc2 [V02 ] ( 8, 4 ) ref -> [sp+0x88] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
; V03 loc3 [V03 ] ( 38, 13 ) ref -> [sp+0x84] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <ulong[,]>
;* V04 loc4 [V04,T83] ( 0, 0 ) int -> zero-ref
;* V05 loc5 [V05,T74] ( 0, 0 ) int -> zero-ref
-; V06 loc6 [V06 ] ( 4, 33 ) ref -> [sp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
-; V07 loc7 [V07,T04] ( 7, 72.50) int -> r0
-; V08 loc8 [V08,T00] ( 7,100 ) int -> r3
+; V06 loc6 [V06 ] ( 5, 7 ) ref -> [sp+0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
+;* V07 loc7 [V07,T84] ( 0, 0 ) int -> zero-ref
+; V08 loc8 [V08,T02] ( 14, 26.50) int -> r0
; V09 loc9 [V09,T52] ( 5, 2.50) ref -> r0 class-hnd exact single-def <<unknown class>>
-; V10 loc10 [V10,T18] ( 14, 7 ) ref -> r0 class-hnd single-def <ulong[,]>
+; V10 loc10 [V10,T17] ( 14, 7 ) ref -> r0 class-hnd single-def <ulong[,]>
; V11 loc11 [V11,T53] ( 4, 2 ) ref -> r4 class-hnd exact single-def <<unknown class>>
; V12 loc12 [V12,T24] ( 10, 5 ) ref -> r1 class-hnd <<unknown class>>
; V13 OutArgs [V13 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -43,32 +43,32 @@
; V32 tmp19 [V32,T28] ( 2, 4 ) struct ( 4) [sp+0x58] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V33 tmp20 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V34 tmp21 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V35 tmp22 [V35,T05] ( 5, 40 ) ref -> r6 class-hnd "Inlining Arg" <System.Array>
+; V35 tmp22 [V35,T00] ( 5, 40 ) ref -> r6 class-hnd "Inlining Arg" <System.Array>
; V36 tmp23 [V36,T21] ( 2, 4 ) int -> r0 "Inline return value spill temp"
;* V37 tmp24 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V38 tmp25 [V38,T16] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
-; V39 tmp26 [V39,T07] ( 3, 24 ) byref -> r7 "Inlining Arg"
+; V38 tmp25 [V38,T15] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
+; V39 tmp26 [V39,T04] ( 3, 24 ) byref -> r7 "Inlining Arg"
;* V40 tmp27 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp28 [V41,T06] ( 5, 40 ) ref -> r6 class-hnd "Inlining Arg" <System.Array>
+; V41 tmp28 [V41,T01] ( 5, 40 ) ref -> r6 class-hnd "Inlining Arg" <System.Array>
; V42 tmp29 [V42,T22] ( 2, 4 ) int -> r0 "Inline return value spill temp"
;* V43 tmp30 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V44 tmp31 [V44,T17] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
-; V45 tmp32 [V45,T08] ( 3, 24 ) byref -> r7 "Inlining Arg"
+; V44 tmp31 [V44,T16] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
+; V45 tmp32 [V45,T05] ( 3, 24 ) byref -> r7 "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V47 tmp34 [V47,T19] ( 5, 6 ) int -> r0 "Single return block return value"
+; V47 tmp34 [V47,T18] ( 5, 6 ) int -> r0 "Single return block return value"
; V48 FramesRoot [V48,T26] ( 5, 5 ) int -> r5 "Pinvoke FrameListRoot"
; V49 PInvokeFrame [V49 ] ( 6, 6 ) struct (36) [sp+0x14] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V50 tmp37 [V50,T84] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V50 tmp37 [V50,T85] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V51 tmp38 [V51 ] ( 4, 8 ) struct ( 8) [sp+0x50] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V52 tmp39 [V52,T12] ( 2, 16 ) int -> r1 "argument with side effect"
-; V53 tmp40 [V53,T13] ( 2, 16 ) int -> r1 "argument with side effect"
+; V52 tmp39 [V52,T07] ( 2, 16 ) int -> r1 "argument with side effect"
+; V53 tmp40 [V53,T08] ( 2, 16 ) int -> r1 "argument with side effect"
; V54 tmp41 [V54 ] ( 4, 4 ) struct ( 8) [sp+0x48] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
; V55 tmp42 [V55,T61] ( 2, 2 ) int -> r2 "argument with side effect"
; V56 tmp43 [V56 ] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
; V57 tmp44 [V57 ] ( 4, 4 ) struct ( 8) [sp+0x38] do-not-enreg[XSA] multireg-arg must-init addr-exposed "by-value mkrefany struct argument" <System.TypedReference>
-; V58 tmp45 [V58,T01] ( 3, 96 ) ref -> lr "arr expr"
-; V59 tmp46 [V59,T14] ( 21, 15 ) int -> r1 "MD array shared temp"
-; V60 tmp47 [V60,T15] ( 21, 15 ) int -> r12 "MD array shared temp"
+; V58 tmp45 [V58,T03] ( 6, 24 ) ref -> r2 "arr expr"
+; V59 tmp46 [V59,T09] ( 21, 15 ) int -> r1 "MD array shared temp"
+; V60 tmp47 [V60,T10] ( 21, 15 ) int -> r12 "MD array shared temp"
;* V61 tmp48 [V61,T76] ( 0, 0 ) int -> zero-ref "MD array shared temp"
; V62 tmp49 [V62,T49] ( 3, 3 ) int -> r4 "MD array shared temp"
;* V63 tmp50 [V63,T77] ( 0, 0 ) int -> zero-ref "MD array shared temp"
@@ -84,41 +84,42 @@
; V73 cse2 [V73,T68] ( 3, 1.50) int -> r12 "CSE - conservative"
; V74 cse3 [V74,T69] ( 3, 1.50) int -> r4 "CSE - conservative"
; V75 cse4 [V75,T70] ( 3, 1.50) int -> r2 "CSE - conservative"
-; V76 cse5 [V76,T10] ( 2, 20 ) int -> r1 hoist "CSE - aggressive"
+; V76 cse5 [V76,T19] ( 3, 6 ) byref -> r3 "CSE - moderate"
; V77 cse6 [V77,T56] ( 2, 1 ) int -> r1 "CSE - conservative"
; V78 cse7 [V78,T57] ( 2, 1 ) int -> r1 "CSE - conservative"
; V79 cse8 [V79,T71] ( 2, 1 ) int -> r12 "CSE - conservative"
; V80 cse9 [V80,T72] ( 2, 1 ) int -> r4 "CSE - conservative"
; V81 cse10 [V81,T73] ( 2, 1 ) int -> r2 "CSE - conservative"
-; V82 cse11 [V82,T11] ( 2, 20 ) int -> r2 hoist "CSE - aggressive"
-; V83 cse12 [V83,T25] ( 10, 5 ) int -> r3 "CSE - moderate"
-; V84 cse13 [V84,T58] ( 4, 2 ) int -> lr "CSE - conservative"
-; V85 rat0 [V85,T29] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V86 rat1 [V86,T30] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V87 rat2 [V87,T31] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V88 rat3 [V88,T32] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V89 rat4 [V89,T33] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V90 rat5 [V90,T34] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V91 rat6 [V91,T35] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V92 rat7 [V92,T36] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V93 rat8 [V93,T37] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V94 rat9 [V94,T38] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
-; V95 rat10 [V95,T39] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
-; V96 rat11 [V96,T40] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V97 rat12 [V97,T41] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V98 rat13 [V98,T64] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V99 rat14 [V99,T65] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V100 rat15 [V100,T42] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V101 rat16 [V101,T66] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V102 rat17 [V102,T67] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V103 rat18 [V103,T43] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V104 rat19 [V104,T44] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V105 rat20 [V105,T45] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V106 rat21 [V106,T46] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V107 rat22 [V107,T47] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V108 rat23 [V108,T48] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V109 rat24 [V109,T02] ( 3, 96 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
-; V110 rat25 [V110,T03] ( 3, 96 ) int -> r4 "ReplaceWithLclVar is creating a new local variable"
+; V82 cse11 [V82,T25] ( 10, 5 ) int -> r3 "CSE - moderate"
+; V83 cse12 [V83,T58] ( 4, 2 ) int -> lr "CSE - conservative"
+; V84 rat0 [V84,T29] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V85 rat1 [V85,T30] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V86 rat2 [V86,T31] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V87 rat3 [V87,T32] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V88 rat4 [V88,T33] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V89 rat5 [V89,T34] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V90 rat6 [V90,T35] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V91 rat7 [V91,T36] ( 3, 3 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V92 rat8 [V92,T37] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V93 rat9 [V93,T38] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
+; V94 rat10 [V94,T39] ( 3, 3 ) byref -> lr "ReplaceWithLclVar is creating a new local variable"
+; V95 rat11 [V95,T40] ( 3, 3 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V96 rat12 [V96,T41] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V97 rat13 [V97,T64] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V98 rat14 [V98,T65] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V99 rat15 [V99,T42] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V100 rat16 [V100,T66] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V101 rat17 [V101,T67] ( 3, 1.50) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V102 rat18 [V102,T43] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V103 rat19 [V103,T44] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V104 rat20 [V104,T45] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V105 rat21 [V105,T46] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V106 rat22 [V106,T47] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V107 rat23 [V107,T48] ( 3, 3 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V108 rat24 [V108,T11] ( 3, 12 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V109 rat25 [V109,T13] ( 3, 12 ) int -> lr "ReplaceWithLclVar is creating a new local variable"
+; V110 rat26 [V110,T12] ( 3, 12 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V111 rat27 [V111,T14] ( 3, 12 ) int -> lr "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 148
@@ -908,7 +909,7 @@ G_M55471_IG36: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
orrs r0, r1
bne G_M55471_IG42
;; size=142 bbWeight=0.25 PerfScore 14.50
-G_M55471_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55471_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movs r1, 2
@@ -1004,52 +1005,9 @@ G_M55471_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r4]
; byrRegs -[r0]
; gcr arg pop 0
- movs r0, 0
+ b SHORT G_M55471_IG39
;; size=200 bbWeight=0.50 PerfScore 36.00
-G_M55471_IG38: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movs r3, 0
- b SHORT G_M55471_IG41
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M55471_IG39: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr lr, [sp+0x80] // [V06 loc6]
- ; gcrRegs +[lr]
- ldr lr, [lr+0x04]
- ; gcrRegs -[lr]
- cmp r0, lr
- bhs SHORT G_M55471_IG45
- ldr lr, [sp+0x80] // [V06 loc6]
- ; gcrRegs +[lr]
- add lr, lr, 8
- ; gcrRegs -[lr]
- ; byrRegs +[lr]
- ldr lr, [lr+r2]
- ; gcrRegs +[lr]
- ; byrRegs -[lr]
- ldr r12, [lr+0x04]
- cmp r3, r12
- bhs SHORT G_M55471_IG45
- add lr, lr, 8
- ; gcrRegs -[lr]
- ; byrRegs +[lr]
- lsl r12, r3, 3
- add lr, r12
- ldr r12, [lr]
- ldr lr, [lr+0x04]
- ; byrRegs -[lr]
- adds r4, r1, r3
- asrs r6, r4, 31
- eor r12, r12, r4
- eor lr, lr, r6
- orrs lr, r12, lr
- bne SHORT G_M55471_IG42
- adds r3, r3, 1
- cmp r3, 3
- blt SHORT G_M55471_IG39
- adds r0, r0, 1
- cmp r0, 2
- blt SHORT G_M55471_IG38
- ;; size=80 bbWeight=16 PerfScore 432.00
-G_M55471_IG40: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M55471_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -1060,13 +1018,80 @@ G_M55471_IG40: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movs r0, 100
b SHORT G_M55471_IG43
;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M55471_IG41: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lsls r2, r0, 2
- movs r1, 3
- mul r1, r0, r1
- b SHORT G_M55471_IG39
- ;; size=10 bbWeight=4 PerfScore 16.00
+G_M55471_IG39: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r0, 0
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M55471_IG40: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movs r3, 0
+ ldr r2, [sp+0x80] // [V06 loc6]
+ ; gcrRegs +[r2]
+ ldr r2, [r2+0x04]
+ ; gcrRegs -[r2]
+ cmp r3, r2
+ bhs SHORT G_M55471_IG45
+ ldr r3, [sp+0x80] // [V06 loc6]
+ ; gcrRegs +[r3]
+ adds r3, 8
+ ; gcrRegs -[r3]
+ ; byrRegs +[r3]
+ ldr r2, [r3]
+ ; gcrRegs +[r2]
+ ldr r1, [r2+0x04]
+ cmp r0, r1
+ bhs SHORT G_M55471_IG45
+ adds r2, 8
+ ; gcrRegs -[r2]
+ ; byrRegs +[r2]
+ lsls r1, r0, 3
+ adds r2, r2, r1
+ ldr r1, [r2]
+ ldr r2, [r2+0x04]
+ ; byrRegs -[r2]
+ mov lr, r0
+ asr r12, lr, 31
+ eor r1, r1, lr
+ eor r2, r2, r12
+ orrs r2, r1
+ bne SHORT G_M55471_IG42
...
@@ -8,15 +8,15 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T07] ( 5, 4.50) ref -> r5 class-hnd single-def <System.String>
-; V01 loc0 [V01,T00] ( 16, 26 ) int -> r6
+; V00 arg0 [V00,T06] ( 5, 4.50) ref -> r5 class-hnd single-def <System.String>
+; V01 loc0 [V01,T00] ( 14, 25.50) int -> r6
; V02 loc1 [V02,T01] ( 14, 25.50) int -> r8
; V03 loc2 [V03,T05] ( 6, 11 ) ref -> r9 class-hnd <System.String>
-; V04 loc3 [V04,T06] ( 7, 6.50) int -> r2
-; V05 loc4 [V05,T03] ( 14, 18.54) int -> r8
+; V04 loc3 [V04,T07] ( 4, 6.50) int -> r2
+; V05 loc4 [V05,T03] ( 8, 21.50) int -> r8
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T04] ( 9, 16.04) int -> r7 "CSE - aggressive"
-; V08 cse1 [V08,T02] ( 10, 22 ) byref -> r10 multi-def "CSE - aggressive"
+; V07 cse0 [V07,T04] ( 8, 19.50) int -> r7 "CSE - aggressive"
+; V08 cse1 [V08,T02] ( 9, 22 ) byref -> r10 multi-def "CSE - aggressive"
;
; Lcl frame size = 4
@@ -68,7 +68,7 @@ G_M5940_IG08: ; bbWeight=8, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, by
;; size=6 bbWeight=8 PerfScore 16.00
G_M5940_IG09: ; bbWeight=4, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref, isz
cmp r8, r7
- bhs SHORT G_M5940_IG24
+ bhs SHORT G_M5940_IG20
add r10, r9, 8
; byrRegs +[r10]
lsl r0, r8, 1
@@ -85,11 +85,11 @@ G_M5940_IG09: ; bbWeight=4, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, by
;; size=34 bbWeight=4 PerfScore 48.00
G_M5940_IG10: ; bbWeight=1, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref, isz
cmp r6, r8
- bge SHORT G_M5940_IG22
+ bge SHORT G_M5940_IG18
;; size=4 bbWeight=1 PerfScore 2.00
G_M5940_IG11: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref, isz
cmp r6, r7
- bhs SHORT G_M5940_IG24
+ bhs SHORT G_M5940_IG20
add r10, r9, 8
; byrRegs +[r10]
lsls r2, r6, 1
@@ -97,7 +97,7 @@ G_M5940_IG11: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {},
cmp r2, 91
bne SHORT G_M5940_IG12
cmp r8, r7
- bhs SHORT G_M5940_IG24
+ bhs SHORT G_M5940_IG20
lsl r2, r8, 1
ldrh r2, [r10+r2]
cmp r2, 93
@@ -107,67 +107,39 @@ G_M5940_IG11: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {},
;; size=40 bbWeight=0.50 PerfScore 7.50
G_M5940_IG12: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0400 {r10}, byref, isz
cmp r8, r7
- bhs SHORT G_M5940_IG24
+ bhs SHORT G_M5940_IG20
lsl r2, r8, 1
ldrh r2, [r10+r2]
cmp r2, 93
- beq SHORT G_M5940_IG22
+ beq SHORT G_M5940_IG18
movs r2, 0
cmp r8, r6
- blt SHORT G_M5940_IG22
- orrs r0, r8, r6
- cmp r0, 0
- blt SHORT G_M5940_IG17
- cmp r7, r8
- ble SHORT G_M5940_IG17
- ;; size=34 bbWeight=0.50 PerfScore 7.00
-G_M5940_IG13: ; bbWeight=3.96, gcrefRegs=0220 {r5 r9}, byrefRegs=0400 {r10}, byref, isz
+ blt SHORT G_M5940_IG18
+ ;; size=22 bbWeight=0.50 PerfScore 4.50
+G_M5940_IG13: ; bbWeight=4, gcrefRegs=0220 {r5 r9}, byrefRegs=0400 {r10}, byref, isz
+ cmp r8, r7
+ bhs SHORT G_M5940_IG20
lsl r0, r8, 1
ldrh r0, [r10+r0]
cmp r0, 44
bne SHORT G_M5940_IG15
- ;; size=12 bbWeight=3.96 PerfScore 15.84
-G_M5940_IG14: ; bbWeight=1.98, gcrefRegs=0220 {r5 r9}, byrefRegs=0400 {r10}, byref, isz
+ ;; size=16 bbWeight=4 PerfScore 24.00
+G_M5940_IG14: ; bbWeight=2, gcrefRegs=0220 {r5 r9}, byrefRegs=0400 {r10}, byref, isz
adds r2, r2, 1
cmp r2, 4
- beq SHORT G_M5940_IG21
- ;; size=6 bbWeight=1.98 PerfScore 5.94
-G_M5940_IG15: ; bbWeight=3.96, gcrefRegs=0220 {r5 r9}, byrefRegs=0400 {r10}, byref, isz
+ beq SHORT G_M5940_IG17
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M5940_IG15: ; bbWeight=4, gcrefRegs=0220 {r5 r9}, byrefRegs=0400 {r10}, byref, isz
add r8, r8, -1
cmp r8, r6
bge SHORT G_M5940_IG13
- ;; size=8 bbWeight=3.96 PerfScore 11.88
+ ;; size=8 bbWeight=4 PerfScore 12.00
G_M5940_IG16: ; bbWeight=0.50, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5]
; byrRegs -[r10]
- b SHORT G_M5940_IG22
+ b SHORT G_M5940_IG18
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M5940_IG17: ; bbWeight=0.04, gcrefRegs=0220 {r5 r9}, byrefRegs=0400 {r10}, byref, isz
- ; gcrRegs +[r5]
- ; byrRegs +[r10]
- cmp r8, r7
- bhs SHORT G_M5940_IG24
- lsl r0, r8, 1
- ldrh r0, [r10+r0]
- cmp r0, 44
- bne SHORT G_M5940_IG19
- ;; size=16 bbWeight=0.04 PerfScore 0.24
-G_M5940_IG18: ; bbWeight=0.02, gcrefRegs=0220 {r5 r9}, byrefRegs=0400 {r10}, byref, isz
- adds r2, r2, 1
- cmp r2, 4
- beq SHORT G_M5940_IG21
- ;; size=6 bbWeight=0.02 PerfScore 0.06
-G_M5940_IG19: ; bbWeight=0.04, gcrefRegs=0220 {r5 r9}, byrefRegs=0400 {r10}, byref, isz
- add r8, r8, -1
- cmp r8, r6
- bge SHORT G_M5940_IG17
- ;; size=8 bbWeight=0.04 PerfScore 0.12
-G_M5940_IG20: ; bbWeight=0.50, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5]
- ; byrRegs -[r10]
- b SHORT G_M5940_IG22
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M5940_IG21: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M5940_IG17: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r9] +[r5]
sub r2, r8, r6
mov r0, r5
@@ -183,15 +155,15 @@ G_M5940_IG21: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, by
mov r9, r0
; gcrRegs +[r9]
;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M5940_IG22: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref
+G_M5940_IG18: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r9
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M5940_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M5940_IG19: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M5940_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M5940_IG20: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r9]
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
@@ -202,7 +174,7 @@ G_M5940_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 286, prolog size 10, PerfScore 191.08, instruction count 109, allocated bytes for code 286 (MethodHash=714fe8cb) for method System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
+; Total bytes of code 246, prolog size 10, PerfScore 196.00, instruction count 93, allocated bytes for code 246 (MethodHash=714fe8cb) for method System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -214,7 +186,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 143 (0x0008f) Actual length = 286 (0x00011e)
+ Function Length : 123 (0x0007b) Actual length = 246 (0x0000f6)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -4,46 +4,45 @@
; ReadyToRun compilation
; optimized code
; r11 based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 12, 7 ) byref -> r5 this single-def
-; V01 arg1 [V01,T08] ( 6, 6 ) struct (16) [sp+0x60] do-not-enreg[SA] multireg-arg single-def double-align <System.Decimal>
+; V00 this [V00,T03] ( 12, 7 ) byref -> r5 this single-def
+; V01 arg1 [V01,T04] ( 6, 6 ) struct (16) [sp+0x60] do-not-enreg[SA] multireg-arg single-def double-align <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T00] ( 10, 16 ) int -> r8
+; V03 loc1 [V03,T06] ( 9, 4.75) int -> r8
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[int]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [sp+0x2C] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-; V07 tmp2 [V07 ] ( 4, 8 ) struct ( 8) [sp+0x24] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
+; V07 tmp2 [V07 ] ( 4, 8 ) struct ( 8) [sp+0x24] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
; V08 tmp3 [V08 ] ( 5, 10 ) struct (16) [sp+0x10] do-not-enreg[HSA] multireg-arg hidden-struct-arg double-align "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T09] ( 3, 3 ) ref -> r3 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T12] ( 2, 2 ) int -> r2 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T08] ( 3, 3 ) ref -> r3 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T11] ( 2, 2 ) int -> r2 "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] ( 3, 1.50) int -> r3
-; V14 tmp9 [V14,T10] ( 3, 3 ) ref -> r3 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T13] ( 2, 2 ) int -> r2 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T11] ( 3, 3 ) ref -> r3 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T14] ( 2, 2 ) int -> r2 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T15] ( 2, 2 ) int -> r0 "impAppendStmt"
+; V13 tmp8 [V13,T15] ( 3, 1.50) int -> r3
+; V14 tmp9 [V14,T09] ( 3, 3 ) ref -> r3 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T12] ( 2, 2 ) int -> r2 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T10] ( 3, 3 ) ref -> r3 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T13] ( 2, 2 ) int -> r2 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T14] ( 2, 2 ) int -> r0 "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] ( 3, 1.50) int -> r3
-; V24 tmp19 [V24,T06] ( 9, 9 ) byref -> r6 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp20 [V25,T07] ( 7, 8 ) int -> r7 "field V02._length (fldOffset=0x4)" P-INDEP
+; V23 tmp18 [V23,T16] ( 3, 1.50) int -> r3
+; V24 tmp19 [V24,T05] ( 11, 6.50) byref -> r6 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp20 [V25,T07] ( 5, 3.50) int -> r7 "field V02._length (fldOffset=0x4)" 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=0x4)" P-INDEP
; V28 tmp23 [V28 ] ( 3, 5 ) byref -> [sp+0x24] do-not-enreg[X] addr-exposed ptr "field V07._reference (fldOffset=0x0)" P-DEP
; V29 tmp24 [V29 ] ( 3, 5 ) int -> [sp+0x28] do-not-enreg[X] addr-exposed ptr "field V07._length (fldOffset=0x4)" P-DEP
-; V30 tmp25 [V30,T01] ( 5, 10 ) int -> [sp+0x10] do-not-enreg[H] hidden-struct-arg "field V08._flags (fldOffset=0x0)" P-DEP
-; V31 tmp26 [V31,T02] ( 5, 10 ) int -> [sp+0x14] do-not-enreg[H] hidden-struct-arg "field V08._hi32 (fldOffset=0x4)" P-DEP
-; V32 tmp27 [V32,T03] ( 5, 10 ) long -> [sp+0x18] do-not-enreg[H] hidden-struct-arg "field V08._lo64 (fldOffset=0x8)" P-DEP
+; V30 tmp25 [V30,T00] ( 5, 10 ) int -> [sp+0x10] do-not-enreg[H] hidden-struct-arg "field V08._flags (fldOffset=0x0)" P-DEP
+; V31 tmp26 [V31,T01] ( 5, 10 ) int -> [sp+0x14] do-not-enreg[H] hidden-struct-arg "field V08._hi32 (fldOffset=0x4)" P-DEP
+; V32 tmp27 [V32,T02] ( 5, 10 ) long -> [sp+0x18] do-not-enreg[H] hidden-struct-arg "field V08._lo64 (fldOffset=0x8)" P-DEP
; V33 GsCookie [V33 ] ( 1, 1 ) int -> [sp+0x3C] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V34 cse0 [V34,T18] ( 3, 1.50) int -> r0 "CSE - moderate"
-; V35 cse1 [V35,T04] ( 3, 10 ) int -> r3 "CSE - aggressive"
+; V34 cse0 [V34,T17] ( 3, 1.50) int -> r0 "CSE - moderate"
; TEMP_01 ref -> [r11-0x4C]
;
; Lcl frame size = 68
@@ -54,7 +53,6 @@ G_M46478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub sp, 68
add r11, sp, 88
movs r1, 0
- str r1, [sp+0x24]
str r1, [sp+0x0C]
movw r1, LOW RELOC 0xD1FFAB1E
movt r1, HIGH RELOC 0xD1FFAB1E
@@ -63,7 +61,7 @@ G_M46478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r1, [sp+0x3C]
mov r5, r0
; byrRegs +[r5]
- ;; size=34 bbWeight=1 PerfScore 13.00
+ ;; size=32 bbWeight=1 PerfScore 12.00
G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
movs r0, 0
str r0, [sp+0x24]
@@ -76,7 +74,6 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre
movs r2, 4
ldr r3, [r4]
blx r3 // <unknown method>
- ; gcr arg pop 0
ldr r6, [sp+0x24]
; byrRegs +[r6]
ldr r7, [sp+0x28]
@@ -92,9 +89,7 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre
add r4, pc
ldr r1, [r4]
blx r1 // <unknown method>
- ; gcr arg pop 0
str r6, [sp]
- ; byr arg write
str r7, [sp+0x04]
ldr r0, [sp+0x10]
ldr r1, [sp+0x14]
@@ -105,30 +100,50 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre
add r4, pc
ldr lr, [r4]
blx lr // <unknown method>
- ; gcr arg pop 0
mov r8, 3
b SHORT G_M46478_IG04
;; size=92 bbWeight=1 PerfScore 38.00
-G_M46478_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
- mov r8, r3
- cmp r8, 0
- ble SHORT G_M46478_IG05
- ;; size=8 bbWeight=2 PerfScore 6.00
-G_M46478_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
- add r3, r8, -1
+G_M46478_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
+ mov r8, 2
+ b SHORT G_M46478_IG07
+ ;; size=6 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
+ movs r3, 2
cmp r3, r7
- bhs G_M46478_IG18
- lsl r2, r8, 2
- subs r2, r2, 4
- ldr r2, [r6+r2]
- cmp r2, 0
+ bhs G_M46478_IG24
+ ldr r3, [r6+0x08]
+ cmp r3, 0
beq SHORT G_M46478_IG03
- ;; size=22 bbWeight=4 PerfScore 32.00
-G_M46478_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
+ ;; size=14 bbWeight=0.50 PerfScore 3.00
+G_M46478_IG05: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
+ b SHORT G_M46478_IG11
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
+ mov r8, 1
+ b SHORT G_M46478_IG10
+ ;; size=6 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
+ ldr r3, [r6+0x04]
+ cmp r3, 0
+ beq SHORT G_M46478_IG06
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M46478_IG08: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
+ b SHORT G_M46478_IG11
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
+ mov r8, 0
+ b SHORT G_M46478_IG11
+ ;; size=6 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
+ ldr r3, [r6]
+ cmp r3, 0
+ beq SHORT G_M46478_IG09
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M46478_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, byref, isz
cmp r8, 0
- bne SHORT G_M46478_IG08
+ bne SHORT G_M46478_IG14
;; size=6 bbWeight=1 PerfScore 2.00
-G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
; byrRegs -[r6]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
@@ -136,7 +151,6 @@ G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b
ldr r3, [r4]
blx r3 // CORINFO_HELP_READYTORUN_GCSTATIC_BASE
; byrRegs +[r0]
- ; gcr arg pop 0
ldr r1, [r0+0x28]
; gcrRegs +[r1]
adds r1, r1, 4
@@ -157,45 +171,44 @@ G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b
ldr r12, [r12]
ldr lr, [sp+0x3C]
cmp r12, lr
- beq SHORT G_M46478_IG07
+ beq SHORT G_M46478_IG13
movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
add r12, pc
ldr r12, [r12]
blx r12 // CORINFO_HELP_FAIL_FAST
; byrRegs -[r0-r1]
- ; gcr arg pop 0
;; size=82 bbWeight=0.50 PerfScore 13.50
-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
add sp, 68
pop {r4,r5,r6,r7,r8,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, gcvars, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0060 {r5 r6}, gcvars, byref, isz
; byrRegs +[r5-r6]
cmp r8, 1
- bne SHORT G_M46478_IG12
+ bne SHORT G_M46478_IG18
ldr r0, [r6]
cmp r0, 0
- ble SHORT G_M46478_IG12
+ ble SHORT G_M46478_IG18
str r0, [r5+0x04]
ldr r0, [r5+0x04]
movs r3, 3
cmp r3, r7
- bhs SHORT G_M46478_IG18
+ bhs SHORT G_M46478_IG24
ldr r3, [r6+0x0C]
ands r3, r3, 0x80000000
cmp r3, 0
- bne SHORT G_M46478_IG09
+ bne SHORT G_M46478_IG15
movs r3, 1
- b SHORT G_M46478_IG10
+ b SHORT G_M46478_IG16
;; size=36 bbWeight=0.50 PerfScore 8.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
; byrRegs -[r6]
mov r3, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
mul r0, r0, r3
str r0, [r5+0x04]
movs r0, 0
@@ -207,7 +220,7 @@ G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b
ldr r12, [r12]
ldr lr, [sp+0x3C]
cmp r12, lr
- beq SHORT G_M46478_IG11
+ beq SHORT G_M46478_IG17
movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
add r12, pc
@@ -215,15 +228,14 @@ G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b
blx r12 // CORINFO_HELP_FAIL_FAST
; gcrRegs -[r0]
; byrRegs -[r5]
- ; gcr arg pop 0
;; size=48 bbWeight=0.50 PerfScore 8.00
-G_M46478_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
...
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> r5
+; V00 arg0 [V00,T12] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> r5
; V02 loc1 [V02,T03] ( 14, 25.50) int -> r7
; V03 loc2 [V03,T07] ( 6, 11 ) ref -> r8 class-hnd <System.String>
-; V04 loc3 [V04,T12] ( 7, 6.50) int -> r2
-; V05 loc4 [V05,T05] ( 14, 18.54) int -> r7
+; V04 loc3 [V04,T13] ( 4, 6.50) int -> r2
+; V05 loc4 [V05,T05] ( 8, 21.50) int -> r7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T10] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
; V08 tmp2 [V08,T00] ( 4, 32 ) ushort -> r0 "Inlining Arg"
@@ -57,8 +57,8 @@
;* V46 tmp40 [V46 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
; V47 tmp41 [V47,T09] ( 2, 8 ) byref -> r3 "field V24._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp42 [V48 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
-; V49 cse0 [V49,T06] ( 9, 16.04) int -> r6 "CSE - aggressive"
-; V50 cse1 [V50,T04] ( 10, 22 ) byref -> r9 multi-def "CSE - aggressive"
+; V49 cse0 [V49,T06] ( 8, 19.50) int -> r6 "CSE - aggressive"
+; V50 cse1 [V50,T04] ( 9, 22 ) byref -> r9 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -122,7 +122,7 @@ G_M41923_IG10: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, b
;; size=4 bbWeight=8 PerfScore 16.00
G_M41923_IG11: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r7, r6
- bhs SHORT G_M41923_IG28
+ bhs SHORT G_M41923_IG24
add r9, r8, 8
; byrRegs +[r9]
lsls r0, r7, 1
@@ -151,11 +151,11 @@ G_M41923_IG13: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, b
;; size=18 bbWeight=4 PerfScore 24.00
G_M41923_IG14: ; bbWeight=1, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r7
- bge SHORT G_M41923_IG26
+ bge SHORT G_M41923_IG22
;; size=4 bbWeight=1 PerfScore 2.00
G_M41923_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r6
- bhs SHORT G_M41923_IG28
+ bhs SHORT G_M41923_IG24
add r9, r8, 8
; byrRegs +[r9]
lsls r2, r5, 1
@@ -163,7 +163,7 @@ G_M41923_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}
cmp r2, 91
bne SHORT G_M41923_IG16
cmp r7, r6
- bhs SHORT G_M41923_IG28
+ bhs SHORT G_M41923_IG24
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
@@ -173,67 +173,39 @@ G_M41923_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}
;; size=36 bbWeight=0.50 PerfScore 7.50
G_M41923_IG16: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
cmp r7, r6
- bhs SHORT G_M41923_IG28
+ bhs SHORT G_M41923_IG24
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
- beq SHORT G_M41923_IG26
+ beq SHORT G_M41923_IG22
movs r2, 0
cmp r7, r5
- blt SHORT G_M41923_IG26
- orrs r0, r7, r5
- cmp r0, 0
- blt SHORT G_M41923_IG21
- cmp r6, r7
- ble SHORT G_M41923_IG21
- ;; size=32 bbWeight=0.50 PerfScore 7.00
-G_M41923_IG17: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ blt SHORT G_M41923_IG22
+ ;; size=20 bbWeight=0.50 PerfScore 4.50
+G_M41923_IG17: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ cmp r7, r6
+ bhs SHORT G_M41923_IG24
lsls r0, r7, 1
ldrh r0, [r9+r0]
cmp r0, 44
bne SHORT G_M41923_IG19
- ;; size=10 bbWeight=3.96 PerfScore 15.84
-G_M41923_IG18: ; bbWeight=1.98, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 24.00
+G_M41923_IG18: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
adds r2, r2, 1
cmp r2, 4
- beq SHORT G_M41923_IG25
- ;; size=6 bbWeight=1.98 PerfScore 5.94
-G_M41923_IG19: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ beq SHORT G_M41923_IG21
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M41923_IG19: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
subs r7, r7, 1
cmp r7, r5
bge SHORT G_M41923_IG17
- ;; size=6 bbWeight=3.96 PerfScore 11.88
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M41923_IG20: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
; byrRegs -[r9]
- b SHORT G_M41923_IG26
+ b SHORT G_M41923_IG22
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M41923_IG21: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r9]
- cmp r7, r6
- bhs SHORT G_M41923_IG28
- lsls r0, r7, 1
- ldrh r0, [r9+r0]
- cmp r0, 44
- bne SHORT G_M41923_IG23
- ;; size=14 bbWeight=0.04 PerfScore 0.24
-G_M41923_IG22: ; bbWeight=0.02, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- adds r2, r2, 1
- cmp r2, 4
- beq SHORT G_M41923_IG25
- ;; size=6 bbWeight=0.02 PerfScore 0.06
-G_M41923_IG23: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- subs r7, r7, 1
- cmp r7, r5
- bge SHORT G_M41923_IG21
- ;; size=6 bbWeight=0.04 PerfScore 0.12
-G_M41923_IG24: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ; byrRegs -[r9]
- b SHORT G_M41923_IG26
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M41923_IG25: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M41923_IG21: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r8] +[r4]
subs r2, r7, r5
mov r0, r4
@@ -248,15 +220,15 @@ G_M41923_IG25: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
mov r8, r0
; gcrRegs +[r8]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M41923_IG26: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+G_M41923_IG22: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r8
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M41923_IG27: ; bbWeight=1, epilog, nogc, extend
+G_M41923_IG23: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M41923_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M41923_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -265,7 +237,7 @@ G_M41923_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 304, prolog size 10, PerfScore 247.08, instruction count 122, allocated bytes for code 304 (MethodHash=49705c3c) for method System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
+; Total bytes of code 268, prolog size 10, PerfScore 252.00, instruction count 106, allocated bytes for code 268 (MethodHash=49705c3c) for method System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -277,7 +249,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 152 (0x00098) Actual length = 304 (0x000130)
+ Function Length : 134 (0x00086) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> r5
+; V00 arg0 [V00,T12] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> r5
; V02 loc1 [V02,T03] ( 14, 25.50) int -> r7
; V03 loc2 [V03,T07] ( 6, 11 ) ref -> r8 class-hnd <System.String>
-; V04 loc3 [V04,T12] ( 7, 6.50) int -> r2
-; V05 loc4 [V05,T05] ( 14, 18.54) int -> r7
+; V04 loc3 [V04,T13] ( 4, 6.50) int -> r2
+; V05 loc4 [V05,T05] ( 8, 21.50) int -> r7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T10] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
; V08 tmp2 [V08,T00] ( 4, 32 ) ushort -> r0 "Inlining Arg"
@@ -57,8 +57,8 @@
;* V46 tmp40 [V46 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
; V47 tmp41 [V47,T09] ( 2, 8 ) byref -> r3 "field V24._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp42 [V48 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
-; V49 cse0 [V49,T06] ( 9, 16.04) int -> r6 "CSE - aggressive"
-; V50 cse1 [V50,T04] ( 10, 22 ) byref -> r9 multi-def "CSE - aggressive"
+; V49 cse0 [V49,T06] ( 8, 19.50) int -> r6 "CSE - aggressive"
+; V50 cse1 [V50,T04] ( 9, 22 ) byref -> r9 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -122,7 +122,7 @@ G_M5940_IG10: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, by
;; size=4 bbWeight=8 PerfScore 16.00
G_M5940_IG11: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r7, r6
- bhs SHORT G_M5940_IG28
+ bhs SHORT G_M5940_IG24
add r9, r8, 8
; byrRegs +[r9]
lsls r0, r7, 1
@@ -151,11 +151,11 @@ G_M5940_IG13: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, by
;; size=18 bbWeight=4 PerfScore 24.00
G_M5940_IG14: ; bbWeight=1, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r7
- bge SHORT G_M5940_IG26
+ bge SHORT G_M5940_IG22
;; size=4 bbWeight=1 PerfScore 2.00
G_M5940_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r6
- bhs SHORT G_M5940_IG28
+ bhs SHORT G_M5940_IG24
add r9, r8, 8
; byrRegs +[r9]
lsls r2, r5, 1
@@ -163,7 +163,7 @@ G_M5940_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {},
cmp r2, 91
bne SHORT G_M5940_IG16
cmp r7, r6
- bhs SHORT G_M5940_IG28
+ bhs SHORT G_M5940_IG24
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
@@ -173,67 +173,39 @@ G_M5940_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {},
;; size=36 bbWeight=0.50 PerfScore 7.50
G_M5940_IG16: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
cmp r7, r6
- bhs SHORT G_M5940_IG28
+ bhs SHORT G_M5940_IG24
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
- beq SHORT G_M5940_IG26
+ beq SHORT G_M5940_IG22
movs r2, 0
cmp r7, r5
- blt SHORT G_M5940_IG26
- orrs r0, r7, r5
- cmp r0, 0
- blt SHORT G_M5940_IG21
- cmp r6, r7
- ble SHORT G_M5940_IG21
- ;; size=32 bbWeight=0.50 PerfScore 7.00
-G_M5940_IG17: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ blt SHORT G_M5940_IG22
+ ;; size=20 bbWeight=0.50 PerfScore 4.50
+G_M5940_IG17: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ cmp r7, r6
+ bhs SHORT G_M5940_IG24
lsls r0, r7, 1
ldrh r0, [r9+r0]
cmp r0, 44
bne SHORT G_M5940_IG19
- ;; size=10 bbWeight=3.96 PerfScore 15.84
-G_M5940_IG18: ; bbWeight=1.98, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 24.00
+G_M5940_IG18: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
adds r2, r2, 1
cmp r2, 4
- beq SHORT G_M5940_IG25
- ;; size=6 bbWeight=1.98 PerfScore 5.94
-G_M5940_IG19: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ beq SHORT G_M5940_IG21
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M5940_IG19: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
subs r7, r7, 1
cmp r7, r5
bge SHORT G_M5940_IG17
- ;; size=6 bbWeight=3.96 PerfScore 11.88
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M5940_IG20: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
; byrRegs -[r9]
- b SHORT G_M5940_IG26
+ b SHORT G_M5940_IG22
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M5940_IG21: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r9]
- cmp r7, r6
- bhs SHORT G_M5940_IG28
- lsls r0, r7, 1
- ldrh r0, [r9+r0]
- cmp r0, 44
- bne SHORT G_M5940_IG23
- ;; size=14 bbWeight=0.04 PerfScore 0.24
-G_M5940_IG22: ; bbWeight=0.02, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- adds r2, r2, 1
- cmp r2, 4
- beq SHORT G_M5940_IG25
- ;; size=6 bbWeight=0.02 PerfScore 0.06
-G_M5940_IG23: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- subs r7, r7, 1
- cmp r7, r5
- bge SHORT G_M5940_IG21
- ;; size=6 bbWeight=0.04 PerfScore 0.12
-G_M5940_IG24: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ; byrRegs -[r9]
- b SHORT G_M5940_IG26
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M5940_IG25: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M5940_IG21: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r8] +[r4]
subs r2, r7, r5
mov r0, r4
@@ -248,15 +220,15 @@ G_M5940_IG25: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, by
mov r8, r0
; gcrRegs +[r8]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M5940_IG26: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+G_M5940_IG22: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r8
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M5940_IG27: ; bbWeight=1, epilog, nogc, extend
+G_M5940_IG23: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M5940_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M5940_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -265,7 +237,7 @@ G_M5940_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 304, prolog size 10, PerfScore 247.08, instruction count 122, allocated bytes for code 304 (MethodHash=714fe8cb) for method System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
+; Total bytes of code 268, prolog size 10, PerfScore 252.00, instruction count 106, allocated bytes for code 268 (MethodHash=714fe8cb) for method System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -277,7 +249,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 152 (0x00098) Actual length = 304 (0x000130)
+ Function Length : 134 (0x00086) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -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 -> r4 class-hnd <Internal.TypeSystem.MethodDesc>
-; V02 arg2 [V02,T16] ( 14, 8 ) ref -> r5 class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T19] ( 8, 5.50) byref -> r6 single-def
+; V02 arg2 [V02,T17] ( 14, 8 ) ref -> r5 class-hnd single-def <Internal.TypeSystem.DefType>
+; V03 arg3 [V03,T20] ( 8, 5.50) byref -> r6 single-def
; V04 loc0 [V04,T22] ( 11, 5.50) ref -> r8 class-hnd <Internal.TypeSystem.MethodDesc>
; V05 loc1 [V05,T23] ( 3, 5 ) ref -> r9 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> r8
-; V07 loc3 [V07,T20] ( 4, 7 ) ref -> r10 class-hnd single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> r10 class-hnd single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> [sp+0x2C]
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [sp+0x14] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [sp+0x18] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V10 loc6 [V10,T28] ( 6, 4.50) ref -> r9 class-hnd <Internal.TypeSystem.MethodDesc>
; V11 loc7 [V11,T24] ( 3, 5 ) ref -> r10 class-hnd single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> [sp+0x28]
-; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [sp+0x10] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [sp+0x14] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [sp+0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T46] ( 3, 1.50) int -> r0 single-def
+; V15 loc11 [V15,T45] ( 3, 1.50) int -> r0 single-def
; V16 loc12 [V16,T03] ( 10, 20 ) ref -> r8 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 -> r1 single-def "CASTCLASS eval op1"
-; V22 tmp3 [V22,T47] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable"
-; V23 tmp4 [V23,T31] ( 5, 3.75) ref -> r10 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V21 tmp2 [V21,T33] ( 3, 2.25) ref -> r1 single-def "CASTCLASS eval op1"
+; V22 tmp3 [V22,T46] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable"
+; V23 tmp4 [V23,T30] ( 5, 3.75) ref -> r10 class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
; V24 tmp5 [V24,T25] ( 3, 5 ) ref -> r0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V25 tmp6 [V25,T35] ( 3, 2 ) int -> r3 "Inline return value spill temp"
-; V26 tmp7 [V26,T33] ( 3, 2.50) int -> r3 single-def "Inline stloc first use temp"
-; V27 tmp8 [V27,T42] ( 3, 1.50) ref -> r9 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V25 tmp6 [V25,T34] ( 3, 2 ) int -> r3 "Inline return value spill temp"
+; V26 tmp7 [V26,T32] ( 3, 2.50) int -> r3 single-def "Inline stloc first use temp"
+; V27 tmp8 [V27,T41] ( 3, 1.50) ref -> r9 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 -> [sp+0x0C] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V31 tmp12 [V31,T30] ( 2, 4 ) ref -> r2 class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T18] ( 5, 10 ) ref -> [sp+0x10] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V31 tmp12 [V31,T29] ( 2, 4 ) ref -> r2 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 -> r10 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [sp+0x08] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V36 tmp17 [V36,T42] ( 3, 1.50) ref -> r10 class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [sp+0x0C] 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 -> r9 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 -> r0 single-def "Single return block return value"
+; V44 tmp25 [V44,T35] ( 2, 2 ) ref -> r0 single-def "Single return block return value"
; V45 tmp26 [V45,T09] ( 2, 16 ) ref -> r10 "argument with side effect"
; V46 tmp27 [V46,T10] ( 2, 16 ) ref -> r1 "argument with side effect"
-; V47 tmp28 [V47,T37] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V48 tmp29 [V48,T38] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
-; V49 tmp30 [V49,T39] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
-; V50 tmp31 [V50,T32] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
-; V51 tmp32 [V51,T40] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [sp+0x04] spill-single-def "argument with side effect"
+; V47 tmp28 [V47,T36] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V48 tmp29 [V48,T37] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
+; V49 tmp30 [V49,T38] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
+; V50 tmp31 [V50,T31] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
+; V51 tmp32 [V51,T39] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [sp+0x08] spill-single-def "argument with side effect"
; V53 tmp34 [V53,T12] ( 2, 16 ) ref -> r1 "argument with side effect"
;* V54 tmp35 [V54 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V55 tmp36 [V55,T41] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
+; V55 tmp36 [V55,T40] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
; V56 tmp37 [V56,T13] ( 2, 16 ) ref -> r1 "argument with side effect"
-; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [sp+0x00] spill-single-def "argument with side effect"
+; V57 tmp38 [V57,T14] ( 2, 16 ) ref -> [sp+0x04] spill-single-def "argument with side effect"
; V58 tmp39 [V58,T15] ( 2, 16 ) ref -> r1 "argument with side effect"
-; V59 tmp40 [V59,T18] ( 2, 8 ) ref -> r1 "argument with side effect"
+; V59 tmp40 [V59,T19] ( 2, 8 ) ref -> r1 "argument with side effect"
; V60 cse0 [V60,T06] ( 10, 18 ) int -> r7 "CSE - aggressive"
-; V61 cse1 [V61,T29] ( 2, 4.50) int -> [sp+0x20] spill-single-def hoist "CSE - moderate"
-; V62 cse2 [V62,T44] ( 3, 1.50) ref -> r8 "CSE - conservative"
-; V63 cse3 [V63,T45] ( 3, 1.50) ref -> r10 "CSE - conservative"
-; V64 cse4 [V64,T26] ( 3, 5 ) int -> [sp+0x1C] spill-single-def "CSE - moderate"
-; V65 cse5 [V65,T27] ( 3, 5 ) int -> [sp+0x18] spill-single-def "CSE - moderate"
+; V61 cse1 [V61,T43] ( 3, 1.50) ref -> r8 "CSE - conservative"
+; V62 cse2 [V62,T44] ( 3, 1.50) ref -> r10 "CSE - conservative"
+; V63 cse3 [V63,T26] ( 3, 5 ) int -> [sp+0x20] spill-single-def "CSE - moderate"
+; V64 cse4 [V64,T27] ( 3, 5 ) int -> [sp+0x1C] spill-single-def "CSE - moderate"
;
; Lcl frame size = 52
@@ -209,38 +208,37 @@ G_M48343_IG12: ; bbWeight=0.50, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=
; gcrRegs -[r0]
movs r3, 0
ldr r2, [r9+0x04]
- str r2, [sp+0x1C]
+ str r2, [sp+0x20]
cmp r2, 0
ble SHORT G_M48343_IG17
- ldr r0, [r10]
- ldr r1, [r0+0x34]
- str r1, [sp+0x20]
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M48343_IG13: ; bbWeight=4, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=0040 {r6}, byref, isz
add r0, r9, 8
; byrRegs +[r0]
str r3, [sp+0x2C]
- lsl lr, r3, 2
- ldr lr, [r0+lr]
- ; gcrRegs +[lr]
- str lr, [sp+0x14] // [V09 loc5]
+ lsls r1, r3, 2
+ ldr r1, [r0+r1]
+ ; gcrRegs +[r1]
+ str r1, [sp+0x18] // [V09 loc5]
; GC ptr vars +{V09}
mov r0, r10
; gcrRegs +[r0]
; byrRegs -[r0]
- ldr r12, [r1+0x10]
- blx r12 // <unknown method>
- ; gcrRegs -[lr]
- str r0, [sp+0x04] // [V52 tmp33]
+ ldr lr, [r10]
+ ldr lr, [lr+0x34]
+ ldr lr, [lr+0x10]
+ blx lr // <unknown method>
+ ; gcrRegs -[r1]
+ str r0, [sp+0x08] // [V52 tmp33]
; GC ptr vars +{V52}
- ldr r0, [sp+0x14] // [V09 loc5]
+ ldr r0, [sp+0x18] // [V09 loc5]
ldr r2, [r0]
ldr r2, [r2+0x34]
ldr r2, [r2+0x10]
blx r2 // <unknown method>
mov r1, r0
; gcrRegs +[r1]
- ldr r0, [sp+0x04] // [V52 tmp33]
+ ldr r0, [sp+0x08] // [V52 tmp33]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -249,13 +247,13 @@ G_M48343_IG13: ; bbWeight=4, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=004
; gcrRegs -[r0-r1]
cmp r0, 0
beq SHORT G_M48343_IG16
- ;; size=58 bbWeight=4 PerfScore 88.00
+ ;; size=60 bbWeight=4 PerfScore 96.00
G_M48343_IG14: ; bbWeight=2, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=0040 {r6}, byref, isz
- ldr r3, [sp+0x14]
+ ldr r3, [sp+0x18]
; gcrRegs +[r3]
ldr r2, [r3+0x04]
; gcrRegs +[r2]
- str r2, [sp+0x0C] // [V30 tmp11]
+ str r2, [sp+0x10] // [V30 tmp11]
; GC ptr vars +{V30}
movs r0, 1
movw r1, 0xd1ff
@@ -263,11 +261,11 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=004
ldr r1, [r1]
blx r1 // <unknown method>
; gcrRegs -[r2-r3]
- ldr r3, [sp+0x0C]
+ ldr r3, [sp+0x10]
; gcrRegs +[r3]
cmp r3, 0
bne SHORT G_M48343_IG15
- ldr r0, [sp+0x14]
+ ldr r0, [sp+0x18]
; gcrRegs +[r0]
movs r1, 0
ldr r3, [r0]
@@ -278,8 +276,8 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=004
blx r3 // <unknown method>
mov r3, r0
; gcrRegs +[r3]
- ldr r0, [sp+0x14]
- str r3, [sp+0x0C]
+ ldr r0, [sp+0x18]
+ str r3, [sp+0x10]
; GC ptr vars +{V30}
mov r2, r3
; gcrRegs +[r2]
@@ -290,7 +288,7 @@ G_M48343_IG14: ; bbWeight=2, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=004
; GC ptr vars -{V09}
blx lr // Internal.TypeSystem.TypeDesc:SetCachedCanonValue(int,Internal.TypeSystem.TypeDesc):this
; gcrRegs -[r0 r2-r3]
- ldr r3, [sp+0x0C] // [V30 tmp11]
+ ldr r3, [sp+0x10] // [V30 tmp11]
; gcrRegs +[r3]
;; size=64 bbWeight=2 PerfScore 54.00
G_M48343_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0638 {r3 r4 r5 r9 r10}, byrefRegs=0040 {r6}, gcvars, byref, isz
@@ -314,12 +312,11 @@ G_M48343_IG15: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0638 {
G_M48343_IG16: ; bbWeight=4, gcrefRegs=0630 {r4 r5 r9 r10}, byrefRegs=0040 {r6}, byref, isz
ldr r0, [sp+0x2C] // [V08 loc4]
adds r0, r0, 1
- ldr r2, [sp+0x1C] // [V64 cse4]
+ ldr r2, [sp+0x20] // [V63 cse3]
cmp r2, r0
mov r3, r0
- ldr r1, [sp+0x20] // [V61 cse1]
bgt SHORT G_M48343_IG13
- ;; size=14 bbWeight=4 PerfScore 28.00
+ ;; size=12 bbWeight=4 PerfScore 24.00
G_M48343_IG17: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0040 {r6}, byref, isz
; gcrRegs -[r9-r10]
mov r0, r4
@@ -398,7 +395,7 @@ G_M48343_IG21: ; bbWeight=0.50, gcrefRegs=0730 {r4 r5 r8 r9 r10}, byrefRe
; gcrRegs -[r0]
movs r3, 0
ldr r2, [r10+0x04]
- str r2, [sp+0x18] // [V65 cse5]
+ str r2, [sp+0x1C] // [V64 cse4]
cmp r2, 0
ble SHORT G_M48343_IG27
;; size=12 bbWeight=0.50 PerfScore 2.50
@@ -409,7 +406,7 @@ G_M48343_IG22: ; bbWeight=4, gcrefRegs=0730 {r4 r5 r8 r9 r10}, byrefRegs=
lsls r1, r3, 2
ldr r1, [r0+r1]
; gcrRegs +[r1]
- str r1, [sp+0x10] // [V13 loc9]
+ str r1, [sp+0x14] // [V13 loc9]
; GC ptr vars +{V13}
mov r0, r4
; gcrRegs +[r0]
@@ -419,7 +416,7 @@ G_M48343_IG22: ; bbWeight=4, gcrefRegs=0730 {r4 r5 r8 r9 r10}, byrefRegs=
; gcrRegs -[r1]
mov r1, r0
; gcrRegs +[r1]
- ldr r0, [sp+0x10]
+ ldr r0, [sp+0x14]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -431,16 +428,16 @@ G_M48343_IG22: ; bbWeight=4, gcrefRegs=0730 {r4 r5 r8 r9 r10}, byrefRegs=
; gcrRegs +[r0]
ldr r3, [r7+0x0C]
...
@@ -12,14 +12,14 @@
; V01 arg1 [V01 ] ( 11, 11 ) struct ( 8) [sp+0x80] do-not-enreg[SFA] multireg-arg single-def double-align <System.DateTime>
; V02 arg2 [V02,T39] ( 6, 5 ) ubyte -> [sp+0x88] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 4) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 12,132 ) ref -> [sp+0x08] class-hnd <<unknown class>>
+; V04 loc1 [V04,T07] ( 8, 68 ) ref -> [sp+0x08] class-hnd <<unknown class>>
; V05 loc2 [V05,T30] ( 3, 12 ) int -> r1
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> r2 class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> r2 class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T16] ( 5, 35 ) int -> [sp+0x54] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T40] ( 2, 5 ) ref -> r6 class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 4) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T06] ( 16, 74 ) ref -> [sp+0x04] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T05] ( 16, 74 ) ref -> [sp+0x04] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 6, 6 ) ubyte -> [sp+0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T28] ( 4, 13 ) int -> [sp+0x4C]
;* V14 loc11 [V14,T51] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
@@ -59,7 +59,7 @@
; V48 tmp28 [V48,T32] ( 6, 6 ) ref -> r5 class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V49 tmp29 [V49,T27] ( 11, 11 ) long -> [sp+0x80] do-not-enreg[] single-def "field V01._dateData (fldOffset=0x0)" P-DEP
; V50 tmp30 [V50,T17] ( 5, 35 ) int -> [sp+0x3C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V51 tmp31 [V51,T07] ( 13, 71 ) int -> r1 "field V09._ref (fldOffset=0x0)" P-INDEP
+; V51 tmp31 [V51,T06] ( 13, 71 ) int -> r1 "field V09._ref (fldOffset=0x0)" P-INDEP
; V52 tmp32 [V52,T21] ( 4, 24 ) int -> registers "field V10._ref (fldOffset=0x0)" P-INDEP
; V53 tmp33 [V53,T18] ( 2, 32 ) int -> r3 "field V21._ref (fldOffset=0x0)" P-INDEP
;* V54 tmp34 [V54 ] ( 0, 0 ) long -> zero-ref single-def "field V26._dateData (fldOffset=0x0)" P-INDEP
@@ -72,25 +72,25 @@
; V61 tmp41 [V61,T35] ( 3, 6 ) ref -> r2 single-def "arr expr"
; V62 tmp42 [V62,T36] ( 3, 6 ) ref -> r2 single-def "arr expr"
; V63 tmp43 [V63,T10] ( 3, 48 ) ref -> r2 "arr expr"
-; V64 tmp44 [V64,T05] ( 3, 96 ) struct ( 8) [sp+0x18] do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.DateTime>
+; V64 tmp44 [V64,T04] ( 3, 96 ) struct ( 8) [sp+0x18] do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.DateTime>
; V65 tmp45 [V65,T22] ( 3, 24 ) ref -> r2 "arr expr"
; V66 tmp46 [V66,T11] ( 3, 48 ) ref -> r0 "arr expr"
; V67 tmp47 [V67,T12] ( 3, 48 ) ref -> r0 "arr expr"
; V68 PSPSym [V68,T52] ( 1, 1 ) int -> [sp+0x58] do-not-enreg[V] "PSPSym"
;* V69 cse0 [V69,T53] ( 0, 0 ) int -> zero-ref "CSE - moderate"
-; V70 cse1 [V70,T26] ( 4, 16 ) byref -> r1 "CSE - moderate"
-;* V71 cse2 [V71 ] ( 0, 0 ) long -> zero-ref "CSE - moderate"
-; V72 cse3 [V72,T02] ( 6,128 ) int -> r3 "CSE - aggressive"
+; V70 cse1 [V70,T01] ( 6,128 ) byref -> r3 "CSE - aggressive"
+; V71 cse2 [V71,T26] ( 4, 16 ) byref -> r1 "CSE - moderate"
+;* V72 cse3 [V72 ] ( 0, 0 ) long -> zero-ref "CSE - moderate"
; V73 cse4 [V73,T47] ( 3, 3 ) ref -> r2 "CSE - conservative"
; V74 cse5 [V74,T48] ( 3, 3 ) ref -> r2 "CSE - conservative"
; V75 cse6 [V75,T14] ( 4, 44 ) int -> [sp+0x14] spill-single-def "CSE - aggressive"
; V76 cse7 [V76,T23] ( 3, 24 ) int -> r3 "CSE - moderate"
; V77 cse8 [V77,T31] ( 3, 12 ) int -> r3 "CSE - moderate"
-; V78 rat0 [V78,T24] ( 4, 19 ) int -> r5 "field V71.lo (fldOffset=0x0)" P-INDEP
-; V79 rat1 [V79,T25] ( 4, 19 ) int -> [sp+0x10] "field V71.hi (fldOffset=0x4)" P-INDEP
+; V78 rat0 [V78,T24] ( 4, 19 ) int -> r5 "field V72.lo (fldOffset=0x0)" P-INDEP
+; V79 rat1 [V79,T25] ( 4, 19 ) int -> [sp+0x10] "field V72.hi (fldOffset=0x4)" P-INDEP
; V80 rat2 [V80,T37] ( 3, 6 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
; V81 rat3 [V81,T38] ( 3, 6 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V82 rat4 [V82,T04] ( 3, 96 ) byref -> r4 "ReplaceWithLclVar is creating a new local variable"
+; V82 rat4 [V82,T03] ( 3, 96 ) byref -> r4 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 92
@@ -228,7 +228,7 @@ G_M744_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
movs r1, 0
str r1, [sp+0x50] // [V12 loc9]
;; size=8 bbWeight=1 PerfScore 4.00
-G_M744_IG11: ; bbWeight=1, gcVars=0000000000100040 {V00 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG11: ; bbWeight=1, gcVars=0000000000100020 {V00 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
ldrb r1, [sp+0x50] // [V12 loc9]
cmp r1, 0
@@ -250,9 +250,9 @@ G_M744_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00
-G_M744_IG14: ; bbWeight=1, gcVars=0000000000100040 {V00 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG14: ; bbWeight=1, gcVars=0000000000100020 {V00 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r7]
- ; GC ptr vars +{V06 V11}
+ ; GC ptr vars +{V05 V11}
add r1, sp, 80 // [V12 loc9]
mov r0, r7
; gcrRegs +[r0]
@@ -380,17 +380,20 @@ G_M744_IG19: ; bbWeight=4, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byr
G_M744_IG20: ; bbWeight=32, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref, isz
str r0, [sp+0x44] // [V17 loc14]
lsls r2, r0, 4
- add r3, r2, 8
- adds r2, r1, r3
- ; byrRegs +[r2]
- ldr r2, [r2+0x08]
+ adds r2, 8
+ str r1, [sp+0x08] // [V04 loc1]
+ ; GC ptr vars +{V04}
+ adds r3, r1, r2
+ ; byrRegs +[r3]
+ ldr r2, [r3+0x08]
; gcrRegs +[r2]
- ; byrRegs -[r2]
cmp r2, 0
beq SHORT G_M744_IG24
- ;; size=16 bbWeight=32 PerfScore 224.00
-G_M744_IG21: ; bbWeight=16, gcrefRegs=0086 {r1 r2 r7}, byrefRegs=0000 {}, byref, isz
- adds r4, r1, r3
+ ;; size=16 bbWeight=32 PerfScore 256.00
+G_M744_IG21: ; bbWeight=16, gcVars=00000000001000A0 {V00 V04 V11}, gcrefRegs=0084 {r2 r7}, byrefRegs=0008 {r3}, gcvars, byref, isz
+ ; gcrRegs -[r1]
+ ; GC ptr vars -{V05}
+ mov r4, r3
; byrRegs +[r4]
ldr r8, [r4]
ldr r4, [r4+0x04]
@@ -405,47 +408,40 @@ G_M744_IG21: ; bbWeight=16, gcrefRegs=0086 {r1 r2 r7}, byrefRegs=0000 {},
ldr r4, [sp+0x10] // [V79 rat1]
sbcs r6, r4, r6
bge SHORT G_M744_IG22
- str r1, [sp+0x08] // [V04 loc1]
- ; GC ptr vars +{V04}
- adds r2, r1, r3
+ ldr r2, [r3]
; gcrRegs -[r2]
- ; byrRegs +[r2]
- ldr r3, [r2]
- str r3, [sp+0x18] // [V64 tmp44]
- ldr r3, [r2+0x04]
- str r3, [sp+0x1C] // [V64 tmp44+0x04]
+ str r2, [sp+0x18] // [V64 tmp44]
+ ldr r2, [r3+0x04]
+ str r2, [sp+0x1C] // [V64 tmp44+0x04]
ldr r2, [sp+0x18] // [V64 tmp44]
- ; byrRegs -[r2]
ldr r3, [sp+0x1C] // [V64 tmp44+0x04]
+ ; byrRegs -[r3]
mov r0, r7
; gcrRegs +[r0]
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r6, [r6]
- ; GC ptr vars -{V06}
blx r6 // System.Runtime.Caching.ExpiresBucket:AddCount(System.DateTime):this
- ; gcrRegs -[r0-r1]
+ ; gcrRegs -[r0]
; gcr arg pop 0
b SHORT G_M744_IG23
- ;; size=70 bbWeight=16 PerfScore 432.00
-G_M744_IG22: ; bbWeight=16, gcVars=0000000000100040 {V00 V11}, gcrefRegs=0086 {r1 r2 r7}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r1-r2]
- ; GC ptr vars -{V04}
+ ;; size=66 bbWeight=16 PerfScore 400.00
+G_M744_IG22: ; bbWeight=16, gcrefRegs=0084 {r2 r7}, byrefRegs=0008 {r3}, byref
+ ; gcrRegs +[r2]
+ ; byrRegs +[r3]
movs r6, 255
strb r6, [r2+0x1C]
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r6, [r6]
str r6, [r2+0x38]
- adds r2, r1, r3
+ movs r2, 1
; gcrRegs -[r2]
- ; byrRegs +[r2]
- movs r6, 1
- str r6, [r2+0x04]
+ str r2, [r3+0x04]
ldr r2, [sp+0x3C] // [V50 tmp30]
- ; byrRegs -[r2]
- str r2, [r1+r3]
+ str r2, [r3]
lsl r3, r9, 8
+ ; byrRegs -[r3]
ldr r0, [sp+0x44] // [V17 loc14]
uxtb r2, r0
orrs r3, r2
@@ -457,30 +453,27 @@ G_M744_IG22: ; bbWeight=16, gcVars=0000000000100040 {V00 V11}, gcrefRegs=
adds r3, r3, 1
str r3, [r7+0x18]
str r0, [sp+0x44] // [V17 loc14]
- str r1, [sp+0x08] // [V04 loc1]
- ; GC ptr vars +{V04}
- ;; size=54 bbWeight=16 PerfScore 384.00
-G_M744_IG23: ; bbWeight=16, gcVars=0000000000100042 {V00 V04 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r1]
+ ;; size=50 bbWeight=16 PerfScore 352.00
+G_M744_IG23: ; bbWeight=16, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
ldr r12, [sp+0x48] // [V16 loc13]
add r12, r12, -1
cmp r12, 0
str r12, [sp+0x48] // [V16 loc13]
str r4, [sp+0x10] // [V79 rat1]
- ldr r1, [sp+0x08] // [V04 loc1]
- ; gcrRegs +[r1]
beq SHORT G_M744_IG25
- ;; size=22 bbWeight=16 PerfScore 112.00
-G_M744_IG24: ; bbWeight=32, gcVars=0000000000100040 {V00 V11}, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V04}
+ ;; size=20 bbWeight=16 PerfScore 96.00
+G_M744_IG24: ; bbWeight=32, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x44] // [V17 loc14]
adds r0, r0, 1
ldr lr, [sp+0x14] // [V75 cse6]
cmp lr, r0
+ ldr r1, [sp+0x08] // [V04 loc1]
+ ; gcrRegs +[r1]
bgt SHORT G_M744_IG20
- ;; size=12 bbWeight=32 PerfScore 160.00
-G_M744_IG25: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=32 PerfScore 192.00
+G_M744_IG25: ; bbWeight=4, gcVars=0000000000100020 {V00 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r1]
+ ; GC ptr vars -{V04}
ldr r8, [sp+0x4C] // [V13 loc10]
add r8, r8, -1
cmp r8, 0
@@ -935,7 +928,7 @@ G_M744_IG65: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, f
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1420, prolog size 26, PerfScore 2188.00, instruction count 538, allocated bytes for code 1420 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1412, prolog size 26, PerfScore 2172.00, instruction count 535, allocated bytes for code 1412 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -947,7 +940,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 609 (0x00261) Actual length = 1218 (0x0004c2)
+ Function Length : 605 (0x0025d) Actual length = 1210 (0x0004ba)
---- 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
; r11 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 -> r4 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [sp+0x50] do-not-enreg[S] single-def double-align <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> r4 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [sp+0x50] do-not-enreg[S] single-def double-align <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T00] ( 10, 16 ) int -> r6
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> r6
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) 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) [sp+0x24] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref double-align "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> r1 "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] ( 3, 1.50) int -> r0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> r1 "impAppendStmt"
+; V13 tmp8 [V13,T16] ( 3, 1.50) int -> r0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> r1 "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] ( 3, 1.50) int -> r0
+; V23 tmp18 [V23,T17] ( 3, 1.50) int -> r0
; V24 tmp19 [V24 ] ( 7, 13 ) struct (16) [sp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op double-align "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> r1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> r1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op double-align "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 -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" 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=0x4)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> r5 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x4)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> r5 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x4)" 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 ] ( 4, 5 ) long -> [sp+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=0x4)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> r1 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> r0 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> [sp+0x08] do-not-enreg[F] "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> r1 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> r0 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> [sp+0x08] do-not-enreg[F] "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) int -> [sp+0x34] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T19] ( 3, 1.50) int -> r1 "CSE - moderate"
-; V50 cse1 [V50,T02] ( 3, 10 ) int -> r1 "CSE - aggressive"
+; V49 cse0 [V49,T18] ( 3, 1.50) int -> r1 "CSE - moderate"
; TEMP_01 ref -> [r11-0x44]
;
; Lcl frame size = 60
@@ -101,7 +100,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r1, [sp+0x10]
@@ -119,36 +117,53 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, b
movs r6, 3
b SHORT G_M46478_IG06
;; size=28 bbWeight=1 PerfScore 14.00
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- mov r6, r1
- cmp r6, 0
- ble SHORT G_M46478_IG07
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- subs r1, r6, 1
- movs r0, 4
- cmp r1, r0
- bhs G_M46478_IG21
- lsls r0, r6, 2
- subs r0, r0, 4
- ldr r0, [r5+r0]
- cmp r0, 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ movs r6, 2
+ b SHORT G_M46478_IG09
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ldr r1, [r5+0x08]
+ cmp r1, 0
beq SHORT G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 36.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ b SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ movs r6, 1
+ b SHORT G_M46478_IG12
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ldr r1, [r5+0x04]
+ cmp r1, 0
+ beq SHORT G_M46478_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ b SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ movs r6, 0
+ b SHORT G_M46478_IG13
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ldr r1, [r5]
+ cmp r1, 0
+ beq SHORT G_M46478_IG11
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
cmp r6, 0
- bne SHORT G_M46478_IG11
+ bne SHORT G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 2.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; byrRegs -[r5]
movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r1, [r1]
and r1, r1, 1
cmp r1, 1
- bne G_M46478_IG22
+ bne G_M46478_IG28
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r1, [r1]
@@ -168,40 +183,39 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b
movt r12, 0xd1ff
ldr lr, [sp+0x34]
cmp r12, lr
- beq SHORT G_M46478_IG10
+ beq SHORT G_M46478_IG16
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_FAIL_FAST
; byrRegs -[r0-r1]
- ; gcr arg pop 0
;; size=58 bbWeight=0.50 PerfScore 9.00
-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
add sp, 60
pop {r4,r5,r6,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; byrRegs +[r4-r5]
cmp r6, 1
- bne SHORT G_M46478_IG15
+ bne SHORT G_M46478_IG21
ldr r1, [r5]
cmp r1, 0
- ble SHORT G_M46478_IG15
+ ble SHORT G_M46478_IG21
str r1, [r4+0x04]
ldr r1, [r4+0x04]
ldr r0, [r5+0x0C]
ands r0, r0, 0x80000000
cmp r0, 0
- bne SHORT G_M46478_IG12
+ bne SHORT G_M46478_IG18
movs r0, 1
- b SHORT G_M46478_IG13
+ b SHORT G_M46478_IG19
;; size=28 bbWeight=0.50 PerfScore 6.50
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; byrRegs -[r5]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
mul r1, r1, r0
str r1, [r4+0x04]
movs r1, 0
@@ -210,20 +224,19 @@ G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b
movt r12, 0xd1ff
ldr lr, [sp+0x34]
cmp r12, lr
- beq SHORT G_M46478_IG14
+ beq SHORT G_M46478_IG20
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_FAIL_FAST
; byrRegs -[r4]
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 6.00
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add sp, 60
pop {r4,r5,r6,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; byrRegs +[r4-r5]
mov r1, r6
movw r0, 0xd1ff
@@ -232,7 +245,6 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[r0]
- ; gcr arg pop 0
str r0, [sp+0x04]
ldr r1, [sp+0x04]
; gcrRegs +[r1]
@@ -250,70 +262,68 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
movs r3, 0
...
@@ -8,52 +8,53 @@
; 4 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 10, 6 ) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T03] ( 4, 4 ) struct ( 8) [sp+0x20] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T07] ( 10, 6 ) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V01 arg1 [V01,T10] ( 4, 4 ) struct ( 8) [sp+0x28] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T06] ( 5, 5 ) int -> r7 single-def
-; V04 loc2 [V04,T00] ( 16, 8.61) int -> r7
+; V03 loc1 [V03,T13] ( 5, 5 ) int -> r8 single-def
+; V04 loc2 [V04,T00] ( 12, 24.11) int -> r7
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
-;* V07 loc5 [V07,T20] ( 0, 0 ) int -> zero-ref
+; V07 loc5 [V07,T04] ( 4, 12.50) int -> r8
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp2 [V10,T04] ( 3, 6 ) int -> r9 "Inlining Arg"
-; V11 tmp3 [V11,T10] ( 2, 4 ) byref -> r8 single-def "Inlining Arg"
+; V10 tmp2 [V10,T12] ( 3, 6 ) int -> r10 "Inlining Arg"
+; V11 tmp3 [V11,T15] ( 2, 4 ) byref -> r9 single-def "Inlining Arg"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V13 tmp5 [V13,T02] ( 6, 6 ) int -> r9 "Inlining Arg"
-; V14 tmp6 [V14,T09] ( 4, 4 ) byref -> r8 "Inlining Arg"
-; V15 tmp7 [V15,T12] ( 4, 3.21) int -> r6 "Inlining Arg"
-; V16 tmp8 [V16,T08] ( 5, 4.21) int -> r5 "Inlining Arg"
+; V13 tmp5 [V13,T01] ( 3, 24 ) int -> r10 "Inlining Arg"
+; V14 tmp6 [V14,T02] ( 2, 16 ) byref -> r9 "Inlining Arg"
+; V15 tmp7 [V15,T16] ( 4, 3.21) int -> r6 "Inlining Arg"
+; V16 tmp8 [V16,T14] ( 5, 4.21) int -> r5 "Inlining Arg"
;* V17 tmp9 [V17 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V18 tmp10 [V18,T16] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp"
-; V19 tmp11 [V19,T14] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V20 tmp12 [V20,T13] ( 4, 3 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp13 [V21,T05] ( 7, 5 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP
-; V22 tmp14 [V22,T07] ( 8, 4.50) byref -> r8 "field V05._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp15 [V23,T11] ( 6, 3.50) int -> r9 "field V05._length (fldOffset=0x4)" P-INDEP
-; V24 tmp16 [V24,T18] ( 2, 2 ) byref -> r8 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp17 [V25,T19] ( 2, 2 ) int -> r9 single-def "field V09._length (fldOffset=0x4)" P-INDEP
-; V26 tmp18 [V26,T15] ( 4, 2 ) byref -> r8 "field V12._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp19 [V27,T17] ( 4, 2 ) int -> r9 "field V12._length (fldOffset=0x4)" P-INDEP
+; V18 tmp10 [V18,T18] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp"
+; V19 tmp11 [V19,T17] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V20 tmp12 [V20,T11] ( 3, 6 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp13 [V21,T05] ( 5, 11 ) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP
+; V22 tmp14 [V22,T03] ( 5, 13.50) byref -> r9 "field V05._reference (fldOffset=0x0)" P-INDEP
+; V23 tmp15 [V23,T06] ( 4, 9.50) int -> r10 "field V05._length (fldOffset=0x4)" P-INDEP
+; V24 tmp16 [V24,T19] ( 2, 2 ) byref -> r9 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp17 [V25,T20] ( 2, 2 ) int -> r10 single-def "field V09._length (fldOffset=0x4)" P-INDEP
+; V26 tmp18 [V26,T08] ( 2, 8 ) byref -> r9 "field V12._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp19 [V27,T09] ( 2, 8 ) int -> r10 "field V12._length (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M21045_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r1,r2}
- push {r4,r5,r6,r7,r8,r9,r11,lr}
- add r11, sp, 24
+ push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ add r11, sp, 32
mov r4, r0
; gcrRegs +[r4]
;; size=12 bbWeight=1 PerfScore 4.00
G_M21045_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x20]
+ ldr r5, [sp+0x28]
; byrRegs +[r5]
- ldr r6, [sp+0x24]
+ ldr r6, [sp+0x2C]
ldr r7, [r4+0x34]
- cmp r7, r6
+ mov r8, r7
+ cmp r8, r6
bls SHORT G_M21045_IG04
- ;; size=10 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M21045_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
; byrRegs -[r5]
@@ -66,96 +67,78 @@ G_M21045_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M21045_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs +[r4]
; byrRegs +[r5]
- lsls r0, r7, 1
- add r8, r5, r0
- ; byrRegs +[r8]
- sub r9, r6, r7
- cmp r9, 0
+ lsl r0, r8, 1
+ add r9, r5, r0
+ ; byrRegs +[r9]
+ sub r10, r6, r8
+ cmp r10, 0
bge SHORT G_M21045_IG05
movs r0, 0
b SHORT G_M21045_IG06
- ;; size=20 bbWeight=1 PerfScore 7.00
-G_M21045_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref
+ ;; size=22 bbWeight=1 PerfScore 7.00
+G_M21045_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M21045_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz
+G_M21045_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- cmp r7, 0
+ cmp r8, 0
bne SHORT G_M21045_IG17
- ;; size=16 bbWeight=1 PerfScore 6.00
-G_M21045_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r9, 1
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M21045_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref
+ mov r8, 0
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M21045_IG08: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz
+ cmp r10, 1
bls SHORT G_M21045_IG17
- ldrh r0, [r8]
+ ldrh r0, [r9]
cmp r0, 10
beq SHORT G_M21045_IG17
- ldrh r0, [r8+0x02]
- cmp r0, 44
- bne SHORT G_M21045_IG17
- movs r7, 2
- cmp r7, r6
- bhi SHORT G_M21045_IG03
- lsls r0, r7, 1
- add r8, r5, r0
- sub r9, r6, r7
- cmp r9, 0
- bge SHORT G_M21045_IG08
- movs r0, 0
- b SHORT G_M21045_IG09
- ;; size=48 bbWeight=0.50 PerfScore 9.00
-G_M21045_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref
- movs r0, 1
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M21045_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0120 {r5 r8}, byref, isz
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- cmp r9, 1
- bls SHORT G_M21045_IG17
- ldrh r0, [r8]
- cmp r0, 10
- beq SHORT G_M21045_IG17
- ldrh r0, [r8+0x02]
+ ldrh r0, [r9+0x02]
cmp r0, 44
bne SHORT G_M21045_IG17
adds r7, r7, 2
cmp r7, r6
bhi SHORT G_M21045_IG03
lsls r0, r7, 1
- add r8, r5, r0
- sub r9, r6, r7
- cmp r9, 0
- bge SHORT G_M21045_IG10
+ add r9, r5, r0
+ sub r10, r6, r7
+ cmp r10, 0
+ bge SHORT G_M21045_IG09
movs r0, 0
- b SHORT G_M21045_IG11
- ;; size=60 bbWeight=0.50 PerfScore 11.00
-G_M21045_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0100 {r8}, byref
- ; byrRegs -[r5]
+ b SHORT G_M21045_IG10
+ ;; size=48 bbWeight=4 PerfScore 72.00
+G_M21045_IG09: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref
movs r0, 1
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M21045_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0100 {r8}, byref, isz
+ ;; size=2 bbWeight=4 PerfScore 4.00
+G_M21045_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- cmp r9, 0
+ add r8, r8, 1
+ cmp r8, 2
+ blt SHORT G_M21045_IG08
+ ;; size=22 bbWeight=4 PerfScore 28.00
+G_M21045_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0200 {r9}, byref, isz
+ ; byrRegs -[r5]
+ cmp r10, 0
beq SHORT G_M21045_IG17
- ldrh r3, [r8]
+ ldrh r3, [r9]
cmp r3, 99
bne SHORT G_M21045_IG17
adds r7, r7, 1
str r7, [r4+0x34]
- movs r5, 0
+ mov lr, 0
+ mov r5, lr
mov r6, r7
cmp r6, r5
bge SHORT G_M21045_IG13
- ;; size=38 bbWeight=0.50 PerfScore 7.50
+ ;; size=30 bbWeight=0.50 PerfScore 6.00
G_M21045_IG12: ; bbWeight=0.11, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; byrRegs -[r8]
+ ; byrRegs -[r9]
movs r6, 0
mov r5, r7
;; size=4 bbWeight=0.11 PerfScore 0.21
@@ -203,7 +186,7 @@ G_M21045_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
movs r0, 1
;; size=50 bbWeight=0.50 PerfScore 10.50
G_M21045_IG16: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r6,r7,r8,r9,r11,lr}
+ pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
@@ -211,7 +194,7 @@ G_M21045_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M21045_IG18: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r6,r7,r8,r9,r11,lr}
+ pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
@@ -222,7 +205,7 @@ G_M21045_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 10, PerfScore 67.21, instruction count 127, allocated bytes for code 328 (MethodHash=1f82adca) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex3991_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
+; Total bytes of code 290, prolog size 10, PerfScore 150.21, instruction count 110, allocated bytes for code 290 (MethodHash=1f82adca) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex3991_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -234,7 +217,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 164 (0x000a4) Actual length = 328 (0x000148)
+ Function Length : 145 (0x00091) Actual length = 290 (0x000122)
...
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> r5
+; V00 arg0 [V00,T12] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> r5
; V02 loc1 [V02,T03] ( 14, 25.50) int -> r7
; V03 loc2 [V03,T07] ( 6, 11 ) ref -> r8 class-hnd <System.String>
-; V04 loc3 [V04,T12] ( 7, 6.50) int -> r2
-; V05 loc4 [V05,T05] ( 14, 18.54) int -> r7
+; V04 loc3 [V04,T13] ( 4, 6.50) int -> r2
+; V05 loc4 [V05,T05] ( 8, 21.50) int -> r7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T10] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
; V08 tmp2 [V08,T00] ( 5, 40 ) ushort -> r9 "Inlining Arg"
@@ -55,8 +55,8 @@
;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
; V45 tmp39 [V45,T09] ( 2, 8 ) byref -> r0 "field V22._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp40 [V46 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
-; V47 cse0 [V47,T06] ( 9, 16.04) int -> r6 "CSE - aggressive"
-; V48 cse1 [V48,T04] ( 10, 22 ) byref -> r9 multi-def "CSE - aggressive"
+; V47 cse0 [V47,T06] ( 8, 19.50) int -> r6 "CSE - aggressive"
+; V48 cse1 [V48,T04] ( 9, 22 ) byref -> r9 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -135,7 +135,7 @@ G_M41923_IG12: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, b
;; size=4 bbWeight=8 PerfScore 16.00
G_M41923_IG13: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r7, r6
- bhs SHORT G_M41923_IG32
+ bhs SHORT G_M41923_IG28
add r9, r8, 8
; byrRegs +[r9]
lsls r0, r7, 1
@@ -179,11 +179,11 @@ G_M41923_IG17: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, b
;; size=18 bbWeight=4 PerfScore 28.00
G_M41923_IG18: ; bbWeight=1, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r7
- bge SHORT G_M41923_IG30
+ bge SHORT G_M41923_IG26
;; size=4 bbWeight=1 PerfScore 2.00
G_M41923_IG19: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r6
- bhs SHORT G_M41923_IG32
+ bhs SHORT G_M41923_IG28
add r9, r8, 8
; byrRegs +[r9]
lsls r2, r5, 1
@@ -191,7 +191,7 @@ G_M41923_IG19: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}
cmp r2, 91
bne SHORT G_M41923_IG20
cmp r7, r6
- bhs SHORT G_M41923_IG32
+ bhs SHORT G_M41923_IG28
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
@@ -201,67 +201,39 @@ G_M41923_IG19: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}
;; size=36 bbWeight=0.50 PerfScore 7.50
G_M41923_IG20: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
cmp r7, r6
- bhs SHORT G_M41923_IG32
+ bhs SHORT G_M41923_IG28
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
- beq SHORT G_M41923_IG30
+ beq SHORT G_M41923_IG26
movs r2, 0
cmp r7, r5
- blt SHORT G_M41923_IG30
- orrs r0, r7, r5
- cmp r0, 0
- blt SHORT G_M41923_IG25
- cmp r6, r7
- ble SHORT G_M41923_IG25
- ;; size=32 bbWeight=0.50 PerfScore 7.00
-G_M41923_IG21: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ blt SHORT G_M41923_IG26
+ ;; size=20 bbWeight=0.50 PerfScore 4.50
+G_M41923_IG21: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ cmp r7, r6
+ bhs SHORT G_M41923_IG28
lsls r0, r7, 1
ldrh r0, [r9+r0]
cmp r0, 44
bne SHORT G_M41923_IG23
- ;; size=10 bbWeight=3.96 PerfScore 15.84
-G_M41923_IG22: ; bbWeight=1.98, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 24.00
+G_M41923_IG22: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
adds r2, r2, 1
cmp r2, 4
- beq SHORT G_M41923_IG29
- ;; size=6 bbWeight=1.98 PerfScore 5.94
-G_M41923_IG23: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ beq SHORT G_M41923_IG25
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M41923_IG23: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
subs r7, r7, 1
cmp r7, r5
bge SHORT G_M41923_IG21
- ;; size=6 bbWeight=3.96 PerfScore 11.88
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M41923_IG24: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
; byrRegs -[r9]
- b SHORT G_M41923_IG30
+ b SHORT G_M41923_IG26
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M41923_IG25: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r9]
- cmp r7, r6
- bhs SHORT G_M41923_IG32
- lsls r0, r7, 1
- ldrh r0, [r9+r0]
- cmp r0, 44
- bne SHORT G_M41923_IG27
- ;; size=14 bbWeight=0.04 PerfScore 0.24
-G_M41923_IG26: ; bbWeight=0.02, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- adds r2, r2, 1
- cmp r2, 4
- beq SHORT G_M41923_IG29
- ;; size=6 bbWeight=0.02 PerfScore 0.06
-G_M41923_IG27: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- subs r7, r7, 1
- cmp r7, r5
- bge SHORT G_M41923_IG25
- ;; size=6 bbWeight=0.04 PerfScore 0.12
-G_M41923_IG28: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ; byrRegs -[r9]
- b SHORT G_M41923_IG30
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M41923_IG29: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M41923_IG25: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r8] +[r4]
subs r2, r7, r5
mov r0, r4
@@ -276,15 +248,15 @@ G_M41923_IG29: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
mov r8, r0
; gcrRegs +[r8]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M41923_IG30: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+G_M41923_IG26: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r8
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M41923_IG31: ; bbWeight=1, epilog, nogc, extend
+G_M41923_IG27: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M41923_IG32: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M41923_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -293,7 +265,7 @@ G_M41923_IG32: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 360, prolog size 10, PerfScore 327.08, instruction count 142, allocated bytes for code 360 (MethodHash=49705c3c) for method System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
+; Total bytes of code 324, prolog size 10, PerfScore 332.00, instruction count 126, allocated bytes for code 324 (MethodHash=49705c3c) for method System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -305,7 +277,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 180 (0x000b4) Actual length = 360 (0x000168)
+ Function Length : 162 (0x000a2) Actual length = 324 (0x000144)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> r5
+; V00 arg0 [V00,T12] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> r5
; V02 loc1 [V02,T03] ( 14, 25.50) int -> r7
; V03 loc2 [V03,T07] ( 6, 11 ) ref -> r8 class-hnd <System.String>
-; V04 loc3 [V04,T12] ( 7, 6.50) int -> r2
-; V05 loc4 [V05,T05] ( 14, 18.54) int -> r7
+; V04 loc3 [V04,T13] ( 4, 6.50) int -> r2
+; V05 loc4 [V05,T05] ( 8, 21.50) int -> r7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T10] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
; V08 tmp2 [V08,T00] ( 5, 40 ) ushort -> r9 "Inlining Arg"
@@ -55,8 +55,8 @@
;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
; V45 tmp39 [V45,T09] ( 2, 8 ) byref -> r0 "field V22._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp40 [V46 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
-; V47 cse0 [V47,T06] ( 9, 16.04) int -> r6 "CSE - aggressive"
-; V48 cse1 [V48,T04] ( 10, 22 ) byref -> r9 multi-def "CSE - aggressive"
+; V47 cse0 [V47,T06] ( 8, 19.50) int -> r6 "CSE - aggressive"
+; V48 cse1 [V48,T04] ( 9, 22 ) byref -> r9 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -135,7 +135,7 @@ G_M5940_IG12: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, by
;; size=4 bbWeight=8 PerfScore 16.00
G_M5940_IG13: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r7, r6
- bhs SHORT G_M5940_IG32
+ bhs SHORT G_M5940_IG28
add r9, r8, 8
; byrRegs +[r9]
lsls r0, r7, 1
@@ -179,11 +179,11 @@ G_M5940_IG17: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, by
;; size=18 bbWeight=4 PerfScore 28.00
G_M5940_IG18: ; bbWeight=1, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r7
- bge SHORT G_M5940_IG30
+ bge SHORT G_M5940_IG26
;; size=4 bbWeight=1 PerfScore 2.00
G_M5940_IG19: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r6
- bhs SHORT G_M5940_IG32
+ bhs SHORT G_M5940_IG28
add r9, r8, 8
; byrRegs +[r9]
lsls r2, r5, 1
@@ -191,7 +191,7 @@ G_M5940_IG19: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {},
cmp r2, 91
bne SHORT G_M5940_IG20
cmp r7, r6
- bhs SHORT G_M5940_IG32
+ bhs SHORT G_M5940_IG28
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
@@ -201,67 +201,39 @@ G_M5940_IG19: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {},
;; size=36 bbWeight=0.50 PerfScore 7.50
G_M5940_IG20: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
cmp r7, r6
- bhs SHORT G_M5940_IG32
+ bhs SHORT G_M5940_IG28
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
- beq SHORT G_M5940_IG30
+ beq SHORT G_M5940_IG26
movs r2, 0
cmp r7, r5
- blt SHORT G_M5940_IG30
- orrs r0, r7, r5
- cmp r0, 0
- blt SHORT G_M5940_IG25
- cmp r6, r7
- ble SHORT G_M5940_IG25
- ;; size=32 bbWeight=0.50 PerfScore 7.00
-G_M5940_IG21: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ blt SHORT G_M5940_IG26
+ ;; size=20 bbWeight=0.50 PerfScore 4.50
+G_M5940_IG21: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ cmp r7, r6
+ bhs SHORT G_M5940_IG28
lsls r0, r7, 1
ldrh r0, [r9+r0]
cmp r0, 44
bne SHORT G_M5940_IG23
- ;; size=10 bbWeight=3.96 PerfScore 15.84
-G_M5940_IG22: ; bbWeight=1.98, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 24.00
+G_M5940_IG22: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
adds r2, r2, 1
cmp r2, 4
- beq SHORT G_M5940_IG29
- ;; size=6 bbWeight=1.98 PerfScore 5.94
-G_M5940_IG23: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ beq SHORT G_M5940_IG25
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M5940_IG23: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
subs r7, r7, 1
cmp r7, r5
bge SHORT G_M5940_IG21
- ;; size=6 bbWeight=3.96 PerfScore 11.88
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M5940_IG24: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
; byrRegs -[r9]
- b SHORT G_M5940_IG30
+ b SHORT G_M5940_IG26
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M5940_IG25: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r9]
- cmp r7, r6
- bhs SHORT G_M5940_IG32
- lsls r0, r7, 1
- ldrh r0, [r9+r0]
- cmp r0, 44
- bne SHORT G_M5940_IG27
- ;; size=14 bbWeight=0.04 PerfScore 0.24
-G_M5940_IG26: ; bbWeight=0.02, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- adds r2, r2, 1
- cmp r2, 4
- beq SHORT G_M5940_IG29
- ;; size=6 bbWeight=0.02 PerfScore 0.06
-G_M5940_IG27: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- subs r7, r7, 1
- cmp r7, r5
- bge SHORT G_M5940_IG25
- ;; size=6 bbWeight=0.04 PerfScore 0.12
-G_M5940_IG28: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ; byrRegs -[r9]
- b SHORT G_M5940_IG30
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M5940_IG29: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M5940_IG25: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r8] +[r4]
subs r2, r7, r5
mov r0, r4
@@ -276,15 +248,15 @@ G_M5940_IG29: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, by
mov r8, r0
; gcrRegs +[r8]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M5940_IG30: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+G_M5940_IG26: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r8
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M5940_IG31: ; bbWeight=1, epilog, nogc, extend
+G_M5940_IG27: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M5940_IG32: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M5940_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -293,7 +265,7 @@ G_M5940_IG32: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 360, prolog size 10, PerfScore 327.08, instruction count 142, allocated bytes for code 360 (MethodHash=714fe8cb) for method System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
+; Total bytes of code 324, prolog size 10, PerfScore 332.00, instruction count 126, allocated bytes for code 324 (MethodHash=714fe8cb) for method System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -305,7 +277,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 180 (0x000b4) Actual length = 360 (0x000168)
+ Function Length : 162 (0x000a2) Actual length = 324 (0x000144)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,31 +9,31 @@
; Final local variable assignments
;
; V00 this [V00,T24] ( 9, 22.50) ref -> r5 this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Buffers.AhoCorasickNode]>
-; V01 loc0 [V01,T14] ( 5, 33.50) int -> r6
-; V02 loc1 [V02,T34] ( 5, 19 ) int -> [sp+0x74] spill-single-def
+; V01 loc0 [V01,T15] ( 5, 33.50) int -> r6
+; V02 loc1 [V02,T33] ( 5, 19 ) int -> [sp+0x74] spill-single-def
; V03 loc2 [V03,T23] ( 7, 27 ) ref -> r8 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T43] ( 4, 10 ) ref -> [sp+0x30] class-hnd exact spill-single-def <<unknown class>>
-; V05 loc4 [V05,T33] ( 6, 19 ) int -> r9
-; V06 loc5 [V06,T40] ( 7, 10.50) ref -> [sp+0x2C] class-hnd EH-live single-def <<unknown class>>
+; V04 loc3 [V04,T42] ( 4, 10 ) ref -> [sp+0x2C] class-hnd exact spill-single-def <<unknown class>>
+; V05 loc4 [V05,T32] ( 6, 19 ) int -> r9
+; V06 loc5 [V06,T39] ( 7, 10.50) ref -> [sp+0x28] class-hnd EH-live single-def <<unknown class>>
; V07 loc6 [V07 ] ( 2, 4 ) struct ( 8) [sp+0x6C] 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 -> [sp+0x28] class-hnd EH-live single-def <<unknown class>>
+; V08 loc7 [V08,T37] ( 8, 10.50) ref -> [sp+0x24] class-hnd EH-live single-def <<unknown class>>
; V09 loc8 [V09 ] ( 2, 4 ) struct ( 8) [sp+0x64] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V10 loc9 [V10,T27] ( 3, 20 ) ref -> r6 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V10 loc9 [V10,T26] ( 3, 20 ) ref -> r6 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T03] ( 5, 66 ) int -> r4
-; V12 loc11 [V12,T06] ( 6, 60 ) ref -> [sp+0x24] class-hnd exact spill-single-def <<unknown class>>
-; V13 loc12 [V13,T46] ( 2, 8.50) int -> r9
-; V14 loc13 [V14,T62] ( 3, 1.50) int -> r9
-; V15 loc14 [V15,T39] ( 8, 10.50) ref -> [sp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
+; V12 loc11 [V12,T06] ( 6, 60 ) ref -> [sp+0x20] class-hnd exact spill-single-def <<unknown class>>
+; V13 loc12 [V13,T45] ( 2, 8.50) int -> r9
+; V14 loc13 [V14,T61] ( 3, 1.50) int -> r9
+; V15 loc14 [V15,T38] ( 8, 10.50) ref -> [sp+0x1C] class-hnd EH-live spill-single-def <<unknown class>>
; V16 loc15 [V16 ] ( 2, 4 ) struct ( 8) [sp+0x5C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V17 loc16 [V17,T12] ( 5, 36 ) ref -> r4 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V17 loc16 [V17,T13] ( 6, 44 ) ref -> r4 class-hnd exact <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V18 loc17 [V18,T00] ( 5,210 ) int -> [sp+0x58]
-; V19 loc18 [V19,T26] ( 3, 24 ) int -> r12
-; V20 loc19 [V20,T11] ( 6, 44 ) ref -> [sp+0x1C] class-hnd exact spill-single-def <<unknown class>>
+; V19 loc18 [V19,T25] ( 3, 24 ) int -> lr
+; V20 loc19 [V20,T12] ( 6, 44 ) ref -> [sp+0x18] class-hnd exact spill-single-def <<unknown class>>
; V21 OutArgs [V21 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V22 tmp1 [V22,T28] ( 3, 20 ) ref -> [sp+0x18] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V22 tmp1 [V22,T27] ( 3, 20 ) ref -> [sp+0x14] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V23 tmp2 [V23 ] ( 0, 0 ) ref -> zero-ref
-; V24 tmp3 [V24,T13] ( 2, 36 ) int -> [sp+0x54] spill-single-def "impAppendStmt"
-; V25 tmp4 [V25,T15] ( 2, 32 ) ref -> r3 "CASTCLASS eval op1"
+; V24 tmp3 [V24,T14] ( 2, 36 ) int -> [sp+0x54] spill-single-def "impAppendStmt"
+; V25 tmp4 [V25,T16] ( 2, 32 ) ref -> r3 "CASTCLASS eval op1"
;* V26 tmp5 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V27 tmp6 [V27,T17] ( 2, 32 ) int -> [sp+0x50] spill-single-def "impAppendStmt"
; V28 tmp7 [V28,T18] ( 2, 32 ) int -> [sp+0x4C] spill-single-def "impAppendStmt"
@@ -41,27 +41,27 @@
;* V30 tmp9 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V31 tmp10 [V31,T19] ( 2, 32 ) int -> [sp+0x48] spill-single-def "impAppendStmt"
; V32 tmp11 [V32,T20] ( 2, 32 ) int -> [sp+0x44] spill-single-def "impAppendStmt"
-; V33 tmp12 [V33,T52] ( 3, 3 ) ref -> r4 single-def "handle histogram profile tmp"
+; V33 tmp12 [V33,T51] ( 3, 3 ) ref -> r4 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,T55] ( 5, 2 ) ref -> r9 "handle histogram profile tmp"
-; V37 tmp16 [V37,T53] ( 3, 3 ) ref -> r4 single-def "handle histogram profile tmp"
+; V36 tmp15 [V36,T54] ( 5, 2 ) ref -> r9 "handle histogram profile tmp"
+; V37 tmp16 [V37,T52] ( 3, 3 ) ref -> r4 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,T54] ( 3, 3 ) ref -> r4 single-def "handle histogram profile tmp"
+; V42 tmp21 [V42,T53] ( 3, 3 ) ref -> r4 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,T30] ( 3, 20 ) int -> [sp+0x40] spill-single-def "Inline stloc first use temp"
-; V48 tmp27 [V48,T29] ( 3, 20 ) ref -> [sp+0x14] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V47 tmp26 [V47,T29] ( 3, 20 ) int -> [sp+0x40] spill-single-def "Inline stloc first use temp"
+; V48 tmp27 [V48,T28] ( 3, 20 ) ref -> [sp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V49 tmp28 [V49,T04] ( 5, 66 ) int -> [sp+0x3C] "Inline stloc first use temp"
; V50 tmp29 [V50,T01] ( 3, 96 ) byref -> r0 "Inlining Arg"
;* V51 tmp30 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Array>
; V52 tmp31 [V52,T21] ( 2, 32 ) int -> r0 "Inlining Arg"
-; V53 tmp32 [V53,T16] ( 2, 32 ) byref -> r0 "Inlining Arg"
+; V53 tmp32 [V53,T08] ( 3, 48 ) byref -> r0 "Inlining Arg"
;* V54 tmp33 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Array>
; V55 tmp34 [V55,T22] ( 2, 32 ) int -> r0 "Inlining Arg"
; V56 tmp35 [V56 ] ( 2, 4 ) ref -> [sp+0x6C] do-not-enreg[X] addr-exposed "field V07.key (fldOffset=0x0)" P-DEP
@@ -70,36 +70,35 @@
; V59 tmp38 [V59 ] ( 1, 2 ) ref -> [sp+0x68] do-not-enreg[X] addr-exposed "field V09.value (fldOffset=0x4)" P-DEP
; V60 tmp39 [V60 ] ( 2, 4 ) ref -> [sp+0x5C] do-not-enreg[X] addr-exposed "field V16.key (fldOffset=0x0)" P-DEP
; V61 tmp40 [V61 ] ( 1, 2 ) ref -> [sp+0x60] do-not-enreg[X] addr-exposed "field V16.value (fldOffset=0x4)" P-DEP
-; V62 tmp41 [V62,T56] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V63 tmp42 [V63,T35] ( 2, 16 ) ref -> r3 "argument with side effect"
-; V64 tmp43 [V64,T49] ( 2, 8 ) ref -> r0 "argument with side effect"
-; V65 tmp44 [V65,T08] ( 3, 48 ) ref -> r0 "argument with side effect"
-; V66 tmp45 [V66,T64] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V67 tmp46 [V67,T57] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V68 tmp47 [V68,T58] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V69 tmp48 [V69,T36] ( 2, 16 ) ref -> r0 "argument with side effect"
-; V70 tmp49 [V70,T50] ( 2, 8 ) ref -> r0 "argument with side effect"
-; V71 tmp50 [V71,T09] ( 3, 48 ) ref -> r0 "argument with side effect"
-; V72 tmp51 [V72,T65] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V73 tmp52 [V73,T59] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V74 tmp53 [V74,T60] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V75 tmp54 [V75,T37] ( 2, 16 ) ref -> r0 "argument with side effect"
-; V76 tmp55 [V76,T51] ( 2, 8 ) ref -> r0 "argument with side effect"
-; V77 tmp56 [V77,T66] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V78 tmp57 [V78,T61] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V79 PSPSym [V79,T63] ( 1, 1 ) int -> [sp+0x78] do-not-enreg[V] "PSPSym"
-; V80 cse0 [V80,T45] ( 5, 8.50) ref -> r5 multi-def "CSE - conservative"
-; V81 cse1 [V81,T47] ( 4, 8 ) ref -> r6 multi-def "CSE - conservative"
-; V82 cse2 [V82,T41] ( 6, 10.50) ref -> r6 multi-def "CSE - conservative"
-; V83 cse3 [V83,T48] ( 4, 8 ) ref -> registers multi-def "CSE - conservative"
-; V84 cse4 [V84,T42] ( 6, 10.50) ref -> [sp+0x10] multi-def "CSE - conservative"
-; V85 cse5 [V85,T44] ( 3, 10 ) ref -> r8 "CSE - conservative"
-; V86 cse6 [V86,T25] ( 3, 24 ) byref -> [sp+0x0C] spill-single-def "CSE - moderate"
-; V87 cse7 [V87,T07] ( 4, 48 ) int -> r1 "CSE - moderate"
-; V88 cse8 [V88,T02] ( 3, 68 ) int -> [sp+0x38] spill-single-def "CSE - aggressive"
-; V89 cse9 [V89,T31] ( 3, 20 ) int -> [sp+0x34] spill-single-def "CSE - moderate"
-; V90 cse10 [V90,T32] ( 3, 20 ) int -> r7 "CSE - moderate"
-; V91 rat0 [V91,T10] ( 3, 48 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V62 tmp41 [V62,T55] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V63 tmp42 [V63,T34] ( 2, 16 ) ref -> r3 "argument with side effect"
+; V64 tmp43 [V64,T48] ( 2, 8 ) ref -> r0 "argument with side effect"
+; V65 tmp44 [V65,T09] ( 3, 48 ) ref -> r0 "argument with side effect"
+; V66 tmp45 [V66,T63] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V67 tmp46 [V67,T56] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V68 tmp47 [V68,T57] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V69 tmp48 [V69,T35] ( 2, 16 ) ref -> r0 "argument with side effect"
+; V70 tmp49 [V70,T49] ( 2, 8 ) ref -> r0 "argument with side effect"
+; V71 tmp50 [V71,T10] ( 3, 48 ) ref -> r0 "argument with side effect"
+; V72 tmp51 [V72,T64] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V73 tmp52 [V73,T58] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V74 tmp53 [V74,T59] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V75 tmp54 [V75,T36] ( 2, 16 ) ref -> r0 "argument with side effect"
+; V76 tmp55 [V76,T50] ( 2, 8 ) ref -> r0 "argument with side effect"
+; V77 tmp56 [V77,T65] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V78 tmp57 [V78,T60] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V79 PSPSym [V79,T62] ( 1, 1 ) int -> [sp+0x78] do-not-enreg[V] "PSPSym"
+; V80 cse0 [V80,T44] ( 5, 8.50) ref -> r5 multi-def "CSE - conservative"
+; V81 cse1 [V81,T46] ( 4, 8 ) ref -> r6 multi-def "CSE - conservative"
+; V82 cse2 [V82,T40] ( 6, 10.50) ref -> r6 multi-def "CSE - conservative"
+; V83 cse3 [V83,T47] ( 4, 8 ) ref -> registers multi-def "CSE - conservative"
+; V84 cse4 [V84,T41] ( 6, 10.50) ref -> [sp+0x0C] multi-def "CSE - conservative"
+; V85 cse5 [V85,T43] ( 3, 10 ) ref -> r8 "CSE - conservative"
+; V86 cse6 [V86,T07] ( 5, 56 ) int -> [sp+0x38] spill-single-def "CSE - aggressive"
+; V87 cse7 [V87,T02] ( 3, 68 ) int -> [sp+0x34] spill-single-def "CSE - aggressive"
+; V88 cse8 [V88,T30] ( 3, 20 ) int -> [sp+0x30] spill-single-def "CSE - moderate"
+; V89 cse9 [V89,T31] ( 3, 20 ) int -> r7 "CSE - moderate"
+; V90 rat0 [V90,T11] ( 3, 48 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 124
@@ -161,25 +160,25 @@ G_M35178_IG03: ; bbWeight=0.50, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}
G_M35178_IG04: ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz
ldr r4, [r5+0x08]
; gcrRegs +[r4]
- str r4, [sp+0x30]
+ str r4, [sp+0x2C]
; GC ptr vars +{V04}
mov r9, 0
ldr r0, [r4+0x04]
cmp r0, 0
ble G_M35178_IG21
;; size=16 bbWeight=1 PerfScore 6.00
-G_M35178_IG05: ; bbWeight=4, gcVars=000000000000080000000000 {V04}, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35178_IG05: ; bbWeight=4, gcVars=000000000000040000000000 {V04}, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
add r0, r4, 8
; byrRegs +[r0]
lsl r3, r9, 2
ldr r3, [r0+r3]
; gcrRegs +[r3]
- str r3, [sp+0x18]
+ str r3, [sp+0x14]
; GC ptr vars +{V22}
cmp r3, 0
beq G_M35178_IG20
;; size=18 bbWeight=4 PerfScore 24.00
-G_M35178_IG06: ; bbWeight=2, gcVars=000000000000080010000000 {V04 V22}, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35178_IG06: ; bbWeight=2, gcVars=000000000000040008000000 {V04 V22}, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r3-r4]
; byrRegs -[r0]
movw r0, 0xd1ff
@@ -214,19 +213,19 @@ G_M35178_IG08: ; bbWeight=2, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, b
ldr r1, [r1]
blx r1 // <unknown method>
; gcr arg pop 0
- ldr r0, [sp+0x18]
+ ldr r0, [sp+0x14]
; gcrRegs +[r0]
ldr lr, [r0+0x04]
; gcrRegs +[lr]
- str lr, [sp+0x14]
+ str lr, [sp+0x10]
; GC ptr vars +{V48}
mov r12, 0
ldr r3, [lr+0x04]
- str r3, [sp+0x34]
+ str r3, [sp+0x30]
cmp r3, 0
ble G_M35178_IG19
;; size=38 bbWeight=2 PerfScore 24.00
-G_M35178_IG09: ; bbWeight=16, gcVars=000000000000080020000000 {V04 V48}, gcrefRegs=4120 {r5 r8 lr}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35178_IG09: ; bbWeight=16, gcVars=000000000000040010000000 {V04 V48}, gcrefRegs=4120 {r5 r8 lr}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
; GC ptr vars -{V22}
ldr r2, [sp+0x40] // [V47 tmp26]
@@ -250,14 +249,14 @@ G_M35178_IG09: ; bbWeight=16, gcVars=000000000000080020000000 {V04 V48},
; gcr arg pop 0
ldr r4, [sp+0x3C] // [V49 tmp28]
adds r4, r4, 1
- ldr r7, [sp+0x34] // [V89 cse9]
+ ldr r7, [sp+0x30] // [V88 cse8]
cmp r7, r4
mov r12, r4
- ldr lr, [sp+0x14] // [V48 tmp27]
+ ldr lr, [sp+0x10] // [V48 tmp27]
; gcrRegs +[lr]
bgt G_M35178_IG18
;; size=56 bbWeight=16 PerfScore 336.00
-G_M35178_IG10: ; bbWeight=4, gcVars=000000000000080000000000 {V04}, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35178_IG10: ; bbWeight=4, gcVars=000000000000040000000000 {V04}, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[lr]
; GC ptr vars -{V48}
movw r0, 0xd1ff
@@ -267,7 +266,7 @@ G_M35178_IG10: ; bbWeight=4, gcVars=000000000000080000000000 {V04}, gcref
blx r3 // CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
add r9, r9, 1
- ldr r4, [sp+0x30] // [V04 loc3]
+ ldr r4, [sp+0x2C] // [V04 loc3]
; gcrRegs +[r4]
ldr r0, [r4+0x04]
cmp r0, r9
@@ -305,10 +304,10 @@ G_M35178_IG12: ; bbWeight=0.50, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}
; gcr arg pop 0
mov r9, r0
; gcrRegs +[r9]
- str r9, [sp+0x2C] // [V06 loc5]
+ str r9, [sp+0x28] // [V06 loc5]
; GC ptr vars +{V06}
;; size=50 bbWeight=0.50 PerfScore 8.50
-G_M35178_IG13: ; bbWeight=0.50, gcVars=000000000000010000000000 {V06}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35178_IG13: ; bbWeight=0.50, gcVars=000000000000008000000000 {V06}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
b SHORT G_M35178_IG15
;; size=2 bbWeight=0.50 PerfScore 0.50
@@ -404,23 +403,23 @@ G_M35178_IG16: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- b SHORT G_M35178_IG52
+ b SHORT G_M35178_IG53
...
@@ -14,8 +14,8 @@
; V02 arg2 [V02,T12] ( 5, 6.65) ref -> r6 class-hnd single-def <System.String>
; V03 arg3 [V03,T22] ( 4, 4.21) struct ( 8) [sp+0xD4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T55] ( 4, 2.23) ref -> r9 class-hnd single-def <System.ICustomFormatter>
-; V05 loc1 [V05,T00] ( 62, 39.13) int -> [sp+0xAC] ld-addr-op
-; V06 loc2 [V06,T04] ( 30, 16.26) ushort -> [sp+0xA8]
+; V05 loc1 [V05,T00] ( 72, 39.14) int -> [sp+0xAC] ld-addr-op
+; V06 loc2 [V06,T04] ( 34, 16.26) ushort -> [sp+0xA8]
; V07 loc3 [V07,T40] ( 12, 4.21) int -> [sp+0xA4]
; V08 loc4 [V08,T48] ( 5, 3.06) ubyte -> [sp+0xA0]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
@@ -247,8 +247,8 @@
; V235 cse2 [V235,T25] ( 3, 5.64) ref -> r1 "CSE - conservative"
; V236 cse3 [V236,T26] ( 3, 5.64) int -> r2 "CSE - conservative"
; V237 cse4 [V237,T39] ( 3, 4.21) ref -> r0 "CSE - conservative"
-; V238 cse5 [V238,T05] ( 19, 15.21) int -> [sp+0x44] spill-single-def "CSE - aggressive"
-; V239 cse6 [V239,T08] ( 15, 12.11) byref -> [sp+0x18] spill-single-def "CSE - moderate"
+; V238 cse5 [V238,T05] ( 21, 15.21) int -> [sp+0x44] spill-single-def "CSE - aggressive"
+; V239 cse6 [V239,T08] ( 17, 12.11) byref -> [sp+0x18] spill-single-def "CSE - moderate"
; V240 cse7 [V240,T27] ( 3, 5.64) int -> r1 "CSE - moderate"
; V241 rat0 [V241,T18] ( 5, 7 ) ref -> r9 class-hnd "replacement local" <System.ICustomFormatter>
; V242 rat1 [V242,T16] ( 6, 8.26) ref -> r0 class-hnd "replacement local" <System.ISpanFormattable>
@@ -327,7 +327,7 @@ G_M4730_IG08: ; bbWeight=2.32, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=00
ldr r3, [r6+0x04]
str r3, [sp+0x44] // [V238 cse5]
cmp r3, r4
- bls G_M4730_IG125
+ bls G_M4730_IG133
;; size=10 bbWeight=2.32 PerfScore 9.27
G_M4730_IG09: ; bbWeight=1.33, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
add r2, r6, 8
@@ -376,12 +376,12 @@ G_M4730_IG11: ; bbWeight=1.33, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=00
; gcr arg pop 0
mov r8, r0
cmp r8, 0
- blt G_M4730_IG167
+ blt G_M4730_IG175
;; size=62 bbWeight=1.33 PerfScore 25.29
G_M4730_IG12: ; bbWeight=1.32, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x58] // [V162 tmp140]
cmp r8, r3
- bhi G_M4730_IG171
+ bhi G_M4730_IG179
;; size=8 bbWeight=1.32 PerfScore 3.95
G_M4730_IG13: ; bbWeight=1.32, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
cmp r8, 0
@@ -471,7 +471,7 @@ G_M4730_IG23: ; bbWeight=0.36, gcVars=00000000000000040000000000800000 {V
; gcrRegs -[r1] +[r3 r9 lr]
; GC ptr vars +{V13 V23 V151}
movs r0, 0
- b SHORT G_M4730_IG90
+ b SHORT G_M4730_IG98
;; size=4 bbWeight=0.36 PerfScore 0.72
G_M4730_IG24: ; bbWeight=0.04, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r3 r9 lr]
@@ -541,7 +541,7 @@ G_M4730_IG29: ; bbWeight=1.32, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=00
add r4, r8
ldr r8, [sp+0x44] // [V238 cse5]
cmp r4, r8
- bhs G_M4730_IG169
+ bhs G_M4730_IG177
lsls r0, r4, 1
ldr r3, [sp+0x18] // [V239 cse6]
; byrRegs +[r3]
@@ -590,8 +590,8 @@ G_M4730_IG33: ; bbWeight=1.21, gcVars=00000000000000040000000000800000 {V
; gcrRegs -[r0] +[r3 r8]
; GC ptr vars +{V13 V23 V151}
cmp r8, 0
- bne G_M4730_IG129
- b SHORT G_M4730_IG69
+ bne G_M4730_IG137
+ b SHORT G_M4730_IG93
;; size=10 bbWeight=1.21 PerfScore 3.62
G_M4730_IG34: ; bbWeight=1.21, gcVars=00000000000000000000000000000100 {V239}, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0008 {r3}, gcvars, byref, isz
; gcrRegs -[r3 r8]
@@ -629,7 +629,7 @@ G_M4730_IG36: ; bbWeight=1.21, gcVars=00000000000000000000000000000100 {V
str r0, [sp+0x60] // [V152 tmp130]
add r12, r4, -1
cmp r12, r8
- bhs G_M4730_IG169
+ bhs G_M4730_IG177
lsl r12, r4, 1
sub r12, r12, 2
ldrh r12, [r3+r12]
@@ -692,7 +692,7 @@ G_M4730_IG42: ; bbWeight=1.21, gcVars=00000000000000040000000000000100 {V
; byrRegs +[r2]
ldrh r0, [r2+r0]
cmp r0, 125
- beq SHORT G_M4730_IG64
+ beq SHORT G_M4730_IG54
;; size=16 bbWeight=1.21 PerfScore 9.64
G_M4730_IG43: ; bbWeight=0.57, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
sub r1, r0, 48
@@ -703,41 +703,45 @@ G_M4730_IG44: ; bbWeight=0.09, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=00
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r3, r1
- blt SHORT G_M4730_IG68
+ blt SHORT G_M4730_IG58
;; size=12 bbWeight=0.09 PerfScore 0.34
G_M4730_IG45: ; bbWeight=0.01, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
cmp r0, 32
- bne SHORT G_M4730_IG48
+ bne SHORT G_M4730_IG49
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M4730_IG46: ; bbWeight=0.22, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
+G_M4730_IG46: ; bbWeight=0.00, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
+ cmp r4, 0
+ bge SHORT G_M4730_IG55
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M4730_IG47: ; bbWeight=0.00, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
adds r4, r4, 1
cmp r8, r4
bls SHORT G_M4730_IG30
- ;; size=6 bbWeight=0.22 PerfScore 0.66
-G_M4730_IG47: ; bbWeight=0.71, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
+ ;; size=6 bbWeight=0.00 PerfScore 0.01
+G_M4730_IG48: ; bbWeight=0.01, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
lsls r0, r4, 1
ldrh r0, [r2+r0]
cmp r0, 32
- beq SHORT G_M4730_IG46
- ;; size=8 bbWeight=0.71 PerfScore 2.83
-G_M4730_IG48: ; bbWeight=0.49, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
+ beq SHORT G_M4730_IG47
+ ;; size=8 bbWeight=0.01 PerfScore 0.03
+G_M4730_IG49: ; bbWeight=0.49, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
cmp r0, 44
- bne SHORT G_M4730_IG59
+ bne SHORT G_M4730_IG67
;; size=4 bbWeight=0.49 PerfScore 0.98
-G_M4730_IG49: ; bbWeight=0.70, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
+G_M4730_IG50: ; bbWeight=0.70, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
adds r4, r4, 1
cmp r8, r4
bls G_M4730_IG30
lsls r0, r4, 1
ldrh r0, [r2+r0]
cmp r0, 32
- beq SHORT G_M4730_IG49
+ beq SHORT G_M4730_IG50
;; size=16 bbWeight=0.70 PerfScore 4.91
-G_M4730_IG50: ; bbWeight=0.34, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
+G_M4730_IG51: ; bbWeight=0.34, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
cmp r0, 45
- bne SHORT G_M4730_IG52
+ bne SHORT G_M4730_IG53
;; size=4 bbWeight=0.34 PerfScore 0.68
-G_M4730_IG51: ; bbWeight=0.15, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
+G_M4730_IG52: ; bbWeight=0.15, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
movs r1, 1
str r1, [sp+0xA0] // [V08 loc4]
adds r4, r4, 1
@@ -746,105 +750,35 @@ G_M4730_IG51: ; bbWeight=0.15, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=00
lsls r0, r4, 1
ldrh r0, [r2+r0]
;; size=16 bbWeight=0.15 PerfScore 1.07
-G_M4730_IG52: ; bbWeight=0.34, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
+G_M4730_IG53: ; bbWeight=0.34, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
subs r0, 48
mov lr, r0
cmp lr, 10
bhs SHORT G_M4730_IG41
adds r4, r4, 1
cmp r8, r4
- bls G_M4730_IG30
- ;; size=18 bbWeight=0.34 PerfScore 2.36
-G_M4730_IG53: ; bbWeight=0.42, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
- cmp r4, r8
- bhs G_M4730_IG169
- lsls r0, r4, 1
- ldrh r0, [r2+r0]
- sub r12, r0, 48
- cmp r12, 9
- bhi SHORT G_M4730_IG55
- ;; size=20 bbWeight=0.42 PerfScore 2.92
-G_M4730_IG54: ; bbWeight=0.09, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- cmp lr, r12
- blt SHORT G_M4730_IG70
- ;; size=12 bbWeight=0.09 PerfScore 0.34
-G_M4730_IG55: ; bbWeight=0.01, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
- cmp r0, 32
- bne SHORT G_M4730_IG63
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M4730_IG56: ; bbWeight=0.08, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
- adds r4, r4, 1
- cmp r8, r4
- bls G_M4730_IG30
- ;; size=8 bbWeight=0.08 PerfScore 0.24
-G_M4730_IG57: ; bbWeight=0.42, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
- lsls r0, r4, 1
- ldrh r0, [r2+r0]
- cmp r0, 32
- beq SHORT G_M4730_IG56
- ;; size=8 bbWeight=0.42 PerfScore 1.67
-G_M4730_IG58: ; bbWeight=0.21, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref
- str lr, [sp+0xA4] // [V07 loc3]
- ;; size=4 bbWeight=0.21 PerfScore 0.21
-G_M4730_IG59: ; bbWeight=0.49, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
- cmp r0, 125
- beq SHORT G_M4730_IG62
- ;; size=4 bbWeight=0.49 PerfScore 0.98
-G_M4730_IG60: ; bbWeight=0.20, gcVars=00000000000000000000000000000100 {V239}, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, gcvars, byref, isz
- ; GC ptr vars -{V08 V151}
- cmp r0, 58
- beq SHORT G_M4730_IG65
- ;; size=4 bbWeight=0.20 PerfScore 0.40
-G_M4730_IG61: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r5-r7 r9]
- ; byrRegs -[r2]
- ; GC ptr vars -{V239}
- mov r0, r4
- movs r1, 76
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowFormatInvalidString(int,int)
- ; gcr arg pop 0
- bkpt
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M4730_IG62: ; bbWeight=0.25, gcVars=00000000000000040000000000000100 {V151 V239}, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, gcvars, byref, isz
- ; gcrRegs +[r5-r7 r9]
- ; byrRegs +[r2]
- ; GC ptr vars +{V08 V151 V239}
+ bhi SHORT G_M4730_IG60
+ b SHORT G_M4730_IG30
+ ;; size=18 bbWeight=0.34 PerfScore 2.70
+G_M4730_IG54: ; bbWeight=0.60, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
str r3, [sp+0x9C] // [V10 loc6]
- b SHORT G_M4730_IG76
- ;; size=4 bbWeight=0.25 PerfScore 0.49
-G_M4730_IG63: ; bbWeight=0.00, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
- str lr, [sp+0xA4] // [V07 loc3]
- b SHORT G_M4730_IG59
- ;; size=6 bbWeight=0.00 PerfScore 0.01
-G_M4730_IG64: ; bbWeight=0.60, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
- str r3, [sp+0x9C] // [V10 loc6]
- b SHORT G_M4730_IG76
+ b SHORT G_M4730_IG83
;; size=4 bbWeight=0.60 PerfScore 1.21
-G_M4730_IG65: ; bbWeight=0.20, gcVars=00000000000000000000000000000100 {V239}, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, gcvars, byref
- ; GC ptr vars -{V08 V151}
- mov r12, r4
- ;; size=2 bbWeight=0.20 PerfScore 0.20
-G_M4730_IG66: ; bbWeight=0.52, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
+G_M4730_IG55: ; bbWeight=0.22, gcrefRegs=02E0 {r5 r6 r7 r9}, byrefRegs=0004 {r2}, byref, isz
adds r4, r4, 1
cmp r8, r4
...
@@ -3,48 +3,48 @@
; Tier-0 switched to FullOpts code
; optimized code
; r11 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 -> r4 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [sp+0x50] do-not-enreg[S] single-def double-align <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> r4 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [sp+0x50] do-not-enreg[S] single-def double-align <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T00] ( 10, 16 ) int -> r6
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> r6
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) 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) [sp+0x24] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref double-align "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> r1 "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] ( 3, 1.50) int -> r0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> r1 "impAppendStmt"
+; V13 tmp8 [V13,T16] ( 3, 1.50) int -> r0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> r1 "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] ( 3, 1.50) int -> r0
+; V23 tmp18 [V23,T17] ( 3, 1.50) int -> r0
; V24 tmp19 [V24 ] ( 7, 13 ) struct (16) [sp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op double-align "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> r1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> r1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op double-align "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 -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" 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=0x4)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> r5 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x4)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> r5 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x4)" 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 ] ( 4, 5 ) long -> [sp+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=0x4)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> r1 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> r0 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> [sp+0x08] do-not-enreg[F] "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> r1 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> r0 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> [sp+0x08] do-not-enreg[F] "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) int -> [sp+0x34] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T19] ( 3, 1.50) int -> r1 "CSE - moderate"
-; V50 cse1 [V50,T02] ( 3, 10 ) int -> r1 "CSE - aggressive"
+; V49 cse0 [V49,T18] ( 3, 1.50) int -> r1 "CSE - moderate"
; TEMP_01 ref -> [r11-0x44]
;
; Lcl frame size = 60
@@ -101,7 +100,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r1, [sp+0x10]
@@ -119,36 +117,53 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, b
movs r6, 3
b SHORT G_M46478_IG06
;; size=28 bbWeight=1 PerfScore 14.00
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- mov r6, r1
- cmp r6, 0
- ble SHORT G_M46478_IG07
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- subs r1, r6, 1
- movs r0, 4
- cmp r1, r0
- bhs G_M46478_IG21
- lsls r0, r6, 2
- subs r0, r0, 4
- ldr r0, [r5+r0]
- cmp r0, 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ movs r6, 2
+ b SHORT G_M46478_IG09
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ldr r1, [r5+0x08]
+ cmp r1, 0
beq SHORT G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 36.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ b SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ movs r6, 1
+ b SHORT G_M46478_IG12
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ldr r1, [r5+0x04]
+ cmp r1, 0
+ beq SHORT G_M46478_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ b SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ movs r6, 0
+ b SHORT G_M46478_IG13
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ldr r1, [r5]
+ cmp r1, 0
+ beq SHORT G_M46478_IG11
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
cmp r6, 0
- bne SHORT G_M46478_IG11
+ bne SHORT G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 2.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; byrRegs -[r5]
movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r1, [r1]
and r1, r1, 1
cmp r1, 1
- bne G_M46478_IG22
+ bne G_M46478_IG28
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r1, [r1]
@@ -168,40 +183,39 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b
movt r12, 0xd1ff
ldr lr, [sp+0x34]
cmp r12, lr
- beq SHORT G_M46478_IG10
+ beq SHORT G_M46478_IG16
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_FAIL_FAST
; byrRegs -[r0-r1]
- ; gcr arg pop 0
;; size=58 bbWeight=0.50 PerfScore 9.00
-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
add sp, 60
pop {r4,r5,r6,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; byrRegs +[r4-r5]
cmp r6, 1
- bne SHORT G_M46478_IG15
+ bne SHORT G_M46478_IG21
ldr r1, [r5]
cmp r1, 0
- ble SHORT G_M46478_IG15
+ ble SHORT G_M46478_IG21
str r1, [r4+0x04]
ldr r1, [r4+0x04]
ldr r0, [r5+0x0C]
ands r0, r0, 0x80000000
cmp r0, 0
- bne SHORT G_M46478_IG12
+ bne SHORT G_M46478_IG18
movs r0, 1
- b SHORT G_M46478_IG13
+ b SHORT G_M46478_IG19
;; size=28 bbWeight=0.50 PerfScore 6.50
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; byrRegs -[r5]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
mul r1, r1, r0
str r1, [r4+0x04]
movs r1, 0
@@ -210,20 +224,19 @@ G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b
movt r12, 0xd1ff
ldr lr, [sp+0x34]
cmp r12, lr
- beq SHORT G_M46478_IG14
+ beq SHORT G_M46478_IG20
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_FAIL_FAST
; byrRegs -[r4]
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 6.00
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add sp, 60
pop {r4,r5,r6,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; byrRegs +[r4-r5]
mov r1, r6
movw r0, 0xd1ff
@@ -232,7 +245,6 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[r0]
- ; gcr arg pop 0
str r0, [sp+0x04]
ldr r1, [sp+0x04]
; gcrRegs +[r1]
@@ -250,70 +262,68 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
movs r3, 0
...
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> r5
+; V00 arg0 [V00,T12] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> r5
; V02 loc1 [V02,T03] ( 14, 25.50) int -> r7
; V03 loc2 [V03,T07] ( 6, 11 ) ref -> r8 class-hnd <System.String>
-; V04 loc3 [V04,T12] ( 7, 6.50) int -> r2
-; V05 loc4 [V05,T05] ( 14, 18.54) int -> r7
+; V04 loc3 [V04,T13] ( 4, 6.50) int -> r2
+; V05 loc4 [V05,T05] ( 8, 21.50) int -> r7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T10] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
; V08 tmp2 [V08,T00] ( 4, 32 ) ushort -> r0 "Inlining Arg"
@@ -57,8 +57,8 @@
;* V46 tmp40 [V46 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
; V47 tmp41 [V47,T09] ( 2, 8 ) byref -> r3 "field V24._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp42 [V48 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
-; V49 cse0 [V49,T06] ( 9, 16.04) int -> r6 "CSE - aggressive"
-; V50 cse1 [V50,T04] ( 10, 22 ) byref -> r9 multi-def "CSE - aggressive"
+; V49 cse0 [V49,T06] ( 8, 19.50) int -> r6 "CSE - aggressive"
+; V50 cse1 [V50,T04] ( 9, 22 ) byref -> r9 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -122,7 +122,7 @@ G_M5940_IG10: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, by
;; size=4 bbWeight=8 PerfScore 16.00
G_M5940_IG11: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r7, r6
- bhs SHORT G_M5940_IG28
+ bhs SHORT G_M5940_IG24
add r9, r8, 8
; byrRegs +[r9]
lsls r0, r7, 1
@@ -151,11 +151,11 @@ G_M5940_IG13: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, by
;; size=18 bbWeight=4 PerfScore 24.00
G_M5940_IG14: ; bbWeight=1, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r7
- bge SHORT G_M5940_IG26
+ bge SHORT G_M5940_IG22
;; size=4 bbWeight=1 PerfScore 2.00
G_M5940_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r6
- bhs SHORT G_M5940_IG28
+ bhs SHORT G_M5940_IG24
add r9, r8, 8
; byrRegs +[r9]
lsls r2, r5, 1
@@ -163,7 +163,7 @@ G_M5940_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {},
cmp r2, 91
bne SHORT G_M5940_IG16
cmp r7, r6
- bhs SHORT G_M5940_IG28
+ bhs SHORT G_M5940_IG24
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
@@ -173,67 +173,39 @@ G_M5940_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {},
;; size=36 bbWeight=0.50 PerfScore 7.50
G_M5940_IG16: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
cmp r7, r6
- bhs SHORT G_M5940_IG28
+ bhs SHORT G_M5940_IG24
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
- beq SHORT G_M5940_IG26
+ beq SHORT G_M5940_IG22
movs r2, 0
cmp r7, r5
- blt SHORT G_M5940_IG26
- orrs r0, r7, r5
- cmp r0, 0
- blt SHORT G_M5940_IG21
- cmp r6, r7
- ble SHORT G_M5940_IG21
- ;; size=32 bbWeight=0.50 PerfScore 7.00
-G_M5940_IG17: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ blt SHORT G_M5940_IG22
+ ;; size=20 bbWeight=0.50 PerfScore 4.50
+G_M5940_IG17: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ cmp r7, r6
+ bhs SHORT G_M5940_IG24
lsls r0, r7, 1
ldrh r0, [r9+r0]
cmp r0, 44
bne SHORT G_M5940_IG19
- ;; size=10 bbWeight=3.96 PerfScore 15.84
-G_M5940_IG18: ; bbWeight=1.98, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 24.00
+G_M5940_IG18: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
adds r2, r2, 1
cmp r2, 4
- beq SHORT G_M5940_IG25
- ;; size=6 bbWeight=1.98 PerfScore 5.94
-G_M5940_IG19: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ beq SHORT G_M5940_IG21
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M5940_IG19: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
subs r7, r7, 1
cmp r7, r5
bge SHORT G_M5940_IG17
- ;; size=6 bbWeight=3.96 PerfScore 11.88
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M5940_IG20: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
; byrRegs -[r9]
- b SHORT G_M5940_IG26
+ b SHORT G_M5940_IG22
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M5940_IG21: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r9]
- cmp r7, r6
- bhs SHORT G_M5940_IG28
- lsls r0, r7, 1
- ldrh r0, [r9+r0]
- cmp r0, 44
- bne SHORT G_M5940_IG23
- ;; size=14 bbWeight=0.04 PerfScore 0.24
-G_M5940_IG22: ; bbWeight=0.02, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- adds r2, r2, 1
- cmp r2, 4
- beq SHORT G_M5940_IG25
- ;; size=6 bbWeight=0.02 PerfScore 0.06
-G_M5940_IG23: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- subs r7, r7, 1
- cmp r7, r5
- bge SHORT G_M5940_IG21
- ;; size=6 bbWeight=0.04 PerfScore 0.12
-G_M5940_IG24: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ; byrRegs -[r9]
- b SHORT G_M5940_IG26
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M5940_IG25: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M5940_IG21: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r8] +[r4]
subs r2, r7, r5
mov r0, r4
@@ -248,15 +220,15 @@ G_M5940_IG25: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, by
mov r8, r0
; gcrRegs +[r8]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M5940_IG26: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+G_M5940_IG22: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r8
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M5940_IG27: ; bbWeight=1, epilog, nogc, extend
+G_M5940_IG23: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M5940_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M5940_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -265,7 +237,7 @@ G_M5940_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 304, prolog size 10, PerfScore 247.08, instruction count 122, allocated bytes for code 304 (MethodHash=714fe8cb) for method System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
+; Total bytes of code 268, prolog size 10, PerfScore 252.00, instruction count 106, allocated bytes for code 268 (MethodHash=714fe8cb) for method System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -277,7 +249,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 152 (0x00098) Actual length = 304 (0x000130)
+ Function Length : 134 (0x00086) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> r5
+; V00 arg0 [V00,T12] ( 5, 4.50) ref -> r4 class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> r5
; V02 loc1 [V02,T03] ( 14, 25.50) int -> r7
; V03 loc2 [V03,T07] ( 6, 11 ) ref -> r8 class-hnd <System.String>
-; V04 loc3 [V04,T12] ( 7, 6.50) int -> r2
-; V05 loc4 [V05,T05] ( 14, 18.54) int -> r7
+; V04 loc3 [V04,T13] ( 4, 6.50) int -> r2
+; V05 loc4 [V05,T05] ( 8, 21.50) int -> r7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T10] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
; V08 tmp2 [V08,T00] ( 4, 32 ) ushort -> r0 "Inlining Arg"
@@ -57,8 +57,8 @@
;* V46 tmp40 [V46 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
; V47 tmp41 [V47,T09] ( 2, 8 ) byref -> r3 "field V24._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp42 [V48 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
-; V49 cse0 [V49,T06] ( 9, 16.04) int -> r6 "CSE - aggressive"
-; V50 cse1 [V50,T04] ( 10, 22 ) byref -> r9 multi-def "CSE - aggressive"
+; V49 cse0 [V49,T06] ( 8, 19.50) int -> r6 "CSE - aggressive"
+; V50 cse1 [V50,T04] ( 9, 22 ) byref -> r9 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -122,7 +122,7 @@ G_M41923_IG10: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, b
;; size=4 bbWeight=8 PerfScore 16.00
G_M41923_IG11: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r7, r6
- bhs SHORT G_M41923_IG28
+ bhs SHORT G_M41923_IG24
add r9, r8, 8
; byrRegs +[r9]
lsls r0, r7, 1
@@ -151,11 +151,11 @@ G_M41923_IG13: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, b
;; size=18 bbWeight=4 PerfScore 24.00
G_M41923_IG14: ; bbWeight=1, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r7
- bge SHORT G_M41923_IG26
+ bge SHORT G_M41923_IG22
;; size=4 bbWeight=1 PerfScore 2.00
G_M41923_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, r6
- bhs SHORT G_M41923_IG28
+ bhs SHORT G_M41923_IG24
add r9, r8, 8
; byrRegs +[r9]
lsls r2, r5, 1
@@ -163,7 +163,7 @@ G_M41923_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}
cmp r2, 91
bne SHORT G_M41923_IG16
cmp r7, r6
- bhs SHORT G_M41923_IG28
+ bhs SHORT G_M41923_IG24
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
@@ -173,67 +173,39 @@ G_M41923_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}
;; size=36 bbWeight=0.50 PerfScore 7.50
G_M41923_IG16: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
cmp r7, r6
- bhs SHORT G_M41923_IG28
+ bhs SHORT G_M41923_IG24
lsls r2, r7, 1
ldrh r2, [r9+r2]
cmp r2, 93
- beq SHORT G_M41923_IG26
+ beq SHORT G_M41923_IG22
movs r2, 0
cmp r7, r5
- blt SHORT G_M41923_IG26
- orrs r0, r7, r5
- cmp r0, 0
- blt SHORT G_M41923_IG21
- cmp r6, r7
- ble SHORT G_M41923_IG21
- ;; size=32 bbWeight=0.50 PerfScore 7.00
-G_M41923_IG17: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ blt SHORT G_M41923_IG22
+ ;; size=20 bbWeight=0.50 PerfScore 4.50
+G_M41923_IG17: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ cmp r7, r6
+ bhs SHORT G_M41923_IG24
lsls r0, r7, 1
ldrh r0, [r9+r0]
cmp r0, 44
bne SHORT G_M41923_IG19
- ;; size=10 bbWeight=3.96 PerfScore 15.84
-G_M41923_IG18: ; bbWeight=1.98, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ ;; size=14 bbWeight=4 PerfScore 24.00
+G_M41923_IG18: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
adds r2, r2, 1
cmp r2, 4
- beq SHORT G_M41923_IG25
- ;; size=6 bbWeight=1.98 PerfScore 5.94
-G_M41923_IG19: ; bbWeight=3.96, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
+ beq SHORT G_M41923_IG21
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M41923_IG19: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
subs r7, r7, 1
cmp r7, r5
bge SHORT G_M41923_IG17
- ;; size=6 bbWeight=3.96 PerfScore 11.88
+ ;; size=6 bbWeight=4 PerfScore 12.00
G_M41923_IG20: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
; byrRegs -[r9]
- b SHORT G_M41923_IG26
+ b SHORT G_M41923_IG22
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M41923_IG21: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- ; gcrRegs +[r4]
- ; byrRegs +[r9]
- cmp r7, r6
- bhs SHORT G_M41923_IG28
- lsls r0, r7, 1
- ldrh r0, [r9+r0]
- cmp r0, 44
- bne SHORT G_M41923_IG23
- ;; size=14 bbWeight=0.04 PerfScore 0.24
-G_M41923_IG22: ; bbWeight=0.02, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- adds r2, r2, 1
- cmp r2, 4
- beq SHORT G_M41923_IG25
- ;; size=6 bbWeight=0.02 PerfScore 0.06
-G_M41923_IG23: ; bbWeight=0.04, gcrefRegs=0110 {r4 r8}, byrefRegs=0200 {r9}, byref, isz
- subs r7, r7, 1
- cmp r7, r5
- bge SHORT G_M41923_IG21
- ;; size=6 bbWeight=0.04 PerfScore 0.12
-G_M41923_IG24: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ; byrRegs -[r9]
- b SHORT G_M41923_IG26
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M41923_IG25: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M41923_IG21: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r8] +[r4]
subs r2, r7, r5
mov r0, r4
@@ -248,15 +220,15 @@ G_M41923_IG25: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
mov r8, r0
; gcrRegs +[r8]
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M41923_IG26: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+G_M41923_IG22: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r8
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M41923_IG27: ; bbWeight=1, epilog, nogc, extend
+G_M41923_IG23: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M41923_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M41923_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -265,7 +237,7 @@ G_M41923_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 304, prolog size 10, PerfScore 247.08, instruction count 122, allocated bytes for code 304 (MethodHash=49705c3c) for method System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
+; Total bytes of code 268, prolog size 10, PerfScore 252.00, instruction count 106, allocated bytes for code 268 (MethodHash=49705c3c) for method System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -277,7 +249,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 152 (0x00098) Actual length = 304 (0x000130)
+ Function Length : 134 (0x00086) Actual length = 268 (0x00010c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -12,14 +12,14 @@
; V01 arg1 [V01 ] ( 11, 11 ) struct ( 8) [sp+0x80] do-not-enreg[SFA] multireg-arg single-def double-align <System.DateTime>
; V02 arg2 [V02,T39] ( 6, 5 ) ubyte -> [sp+0x88] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 4) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 12,132 ) ref -> [sp+0x08] class-hnd <<unknown class>>
+; V04 loc1 [V04,T07] ( 8, 68 ) ref -> [sp+0x08] class-hnd <<unknown class>>
; V05 loc2 [V05,T30] ( 3, 12 ) int -> r1
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> r2 class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> r2 class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T16] ( 5, 35 ) int -> [sp+0x54] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T40] ( 2, 5 ) ref -> r4 class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 4) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T06] ( 16, 74 ) ref -> [sp+0x04] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T05] ( 16, 74 ) ref -> [sp+0x04] class-hnd exact EH-live single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 6, 6 ) ubyte -> [sp+0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T28] ( 4, 13 ) int -> [sp+0x4C]
;* V14 loc11 [V14,T51] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
@@ -60,7 +60,7 @@
; V49 tmp29 [V49,T32] ( 6, 6 ) ref -> r5 class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V50 tmp30 [V50,T27] ( 11, 11 ) long -> [sp+0x80] do-not-enreg[] single-def "field V01._dateData (fldOffset=0x0)" P-DEP
; V51 tmp31 [V51,T17] ( 5, 35 ) int -> [sp+0x3C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V52 tmp32 [V52,T07] ( 13, 71 ) int -> r1 "field V09._ref (fldOffset=0x0)" P-INDEP
+; V52 tmp32 [V52,T06] ( 13, 71 ) int -> r1 "field V09._ref (fldOffset=0x0)" P-INDEP
; V53 tmp33 [V53,T20] ( 4, 24 ) int -> registers "field V10._ref (fldOffset=0x0)" P-INDEP
;* V54 tmp34 [V54,T52] ( 0, 0 ) int -> zero-ref single-def "field V21._ref (fldOffset=0x0)" P-INDEP
;* V55 tmp35 [V55,T26] ( 0, 0 ) int -> zero-ref "field V22._ref (fldOffset=0x0)" P-INDEP
@@ -74,24 +74,24 @@
; V63 tmp43 [V63,T35] ( 3, 6 ) ref -> r2 single-def "arr expr"
; V64 tmp44 [V64,T36] ( 3, 6 ) ref -> r2 single-def "arr expr"
; V65 tmp45 [V65,T10] ( 3, 48 ) ref -> r2 "arr expr"
-; V66 tmp46 [V66,T05] ( 3, 96 ) struct ( 8) [sp+0x18] do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.DateTime>
+; V66 tmp46 [V66,T04] ( 3, 96 ) struct ( 8) [sp+0x18] do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.DateTime>
; V67 tmp47 [V67,T21] ( 3, 24 ) ref -> r2 "arr expr"
; V68 tmp48 [V68,T11] ( 3, 48 ) ref -> r0 "arr expr"
; V69 tmp49 [V69,T12] ( 3, 48 ) ref -> r0 "arr expr"
; V70 PSPSym [V70,T53] ( 1, 1 ) int -> [sp+0x58] do-not-enreg[V] "PSPSym"
-; V71 cse0 [V71,T25] ( 4, 16 ) byref -> r1 "CSE - moderate"
-;* V72 cse1 [V72 ] ( 0, 0 ) long -> zero-ref "CSE - moderate"
-; V73 cse2 [V73,T02] ( 6,128 ) int -> r3 "CSE - aggressive"
+; V71 cse0 [V71,T01] ( 6,128 ) byref -> r3 "CSE - aggressive"
+; V72 cse1 [V72,T25] ( 4, 16 ) byref -> r1 "CSE - moderate"
+;* V73 cse2 [V73 ] ( 0, 0 ) long -> zero-ref "CSE - moderate"
; V74 cse3 [V74,T47] ( 3, 3 ) ref -> r2 "CSE - conservative"
; V75 cse4 [V75,T48] ( 3, 3 ) ref -> r2 "CSE - conservative"
; V76 cse5 [V76,T14] ( 4, 44 ) int -> [sp+0x14] spill-single-def "CSE - aggressive"
; V77 cse6 [V77,T22] ( 3, 24 ) int -> r3 "CSE - moderate"
; V78 cse7 [V78,T31] ( 3, 12 ) int -> r3 "CSE - moderate"
-; V79 rat0 [V79,T23] ( 4, 19 ) int -> r5 "field V72.lo (fldOffset=0x0)" P-INDEP
-; V80 rat1 [V80,T24] ( 4, 19 ) int -> [sp+0x10] "field V72.hi (fldOffset=0x4)" P-INDEP
+; V79 rat0 [V79,T23] ( 4, 19 ) int -> r5 "field V73.lo (fldOffset=0x0)" P-INDEP
+; V80 rat1 [V80,T24] ( 4, 19 ) int -> [sp+0x10] "field V73.hi (fldOffset=0x4)" P-INDEP
; V81 rat2 [V81,T37] ( 3, 6 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
; V82 rat3 [V82,T38] ( 3, 6 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V83 rat4 [V83,T04] ( 3, 96 ) byref -> r4 "ReplaceWithLclVar is creating a new local variable"
+; V83 rat4 [V83,T03] ( 3, 96 ) byref -> r4 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 92
@@ -220,7 +220,7 @@ G_M744_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
movs r1, 0
str r1, [sp+0x50] // [V12 loc9]
;; size=8 bbWeight=1 PerfScore 4.00
-G_M744_IG11: ; bbWeight=1, gcVars=0000000000080040 {V00 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG11: ; bbWeight=1, gcVars=0000000000080020 {V00 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
ldrb r1, [sp+0x50] // [V12 loc9]
cmp r1, 0
@@ -242,9 +242,9 @@ G_M744_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00
-G_M744_IG14: ; bbWeight=1, gcVars=0000000000080040 {V00 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M744_IG14: ; bbWeight=1, gcVars=0000000000080020 {V00 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r7]
- ; GC ptr vars +{V06 V11}
+ ; GC ptr vars +{V05 V11}
add r1, sp, 80 // [V12 loc9]
mov r0, r7
; gcrRegs +[r0]
@@ -335,8 +335,8 @@ G_M744_IG17: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref,
ldr r2, [r2+0x04]
; gcrRegs -[r2]
cmp r2, 0
- ble G_M744_IG27
- ;; size=46 bbWeight=1 PerfScore 16.00
+ ble SHORT G_M744_IG27
+ ;; size=44 bbWeight=1 PerfScore 16.00
G_M744_IG18: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
ldr r2, [r7+0x08]
; gcrRegs +[r2]
@@ -372,17 +372,20 @@ G_M744_IG19: ; bbWeight=4, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byr
G_M744_IG20: ; bbWeight=32, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, byref, isz
str r0, [sp+0x44] // [V17 loc14]
lsls r2, r0, 4
- add r3, r2, 8
- adds r2, r1, r3
- ; byrRegs +[r2]
- ldr r2, [r2+0x08]
+ adds r2, 8
+ str r1, [sp+0x08] // [V04 loc1]
+ ; GC ptr vars +{V04}
+ adds r3, r1, r2
+ ; byrRegs +[r3]
+ ldr r2, [r3+0x08]
; gcrRegs +[r2]
- ; byrRegs -[r2]
cmp r2, 0
beq SHORT G_M744_IG24
- ;; size=16 bbWeight=32 PerfScore 224.00
-G_M744_IG21: ; bbWeight=16, gcrefRegs=0086 {r1 r2 r7}, byrefRegs=0000 {}, byref, isz
- adds r4, r1, r3
+ ;; size=16 bbWeight=32 PerfScore 256.00
+G_M744_IG21: ; bbWeight=16, gcVars=00000000000800A0 {V00 V04 V11}, gcrefRegs=0084 {r2 r7}, byrefRegs=0008 {r3}, gcvars, byref, isz
+ ; gcrRegs -[r1]
+ ; GC ptr vars -{V05}
+ mov r4, r3
; byrRegs +[r4]
ldr r8, [r4]
ldr r4, [r4+0x04]
@@ -397,45 +400,38 @@ G_M744_IG21: ; bbWeight=16, gcrefRegs=0086 {r1 r2 r7}, byrefRegs=0000 {},
ldr r4, [sp+0x10] // [V80 rat1]
sbcs r6, r4, r6
bge SHORT G_M744_IG22
- str r1, [sp+0x08] // [V04 loc1]
- ; GC ptr vars +{V04}
- adds r2, r1, r3
+ ldr r2, [r3]
; gcrRegs -[r2]
- ; byrRegs +[r2]
- ldr r3, [r2]
- str r3, [sp+0x18] // [V66 tmp46]
- ldr r3, [r2+0x04]
- str r3, [sp+0x1C] // [V66 tmp46+0x04]
+ str r2, [sp+0x18] // [V66 tmp46]
+ ldr r2, [r3+0x04]
+ str r2, [sp+0x1C] // [V66 tmp46+0x04]
ldr r2, [sp+0x18] // [V66 tmp46]
- ; byrRegs -[r2]
ldr r3, [sp+0x1C] // [V66 tmp46+0x04]
+ ; byrRegs -[r3]
mov r0, r7
; gcrRegs +[r0]
movw r6, 0xd1ff
movt r6, 0xd1ff
ldr r6, [r6]
- ; GC ptr vars -{V06}
blx r6 // System.Runtime.Caching.ExpiresBucket:AddCount(System.DateTime):this
- ; gcrRegs -[r0-r1]
+ ; gcrRegs -[r0]
; gcr arg pop 0
b SHORT G_M744_IG23
- ;; size=70 bbWeight=16 PerfScore 432.00
-G_M744_IG22: ; bbWeight=16, gcVars=0000000000080040 {V00 V11}, gcrefRegs=0086 {r1 r2 r7}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r1-r2]
- ; GC ptr vars -{V04}
+ ;; size=66 bbWeight=16 PerfScore 400.00
+G_M744_IG22: ; bbWeight=16, gcrefRegs=0084 {r2 r7}, byrefRegs=0008 {r3}, byref
+ ; gcrRegs +[r2]
+ ; byrRegs +[r3]
movs r6, 255
strb r6, [r2+0x1C]
movs r6, 0
str r6, [r2+0x38]
- adds r2, r1, r3
+ movs r2, 1
; gcrRegs -[r2]
- ; byrRegs +[r2]
- movs r6, 1
- str r6, [r2+0x04]
+ str r2, [r3+0x04]
ldr r2, [sp+0x3C] // [V51 tmp31]
- ; byrRegs -[r2]
- str r2, [r1+r3]
+ str r2, [r3]
lsl r3, r9, 8
+ ; byrRegs -[r3]
ldr r0, [sp+0x44] // [V17 loc14]
uxtb r2, r0
orrs r3, r2
@@ -447,30 +443,27 @@ G_M744_IG22: ; bbWeight=16, gcVars=0000000000080040 {V00 V11}, gcrefRegs=
adds r3, r3, 1
str r3, [r7+0x18]
str r0, [sp+0x44] // [V17 loc14]
- str r1, [sp+0x08] // [V04 loc1]
- ; GC ptr vars +{V04}
- ;; size=46 bbWeight=16 PerfScore 352.00
-G_M744_IG23: ; bbWeight=16, gcVars=0000000000080042 {V00 V04 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r1]
+ ;; size=42 bbWeight=16 PerfScore 320.00
+G_M744_IG23: ; bbWeight=16, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
ldr r12, [sp+0x48] // [V16 loc13]
add r12, r12, -1
cmp r12, 0
str r12, [sp+0x48] // [V16 loc13]
str r4, [sp+0x10] // [V80 rat1]
- ldr r1, [sp+0x08] // [V04 loc1]
- ; gcrRegs +[r1]
beq SHORT G_M744_IG25
- ;; size=22 bbWeight=16 PerfScore 112.00
-G_M744_IG24: ; bbWeight=32, gcVars=0000000000080040 {V00 V11}, gcrefRegs=0082 {r1 r7}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V04}
+ ;; size=20 bbWeight=16 PerfScore 96.00
+G_M744_IG24: ; bbWeight=32, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x44] // [V17 loc14]
adds r0, r0, 1
ldr lr, [sp+0x14] // [V76 cse5]
cmp lr, r0
+ ldr r1, [sp+0x08] // [V04 loc1]
+ ; gcrRegs +[r1]
bgt SHORT G_M744_IG20
- ;; size=12 bbWeight=32 PerfScore 160.00
-G_M744_IG25: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=32 PerfScore 192.00
+G_M744_IG25: ; bbWeight=4, gcVars=0000000000080020 {V00 V11}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r1]
+ ; GC ptr vars -{V04}
ldr r8, [sp+0x4C] // [V13 loc10]
add r8, r8, -1
cmp r8, 0
@@ -484,8 +477,8 @@ G_M744_IG26: ; bbWeight=8, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref,
ldr r0, [r0+0x04]
; gcrRegs -[r0]
cmp r0, r9
- bgt G_M744_IG18
- ;; size=14 bbWeight=8 PerfScore 40.00
+ bgt SHORT G_M744_IG18
+ ;; size=12 bbWeight=8 PerfScore 40.00
G_M744_IG27: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x54] // [V07 loc4]
cmp r0, 0
@@ -912,7 +905,7 @@ G_M744_IG64: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, f
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1360, prolog size 26, PerfScore 2147.00, instruction count 520, allocated bytes for code 1360 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1348, prolog size 26, PerfScore 2131.00, instruction count 517, allocated bytes for code 1348 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -924,7 +917,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 579 (0x00243) Actual length = 1158 (0x000486)
+ Function Length : 573 (0x0023d) Actual length = 1146 (0x00047a)
---- 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
; r11 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 -> r4 this single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) struct (16) [sp+0x50] do-not-enreg[S] single-def double-align <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> r4 this single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [sp+0x50] do-not-enreg[S] single-def double-align <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T00] ( 10, 16 ) int -> r6
+; V03 loc1 [V03,T03] ( 9, 4.75) int -> r6
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) 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) [sp+0x24] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref double-align "spilled call-like call argument" <System.Decimal>
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V10 tmp5 [V10,T11] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V10 tmp5 [V10,T10] ( 2, 2 ) int -> r1 "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] ( 3, 1.50) int -> r0
-; V14 tmp9 [V14,T06] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V15 tmp10 [V15,T12] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
-; V16 tmp11 [V16,T07] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
-; V18 tmp13 [V18,T14] ( 2, 2 ) int -> r1 "impAppendStmt"
+; V13 tmp8 [V13,T16] ( 3, 1.50) int -> r0
+; V14 tmp9 [V14,T05] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V15 tmp10 [V15,T11] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V16 tmp11 [V16,T06] ( 3, 3 ) ref -> r0 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> r1 "Strict ordering of exceptions for Array store"
+; V18 tmp13 [V18,T13] ( 2, 2 ) int -> r1 "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] ( 3, 1.50) int -> r0
+; V23 tmp18 [V23,T17] ( 3, 1.50) int -> r0
; V24 tmp19 [V24 ] ( 7, 13 ) struct (16) [sp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op double-align "Inlining Arg" <System.Decimal>
-; V25 tmp20 [V25,T09] ( 3, 2.50) int -> r1 "Inline stloc first use temp"
+; V25 tmp20 [V25,T08] ( 3, 2.50) int -> r1 "Inline stloc first use temp"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op double-align "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 -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" P-INDEP
+; V31 tmp26 [V31,T00] ( 14, 9.50) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V32 tmp27 [V32,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" 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=0x4)" P-INDEP
-; V35 tmp30 [V35,T10] ( 2, 2 ) byref -> r5 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V36 tmp31 [V36,T21] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x4)" P-INDEP
+; V35 tmp30 [V35,T09] ( 2, 2 ) byref -> r5 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp31 [V36,T20] ( 0, 0 ) int -> zero-ref ptr "field V07._length (fldOffset=0x4)" 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 ] ( 4, 5 ) long -> [sp+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=0x4)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> r1 "field V27._flags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T16] ( 2, 2 ) int -> r0 "field V27._hi32 (fldOffset=0x4)" P-INDEP
-; V47 tmp42 [V47,T08] ( 3, 3 ) long -> [sp+0x08] do-not-enreg[F] "field V27._lo64 (fldOffset=0x8)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> r1 "field V27._flags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T15] ( 2, 2 ) int -> r0 "field V27._hi32 (fldOffset=0x4)" P-INDEP
+; V47 tmp42 [V47,T07] ( 3, 3 ) long -> [sp+0x08] do-not-enreg[F] "field V27._lo64 (fldOffset=0x8)" P-INDEP
; V48 GsCookie [V48 ] ( 1, 1 ) int -> [sp+0x34] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V49 cse0 [V49,T19] ( 3, 1.50) int -> r1 "CSE - moderate"
-; V50 cse1 [V50,T02] ( 3, 10 ) int -> r1 "CSE - aggressive"
+; V49 cse0 [V49,T18] ( 3, 1.50) int -> r1 "CSE - moderate"
; TEMP_01 ref -> [r11-0x44]
;
; Lcl frame size = 60
@@ -101,7 +100,6 @@ G_M46478_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 4.00
G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
ldr r1, [sp+0x10]
@@ -119,36 +117,53 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, b
movs r6, 3
b SHORT G_M46478_IG06
;; size=28 bbWeight=1 PerfScore 14.00
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- mov r6, r1
- cmp r6, 0
- ble SHORT G_M46478_IG07
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- subs r1, r6, 1
- movs r0, 4
- cmp r1, r0
- bhs G_M46478_IG21
- lsls r0, r6, 2
- subs r0, r0, 4
- ldr r0, [r5+r0]
- cmp r0, 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ movs r6, 2
+ b SHORT G_M46478_IG09
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ldr r1, [r5+0x08]
+ cmp r1, 0
beq SHORT G_M46478_IG05
- ;; size=20 bbWeight=4 PerfScore 36.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ b SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ movs r6, 1
+ b SHORT G_M46478_IG12
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ldr r1, [r5+0x04]
+ cmp r1, 0
+ beq SHORT G_M46478_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ b SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ movs r6, 0
+ b SHORT G_M46478_IG13
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ ldr r1, [r5]
+ cmp r1, 0
+ beq SHORT G_M46478_IG11
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
cmp r6, 0
- bne SHORT G_M46478_IG11
+ bne SHORT G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 2.00
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; byrRegs -[r5]
movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r1, [r1]
and r1, r1, 1
cmp r1, 1
- bne G_M46478_IG22
+ bne G_M46478_IG28
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r1, [r1]
@@ -168,40 +183,39 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b
movt r12, 0xd1ff
ldr lr, [sp+0x34]
cmp r12, lr
- beq SHORT G_M46478_IG10
+ beq SHORT G_M46478_IG16
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_FAIL_FAST
; byrRegs -[r0-r1]
- ; gcr arg pop 0
;; size=58 bbWeight=0.50 PerfScore 9.00
-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
add sp, 60
pop {r4,r5,r6,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; byrRegs +[r4-r5]
cmp r6, 1
- bne SHORT G_M46478_IG15
+ bne SHORT G_M46478_IG21
ldr r1, [r5]
cmp r1, 0
- ble SHORT G_M46478_IG15
+ ble SHORT G_M46478_IG21
str r1, [r4+0x04]
ldr r1, [r4+0x04]
ldr r0, [r5+0x0C]
ands r0, r0, 0x80000000
cmp r0, 0
- bne SHORT G_M46478_IG12
+ bne SHORT G_M46478_IG18
movs r0, 1
- b SHORT G_M46478_IG13
+ b SHORT G_M46478_IG19
;; size=28 bbWeight=0.50 PerfScore 6.50
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; byrRegs -[r5]
mov r0, -1
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
mul r1, r1, r0
str r1, [r4+0x04]
movs r1, 0
@@ -210,20 +224,19 @@ G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b
movt r12, 0xd1ff
ldr lr, [sp+0x34]
cmp r12, lr
- beq SHORT G_M46478_IG14
+ beq SHORT G_M46478_IG20
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_FAIL_FAST
; byrRegs -[r4]
- ; gcr arg pop 0
;; size=36 bbWeight=0.50 PerfScore 6.00
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add sp, 60
pop {r4,r5,r6,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; byrRegs +[r4-r5]
mov r1, r6
movw r0, 0xd1ff
@@ -232,7 +245,6 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[r0]
- ; gcr arg pop 0
str r0, [sp+0x04]
ldr r1, [sp+0x04]
; gcrRegs +[r1]
@@ -250,70 +262,68 @@ G_M46478_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
movs r3, 0
...
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.linux.arm.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_pgo.linux.arm.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_tiered.linux.arm.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
coreclr_tests.run.linux.arm.checked.mch | 22 | 3 | 17 | 2 | -32 | +4,568 |
libraries.crossgen2.linux.arm.checked.mch | 5 | 4 | 1 | 0 | -368 | +4 |
libraries.pmi.linux.arm.checked.mch | 6 | 5 | 1 | 0 | -278 | +8 |
libraries_tests.run.linux.arm.Release.mch | 364 | 42 | 319 | 3 | -1,720 | +920,398 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 10 | 8 | 2 | 0 | -676 | +130 |
realworld.run.linux.arm.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
407 | 62 | 340 | 5 | -3,074 | +925,108 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.linux.arm.checked.mch | 46,289 | 5,344 | 40,945 | 1,203 (2.53%) | 1,203 (2.53%) |
benchmarks.run_pgo.linux.arm.checked.mch | 155,316 | 54,949 | 100,367 | 3,303 (2.08%) | 3,303 (2.08%) |
benchmarks.run_tiered.linux.arm.checked.mch | 81,830 | 45,099 | 36,731 | 1,118 (1.35%) | 1,118 (1.35%) |
coreclr_tests.run.linux.arm.checked.mch | 471,780 | 258,996 | 212,784 | 7,456 (1.56%) | 7,540 (1.57%) |
libraries.crossgen2.linux.arm.checked.mch | 193,690 | 14 | 193,676 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.linux.arm.checked.mch | 270,805 | 6 | 270,799 | 7,820 (2.81%) | 7,820 (2.81%) |
libraries_tests.run.linux.arm.Release.mch | 707,770 | 441,682 | 266,088 | 18,469 (2.54%) | 18,876 (2.60%) |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 273,853 | 21,565 | 252,288 | 33,275 (10.83%) | 33,275 (10.83%) |
realworld.run.linux.arm.checked.mch | 36,402 | 157 | 36,245 | 1,408 (3.72%) | 1,408 (3.72%) |
2,237,735 | 827,812 | 1,409,923 | 74,052 (3.20%) | 74,543 (3.22%) |
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 321626918 (overridden on cmd)
Total bytes of diff: 321631454 (overridden on cmd)
Total bytes of delta: 4536 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
890 : 1823.dasm (40.64 % of base)
416 : 151490.dasm (16.26 % of base)
416 : 141866.dasm (16.26 % of base)
416 : 198605.dasm (14.45 % of base)
416 : 31143.dasm (14.56 % of base)
416 : 77156.dasm (16.26 % of base)
414 : 34704.dasm (15.28 % of base)
414 : 68428.dasm (15.28 % of base)
414 : 72299.dasm (15.28 % of base)
238 : 24397.dasm (13.11 % of base)
22 : 192579.dasm (1.27 % of base)
22 : 412019.dasm (1.27 % of base)
18 : 137471.dasm (0.89 % of base)
18 : 30843.dasm (0.90 % of base)
18 : 46220.dasm (0.90 % of base)
18 : 166669.dasm (0.90 % of base)
2 : 141743.dasm (0.17 % of base)
Top file improvements (bytes):
-12 : 116079.dasm (-1.32 % of base)
-12 : 24034.dasm (-1.31 % of base)
-8 : 474962.dasm (-0.78 % of base)
20 total files with Code Size differences (3 improved, 17 regressed), 2 unchanged.
Top method regressions (bytes):
890 (40.64 % of base) : 1823.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
416 (16.26 % of base) : 151490.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
416 (16.26 % of base) : 141866.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
416 (14.45 % of base) : 198605.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
416 (14.56 % of base) : 31143.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
416 (16.26 % of base) : 77156.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
414 (15.28 % of base) : 34704.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
414 (15.28 % of base) : 68428.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
414 (15.28 % of base) : 72299.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
238 (13.11 % of base) : 24397.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
22 (1.27 % of base) : 412019.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
22 (1.27 % of base) : 192579.dasm - JitTest_array1_refany_il.Test:Main():int (Tier0-FullOpts)
18 (0.90 % of base) : 166669.dasm - System.Buffers.SharedArrayPool`1[int]:Trim():ubyte:this (Instrumented Tier1)
18 (0.89 % of base) : 137471.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
18 (0.90 % of base) : 46220.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Instrumented Tier1)
18 (0.90 % of base) : 30843.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Instrumented Tier1)
2 (0.17 % of base) : 141743.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
Top method improvements (bytes):
-12 (-1.32 % of base) : 116079.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-1.31 % of base) : 24034.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-8 (-0.78 % of base) : 474962.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
Top method regressions (percentages):
890 (40.64 % of base) : 1823.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
416 (16.26 % of base) : 151490.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
416 (16.26 % of base) : 141866.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
416 (16.26 % of base) : 77156.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
414 (15.28 % of base) : 34704.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
414 (15.28 % of base) : 68428.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
414 (15.28 % of base) : 72299.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
416 (14.56 % of base) : 31143.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
416 (14.45 % of base) : 198605.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
238 (13.11 % of base) : 24397.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
22 (1.27 % of base) : 412019.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
22 (1.27 % of base) : 192579.dasm - JitTest_array1_refany_il.Test:Main():int (Tier0-FullOpts)
18 (0.90 % of base) : 166669.dasm - System.Buffers.SharedArrayPool`1[int]:Trim():ubyte:this (Instrumented Tier1)
18 (0.90 % of base) : 46220.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Instrumented Tier1)
18 (0.90 % of base) : 30843.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Instrumented Tier1)
18 (0.89 % of base) : 137471.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
2 (0.17 % of base) : 141743.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
Top method improvements (percentages):
-12 (-1.32 % of base) : 116079.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-1.31 % of base) : 24034.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-8 (-0.78 % of base) : 474962.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
20 total methods with Code Size differences (3 improved, 17 regressed).
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 35174904 (overridden on cmd)
Total bytes of diff: 35174540 (overridden on cmd)
Total bytes of delta: -364 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
4 : 128462.dasm (0.73 % of base)
Top file improvements (bytes):
-218 : 97896.dasm (-17.75 % of base)
-58 : 153643.dasm (-3.68 % of base)
-52 : 14782.dasm (-12.32 % of base)
-40 : 181237.dasm (-13.99 % of base)
5 total files with Code Size differences (4 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
4 (0.73 % of base) : 128462.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-218 (-17.75 % of base) : 97896.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)
-58 (-3.68 % of base) : 153643.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
-52 (-12.32 % of base) : 14782.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-40 (-13.99 % of base) : 181237.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
Top method regressions (percentages):
4 (0.73 % of base) : 128462.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-218 (-17.75 % of base) : 97896.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)
-40 (-13.99 % of base) : 181237.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-52 (-12.32 % of base) : 14782.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-58 (-3.68 % of base) : 153643.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
5 total methods with Code Size differences (4 improved, 1 regressed).
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 49554486 (overridden on cmd)
Total bytes of diff: 49554216 (overridden on cmd)
Total bytes of delta: -270 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
8 : 169520.dasm (1.69 % of base)
Top file improvements (bytes):
-190 : 100716.dasm (-18.52 % of base)
-36 : 183790.dasm (-11.84 % of base)
-36 : 164165.dasm (-11.84 % of base)
-8 : 12088.dasm (-0.78 % of base)
-8 : 262929.dasm (-0.56 % of base)
6 total files with Code Size differences (5 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
8 (1.69 % of base) : 169520.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-190 (-18.52 % of base) : 100716.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)
-36 (-11.84 % of base) : 183790.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-36 (-11.84 % of base) : 164165.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-8 (-0.78 % of base) : 12088.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-8 (-0.56 % of base) : 262929.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
8 (1.69 % of base) : 169520.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-190 (-18.52 % of base) : 100716.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)
-36 (-11.84 % of base) : 183790.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-36 (-11.84 % of base) : 164165.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-8 (-0.78 % of base) : 12088.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-8 (-0.56 % of base) : 262929.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 x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 240953450 (overridden on cmd)
Total bytes of diff: 241872128 (overridden on cmd)
Total bytes of delta: 918678 (0.38 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
4582 : 475897.dasm (55.71 % of base)
4582 : 576203.dasm (55.71 % of base)
4582 : 707863.dasm (55.71 % of base)
4582 : 95156.dasm (55.71 % of base)
4582 : 572388.dasm (55.71 % of base)
4582 : 699144.dasm (55.71 % of base)
4582 : 702608.dasm (55.71 % of base)
4582 : 311065.dasm (55.71 % of base)
4582 : 388586.dasm (55.71 % of base)
4582 : 426412.dasm (55.71 % of base)
4582 : 534816.dasm (55.71 % of base)
4582 : 571966.dasm (55.71 % of base)
4582 : 724246.dasm (55.71 % of base)
4582 : 725277.dasm (55.71 % of base)
4582 : 307229.dasm (55.71 % of base)
4582 : 326791.dasm (55.71 % of base)
4582 : 412018.dasm (55.71 % of base)
4582 : 424341.dasm (55.71 % of base)
4582 : 721173.dasm (55.71 % of base)
4582 : 722588.dasm (55.71 % of base)
Top file improvements (bytes):
-220 : 694640.dasm (-19.50 % of base)
-190 : 674953.dasm (-16.99 % of base)
-148 : 694669.dasm (-25.61 % of base)
-144 : 675330.dasm (-23.76 % of base)
-138 : 694675.dasm (-27.94 % of base)
-136 : 694685.dasm (-22.01 % of base)
-88 : 694809.dasm (-22.45 % of base)
-80 : 516249.dasm (-14.65 % of base)
-64 : 679849.dasm (-17.58 % of base)
-58 : 518755.dasm (-12.24 % of base)
-38 : 675329.dasm (-11.59 % of base)
-36 : 196826.dasm (-10.00 % of base)
-36 : 497189.dasm (-10.00 % of base)
-16 : 35934.dasm (-1.37 % of base)
-12 : 269937.dasm (-1.32 % of base)
-12 : 271091.dasm (-1.32 % of base)
-12 : 241478.dasm (-1.32 % of base)
-12 : 271233.dasm (-1.28 % of base)
-12 : 271323.dasm (-1.32 % of base)
-12 : 377117.dasm (-1.28 % of base)
51 total files with Code Size differences (26 improved, 25 regressed), 3 unchanged.
Top method regressions (bytes):
4582 (55.71 % of base) : 475897.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 576203.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 707863.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 95156.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 572388.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 699144.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 702608.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 311065.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 388586.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 426412.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 534816.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 571966.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 724246.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 725277.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 307229.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 326791.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 412018.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 424341.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 721173.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 722588.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):
-220 (-19.50 % of base) : 694640.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12575_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-190 (-16.99 % of base) : 674953.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3695_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-148 (-25.61 % of base) : 694669.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12624_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-144 (-23.76 % of base) : 675330.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3992_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-138 (-27.94 % of base) : 694675.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12636_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-136 (-22.01 % of base) : 694685.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12648_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-88 (-22.45 % of base) : 694809.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12797_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-80 (-14.65 % of base) : 516249.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-64 (-17.58 % of base) : 679849.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2748_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-58 (-12.24 % of base) : 518755.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Tier1)
-38 (-11.59 % of base) : 675329.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3991_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-36 (-10.00 % of base) : 196826.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
-36 (-10.00 % of base) : 497189.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
-16 (-1.37 % of base) : 35934.dasm - System.IO.Path:Combine(System.String[]):System.String (Instrumented Tier1)
-12 (-1.32 % of base) : 269937.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-1.32 % of base) : 271091.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-1.32 % of base) : 241478.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-1.28 % of base) : 271233.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-1.32 % of base) : 271323.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-1.28 % of base) : 377117.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
Top method regressions (percentages):
4582 (55.71 % of base) : 475897.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 576203.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 707863.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 95156.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 572388.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 699144.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 702608.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 311065.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 388586.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 426412.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 534816.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 571966.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 724246.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 725277.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 307229.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 326791.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 412018.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 424341.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 721173.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
4582 (55.71 % of base) : 722588.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):
-138 (-27.94 % of base) : 694675.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12636_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-148 (-25.61 % of base) : 694669.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12624_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-144 (-23.76 % of base) : 675330.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3992_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-88 (-22.45 % of base) : 694809.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12797_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-136 (-22.01 % of base) : 694685.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12648_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-220 (-19.50 % of base) : 694640.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12575_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-64 (-17.58 % of base) : 679849.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2748_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-190 (-16.99 % of base) : 674953.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3695_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-80 (-14.65 % of base) : 516249.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-58 (-12.24 % of base) : 518755.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Tier1)
-38 (-11.59 % of base) : 675329.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3991_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-36 (-10.00 % of base) : 196826.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
-36 (-10.00 % of base) : 497189.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
-10 (-2.20 % of base) : 243697.dasm - System.Attribute:GetHashCode():int:this (Instrumented Tier1)
-16 (-1.37 % of base) : 35934.dasm - System.IO.Path:Combine(System.String[]):System.String (Instrumented Tier1)
-12 (-1.32 % of base) : 269937.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-1.32 % of base) : 271091.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-1.32 % of base) : 271323.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-1.32 % of base) : 396194.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-12 (-1.32 % of base) : 401527.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 x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 93043072 (overridden on cmd)
Total bytes of diff: 93042526 (overridden on cmd)
Total bytes of delta: -546 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
122 : 286506.dasm (7.69 % of base)
8 : 116252.dasm (1.69 % of base)
Top file improvements (bytes):
-226 : 274186.dasm (-18.62 % of base)
-138 : 275336.dasm (-21.70 % of base)
-92 : 289297.dasm (-22.66 % of base)
-74 : 281151.dasm (-20.11 % of base)
-62 : 275333.dasm (-17.32 % of base)
-36 : 195976.dasm (-11.84 % of base)
-36 : 61574.dasm (-11.84 % of base)
-12 : 186487.dasm (-0.88 % of base)
10 total files with Code Size differences (8 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
122 (7.69 % of base) : 286506.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
8 (1.69 % of base) : 116252.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-226 (-18.62 % of base) : 274186.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3202_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-138 (-21.70 % of base) : 275336.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3499_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-92 (-22.66 % of base) : 289297.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6034_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-74 (-20.11 % of base) : 281151.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2680_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-62 (-17.32 % of base) : 275333.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3498_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-36 (-11.84 % of base) : 61574.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-36 (-11.84 % of base) : 195976.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-12 (-0.88 % of base) : 186487.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
122 (7.69 % of base) : 286506.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
8 (1.69 % of base) : 116252.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-92 (-22.66 % of base) : 289297.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6034_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-138 (-21.70 % of base) : 275336.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3499_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-74 (-20.11 % of base) : 281151.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2680_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-226 (-18.62 % of base) : 274186.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3202_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-62 (-17.32 % of base) : 275333.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3498_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-36 (-11.84 % of base) : 61574.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-36 (-11.84 % of base) : 195976.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-12 (-0.88 % of base) : 186487.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
10 total methods with Code Size differences (8 improved, 2 regressed).
Diffs are based on 2,299,179 contexts (841,817 MinOpts, 1,457,362 FullOpts).
MISSED contexts: base: 2,090 (0.09%), diff: 2,191 (0.10%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.windows.x86.checked.mch | 308,813,223 | +20,842 |
libraries.crossgen2.windows.x86.checked.mch | 31,665,137 | -284 |
libraries.pmi.windows.x86.checked.mch | 48,912,132 | -107 |
libraries_tests.run.windows.x86.Release.mch | 185,434,987 | +262,163 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 102,172,327 | -1,263 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
coreclr_tests.run.windows.x86.checked.mch | 107,141,454 | +20,842 |
libraries.crossgen2.windows.x86.checked.mch | 31,664,080 | -284 |
libraries.pmi.windows.x86.checked.mch | 48,816,818 | -107 |
libraries_tests.run.windows.x86.Release.mch | 87,103,480 | +262,163 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 93,502,535 | -1,263 |
@@ -12,15 +12,15 @@
; V00 this [V00,T09] ( 4, 4 ) ref -> ebx this class-hnd single-def <System.RuntimeType>
; V01 RetBuf [V01,T03] ( 6, 6 ) byref -> edi single-def
; V02 arg1 [V02,T02] ( 13, 12 ) ref -> esi ld-addr-op class-hnd <System.String>
-; V03 arg2 [V03,T14] ( 4, 4.31) int -> [ebp+0x0C]
-; V04 arg3 [V04,T35] ( 1, 1 ) ubyte -> [ebp+0x08] single-def
-; V05 loc0 [V05,T30] ( 3, 3.15) ubyte -> [ebp-0x10] ld-addr-op
-; V06 loc1 [V06,T34] ( 3, 2.00) ubyte -> [ebp-0x14] ld-addr-op
+; V03 arg2 [V03,T15] ( 4, 4.31) int -> [ebp+0x0C]
+; V04 arg3 [V04,T34] ( 1, 1 ) ubyte -> [ebp+0x08] single-def
+; V05 loc0 [V05,T29] ( 3, 3.15) ubyte -> [ebp-0x10] ld-addr-op
+; V06 loc1 [V06,T33] ( 3, 2.00) ubyte -> [ebp-0x14] ld-addr-op
; V07 loc2 [V07,T06] ( 7, 7 ) int -> [ebp-0x18] ld-addr-op
-; V08 loc3 [V08,T29] ( 3, 3.31) ref -> [ebp-0x38] class-hnd spill-single-def <System.Reflection.RuntimeFieldInfo[]>
+; V08 loc3 [V08,T11] ( 5, 5.62) ref -> ebx class-hnd single-def <System.Reflection.RuntimeFieldInfo[]>
; V09 loc4 [V09 ] ( 9, 9.15) struct (16) [ebp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Reflection.FieldInfo]>
; V10 loc5 [V10,T07] ( 5, 6.23) int -> [ebp-0x2C]
-; V11 loc6 [V11,T28] ( 4, 3.77) ref -> [ebp-0x3C] class-hnd spill-single-def <System.Reflection.RuntimeFieldInfo>
+; V11 loc6 [V11,T28] ( 4, 3.77) ref -> [ebp-0x34] class-hnd spill-single-def <System.Reflection.RuntimeFieldInfo>
;* V12 loc7 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp1 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
@@ -31,12 +31,12 @@
;* V19 tmp7 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V20 tmp8 [V20,T16] ( 4, 4 ) ref -> registers class-hnd "Inline return value spill temp" <System.String>
; V21 tmp9 [V21,T00] ( 9, 16 ) int -> [ebp-0x30] spill-single-def "Inlining Arg"
-; V22 tmp10 [V22,T36] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+; V22 tmp10 [V22,T35] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
;* V23 tmp11 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp14 [V26,T31] ( 2, 2 ) int -> ecx
-; V27 tmp15 [V27,T17] ( 4, 4 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
+; V26 tmp14 [V26,T30] ( 2, 2 ) int -> ecx
+; V27 tmp15 [V27,T17] ( 4, 4 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String>
;* V28 tmp16 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V29 tmp17 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp18 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -44,22 +44,22 @@
;* V32 tmp20 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V33 tmp21 [V33,T20] ( 2, 4 ) byref -> ecx single-def "Inlining Arg"
; V34 tmp22 [V34,T21] ( 2, 4 ) byref -> edx single-def "Inlining Arg"
-; V35 tmp23 [V35,T11] ( 5, 5 ) ref -> ebx class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V36 tmp24 [V36,T12] ( 4, 4 ) ref -> [ebp-0x44] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>
-;* V37 tmp25 [V37,T33] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V35 tmp23 [V35,T12] ( 5, 5 ) ref -> ebx class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V36 tmp24 [V36,T13] ( 4, 4 ) ref -> [ebp-0x3C] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>
+;* V37 tmp25 [V37,T32] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V38 tmp26 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
;* V39 tmp27 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V43 tmp31 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.RuntimeFieldInfo[]>
-; V44 tmp32 [V44,T04] ( 4, 8 ) byref -> [ebp-0x48] spill-single-def "Inlining Arg"
+; V44 tmp32 [V44,T04] ( 4, 8 ) byref -> [ebp-0x40] spill-single-def "Inlining Arg"
;* V45 tmp33 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V46 tmp34 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
-; V47 tmp35 [V47,T01] ( 14, 14 ) ref -> [ebp-0x4C] class-hnd "Inline stloc first use temp" <<unknown class>>
-; V48 tmp36 [V48,T05] ( 4, 8 ) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V47 tmp35 [V47,T01] ( 14, 14 ) ref -> [ebp-0x44] class-hnd "Inline stloc first use temp" <<unknown class>>
+; V48 tmp36 [V48,T05] ( 4, 8 ) ref -> [ebp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V49 tmp37 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V50 tmp38 [V50,T13] ( 5, 5 ) ref -> ebx class-hnd "Inline return value spill temp" <System.Reflection.RuntimeFieldInfo[]>
+; V50 tmp38 [V50,T14] ( 5, 5 ) ref -> ebx class-hnd "Inline return value spill temp" <System.Reflection.RuntimeFieldInfo[]>
; V51 tmp39 [V51,T22] ( 2, 4 ) ref -> eax class-hnd single-def "dup spill" <System.__Canon>
; V52 tmp40 [V52,T18] ( 4, 4 ) ref -> eax
; V53 tmp41 [V53,T23] ( 2, 4 ) ref -> eax class-hnd single-def "dup spill" <System.__Canon>
@@ -73,15 +73,14 @@
; V61 tmp49 [V61 ] ( 3, 3.15) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V09._capacity (fldOffset=0xc)" P-DEP
; V62 tmp50 [V62,T24] ( 2, 4 ) byref -> ecx single-def "argument with side effect"
; V63 tmp51 [V63,T25] ( 2, 4 ) byref -> ecx single-def "argument with side effect"
-; V64 tmp52 [V64,T37] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V65 tmp53 [V65,T38] ( 2, 0 ) ref -> edi single-def "argument with side effect"
+; V64 tmp52 [V64,T36] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V65 tmp53 [V65,T37] ( 2, 0 ) ref -> edi single-def "argument with side effect"
;* V66 tmp54 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V67 cse0 [V67,T27] ( 3, 3.92) int -> ebx "CSE - conservative"
-; V68 cse1 [V68,T32] ( 3, 3 ) int -> ecx "CSE - conservative"
-; V69 cse2 [V69,T08] ( 6, 6 ) int -> ecx "CSE - moderate"
-; V70 cse3 [V70,T15] ( 4, 4.31) int -> [ebp-0x34] spill-single-def "CSE - moderate"
+; V67 cse0 [V67,T27] ( 3, 3.92) int -> eax "CSE - conservative"
+; V68 cse1 [V68,T31] ( 3, 3 ) int -> ecx "CSE - conservative"
+; V69 cse2 [V69,T08] ( 6, 6 ) int -> ecx "CSE - aggressive"
;
-; Lcl frame size = 68
+; Lcl frame size = 60
G_M52950_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -89,7 +88,7 @@ G_M52950_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 68
+ sub esp, 60
xor eax, eax
mov dword ptr [ebp-0x28], eax
mov dword ptr [ebp-0x24], eax
@@ -186,7 +185,7 @@ G_M52950_IG11: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
mov ecx, edx
call <unknown method>
; gcrRegs +[eax]
- mov gword ptr [ebp-0x40], eax
+ mov gword ptr [ebp-0x38], eax
; GC ptr vars +{V27}
cmp byte ptr [eax], al
lea ecx, bword ptr [eax+0x08]
@@ -200,7 +199,7 @@ G_M52950_IG11: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[eax]
; byrRegs -[ecx edx]
- mov esi, gword ptr [ebp-0x40]
+ mov esi, gword ptr [ebp-0x38]
; gcrRegs +[esi]
mov edx, esi
; gcrRegs +[edx]
@@ -228,7 +227,7 @@ G_M52950_IG14: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
je SHORT G_M52950_IG18
call <unknown method>
; gcrRegs +[eax]
- mov gword ptr [ebp-0x44], eax
+ mov gword ptr [ebp-0x3C], eax
; GC ptr vars +{V36}
test eax, eax
je SHORT G_M52950_IG18
@@ -242,7 +241,7 @@ G_M52950_IG14: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcrRegs -[eax ecx edx ebx]
;; size=46 bbWeight=1 PerfScore 15.00
G_M52950_IG15: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- mov eax, gword ptr [ebp-0x44]
+ mov eax, gword ptr [ebp-0x3C]
; gcrRegs +[eax]
mov ebx, eax
; gcrRegs +[ebx]
@@ -270,7 +269,7 @@ G_M52950_IG19: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
cmp byte ptr [ebx], bl
lea eax, bword ptr [ebx+0x24]
; byrRegs +[eax]
- mov bword ptr [ebp-0x48], eax
+ mov bword ptr [ebp-0x40], eax
; GC ptr vars +{V44}
mov edx, gword ptr [eax]
; gcrRegs +[edx]
@@ -280,14 +279,14 @@ G_M52950_IG19: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
call CORINFO_HELP_NEWSFAST
; gcrRegs -[edx] +[eax]
; byrRegs -[eax]
- mov gword ptr [ebp-0x50], eax
+ mov gword ptr [ebp-0x48], eax
; GC ptr vars +{V48}
lea edx, bword ptr [eax+0x08]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EBX
; gcrRegs -[ebx]
; byrRegs -[edx]
- mov ebx, bword ptr [ebp-0x48]
+ mov ebx, bword ptr [ebp-0x40]
; byrRegs +[ebx]
test ebx, ebx
je G_M52950_IG41
@@ -305,7 +304,7 @@ G_M52950_IG19: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
mov ebx, eax
; gcrRegs +[ebx]
test ebx, ebx
- cmove ebx, gword ptr [ebp-0x50]
+ cmove ebx, gword ptr [ebp-0x48]
mov edx, ebx
; gcrRegs +[edx]
;; size=67 bbWeight=1 PerfScore 19.00
@@ -321,7 +320,7 @@ G_M52950_IG20: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=000000
jmp SHORT G_M52950_IG25
;; size=17 bbWeight=1 PerfScore 8.50
G_M52950_IG21: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000080 {edi}, byref, isz
- mov gword ptr [ebp-0x4C], edx
+ mov gword ptr [ebp-0x44], edx
; GC ptr vars +{V47}
lea ecx, bword ptr [edx+0x10]
; byrRegs +[ecx]
@@ -334,7 +333,7 @@ G_M52950_IG21: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000
jne SHORT G_M52950_IG22
push 1
push 2
- mov ecx, gword ptr [ebp-0x4C]
+ mov ecx, gword ptr [ebp-0x44]
; gcrRegs +[ecx]
mov edx, esi
; gcrRegs +[edx]
@@ -349,7 +348,7 @@ G_M52950_IG22: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=0000
;; size=4 bbWeight=1 PerfScore 2.25
G_M52950_IG23: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000080 {edi}, byref, isz
; gcrRegs -[eax ebx] +[edx]
- mov gword ptr [ebp-0x4C], edx
+ mov gword ptr [ebp-0x44], edx
; GC ptr vars +{V47}
lea ecx, bword ptr [edx+0x14]
; byrRegs +[ecx]
@@ -364,7 +363,7 @@ G_M52950_IG23: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000
jne SHORT G_M52950_IG24
push 2
push 2
- mov ecx, gword ptr [ebp-0x4C]
+ mov ecx, gword ptr [ebp-0x44]
; gcrRegs +[ecx]
mov edx, esi
; gcrRegs +[edx]
@@ -382,14 +381,14 @@ G_M52950_IG25: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000
; gcrRegs -[ebx] +[edx]
test ebx, ebx
je SHORT G_M52950_IG26
- mov gword ptr [ebp-0x4C], edx
+ mov gword ptr [ebp-0x44], edx
; GC ptr vars +{V47}
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
call [<unknown method>]
; gcrRegs -[ecx edx]
- mov edx, gword ptr [ebp-0x4C]
+ mov edx, gword ptr [ebp-0x44]
; gcrRegs +[edx]
;; size=26 bbWeight=1 PerfScore 6.75
G_M52950_IG26: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
@@ -414,52 +413,46 @@ G_M52950_IG27: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000
;; size=15 bbWeight=1 PerfScore 5.75
G_M52950_IG28: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, byref
; gcrRegs -[eax]
- mov gword ptr [ebp-0x38], ebx
- ; GC ptr vars +{V08}
mov eax, dword ptr [ebp+0x0C]
xor eax, 2
mov dword ptr [ebp+0x0C], eax
- mov edx, dword ptr [ebx+0x04]
- mov dword ptr [ebp-0x34], edx
- mov ecx, edx
- xor eax, eax
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x28], eax
- ;; size=25 bbWeight=1 PerfScore 7.75
-G_M52950_IG29: ; bbWeight=1, gcVars=0000000020000000 {V08}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, gcvars, byref
- ; gcrRegs -[eax]
- mov gword ptr [ebp-0x24], eax
+ mov ecx, dword ptr [ebx+0x04]
+ xor edx, edx
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x28], edx
+ ;; size=17 bbWeight=1 PerfScore 5.50
+G_M52950_IG29: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, byref
+ ; gcrRegs -[edx]
+ mov gword ptr [ebp-0x24], edx
...
@@ -11,71 +11,70 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <ILCompiler.DevirtualizationManager>
; V01 arg1 [V01,T00] ( 21, 26 ) ref -> esi class-hnd <Internal.TypeSystem.MethodDesc>
; V02 arg2 [V02,T22] ( 12, 6 ) ref -> [ebp+0x0C] class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T29] ( 6, 3.50) byref -> [ebp+0x08] single-def
+; V03 arg3 [V03,T28] ( 6, 3.50) byref -> [ebp+0x08] single-def
; V04 loc0 [V04,T23] ( 11, 5.50) ref -> edi class-hnd <Internal.TypeSystem.MethodDesc>
-; V05 loc1 [V05,T17] ( 4, 9 ) ref -> [ebp-0x28] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
+; V05 loc1 [V05,T18] ( 4, 9 ) ref -> [ebp-0x24] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> [ebp-0x10]
-; V07 loc3 [V07,T20] ( 4, 7 ) ref -> [ebp-0x2C] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> [ebp-0x28] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> [ebp-0x14]
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [ebp-0x30] class-hnd spill-single-def <Internal.TypeSystem.DefType>
-; V10 loc6 [V10,T25] ( 6, 4.50) ref -> [ebp-0x34] class-hnd <Internal.TypeSystem.MethodDesc>
-; V11 loc7 [V11,T18] ( 4, 9 ) ref -> [ebp-0x38] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [ebp-0x2C] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V10 loc6 [V10,T25] ( 6, 4.50) ref -> [ebp-0x30] class-hnd <Internal.TypeSystem.MethodDesc>
+; V11 loc7 [V11,T19] ( 4, 9 ) ref -> [ebp-0x34] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> [ebp-0x18]
-; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [ebp-0x3C] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [ebp-0x38] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [ebp-0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T44] ( 3, 1.50) int -> eax single-def
-; V16 loc12 [V16,T03] ( 10, 20 ) ref -> [ebp-0x40] class-hnd <Internal.TypeSystem.TypeDesc>
+; V15 loc11 [V15,T43] ( 3, 1.50) int -> eax single-def
+; V16 loc12 [V16,T03] ( 10, 20 ) ref -> [ebp-0x3C] 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 tmp0 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
-; V20 tmp1 [V20,T32] ( 3, 2.25) ref -> eax single-def "CASTCLASS eval op1"
-; V21 tmp2 [V21,T45] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V22 tmp3 [V22,T28] ( 5, 3.75) ref -> registers class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V20 tmp1 [V20,T31] ( 3, 2.25) ref -> eax single-def "CASTCLASS eval op1"
+; V21 tmp2 [V21,T44] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
+; V22 tmp3 [V22,T27] ( 5, 3.75) ref -> registers class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
; V23 tmp4 [V23,T24] ( 3, 5 ) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V24 tmp5 [V24,T33] ( 3, 2 ) int -> edx "Inline return value spill temp"
-; V25 tmp6 [V25,T31] ( 3, 2.50) int -> edx single-def "Inline stloc first use temp"
-; V26 tmp7 [V26,T40] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V24 tmp5 [V24,T32] ( 3, 2 ) int -> edx "Inline return value spill temp"
+; V25 tmp6 [V25,T30] ( 3, 2.50) int -> edx single-def "Inline stloc first use temp"
+; V26 tmp7 [V26,T39] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V27 tmp8 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
-; V29 tmp10 [V29,T16] ( 5, 10 ) ref -> [ebp-0x44] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V30 tmp11 [V30,T27] ( 2, 4 ) ref -> edx class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V29 tmp10 [V29,T17] ( 5, 10 ) ref -> [ebp-0x40] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T26] ( 2, 4 ) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
;* V31 tmp12 [V31 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V32 tmp13 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V33 tmp14 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* 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,T41] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [ebp-0x48] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V36 tmp17 [V36,T40] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [ebp-0x44] 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 -> [ebp-0x4C] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V41 tmp22 [V41,T02] ( 3, 24 ) ref -> [ebp-0x48] 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,T34] ( 2, 2 ) ref -> eax single-def "Single return block return value"
-; V45 tmp26 [V45,T09] ( 2, 16 ) ref -> [ebp-0x50] spill-single-def "argument with side effect"
+; V44 tmp25 [V44,T33] ( 2, 2 ) ref -> eax single-def "Single return block return value"
+; V45 tmp26 [V45,T09] ( 2, 16 ) ref -> [ebp-0x4C] spill-single-def "argument with side effect"
; V46 tmp27 [V46,T10] ( 2, 16 ) ref -> edx "argument with side effect"
-; V47 tmp28 [V47,T35] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V48 tmp29 [V48,T36] ( 2, 2 ) ref -> [ebp-0x54] spill-single-def "argument with side effect"
-; V49 tmp30 [V49,T37] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V50 tmp31 [V50,T30] ( 3, 3 ) ref -> eax single-def "argument with side effect"
-; V51 tmp32 [V51,T38] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [ebp-0x58] spill-single-def "argument with side effect"
+; V47 tmp28 [V47,T34] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V48 tmp29 [V48,T35] ( 2, 2 ) ref -> [ebp-0x50] spill-single-def "argument with side effect"
+; V49 tmp30 [V49,T36] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V50 tmp31 [V50,T29] ( 3, 3 ) ref -> eax single-def "argument with side effect"
+; V51 tmp32 [V51,T37] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> edi "argument with side effect"
; V53 tmp34 [V53,T12] ( 2, 16 ) ref -> edx "argument with side effect"
;* V54 tmp35 [V54 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V55 tmp36 [V55 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V56 tmp37 [V56,T39] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V56 tmp37 [V56,T38] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V57 tmp38 [V57,T13] ( 2, 16 ) ref -> edx "argument with side effect"
-; V58 tmp39 [V58,T14] ( 2, 16 ) ref -> [ebp-0x5C] spill-single-def "argument with side effect"
+; V58 tmp39 [V58,T14] ( 2, 16 ) ref -> [ebp-0x54] spill-single-def "argument with side effect"
; V59 tmp40 [V59,T15] ( 2, 16 ) ref -> edx "argument with side effect"
-; V60 tmp41 [V60,T19] ( 2, 8 ) ref -> edx "argument with side effect"
+; V60 tmp41 [V60,T20] ( 2, 8 ) ref -> edx "argument with side effect"
; V61 cse0 [V61,T06] ( 10, 18 ) int -> [ebp-0x20] spill-single-def "CSE - moderate"
-; V62 cse1 [V62,T26] ( 2, 4.50) int -> [ebp-0x24] spill-single-def hoist "CSE - conservative"
-; V63 cse2 [V63,T42] ( 3, 1.50) ref -> eax "CSE - conservative"
-; V64 cse3 [V64,T43] ( 3, 1.50) ref -> ecx "CSE - conservative"
-; TEMP_01 ref -> [ebp-0x60]
+; V62 cse1 [V62,T41] ( 3, 1.50) ref -> eax "CSE - conservative"
+; V63 cse2 [V63,T42] ( 3, 1.50) ref -> ecx "CSE - conservative"
+; TEMP_01 ref -> [ebp-0x58]
;
-; Lcl frame size = 84
+; Lcl frame size = 76
G_M48343_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -83,10 +82,10 @@ G_M48343_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 84
+ sub esp, 76
xor eax, eax
mov dword ptr [ebp-0x1C], eax
- mov dword ptr [ebp-0x60], eax
+ mov dword ptr [ebp-0x58], eax
mov esi, edx
; gcrRegs +[esi]
mov edi, gword ptr [ebp+0x0C]
@@ -125,7 +124,7 @@ G_M48343_IG04: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe
;; size=15 bbWeight=0.50 PerfScore 1.88
G_M48343_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp edx, 21
- jne G_M48343_IG34
+ jne G_M48343_IG33
;; size=9 bbWeight=1 PerfScore 1.25
G_M48343_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
@@ -177,7 +176,7 @@ G_M48343_IG09: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M48343_IG10: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
- mov gword ptr [ebp-0x28], eax
+ mov gword ptr [ebp-0x24], eax
; GC ptr vars +{V05}
xor edx, edx
mov dword ptr [ebp-0x10], edx
@@ -215,110 +214,106 @@ G_M48343_IG13: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=0
; gcrRegs -[eax]
mov eax, edx
; gcrRegs +[eax]
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x28], eax
; GC ptr vars +{V07}
xor edx, edx
; gcrRegs -[edx]
- mov ecx, gword ptr [ebp-0x28]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
cmp dword ptr [ecx+0x04], 0
jle G_M48343_IG18
- mov ecx, dword ptr [eax]
- ; gcrRegs -[ecx]
- mov ecx, dword ptr [ecx+0x34]
- mov dword ptr [ebp-0x24], ecx
- ;; size=28 bbWeight=0.50 PerfScore 5.75
-G_M48343_IG14: ; bbWeight=4, gcVars=0000000000120000 {V05 V07}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov ecx, gword ptr [ebp-0x28]
- ; gcrRegs +[ecx]
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
+G_M48343_IG14: ; bbWeight=4, gcVars=0000000000050000 {V05 V07}, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov dword ptr [ebp-0x14], edx
mov ecx, gword ptr [ecx+4*edx+0x08]
- mov gword ptr [ebp-0x30], ecx
+ mov gword ptr [ebp-0x2C], ecx
; GC ptr vars +{V09}
mov ecx, eax
- mov edi, dword ptr [ebp-0x24]
+ mov edi, dword ptr [eax]
+ mov edi, dword ptr [edi+0x34]
call [edi+0x10]<unknown method>
; gcrRegs -[ecx]
- mov gword ptr [ebp-0x58], eax
- ; GC ptr vars +{V52}
- mov ecx, gword ptr [ebp-0x30]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx]
- mov edx, dword ptr [ecx]
- mov edx, dword ptr [edx+0x34]
- call [edx+0x10]<unknown method>
- ; gcrRegs -[ecx]
+ mov eax, dword ptr [ecx]
+ ; gcrRegs -[eax]
+ mov eax, dword ptr [eax+0x34]
+ call [eax+0x10]<unknown method>
+ ; gcrRegs -[ecx] +[eax]
mov edx, eax
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x58]
+ mov ecx, edi
; gcrRegs +[ecx]
- ; GC ptr vars -{V52}
call [Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[eax ecx edx edi]
test eax, eax
je SHORT G_M48343_IG17
- ;; size=50 bbWeight=4 PerfScore 95.00
+ ;; size=47 bbWeight=4 PerfScore 97.00
G_M48343_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [ebp-0x30]
+ mov edi, gword ptr [ebp-0x2C]
+ ; gcrRegs +[edi]
+ mov eax, gword ptr [edi+0x04]
; gcrRegs +[eax]
- mov edx, gword ptr [eax+0x04]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x44], edx
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V29}
mov ecx, 1
call [<unknown method>]
- ; gcrRegs -[eax edx]
- mov eax, gword ptr [ebp-0x44]
+ ; gcrRegs -[eax]
+ mov eax, gword ptr [ebp-0x40]
; gcrRegs +[eax]
test eax, eax
jne SHORT G_M48343_IG16
- mov ecx, gword ptr [ebp-0x30]
+ mov ecx, edi
; gcrRegs +[ecx]
xor edx, edx
- mov eax, dword ptr [ecx]
+ mov eax, dword ptr [edi]
; gcrRegs -[eax]
mov eax, dword ptr [eax+0x2C]
; GC ptr vars -{V29}
call [eax+0x14]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x44], eax
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V29}
push eax
- mov ecx, gword ptr [ebp-0x30]
+ mov ecx, edi
; gcrRegs +[ecx]
xor edx, edx
; GC ptr vars -{V09}
call [Internal.TypeSystem.TypeDesc:SetCachedCanonValue(int,Internal.TypeSystem.TypeDesc):this]
- ; gcrRegs -[eax ecx]
- mov eax, gword ptr [ebp-0x44]
+ ; gcrRegs -[eax ecx edi]
+ mov eax, gword ptr [ebp-0x40]
; gcrRegs +[eax]
- ;; size=58 bbWeight=2 PerfScore 50.00
-G_M48343_IG16: ; bbWeight=2, gcVars=0000000000120000 {V05 V07}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
...
@@ -11,71 +11,70 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <ILCompiler.DevirtualizationManager>
; V01 arg1 [V01,T00] ( 21, 26 ) ref -> esi class-hnd <Internal.TypeSystem.MethodDesc>
; V02 arg2 [V02,T22] ( 12, 6 ) ref -> [ebp+0x0C] class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T29] ( 6, 3.50) byref -> [ebp+0x08] single-def
+; V03 arg3 [V03,T28] ( 6, 3.50) byref -> [ebp+0x08] single-def
; V04 loc0 [V04,T23] ( 11, 5.50) ref -> edi class-hnd <Internal.TypeSystem.MethodDesc>
-; V05 loc1 [V05,T17] ( 4, 9 ) ref -> [ebp-0x28] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
+; V05 loc1 [V05,T18] ( 4, 9 ) ref -> [ebp-0x24] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> [ebp-0x10]
-; V07 loc3 [V07,T20] ( 4, 7 ) ref -> [ebp-0x2C] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> [ebp-0x28] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> [ebp-0x14]
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [ebp-0x30] class-hnd spill-single-def <Internal.TypeSystem.DefType>
-; V10 loc6 [V10,T24] ( 6, 4.50) ref -> [ebp-0x34] class-hnd <Internal.TypeSystem.MethodDesc>
-; V11 loc7 [V11,T18] ( 4, 9 ) ref -> [ebp-0x38] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [ebp-0x2C] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V10 loc6 [V10,T24] ( 6, 4.50) ref -> [ebp-0x30] class-hnd <Internal.TypeSystem.MethodDesc>
+; V11 loc7 [V11,T19] ( 4, 9 ) ref -> [ebp-0x34] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> [ebp-0x18]
-; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [ebp-0x3C] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [ebp-0x38] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [ebp-0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T43] ( 3, 1.50) int -> eax single-def
-; V16 loc12 [V16,T03] ( 10, 20 ) ref -> [ebp-0x40] class-hnd <Internal.TypeSystem.TypeDesc>
+; V15 loc11 [V15,T42] ( 3, 1.50) int -> eax single-def
+; V16 loc12 [V16,T03] ( 10, 20 ) ref -> [ebp-0x3C] 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 tmp0 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
-; V20 tmp1 [V20,T32] ( 3, 2.25) ref -> eax single-def "CASTCLASS eval op1"
-; V21 tmp2 [V21,T45] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V22 tmp3 [V22,T28] ( 5, 3.75) ref -> registers class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
-; V23 tmp4 [V23,T26] ( 3, 4.01) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V24 tmp5 [V24,T44] ( 3, 1.50) int -> edx "Inline return value spill temp"
-; V25 tmp6 [V25,T31] ( 3, 2.49) int -> edx single-def "Inline stloc first use temp"
-; V26 tmp7 [V26,T39] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V20 tmp1 [V20,T31] ( 3, 2.25) ref -> eax single-def "CASTCLASS eval op1"
+; V21 tmp2 [V21,T44] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
+; V22 tmp3 [V22,T27] ( 5, 3.75) ref -> registers class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V23 tmp4 [V23,T25] ( 3, 4.01) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V24 tmp5 [V24,T43] ( 3, 1.50) int -> edx "Inline return value spill temp"
+; V25 tmp6 [V25,T30] ( 3, 2.49) int -> edx single-def "Inline stloc first use temp"
+; V26 tmp7 [V26,T38] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V27 tmp8 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
-; V29 tmp10 [V29,T16] ( 5, 10 ) ref -> [ebp-0x44] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V30 tmp11 [V30,T27] ( 2, 4 ) ref -> edx class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V29 tmp10 [V29,T17] ( 5, 10 ) ref -> [ebp-0x40] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T26] ( 2, 4 ) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
;* V31 tmp12 [V31 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V32 tmp13 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V33 tmp14 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* 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,T40] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [ebp-0x48] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V36 tmp17 [V36,T39] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V37 tmp18 [V37,T01] ( 3, 24 ) ref -> [ebp-0x44] 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 -> [ebp-0x4C] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V41 tmp22 [V41,T02] ( 3, 24 ) ref -> [ebp-0x48] 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,T33] ( 2, 2 ) ref -> eax single-def "Single return block return value"
-; V45 tmp26 [V45,T09] ( 2, 16 ) ref -> [ebp-0x50] spill-single-def "argument with side effect"
+; V44 tmp25 [V44,T32] ( 2, 2 ) ref -> eax single-def "Single return block return value"
+; V45 tmp26 [V45,T09] ( 2, 16 ) ref -> [ebp-0x4C] spill-single-def "argument with side effect"
; V46 tmp27 [V46,T10] ( 2, 16 ) ref -> edx "argument with side effect"
-; V47 tmp28 [V47,T34] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V48 tmp29 [V48,T35] ( 2, 2 ) ref -> [ebp-0x54] spill-single-def "argument with side effect"
-; V49 tmp30 [V49,T36] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V50 tmp31 [V50,T30] ( 3, 3 ) ref -> eax single-def "argument with side effect"
-; V51 tmp32 [V51,T37] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> [ebp-0x58] spill-single-def "argument with side effect"
+; V47 tmp28 [V47,T33] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V48 tmp29 [V48,T34] ( 2, 2 ) ref -> [ebp-0x50] spill-single-def "argument with side effect"
+; V49 tmp30 [V49,T35] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V50 tmp31 [V50,T29] ( 3, 3 ) ref -> eax single-def "argument with side effect"
+; V51 tmp32 [V51,T36] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V52 tmp33 [V52,T11] ( 2, 16 ) ref -> edi "argument with side effect"
; V53 tmp34 [V53,T12] ( 2, 16 ) ref -> edx "argument with side effect"
;* V54 tmp35 [V54 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V55 tmp36 [V55 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V56 tmp37 [V56,T38] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V56 tmp37 [V56,T37] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V57 tmp38 [V57,T13] ( 2, 16 ) ref -> edx "argument with side effect"
-; V58 tmp39 [V58,T14] ( 2, 16 ) ref -> [ebp-0x5C] spill-single-def "argument with side effect"
+; V58 tmp39 [V58,T14] ( 2, 16 ) ref -> [ebp-0x54] spill-single-def "argument with side effect"
; V59 tmp40 [V59,T15] ( 2, 16 ) ref -> edx "argument with side effect"
-; V60 tmp41 [V60,T19] ( 2, 8 ) ref -> edx "argument with side effect"
+; V60 tmp41 [V60,T20] ( 2, 8 ) ref -> edx "argument with side effect"
; V61 cse0 [V61,T06] ( 10, 18 ) int -> [ebp-0x20] spill-single-def "CSE - moderate"
-; V62 cse1 [V62,T25] ( 2, 4.50) int -> [ebp-0x24] spill-single-def hoist "CSE - conservative"
-; V63 cse2 [V63,T41] ( 3, 1.50) ref -> eax "CSE - conservative"
-; V64 cse3 [V64,T42] ( 3, 1.50) ref -> ecx "CSE - conservative"
-; TEMP_01 ref -> [ebp-0x60]
+; V62 cse1 [V62,T40] ( 3, 1.50) ref -> eax "CSE - conservative"
+; V63 cse2 [V63,T41] ( 3, 1.50) ref -> ecx "CSE - conservative"
+; TEMP_01 ref -> [ebp-0x58]
;
-; Lcl frame size = 84
+; Lcl frame size = 76
G_M48343_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -83,10 +82,10 @@ G_M48343_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 84
+ sub esp, 76
xor eax, eax
mov dword ptr [ebp-0x1C], eax
- mov dword ptr [ebp-0x60], eax
+ mov dword ptr [ebp-0x58], eax
mov esi, edx
; gcrRegs +[esi]
mov edi, gword ptr [ebp+0x0C]
@@ -120,7 +119,7 @@ G_M48343_IG03: ; bbWeight=0.01, gcrefRegs=000000C1 {eax esi edi}, byrefRe
;; size=15 bbWeight=0.01 PerfScore 0.02
G_M48343_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp edx, 21
- jne G_M48343_IG34
+ jne G_M48343_IG33
;; size=9 bbWeight=1 PerfScore 1.25
G_M48343_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
@@ -175,7 +174,7 @@ G_M48343_IG09: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M48343_IG10: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
- mov gword ptr [ebp-0x28], eax
+ mov gword ptr [ebp-0x24], eax
; GC ptr vars +{V05}
xor edx, edx
mov dword ptr [ebp-0x10], edx
@@ -213,110 +212,106 @@ G_M48343_IG13: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=0
; gcrRegs -[eax]
mov eax, edx
; gcrRegs +[eax]
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x28], eax
; GC ptr vars +{V07}
xor edx, edx
; gcrRegs -[edx]
- mov ecx, gword ptr [ebp-0x28]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
cmp dword ptr [ecx+0x04], 0
jle G_M48343_IG18
- mov ecx, dword ptr [eax]
- ; gcrRegs -[ecx]
- mov ecx, dword ptr [ecx+0x34]
- mov dword ptr [ebp-0x24], ecx
- ;; size=28 bbWeight=0.50 PerfScore 5.75
-G_M48343_IG14: ; bbWeight=4, gcVars=0000000000120000 {V05 V07}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov ecx, gword ptr [ebp-0x28]
- ; gcrRegs +[ecx]
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
+G_M48343_IG14: ; bbWeight=4, gcVars=0000000000050000 {V05 V07}, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov dword ptr [ebp-0x14], edx
mov ecx, gword ptr [ecx+4*edx+0x08]
- mov gword ptr [ebp-0x30], ecx
+ mov gword ptr [ebp-0x2C], ecx
; GC ptr vars +{V09}
mov ecx, eax
- mov edi, dword ptr [ebp-0x24]
+ mov edi, dword ptr [eax]
+ mov edi, dword ptr [edi+0x34]
call [edi+0x10]<unknown method>
; gcrRegs -[ecx]
- mov gword ptr [ebp-0x58], eax
- ; GC ptr vars +{V52}
- mov ecx, gword ptr [ebp-0x30]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx]
- mov edx, dword ptr [ecx]
- mov edx, dword ptr [edx+0x34]
- call [edx+0x10]<unknown method>
- ; gcrRegs -[ecx]
+ mov eax, dword ptr [ecx]
+ ; gcrRegs -[eax]
+ mov eax, dword ptr [eax+0x34]
+ call [eax+0x10]<unknown method>
+ ; gcrRegs -[ecx] +[eax]
mov edx, eax
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x58]
+ mov ecx, edi
; gcrRegs +[ecx]
- ; GC ptr vars -{V52}
call [Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[eax ecx edx edi]
test eax, eax
je SHORT G_M48343_IG17
- ;; size=50 bbWeight=4 PerfScore 95.00
+ ;; size=47 bbWeight=4 PerfScore 97.00
G_M48343_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [ebp-0x30]
+ mov edi, gword ptr [ebp-0x2C]
+ ; gcrRegs +[edi]
+ mov eax, gword ptr [edi+0x04]
; gcrRegs +[eax]
- mov edx, gword ptr [eax+0x04]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x44], edx
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V29}
mov ecx, 1
call [<unknown method>]
- ; gcrRegs -[eax edx]
- mov eax, gword ptr [ebp-0x44]
+ ; gcrRegs -[eax]
+ mov eax, gword ptr [ebp-0x40]
; gcrRegs +[eax]
test eax, eax
jne SHORT G_M48343_IG16
- mov ecx, gword ptr [ebp-0x30]
+ mov ecx, edi
; gcrRegs +[ecx]
xor edx, edx
- mov eax, dword ptr [ecx]
+ mov eax, dword ptr [edi]
; gcrRegs -[eax]
mov eax, dword ptr [eax+0x2C]
; GC ptr vars -{V29}
call [eax+0x14]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x44], eax
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V29}
push eax
- mov ecx, gword ptr [ebp-0x30]
+ mov ecx, edi
; gcrRegs +[ecx]
xor edx, edx
; GC ptr vars -{V09}
call [Internal.TypeSystem.TypeDesc:SetCachedCanonValue(int,Internal.TypeSystem.TypeDesc):this]
- ; gcrRegs -[eax ecx]
- mov eax, gword ptr [ebp-0x44]
+ ; gcrRegs -[eax ecx edi]
+ mov eax, gword ptr [ebp-0x40]
; gcrRegs +[eax]
- ;; size=58 bbWeight=2 PerfScore 50.00
...
@@ -10,49 +10,49 @@
;
; V00 this [V00,T24] ( 9, 22.50) ref -> [ebp-0x64] this class-hnd single-def <System.Buffers.SharedArrayPool`1[int]>
; V01 loc0 [V01,T15] ( 5, 33.50) int -> edi
-; V02 loc1 [V02,T30] ( 5, 19 ) int -> ebx
+; V02 loc1 [V02,T29] ( 5, 19 ) int -> ebx
; V03 loc2 [V03,T23] ( 7, 27 ) ref -> [ebp-0x68] class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T38] ( 4, 10 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def <<unknown class>>
-; V05 loc4 [V05,T29] ( 6, 19 ) int -> [ebp-0x24]
-; V06 loc5 [V06,T39] ( 9, 9.50) ref -> [ebp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T37] ( 4, 10 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def <<unknown class>>
+; V05 loc4 [V05,T28] ( 6, 19 ) int -> [ebp-0x24]
+; V06 loc5 [V06,T38] ( 9, 9.50) ref -> [ebp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
; V07 loc6 [V07 ] ( 2, 8 ) struct ( 8) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
-; V08 loc7 [V08,T40] ( 9, 9.50) ref -> [ebp-0x74] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T39] ( 9, 9.50) ref -> [ebp-0x74] class-hnd EH-live spill-single-def <<unknown class>>
; V09 loc8 [V09 ] ( 2, 8 ) struct ( 8) [ebp-0x34] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
; V10 loc9 [V10,T12] ( 4, 40 ) ref -> [ebp-0x78] class-hnd exact spill-single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T04] ( 5, 68 ) int -> [ebp-0x38]
; V12 loc11 [V12,T02] ( 6, 64 ) ref -> ebx class-hnd <<unknown class>>
-; V13 loc12 [V13,T43] ( 2, 8.50) int -> [ebp-0x3C] spill-single-def
-; V14 loc13 [V14,T47] ( 3, 1.50) int -> ebx
-; V15 loc14 [V15,T36] ( 9, 13.50) ref -> [ebp-0x7C] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T42] ( 2, 8.50) int -> [ebp-0x3C] spill-single-def
+; V14 loc13 [V14,T46] ( 3, 1.50) int -> ebx
+; V15 loc14 [V15,T35] ( 9, 13.50) ref -> [ebp-0x7C] class-hnd EH-live spill-single-def <<unknown class>>
; V16 loc15 [V16 ] ( 2, 8 ) struct ( 8) [ebp-0x44] 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, 40 ) ref -> [ebp-0x80] class-hnd exact spill-single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V18 loc17 [V18,T00] ( 7,228 ) int -> [ebp-0x48]
-; V19 loc18 [V19,T26] ( 3, 24 ) int -> esi
-; V20 loc19 [V20,T08] ( 6, 48 ) ref -> ebx class-hnd <<unknown class>>
-; V21 tmp0 [V21,T27] ( 3, 20 ) ref -> [ebp-0x84] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V17 loc16 [V17,T09] ( 6, 48 ) ref -> [ebp-0x80] class-hnd exact spill-single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V18 loc17 [V18,T00] ( 8,236 ) int -> [ebp-0x48]
+; V19 loc18 [V19,T25] ( 3, 24 ) int -> ebx
+; V20 loc19 [V20,T08] ( 6, 48 ) ref -> esi class-hnd <<unknown class>>
+; V21 tmp0 [V21,T26] ( 3, 20 ) ref -> [ebp-0x84] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V22 tmp1 [V22 ] ( 0, 0 ) ref -> zero-ref
; V23 tmp2 [V23,T14] ( 2, 36 ) int -> [ebp-0x4C] spill-single-def "impAppendStmt"
; V24 tmp3 [V24,T17] ( 2, 32 ) int -> [ebp-0x50] spill-single-def "impAppendStmt"
-; V25 tmp4 [V25,T18] ( 2, 32 ) int -> ebx "impAppendStmt"
+; V25 tmp4 [V25,T18] ( 2, 32 ) int -> esi "impAppendStmt"
; V26 tmp5 [V26,T19] ( 2, 32 ) int -> [ebp-0x54] spill-single-def "impAppendStmt"
; V27 tmp6 [V27,T20] ( 2, 32 ) int -> ebx "impAppendStmt"
-; V28 tmp7 [V28,T44] ( 3, 3 ) ref -> esi single-def "handle histogram profile tmp"
+; V28 tmp7 [V28,T43] ( 3, 3 ) ref -> esi single-def "handle histogram profile tmp"
;* V29 tmp8 [V29 ] ( 0, 0 ) ref -> zero-ref "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,T45] ( 3, 3 ) ref -> ebx single-def "handle histogram profile tmp"
+; V32 tmp11 [V32,T44] ( 3, 3 ) ref -> ebx single-def "handle histogram profile tmp"
;* V33 tmp12 [V33 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
; V34 tmp13 [V34,T01] ( 3, 96 ) ref -> ebx "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,T46] ( 3, 3 ) ref -> [ebp-0x88] spill-single-def "handle histogram profile tmp"
+; V38 tmp17 [V38,T45] ( 3, 3 ) ref -> [ebp-0x88] spill-single-def "handle histogram profile tmp"
;* V39 tmp18 [V39 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V40 tmp19 [V40,T09] ( 3, 48 ) ref -> ebx "handle histogram profile tmp"
+; V40 tmp19 [V40,T10] ( 3, 48 ) ref -> esi "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,T28] ( 3, 20 ) int -> [ebp-0x58] spill-single-def "Inline stloc first use temp"
+; V44 tmp23 [V44,T27] ( 3, 20 ) int -> [ebp-0x58] spill-single-def "Inline stloc first use temp"
;* V45 tmp24 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp25 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V47 tmp26 [V47,T13] ( 4, 36 ) ref -> [ebp-0x8C] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
@@ -66,23 +66,22 @@
; V55 tmp34 [V55 ] ( 2, 8 ) ref -> [ebp-0x44] do-not-enreg[X] addr-exposed "field V16.key (fldOffset=0x0)" P-DEP
; V56 tmp35 [V56 ] ( 1, 4 ) ref -> [ebp-0x40] do-not-enreg[X] addr-exposed "field V16.value (fldOffset=0x4)" P-DEP
; V57 tmp36 [V57,T06] ( 2, 64 ) ref -> eax "argument with side effect"
-; V58 tmp37 [V58,T31] ( 2, 16 ) ref -> ecx "argument with side effect"
+; V58 tmp37 [V58,T30] ( 2, 16 ) ref -> ecx "argument with side effect"
; V59 tmp38 [V59,T16] ( 2, 32 ) ref -> edx "argument with side effect"
-;* V60 tmp39 [V60,T34] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V61 tmp40 [V61,T32] ( 2, 16 ) ref -> ecx "argument with side effect"
+;* V60 tmp39 [V60,T33] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V61 tmp40 [V61,T31] ( 2, 16 ) ref -> ecx "argument with side effect"
; V62 tmp41 [V62,T07] ( 2, 64 ) ref -> edx "argument with side effect"
-;* V63 tmp42 [V63,T35] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V64 tmp43 [V64,T33] ( 2, 16 ) ref -> ecx "argument with side effect"
+;* V63 tmp42 [V63,T34] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V64 tmp43 [V64,T32] ( 2, 16 ) ref -> ecx "argument with side effect"
; V65 EHSlots [V65 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
-; V66 cse0 [V66,T48] ( 4, 1 ) ref -> esi multi-def "CSE - conservative"
-; V67 cse1 [V67,T41] ( 7, 9.50) ref -> esi multi-def "CSE - conservative"
-; V68 cse2 [V68,T49] ( 4, 1 ) ref -> registers multi-def "CSE - conservative"
-; V69 cse3 [V69,T42] ( 7, 9.50) ref -> [ebp-0x90] multi-def "CSE - conservative"
-; V70 cse4 [V70,T50] ( 4, 1 ) ref -> registers multi-def "CSE - conservative"
-; V71 cse5 [V71,T37] ( 7, 13.50) ref -> [ebp-0x94] multi-def "CSE - conservative"
-; V72 cse6 [V72,T25] ( 3, 24 ) byref -> ebx "CSE - conservative"
-; V73 cse7 [V73,T03] ( 3, 72 ) int -> [ebp-0x60] spill-single-def "CSE - aggressive"
-; V74 rat0 [V74,T10] ( 3, 48 ) int -> ebx "ReplaceWithLclVar is creating a new local variable"
+; V66 cse0 [V66,T47] ( 4, 1 ) ref -> esi multi-def "CSE - conservative"
+; V67 cse1 [V67,T40] ( 7, 9.50) ref -> esi multi-def "CSE - conservative"
+; V68 cse2 [V68,T48] ( 4, 1 ) ref -> registers multi-def "CSE - conservative"
+; V69 cse3 [V69,T41] ( 7, 9.50) ref -> [ebp-0x90] multi-def "CSE - conservative"
+; V70 cse4 [V70,T49] ( 4, 1 ) ref -> registers multi-def "CSE - conservative"
+; V71 cse5 [V71,T36] ( 7, 13.50) ref -> [ebp-0x94] multi-def "CSE - conservative"
+; V72 cse6 [V72,T03] ( 3, 72 ) int -> [ebp-0x60] spill-single-def "CSE - aggressive"
+; V73 rat0 [V73,T11] ( 3, 48 ) int -> esi "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 136
@@ -133,7 +132,7 @@ G_M34916_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
cmp dword ptr [edx+0x04], 0
jle G_M34916_IG10
;; size=18 bbWeight=1 PerfScore 7.25
-G_M34916_IG05: ; bbWeight=4, gcVars=0000004000800000 {V03 V04}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34916_IG05: ; bbWeight=4, gcVars=0000002000800000 {V03 V04}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov dword ptr [ebp-0x24], ecx
mov edx, gword ptr [edx+4*ecx+0x08]
mov gword ptr [ebp-0x84], edx
@@ -141,7 +140,7 @@ G_M34916_IG05: ; bbWeight=4, gcVars=0000004000800000 {V03 V04}, gcrefRegs
test edx, edx
je SHORT G_M34916_IG09
;; size=17 bbWeight=4 PerfScore 21.00
-G_M34916_IG06: ; bbWeight=2, gcVars=0000004008800000 {V03 V04 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34916_IG06: ; bbWeight=2, gcVars=0000002004800000 {V03 V04 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx]
mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -173,7 +172,7 @@ G_M34916_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
cmp dword ptr [ecx+0x04], 0
jle SHORT G_M34916_IG09
;; size=23 bbWeight=2 PerfScore 16.50
-G_M34916_IG08: ; bbWeight=16, gcVars=0000004000802000 {V03 V04 V47}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34916_IG08: ; bbWeight=16, gcVars=0000002000802000 {V03 V04 V47}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V21}
mov dword ptr [ebp-0x5C], edx
mov eax, gword ptr [ecx+4*edx+0x08]
@@ -193,7 +192,7 @@ G_M34916_IG08: ; bbWeight=16, gcVars=0000004000802000 {V03 V04 V47}, gcre
cmp dword ptr [ecx+0x04], edx
jg SHORT G_M34916_IG08
;; size=41 bbWeight=16 PerfScore 300.00
-G_M34916_IG09: ; bbWeight=4, gcVars=0000004000800000 {V03 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M34916_IG09: ; bbWeight=4, gcVars=0000002000800000 {V03 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
; GC ptr vars -{V47}
mov ecx, 0xD1FFAB1E
@@ -230,7 +229,7 @@ G_M34916_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
mov gword ptr [ebp-0x70], eax
; GC ptr vars +{V06}
;; size=39 bbWeight=0.50 PerfScore 6.38
-G_M34916_IG12: ; bbWeight=0.50, gcVars=0000008000000000 {V06}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34916_IG12: ; bbWeight=0.50, gcVars=0000004000000000 {V06}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, eax
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -292,8 +291,8 @@ G_M34916_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
call CORINFO_HELP_COUNTPROFILE32
jmp G_M34916_IG49
;; size=46 bbWeight=0.50 PerfScore 5.00
-G_M34916_IG15: ; bbWeight=0, gcVars=0000008000000000 {V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V06}
+G_M34916_IG15: ; bbWeight=0, gcVars=0000004000000000 {V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V06 V38}
cmp gword ptr [ebp-0x70], 0
je SHORT G_M34916_IG16
mov ecx, 0xD1FFAB1E
@@ -308,7 +307,7 @@ G_M34916_IG15: ; bbWeight=0, gcVars=0000008000000000 {V06}, gcrefRegs=000
mov esi, ecx
; gcrRegs +[esi]
mov ecx, esi
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V06 V38}
call [<unknown method>]
; gcrRegs -[ecx esi]
;; size=42 bbWeight=0 PerfScore 0.00
@@ -335,7 +334,7 @@ G_M34916_IG17: ; bbWeight=0.50, gcVars=0000000000800000 {V03}, gcrefRegs=
mov gword ptr [ebp-0x74], eax
; GC ptr vars +{V08}
;; size=26 bbWeight=0.50 PerfScore 3.88
-G_M34916_IG18: ; bbWeight=0.50, gcVars=0000010000800000 {V03 V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34916_IG18: ; bbWeight=0.50, gcVars=0000008000800000 {V03 V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V23}
mov ecx, eax
; gcrRegs +[ecx]
@@ -353,20 +352,20 @@ G_M34916_IG18: ; bbWeight=0.50, gcVars=0000010000800000 {V03 V08}, gcrefR
je SHORT G_M34916_IG19
jmp SHORT G_M34916_IG21
;; size=31 bbWeight=0.50 PerfScore 4.62
-G_M34916_IG19: ; bbWeight=0.25, gcVars=0000010000000000 {V08}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M34916_IG19: ; bbWeight=0.25, gcVars=0000008000000000 {V08}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi edi]
; GC ptr vars -{V03}
mov gword ptr [ebp-0x90], ebx
; GC ptr vars +{V69}
jmp G_M34916_IG26
;; size=11 bbWeight=0.25 PerfScore 0.75
-G_M34916_IG20: ; bbWeight=2, gcVars=0000050000800000 {V03 V08 V69}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M34916_IG20: ; bbWeight=2, gcVars=0000028000800000 {V03 V08 V69}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx] +[esi edi]
; GC ptr vars +{V03 V23}
mov ebx, gword ptr [ebp-0x90]
; gcrRegs +[ebx]
;; size=6 bbWeight=2 PerfScore 2.00
-G_M34916_IG21: ; bbWeight=4, gcVars=0000010000800000 {V03 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M34916_IG21: ; bbWeight=4, gcVars=0000008000800000 {V03 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V23 V69}
mov ecx, gword ptr [ebp-0x74]
; gcrRegs +[ecx]
@@ -388,7 +387,7 @@ G_M34916_IG21: ; bbWeight=4, gcVars=0000010000800000 {V03 V08}, gcrefRegs
cmp dword ptr [eax+0x04], 0
jle G_M34916_IG25
;; size=48 bbWeight=4 PerfScore 53.00
-G_M34916_IG22: ; bbWeight=16, gcVars=0000050000801000 {V03 V08 V10 V69}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M34916_IG22: ; bbWeight=16, gcVars=0000028000801000 {V03 V08 V10 V69}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov dword ptr [ebp-0x38], edx
lea ecx, bword ptr [eax+8*edx+0x08]
; byrRegs +[ecx]
@@ -455,7 +454,7 @@ G_M34916_IG24: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=000
mov edx, ebx
jg G_M34916_IG22
;; size=30 bbWeight=16 PerfScore 128.00
-G_M34916_IG25: ; bbWeight=4, gcVars=0000050000800000 {V03 V08 V69}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M34916_IG25: ; bbWeight=4, gcVars=0000028000800000 {V03 V08 V69}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ecx]
; GC ptr vars -{V10}
mov ecx, 0xD1FFAB1E
@@ -472,7 +471,7 @@ G_M34916_IG25: ; bbWeight=4, gcVars=0000050000800000 {V03 V08 V69}, gcref
test eax, eax
jne G_M34916_IG20
;; size=43 bbWeight=4 PerfScore 35.00
-G_M34916_IG26: ; bbWeight=0.50, gcVars=0000050000000000 {V08 V69}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M34916_IG26: ; bbWeight=0.50, gcVars=0000028000000000 {V08 V69}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi edi]
; GC ptr vars -{V03}
mov ecx, 0xD1FFAB1E
@@ -496,8 +495,8 @@ G_M34916_IG27: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
call CORINFO_HELP_COUNTPROFILE32
jmp G_M34916_IG49
;; size=50 bbWeight=0.50 PerfScore 5.38
-G_M34916_IG28: ; bbWeight=0, gcVars=0000010000000000 {V08}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V08 V40}
+G_M34916_IG28: ; bbWeight=0, gcVars=0000008000000000 {V08}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V08}
cmp gword ptr [ebp-0x74], 0
je SHORT G_M34916_IG29
mov ecx, 0xD1FFAB1E
@@ -512,7 +511,7 @@ G_M34916_IG28: ; bbWeight=0, gcVars=0000010000000000 {V08}, gcrefRegs=000
mov ebx, ecx
; gcrRegs +[ebx]
mov ecx, ebx
- ; GC ptr vars -{V08 V40}
+ ; GC ptr vars -{V08}
call [<unknown method>]
; gcrRegs -[ecx ebx]
...
@@ -9,14 +9,14 @@
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 4, 10 ) ref -> [ebp-0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Array>
-; V01 loc1 [V01,T09] ( 6, 21 ) int -> edi
+; V01 loc1 [V01,T06] ( 6, 21 ) int -> edi
; V02 loc2 [V02 ] ( 8, 4 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
; V03 loc3 [V03 ] ( 38, 13 ) ref -> [ebp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <ulong[,]>
;* V04 loc4 [V04,T80] ( 0, 0 ) int -> zero-ref
;* V05 loc5 [V05,T71] ( 0, 0 ) int -> zero-ref
-; V06 loc6 [V06 ] ( 4, 33 ) ref -> [ebp-0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
-; V07 loc7 [V07,T04] ( 7, 84.50) int -> ecx
-; V08 loc8 [V08,T00] ( 7,100 ) int -> eax
+; V06 loc6 [V06 ] ( 6, 9 ) ref -> [ebp-0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
+;* V07 loc7 [V07,T81] ( 0, 0 ) int -> zero-ref
+; V08 loc8 [V08,T02] ( 14, 26.50) int -> ecx
; V09 loc9 [V09,T51] ( 5, 2.50) ref -> eax class-hnd exact single-def <<unknown class>>
; V10 loc10 [V10,T17] ( 14, 7 ) ref -> eax class-hnd single-def <ulong[,]>
; V11 loc11 [V11,T52] ( 4, 2 ) ref -> edi class-hnd exact single-def <<unknown class>>
@@ -42,27 +42,27 @@
; V31 tmp18 [V31,T27] ( 2, 4 ) struct ( 4) [ebp-0x44] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V32 tmp19 [V32 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V33 tmp20 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V34 tmp21 [V34,T05] ( 5, 40 ) ref -> ebx class-hnd "Inlining Arg" <System.Array>
+; V34 tmp21 [V34,T00] ( 5, 40 ) ref -> ebx class-hnd "Inlining Arg" <System.Array>
; V35 tmp22 [V35,T19] ( 2, 4 ) int -> ecx "Inline return value spill temp"
;* V36 tmp23 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V37 tmp24 [V37,T15] ( 3, 10.00) int -> ecx "Inline stloc first use temp"
-; V38 tmp25 [V38,T07] ( 3, 24 ) byref -> [ebp-0x60] spill-single-def "Inlining Arg"
+; V38 tmp25 [V38,T04] ( 3, 24 ) byref -> [ebp-0x58] spill-single-def "Inlining Arg"
;* V39 tmp26 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp27 [V40,T06] ( 5, 40 ) ref -> ebx class-hnd "Inlining Arg" <System.Array>
+; V40 tmp27 [V40,T01] ( 5, 40 ) ref -> ebx class-hnd "Inlining Arg" <System.Array>
; V41 tmp28 [V41,T20] ( 2, 4 ) int -> ecx "Inline return value spill temp"
;* V42 tmp29 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V43 tmp30 [V43,T16] ( 3, 10.00) int -> ecx "Inline stloc first use temp"
-; V44 tmp31 [V44,T08] ( 3, 24 ) byref -> [ebp-0x64] spill-single-def "Inlining Arg"
+; V44 tmp31 [V44,T05] ( 3, 24 ) byref -> [ebp-0x5C] spill-single-def "Inlining Arg"
;* V45 tmp32 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V46 tmp33 [V46,T18] ( 5, 6 ) int -> eax "Single return block return value"
-; V47 FramesRoot [V47,T24] ( 5, 5 ) int -> [ebp-0x48] spill-single-def "Pinvoke FrameListRoot"
-; V48 PInvokeFrame [V48 ] ( 8, 8 ) struct (32) [ebp-0x84] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V49 tmp36 [V49,T81] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V50 tmp37 [V50,T11] ( 2, 16 ) int -> edx "argument with side effect"
-; V51 tmp38 [V51,T12] ( 2, 16 ) int -> edx "argument with side effect"
-; V52 tmp39 [V52,T01] ( 3, 96 ) ref -> edi "arr expr"
-; V53 tmp40 [V53,T13] ( 21, 15 ) int -> edx "MD array shared temp"
-; V54 tmp41 [V54,T14] ( 21, 15 ) int -> registers "MD array shared temp"
+; V47 FramesRoot [V47,T24] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
+; V48 PInvokeFrame [V48 ] ( 8, 8 ) struct (32) [ebp-0x7C] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V49 tmp36 [V49,T82] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V50 tmp37 [V50,T07] ( 2, 16 ) int -> edx "argument with side effect"
+; V51 tmp38 [V51,T08] ( 2, 16 ) int -> edx "argument with side effect"
+; V52 tmp39 [V52,T03] ( 6, 24 ) ref -> eax "arr expr"
+; V53 tmp40 [V53,T09] ( 21, 15 ) int -> edx "MD array shared temp"
+; V54 tmp41 [V54,T10] ( 21, 15 ) int -> registers "MD array shared temp"
;* V55 tmp42 [V55,T73] ( 0, 0 ) int -> zero-ref "MD array shared temp"
; V56 tmp43 [V56,T48] ( 3, 3 ) int -> edx "MD array shared temp"
;* V57 tmp44 [V57,T74] ( 0, 0 ) int -> zero-ref "MD array shared temp"
@@ -73,47 +73,48 @@
;* V62 tmp49 [V62,T77] ( 0, 0 ) int -> zero-ref "MD array shared temp"
;* V63 tmp50 [V63,T78] ( 0, 0 ) int -> zero-ref "MD array shared temp"
;* V64 tmp51 [V64,T79] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-; V65 cse0 [V65,T53] ( 4, 2 ) int -> [ebp-0x4C] spill-single-def "CSE - conservative"
+; V65 cse0 [V65,T53] ( 4, 2 ) int -> [ebp-0x48] spill-single-def "CSE - conservative"
; V66 cse1 [V66,T54] ( 4, 2 ) int -> edx "CSE - conservative"
-; V67 cse2 [V67,T65] ( 3, 1.50) int -> [ebp-0x50] spill-single-def "CSE - conservative"
-; V68 cse3 [V68,T66] ( 3, 1.50) int -> [ebp-0x54] spill-single-def "CSE - conservative"
-; V69 cse4 [V69,T67] ( 3, 1.50) int -> [ebp-0x58] spill-single-def "CSE - conservative"
-; V70 cse5 [V70,T10] ( 2, 20 ) int -> [ebp-0x5C] spill-single-def hoist "CSE - moderate"
-; V71 cse6 [V71,T55] ( 2, 1 ) int -> edx "CSE - conservative"
-; V72 cse7 [V72,T56] ( 2, 1 ) int -> edx "CSE - conservative"
-; V73 cse8 [V73,T68] ( 2, 1 ) int -> edx "CSE - conservative"
-; V74 cse9 [V74,T69] ( 2, 1 ) int -> edx "CSE - conservative"
-; V75 cse10 [V75,T70] ( 2, 1 ) int -> edi "CSE - conservative"
-; V76 cse11 [V76,T23] ( 10, 5 ) int -> ecx "CSE - conservative"
-; V77 cse12 [V77,T57] ( 4, 2 ) int -> ebx "CSE - conservative"
-; V78 rat0 [V78,T28] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V79 rat1 [V79,T29] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V80 rat2 [V80,T30] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V81 rat3 [V81,T31] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V82 rat4 [V82,T32] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V83 rat5 [V83,T33] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V84 rat6 [V84,T34] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
-; V85 rat7 [V85,T35] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
-; V86 rat8 [V86,T36] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V87 rat9 [V87,T37] ( 3, 3 ) byref -> ebx "ReplaceWithLclVar is creating a new local variable"
-; V88 rat10 [V88,T38] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
-; V89 rat11 [V89,T39] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V90 rat12 [V90,T40] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V91 rat13 [V91,T61] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V92 rat14 [V92,T62] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V93 rat15 [V93,T41] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V94 rat16 [V94,T63] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V95 rat17 [V95,T64] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V96 rat18 [V96,T42] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V97 rat19 [V97,T43] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V98 rat20 [V98,T44] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V99 rat21 [V99,T45] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V100 rat22 [V100,T46] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V101 rat23 [V101,T47] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V102 rat24 [V102,T02] ( 3, 96 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
-; V103 rat25 [V103,T03] ( 3, 96 ) int -> esi "ReplaceWithLclVar is creating a new local variable"
+; V67 cse2 [V67,T65] ( 3, 1.50) int -> [ebp-0x4C] spill-single-def "CSE - conservative"
+; V68 cse3 [V68,T66] ( 3, 1.50) int -> [ebp-0x50] spill-single-def "CSE - conservative"
+; V69 cse4 [V69,T67] ( 3, 1.50) int -> [ebp-0x54] spill-single-def "CSE - conservative"
+; V70 cse5 [V70,T55] ( 2, 1 ) int -> edx "CSE - conservative"
+; V71 cse6 [V71,T56] ( 2, 1 ) int -> edx "CSE - conservative"
+; V72 cse7 [V72,T68] ( 2, 1 ) int -> edx "CSE - conservative"
+; V73 cse8 [V73,T69] ( 2, 1 ) int -> edx "CSE - conservative"
+; V74 cse9 [V74,T70] ( 2, 1 ) int -> edi "CSE - conservative"
+; V75 cse10 [V75,T23] ( 10, 5 ) int -> ecx "CSE - conservative"
+; V76 cse11 [V76,T57] ( 4, 2 ) int -> ebx "CSE - conservative"
+; V77 rat0 [V77,T28] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V78 rat1 [V78,T29] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V79 rat2 [V79,T30] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V80 rat3 [V80,T31] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V81 rat4 [V81,T32] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V82 rat5 [V82,T33] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V83 rat6 [V83,T34] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
+; V84 rat7 [V84,T35] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
+; V85 rat8 [V85,T36] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V86 rat9 [V86,T37] ( 3, 3 ) byref -> ebx "ReplaceWithLclVar is creating a new local variable"
+; V87 rat10 [V87,T38] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
+; V88 rat11 [V88,T39] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V89 rat12 [V89,T40] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V90 rat13 [V90,T61] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V91 rat14 [V91,T62] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V92 rat15 [V92,T41] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V93 rat16 [V93,T63] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V94 rat17 [V94,T64] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V95 rat18 [V95,T42] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V96 rat19 [V96,T43] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V97 rat20 [V97,T44] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V98 rat21 [V98,T45] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V99 rat22 [V99,T46] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V100 rat23 [V100,T47] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V101 rat24 [V101,T11] ( 3, 12 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V102 rat25 [V102,T13] ( 3, 12 ) int -> edi "ReplaceWithLclVar is creating a new local variable"
+; V103 rat26 [V103,T12] ( 3, 12 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V104 rat27 [V104,T14] ( 3, 12 ) int -> edi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 120
+; Lcl frame size = 112
G_M55471_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -121,23 +122,22 @@ G_M55471_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 120
+ sub esp, 112
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [ebp-0x30], ymm4
xor ecx, ecx
mov dword ptr [ebp-0x10], ecx
;; size=23 bbWeight=1 PerfScore 8.08
G_M55471_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- lea edi, [ebp-0x80]
+ lea edi, [ebp-0x78]
call CORINFO_HELP_INIT_PINVOKE_FRAME
- mov dword ptr [ebp-0x48], esi
mov eax, ebp
- mov dword ptr [ebp-0x6C], eax
+ mov dword ptr [ebp-0x64], eax
mov dword ptr [ebp-0x28], 16
mov edi, dword ptr [ebp-0x28]
test edi, edi
jge SHORT G_M55471_IG04
- ;; size=30 bbWeight=1 PerfScore 7.00
+ ;; size=27 bbWeight=1 PerfScore 6.00
G_M55471_IG03: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 381
mov edx, 0xD1FFAB1E
@@ -195,11 +195,11 @@ G_M55471_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {e
push 1
push dword ptr [ebp-0x3C]
push dword ptr [ebp-0x40]
- mov dword ptr [ebp-0x78], 0xD1FFAB1E
+ mov dword ptr [ebp-0x70], 0xD1FFAB1E
mov eax, esp
- mov dword ptr [ebp-0x74], eax
+ mov dword ptr [ebp-0x6C], eax
lea eax, G_M55471_IG11
- mov dword ptr [ebp-0x70], eax
+ mov dword ptr [ebp-0x68], eax
mov byte ptr [esi+0x08], 0
;; size=65 bbWeight=1 PerfScore 19.25
G_M55471_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -217,7 +217,7 @@ G_M55471_IG11: ; bbWeight=1, isz, extend
;; size=18 bbWeight=1 PerfScore 6.00
G_M55471_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax
- mov dword ptr [ebp-0x70], eax
+ mov dword ptr [ebp-0x68], eax
mov eax, gword ptr [ebp-0x2C]
; gcrRegs +[eax]
xor edx, edx
@@ -240,12 +240,12 @@ G_M55471_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebx, gword ptr [ebp-0x10]
; gcrRegs +[ebx]
mov eax, dword ptr [ebx]
- mov bword ptr [ebp-0x60], eax
+ mov bword ptr [ebp-0x58], eax
; GC ptr vars +{V38}
test dword ptr [eax], 0xD1FFAB1E
jne SHORT G_M55471_IG15
;; size=16 bbWeight=4 PerfScore 32.00
-G_M55471_IG14: ; bbWeight=2.00, gcVars=000000000000000000000080 {V38}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M55471_IG14: ; bbWeight=2.00, gcVars=000000000000000000000010 {V38}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -254,7 +254,7 @@ G_M55471_IG14: ; bbWeight=2.00, gcVars=000000000000000000000080 {V38}, gc
; gcrRegs -[ecx edx]
;; size=16 bbWeight=2.00 PerfScore 7.00
G_M55471_IG15: ; bbWeight=4.00, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov eax, bword ptr [ebp-0x60]
+ mov eax, bword ptr [ebp-0x58]
; byrRegs +[eax]
mov ecx, dword ptr [eax+0x04]
add ecx, -12
@@ -291,12 +291,12 @@ G_M55471_IG18: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
; gcrRegs +[ebx]
mov eax, dword ptr [ebx]
; gcrRegs -[eax]
- mov bword ptr [ebp-0x64], eax
+ mov bword ptr [ebp-0x5C], eax
; GC ptr vars +{V44}
test dword ptr [eax], 0xD1FFAB1E
jne SHORT G_M55471_IG20
;; size=44 bbWeight=4 PerfScore 65.00
-G_M55471_IG19: ; bbWeight=2.00, gcVars=000000000000000000000100 {V44}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M55471_IG19: ; bbWeight=2.00, gcVars=000000000000000000000020 {V44}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -305,7 +305,7 @@ G_M55471_IG19: ; bbWeight=2.00, gcVars=000000000000000000000100 {V44}, gc
; gcrRegs -[ecx edx]
;; size=16 bbWeight=2.00 PerfScore 7.00
G_M55471_IG20: ; bbWeight=4.00, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov eax, bword ptr [ebp-0x64]
+ mov eax, bword ptr [ebp-0x5C]
; byrRegs +[eax]
mov ecx, dword ptr [eax+0x04]
add ecx, -12
@@ -427,7 +427,7 @@ G_M55471_IG28: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
sub edx, dword ptr [eax+0x10]
cmp edx, dword ptr [eax+0x08]
...
@@ -9,14 +9,14 @@
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 4, 10 ) ref -> [ebp-0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Array>
-; V01 loc1 [V01,T09] ( 6, 21 ) int -> edi
+; V01 loc1 [V01,T06] ( 6, 21 ) int -> edi
; V02 loc2 [V02 ] ( 8, 4 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
; V03 loc3 [V03 ] ( 38, 13 ) ref -> [ebp-0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <ulong[,]>
;* V04 loc4 [V04,T80] ( 0, 0 ) int -> zero-ref
;* V05 loc5 [V05,T71] ( 0, 0 ) int -> zero-ref
-; V06 loc6 [V06 ] ( 4, 33 ) ref -> [ebp-0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
-; V07 loc7 [V07,T04] ( 7, 84.50) int -> ecx
-; V08 loc8 [V08,T00] ( 7,100 ) int -> eax
+; V06 loc6 [V06 ] ( 6, 9 ) ref -> [ebp-0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
+;* V07 loc7 [V07,T81] ( 0, 0 ) int -> zero-ref
+; V08 loc8 [V08,T02] ( 14, 26.50) int -> ecx
; V09 loc9 [V09,T51] ( 5, 2.50) ref -> eax class-hnd exact single-def <<unknown class>>
; V10 loc10 [V10,T17] ( 14, 7 ) ref -> eax class-hnd single-def <ulong[,]>
; V11 loc11 [V11,T52] ( 4, 2 ) ref -> edi class-hnd exact single-def <<unknown class>>
@@ -42,27 +42,27 @@
; V31 tmp18 [V31,T27] ( 2, 4 ) struct ( 4) [ebp-0x44] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V32 tmp19 [V32 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V33 tmp20 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V34 tmp21 [V34,T05] ( 5, 40 ) ref -> ebx class-hnd "Inlining Arg" <System.Array>
+; V34 tmp21 [V34,T00] ( 5, 40 ) ref -> ebx class-hnd "Inlining Arg" <System.Array>
; V35 tmp22 [V35,T19] ( 2, 4 ) int -> ecx "Inline return value spill temp"
;* V36 tmp23 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V37 tmp24 [V37,T15] ( 3, 10.00) int -> ecx "Inline stloc first use temp"
-; V38 tmp25 [V38,T07] ( 3, 24 ) byref -> [ebp-0x60] spill-single-def "Inlining Arg"
+; V38 tmp25 [V38,T04] ( 3, 24 ) byref -> [ebp-0x58] spill-single-def "Inlining Arg"
;* V39 tmp26 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V40 tmp27 [V40,T06] ( 5, 40 ) ref -> ebx class-hnd "Inlining Arg" <System.Array>
+; V40 tmp27 [V40,T01] ( 5, 40 ) ref -> ebx class-hnd "Inlining Arg" <System.Array>
; V41 tmp28 [V41,T20] ( 2, 4 ) int -> ecx "Inline return value spill temp"
;* V42 tmp29 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V43 tmp30 [V43,T16] ( 3, 10.00) int -> ecx "Inline stloc first use temp"
-; V44 tmp31 [V44,T08] ( 3, 24 ) byref -> [ebp-0x64] spill-single-def "Inlining Arg"
+; V44 tmp31 [V44,T05] ( 3, 24 ) byref -> [ebp-0x5C] spill-single-def "Inlining Arg"
;* V45 tmp32 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V46 tmp33 [V46,T18] ( 5, 6 ) int -> eax "Single return block return value"
-; V47 FramesRoot [V47,T24] ( 5, 5 ) int -> [ebp-0x48] spill-single-def "Pinvoke FrameListRoot"
-; V48 PInvokeFrame [V48 ] ( 8, 8 ) struct (32) [ebp-0x84] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V49 tmp36 [V49,T81] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V50 tmp37 [V50,T11] ( 2, 16 ) int -> edx "argument with side effect"
-; V51 tmp38 [V51,T12] ( 2, 16 ) int -> edx "argument with side effect"
-; V52 tmp39 [V52,T01] ( 3, 96 ) ref -> edi "arr expr"
-; V53 tmp40 [V53,T13] ( 21, 15 ) int -> edx "MD array shared temp"
-; V54 tmp41 [V54,T14] ( 21, 15 ) int -> registers "MD array shared temp"
+; V47 FramesRoot [V47,T24] ( 5, 5 ) int -> esi "Pinvoke FrameListRoot"
+; V48 PInvokeFrame [V48 ] ( 8, 8 ) struct (32) [ebp-0x7C] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V49 tmp36 [V49,T82] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V50 tmp37 [V50,T07] ( 2, 16 ) int -> edx "argument with side effect"
+; V51 tmp38 [V51,T08] ( 2, 16 ) int -> edx "argument with side effect"
+; V52 tmp39 [V52,T03] ( 6, 24 ) ref -> eax "arr expr"
+; V53 tmp40 [V53,T09] ( 21, 15 ) int -> edx "MD array shared temp"
+; V54 tmp41 [V54,T10] ( 21, 15 ) int -> registers "MD array shared temp"
;* V55 tmp42 [V55,T73] ( 0, 0 ) int -> zero-ref "MD array shared temp"
; V56 tmp43 [V56,T48] ( 3, 3 ) int -> edx "MD array shared temp"
;* V57 tmp44 [V57,T74] ( 0, 0 ) int -> zero-ref "MD array shared temp"
@@ -73,47 +73,48 @@
;* V62 tmp49 [V62,T77] ( 0, 0 ) int -> zero-ref "MD array shared temp"
;* V63 tmp50 [V63,T78] ( 0, 0 ) int -> zero-ref "MD array shared temp"
;* V64 tmp51 [V64,T79] ( 0, 0 ) int -> zero-ref "MD array shared temp"
-; V65 cse0 [V65,T53] ( 4, 2 ) int -> [ebp-0x4C] spill-single-def "CSE - conservative"
+; V65 cse0 [V65,T53] ( 4, 2 ) int -> [ebp-0x48] spill-single-def "CSE - conservative"
; V66 cse1 [V66,T54] ( 4, 2 ) int -> edx "CSE - conservative"
-; V67 cse2 [V67,T65] ( 3, 1.50) int -> [ebp-0x50] spill-single-def "CSE - conservative"
-; V68 cse3 [V68,T66] ( 3, 1.50) int -> [ebp-0x54] spill-single-def "CSE - conservative"
-; V69 cse4 [V69,T67] ( 3, 1.50) int -> [ebp-0x58] spill-single-def "CSE - conservative"
-; V70 cse5 [V70,T10] ( 2, 20 ) int -> [ebp-0x5C] spill-single-def hoist "CSE - moderate"
-; V71 cse6 [V71,T55] ( 2, 1 ) int -> edx "CSE - conservative"
-; V72 cse7 [V72,T56] ( 2, 1 ) int -> edx "CSE - conservative"
-; V73 cse8 [V73,T68] ( 2, 1 ) int -> edx "CSE - conservative"
-; V74 cse9 [V74,T69] ( 2, 1 ) int -> edx "CSE - conservative"
-; V75 cse10 [V75,T70] ( 2, 1 ) int -> edi "CSE - conservative"
-; V76 cse11 [V76,T23] ( 10, 5 ) int -> ecx "CSE - conservative"
-; V77 cse12 [V77,T57] ( 4, 2 ) int -> ebx "CSE - conservative"
-; V78 rat0 [V78,T28] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V79 rat1 [V79,T29] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V80 rat2 [V80,T30] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V81 rat3 [V81,T31] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V82 rat4 [V82,T32] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V83 rat5 [V83,T33] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V84 rat6 [V84,T34] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
-; V85 rat7 [V85,T35] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
-; V86 rat8 [V86,T36] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V87 rat9 [V87,T37] ( 3, 3 ) byref -> ebx "ReplaceWithLclVar is creating a new local variable"
-; V88 rat10 [V88,T38] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
-; V89 rat11 [V89,T39] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V90 rat12 [V90,T40] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V91 rat13 [V91,T61] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V92 rat14 [V92,T62] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V93 rat15 [V93,T41] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V94 rat16 [V94,T63] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V95 rat17 [V95,T64] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V96 rat18 [V96,T42] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V97 rat19 [V97,T43] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V98 rat20 [V98,T44] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V99 rat21 [V99,T45] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V100 rat22 [V100,T46] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V101 rat23 [V101,T47] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V102 rat24 [V102,T02] ( 3, 96 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
-; V103 rat25 [V103,T03] ( 3, 96 ) int -> esi "ReplaceWithLclVar is creating a new local variable"
+; V67 cse2 [V67,T65] ( 3, 1.50) int -> [ebp-0x4C] spill-single-def "CSE - conservative"
+; V68 cse3 [V68,T66] ( 3, 1.50) int -> [ebp-0x50] spill-single-def "CSE - conservative"
+; V69 cse4 [V69,T67] ( 3, 1.50) int -> [ebp-0x54] spill-single-def "CSE - conservative"
+; V70 cse5 [V70,T55] ( 2, 1 ) int -> edx "CSE - conservative"
+; V71 cse6 [V71,T56] ( 2, 1 ) int -> edx "CSE - conservative"
+; V72 cse7 [V72,T68] ( 2, 1 ) int -> edx "CSE - conservative"
+; V73 cse8 [V73,T69] ( 2, 1 ) int -> edx "CSE - conservative"
+; V74 cse9 [V74,T70] ( 2, 1 ) int -> edi "CSE - conservative"
+; V75 cse10 [V75,T23] ( 10, 5 ) int -> ecx "CSE - conservative"
+; V76 cse11 [V76,T57] ( 4, 2 ) int -> ebx "CSE - conservative"
+; V77 rat0 [V77,T28] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V78 rat1 [V78,T29] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V79 rat2 [V79,T30] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V80 rat3 [V80,T31] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V81 rat4 [V81,T32] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V82 rat5 [V82,T33] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V83 rat6 [V83,T34] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
+; V84 rat7 [V84,T35] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
+; V85 rat8 [V85,T36] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V86 rat9 [V86,T37] ( 3, 3 ) byref -> ebx "ReplaceWithLclVar is creating a new local variable"
+; V87 rat10 [V87,T38] ( 3, 3 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
+; V88 rat11 [V88,T39] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V89 rat12 [V89,T40] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V90 rat13 [V90,T61] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V91 rat14 [V91,T62] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V92 rat15 [V92,T41] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V93 rat16 [V93,T63] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V94 rat17 [V94,T64] ( 3, 1.50) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V95 rat18 [V95,T42] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V96 rat19 [V96,T43] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V97 rat20 [V97,T44] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V98 rat21 [V98,T45] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V99 rat22 [V99,T46] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V100 rat23 [V100,T47] ( 3, 3 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V101 rat24 [V101,T11] ( 3, 12 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V102 rat25 [V102,T13] ( 3, 12 ) int -> edi "ReplaceWithLclVar is creating a new local variable"
+; V103 rat26 [V103,T12] ( 3, 12 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V104 rat27 [V104,T14] ( 3, 12 ) int -> edi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 120
+; Lcl frame size = 112
G_M55471_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -121,23 +122,22 @@ G_M55471_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 120
+ sub esp, 112
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [ebp-0x30], ymm4
xor ecx, ecx
mov dword ptr [ebp-0x10], ecx
;; size=23 bbWeight=1 PerfScore 8.08
G_M55471_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- lea edi, [ebp-0x80]
+ lea edi, [ebp-0x78]
call CORINFO_HELP_INIT_PINVOKE_FRAME
- mov dword ptr [ebp-0x48], esi
mov eax, ebp
- mov dword ptr [ebp-0x6C], eax
+ mov dword ptr [ebp-0x64], eax
mov dword ptr [ebp-0x28], 16
mov edi, dword ptr [ebp-0x28]
test edi, edi
jge SHORT G_M55471_IG04
- ;; size=30 bbWeight=1 PerfScore 7.00
+ ;; size=27 bbWeight=1 PerfScore 6.00
G_M55471_IG03: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 381
mov edx, 0xD1FFAB1E
@@ -195,11 +195,11 @@ G_M55471_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000004 {e
push 1
push dword ptr [ebp-0x3C]
push dword ptr [ebp-0x40]
- mov dword ptr [ebp-0x78], 0xD1FFAB1E
+ mov dword ptr [ebp-0x70], 0xD1FFAB1E
mov eax, esp
- mov dword ptr [ebp-0x74], eax
+ mov dword ptr [ebp-0x6C], eax
lea eax, G_M55471_IG11
- mov dword ptr [ebp-0x70], eax
+ mov dword ptr [ebp-0x68], eax
mov byte ptr [esi+0x08], 0
;; size=65 bbWeight=1 PerfScore 19.25
G_M55471_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -217,7 +217,7 @@ G_M55471_IG11: ; bbWeight=1, isz, extend
;; size=18 bbWeight=1 PerfScore 6.00
G_M55471_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax
- mov dword ptr [ebp-0x70], eax
+ mov dword ptr [ebp-0x68], eax
mov eax, gword ptr [ebp-0x2C]
; gcrRegs +[eax]
xor edx, edx
@@ -240,12 +240,12 @@ G_M55471_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebx, gword ptr [ebp-0x10]
; gcrRegs +[ebx]
mov eax, dword ptr [ebx]
- mov bword ptr [ebp-0x60], eax
+ mov bword ptr [ebp-0x58], eax
; GC ptr vars +{V38}
test dword ptr [eax], 0xD1FFAB1E
jne SHORT G_M55471_IG15
;; size=16 bbWeight=4 PerfScore 32.00
-G_M55471_IG14: ; bbWeight=2.00, gcVars=000000000000000000000080 {V38}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M55471_IG14: ; bbWeight=2.00, gcVars=000000000000000000000010 {V38}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -254,7 +254,7 @@ G_M55471_IG14: ; bbWeight=2.00, gcVars=000000000000000000000080 {V38}, gc
; gcrRegs -[ecx edx]
;; size=16 bbWeight=2.00 PerfScore 7.00
G_M55471_IG15: ; bbWeight=4.00, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov eax, bword ptr [ebp-0x60]
+ mov eax, bword ptr [ebp-0x58]
; byrRegs +[eax]
mov ecx, dword ptr [eax+0x04]
add ecx, -12
@@ -291,12 +291,12 @@ G_M55471_IG18: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
; gcrRegs +[ebx]
mov eax, dword ptr [ebx]
; gcrRegs -[eax]
- mov bword ptr [ebp-0x64], eax
+ mov bword ptr [ebp-0x5C], eax
; GC ptr vars +{V44}
test dword ptr [eax], 0xD1FFAB1E
jne SHORT G_M55471_IG20
;; size=44 bbWeight=4 PerfScore 65.00
-G_M55471_IG19: ; bbWeight=2.00, gcVars=000000000000000000000100 {V44}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M55471_IG19: ; bbWeight=2.00, gcVars=000000000000000000000020 {V44}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -305,7 +305,7 @@ G_M55471_IG19: ; bbWeight=2.00, gcVars=000000000000000000000100 {V44}, gc
; gcrRegs -[ecx edx]
;; size=16 bbWeight=2.00 PerfScore 7.00
G_M55471_IG20: ; bbWeight=4.00, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov eax, bword ptr [ebp-0x64]
+ mov eax, bword ptr [ebp-0x5C]
; byrRegs +[eax]
mov ecx, dword ptr [eax+0x04]
add ecx, -12
@@ -427,7 +427,7 @@ G_M55471_IG28: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
sub edx, dword ptr [eax+0x10]
cmp edx, dword ptr [eax+0x08]
...
@@ -8,15 +8,15 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 5, 4.50) ref -> [ebp-0x14] class-hnd single-def <System.String>
-; V01 loc0 [V01,T00] ( 16, 26 ) int -> edi
+; V00 arg0 [V00,T05] ( 5, 4.50) ref -> esi class-hnd single-def <System.String>
+; V01 loc0 [V01,T00] ( 14, 25.50) int -> edi
; V02 loc1 [V02,T01] ( 14, 25.50) int -> [ebp-0x10]
-; V03 loc2 [V03,T04] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <System.String>
-; V04 loc3 [V04,T05] ( 7, 6.50) int -> ecx
-; V05 loc4 [V05,T02] ( 14, 18.54) int -> eax
-; V06 cse0 [V06,T03] ( 9, 16.04) int -> ebx "CSE - aggressive"
+; V03 loc2 [V03,T04] ( 9, 16 ) ref -> [ebp-0x14] class-hnd <System.String>
+; V04 loc3 [V04,T06] ( 4, 6.50) int -> ecx
+; V05 loc4 [V05,T02] ( 8, 21.50) int -> eax
+; V06 cse0 [V06,T03] ( 8, 19.50) int -> ebx "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M41923_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -24,7 +24,7 @@ G_M41923_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -33,26 +33,24 @@ G_M41923_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [esi+0x04]
lea eax, [ebx-0x01]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x14], esi
- ; GC ptr vars +{V00}
mov edx, esi
; gcrRegs +[edx]
jmp SHORT G_M41923_IG04
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M41923_IG03: ; bbWeight=2, gcVars=00000050 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx esi]
+ ;; size=15 bbWeight=1 PerfScore 6.00
+G_M41923_IG03: ; bbWeight=2, gcVars=00000010 {V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx]
; GC ptr vars +{V03 V04}
inc edi
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=4 bbWeight=2 PerfScore 2.50
-G_M41923_IG04: ; bbWeight=8, gcVars=00000040 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M41923_IG04: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03 V04}
cmp ebx, edi
jle SHORT G_M41923_IG08
;; size=4 bbWeight=8 PerfScore 10.00
-G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
+G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*edi+0x08]
call [<unknown method>]
@@ -60,29 +58,29 @@ G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
test eax, eax
jne SHORT G_M41923_IG03
;; size=18 bbWeight=4 PerfScore 29.00
-G_M41923_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M41923_IG08
;; size=5 bbWeight=1 PerfScore 3.00
-G_M41923_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41923_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
mov eax, dword ptr [ebp-0x10]
dec eax
mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=10 bbWeight=2 PerfScore 6.50
-G_M41923_IG08: ; bbWeight=8, gcVars=00000040 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M41923_IG08: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov eax, dword ptr [ebp-0x10]
test eax, eax
jl SHORT G_M41923_IG11
;; size=7 bbWeight=8 PerfScore 18.00
-G_M41923_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+G_M41923_IG09: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp eax, ebx
- jae G_M41923_IG25
- mov gword ptr [ebp-0x18], edx
+ jae G_M41923_IG21
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [edx+2*eax+0x08]
@@ -91,104 +89,78 @@ G_M41923_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
test eax, eax
jne SHORT G_M41923_IG07
;; size=29 bbWeight=4 PerfScore 38.00
-G_M41923_IG10: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41923_IG10: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=6 bbWeight=2 PerfScore 4.00
-G_M41923_IG11: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M41923_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
cmp edi, eax
- jge G_M41923_IG23
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M41923_IG12: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jge SHORT G_M41923_IG19
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M41923_IG12: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae G_M41923_IG25
+ jae SHORT G_M41923_IG21
cmp word ptr [edx+2*edi+0x08], 91
jne SHORT G_M41923_IG13
cmp eax, ebx
- jae SHORT G_M41923_IG25
+ jae SHORT G_M41923_IG21
cmp word ptr [edx+2*eax+0x08], 93
jne SHORT G_M41923_IG13
inc edi
dec eax
- ;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M41923_IG13: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=26 bbWeight=0.50 PerfScore 5.50
+G_M41923_IG13: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp eax, ebx
- jae SHORT G_M41923_IG25
+ jae SHORT G_M41923_IG21
cmp word ptr [edx+2*eax+0x08], 93
- je SHORT G_M41923_IG23
+ je SHORT G_M41923_IG19
xor ecx, ecx
cmp eax, edi
- jl SHORT G_M41923_IG23
- mov esi, eax
- or esi, edi
- jl SHORT G_M41923_IG18
- cmp ebx, eax
- jle SHORT G_M41923_IG18
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M41923_IG14: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M41923_IG19
+ ;; size=18 bbWeight=0.50 PerfScore 3.38
+G_M41923_IG14: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, ebx
+ jae SHORT G_M41923_IG21
cmp word ptr [edx+2*eax+0x08], 44
jne SHORT G_M41923_IG16
- ;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M41923_IG15: ; bbWeight=1.98, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=12 bbWeight=4 PerfScore 21.00
+G_M41923_IG15: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp ecx, 4
- je SHORT G_M41923_IG22
- ;; size=6 bbWeight=1.98 PerfScore 2.97
-G_M41923_IG16: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M41923_IG18
+ ;; size=6 bbWeight=2 PerfScore 3.00
+G_M41923_IG16: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
dec eax
cmp eax, edi
jge SHORT G_M41923_IG14
- ;; size=5 bbWeight=3.96 PerfScore 5.94
-G_M41923_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M41923_IG23
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M41923_IG17: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ jmp SHORT G_M41923_IG19
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M41923_IG18: ; bbWeight=0.04, gcVars=00000040 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00 V06}
- cmp eax, ebx
- jae SHORT G_M41923_IG25
- cmp word ptr [edx+2*eax+0x08], 44
- jne SHORT G_M41923_IG20
- ;; size=12 bbWeight=0.04 PerfScore 0.21
-G_M41923_IG19: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- cmp ecx, 4
- je SHORT G_M41923_IG22
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M41923_IG20: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- dec eax
- cmp eax, edi
- jge SHORT G_M41923_IG18
- ;; size=5 bbWeight=0.04 PerfScore 0.06
-G_M41923_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00 V06}
- jmp SHORT G_M41923_IG23
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M41923_IG22: ; bbWeight=0.50, gcVars=00000040 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx]
- ; GC ptr vars +{V00 V06}
+G_M41923_IG18: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx] +[esi]
mov ecx, eax
sub ecx, edi
push ecx
- mov ecx, gword ptr [ebp-0x14]
+ mov ecx, esi
; gcrRegs +[ecx]
mov edx, edi
- ; GC ptr vars -{V00 V06}
call [<unknown method>]
- ; gcrRegs -[ecx] +[eax]
+ ; gcrRegs -[ecx esi] +[eax]
mov esi, eax
; gcrRegs +[esi]
mov edx, esi
; gcrRegs +[edx]
- ;; size=20 bbWeight=0.50 PerfScore 3.12
-G_M41923_IG23: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ ;; size=19 bbWeight=0.50 PerfScore 2.75
+G_M41923_IG19: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax esi]
mov eax, edx
; gcrRegs +[eax]
;; size=2 bbWeight=1 PerfScore 0.25
-G_M41923_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M41923_IG20: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -196,12 +168,12 @@ G_M41923_IG24: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M41923_IG25: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M41923_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edx]
call [CORINFO_HELP_RNGCHKFAIL]
...
@@ -8,15 +8,15 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 5, 4.50) ref -> [ebp-0x14] class-hnd single-def <System.String>
-; V01 loc0 [V01,T00] ( 16, 26 ) int -> edi
+; V00 arg0 [V00,T05] ( 5, 4.50) ref -> esi class-hnd single-def <System.String>
+; V01 loc0 [V01,T00] ( 14, 25.50) int -> edi
; V02 loc1 [V02,T01] ( 14, 25.50) int -> [ebp-0x10]
-; V03 loc2 [V03,T04] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <System.String>
-; V04 loc3 [V04,T05] ( 7, 6.50) int -> ecx
-; V05 loc4 [V05,T02] ( 14, 18.54) int -> eax
-; V06 cse0 [V06,T03] ( 9, 16.04) int -> ebx "CSE - aggressive"
+; V03 loc2 [V03,T04] ( 9, 16 ) ref -> [ebp-0x14] class-hnd <System.String>
+; V04 loc3 [V04,T06] ( 4, 6.50) int -> ecx
+; V05 loc4 [V05,T02] ( 8, 21.50) int -> eax
+; V06 cse0 [V06,T03] ( 8, 19.50) int -> ebx "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M5940_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -24,7 +24,7 @@ G_M5940_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -33,26 +33,24 @@ G_M5940_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [esi+0x04]
lea eax, [ebx-0x01]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x14], esi
- ; GC ptr vars +{V00}
mov edx, esi
; gcrRegs +[edx]
jmp SHORT G_M5940_IG04
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M5940_IG03: ; bbWeight=2, gcVars=00000050 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx esi]
+ ;; size=15 bbWeight=1 PerfScore 6.00
+G_M5940_IG03: ; bbWeight=2, gcVars=00000010 {V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx]
; GC ptr vars +{V03 V04}
inc edi
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=4 bbWeight=2 PerfScore 2.50
-G_M5940_IG04: ; bbWeight=8, gcVars=00000040 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M5940_IG04: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03 V04}
cmp ebx, edi
jle SHORT G_M5940_IG08
;; size=4 bbWeight=8 PerfScore 10.00
-G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
+G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*edi+0x08]
call [<unknown method>]
@@ -60,29 +58,29 @@ G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
test eax, eax
jne SHORT G_M5940_IG03
;; size=18 bbWeight=4 PerfScore 29.00
-G_M5940_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M5940_IG08
;; size=5 bbWeight=1 PerfScore 3.00
-G_M5940_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M5940_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
mov eax, dword ptr [ebp-0x10]
dec eax
mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=10 bbWeight=2 PerfScore 6.50
-G_M5940_IG08: ; bbWeight=8, gcVars=00000040 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M5940_IG08: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov eax, dword ptr [ebp-0x10]
test eax, eax
jl SHORT G_M5940_IG11
;; size=7 bbWeight=8 PerfScore 18.00
-G_M5940_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+G_M5940_IG09: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp eax, ebx
- jae G_M5940_IG25
- mov gword ptr [ebp-0x18], edx
+ jae G_M5940_IG21
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
mov dword ptr [ebp-0x10], eax
movzx ecx, word ptr [edx+2*eax+0x08]
@@ -91,104 +89,78 @@ G_M5940_IG09: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
test eax, eax
jne SHORT G_M5940_IG07
;; size=29 bbWeight=4 PerfScore 38.00
-G_M5940_IG10: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M5940_IG10: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=6 bbWeight=2 PerfScore 4.00
-G_M5940_IG11: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M5940_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
cmp edi, eax
- jge G_M5940_IG23
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M5940_IG12: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jge SHORT G_M5940_IG19
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M5940_IG12: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae G_M5940_IG25
+ jae SHORT G_M5940_IG21
cmp word ptr [edx+2*edi+0x08], 91
jne SHORT G_M5940_IG13
cmp eax, ebx
- jae SHORT G_M5940_IG25
+ jae SHORT G_M5940_IG21
cmp word ptr [edx+2*eax+0x08], 93
jne SHORT G_M5940_IG13
inc edi
dec eax
- ;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M5940_IG13: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=26 bbWeight=0.50 PerfScore 5.50
+G_M5940_IG13: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp eax, ebx
- jae SHORT G_M5940_IG25
+ jae SHORT G_M5940_IG21
cmp word ptr [edx+2*eax+0x08], 93
- je SHORT G_M5940_IG23
+ je SHORT G_M5940_IG19
xor ecx, ecx
cmp eax, edi
- jl SHORT G_M5940_IG23
- mov esi, eax
- or esi, edi
- jl SHORT G_M5940_IG18
- cmp ebx, eax
- jle SHORT G_M5940_IG18
- ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M5940_IG14: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M5940_IG19
+ ;; size=18 bbWeight=0.50 PerfScore 3.38
+G_M5940_IG14: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, ebx
+ jae SHORT G_M5940_IG21
cmp word ptr [edx+2*eax+0x08], 44
jne SHORT G_M5940_IG16
- ;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M5940_IG15: ; bbWeight=1.98, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=12 bbWeight=4 PerfScore 21.00
+G_M5940_IG15: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp ecx, 4
- je SHORT G_M5940_IG22
- ;; size=6 bbWeight=1.98 PerfScore 2.97
-G_M5940_IG16: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M5940_IG18
+ ;; size=6 bbWeight=2 PerfScore 3.00
+G_M5940_IG16: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
dec eax
cmp eax, edi
jge SHORT G_M5940_IG14
- ;; size=5 bbWeight=3.96 PerfScore 5.94
-G_M5940_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M5940_IG23
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M5940_IG17: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ jmp SHORT G_M5940_IG19
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M5940_IG18: ; bbWeight=0.04, gcVars=00000040 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00 V06}
- cmp eax, ebx
- jae SHORT G_M5940_IG25
- cmp word ptr [edx+2*eax+0x08], 44
- jne SHORT G_M5940_IG20
- ;; size=12 bbWeight=0.04 PerfScore 0.21
-G_M5940_IG19: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- cmp ecx, 4
- je SHORT G_M5940_IG22
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M5940_IG20: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- dec eax
- cmp eax, edi
- jge SHORT G_M5940_IG18
- ;; size=5 bbWeight=0.04 PerfScore 0.06
-G_M5940_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00 V06}
- jmp SHORT G_M5940_IG23
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M5940_IG22: ; bbWeight=0.50, gcVars=00000040 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx]
- ; GC ptr vars +{V00 V06}
+G_M5940_IG18: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx] +[esi]
mov ecx, eax
sub ecx, edi
push ecx
- mov ecx, gword ptr [ebp-0x14]
+ mov ecx, esi
; gcrRegs +[ecx]
mov edx, edi
- ; GC ptr vars -{V00 V06}
call [<unknown method>]
- ; gcrRegs -[ecx] +[eax]
+ ; gcrRegs -[ecx esi] +[eax]
mov esi, eax
; gcrRegs +[esi]
mov edx, esi
; gcrRegs +[edx]
- ;; size=20 bbWeight=0.50 PerfScore 3.12
-G_M5940_IG23: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ ;; size=19 bbWeight=0.50 PerfScore 2.75
+G_M5940_IG19: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax esi]
mov eax, edx
; gcrRegs +[eax]
;; size=2 bbWeight=1 PerfScore 0.25
-G_M5940_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M5940_IG20: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -196,12 +168,12 @@ G_M5940_IG24: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M5940_IG25: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M5940_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edx]
call [CORINFO_HELP_RNGCHKFAIL]
...
@@ -4,59 +4,59 @@
; ReadyToRun compilation
; optimized code
; ebp 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,T07] ( 5, 3.50) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T01] ( 7, 4.50) byref -> esi single-def
-; V02 arg2 [V02,T02] ( 7, 4.50) byref -> edi single-def
-; V03 loc0 [V03,T00] ( 20, 11 ) int -> edx
-; V04 loc1 [V04,T10] ( 5, 2.50) int -> [ebp-0x10] spill-single-def
-; V05 loc2 [V05,T14] ( 2, 1 ) int -> eax
+; V00 arg0 [V00,T08] ( 5, 3.50) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
+; V01 arg1 [V01,T03] ( 7, 4.50) byref -> esi single-def
+; V02 arg2 [V02,T04] ( 7, 4.50) byref -> edi single-def
+; V03 loc0 [V03,T00] ( 11, 20.50) int -> edx
+; V04 loc1 [V04,T11] ( 5, 2.50) int -> [ebp-0x10] spill-single-def
+; V05 loc2 [V05,T15] ( 2, 1 ) int -> eax
; V06 loc3 [V06 ] ( 2, 1 ) struct ( 4) [ebp-0x14] do-not-enreg[XS] addr-exposed ld-addr-op <System.Text.Rune>
; V07 loc4 [V07 ] ( 3, 1.50) int -> [ebp-0x18] do-not-enreg[X] addr-exposed ld-addr-op
-;* V08 loc5 [V08,T17] ( 0, 0 ) int -> zero-ref
+; V08 loc5 [V08,T01] ( 4, 12.50) int -> ecx
;* V09 tmp0 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V10 tmp1 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp3 [V12,T08] ( 3, 3 ) int -> [ebp-0x1C] spill-single-def "Inlining Arg"
-; V13 tmp4 [V13,T11] ( 2, 2 ) byref -> ebx single-def "Inlining Arg"
+; V12 tmp3 [V12,T09] ( 3, 3 ) int -> [ebp-0x1C] spill-single-def "Inlining Arg"
+; V13 tmp4 [V13,T12] ( 2, 2 ) byref -> ebx single-def "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp7 [V16 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V18 tmp9 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V19 tmp10 [V19,T04] ( 5, 5 ) int -> [ebp-0x20] spill-single-def "Inlining Arg"
-; V20 tmp11 [V20,T12] ( 2, 2 ) byref -> ebx "Inlining Arg"
+; V19 tmp10 [V19,T06] ( 5, 5 ) int -> [ebp-0x20] spill-single-def "Inlining Arg"
+; V20 tmp11 [V20,T13] ( 2, 2 ) byref -> ebx "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "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 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune>
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V26 tmp17 [V26,T09] ( 3, 3 ) int -> eax "Single return block return value"
+; V26 tmp17 [V26,T10] ( 3, 3 ) int -> eax "Single return block return value"
; V27 tmp18 [V27 ] ( 2, 1 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V06._value (fldOffset=0x0)" P-DEP
;* V28 tmp19 [V28 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP
-; V30 tmp21 [V30,T15] ( 2, 1 ) int -> ebx "field V10._value (fldOffset=0x0)" P-INDEP
-; V31 tmp22 [V31,T13] ( 2, 1 ) byref -> ebx single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp23 [V32,T16] ( 2, 1 ) int -> eax "field V11._length (fldOffset=0x4)" P-INDEP
+; V30 tmp21 [V30,T16] ( 2, 1 ) int -> ebx "field V10._value (fldOffset=0x0)" P-INDEP
+; V31 tmp22 [V31,T14] ( 2, 1 ) byref -> ebx single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp23 [V32,T17] ( 2, 1 ) int -> eax "field V11._length (fldOffset=0x4)" P-INDEP
;* V33 tmp24 [V33,T18] ( 0, 0 ) int -> zero-ref "field V16._value (fldOffset=0x0)" P-INDEP
;* V34 tmp25 [V34 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP
;* V36 tmp27 [V36,T19] ( 0, 0 ) int -> zero-ref "field V24._value (fldOffset=0x0)" P-INDEP
-; V37 tmp28 [V37,T06] ( 7, 4 ) byref -> ebx "V00.[000..004)"
-; V38 tmp29 [V38,T03] ( 9, 6 ) int -> eax "V00.[004..008)"
+; V37 tmp28 [V37,T05] ( 5, 6.50) byref -> ebx "V00.[000..004)"
+; V38 tmp29 [V38,T02] ( 6, 8 ) int -> eax "V00.[004..008)"
;* V39 tmp30 [V39 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* 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 cse0 [V43,T05] ( 8, 4 ) ref -> edx multi-def "CSE - moderate"
+; V43 cse0 [V43,T07] ( 8, 4 ) ref -> edx multi-def "CSE - moderate"
;
; Lcl frame size = 20
-G_M6810_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M6810_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
@@ -74,7 +74,7 @@ G_M6810_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {es
mov eax, dword ptr [ebp+0x0C]
lea edx, [eax-0x01]
cmp edx, eax
- jae G_M6810_IG14
+ jae G_M6810_IG15
;; size=17 bbWeight=1 PerfScore 3.75
G_M6810_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, byref, isz
movzx ecx, byte ptr [ebx+edx]
@@ -117,39 +117,37 @@ G_M6810_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C8
mov eax, dword ptr [ebp-0x1C]
push eax
push ebx
+ ; byr arg push 1
mov ecx, esi
; byrRegs +[ecx]
mov edx, edi
; byrRegs +[edx]
call [<unknown method>]
; byrRegs -[ecx edx ebx esi edi]
- jmp G_M6810_IG13
+ ; gcr arg pop 1
+ jmp G_M6810_IG14
;; size=20 bbWeight=0.50 PerfScore 4.25
-G_M6810_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, byref, isz
+G_M6810_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, byref
; byrRegs +[ebx esi edi]
+ mov ecx, 3
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M6810_IG08: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, byref, isz
dec edx
cmp edx, eax
- jae SHORT G_M6810_IG08
+ jae SHORT G_M6810_IG09
cmp byte ptr [ebx+edx], -64
- jge SHORT G_M6810_IG10
- dec edx
- cmp edx, eax
- jae SHORT G_M6810_IG08
- cmp byte ptr [ebx+edx], -64
- jge SHORT G_M6810_IG10
- dec edx
- cmp edx, eax
- jae SHORT G_M6810_IG08
- cmp byte ptr [ebx+edx], -64
- jge SHORT G_M6810_IG10
- ;; size=33 bbWeight=0.50 PerfScore 8.25
-G_M6810_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+ jge SHORT G_M6810_IG11
+ dec ecx
+ test ecx, ecx
+ jg SHORT G_M6810_IG08
+ ;; size=16 bbWeight=4 PerfScore 28.00
+G_M6810_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
; byrRegs -[ebx]
mov dword ptr [esi], 0xFFFD
mov dword ptr [edi], 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
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -157,15 +155,13 @@ G_M6810_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M6810_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, gcvars, byref, isz
+G_M6810_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, gcvars, byref, isz
; byrRegs +[ebx]
- cmp edx, eax
- ja G_M6810_IG16
add ebx, edx
sub eax, edx
mov dword ptr [ebp-0x20], eax
test eax, eax
- jge SHORT G_M6810_IG11
+ jge SHORT G_M6810_IG12
mov ecx, dword ptr [(reloc)] ; const ptr
mov edx, gword ptr [ecx]
; gcrRegs +[edx]
@@ -173,10 +169,10 @@ G_M6810_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {},
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- ;; size=35 bbWeight=0.50 PerfScore 5.62
-G_M6810_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, byref, isz
+ ;; size=27 bbWeight=0.50 PerfScore 5.00
+G_M6810_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, byref, isz
cmp dword ptr [ebp-0x20], 0
- jne SHORT G_M6810_IG12
+ jne SHORT G_M6810_IG13
mov ecx, dword ptr [(reloc)] ; const ptr
mov ecx, gword ptr [ecx]
; gcrRegs +[ecx]
@@ -186,25 +182,27 @@ G_M6810_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C8
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=28 bbWeight=0.50 PerfScore 7.00
-G_M6810_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, byref, isz
+G_M6810_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C8 {ebx esi edi}, byref, isz
mov bword ptr [ebp+0x08], ebx
mov eax, dword ptr [ebp-0x20]
mov dword ptr [ebp+0x0C], eax
push dword ptr [ebp+0x0C]
push bword ptr [ebp+0x08]
+ ; byr arg push 1
lea ecx, [ebp-0x14]
lea edx, [ebp-0x18]
call [<unknown method>]
; byrRegs -[ebx]
+ ; gcr arg pop 1
mov ebx, dword ptr [ebp-0x20]
cmp dword ptr [ebp-0x18], ebx
- jne SHORT G_M6810_IG08
+ jne SHORT G_M6810_IG09
mov edx, dword ptr [ebp-0x18]
mov dword ptr [edi], edx
mov edx, dword ptr [ebp-0x14]
mov dword ptr [esi], edx
;; size=45 bbWeight=0.50 PerfScore 8.50
-G_M6810_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M6810_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; byrRegs -[esi edi]
lea esp, [ebp-0x0C]
pop ebx
@@ -213,14 +211,14 @@ G_M6810_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop ebp
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M6810_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref
+G_M6810_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref
; byrRegs +[esi edi]
mov dword ptr [esi], 0xFFFD
xor eax, eax
mov dword ptr [edi], 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
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -228,12 +226,7 @@ G_M6810_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M6810_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi edi]
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 333, prolog size 9, PerfScore 64.62, instruction count 121, allocated bytes for code 333 (MethodHash=fdd5e565) for method System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
+; Total bytes of code 306, prolog size 13, PerfScore 83.88, instruction count 111, allocated bytes for code 306 (MethodHash=fdd5e565) for method System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
; ============================================================
@@ -9,26 +9,26 @@
; 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 -> [ebp-0x48] this class-hnd EH-live single-def <System.Runtime.Caching.ExpiresBucket>
+; V00 this [V00,T22] ( 18, 19 ) ref -> [ebp-0x44] 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,T28] ( 8, 7 ) ubyte -> [ebp-0x24] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 4) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 12,132 ) ref -> [ebp-0x4C] class-hnd <<unknown class>>
+; V04 loc1 [V04,T06] ( 8, 68 ) ref -> [ebp-0x48] class-hnd <<unknown class>>
; V05 loc2 [V05,T27] ( 3, 12 ) int -> ecx
-; V06 loc3 [V06,T03] ( 7,108 ) ref -> [ebp-0x50] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
+; V06 loc3 [V06,T02] ( 7,108 ) ref -> [ebp-0x4C] class-hnd <System.Runtime.Caching.MemoryCacheEntry>
; V07 loc4 [V07,T15] ( 5, 35 ) int -> [ebp-0x28] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T32] ( 2, 5 ) ref -> esi class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 4) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T06] ( 13, 71 ) ref -> [ebp-0x54] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T05] ( 13, 71 ) ref -> [ebp-0x50] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 4, 4 ) ubyte -> [ebp-0x2C] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T25] ( 4, 13 ) int -> [ebp-0x30]
;* V14 loc11 [V14,T33] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
; V15 loc12 [V15,T07] ( 7, 57 ) int -> [ebp-0x34]
-; V16 loc13 [V16,T08] ( 4, 52 ) int -> [ebp-0x38]
+; V16 loc13 [V16,T08] ( 4, 52 ) int -> ebx
; V17 loc14 [V17,T00] ( 6,148 ) int -> esi
-; V18 loc15 [V18,T14] ( 8, 35 ) ref -> [ebp-0x58] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
-; V19 loc16 [V19 ] ( 4, 3 ) ubyte -> [ebp-0x3C] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V18 loc15 [V18,T14] ( 8, 35 ) ref -> [ebp-0x54] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V19 loc16 [V19 ] ( 4, 3 ) ubyte -> [ebp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V20 tmp0 [V20 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.Caching.ExpiresEntryRef>
;* V21 tmp1 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
;* V22 tmp2 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
@@ -43,8 +43,8 @@
;* V31 tmp11 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Runtime.Caching.CacheExpires>
; V32 tmp12 [V32,T29] ( 6, 6 ) ref -> esi class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V33 tmp13 [V33,T13] ( 8, 38 ) long -> [ebp+0x08] do-not-enreg[F] single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
-; V34 tmp14 [V34,T16] ( 5, 35 ) int -> [ebp-0x40] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V35 tmp15 [V35,T04] ( 14, 75 ) int -> edx "field V09._ref (fldOffset=0x0)" P-INDEP
+; V34 tmp14 [V34,T16] ( 5, 35 ) int -> [ebp-0x3C] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
+; V35 tmp15 [V35,T03] ( 14, 75 ) int -> edx "field V09._ref (fldOffset=0x0)" P-INDEP
; V36 tmp16 [V36,T19] ( 4, 24 ) int -> edi "field V10._ref (fldOffset=0x0)" P-INDEP
; V37 tmp17 [V37,T17] ( 2, 32 ) int -> ecx "field V20._ref (fldOffset=0x0)" P-INDEP
; V38 tmp18 [V38,T18] ( 2, 32 ) int -> edx "field V25._ref (fldOffset=0x0)" P-INDEP
@@ -53,14 +53,14 @@
; V41 tmp21 [V41,T10] ( 3, 48 ) ref -> ecx "arr expr"
; V42 tmp22 [V42,T11] ( 3, 48 ) ref -> ecx "arr expr"
; V43 EHSlots [V43 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V44 cse0 [V44,T23] ( 3, 18 ) ref -> [ebp-0x5C] spill-single-def "CSE - conservative"
-; V45 cse1 [V45,T24] ( 4, 16 ) byref -> ecx "CSE - conservative"
-; V46 cse2 [V46,T02] ( 6,128 ) int -> edi "CSE - aggressive"
-; V47 cse3 [V47,T12] ( 4, 44 ) int -> [ebp-0x44] spill-single-def "CSE - moderate"
-; V48 cse4 [V48,T05] ( 6, 72 ) int -> eax multi-def "CSE - moderate"
+; V44 cse0 [V44,T23] ( 3, 18 ) ref -> [ebp-0x58] spill-single-def "CSE - conservative"
+; V45 cse1 [V45,T01] ( 6,128 ) byref -> edi "CSE - aggressive"
+; V46 cse2 [V46,T24] ( 4, 16 ) byref -> ecx "CSE - conservative"
+; V47 cse3 [V47,T12] ( 4, 44 ) int -> [ebp-0x40] spill-single-def "CSE - moderate"
+; V48 cse4 [V48,T04] ( 6, 72 ) int -> eax multi-def "CSE - moderate"
; V49 cse5 [V49,T21] ( 3, 24 ) int -> eax "CSE - moderate"
;
-; Lcl frame size = 80
+; Lcl frame size = 76
G_M744_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -68,18 +68,17 @@ G_M744_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 80
+ sub esp, 76
xorps xmm4, xmm4
- movups xmmword ptr [ebp-0x3C], xmm4
- movups xmmword ptr [ebp-0x2C], xmm4
+ movups xmmword ptr [ebp-0x38], xmm4
+ movups xmmword ptr [ebp-0x28], xmm4
xor eax, eax
- mov dword ptr [ebp-0x1C], eax
mov dword ptr [ebp-0x18], eax
mov dword ptr [ebp-0x14], eax
- mov gword ptr [ebp-0x48], ecx
+ mov gword ptr [ebp-0x44], ecx
; GC ptr vars +{V00}
mov dword ptr [ebp-0x24], edx
- ;; size=37 bbWeight=1 PerfScore 14.08
+ ;; size=34 bbWeight=1 PerfScore 13.08
G_M744_IG02: ; bbWeight=1, gcVars=0000000000400000 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx]
mov eax, dword ptr [(reloc)] ; const ptr
@@ -110,10 +109,10 @@ G_M744_IG05: ; bbWeight=1, gcVars=0000000000400000 {V00}, gcrefRegs=00000
; byrRegs +[eax]
mov esi, gword ptr [eax+0x04]
; gcrRegs +[esi]
- mov gword ptr [ebp-0x5C], esi
+ mov gword ptr [ebp-0x58], esi
; GC ptr vars +{V44}
mov ecx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x40], ecx
+ mov dword ptr [ebp-0x3C], ecx
xor ecx, ecx
mov dword ptr [ebp-0x28], ecx
;; size=23 bbWeight=1 PerfScore 10.25
@@ -123,7 +122,7 @@ G_M744_IG06: ; bbWeight=1, gcVars=0000000000C00000 {V00 V44}, gcrefRegs=0
cmp byte ptr [ebp-0x24], 0
je SHORT G_M744_IG07
mov ecx, dword ptr [(reloc)] ; const ptr
- mov eax, gword ptr [ebp-0x48]
+ mov eax, gword ptr [ebp-0x44]
; gcrRegs +[eax]
mov ecx, gword ptr [eax+ecx]
; gcrRegs +[ecx]
@@ -138,22 +137,22 @@ G_M744_IG06: ; bbWeight=1, gcVars=0000000000C00000 {V00 V44}, gcrefRegs=0
;; size=42 bbWeight=1 PerfScore 21.00
G_M744_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi]
- mov eax, gword ptr [ebp-0x48]
+ mov eax, gword ptr [ebp-0x44]
; gcrRegs +[eax]
mov ecx, eax
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x54], ecx
+ mov gword ptr [ebp-0x50], ecx
; GC ptr vars +{V11}
xor edi, edi
mov dword ptr [ebp-0x2C], edi
;; size=13 bbWeight=1 PerfScore 3.50
-G_M744_IG08: ; bbWeight=1, gcVars=0000000000C00040 {V00 V11 V44}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M744_IG08: ; bbWeight=1, gcVars=0000000000C00020 {V00 V11 V44}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
lea edx, [ebp-0x2C]
call [<unknown method>]
; gcrRegs -[ecx]
mov ecx, dword ptr [(reloc)] ; const ptr
- mov edi, gword ptr [ebp-0x54]
+ mov edi, gword ptr [ebp-0x50]
; gcrRegs +[edi]
cmp dword ptr [edi+ecx], 0
je SHORT G_M744_IG09
@@ -174,9 +173,9 @@ G_M744_IG09: ; bbWeight=1, gcVars=0000000000400000 {V00}, gcrefRegs=00000
push G_M744_IG27
jmp G_M744_IG28
;; size=24 bbWeight=1 PerfScore 5.00
-G_M744_IG10: ; bbWeight=1, gcVars=0000000000C00040 {V00 V11 V44}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M744_IG10: ; bbWeight=1, gcVars=0000000000C00020 {V00 V11 V44}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[edi]
- ; GC ptr vars +{V06 V11 V44}
+ ; GC ptr vars +{V05 V11 V44}
push dword ptr [ebp+0x0C]
push dword ptr [ebp+0x08]
mov ecx, edi
@@ -193,7 +192,7 @@ G_M744_IG10: ; bbWeight=1, gcVars=0000000000C00040 {V00 V11 V44}, gcrefRe
cmp dword ptr [edx+0x04], 0
jle G_M744_IG19
;; size=46 bbWeight=1 PerfScore 18.50
-G_M744_IG11: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M744_IG11: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
mov edx, dword ptr [(reloc)] ; const ptr
mov edx, gword ptr [edi+edx]
@@ -204,79 +203,68 @@ G_M744_IG11: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {
lea ecx, [eax+2*eax]
mov edx, gword ptr [edx+4*ecx+0x08]
test edx, edx
- je G_M744_IG18
- ;; size=36 bbWeight=8 PerfScore 102.00
+ je SHORT G_M744_IG18
+ ;; size=32 bbWeight=8 PerfScore 102.00
G_M744_IG12: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
mov ecx, dword ptr [edx+0x04]
- mov dword ptr [ebp-0x44], ecx
+ mov dword ptr [ebp-0x40], ecx
test ecx, ecx
je G_M744_IG21
mov ebx, dword ptr [edx+0x0C]
neg ebx
add ebx, 127
- mov dword ptr [ebp-0x38], ebx
mov esi, 1
cmp ecx, 1
jle SHORT G_M744_IG17
- ;; size=35 bbWeight=4 PerfScore 37.00
+ ;; size=32 bbWeight=4 PerfScore 33.00
G_M744_IG13: ; bbWeight=32, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
lea edi, [esi+2*esi]
- mov ecx, gword ptr [edx+4*edi+0x10]
+ mov gword ptr [ebp-0x48], edx
+ ; GC ptr vars +{V04}
+ lea edi, bword ptr [edx+4*edi+0x08]
+ ; byrRegs +[edi]
+ mov ecx, gword ptr [edi+0x08]
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x50], ecx
+ mov gword ptr [ebp-0x4C], ecx
+ ; GC ptr vars +{V06}
test ecx, ecx
je SHORT G_M744_IG16
- ;; size=14 bbWeight=32 PerfScore 152.00
-G_M744_IG14: ; bbWeight=16, gcVars=0000000000C00048 {V00 V06 V11 V44}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- lea ebx, [4*edi]
- add ebx, 8
- mov gword ptr [ebp-0x4C], edx
- ; GC ptr vars +{V04}
- add ebx, edx
- ; byrRegs +[ebx]
- push dword ptr [ebx+0x04]
- push dword ptr [ebx]
+ ;; size=20 bbWeight=32 PerfScore 216.00
+G_M744_IG14: ; bbWeight=16, gcVars=0000000000C00064 {V00 V04 V06 V11 V44}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ ; gcrRegs -[ecx edx]
+ ; GC ptr vars -{V05}
+ push dword ptr [edi+0x04]
+ push dword ptr [edi]
push dword ptr [ebp+0x0C]
push dword ptr [ebp+0x08]
call [<unknown method>]
- ; gcrRegs -[edx]
- ; byrRegs -[ebx]
test eax, eax
je SHORT G_M744_IG22
- shl edi, 2
- add edi, 8
- mov ebx, gword ptr [ebp-0x4C]
- ; gcrRegs +[ebx]
- add edi, ebx
- ; byrRegs +[edi]
push dword ptr [edi+0x04]
push dword ptr [edi]
- mov ecx, gword ptr [ebp-0x54]
+ mov ecx, gword ptr [ebp-0x50]
; gcrRegs +[ecx]
- ; GC ptr vars -{V04 V06}
+ ; GC ptr vars -{V06}
call [System.Runtime.Caching.ExpiresBucket:AddCount(System.DateTime):this]
; gcrRegs -[ecx]
; byrRegs -[edi]
- ;; size=61 bbWeight=16 PerfScore 356.00
-G_M744_IG15: ; bbWeight=16, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x38]
- dec eax
- mov dword ptr [ebp-0x38], eax
- mov edx, ebx
- ; gcrRegs +[edx]
+ ;; size=35 bbWeight=16 PerfScore 292.00
+G_M744_IG15: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ dec ebx
je SHORT G_M744_IG17
- ;; size=11 bbWeight=16 PerfScore 56.00
...
@@ -4,45 +4,44 @@
; ReadyToRun compilation
; optimized code
; ebp based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 12, 7 ) byref -> edi this single-def
-; V01 arg1 [V01,T18] ( 1, 1 ) struct (16) [ebp+0x08] single-def <System.Decimal>
+; V00 this [V00,T00] ( 12, 7 ) byref -> edi this single-def
+; V01 arg1 [V01,T17] ( 1, 1 ) struct (16) [ebp+0x08] single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T00] ( 10, 16 ) int -> [ebp-0x24] ptr
+; V03 loc1 [V03,T02] ( 9, 4.75) int -> [ebp-0x24] ptr
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[int]>
; V05 tmp0 [V05 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
-; V06 tmp1 [V06 ] ( 4, 8 ) struct ( 8) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
+; V06 tmp1 [V06 ] ( 4, 8 ) struct ( 8) [ebp-0x2C] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
; V07 tmp2 [V07 ] ( 2, 4 ) struct (16) [ebp-0x3C] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.Decimal>
-; V08 tmp3 [V08,T08] ( 3, 3 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V09 tmp4 [V09,T11] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
+; V08 tmp3 [V08,T07] ( 3, 3 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V09 tmp4 [V09,T10] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
;* V10 tmp5 [V10 ] ( 0, 0 ) byref -> zero-ref
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V12 tmp7 [V12,T16] ( 2, 1 ) int -> eax
-; V13 tmp8 [V13,T09] ( 3, 3 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V14 tmp9 [V14,T12] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
-; V15 tmp10 [V15,T10] ( 3, 3 ) ref -> edx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V16 tmp11 [V16,T13] ( 2, 2 ) int -> ecx "Strict ordering of exceptions for Array store"
-; V17 tmp12 [V17,T14] ( 2, 2 ) int -> eax "impAppendStmt"
+; V12 tmp7 [V12,T15] ( 2, 1 ) int -> eax
+; V13 tmp8 [V13,T08] ( 3, 3 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V14 tmp9 [V14,T11] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
+; V15 tmp10 [V15,T09] ( 3, 3 ) ref -> edx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V16 tmp11 [V16,T12] ( 2, 2 ) int -> ecx "Strict ordering of exceptions for Array store"
+; V17 tmp12 [V17,T13] ( 2, 2 ) int -> eax "impAppendStmt"
;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref ptr
-; V22 tmp17 [V22,T17] ( 2, 1 ) int -> ecx
-; V23 tmp18 [V23,T03] ( 9, 9 ) byref -> ebx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp19 [V24,T04] ( 7, 8 ) int -> esi "field V02._length (fldOffset=0x4)" P-INDEP
+; V22 tmp17 [V22,T16] ( 2, 1 ) int -> ecx
+; V23 tmp18 [V23,T01] ( 11, 6.50) byref -> ebx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp19 [V24,T06] ( 5, 3.50) int -> esi "field V02._length (fldOffset=0x4)" P-INDEP
;* V25 tmp20 [V25 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x4)" P-INDEP
; V27 tmp22 [V27 ] ( 3, 5 ) byref -> [ebp-0x2C] do-not-enreg[X] addr-exposed ptr "field V06._reference (fldOffset=0x0)" P-DEP
; V28 tmp23 [V28 ] ( 3, 5 ) int -> [ebp-0x28] do-not-enreg[X] addr-exposed ptr "field V06._length (fldOffset=0x4)" P-DEP
-; V29 tmp24 [V29,T05] ( 2, 4 ) int -> [ebp-0x3C] do-not-enreg[H] hidden-struct-arg "field V07._flags (fldOffset=0x0)" P-DEP
-; V30 tmp25 [V30,T06] ( 2, 4 ) int -> [ebp-0x38] do-not-enreg[H] hidden-struct-arg "field V07._hi32 (fldOffset=0x4)" P-DEP
-; V31 tmp26 [V31,T07] ( 2, 4 ) long -> [ebp-0x34] do-not-enreg[H] hidden-struct-arg "field V07._lo64 (fldOffset=0x8)" P-DEP
+; V29 tmp24 [V29,T03] ( 2, 4 ) int -> [ebp-0x3C] do-not-enreg[H] hidden-struct-arg "field V07._flags (fldOffset=0x0)" P-DEP
+; V30 tmp25 [V30,T04] ( 2, 4 ) int -> [ebp-0x38] do-not-enreg[H] hidden-struct-arg "field V07._hi32 (fldOffset=0x4)" P-DEP
+; V31 tmp26 [V31,T05] ( 2, 4 ) long -> [ebp-0x34] do-not-enreg[H] hidden-struct-arg "field V07._lo64 (fldOffset=0x8)" P-DEP
; V32 GsCookie [V32 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V33 cse0 [V33,T15] ( 3, 1.50) int -> ecx "CSE - moderate"
-; V34 cse1 [V34,T01] ( 3, 10 ) int -> edx "CSE - aggressive"
+; V33 cse0 [V33,T14] ( 3, 1.50) int -> ecx "CSE - moderate"
;
; Lcl frame size = 48
@@ -53,13 +52,11 @@ G_M46478_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push esi
push ebx
sub esp, 48
- xor eax, eax
- mov dword ptr [ebp-0x2C], eax
mov eax, dword ptr [(reloc)]
mov dword ptr [ebp-0x10], eax
mov edi, ecx
; byrRegs +[edi]
- ;; size=24 bbWeight=1 PerfScore 9.00
+ ;; size=19 bbWeight=1 PerfScore 7.75
G_M46478_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
xor ecx, ecx
mov dword ptr [ebp-0x2C], ecx
@@ -81,29 +78,47 @@ G_M46478_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {e
movups xmmword ptr [esp], xmm0
push esi
push ebx
- ; byr arg push 5
call [<unknown method>]
- ; gcr arg pop 1
mov eax, 3
jmp SHORT G_M46478_IG04
;; size=74 bbWeight=1 PerfScore 30.50
-G_M46478_IG03: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
- mov eax, edx
- test eax, eax
- jle SHORT G_M46478_IG05
- ;; size=6 bbWeight=2 PerfScore 3.00
-G_M46478_IG04: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
- lea edx, [eax-0x01]
- cmp edx, esi
- jae G_M46478_IG14
- cmp dword ptr [ebx+4*eax-0x04], 0
+G_M46478_IG03: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ mov eax, 2
+ jmp SHORT G_M46478_IG07
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp esi, 2
+ jbe G_M46478_IG20
+ cmp dword ptr [ebx+0x08], 0
je SHORT G_M46478_IG03
- ;; size=18 bbWeight=4 PerfScore 23.00
-G_M46478_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ ;; size=15 bbWeight=0.50 PerfScore 2.62
+G_M46478_IG05: ; bbWeight=0.12, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ jmp SHORT G_M46478_IG11
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG06: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ mov eax, 1
+ jmp SHORT G_M46478_IG10
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp dword ptr [ebx+0x04], 0
+ je SHORT G_M46478_IG06
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG08: ; bbWeight=0.12, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ jmp SHORT G_M46478_IG11
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG09: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ xor eax, eax
+ jmp SHORT G_M46478_IG11
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp dword ptr [ebx], 0
+ je SHORT G_M46478_IG09
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
test eax, eax
- jne SHORT G_M46478_IG08
+ jne SHORT G_M46478_IG14
;; size=4 bbWeight=1 PerfScore 1.25
-G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
; byrRegs -[ebx]
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
; byrRegs +[eax]
@@ -118,11 +133,11 @@ G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080
mov ecx, (reloc)
mov ecx, dword ptr [ecx]
cmp dword ptr [ebp-0x10], ecx
- je SHORT G_M46478_IG07
+ je SHORT G_M46478_IG13
call [CORINFO_HELP_FAIL_FAST]
; byrRegs -[esi edi]
;; size=37 bbWeight=0.50 PerfScore 8.75
-G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M46478_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -130,17 +145,17 @@ G_M46478_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop ebp
ret 16
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M46478_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
+G_M46478_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
; byrRegs +[ebx edi]
cmp eax, 1
- jne SHORT G_M46478_IG10
+ jne SHORT G_M46478_IG16
mov ecx, dword ptr [ebx]
test ecx, ecx
- jle SHORT G_M46478_IG10
+ jle SHORT G_M46478_IG16
mov dword ptr [edi+0x04], ecx
mov eax, dword ptr [edi+0x04]
cmp esi, 3
- jbe G_M46478_IG14
+ jbe G_M46478_IG20
mov ecx, -1
mov edx, 1
test dword ptr [ebx+0x0C], 0xD1FFAB1E
@@ -154,11 +169,11 @@ G_M46478_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; gcrRegs -[ecx]
mov ecx, dword ptr [ecx]
cmp dword ptr [ebp-0x10], ecx
- je SHORT G_M46478_IG09
+ je SHORT G_M46478_IG15
call [CORINFO_HELP_FAIL_FAST]
; byrRegs -[ebx edi]
;; size=74 bbWeight=0.50 PerfScore 12.50
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -166,7 +181,7 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop ebp
ret 16
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M46478_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
+G_M46478_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
; byrRegs +[ebx edi]
mov dword ptr [ebp-0x24], eax
mov ecx, eax
@@ -181,38 +196,34 @@ G_M46478_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; gcrRegs +[eax]
mov edx, dword ptr [ebx]
cmp dword ptr [eax+0x04], 0
- jbe SHORT G_M46478_IG14
+ jbe SHORT G_M46478_IG20
mov dword ptr [eax+0x08], edx
mov eax, dword ptr [ebp-0x24]
; gcrRegs -[eax]
cmp eax, 1
- jle SHORT G_M46478_IG11
+ jle SHORT G_M46478_IG17
mov edx, gword ptr [edi]
; gcrRegs +[edx]
- cmp esi, 1
- jbe SHORT G_M46478_IG14
mov ecx, dword ptr [ebx+0x04]
cmp dword ptr [edx+0x04], 1
- jbe SHORT G_M46478_IG14
+ jbe SHORT G_M46478_IG20
mov dword ptr [edx+0x0C], ecx
- ;; size=59 bbWeight=0.50 PerfScore 14.50
-G_M46478_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ ;; size=54 bbWeight=0.50 PerfScore 13.88
+G_M46478_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
; gcrRegs -[edx]
cmp eax, 2
- jle SHORT G_M46478_IG12
+ jle SHORT G_M46478_IG18
mov eax, gword ptr [edi]
; gcrRegs +[eax]
- cmp esi, 2
- jbe SHORT G_M46478_IG14
mov edx, dword ptr [ebx+0x08]
cmp dword ptr [eax+0x04], 2
- jbe SHORT G_M46478_IG14
+ jbe SHORT G_M46478_IG20
mov dword ptr [eax+0x10], edx
- ;; size=24 bbWeight=0.50 PerfScore 5.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ ;; size=19 bbWeight=0.50 PerfScore 5.12
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
; gcrRegs -[eax]
cmp esi, 3
- jbe SHORT G_M46478_IG14
+ jbe SHORT G_M46478_IG20
...
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 5, 4.50) ref -> [ebp-0x14] class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> edi
+; V00 arg0 [V00,T09] ( 5, 4.50) ref -> esi class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> edi
; V02 loc1 [V02,T03] ( 14, 25.50) int -> [ebp-0x10]
-; V03 loc2 [V03,T06] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <System.String>
-; V04 loc3 [V04,T09] ( 7, 6.50) int -> ecx
-; V05 loc4 [V05,T04] ( 14, 18.54) int -> eax
+; V03 loc2 [V03,T06] ( 9, 16 ) ref -> [ebp-0x14] class-hnd <System.String>
+; V04 loc3 [V04,T10] ( 4, 6.50) int -> ecx
+; V05 loc4 [V05,T04] ( 8, 21.50) int -> eax
; V06 tmp0 [V06,T07] ( 2, 8 ) ubyte -> eax "Inline return value spill temp"
; V07 tmp1 [V07,T00] ( 4, 32 ) ushort -> ecx "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -56,9 +56,9 @@
;* V45 tmp39 [V45 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
;* V46 tmp40 [V46 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp41 [V47 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V48 cse0 [V48,T05] ( 9, 16.04) int -> ebx "CSE - moderate"
+; V48 cse0 [V48,T05] ( 8, 19.50) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M41923_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -66,7 +66,7 @@ G_M41923_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -75,26 +75,24 @@ G_M41923_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [esi+0x04]
lea eax, [ebx-0x01]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x14], esi
- ; GC ptr vars +{V00}
mov edx, esi
; gcrRegs +[edx]
jmp SHORT G_M41923_IG04
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M41923_IG03: ; bbWeight=2, gcVars=00000440 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx esi]
+ ;; size=15 bbWeight=1 PerfScore 6.00
+G_M41923_IG03: ; bbWeight=2, gcVars=00000040 {V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx]
; GC ptr vars +{V03 V06}
inc edi
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=4 bbWeight=2 PerfScore 2.50
-G_M41923_IG04: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M41923_IG04: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03 V06}
cmp ebx, edi
jle SHORT G_M41923_IG10
;; size=4 bbWeight=8 PerfScore 10.00
-G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
+G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*edi+0x08]
cmp ecx, 256
@@ -104,38 +102,38 @@ G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
test eax, eax
jne SHORT G_M41923_IG03
;; size=26 bbWeight=4 PerfScore 34.00
-G_M41923_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M41923_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M41923_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M41923_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M41923_IG03
;; size=9 bbWeight=4 PerfScore 16.00
-G_M41923_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M41923_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M41923_IG09: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41923_IG09: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
dec eax
mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=7 bbWeight=2 PerfScore 4.50
-G_M41923_IG10: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M41923_IG10: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov eax, dword ptr [ebp-0x10]
test eax, eax
jl SHORT G_M41923_IG15
;; size=7 bbWeight=8 PerfScore 18.00
-G_M41923_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+G_M41923_IG11: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp eax, ebx
- jae G_M41923_IG30
- mov gword ptr [ebp-0x18], edx
+ jae G_M41923_IG26
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*eax+0x08]
cmp ecx, 256
@@ -147,121 +145,96 @@ G_M41923_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
mov eax, dword ptr [ebp-0x10]
jne SHORT G_M41923_IG09
;; size=40 bbWeight=4 PerfScore 47.00
-G_M41923_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M41923_IG15
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M41923_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M41923_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M41923_IG09
;; size=9 bbWeight=4 PerfScore 16.00
-G_M41923_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=3 bbWeight=2 PerfScore 2.00
-G_M41923_IG15: ; bbWeight=1, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M41923_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov dword ptr [ebp-0x10], eax
cmp edi, eax
- jge G_M41923_IG28
- ;; size=11 bbWeight=1 PerfScore 2.25
-G_M41923_IG16: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jge SHORT G_M41923_IG24
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M41923_IG16: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae G_M41923_IG30
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*edi+0x08], 91
jne SHORT G_M41923_IG17
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae G_M41923_IG30
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*eax+0x08], 93
jne SHORT G_M41923_IG22
inc edi
dec eax
mov dword ptr [ebp-0x10], eax
- ;; size=40 bbWeight=0.50 PerfScore 6.50
-G_M41923_IG17: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=32 bbWeight=0.50 PerfScore 6.50
+G_M41923_IG17: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae SHORT G_M41923_IG30
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*eax+0x08], 93
- je SHORT G_M41923_IG28
+ je SHORT G_M41923_IG24
xor ecx, ecx
cmp eax, edi
- jl SHORT G_M41923_IG28
- mov esi, eax
- or esi, edi
- jl SHORT G_M41923_IG23
- cmp ebx, eax
- jle SHORT G_M41923_IG23
- ;; size=31 bbWeight=0.50 PerfScore 5.25
-G_M41923_IG18: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M41923_IG24
+ ;; size=21 bbWeight=0.50 PerfScore 3.88
+G_M41923_IG18: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, ebx
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*eax+0x08], 44
jne SHORT G_M41923_IG20
- ;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M41923_IG19: ; bbWeight=1.98, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=12 bbWeight=4 PerfScore 21.00
+G_M41923_IG19: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp ecx, 4
- je SHORT G_M41923_IG27
- ;; size=6 bbWeight=1.98 PerfScore 2.97
-G_M41923_IG20: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M41923_IG23
+ ;; size=6 bbWeight=2 PerfScore 3.00
+G_M41923_IG20: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
dec eax
cmp eax, edi
jge SHORT G_M41923_IG18
- ;; size=5 bbWeight=3.96 PerfScore 5.94
-G_M41923_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M41923_IG28
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M41923_IG21: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ jmp SHORT G_M41923_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M41923_IG22: ; bbWeight=0.25, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00}
+G_M41923_IG22: ; bbWeight=0.25, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi]
mov dword ptr [ebp-0x10], eax
jmp SHORT G_M41923_IG17
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M41923_IG23: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- cmp eax, ebx
- jae SHORT G_M41923_IG30
- cmp word ptr [edx+2*eax+0x08], 44
- jne SHORT G_M41923_IG25
- ;; size=12 bbWeight=0.04 PerfScore 0.21
-G_M41923_IG24: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- cmp ecx, 4
- je SHORT G_M41923_IG27
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M41923_IG25: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- dec eax
- cmp eax, edi
- jge SHORT G_M41923_IG23
- ;; size=5 bbWeight=0.04 PerfScore 0.06
-G_M41923_IG26: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M41923_IG28
- ;; size=2 bbWeight=0.50 PerfScore 1.00
...
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 5, 4.50) ref -> [ebp-0x14] class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> edi
+; V00 arg0 [V00,T09] ( 5, 4.50) ref -> esi class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> edi
; V02 loc1 [V02,T03] ( 14, 25.50) int -> [ebp-0x10]
-; V03 loc2 [V03,T06] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <System.String>
-; V04 loc3 [V04,T09] ( 7, 6.50) int -> ecx
-; V05 loc4 [V05,T04] ( 14, 18.54) int -> eax
+; V03 loc2 [V03,T06] ( 9, 16 ) ref -> [ebp-0x14] class-hnd <System.String>
+; V04 loc3 [V04,T10] ( 4, 6.50) int -> ecx
+; V05 loc4 [V05,T04] ( 8, 21.50) int -> eax
; V06 tmp0 [V06,T07] ( 2, 8 ) ubyte -> eax "Inline return value spill temp"
; V07 tmp1 [V07,T00] ( 4, 32 ) ushort -> ecx "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -56,9 +56,9 @@
;* V45 tmp39 [V45 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
;* V46 tmp40 [V46 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp41 [V47 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V48 cse0 [V48,T05] ( 9, 16.04) int -> ebx "CSE - moderate"
+; V48 cse0 [V48,T05] ( 8, 19.50) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M5940_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -66,7 +66,7 @@ G_M5940_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -75,26 +75,24 @@ G_M5940_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [esi+0x04]
lea eax, [ebx-0x01]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x14], esi
- ; GC ptr vars +{V00}
mov edx, esi
; gcrRegs +[edx]
jmp SHORT G_M5940_IG04
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M5940_IG03: ; bbWeight=2, gcVars=00000440 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx esi]
+ ;; size=15 bbWeight=1 PerfScore 6.00
+G_M5940_IG03: ; bbWeight=2, gcVars=00000040 {V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx]
; GC ptr vars +{V03 V06}
inc edi
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=4 bbWeight=2 PerfScore 2.50
-G_M5940_IG04: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M5940_IG04: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03 V06}
cmp ebx, edi
jle SHORT G_M5940_IG10
;; size=4 bbWeight=8 PerfScore 10.00
-G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
+G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*edi+0x08]
cmp ecx, 256
@@ -104,38 +102,38 @@ G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
test eax, eax
jne SHORT G_M5940_IG03
;; size=26 bbWeight=4 PerfScore 34.00
-G_M5940_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M5940_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M5940_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M5940_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M5940_IG03
;; size=9 bbWeight=4 PerfScore 16.00
-G_M5940_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M5940_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M5940_IG09: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M5940_IG09: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
dec eax
mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=7 bbWeight=2 PerfScore 4.50
-G_M5940_IG10: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M5940_IG10: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov eax, dword ptr [ebp-0x10]
test eax, eax
jl SHORT G_M5940_IG15
;; size=7 bbWeight=8 PerfScore 18.00
-G_M5940_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+G_M5940_IG11: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp eax, ebx
- jae G_M5940_IG30
- mov gword ptr [ebp-0x18], edx
+ jae G_M5940_IG26
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*eax+0x08]
cmp ecx, 256
@@ -147,121 +145,96 @@ G_M5940_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
mov eax, dword ptr [ebp-0x10]
jne SHORT G_M5940_IG09
;; size=40 bbWeight=4 PerfScore 47.00
-G_M5940_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M5940_IG15
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M5940_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M5940_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M5940_IG09
;; size=9 bbWeight=4 PerfScore 16.00
-G_M5940_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=3 bbWeight=2 PerfScore 2.00
-G_M5940_IG15: ; bbWeight=1, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M5940_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov dword ptr [ebp-0x10], eax
cmp edi, eax
- jge G_M5940_IG28
- ;; size=11 bbWeight=1 PerfScore 2.25
-G_M5940_IG16: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jge SHORT G_M5940_IG24
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M5940_IG16: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae G_M5940_IG30
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*edi+0x08], 91
jne SHORT G_M5940_IG17
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae G_M5940_IG30
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*eax+0x08], 93
jne SHORT G_M5940_IG22
inc edi
dec eax
mov dword ptr [ebp-0x10], eax
- ;; size=40 bbWeight=0.50 PerfScore 6.50
-G_M5940_IG17: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=32 bbWeight=0.50 PerfScore 6.50
+G_M5940_IG17: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae SHORT G_M5940_IG30
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*eax+0x08], 93
- je SHORT G_M5940_IG28
+ je SHORT G_M5940_IG24
xor ecx, ecx
cmp eax, edi
- jl SHORT G_M5940_IG28
- mov esi, eax
- or esi, edi
- jl SHORT G_M5940_IG23
- cmp ebx, eax
- jle SHORT G_M5940_IG23
- ;; size=31 bbWeight=0.50 PerfScore 5.25
-G_M5940_IG18: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M5940_IG24
+ ;; size=21 bbWeight=0.50 PerfScore 3.88
+G_M5940_IG18: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, ebx
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*eax+0x08], 44
jne SHORT G_M5940_IG20
- ;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M5940_IG19: ; bbWeight=1.98, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=12 bbWeight=4 PerfScore 21.00
+G_M5940_IG19: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp ecx, 4
- je SHORT G_M5940_IG27
- ;; size=6 bbWeight=1.98 PerfScore 2.97
-G_M5940_IG20: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M5940_IG23
+ ;; size=6 bbWeight=2 PerfScore 3.00
+G_M5940_IG20: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
dec eax
cmp eax, edi
jge SHORT G_M5940_IG18
- ;; size=5 bbWeight=3.96 PerfScore 5.94
-G_M5940_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M5940_IG28
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M5940_IG21: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ jmp SHORT G_M5940_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M5940_IG22: ; bbWeight=0.25, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00}
+G_M5940_IG22: ; bbWeight=0.25, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi]
mov dword ptr [ebp-0x10], eax
jmp SHORT G_M5940_IG17
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M5940_IG23: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- cmp eax, ebx
- jae SHORT G_M5940_IG30
- cmp word ptr [edx+2*eax+0x08], 44
- jne SHORT G_M5940_IG25
- ;; size=12 bbWeight=0.04 PerfScore 0.21
-G_M5940_IG24: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- cmp ecx, 4
- je SHORT G_M5940_IG27
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M5940_IG25: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- dec eax
- cmp eax, edi
- jge SHORT G_M5940_IG23
- ;; size=5 bbWeight=0.04 PerfScore 0.06
-G_M5940_IG26: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M5940_IG28
- ;; size=2 bbWeight=0.50 PerfScore 1.00
...
@@ -11,69 +11,68 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <ILCompiler.DevirtualizationManager>
; V01 arg1 [V01,T00] ( 21, 26 ) ref -> esi class-hnd <Internal.TypeSystem.MethodDesc>
; V02 arg2 [V02,T22] ( 12, 6 ) ref -> [ebp+0x0C] class-hnd single-def <Internal.TypeSystem.DefType>
-; V03 arg3 [V03,T29] ( 6, 3.50) byref -> [ebp+0x08] single-def
+; V03 arg3 [V03,T28] ( 6, 3.50) byref -> [ebp+0x08] single-def
; V04 loc0 [V04,T23] ( 11, 5.50) ref -> edi class-hnd <Internal.TypeSystem.MethodDesc>
-; V05 loc1 [V05,T17] ( 4, 9 ) ref -> [ebp-0x28] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
+; V05 loc1 [V05,T18] ( 4, 9 ) ref -> [ebp-0x24] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
; V06 loc2 [V06,T21] ( 4, 6.50) int -> [ebp-0x10]
-; V07 loc3 [V07,T20] ( 4, 7 ) ref -> [ebp-0x2C] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V07 loc3 [V07,T16] ( 4, 10.50) ref -> [ebp-0x28] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V08 loc4 [V08,T07] ( 5, 16.50) int -> [ebp-0x14]
-; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [ebp-0x30] class-hnd spill-single-def <Internal.TypeSystem.DefType>
-; V10 loc6 [V10,T25] ( 6, 4.50) ref -> [ebp-0x34] class-hnd <Internal.TypeSystem.MethodDesc>
-; V11 loc7 [V11,T18] ( 4, 9 ) ref -> [ebp-0x38] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
+; V09 loc5 [V09,T04] ( 7, 20 ) ref -> [ebp-0x2C] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V10 loc6 [V10,T25] ( 6, 4.50) ref -> [ebp-0x30] class-hnd <Internal.TypeSystem.MethodDesc>
+; V11 loc7 [V11,T19] ( 4, 9 ) ref -> [ebp-0x34] class-hnd spill-single-def <Internal.TypeSystem.DefType[]>
; V12 loc8 [V12,T08] ( 5, 16.50) int -> [ebp-0x18]
-; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [ebp-0x3C] class-hnd spill-single-def <Internal.TypeSystem.DefType>
+; V13 loc9 [V13,T05] ( 6, 20 ) ref -> [ebp-0x38] class-hnd spill-single-def <Internal.TypeSystem.DefType>
; V14 loc10 [V14 ] ( 4, 2 ) ref -> [ebp-0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Internal.TypeSystem.MethodDesc>
-; V15 loc11 [V15,T44] ( 3, 1.50) int -> eax single-def
-; V16 loc12 [V16,T03] ( 10, 20 ) ref -> [ebp-0x40] class-hnd <Internal.TypeSystem.TypeDesc>
+; V15 loc11 [V15,T43] ( 3, 1.50) int -> eax single-def
+; V16 loc12 [V16,T03] ( 10, 20 ) ref -> [ebp-0x3C] 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 tmp0 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
-; V20 tmp1 [V20,T32] ( 3, 2.25) ref -> eax single-def "CASTCLASS eval op1"
-; V21 tmp2 [V21,T45] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V22 tmp3 [V22,T28] ( 5, 3.75) ref -> registers class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
+; V20 tmp1 [V20,T31] ( 3, 2.25) ref -> eax single-def "CASTCLASS eval op1"
+; V21 tmp2 [V21,T44] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
+; V22 tmp3 [V22,T27] ( 5, 3.75) ref -> registers class-hnd "spilling QMark2" <Internal.TypeSystem.DefType>
; V23 tmp4 [V23,T24] ( 3, 5 ) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V24 tmp5 [V24,T33] ( 3, 2 ) int -> edx "Inline return value spill temp"
-; V25 tmp6 [V25,T31] ( 3, 2.50) int -> edx single-def "Inline stloc first use temp"
-; V26 tmp7 [V26,T40] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V24 tmp5 [V24,T32] ( 3, 2 ) int -> edx "Inline return value spill temp"
+; V25 tmp6 [V25,T30] ( 3, 2.50) int -> edx single-def "Inline stloc first use temp"
+; V26 tmp7 [V26,T39] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
;* V27 tmp8 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
-; V29 tmp10 [V29,T16] ( 5, 10 ) ref -> [ebp-0x44] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
-; V30 tmp11 [V30,T27] ( 2, 4 ) ref -> edx class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
+; V29 tmp10 [V29,T17] ( 5, 10 ) ref -> [ebp-0x40] class-hnd "Inline stloc first use temp" <Internal.TypeSystem.TypeDesc>
+; V30 tmp11 [V30,T26] ( 2, 4 ) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.TypeDesc>
;* V31 tmp12 [V31 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V32 tmp13 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V33 tmp14 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp15 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V35 tmp16 [V35,T41] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
-; V36 tmp17 [V36,T01] ( 3, 24 ) ref -> [ebp-0x48] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V35 tmp16 [V35,T40] ( 3, 1.50) ref -> registers class-hnd "Inline return value spill temp" <Internal.TypeSystem.DefType[]>
+; V36 tmp17 [V36,T01] ( 3, 24 ) ref -> [ebp-0x44] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V37 tmp18 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V38 tmp19 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V39 tmp20 [V39 ] ( 0, 0 ) int -> zero-ref
-; V40 tmp21 [V40,T02] ( 3, 24 ) ref -> [ebp-0x4C] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V40 tmp21 [V40,T02] ( 3, 24 ) ref -> [ebp-0x48] class-hnd spill-single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
;* V41 tmp22 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Internal.TypeSystem.TypeDesc>
;* V42 tmp23 [V42 ] ( 0, 0 ) int -> zero-ref
-; V43 tmp24 [V43,T34] ( 2, 2 ) ref -> eax single-def "Single return block return value"
-; V44 tmp25 [V44,T09] ( 2, 16 ) ref -> [ebp-0x50] spill-single-def "argument with side effect"
+; V43 tmp24 [V43,T33] ( 2, 2 ) ref -> eax single-def "Single return block return value"
+; V44 tmp25 [V44,T09] ( 2, 16 ) ref -> [ebp-0x4C] spill-single-def "argument with side effect"
; V45 tmp26 [V45,T10] ( 2, 16 ) ref -> edx "argument with side effect"
-; V46 tmp27 [V46,T35] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V47 tmp28 [V47,T36] ( 2, 2 ) ref -> [ebp-0x54] spill-single-def "argument with side effect"
-; V48 tmp29 [V48,T37] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V49 tmp30 [V49,T30] ( 3, 3 ) ref -> eax single-def "argument with side effect"
-; V50 tmp31 [V50,T38] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V51 tmp32 [V51,T11] ( 2, 16 ) ref -> [ebp-0x58] spill-single-def "argument with side effect"
+; V46 tmp27 [V46,T34] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V47 tmp28 [V47,T35] ( 2, 2 ) ref -> [ebp-0x50] spill-single-def "argument with side effect"
+; V48 tmp29 [V48,T36] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V49 tmp30 [V49,T29] ( 3, 3 ) ref -> eax single-def "argument with side effect"
+; V50 tmp31 [V50,T37] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V51 tmp32 [V51,T11] ( 2, 16 ) ref -> edi "argument with side effect"
; V52 tmp33 [V52,T12] ( 2, 16 ) ref -> edx "argument with side effect"
;* V53 tmp34 [V53 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V54 tmp35 [V54,T39] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V54 tmp35 [V54,T38] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V55 tmp36 [V55,T13] ( 2, 16 ) ref -> edx "argument with side effect"
-; V56 tmp37 [V56,T14] ( 2, 16 ) ref -> [ebp-0x5C] spill-single-def "argument with side effect"
+; V56 tmp37 [V56,T14] ( 2, 16 ) ref -> [ebp-0x54] spill-single-def "argument with side effect"
; V57 tmp38 [V57,T15] ( 2, 16 ) ref -> edx "argument with side effect"
-; V58 tmp39 [V58,T19] ( 2, 8 ) ref -> edx "argument with side effect"
+; V58 tmp39 [V58,T20] ( 2, 8 ) ref -> edx "argument with side effect"
; V59 cse0 [V59,T06] ( 10, 18 ) int -> [ebp-0x20] spill-single-def "CSE - moderate"
-; V60 cse1 [V60,T26] ( 2, 4.50) int -> [ebp-0x24] spill-single-def hoist "CSE - conservative"
-; V61 cse2 [V61,T42] ( 3, 1.50) ref -> eax "CSE - conservative"
-; V62 cse3 [V62,T43] ( 3, 1.50) ref -> ecx "CSE - conservative"
-; TEMP_01 ref -> [ebp-0x60]
+; V60 cse1 [V60,T41] ( 3, 1.50) ref -> eax "CSE - conservative"
+; V61 cse2 [V61,T42] ( 3, 1.50) ref -> ecx "CSE - conservative"
+; TEMP_01 ref -> [ebp-0x58]
;
-; Lcl frame size = 84
+; Lcl frame size = 76
G_M48343_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -81,10 +80,10 @@ G_M48343_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 84
+ sub esp, 76
xor eax, eax
mov dword ptr [ebp-0x1C], eax
- mov dword ptr [ebp-0x60], eax
+ mov dword ptr [ebp-0x58], eax
mov esi, edx
; gcrRegs +[esi]
mov edi, gword ptr [ebp+0x0C]
@@ -123,7 +122,7 @@ G_M48343_IG04: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe
;; size=15 bbWeight=0.50 PerfScore 1.88
G_M48343_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp edx, 21
- jne G_M48343_IG34
+ jne G_M48343_IG33
;; size=9 bbWeight=1 PerfScore 1.25
G_M48343_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
@@ -175,7 +174,7 @@ G_M48343_IG09: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M48343_IG10: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
- mov gword ptr [ebp-0x28], eax
+ mov gword ptr [ebp-0x24], eax
; GC ptr vars +{V05}
xor edx, edx
mov dword ptr [ebp-0x10], edx
@@ -213,110 +212,106 @@ G_M48343_IG13: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=0
; gcrRegs -[eax]
mov eax, edx
; gcrRegs +[eax]
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x28], eax
; GC ptr vars +{V07}
xor edx, edx
; gcrRegs -[edx]
- mov ecx, gword ptr [ebp-0x28]
+ mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
cmp dword ptr [ecx+0x04], 0
jle G_M48343_IG18
- mov ecx, dword ptr [eax]
- ; gcrRegs -[ecx]
- mov ecx, dword ptr [ecx+0x34]
- mov dword ptr [ebp-0x24], ecx
- ;; size=28 bbWeight=0.50 PerfScore 5.75
-G_M48343_IG14: ; bbWeight=4, gcVars=0000000000120000 {V05 V07}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov ecx, gword ptr [ebp-0x28]
- ; gcrRegs +[ecx]
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
+G_M48343_IG14: ; bbWeight=4, gcVars=0000000000050000 {V05 V07}, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov dword ptr [ebp-0x14], edx
mov ecx, gword ptr [ecx+4*edx+0x08]
- mov gword ptr [ebp-0x30], ecx
+ mov gword ptr [ebp-0x2C], ecx
; GC ptr vars +{V09}
mov ecx, eax
- mov edi, dword ptr [ebp-0x24]
+ mov edi, dword ptr [eax]
+ mov edi, dword ptr [edi+0x34]
call [edi+0x10]<unknown method>
; gcrRegs -[ecx]
- mov gword ptr [ebp-0x58], eax
- ; GC ptr vars +{V51}
- mov ecx, gword ptr [ebp-0x30]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx]
- mov edx, dword ptr [ecx]
- mov edx, dword ptr [edx+0x34]
- call [edx+0x10]<unknown method>
- ; gcrRegs -[ecx]
+ mov eax, dword ptr [ecx]
+ ; gcrRegs -[eax]
+ mov eax, dword ptr [eax+0x34]
+ call [eax+0x10]<unknown method>
+ ; gcrRegs -[ecx] +[eax]
mov edx, eax
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x58]
+ mov ecx, edi
; gcrRegs +[ecx]
- ; GC ptr vars -{V51}
call [Internal.TypeSystem.TypeDesc:op_Equality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[eax ecx edx edi]
test eax, eax
je SHORT G_M48343_IG17
- ;; size=50 bbWeight=4 PerfScore 95.00
+ ;; size=47 bbWeight=4 PerfScore 97.00
G_M48343_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [ebp-0x30]
+ mov edi, gword ptr [ebp-0x2C]
+ ; gcrRegs +[edi]
+ mov eax, gword ptr [edi+0x04]
; gcrRegs +[eax]
- mov edx, gword ptr [eax+0x04]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x44], edx
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V29}
mov ecx, 1
call [<unknown method>]
- ; gcrRegs -[eax edx]
- mov eax, gword ptr [ebp-0x44]
+ ; gcrRegs -[eax]
+ mov eax, gword ptr [ebp-0x40]
; gcrRegs +[eax]
test eax, eax
jne SHORT G_M48343_IG16
- mov ecx, gword ptr [ebp-0x30]
+ mov ecx, edi
; gcrRegs +[ecx]
xor edx, edx
- mov eax, dword ptr [ecx]
+ mov eax, dword ptr [edi]
; gcrRegs -[eax]
mov eax, dword ptr [eax+0x2C]
; GC ptr vars -{V29}
call [eax+0x14]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x44], eax
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V29}
push eax
- mov ecx, gword ptr [ebp-0x30]
+ mov ecx, edi
; gcrRegs +[ecx]
xor edx, edx
; GC ptr vars -{V09}
call [Internal.TypeSystem.TypeDesc:SetCachedCanonValue(int,Internal.TypeSystem.TypeDesc):this]
- ; gcrRegs -[eax ecx]
- mov eax, gword ptr [ebp-0x44]
+ ; gcrRegs -[eax ecx edi]
+ mov eax, gword ptr [ebp-0x40]
; gcrRegs +[eax]
- ;; size=58 bbWeight=2 PerfScore 50.00
-G_M48343_IG16: ; bbWeight=2, gcVars=0000000000120000 {V05 V07}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=56 bbWeight=2 PerfScore 47.00
+G_M48343_IG16: ; bbWeight=2, gcVars=0000000000050000 {V05 V07}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
...
@@ -12,14 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T28] ( 8, 7 ) ubyte -> [ebp-0x24] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 4) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 12,132 ) ref -> [ebp-0x6C] class-hnd <<unknown class>>
+; V04 loc1 [V04,T06] ( 8, 68 ) ref -> [ebp-0x6C] class-hnd <<unknown class>>
; V05 loc2 [V05,T27] ( 3, 12 ) int -> edx
-; 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,T15] ( 5, 35 ) int -> [ebp-0x28] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T37] ( 2, 5 ) ref -> edi class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 4) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T06] ( 16, 74 ) ref -> [ebp-0x70] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T05] ( 16, 74 ) ref -> [ebp-0x70] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 6, 6 ) ubyte -> [ebp-0x2C] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T25] ( 4, 13 ) int -> [ebp-0x30]
;* V14 loc11 [V14,T48] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
@@ -58,7 +58,7 @@
; V47 tmp27 [V47,T30] ( 6, 6 ) ref -> esi class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V48 tmp28 [V48,T29] ( 8, 8 ) long -> [ebp+0x08] do-not-enreg[F] single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V49 tmp29 [V49,T16] ( 5, 35 ) int -> [ebp-0x40] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V50 tmp30 [V50,T05] ( 15, 83 ) int -> edx "field V09._ref (fldOffset=0x0)" P-INDEP
+; V50 tmp30 [V50,T04] ( 15, 83 ) int -> edx "field V09._ref (fldOffset=0x0)" P-INDEP
; V51 tmp31 [V51,T20] ( 4, 24 ) int -> registers "field V10._ref (fldOffset=0x0)" P-INDEP
; V52 tmp32 [V52,T17] ( 2, 32 ) int -> ecx "field V20._ref (fldOffset=0x0)" P-INDEP
;* V53 tmp33 [V53 ] ( 0, 0 ) long -> zero-ref single-def "field V25._dateData (fldOffset=0x0)" P-INDEP
@@ -76,17 +76,17 @@
; V65 tmp45 [V65,T11] ( 3, 48 ) ref -> ecx "arr expr"
; V66 EHSlots [V66 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
;* V67 cse0 [V67,T49] ( 0, 0 ) int -> zero-ref "CSE - conservative"
-; V68 cse1 [V68,T24] ( 4, 16 ) byref -> edx "CSE - conservative"
-;* V69 cse2 [V69 ] ( 0, 0 ) long -> zero-ref "CSE - conservative"
-; V70 cse3 [V70,T02] ( 6,128 ) int -> ebx "CSE - aggressive"
+; V68 cse1 [V68,T01] ( 6,128 ) byref -> ebx "CSE - aggressive"
+; V69 cse2 [V69,T24] ( 4, 16 ) byref -> edx "CSE - conservative"
+;* V70 cse3 [V70 ] ( 0, 0 ) long -> zero-ref "CSE - conservative"
; V71 cse4 [V71,T44] ( 3, 3 ) ref -> edx "CSE - conservative"
; V72 cse5 [V72,T45] ( 3, 3 ) ref -> ecx "CSE - conservative"
; V73 cse6 [V73,T13] ( 4, 44 ) int -> [ebp-0x5C] spill-single-def "CSE - moderate"
-; V74 rat0 [V74,T22] ( 4, 19 ) int -> [ebp-0x60] "field V69.lo (fldOffset=0x0)" P-INDEP
-; V75 rat1 [V75,T23] ( 4, 19 ) int -> [ebp-0x64] "field V69.hi (fldOffset=0x4)" P-INDEP
+; V74 rat0 [V74,T22] ( 4, 19 ) int -> [ebp-0x60] "field V70.lo (fldOffset=0x0)" P-INDEP
+; V75 rat1 [V75,T23] ( 4, 19 ) int -> [ebp-0x64] "field V70.hi (fldOffset=0x4)" P-INDEP
; V76 rat2 [V76,T35] ( 3, 6 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
; V77 rat3 [V77,T36] ( 3, 6 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V78 rat4 [V78,T04] ( 3, 96 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
+; V78 rat4 [V78,T03] ( 3, 96 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 104
@@ -199,7 +199,7 @@ G_M744_IG10: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {
xor eax, eax
mov dword ptr [ebp-0x2C], eax
;; size=10 bbWeight=1 PerfScore 2.50
-G_M744_IG11: ; bbWeight=1, gcVars=0000000000080040 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M744_IG11: ; bbWeight=1, gcVars=0000000000080020 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ecx]
cmp byte ptr [ebp-0x2C], 0
je SHORT G_M744_IG14
@@ -213,9 +213,9 @@ G_M744_IG12: ; bbWeight=0, gcVars=0000000000080000 {V00}, gcrefRegs=00000
G_M744_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M744_IG14: ; bbWeight=1, gcVars=0000000000080040 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M744_IG14: ; bbWeight=1, gcVars=0000000000080020 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx]
- ; GC ptr vars +{V06 V11}
+ ; GC ptr vars +{V05 V11}
lea edx, [ebp-0x2C]
mov ecx, ebx
; gcrRegs +[ecx]
@@ -273,15 +273,15 @@ G_M744_IG17: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {
;; size=4 bbWeight=1 PerfScore 1.25
G_M744_IG18: ; bbWeight=1, gcVars=0000000000080000 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx]
- ; GC ptr vars -{V06 V11}
+ ; GC ptr vars -{V05 V11}
mov dword ptr [ebp-0x1C], 0
mov dword ptr [ebp-0x18], 252
push G_M744_IG36
jmp G_M744_IG37
;; size=24 bbWeight=1 PerfScore 5.00
-G_M744_IG19: ; bbWeight=1, gcVars=0000000000080040 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M744_IG19: ; bbWeight=1, gcVars=0000000000080020 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ebx]
- ; GC ptr vars +{V06 V11}
+ ; GC ptr vars +{V05 V11}
mov esi, dword ptr [ebp-0x60]
mov edi, dword ptr [ebp-0x64]
push dword ptr [ebp+0x0C]
@@ -327,15 +327,21 @@ G_M744_IG21: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {
cmp ecx, 1
jle G_M744_IG27
;; size=45 bbWeight=4 PerfScore 45.00
-G_M744_IG22: ; bbWeight=32, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+G_M744_IG22: ; bbWeight=32, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
lea ebx, [esi+2*esi]
- mov ecx, gword ptr [eax+4*ebx+0x10]
+ mov gword ptr [ebp-0x6C], eax
+ ; GC ptr vars +{V04}
+ lea ebx, bword ptr [eax+4*ebx+0x08]
+ ; byrRegs +[ebx]
+ mov ecx, gword ptr [ebx+0x08]
; gcrRegs +[ecx]
test ecx, ecx
- je G_M744_IG26
- ;; size=15 bbWeight=32 PerfScore 120.00
-G_M744_IG23: ; bbWeight=16, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
- lea edi, bword ptr [eax+4*ebx+0x08]
+ je SHORT G_M744_IG26
+ ;; size=17 bbWeight=32 PerfScore 184.00
+G_M744_IG23: ; bbWeight=16, gcVars=0000000000080060 {V00 V04 V11}, gcrefRegs=00000002 {ecx}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ ; GC ptr vars -{V05}
+ mov edi, ebx
; byrRegs +[edi]
mov edx, dword ptr [edi]
mov edi, dword ptr [edi+0x04]
@@ -349,35 +355,29 @@ G_M744_IG23: ; bbWeight=16, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000
mov edi, dword ptr [ebp-0x64]
sbb edi, edx
jge SHORT G_M744_IG24
- shl ebx, 2
- add ebx, 8
- mov gword ptr [ebp-0x6C], eax
- ; GC ptr vars +{V04}
- add ebx, eax
- ; byrRegs +[ebx]
push dword ptr [ebx+0x04]
push dword ptr [ebx]
mov ecx, gword ptr [ebp-0x70]
- ; GC ptr vars -{V06}
call [System.Runtime.Caching.ExpiresBucket:AddCount(System.DateTime):this]
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
; byrRegs -[ebx]
jmp SHORT G_M744_IG25
- ;; size=64 bbWeight=16 PerfScore 412.00
-G_M744_IG24: ; bbWeight=16, gcVars=0000000000080040 {V00 V11}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[eax ecx]
- ; GC ptr vars -{V04}
+ ;; size=51 bbWeight=16 PerfScore 368.00
+G_M744_IG24: ; bbWeight=16, gcrefRegs=00000002 {ecx}, byrefRegs=00000008 {ebx}, byref
+ ; gcrRegs +[ecx]
+ ; byrRegs +[ebx]
mov byte ptr [ecx+0x1C], 255
mov edx, dword ptr [D1FFAB1EH] ; static handle
mov dword ptr [ecx+0x3C], edx
- mov dword ptr [eax+4*ebx+0x0C], 1
+ mov dword ptr [ebx+0x04], 1
mov ecx, dword ptr [ebp-0x40]
; gcrRegs -[ecx]
- mov dword ptr [eax+4*ebx+0x08], ecx
+ mov dword ptr [ebx], ecx
mov edi, dword ptr [ebp-0x34]
mov ecx, edi
shl ecx, 8
mov ebx, esi
+ ; byrRegs -[ebx]
movzx edx, bl
or ecx, edx
mov dword ptr [ebp-0x40], ecx
@@ -387,28 +387,26 @@ G_M744_IG24: ; bbWeight=16, gcVars=0000000000080040 {V00 V11}, gcrefRegs=
mov ebx, gword ptr [ebp-0x70]
; gcrRegs +[ebx]
inc dword ptr [ebx+0x18]
- mov gword ptr [ebp-0x6C], eax
- ; GC ptr vars +{V04}
mov dword ptr [ebp-0x34], edi
- ;; size=65 bbWeight=16 PerfScore 300.00
-G_M744_IG25: ; bbWeight=16, gcVars=0000000000080042 {V00 V04 V11}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax ebx]
+ ;; size=59 bbWeight=16 PerfScore 284.00
+G_M744_IG25: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
mov ecx, dword ptr [ebp-0x38]
dec ecx
mov dword ptr [ebp-0x38], ecx
- mov eax, gword ptr [ebp-0x6C]
- ; gcrRegs +[eax]
je SHORT G_M744_IG27
- ;; size=12 bbWeight=16 PerfScore 68.00
-G_M744_IG26: ; bbWeight=32, gcVars=0000000000080040 {V00 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V04}
+ ;; size=9 bbWeight=16 PerfScore 52.00
+G_M744_IG26: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
inc esi
mov ecx, dword ptr [ebp-0x5C]
cmp ecx, esi
+ mov eax, gword ptr [ebp-0x6C]
+ ; gcrRegs +[eax]
jg G_M744_IG22
- ;; size=12 bbWeight=32 PerfScore 80.00
-G_M744_IG27: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=15 bbWeight=32 PerfScore 112.00
+G_M744_IG27: ; bbWeight=4, gcVars=0000000000080020 {V00 V11}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
+ ; GC ptr vars -{V04}
mov esi, dword ptr [ebp-0x30]
dec esi
mov dword ptr [ebp-0x30], esi
@@ -776,7 +774,7 @@ G_M744_IG67: ; bbWeight=0, gcVars=0000000000080000 {V00}, gcrefRegs=00000
jmp G_M744_IG08
;; size=23 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1324, prolog size 35, PerfScore 1855.33, instruction count 412, allocated bytes for code 1324 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1307, prolog size 35, PerfScore 1875.33, instruction count 409, allocated bytes for code 1307 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
*************** EH table for System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this
@@ -3,47 +3,47 @@
; FullOpts code
; optimized code
; ebp 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 -> edi this single-def
-; V01 arg1 [V01,T19] ( 1, 1 ) struct (16) [ebp+0x08] single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> edi this single-def
+; V01 arg1 [V01,T18] ( 1, 1 ) struct (16) [ebp+0x08] single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T00] ( 10, 16 ) int -> esi
+; V03 loc1 [V03,T02] ( 9, 4.75) int -> esi
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[int]>
; V05 tmp0 [V05 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V08 tmp3 [V08,T04] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V09 tmp4 [V09,T10] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
+; V08 tmp3 [V08,T03] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V09 tmp4 [V09,T09] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
;* V10 tmp5 [V10 ] ( 0, 0 ) byref -> zero-ref
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V12 tmp7 [V12,T17] ( 2, 1 ) int -> ecx
-; V13 tmp8 [V13,T05] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V14 tmp9 [V14,T11] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
-; V15 tmp10 [V15,T06] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V16 tmp11 [V16,T12] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> edx "impAppendStmt"
+; V12 tmp7 [V12,T16] ( 2, 1 ) int -> ecx
+; V13 tmp8 [V13,T04] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V14 tmp9 [V14,T10] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
+; V15 tmp10 [V15,T05] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V16 tmp11 [V16,T11] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> edx "impAppendStmt"
;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref ptr
-; V22 tmp17 [V22,T18] ( 2, 1 ) int -> ecx
+; V22 tmp17 [V22,T17] ( 2, 1 ) int -> ecx
; V23 tmp18 [V23 ] ( 7, 13 ) struct (16) [ebp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V24 tmp19 [V24,T08] ( 3, 2.50) int -> edx "Inline stloc first use temp"
+; V24 tmp19 [V24,T07] ( 3, 2.50) int -> edx "Inline stloc first use temp"
;* V25 tmp20 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V27 tmp22 [V27 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V30 tmp25 [V30,T01] ( 12, 12 ) byref -> ebx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp26 [V31,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" P-INDEP
+; V30 tmp25 [V30,T00] ( 14, 9.50) byref -> ebx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V31 tmp26 [V31,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" P-INDEP
;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x4)" P-INDEP
-; V34 tmp29 [V34,T09] ( 2, 2 ) byref -> ebx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V35 tmp30 [V35,T21] ( 0, 0 ) int -> zero-ref ptr "field V06._length (fldOffset=0x4)" P-INDEP
+; V34 tmp29 [V34,T08] ( 2, 2 ) byref -> ebx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V35 tmp30 [V35,T20] ( 0, 0 ) int -> zero-ref ptr "field V06._length (fldOffset=0x4)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "field V07._flags (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V07._hi32 (fldOffset=0x4)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) long -> zero-ref "field V07._lo64 (fldOffset=0x8)" P-INDEP
@@ -52,12 +52,11 @@
; V41 tmp36 [V41 ] ( 4, 5 ) long -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V23._lo64 (fldOffset=0x8)" P-DEP
;* V42 tmp37 [V42 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V25._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref ptr "field V25._length (fldOffset=0x4)" P-INDEP
-; V44 tmp39 [V44,T14] ( 2, 2 ) int -> ecx "field V26._flags (fldOffset=0x0)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> edx "field V26._hi32 (fldOffset=0x4)" P-INDEP
-; V46 tmp41 [V46,T07] ( 3, 3 ) long -> [ebp-0x38] do-not-enreg[F] "field V26._lo64 (fldOffset=0x8)" P-INDEP
+; V44 tmp39 [V44,T13] ( 2, 2 ) int -> ecx "field V26._flags (fldOffset=0x0)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> edx "field V26._hi32 (fldOffset=0x4)" P-INDEP
+; V46 tmp41 [V46,T06] ( 3, 3 ) long -> [ebp-0x38] do-not-enreg[F] "field V26._lo64 (fldOffset=0x8)" P-INDEP
; V47 GsCookie [V47 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V48 cse0 [V48,T16] ( 3, 1.50) int -> edx "CSE - conservative"
-; V49 cse1 [V49,T02] ( 3, 10 ) int -> ecx "CSE - aggressive"
+; V48 cse0 [V48,T15] ( 3, 1.50) int -> edx "CSE - conservative"
;
; Lcl frame size = 44
@@ -104,28 +103,46 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {e
mov esi, 3
jmp SHORT G_M46478_IG06
;; size=42 bbWeight=1 PerfScore 14.25
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
- mov esi, ecx
- test esi, esi
- jle SHORT G_M46478_IG07
- ;; size=6 bbWeight=2 PerfScore 3.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
- lea ecx, [esi-0x01]
- cmp ecx, 4
- jae G_M46478_IG17
- cmp dword ptr [ebx+4*esi-0x04], 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ mov esi, 2
+ jmp SHORT G_M46478_IG09
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp dword ptr [ebx+0x08], 0
je SHORT G_M46478_IG05
- ;; size=19 bbWeight=4 PerfScore 23.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ mov esi, 1
+ jmp SHORT G_M46478_IG12
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp dword ptr [ebx+0x04], 0
+ je SHORT G_M46478_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ xor esi, esi
+ jmp SHORT G_M46478_IG13
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp dword ptr [ebx], 0
+ je SHORT G_M46478_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
test esi, esi
- jne SHORT G_M46478_IG11
+ jne SHORT G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.25
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
; byrRegs -[ebx]
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M46478_IG18
+ je G_M46478_IG24
;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
mov esi, gword ptr [D1FFAB1EH]
; gcrRegs +[esi]
add esi, 4
@@ -134,11 +151,11 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080
call CORINFO_HELP_ASSIGN_BYREF
movsd
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M46478_IG10
+ je SHORT G_M46478_IG16
call CORINFO_HELP_FAIL_FAST
; byrRegs -[esi edi]
;; size=29 bbWeight=0.50 PerfScore 4.12
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -146,13 +163,13 @@ G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop ebp
ret 16
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M46478_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
; byrRegs +[ebx edi]
cmp esi, 1
- jne SHORT G_M46478_IG13
+ jne SHORT G_M46478_IG19
mov edx, dword ptr [ebx]
test edx, edx
- jle SHORT G_M46478_IG13
+ jle SHORT G_M46478_IG19
mov dword ptr [edi+0x04], edx
mov edx, dword ptr [edi+0x04]
mov ecx, -1
@@ -165,12 +182,12 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; gcrRegs +[edx]
mov gword ptr [edi], edx
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M46478_IG12
+ je SHORT G_M46478_IG18
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[edx]
; byrRegs -[ebx edi]
;; size=61 bbWeight=0.50 PerfScore 9.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -178,7 +195,7 @@ G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop ebp
ret 16
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M46478_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
; byrRegs +[ebx edi]
mov edx, esi
mov ecx, 0xD1FFAB1E ; <unknown class>
@@ -193,28 +210,28 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; gcrRegs +[ecx]
mov edx, dword ptr [ebx]
cmp dword ptr [ecx+0x04], 0
- jbe SHORT G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [ecx+0x08], edx
cmp esi, 1
- jle SHORT G_M46478_IG14
+ jle SHORT G_M46478_IG20
mov ecx, gword ptr [edi]
mov edx, dword ptr [ebx+0x04]
cmp dword ptr [ecx+0x04], 1
- jbe SHORT G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [ecx+0x0C], edx
;; size=51 bbWeight=0.50 PerfScore 11.00
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
; gcrRegs -[ecx]
cmp esi, 2
- jle SHORT G_M46478_IG15
+ jle SHORT G_M46478_IG21
mov ecx, gword ptr [edi]
; gcrRegs +[ecx]
mov edx, dword ptr [ebx+0x08]
cmp dword ptr [ecx+0x04], 2
- jbe SHORT G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [ecx+0x10], edx
;; size=19 bbWeight=0.50 PerfScore 5.12
-G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
; gcrRegs -[ecx]
mov ecx, -1
mov edx, 1
@@ -222,11 +239,11 @@ G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088
cmove ecx, edx
mov dword ptr [edi+0x04], ecx
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M46478_IG16
+ je SHORT G_M46478_IG22
call CORINFO_HELP_FAIL_FAST
; byrRegs -[ebx edi]
;; size=37 bbWeight=0.50 PerfScore 4.38
-G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M46478_IG22: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
...
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 5, 4.50) ref -> [ebp-0x14] class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> edi
+; V00 arg0 [V00,T09] ( 5, 4.50) ref -> esi class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> edi
; V02 loc1 [V02,T03] ( 14, 25.50) int -> [ebp-0x10]
-; V03 loc2 [V03,T06] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <System.String>
-; V04 loc3 [V04,T09] ( 7, 6.50) int -> ecx
-; V05 loc4 [V05,T04] ( 14, 18.54) int -> eax
+; V03 loc2 [V03,T06] ( 9, 16 ) ref -> [ebp-0x14] class-hnd <System.String>
+; V04 loc3 [V04,T10] ( 4, 6.50) int -> ecx
+; V05 loc4 [V05,T04] ( 8, 21.50) int -> eax
; V06 tmp0 [V06,T07] ( 2, 8 ) ubyte -> eax "Inline return value spill temp"
; V07 tmp1 [V07,T00] ( 4, 32 ) ushort -> ecx "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -56,9 +56,9 @@
;* V45 tmp39 [V45 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
;* V46 tmp40 [V46 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp41 [V47 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V48 cse0 [V48,T05] ( 9, 16.04) int -> ebx "CSE - moderate"
+; V48 cse0 [V48,T05] ( 8, 19.50) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M5940_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -66,7 +66,7 @@ G_M5940_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -75,26 +75,24 @@ G_M5940_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [esi+0x04]
lea eax, [ebx-0x01]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x14], esi
- ; GC ptr vars +{V00}
mov edx, esi
; gcrRegs +[edx]
jmp SHORT G_M5940_IG04
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M5940_IG03: ; bbWeight=2, gcVars=00000440 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx esi]
+ ;; size=15 bbWeight=1 PerfScore 6.00
+G_M5940_IG03: ; bbWeight=2, gcVars=00000040 {V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx]
; GC ptr vars +{V03 V06}
inc edi
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=4 bbWeight=2 PerfScore 2.50
-G_M5940_IG04: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M5940_IG04: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03 V06}
cmp ebx, edi
jle SHORT G_M5940_IG10
;; size=4 bbWeight=8 PerfScore 10.00
-G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
+G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*edi+0x08]
cmp ecx, 256
@@ -104,38 +102,38 @@ G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
test eax, eax
jne SHORT G_M5940_IG03
;; size=26 bbWeight=4 PerfScore 34.00
-G_M5940_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M5940_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M5940_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M5940_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M5940_IG03
;; size=9 bbWeight=4 PerfScore 16.00
-G_M5940_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M5940_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M5940_IG09: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M5940_IG09: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
dec eax
mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=7 bbWeight=2 PerfScore 4.50
-G_M5940_IG10: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M5940_IG10: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov eax, dword ptr [ebp-0x10]
test eax, eax
jl SHORT G_M5940_IG15
;; size=7 bbWeight=8 PerfScore 18.00
-G_M5940_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+G_M5940_IG11: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp eax, ebx
- jae G_M5940_IG30
- mov gword ptr [ebp-0x18], edx
+ jae G_M5940_IG26
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*eax+0x08]
cmp ecx, 256
@@ -147,121 +145,96 @@ G_M5940_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
mov eax, dword ptr [ebp-0x10]
jne SHORT G_M5940_IG09
;; size=40 bbWeight=4 PerfScore 47.00
-G_M5940_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M5940_IG15
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M5940_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M5940_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M5940_IG09
;; size=9 bbWeight=4 PerfScore 16.00
-G_M5940_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=3 bbWeight=2 PerfScore 2.00
-G_M5940_IG15: ; bbWeight=1, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M5940_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov dword ptr [ebp-0x10], eax
cmp edi, eax
- jge G_M5940_IG28
- ;; size=11 bbWeight=1 PerfScore 2.25
-G_M5940_IG16: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jge SHORT G_M5940_IG24
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M5940_IG16: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae G_M5940_IG30
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*edi+0x08], 91
jne SHORT G_M5940_IG17
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae G_M5940_IG30
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*eax+0x08], 93
jne SHORT G_M5940_IG22
inc edi
dec eax
mov dword ptr [ebp-0x10], eax
- ;; size=40 bbWeight=0.50 PerfScore 6.50
-G_M5940_IG17: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=32 bbWeight=0.50 PerfScore 6.50
+G_M5940_IG17: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae SHORT G_M5940_IG30
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*eax+0x08], 93
- je SHORT G_M5940_IG28
+ je SHORT G_M5940_IG24
xor ecx, ecx
cmp eax, edi
- jl SHORT G_M5940_IG28
- mov esi, eax
- or esi, edi
- jl SHORT G_M5940_IG23
- cmp ebx, eax
- jle SHORT G_M5940_IG23
- ;; size=31 bbWeight=0.50 PerfScore 5.25
-G_M5940_IG18: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M5940_IG24
+ ;; size=21 bbWeight=0.50 PerfScore 3.88
+G_M5940_IG18: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, ebx
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*eax+0x08], 44
jne SHORT G_M5940_IG20
- ;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M5940_IG19: ; bbWeight=1.98, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=12 bbWeight=4 PerfScore 21.00
+G_M5940_IG19: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp ecx, 4
- je SHORT G_M5940_IG27
- ;; size=6 bbWeight=1.98 PerfScore 2.97
-G_M5940_IG20: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M5940_IG23
+ ;; size=6 bbWeight=2 PerfScore 3.00
+G_M5940_IG20: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
dec eax
cmp eax, edi
jge SHORT G_M5940_IG18
- ;; size=5 bbWeight=3.96 PerfScore 5.94
-G_M5940_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M5940_IG28
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M5940_IG21: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ jmp SHORT G_M5940_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M5940_IG22: ; bbWeight=0.25, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00}
+G_M5940_IG22: ; bbWeight=0.25, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi]
mov dword ptr [ebp-0x10], eax
jmp SHORT G_M5940_IG17
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M5940_IG23: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- cmp eax, ebx
- jae SHORT G_M5940_IG30
- cmp word ptr [edx+2*eax+0x08], 44
- jne SHORT G_M5940_IG25
- ;; size=12 bbWeight=0.04 PerfScore 0.21
-G_M5940_IG24: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- cmp ecx, 4
- je SHORT G_M5940_IG27
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M5940_IG25: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- dec eax
- cmp eax, edi
- jge SHORT G_M5940_IG23
- ;; size=5 bbWeight=0.04 PerfScore 0.06
-G_M5940_IG26: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M5940_IG28
- ;; size=2 bbWeight=0.50 PerfScore 1.00
...
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 5, 4.50) ref -> [ebp-0x14] class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> edi
+; V00 arg0 [V00,T09] ( 5, 4.50) ref -> esi class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> edi
; V02 loc1 [V02,T03] ( 14, 25.50) int -> [ebp-0x10]
-; V03 loc2 [V03,T06] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <System.String>
-; V04 loc3 [V04,T09] ( 7, 6.50) int -> ecx
-; V05 loc4 [V05,T04] ( 14, 18.54) int -> eax
+; V03 loc2 [V03,T06] ( 9, 16 ) ref -> [ebp-0x14] class-hnd <System.String>
+; V04 loc3 [V04,T10] ( 4, 6.50) int -> ecx
+; V05 loc4 [V05,T04] ( 8, 21.50) int -> eax
; V06 tmp0 [V06,T07] ( 2, 8 ) ubyte -> eax "Inline return value spill temp"
; V07 tmp1 [V07,T00] ( 4, 32 ) ushort -> ecx "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -56,9 +56,9 @@
;* V45 tmp39 [V45 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
;* V46 tmp40 [V46 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp41 [V47 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V48 cse0 [V48,T05] ( 9, 16.04) int -> ebx "CSE - moderate"
+; V48 cse0 [V48,T05] ( 8, 19.50) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M41923_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -66,7 +66,7 @@ G_M41923_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -75,26 +75,24 @@ G_M41923_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [esi+0x04]
lea eax, [ebx-0x01]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x14], esi
- ; GC ptr vars +{V00}
mov edx, esi
; gcrRegs +[edx]
jmp SHORT G_M41923_IG04
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M41923_IG03: ; bbWeight=2, gcVars=00000440 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx esi]
+ ;; size=15 bbWeight=1 PerfScore 6.00
+G_M41923_IG03: ; bbWeight=2, gcVars=00000040 {V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx]
; GC ptr vars +{V03 V06}
inc edi
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=4 bbWeight=2 PerfScore 2.50
-G_M41923_IG04: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M41923_IG04: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03 V06}
cmp ebx, edi
jle SHORT G_M41923_IG10
;; size=4 bbWeight=8 PerfScore 10.00
-G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
+G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*edi+0x08]
cmp ecx, 256
@@ -104,38 +102,38 @@ G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
test eax, eax
jne SHORT G_M41923_IG03
;; size=26 bbWeight=4 PerfScore 34.00
-G_M41923_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M41923_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M41923_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M41923_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M41923_IG03
;; size=9 bbWeight=4 PerfScore 16.00
-G_M41923_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M41923_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M41923_IG09: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41923_IG09: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
dec eax
mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=7 bbWeight=2 PerfScore 4.50
-G_M41923_IG10: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M41923_IG10: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov eax, dword ptr [ebp-0x10]
test eax, eax
jl SHORT G_M41923_IG15
;; size=7 bbWeight=8 PerfScore 18.00
-G_M41923_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+G_M41923_IG11: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp eax, ebx
- jae G_M41923_IG30
- mov gword ptr [ebp-0x18], edx
+ jae G_M41923_IG26
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*eax+0x08]
cmp ecx, 256
@@ -147,121 +145,96 @@ G_M41923_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
mov eax, dword ptr [ebp-0x10]
jne SHORT G_M41923_IG09
;; size=40 bbWeight=4 PerfScore 47.00
-G_M41923_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M41923_IG15
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M41923_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M41923_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M41923_IG09
;; size=9 bbWeight=4 PerfScore 16.00
-G_M41923_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=3 bbWeight=2 PerfScore 2.00
-G_M41923_IG15: ; bbWeight=1, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M41923_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov dword ptr [ebp-0x10], eax
cmp edi, eax
- jge G_M41923_IG28
- ;; size=11 bbWeight=1 PerfScore 2.25
-G_M41923_IG16: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jge SHORT G_M41923_IG24
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M41923_IG16: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae G_M41923_IG30
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*edi+0x08], 91
jne SHORT G_M41923_IG17
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae G_M41923_IG30
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*eax+0x08], 93
jne SHORT G_M41923_IG22
inc edi
dec eax
mov dword ptr [ebp-0x10], eax
- ;; size=40 bbWeight=0.50 PerfScore 6.50
-G_M41923_IG17: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=32 bbWeight=0.50 PerfScore 6.50
+G_M41923_IG17: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae SHORT G_M41923_IG30
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*eax+0x08], 93
- je SHORT G_M41923_IG28
+ je SHORT G_M41923_IG24
xor ecx, ecx
cmp eax, edi
- jl SHORT G_M41923_IG28
- mov esi, eax
- or esi, edi
- jl SHORT G_M41923_IG23
- cmp ebx, eax
- jle SHORT G_M41923_IG23
- ;; size=31 bbWeight=0.50 PerfScore 5.25
-G_M41923_IG18: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M41923_IG24
+ ;; size=21 bbWeight=0.50 PerfScore 3.88
+G_M41923_IG18: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, ebx
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*eax+0x08], 44
jne SHORT G_M41923_IG20
- ;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M41923_IG19: ; bbWeight=1.98, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=12 bbWeight=4 PerfScore 21.00
+G_M41923_IG19: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp ecx, 4
- je SHORT G_M41923_IG27
- ;; size=6 bbWeight=1.98 PerfScore 2.97
-G_M41923_IG20: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M41923_IG23
+ ;; size=6 bbWeight=2 PerfScore 3.00
+G_M41923_IG20: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
dec eax
cmp eax, edi
jge SHORT G_M41923_IG18
- ;; size=5 bbWeight=3.96 PerfScore 5.94
-G_M41923_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M41923_IG28
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M41923_IG21: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ jmp SHORT G_M41923_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M41923_IG22: ; bbWeight=0.25, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00}
+G_M41923_IG22: ; bbWeight=0.25, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi]
mov dword ptr [ebp-0x10], eax
jmp SHORT G_M41923_IG17
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M41923_IG23: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- cmp eax, ebx
- jae SHORT G_M41923_IG30
- cmp word ptr [edx+2*eax+0x08], 44
- jne SHORT G_M41923_IG25
- ;; size=12 bbWeight=0.04 PerfScore 0.21
-G_M41923_IG24: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- cmp ecx, 4
- je SHORT G_M41923_IG27
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M41923_IG25: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- dec eax
- cmp eax, edi
- jge SHORT G_M41923_IG23
- ;; size=5 bbWeight=0.04 PerfScore 0.06
-G_M41923_IG26: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M41923_IG28
- ;; size=2 bbWeight=0.50 PerfScore 1.00
...
@@ -8,36 +8,36 @@
; 4 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 10, 6.00) ref -> esi class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T19] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T07] ( 10, 6.00) ref -> esi class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V01 arg1 [V01,T20] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T05] ( 5, 5 ) int -> [ebp-0x10] spill-single-def
-; V04 loc2 [V04,T00] ( 16, 8.50) int -> [ebp-0x14]
+; V03 loc1 [V03,T12] ( 5, 5 ) int -> [ebp-0x10] spill-single-def
+; V04 loc2 [V04,T00] ( 12, 24 ) int -> [ebp-0x14]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
-;* V07 loc5 [V07,T21] ( 0, 0 ) int -> zero-ref
+; V07 loc5 [V07,T04] ( 4, 12.50) int -> [ebp-0x18]
;* V08 tmp0 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V09 tmp1 [V09,T03] ( 3, 6 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
-; V10 tmp2 [V10,T09] ( 2, 4 ) byref -> [ebp-0x24] spill-single-def "Inlining Arg"
+; V09 tmp1 [V09,T11] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "Inlining Arg"
+; V10 tmp2 [V10,T14] ( 2, 4 ) byref -> [ebp-0x24] spill-single-def "Inlining Arg"
;* V11 tmp3 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V12 tmp4 [V12,T02] ( 6, 6 ) int -> [ebp-0x1C] "Inlining Arg"
-; V13 tmp5 [V13,T08] ( 4, 4 ) byref -> [ebp-0x28] "Inlining Arg"
-; V14 tmp6 [V14,T12] ( 4, 3 ) int -> [ebp-0x20] "Inlining Arg"
-; V15 tmp7 [V15,T07] ( 5, 4 ) int -> registers "Inlining Arg"
+; V12 tmp4 [V12,T01] ( 3, 24 ) int -> edi "Inlining Arg"
+; V13 tmp5 [V13,T02] ( 2, 16 ) byref -> [ebp-0x28] spill-single-def "Inlining Arg"
+; V14 tmp6 [V14,T15] ( 4, 3 ) int -> [ebp-0x20] "Inlining Arg"
+; V15 tmp7 [V15,T13] ( 5, 4 ) int -> registers "Inlining Arg"
;* V16 tmp8 [V16 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V17 tmp9 [V17,T15] ( 4, 2 ) int -> edx single-def "Inline stloc first use temp"
-; V18 tmp10 [V18,T13] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V19 tmp11 [V19,T11] ( 4, 3 ) byref -> edi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V20 tmp12 [V20,T04] ( 7, 5 ) int -> ebx single-def "field V02._length (fldOffset=0x4)" P-INDEP
-; V21 tmp13 [V21,T06] ( 8, 4.50) byref -> eax "field V05._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp14 [V22,T10] ( 6, 3.50) int -> edx "field V05._length (fldOffset=0x4)" P-INDEP
-; V23 tmp15 [V23,T17] ( 2, 2 ) byref -> eax single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp16 [V24,T20] ( 2, 2 ) int -> edx single-def "field V08._length (fldOffset=0x4)" P-INDEP
-; V25 tmp17 [V25,T14] ( 4, 2 ) byref -> eax "field V11._reference (fldOffset=0x0)" P-INDEP
-; V26 tmp18 [V26,T16] ( 4, 2 ) int -> edx "field V11._length (fldOffset=0x4)" P-INDEP
-; V27 tmp19 [V27,T18] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V17 tmp9 [V17,T17] ( 4, 2 ) int -> edx single-def "Inline stloc first use temp"
+; V18 tmp10 [V18,T16] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V19 tmp11 [V19,T10] ( 3, 6 ) byref -> [ebp-0x2C] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp12 [V20,T05] ( 5, 11 ) int -> ebx single-def "field V02._length (fldOffset=0x4)" P-INDEP
+; V21 tmp13 [V21,T03] ( 5, 13.50) byref -> eax "field V05._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp14 [V22,T06] ( 4, 9.50) int -> edx "field V05._length (fldOffset=0x4)" P-INDEP
+; V23 tmp15 [V23,T18] ( 2, 2 ) byref -> eax single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp16 [V24,T21] ( 2, 2 ) int -> edx single-def "field V08._length (fldOffset=0x4)" P-INDEP
+; V25 tmp17 [V25,T08] ( 2, 8 ) byref -> eax "field V11._reference (fldOffset=0x0)" P-INDEP
+; V26 tmp18 [V26,T09] ( 2, 8 ) int -> edx "field V11._length (fldOffset=0x4)" P-INDEP
+; V27 tmp19 [V27,T19] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
;
-; Lcl frame size = 28
+; Lcl frame size = 32
G_M37393_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -45,102 +45,96 @@ G_M37393_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 28
+ sub esp, 32
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
G_M37393_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, bword ptr [ebp+0x08]
; byrRegs +[edi]
+ mov bword ptr [ebp-0x2C], edi
+ ; GC ptr vars +{V19}
mov ebx, dword ptr [ebp+0x0C]
mov eax, dword ptr [esi+0x30]
- mov dword ptr [ebp-0x10], eax
- cmp eax, ebx
+ mov dword ptr [ebp-0x14], eax
+ mov edx, eax
+ mov dword ptr [ebp-0x10], edx
+ cmp edx, ebx
jbe SHORT G_M37393_IG04
- ;; size=16 bbWeight=1 PerfScore 6.25
+ ;; size=24 bbWeight=1 PerfScore 8.50
G_M37393_IG03: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
; byrRegs -[edi]
+ ; GC ptr vars -{V19}
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M37393_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
+G_M37393_IG04: ; bbWeight=1, gcVars=00000400 {V19}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
; gcrRegs +[esi]
; byrRegs +[edi]
+ ; GC ptr vars +{V10 V19}
+ lea ecx, bword ptr [edi+2*edx]
+ ; byrRegs +[ecx]
+ mov bword ptr [ebp-0x24], ecx
+ mov ecx, ebx
+ ; byrRegs -[ecx]
+ sub ecx, edx
+ mov dword ptr [ebp-0x1C], ecx
+ not ecx
+ shr ecx, 31
+ call [<unknown method>]
+ mov eax, bword ptr [ebp-0x24]
+ ; byrRegs +[eax]
+ mov edx, dword ptr [ebp-0x1C]
+ cmp dword ptr [ebp-0x10], 0
+ jne G_M37393_IG14
+ ;; size=40 bbWeight=1 PerfScore 11.75
+G_M37393_IG05: ; bbWeight=0.50, gcVars=00000400 {V19}, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, gcvars, byref
+ ; GC ptr vars -{V10}
+ xor ecx, ecx
+ mov dword ptr [ebp-0x18], ecx
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M37393_IG06: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, byref, isz
+ cmp edx, 1
+ jbe G_M37393_IG14
+ cmp word ptr [eax], 10
+ je G_M37393_IG14
+ cmp word ptr [eax+0x02], 44
+ jne G_M37393_IG14
+ mov eax, dword ptr [ebp-0x14]
+ ; byrRegs -[eax]
+ add eax, 2
+ cmp eax, ebx
+ ja SHORT G_M37393_IG03
lea edx, bword ptr [edi+2*eax]
; byrRegs +[edx]
- mov bword ptr [ebp-0x24], edx
- ; GC ptr vars +{V10}
- mov ecx, ebx
- sub ecx, eax
- mov dword ptr [ebp-0x18], ecx
+ mov bword ptr [ebp-0x28], edx
+ ; GC ptr vars +{V13}
+ mov dword ptr [ebp-0x14], eax
+ mov edi, ebx
+ ; byrRegs -[edi]
+ sub edi, eax
+ mov ecx, edi
not ecx
shr ecx, 31
call [<unknown method>]
; byrRegs -[edx]
- mov eax, bword ptr [ebp-0x24]
- ; byrRegs +[eax]
- mov edx, dword ptr [ebp-0x18]
- cmp dword ptr [ebp-0x10], 0
- jne G_M37393_IG12
- ;; size=40 bbWeight=1 PerfScore 11.75
-G_M37393_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000081 {eax edi}, gcvars, byref, isz
- ; GC ptr vars -{V10}
- cmp edx, 1
- jbe G_M37393_IG12
- cmp word ptr [eax], 10
- je G_M37393_IG12
- cmp word ptr [eax+0x02], 44
- jne G_M37393_IG12
- mov ecx, 2
- cmp ecx, ebx
- ja SHORT G_M37393_IG03
- lea eax, bword ptr [edi+2*ecx]
- mov bword ptr [ebp-0x28], eax
- ; GC ptr vars +{V13}
- mov dword ptr [ebp-0x14], ecx
- mov edx, ebx
- sub edx, ecx
- mov dword ptr [ebp-0x1C], edx
- mov ecx, edx
- not ecx
- shr ecx, 31
- call [<unknown method>]
- ; byrRegs -[eax]
mov eax, bword ptr [ebp-0x28]
; byrRegs +[eax]
- mov edx, dword ptr [ebp-0x1C]
- cmp edx, 1
- jbe G_M37393_IG12
- cmp word ptr [eax], 10
- je G_M37393_IG12
- cmp word ptr [eax+0x02], 44
- jne G_M37393_IG12
- mov ecx, dword ptr [ebp-0x14]
- add ecx, 2
- cmp ecx, ebx
- ja G_M37393_IG03
- lea eax, bword ptr [edi+2*ecx]
- mov edi, eax
- mov dword ptr [ebp-0x14], ecx
- mov edx, ebx
- sub edx, ecx
- mov ebx, edx
- mov ecx, ebx
- not ecx
- shr ecx, 31
- ; GC ptr vars -{V13}
- call [<unknown method>]
- ; byrRegs -[eax]
- mov eax, edi
- ; byrRegs +[eax]
- mov edx, ebx
+ mov edx, edi
+ mov edi, dword ptr [ebp-0x18]
+ inc edi
+ cmp edi, 2
+ mov dword ptr [ebp-0x18], edi
+ jl SHORT G_M37393_IG13
+ ;; size=83 bbWeight=4 PerfScore 94.00
+G_M37393_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, gcvars, byref, isz
+ ; GC ptr vars -{V13 V19}
test edx, edx
- je SHORT G_M37393_IG12
+ je SHORT G_M37393_IG14
cmp word ptr [eax], 99
- jne SHORT G_M37393_IG12
+ jne SHORT G_M37393_IG14
mov edi, dword ptr [ebp-0x14]
- ; byrRegs -[edi]
inc edi
mov dword ptr [esi+0x30], edi
xor ebx, ebx
@@ -148,34 +142,32 @@ G_M37393_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {e
; byrRegs -[eax]
mov dword ptr [ebp-0x20], eax
cmp eax, ebx
- ;; size=175 bbWeight=0.50 PerfScore 24.38
-G_M37393_IG06: ; bbWeight=0.50, isz, extend
- jge SHORT G_M37393_IG08
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M37393_IG07: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jge SHORT G_M37393_IG09
+ ;; size=28 bbWeight=0.50 PerfScore 5.12
+G_M37393_IG08: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
xor eax, eax
xor ebx, ebx
mov dword ptr [ebp-0x20], ebx
mov ebx, edi
;; size=9 bbWeight=0 PerfScore 0.00
-G_M37393_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M37393_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x3C], 0
- jne SHORT G_M37393_IG10
+ jne SHORT G_M37393_IG11
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M37393_IG09: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M37393_IG10: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
...
@@ -10,51 +10,51 @@
;
; V00 this [V00,T24] ( 9, 22.50) ref -> [ebp-0x64] this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Buffers.AhoCorasickNode]>
; V01 loc0 [V01,T15] ( 5, 33.50) int -> edi
-; V02 loc1 [V02,T30] ( 5, 19 ) int -> ebx
+; V02 loc1 [V02,T29] ( 5, 19 ) int -> ebx
; V03 loc2 [V03,T23] ( 7, 27 ) ref -> [ebp-0x68] class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
-; V04 loc3 [V04,T36] ( 4, 10 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def <<unknown class>>
-; V05 loc4 [V05,T29] ( 6, 19 ) int -> [ebp-0x24]
-; V06 loc5 [V06,T37] ( 9, 9.50) ref -> [ebp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc3 [V04,T35] ( 4, 10 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def <<unknown class>>
+; V05 loc4 [V05,T28] ( 6, 19 ) int -> [ebp-0x24]
+; V06 loc5 [V06,T36] ( 9, 9.50) ref -> [ebp-0x70] class-hnd EH-live spill-single-def <<unknown class>>
; V07 loc6 [V07 ] ( 2, 8 ) struct ( 8) [ebp-0x2C] 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] ( 9, 9.50) ref -> [ebp-0x74] class-hnd EH-live spill-single-def <<unknown class>>
+; V08 loc7 [V08,T37] ( 9, 9.50) ref -> [ebp-0x74] class-hnd EH-live spill-single-def <<unknown class>>
; V09 loc8 [V09 ] ( 2, 8 ) struct ( 8) [ebp-0x34] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.Buffers.SharedArrayPoolThreadLocalArray[],System.Object]>
; V10 loc9 [V10,T12] ( 4, 40 ) ref -> [ebp-0x78] class-hnd exact spill-single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V11 loc10 [V11,T02] ( 5, 68 ) int -> [ebp-0x38]
; V12 loc11 [V12,T06] ( 6, 60 ) ref -> ebx class-hnd exact <<unknown class>>
-; V13 loc12 [V13,T41] ( 2, 8.50) int -> [ebp-0x3C] spill-single-def
-; V14 loc13 [V14,T45] ( 3, 1.50) int -> ebx
-; V15 loc14 [V15,T34] ( 9, 13.50) ref -> [ebp-0x7C] class-hnd EH-live spill-single-def <<unknown class>>
+; V13 loc12 [V13,T40] ( 2, 8.50) int -> [ebp-0x3C] spill-single-def
+; V14 loc13 [V14,T44] ( 3, 1.50) int -> ebx
+; V15 loc14 [V15,T33] ( 9, 13.50) ref -> [ebp-0x7C] class-hnd EH-live spill-single-def <<unknown class>>
; V16 loc15 [V16 ] ( 2, 8 ) struct ( 8) [ebp-0x44] 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, 40 ) ref -> [ebp-0x80] class-hnd exact spill-single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V18 loc17 [V18,T00] ( 7,228 ) int -> [ebp-0x48]
-; V19 loc18 [V19,T26] ( 3, 24 ) int -> esi
-; V20 loc19 [V20,T10] ( 6, 44 ) ref -> ebx class-hnd exact <<unknown class>>
-; V21 tmp0 [V21,T27] ( 3, 20 ) ref -> [ebp-0x84] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
+; V17 loc16 [V17,T07] ( 6, 48 ) ref -> [ebp-0x80] class-hnd exact spill-single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V18 loc17 [V18,T00] ( 8,236 ) int -> [ebp-0x48]
+; V19 loc18 [V19,T25] ( 3, 24 ) int -> ebx
+; V20 loc19 [V20,T11] ( 6, 44 ) ref -> esi class-hnd exact <<unknown class>>
+; V21 tmp0 [V21,T26] ( 3, 20 ) ref -> [ebp-0x84] class-hnd exact spill-single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions>
;* V22 tmp1 [V22 ] ( 0, 0 ) ref -> zero-ref
; V23 tmp2 [V23,T14] ( 2, 36 ) int -> [ebp-0x4C] spill-single-def "impAppendStmt"
-; V24 tmp3 [V24,T16] ( 2, 32 ) ref -> ebx "CASTCLASS eval op1"
+; V24 tmp3 [V24,T16] ( 2, 32 ) ref -> esi "CASTCLASS eval op1"
;* V25 tmp4 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V26 tmp5 [V26,T17] ( 2, 32 ) int -> [ebp-0x50] spill-single-def "impAppendStmt"
-; V27 tmp6 [V27,T18] ( 2, 32 ) int -> ebx "impAppendStmt"
+; V27 tmp6 [V27,T18] ( 2, 32 ) int -> esi "impAppendStmt"
; V28 tmp7 [V28,T04] ( 2, 64 ) ref -> ebx "CASTCLASS eval op1"
;* V29 tmp8 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V30 tmp9 [V30,T19] ( 2, 32 ) int -> [ebp-0x54] spill-single-def "impAppendStmt"
; V31 tmp10 [V31,T20] ( 2, 32 ) int -> ebx "impAppendStmt"
-; V32 tmp11 [V32,T42] ( 3, 3 ) ref -> esi single-def "handle histogram profile tmp"
+; V32 tmp11 [V32,T41] ( 3, 3 ) ref -> esi 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,T43] ( 3, 3 ) ref -> ebx single-def "handle histogram profile tmp"
+; V36 tmp15 [V36,T42] ( 3, 3 ) ref -> ebx 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 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V41 tmp20 [V41,T44] ( 3, 3 ) ref -> [ebp-0x88] spill-single-def "handle histogram profile tmp"
+; V41 tmp20 [V41,T43] ( 3, 3 ) ref -> [ebp-0x88] 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 ] ( 0, 0 ) ref -> zero-ref "handle histogram profile tmp"
-; V46 tmp25 [V46,T28] ( 3, 20 ) int -> [ebp-0x58] spill-single-def "Inline stloc first use temp"
+; V46 tmp25 [V46,T27] ( 3, 20 ) int -> [ebp-0x58] spill-single-def "Inline stloc first use temp"
; V47 tmp26 [V47,T13] ( 4, 36 ) ref -> [ebp-0x8C] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
; V48 tmp27 [V48,T03] ( 5, 66 ) int -> [ebp-0x5C] "Inline stloc first use temp"
; V49 tmp28 [V49,T21] ( 2, 32 ) int -> eax "Inlining Arg"
@@ -66,21 +66,20 @@
; V55 tmp34 [V55 ] ( 2, 8 ) ref -> [ebp-0x44] do-not-enreg[X] addr-exposed "field V16.key (fldOffset=0x0)" P-DEP
; V56 tmp35 [V56 ] ( 1, 4 ) ref -> [ebp-0x40] do-not-enreg[X] addr-exposed "field V16.value (fldOffset=0x4)" P-DEP
; V57 tmp36 [V57,T05] ( 2, 64 ) ref -> ecx "argument with side effect"
-; V58 tmp37 [V58,T31] ( 2, 16 ) ref -> ecx "argument with side effect"
-; V59 tmp38 [V59,T07] ( 3, 48 ) ref -> ecx "argument with side effect"
-; V60 tmp39 [V60,T32] ( 2, 16 ) ref -> ecx "argument with side effect"
-; V61 tmp40 [V61,T08] ( 3, 48 ) ref -> ecx "argument with side effect"
-; V62 tmp41 [V62,T33] ( 2, 16 ) ref -> ecx "argument with side effect"
+; V58 tmp37 [V58,T30] ( 2, 16 ) ref -> ecx "argument with side effect"
+; V59 tmp38 [V59,T08] ( 3, 48 ) ref -> ecx "argument with side effect"
+; V60 tmp39 [V60,T31] ( 2, 16 ) ref -> ecx "argument with side effect"
+; V61 tmp40 [V61,T09] ( 3, 48 ) ref -> ecx "argument with side effect"
+; V62 tmp41 [V62,T32] ( 2, 16 ) ref -> ecx "argument with side effect"
; V63 EHSlots [V63 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
-; V64 cse0 [V64,T46] ( 4, 1 ) ref -> esi multi-def "CSE - conservative"
-; V65 cse1 [V65,T39] ( 7, 9.50) ref -> esi multi-def "CSE - conservative"
-; V66 cse2 [V66,T47] ( 4, 1 ) ref -> registers multi-def "CSE - conservative"
-; V67 cse3 [V67,T40] ( 7, 9.50) ref -> [ebp-0x90] multi-def "CSE - conservative"
-; V68 cse4 [V68,T48] ( 4, 1 ) ref -> registers multi-def "CSE - conservative"
-; V69 cse5 [V69,T35] ( 7, 13.50) ref -> [ebp-0x94] multi-def "CSE - conservative"
-; V70 cse6 [V70,T25] ( 3, 24 ) byref -> ebx "CSE - conservative"
-; V71 cse7 [V71,T01] ( 3, 72 ) int -> [ebp-0x60] spill-single-def "CSE - aggressive"
-; V72 rat0 [V72,T09] ( 3, 48 ) int -> ebx "ReplaceWithLclVar is creating a new local variable"
+; V64 cse0 [V64,T45] ( 4, 1 ) ref -> esi multi-def "CSE - conservative"
+; V65 cse1 [V65,T38] ( 7, 9.50) ref -> esi multi-def "CSE - conservative"
+; V66 cse2 [V66,T46] ( 4, 1 ) ref -> registers multi-def "CSE - conservative"
+; V67 cse3 [V67,T39] ( 7, 9.50) ref -> [ebp-0x90] multi-def "CSE - conservative"
+; V68 cse4 [V68,T47] ( 4, 1 ) ref -> registers multi-def "CSE - conservative"
+; V69 cse5 [V69,T34] ( 7, 13.50) ref -> [ebp-0x94] multi-def "CSE - conservative"
+; V70 cse6 [V70,T01] ( 3, 72 ) int -> [ebp-0x60] spill-single-def "CSE - aggressive"
+; V71 rat0 [V71,T10] ( 3, 48 ) int -> esi "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 136
@@ -131,7 +130,7 @@ G_M35178_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
cmp dword ptr [edx+0x04], 0
jle G_M35178_IG09
;; size=18 bbWeight=1 PerfScore 7.25
-G_M35178_IG05: ; bbWeight=4, gcVars=0000001000800000 {V03 V04}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M35178_IG05: ; bbWeight=4, gcVars=0000000800800000 {V03 V04}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov dword ptr [ebp-0x24], ecx
mov edx, gword ptr [edx+4*ecx+0x08]
mov gword ptr [ebp-0x84], edx
@@ -139,7 +138,7 @@ G_M35178_IG05: ; bbWeight=4, gcVars=0000001000800000 {V03 V04}, gcrefRegs
test edx, edx
je SHORT G_M35178_IG08
;; size=17 bbWeight=4 PerfScore 21.00
-G_M35178_IG06: ; bbWeight=2, gcVars=0000001008800000 {V03 V04 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M35178_IG06: ; bbWeight=2, gcVars=0000000804800000 {V03 V04 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx]
mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -166,7 +165,7 @@ G_M35178_IG06: ; bbWeight=2, gcVars=0000001008800000 {V03 V04 V21}, gcref
cmp dword ptr [eax+0x04], 0
jle SHORT G_M35178_IG08
;; size=69 bbWeight=2 PerfScore 40.00
-G_M35178_IG07: ; bbWeight=16, gcVars=0000001000802000 {V03 V04 V47}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M35178_IG07: ; bbWeight=16, gcVars=0000000800802000 {V03 V04 V47}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ecx]
; GC ptr vars -{V21}
mov dword ptr [ebp-0x5C], edx
@@ -188,7 +187,7 @@ G_M35178_IG07: ; bbWeight=16, gcVars=0000001000802000 {V03 V04 V47}, gcre
; gcrRegs +[eax]
jg SHORT G_M35178_IG07
;; size=41 bbWeight=16 PerfScore 300.00
-G_M35178_IG08: ; bbWeight=4, gcVars=0000001000800000 {V03 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M35178_IG08: ; bbWeight=4, gcVars=0000000800800000 {V03 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ecx]
; GC ptr vars -{V47}
mov ecx, 0xD1FFAB1E
@@ -225,7 +224,7 @@ G_M35178_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
mov gword ptr [ebp-0x70], eax
; GC ptr vars +{V06}
;; size=39 bbWeight=0.50 PerfScore 6.38
-G_M35178_IG11: ; bbWeight=0.50, gcVars=0000002000000000 {V06}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M35178_IG11: ; bbWeight=0.50, gcVars=0000001000000000 {V06}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, eax
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -287,8 +286,8 @@ G_M35178_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
call CORINFO_HELP_COUNTPROFILE32
jmp G_M35178_IG51
;; size=46 bbWeight=0.50 PerfScore 5.00
-G_M35178_IG14: ; bbWeight=0, gcVars=0000002000000000 {V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V06}
+G_M35178_IG14: ; bbWeight=0, gcVars=0000001000000000 {V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V06 V36}
cmp gword ptr [ebp-0x70], 0
je SHORT G_M35178_IG15
mov ecx, 0xD1FFAB1E
@@ -303,7 +302,7 @@ G_M35178_IG14: ; bbWeight=0, gcVars=0000002000000000 {V06}, gcrefRegs=000
mov esi, ecx
; gcrRegs +[esi]
mov ecx, esi
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V06 V36}
call [<unknown method>]
; gcrRegs -[ecx esi]
;; size=42 bbWeight=0 PerfScore 0.00
@@ -330,7 +329,7 @@ G_M35178_IG16: ; bbWeight=0.50, gcVars=0000000000800000 {V03}, gcrefRegs=
mov gword ptr [ebp-0x74], eax
; GC ptr vars +{V08}
;; size=26 bbWeight=0.50 PerfScore 3.88
-G_M35178_IG17: ; bbWeight=0.50, gcVars=0000004000800000 {V03 V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M35178_IG17: ; bbWeight=0.50, gcVars=0000002000800000 {V03 V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V23}
mov ecx, eax
; gcrRegs +[ecx]
@@ -368,7 +367,7 @@ G_M35178_IG18: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
cmp dword ptr [eax+0x04], 0
jle SHORT G_M35178_IG22
;; size=44 bbWeight=4 PerfScore 53.00
-G_M35178_IG19: ; bbWeight=16, gcVars=0000014000801000 {V03 V08 V10 V67}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M35178_IG19: ; bbWeight=16, gcVars=000000A000801000 {V03 V08 V10 V67}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov dword ptr [ebp-0x38], edx
lea ecx, bword ptr [eax+8*edx+0x08]
; byrRegs +[ecx]
@@ -398,7 +397,7 @@ G_M35178_IG21: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=000
mov edx, dword ptr [ebp-0x38]
jg SHORT G_M35178_IG19
;; size=31 bbWeight=16 PerfScore 168.00
-G_M35178_IG22: ; bbWeight=4, gcVars=0000014000800000 {V03 V08 V67}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M35178_IG22: ; bbWeight=4, gcVars=000000A000800000 {V03 V08 V67}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
; GC ptr vars -{V10}
mov ecx, 0xD1FFAB1E
@@ -415,28 +414,28 @@ G_M35178_IG22: ; bbWeight=4, gcVars=0000014000800000 {V03 V08 V67}, gcref
test eax, eax
jne SHORT G_M35178_IG24
;; size=39 bbWeight=4 PerfScore 35.00
-G_M35178_IG23: ; bbWeight=0.50, gcVars=0000014000000000 {V08 V67}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M35178_IG23: ; bbWeight=0.50, gcVars=000000A000000000 {V08 V67}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi edi]
; GC ptr vars -{V03}
mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
jmp SHORT G_M35178_IG27
;; size=12 bbWeight=0.50 PerfScore 1.62
-G_M35178_IG24: ; bbWeight=2, gcVars=0000014000800000 {V03 V08 V67}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M35178_IG24: ; bbWeight=2, gcVars=000000A000800000 {V03 V08 V67}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi edi]
; GC ptr vars +{V03 V23}
mov ebx, gword ptr [ebp-0x90]
; gcrRegs +[ebx]
jmp G_M35178_IG18
;; size=11 bbWeight=2 PerfScore 6.00
-G_M35178_IG25: ; bbWeight=0.25, gcVars=0000004000000000 {V08}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M35178_IG25: ; bbWeight=0.25, gcVars=0000002000000000 {V08}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi edi]
; GC ptr vars -{V03 V23 V67}
mov gword ptr [ebp-0x90], ebx
; GC ptr vars +{V67}
jmp SHORT G_M35178_IG23
;; size=8 bbWeight=0.25 PerfScore 0.75
-G_M35178_IG26: ; bbWeight=8, gcVars=0000014000801000 {V03 V08 V10 V67}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M35178_IG26: ; bbWeight=8, gcVars=000000A000801000 {V03 V08 V10 V67}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi edi]
; GC ptr vars +{V03 V10 V12 V23}
mov ecx, 0xD1FFAB1E
@@ -469,7 +468,7 @@ G_M35178_IG26: ; bbWeight=8, gcVars=0000014000801000 {V03 V08 V10 V67}, g
; gcrRegs -[ecx]
jmp G_M35178_IG21
;; size=68 bbWeight=8 PerfScore 182.00
-G_M35178_IG27: ; bbWeight=0.50, gcVars=0000014000000000 {V08 V67}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M35178_IG27: ; bbWeight=0.50, gcVars=000000A000000000 {V08 V67}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi edi]
; GC ptr vars -{V03 V10 V12 V23}
mov ecx, 0xD1FFAB1E
@@ -489,7 +488,7 @@ G_M35178_IG27: ; bbWeight=0.50, gcVars=0000014000000000 {V08 V67}, gcrefR
call CORINFO_HELP_COUNTPROFILE32
jmp G_M35178_IG51
;; size=50 bbWeight=0.50 PerfScore 5.38
-G_M35178_IG28: ; bbWeight=0, gcVars=0000004000000000 {V08}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M35178_IG28: ; bbWeight=0, gcVars=0000002000000000 {V08}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars +{V08}
cmp gword ptr [ebp-0x74], 0
je SHORT G_M35178_IG29
@@ -550,7 +549,7 @@ G_M35178_IG32: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
...
@@ -10,19 +10,19 @@
; Final local variable assignments
;
; V00 this [V00,T04] ( 24, 15.44) ref -> esi this class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T22] ( 13, 3.61) ref -> [ebp-0x84] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T06] ( 16, 14.68) ref -> [ebp+0x10] class-hnd single-def <System.String>
+; V01 arg1 [V01,T23] ( 13, 3.61) ref -> [ebp-0x84] class-hnd single-def <System.IFormatProvider>
+; V02 arg2 [V02,T06] ( 18, 14.68) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T57] ( 2, 2.25) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T55] ( 5, 2.42) ref -> [ebp-0x88] class-hnd spill-single-def <System.ICustomFormatter>
-; V05 loc1 [V05,T00] ( 62, 40.30) int -> [ebp-0x10] ld-addr-op
-; V06 loc2 [V06,T03] ( 30, 18.39) ushort -> [ebp-0x14]
+; V05 loc1 [V05,T00] ( 72, 40.30) int -> [ebp-0x10] ld-addr-op
+; V06 loc2 [V06,T03] ( 34, 18.39) ushort -> [ebp-0x14]
; V07 loc3 [V07,T27] ( 12, 4.47) int -> [ebp-0x18]
; V08 loc4 [V08,T44] ( 5, 3.16) ubyte -> [ebp-0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T25] ( 7, 5.03) int -> [ebp-0x20]
; V11 loc7 [V11,T17] ( 15, 7.07) ref -> [ebp-0x8C] class-hnd <System.String>
; V12 loc8 [V12,T66] ( 8, 1.72) ref -> [ebp-0x90] class-hnd <System.String>
-; V13 loc9 [V13,T23] ( 12, 5.25) ref -> [ebp-0x94] class-hnd spill-single-def <System.Object>
+; V13 loc9 [V13,T21] ( 13, 5.86) ref -> [ebp-0x94] class-hnd spill-single-def <System.Object>
;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref
; V16 loc12 [V16,T39] ( 3, 3.77) ushort -> eax
@@ -35,7 +35,7 @@
;* V23 tmp1 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V24 tmp2 [V24,T74] ( 3, 1.29) ref -> edx
;* V25 tmp3 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V26 tmp4 [V26,T21] ( 2, 5.65) int -> [ebp-0x2C] spill-single-def "impAppendStmt"
+; V26 tmp4 [V26,T22] ( 2, 5.65) int -> [ebp-0x2C] spill-single-def "impAppendStmt"
; V27 tmp5 [V27,T86] ( 3, 0.70) ref -> edx "guarded devirt return temp"
;* V28 tmp6 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V29 tmp7 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Globalization.CultureInfo>
@@ -250,7 +250,7 @@
; V238 cse2 [V238,T28] ( 3, 4.42) ref -> edx "CSE - conservative"
; V239 cse3 [V239,T29] ( 3, 4.42) int -> [ebp-0x7C] spill-single-def "CSE - conservative"
; V240 cse4 [V240,T33] ( 3, 4.23) ref -> [ebp-0xD4] spill-single-def "CSE - conservative"
-; V241 cse5 [V241,T05] ( 19, 15.67) int -> [ebp-0x80] spill-single-def "CSE - aggressive"
+; V241 cse5 [V241,T05] ( 21, 15.67) int -> [ebp-0x80] spill-single-def "CSE - aggressive"
; V242 rat0 [V242,T16] ( 5, 7.35) ref -> eax class-hnd "replacement local" <System.ICustomFormatter>
; V243 rat1 [V243,T14] ( 6, 8 ) ref -> ecx class-hnd "replacement local" <System.ISpanFormattable>
; V244 rat2 [V244,T19] ( 6, 6.48) ref -> registers class-hnd "replacement local" <System.IFormattable>
@@ -318,7 +318,7 @@ G_M4730_IG08: ; bbWeight=2.26, gcVars=00000000000000000080000000000000 {V
mov ecx, dword ptr [edi+0x04]
mov dword ptr [ebp-0x80], ecx
cmp ecx, edx
- jbe G_M4730_IG118
+ jbe G_M4730_IG129
;; size=14 bbWeight=2.26 PerfScore 9.62
G_M4730_IG09: ; bbWeight=1.26, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov gword ptr [ebp-0x84], ebx
@@ -363,11 +363,11 @@ G_M4730_IG09: ; bbWeight=1.26, gcrefRegs=000000C8 {ebx esi edi}, byrefReg
; byrRegs -[ecx]
mov dword ptr [ebp-0x30], eax
test eax, eax
- jl G_M4730_IG152
+ jl G_M4730_IG163
;; size=145 bbWeight=1.26 PerfScore 48.68
G_M4730_IG10: ; bbWeight=1.26, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp eax, ebx
- ja G_M4730_IG155
+ ja G_M4730_IG168
mov ebx, eax
not ebx
shr ebx, 31
@@ -400,7 +400,7 @@ G_M4730_IG12: ; bbWeight=0.65, gcrefRegs=000000C2 {ecx esi edi}, byrefReg
cmp ebx, 2
jg G_M4730_IG21
;; size=19 bbWeight=0.65 PerfScore 2.11
-G_M4730_IG13: ; bbWeight=0.00, gcVars=00000000000002000080001000400000 {V01 V04 V80 V170}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M4730_IG13: ; bbWeight=0.00, gcVars=00000000000002000080001000800000 {V01 V04 V80 V170}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[ecx]
mov edx, bword ptr [ebp-0xC8]
; byrRegs +[edx]
@@ -410,7 +410,7 @@ G_M4730_IG13: ; bbWeight=0.00, gcVars=00000000000002000080001000400000 {V
cmp ebx, 2
jne G_M4730_IG22
;; size=27 bbWeight=0.00 PerfScore 0.00
-G_M4730_IG14: ; bbWeight=0, gcVars=00000000000000000080001000400000 {V01 V04 V170}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000004 {edx}, gcvars, byref, isz
+G_M4730_IG14: ; bbWeight=0, gcVars=00000000000000000080001000800000 {V01 V04 V170}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000004 {edx}, gcvars, byref, isz
; GC ptr vars -{V80}
mov ecx, edx
; byrRegs +[ecx]
@@ -434,16 +434,16 @@ G_M4730_IG16: ; bbWeight=0.33, gcrefRegs=000000C8 {ebx esi edi}, byrefReg
G_M4730_IG17: ; bbWeight=0.35, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref
jmp G_M4730_IG04
;; size=5 bbWeight=0.35 PerfScore 0.70
-G_M4730_IG18: ; bbWeight=0.27, gcVars=00000000000000050080000000C00000 {V01 V04 V12 V13 V160}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M4730_IG18: ; bbWeight=0.27, gcVars=00000000000000050080000000A00000 {V01 V04 V12 V13 V160}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx ebx] +[eax]
- ; GC ptr vars +{V01 V04 V12 V13 V22 V64 V160}
+ ; GC ptr vars +{V01 V04 V12 V13 V64 V160}
xor ecx, ecx
; gcrRegs +[ecx]
- jmp G_M4730_IG86
+ jmp G_M4730_IG97
;; size=7 bbWeight=0.27 PerfScore 0.60
G_M4730_IG19: ; bbWeight=0.01, gcVars=00000000000000000000000000000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax ecx] +[ebx]
- ; GC ptr vars -{V01 V04 V12 V13 V22 V64 V160}
+ ; GC ptr vars -{V01 V04 V12 V13 V64 V160}
mov gword ptr [ebp-0x84], ebx
; GC ptr vars +{V01}
mov ecx, ebx
@@ -458,7 +458,7 @@ G_M4730_IG19: ; bbWeight=0.01, gcVars=00000000000000000000000000000000 {}
; gcrRegs +[ebx]
jmp SHORT G_M4730_IG17
;; size=29 bbWeight=0.01 PerfScore 0.11
-G_M4730_IG20: ; bbWeight=0.04, gcVars=00000000000000050080000000C00000 {V01 V04 V12 V13 V160}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M4730_IG20: ; bbWeight=0.04, gcVars=00000000000000050080000000A00000 {V01 V04 V12 V13 V160}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edx ebx]
; GC ptr vars +{V04 V12 V13 V64 V160}
mov dword ptr [ebp-0x64], edx
@@ -475,9 +475,9 @@ G_M4730_IG20: ; bbWeight=0.04, gcVars=00000000000000050080000000C00000 {V
; gcr arg pop 2
mov edx, eax
; gcrRegs +[edx]
- jmp G_M4730_IG79
+ jmp G_M4730_IG90
;; size=40 bbWeight=0.04 PerfScore 0.44
-G_M4730_IG21: ; bbWeight=0.65, gcVars=00000000000002000080001000400000 {V01 V04 V80 V170}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M4730_IG21: ; bbWeight=0.65, gcVars=00000000000002000080001000800000 {V01 V04 V80 V170}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edx]
; GC ptr vars -{V12 V13 V64 V160} +{V36 V80 V170}
lea edx, [ebx+ebx]
@@ -496,7 +496,7 @@ G_M4730_IG22: ; bbWeight=0.65, gcrefRegs=000000C0 {esi edi}, byrefRegs=00
mov dword ptr [esi+0x0C], ecx
jmp SHORT G_M4730_IG24
;; size=10 bbWeight=0.65 PerfScore 3.41
-G_M4730_IG23: ; bbWeight=0.62, gcVars=00000000000000000080001000400000 {V01 V04 V170}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M4730_IG23: ; bbWeight=0.62, gcVars=00000000000000000080001000800000 {V01 V04 V170}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars +{V36 V170}
push ebx
mov ecx, esi
@@ -513,7 +513,7 @@ G_M4730_IG24: ; bbWeight=1.26, gcrefRegs=000000C0 {esi edi}, byrefRegs=00
add edx, ebx
mov ebx, dword ptr [ebp-0x80]
cmp edx, ebx
- jae G_M4730_IG156
+ jae G_M4730_IG165
movzx eax, word ptr [edi+2*edx+0x08]
inc edx
cmp ebx, edx
@@ -527,9 +527,9 @@ G_M4730_IG25: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, g
call [System.ThrowHelper:ThrowFormatInvalidString(int,int)]
int3
;; size=14 bbWeight=0 PerfScore 0.00
-G_M4730_IG26: ; bbWeight=1.26, gcVars=00000000000000000080000000400000 {V01 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M4730_IG26: ; bbWeight=1.26, gcVars=00000000000000000080000000800000 {V01 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- ; GC ptr vars +{V01 V04 V22}
+ ; GC ptr vars +{V01 V04}
mov dword ptr [ebp-0x10], edx
movzx ecx, word ptr [edi+2*edx+0x08]
mov dword ptr [ebp-0x14], ecx
@@ -558,8 +558,8 @@ G_M4730_IG28: ; bbWeight=0.36, gcrefRegs=000000C0 {esi edi}, byrefRegs=00
sub edx, eax
mov dword ptr [ebp-0x38], edx
cmp ebx, eax
- jb G_M4730_IG154
- jmp G_M4730_IG67
+ jb G_M4730_IG80
+ jmp G_M4730_IG79
;; size=27 bbWeight=0.36 PerfScore 2.49
G_M4730_IG29: ; bbWeight=1.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, 123
@@ -567,16 +567,16 @@ G_M4730_IG29: ; bbWeight=1.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00
;; size=5 bbWeight=1.25 PerfScore 1.56
G_M4730_IG30: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi edi]
- ; GC ptr vars -{V01 V04 V22}
+ ; GC ptr vars -{V01 V04}
mov edx, dword ptr [ebp-0x10]
mov ecx, edx
mov edx, 75
call [System.ThrowHelper:ThrowFormatInvalidString(int,int)]
int3
;; size=17 bbWeight=0 PerfScore 0.00
-G_M4730_IG31: ; bbWeight=1.25, gcVars=00000000000000000080000000400000 {V01 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M4730_IG31: ; bbWeight=1.25, gcVars=00000000000000000080000000800000 {V01 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- ; GC ptr vars +{V01 V04 V22}
+ ; GC ptr vars +{V01 V04}
xor eax, eax
mov dword ptr [ebp-0x18], eax
xor eax, eax
@@ -591,12 +591,11 @@ G_M4730_IG31: ; bbWeight=1.25, gcVars=00000000000000000080000000400000 {V
mov edx, dword ptr [ebp-0x10]
lea eax, [edx-0x01]
cmp eax, ebx
- jae G_M4730_IG156
+ jae G_M4730_IG165
mov dword ptr [ebp-0x10], edx
xor ecx, ecx
cmp word ptr [edi+2*edx+0x06], 123
sete cl
- ; GC ptr vars -{V22}
call [<unknown method>]
xor ecx, ecx
cmp dword ptr [ebp-0x14], 123
@@ -616,16 +615,16 @@ G_M4730_IG32: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, g
call [System.ThrowHelper:ThrowFormatInvalidString(int,int)]
int3
;; size=15 bbWeight=0 PerfScore 0.00
-G_M4730_IG33: ; bbWeight=1.25, gcVars=00000000000000010080000000400000 {V01 V04 V160}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M4730_IG33: ; bbWeight=1.25, gcVars=00000000000000010080000000800000 {V01 V04 V160}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi edi]
- ; GC ptr vars +{V01 V04 V22 V64 V160}
+ ; GC ptr vars +{V01 V04 V64 V160}
mov ecx, dword ptr [ebp-0x10]
inc ecx
cmp ebx, ecx
- jbe G_M4730_IG60
+ jbe G_M4730_IG51
movzx eax, word ptr [edi+2*ecx+0x08]
cmp eax, 125
- je G_M4730_IG71
+ je G_M4730_IG82
;; size=26 bbWeight=1.25 PerfScore 7.18
G_M4730_IG34: ; bbWeight=0.64, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
lea edx, [eax-0x30]
@@ -635,201 +634,257 @@ G_M4730_IG34: ; bbWeight=0.64, gcrefRegs=000000C0 {esi edi}, byrefRegs=00
G_M4730_IG35: ; bbWeight=0.01, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, dword ptr [ebp-0x20]
cmp edx, 0xD1FFAB1E
- jl G_M4730_IG65
+ jl G_M4730_IG56
;; size=15 bbWeight=0.01 PerfScore 0.02
G_M4730_IG36: ; bbWeight=0.01, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x20], edx
;; size=3 bbWeight=0.01 PerfScore 0.01
G_M4730_IG37: ; bbWeight=0.00, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, 32
- jne SHORT G_M4730_IG40
+ jne SHORT G_M4730_IG41
;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M4730_IG38: ; bbWeight=0.03, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M4730_IG38: ; bbWeight=0.00, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx
+ jge SHORT G_M4730_IG52
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M4730_IG39: ; bbWeight=0.00, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp ebx, ecx
- jbe G_M4730_IG59
- ;; size=9 bbWeight=0.03 PerfScore 0.04
-G_M4730_IG39: ; bbWeight=0.66, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jbe SHORT G_M4730_IG50
+ ;; size=5 bbWeight=0.00 PerfScore 0.00
...
@@ -3,47 +3,47 @@
; Tier-0 switched to FullOpts code
; optimized code
; ebp 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 -> edi this single-def
-; V01 arg1 [V01,T19] ( 1, 1 ) struct (16) [ebp+0x08] single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> edi this single-def
+; V01 arg1 [V01,T18] ( 1, 1 ) struct (16) [ebp+0x08] single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T00] ( 10, 16 ) int -> esi
+; V03 loc1 [V03,T02] ( 9, 4.75) int -> esi
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[int]>
; V05 tmp0 [V05 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V08 tmp3 [V08,T04] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V09 tmp4 [V09,T10] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
+; V08 tmp3 [V08,T03] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V09 tmp4 [V09,T09] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
;* V10 tmp5 [V10 ] ( 0, 0 ) byref -> zero-ref
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V12 tmp7 [V12,T17] ( 2, 1 ) int -> ecx
-; V13 tmp8 [V13,T05] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V14 tmp9 [V14,T11] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
-; V15 tmp10 [V15,T06] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V16 tmp11 [V16,T12] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> edx "impAppendStmt"
+; V12 tmp7 [V12,T16] ( 2, 1 ) int -> ecx
+; V13 tmp8 [V13,T04] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V14 tmp9 [V14,T10] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
+; V15 tmp10 [V15,T05] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V16 tmp11 [V16,T11] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> edx "impAppendStmt"
;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref ptr
-; V22 tmp17 [V22,T18] ( 2, 1 ) int -> ecx
+; V22 tmp17 [V22,T17] ( 2, 1 ) int -> ecx
; V23 tmp18 [V23 ] ( 7, 13 ) struct (16) [ebp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V24 tmp19 [V24,T08] ( 3, 2.50) int -> edx "Inline stloc first use temp"
+; V24 tmp19 [V24,T07] ( 3, 2.50) int -> edx "Inline stloc first use temp"
;* V25 tmp20 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V27 tmp22 [V27 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V30 tmp25 [V30,T01] ( 12, 12 ) byref -> ebx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp26 [V31,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" P-INDEP
+; V30 tmp25 [V30,T00] ( 14, 9.50) byref -> ebx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V31 tmp26 [V31,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" P-INDEP
;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x4)" P-INDEP
-; V34 tmp29 [V34,T09] ( 2, 2 ) byref -> ebx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V35 tmp30 [V35,T21] ( 0, 0 ) int -> zero-ref ptr "field V06._length (fldOffset=0x4)" P-INDEP
+; V34 tmp29 [V34,T08] ( 2, 2 ) byref -> ebx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V35 tmp30 [V35,T20] ( 0, 0 ) int -> zero-ref ptr "field V06._length (fldOffset=0x4)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "field V07._flags (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V07._hi32 (fldOffset=0x4)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) long -> zero-ref "field V07._lo64 (fldOffset=0x8)" P-INDEP
@@ -52,12 +52,11 @@
; V41 tmp36 [V41 ] ( 4, 5 ) long -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V23._lo64 (fldOffset=0x8)" P-DEP
;* V42 tmp37 [V42 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V25._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref ptr "field V25._length (fldOffset=0x4)" P-INDEP
-; V44 tmp39 [V44,T14] ( 2, 2 ) int -> ecx "field V26._flags (fldOffset=0x0)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> edx "field V26._hi32 (fldOffset=0x4)" P-INDEP
-; V46 tmp41 [V46,T07] ( 3, 3 ) long -> [ebp-0x38] do-not-enreg[F] "field V26._lo64 (fldOffset=0x8)" P-INDEP
+; V44 tmp39 [V44,T13] ( 2, 2 ) int -> ecx "field V26._flags (fldOffset=0x0)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> edx "field V26._hi32 (fldOffset=0x4)" P-INDEP
+; V46 tmp41 [V46,T06] ( 3, 3 ) long -> [ebp-0x38] do-not-enreg[F] "field V26._lo64 (fldOffset=0x8)" P-INDEP
; V47 GsCookie [V47 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V48 cse0 [V48,T16] ( 3, 1.50) int -> edx "CSE - conservative"
-; V49 cse1 [V49,T02] ( 3, 10 ) int -> ecx "CSE - aggressive"
+; V48 cse0 [V48,T15] ( 3, 1.50) int -> edx "CSE - conservative"
;
; Lcl frame size = 44
@@ -104,28 +103,46 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {e
mov esi, 3
jmp SHORT G_M46478_IG06
;; size=42 bbWeight=1 PerfScore 14.25
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
- mov esi, ecx
- test esi, esi
- jle SHORT G_M46478_IG07
- ;; size=6 bbWeight=2 PerfScore 3.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
- lea ecx, [esi-0x01]
- cmp ecx, 4
- jae G_M46478_IG17
- cmp dword ptr [ebx+4*esi-0x04], 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ mov esi, 2
+ jmp SHORT G_M46478_IG09
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp dword ptr [ebx+0x08], 0
je SHORT G_M46478_IG05
- ;; size=19 bbWeight=4 PerfScore 23.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ mov esi, 1
+ jmp SHORT G_M46478_IG12
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp dword ptr [ebx+0x04], 0
+ je SHORT G_M46478_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ xor esi, esi
+ jmp SHORT G_M46478_IG13
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp dword ptr [ebx], 0
+ je SHORT G_M46478_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
test esi, esi
- jne SHORT G_M46478_IG11
+ jne SHORT G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.25
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
; byrRegs -[ebx]
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M46478_IG18
+ je G_M46478_IG24
;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
mov esi, gword ptr [D1FFAB1EH]
; gcrRegs +[esi]
add esi, 4
@@ -134,11 +151,11 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080
call CORINFO_HELP_ASSIGN_BYREF
movsd
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M46478_IG10
+ je SHORT G_M46478_IG16
call CORINFO_HELP_FAIL_FAST
; byrRegs -[esi edi]
;; size=29 bbWeight=0.50 PerfScore 4.12
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -146,13 +163,13 @@ G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop ebp
ret 16
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M46478_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
; byrRegs +[ebx edi]
cmp esi, 1
- jne SHORT G_M46478_IG13
+ jne SHORT G_M46478_IG19
mov edx, dword ptr [ebx]
test edx, edx
- jle SHORT G_M46478_IG13
+ jle SHORT G_M46478_IG19
mov dword ptr [edi+0x04], edx
mov edx, dword ptr [edi+0x04]
mov ecx, -1
@@ -165,12 +182,12 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; gcrRegs +[edx]
mov gword ptr [edi], edx
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M46478_IG12
+ je SHORT G_M46478_IG18
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[edx]
; byrRegs -[ebx edi]
;; size=61 bbWeight=0.50 PerfScore 9.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -178,7 +195,7 @@ G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop ebp
ret 16
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M46478_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
; byrRegs +[ebx edi]
mov edx, esi
mov ecx, 0xD1FFAB1E ; <unknown class>
@@ -193,28 +210,28 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; gcrRegs +[ecx]
mov edx, dword ptr [ebx]
cmp dword ptr [ecx+0x04], 0
- jbe SHORT G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [ecx+0x08], edx
cmp esi, 1
- jle SHORT G_M46478_IG14
+ jle SHORT G_M46478_IG20
mov ecx, gword ptr [edi]
mov edx, dword ptr [ebx+0x04]
cmp dword ptr [ecx+0x04], 1
- jbe SHORT G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [ecx+0x0C], edx
;; size=51 bbWeight=0.50 PerfScore 11.00
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
; gcrRegs -[ecx]
cmp esi, 2
- jle SHORT G_M46478_IG15
+ jle SHORT G_M46478_IG21
mov ecx, gword ptr [edi]
; gcrRegs +[ecx]
mov edx, dword ptr [ebx+0x08]
cmp dword ptr [ecx+0x04], 2
- jbe SHORT G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [ecx+0x10], edx
;; size=19 bbWeight=0.50 PerfScore 5.12
-G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
; gcrRegs -[ecx]
mov ecx, -1
mov edx, 1
@@ -222,11 +239,11 @@ G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088
cmove ecx, edx
mov dword ptr [edi+0x04], ecx
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M46478_IG16
+ je SHORT G_M46478_IG22
call CORINFO_HELP_FAIL_FAST
; byrRegs -[ebx edi]
;; size=37 bbWeight=0.50 PerfScore 4.38
-G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M46478_IG22: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
...
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 5, 4.50) ref -> [ebp-0x14] class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> edi
+; V00 arg0 [V00,T09] ( 5, 4.50) ref -> esi class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> edi
; V02 loc1 [V02,T03] ( 14, 25.50) int -> [ebp-0x10]
-; V03 loc2 [V03,T06] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <System.String>
-; V04 loc3 [V04,T09] ( 7, 6.50) int -> ecx
-; V05 loc4 [V05,T04] ( 14, 18.54) int -> eax
+; V03 loc2 [V03,T06] ( 9, 16 ) ref -> [ebp-0x14] class-hnd <System.String>
+; V04 loc3 [V04,T10] ( 4, 6.50) int -> ecx
+; V05 loc4 [V05,T04] ( 8, 21.50) int -> eax
; V06 tmp0 [V06,T07] ( 2, 8 ) ubyte -> eax "Inline return value spill temp"
; V07 tmp1 [V07,T00] ( 4, 32 ) ushort -> ecx "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -56,9 +56,9 @@
;* V45 tmp39 [V45 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
;* V46 tmp40 [V46 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp41 [V47 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V48 cse0 [V48,T05] ( 9, 16.04) int -> ebx "CSE - moderate"
+; V48 cse0 [V48,T05] ( 8, 19.50) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M41923_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -66,7 +66,7 @@ G_M41923_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -75,26 +75,24 @@ G_M41923_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [esi+0x04]
lea eax, [ebx-0x01]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x14], esi
- ; GC ptr vars +{V00}
mov edx, esi
; gcrRegs +[edx]
jmp SHORT G_M41923_IG04
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M41923_IG03: ; bbWeight=2, gcVars=00000440 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx esi]
+ ;; size=15 bbWeight=1 PerfScore 6.00
+G_M41923_IG03: ; bbWeight=2, gcVars=00000040 {V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx]
; GC ptr vars +{V03 V06}
inc edi
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=4 bbWeight=2 PerfScore 2.50
-G_M41923_IG04: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M41923_IG04: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03 V06}
cmp ebx, edi
jle SHORT G_M41923_IG10
;; size=4 bbWeight=8 PerfScore 10.00
-G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
+G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*edi+0x08]
cmp ecx, 256
@@ -104,38 +102,38 @@ G_M41923_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
test eax, eax
jne SHORT G_M41923_IG03
;; size=26 bbWeight=4 PerfScore 34.00
-G_M41923_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M41923_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M41923_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M41923_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M41923_IG03
;; size=9 bbWeight=4 PerfScore 16.00
-G_M41923_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M41923_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M41923_IG09: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41923_IG09: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
dec eax
mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=7 bbWeight=2 PerfScore 4.50
-G_M41923_IG10: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M41923_IG10: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov eax, dword ptr [ebp-0x10]
test eax, eax
jl SHORT G_M41923_IG15
;; size=7 bbWeight=8 PerfScore 18.00
-G_M41923_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+G_M41923_IG11: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp eax, ebx
- jae G_M41923_IG30
- mov gword ptr [ebp-0x18], edx
+ jae G_M41923_IG26
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*eax+0x08]
cmp ecx, 256
@@ -147,121 +145,96 @@ G_M41923_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
mov eax, dword ptr [ebp-0x10]
jne SHORT G_M41923_IG09
;; size=40 bbWeight=4 PerfScore 47.00
-G_M41923_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M41923_IG15
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M41923_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M41923_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M41923_IG09
;; size=9 bbWeight=4 PerfScore 16.00
-G_M41923_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov edx, gword ptr [ebp-0x18]
+G_M41923_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=3 bbWeight=2 PerfScore 2.00
-G_M41923_IG15: ; bbWeight=1, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M41923_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov dword ptr [ebp-0x10], eax
cmp edi, eax
- jge G_M41923_IG28
- ;; size=11 bbWeight=1 PerfScore 2.25
-G_M41923_IG16: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jge SHORT G_M41923_IG24
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M41923_IG16: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae G_M41923_IG30
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*edi+0x08], 91
jne SHORT G_M41923_IG17
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae G_M41923_IG30
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*eax+0x08], 93
jne SHORT G_M41923_IG22
inc edi
dec eax
mov dword ptr [ebp-0x10], eax
- ;; size=40 bbWeight=0.50 PerfScore 6.50
-G_M41923_IG17: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=32 bbWeight=0.50 PerfScore 6.50
+G_M41923_IG17: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae SHORT G_M41923_IG30
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*eax+0x08], 93
- je SHORT G_M41923_IG28
+ je SHORT G_M41923_IG24
xor ecx, ecx
cmp eax, edi
- jl SHORT G_M41923_IG28
- mov esi, eax
- or esi, edi
- jl SHORT G_M41923_IG23
- cmp ebx, eax
- jle SHORT G_M41923_IG23
- ;; size=31 bbWeight=0.50 PerfScore 5.25
-G_M41923_IG18: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M41923_IG24
+ ;; size=21 bbWeight=0.50 PerfScore 3.88
+G_M41923_IG18: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, ebx
+ jae SHORT G_M41923_IG26
cmp word ptr [edx+2*eax+0x08], 44
jne SHORT G_M41923_IG20
- ;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M41923_IG19: ; bbWeight=1.98, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=12 bbWeight=4 PerfScore 21.00
+G_M41923_IG19: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp ecx, 4
- je SHORT G_M41923_IG27
- ;; size=6 bbWeight=1.98 PerfScore 2.97
-G_M41923_IG20: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M41923_IG23
+ ;; size=6 bbWeight=2 PerfScore 3.00
+G_M41923_IG20: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
dec eax
cmp eax, edi
jge SHORT G_M41923_IG18
- ;; size=5 bbWeight=3.96 PerfScore 5.94
-G_M41923_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M41923_IG28
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M41923_IG21: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ jmp SHORT G_M41923_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M41923_IG22: ; bbWeight=0.25, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00}
+G_M41923_IG22: ; bbWeight=0.25, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi]
mov dword ptr [ebp-0x10], eax
jmp SHORT G_M41923_IG17
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M41923_IG23: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- cmp eax, ebx
- jae SHORT G_M41923_IG30
- cmp word ptr [edx+2*eax+0x08], 44
- jne SHORT G_M41923_IG25
- ;; size=12 bbWeight=0.04 PerfScore 0.21
-G_M41923_IG24: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- cmp ecx, 4
- je SHORT G_M41923_IG27
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M41923_IG25: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- dec eax
- cmp eax, edi
- jge SHORT G_M41923_IG23
- ;; size=5 bbWeight=0.04 PerfScore 0.06
-G_M41923_IG26: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M41923_IG28
- ;; size=2 bbWeight=0.50 PerfScore 1.00
...
@@ -8,12 +8,12 @@
; 8 inlinees with PGO data; 20 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T10] ( 5, 4.50) ref -> [ebp-0x14] class-hnd single-def <System.String>
-; V01 loc0 [V01,T02] ( 16, 26 ) int -> edi
+; V00 arg0 [V00,T09] ( 5, 4.50) ref -> esi class-hnd single-def <System.String>
+; V01 loc0 [V01,T02] ( 14, 25.50) int -> edi
; V02 loc1 [V02,T03] ( 14, 25.50) int -> [ebp-0x10]
-; V03 loc2 [V03,T06] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <System.String>
-; V04 loc3 [V04,T09] ( 7, 6.50) int -> ecx
-; V05 loc4 [V05,T04] ( 14, 18.54) int -> eax
+; V03 loc2 [V03,T06] ( 9, 16 ) ref -> [ebp-0x14] class-hnd <System.String>
+; V04 loc3 [V04,T10] ( 4, 6.50) int -> ecx
+; V05 loc4 [V05,T04] ( 8, 21.50) int -> eax
; V06 tmp0 [V06,T07] ( 2, 8 ) ubyte -> eax "Inline return value spill temp"
; V07 tmp1 [V07,T00] ( 4, 32 ) ushort -> ecx "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -56,9 +56,9 @@
;* V45 tmp39 [V45 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
;* V46 tmp40 [V46 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp41 [V47 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V48 cse0 [V48,T05] ( 9, 16.04) int -> ebx "CSE - moderate"
+; V48 cse0 [V48,T05] ( 8, 19.50) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M5940_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -66,7 +66,7 @@ G_M5940_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -75,26 +75,24 @@ G_M5940_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [esi+0x04]
lea eax, [ebx-0x01]
mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x14], esi
- ; GC ptr vars +{V00}
mov edx, esi
; gcrRegs +[edx]
jmp SHORT G_M5940_IG04
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M5940_IG03: ; bbWeight=2, gcVars=00000440 {V00 V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx esi]
+ ;; size=15 bbWeight=1 PerfScore 6.00
+G_M5940_IG03: ; bbWeight=2, gcVars=00000040 {V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx]
; GC ptr vars +{V03 V06}
inc edi
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=4 bbWeight=2 PerfScore 2.50
-G_M5940_IG04: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M5940_IG04: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03 V06}
cmp ebx, edi
jle SHORT G_M5940_IG10
;; size=4 bbWeight=8 PerfScore 10.00
-G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
+G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*edi+0x08]
cmp ecx, 256
@@ -104,38 +102,38 @@ G_M5940_IG05: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
test eax, eax
jne SHORT G_M5940_IG03
;; size=26 bbWeight=4 PerfScore 34.00
-G_M5940_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M5940_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M5940_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M5940_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M5940_IG03
;; size=9 bbWeight=4 PerfScore 16.00
-G_M5940_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M5940_IG10
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M5940_IG09: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M5940_IG09: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
dec eax
mov dword ptr [ebp-0x10], eax
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=7 bbWeight=2 PerfScore 4.50
-G_M5940_IG10: ; bbWeight=8, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M5940_IG10: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov eax, dword ptr [ebp-0x10]
test eax, eax
jl SHORT G_M5940_IG15
;; size=7 bbWeight=8 PerfScore 18.00
-G_M5940_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+G_M5940_IG11: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp eax, ebx
- jae G_M5940_IG30
- mov gword ptr [ebp-0x18], edx
+ jae G_M5940_IG26
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
movzx ecx, word ptr [edx+2*eax+0x08]
cmp ecx, 256
@@ -147,121 +145,96 @@ G_M5940_IG11: ; bbWeight=4, gcrefRegs=00000004 {edx}, byrefRegs=00000000
mov eax, dword ptr [ebp-0x10]
jne SHORT G_M5940_IG09
;; size=40 bbWeight=4 PerfScore 47.00
-G_M5940_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
jmp SHORT G_M5940_IG15
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M5940_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M5940_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test byte ptr [ecx+D1FFAB1EH], 128
jne SHORT G_M5940_IG09
;; size=9 bbWeight=4 PerfScore 16.00
-G_M5940_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov edx, gword ptr [ebp-0x18]
+G_M5940_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
;; size=3 bbWeight=2 PerfScore 2.00
-G_M5940_IG15: ; bbWeight=1, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M5940_IG15: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V03}
mov dword ptr [ebp-0x10], eax
cmp edi, eax
- jge G_M5940_IG28
- ;; size=11 bbWeight=1 PerfScore 2.25
-G_M5940_IG16: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jge SHORT G_M5940_IG24
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M5940_IG16: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae G_M5940_IG30
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*edi+0x08], 91
jne SHORT G_M5940_IG17
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae G_M5940_IG30
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*eax+0x08], 93
jne SHORT G_M5940_IG22
inc edi
dec eax
mov dword ptr [ebp-0x10], eax
- ;; size=40 bbWeight=0.50 PerfScore 6.50
-G_M5940_IG17: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=32 bbWeight=0.50 PerfScore 6.50
+G_M5940_IG17: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ebp-0x10]
cmp eax, ebx
- jae SHORT G_M5940_IG30
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*eax+0x08], 93
- je SHORT G_M5940_IG28
+ je SHORT G_M5940_IG24
xor ecx, ecx
cmp eax, edi
- jl SHORT G_M5940_IG28
- mov esi, eax
- or esi, edi
- jl SHORT G_M5940_IG23
- cmp ebx, eax
- jle SHORT G_M5940_IG23
- ;; size=31 bbWeight=0.50 PerfScore 5.25
-G_M5940_IG18: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ jl SHORT G_M5940_IG24
+ ;; size=21 bbWeight=0.50 PerfScore 3.88
+G_M5940_IG18: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, ebx
+ jae SHORT G_M5940_IG26
cmp word ptr [edx+2*eax+0x08], 44
jne SHORT G_M5940_IG20
- ;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M5940_IG19: ; bbWeight=1.98, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ;; size=12 bbWeight=4 PerfScore 21.00
+G_M5940_IG19: ; bbWeight=2, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp ecx, 4
- je SHORT G_M5940_IG27
- ;; size=6 bbWeight=1.98 PerfScore 2.97
-G_M5940_IG20: ; bbWeight=3.96, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M5940_IG23
+ ;; size=6 bbWeight=2 PerfScore 3.00
+G_M5940_IG20: ; bbWeight=4, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
dec eax
cmp eax, edi
jge SHORT G_M5940_IG18
- ;; size=5 bbWeight=3.96 PerfScore 5.94
-G_M5940_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M5940_IG28
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M5940_IG21: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[esi]
+ jmp SHORT G_M5940_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M5940_IG22: ; bbWeight=0.25, gcVars=00000400 {V00}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00}
+G_M5940_IG22: ; bbWeight=0.25, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi]
mov dword ptr [ebp-0x10], eax
jmp SHORT G_M5940_IG17
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M5940_IG23: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- cmp eax, ebx
- jae SHORT G_M5940_IG30
- cmp word ptr [edx+2*eax+0x08], 44
- jne SHORT G_M5940_IG25
- ;; size=12 bbWeight=0.04 PerfScore 0.21
-G_M5940_IG24: ; bbWeight=0.02, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- cmp ecx, 4
- je SHORT G_M5940_IG27
- ;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M5940_IG25: ; bbWeight=0.04, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
- dec eax
- cmp eax, edi
- jge SHORT G_M5940_IG23
- ;; size=5 bbWeight=0.04 PerfScore 0.06
-G_M5940_IG26: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- jmp SHORT G_M5940_IG28
- ;; size=2 bbWeight=0.50 PerfScore 1.00
...
@@ -3,56 +3,56 @@
; FullOpts code
; optimized code
; ebp based frame
-; partially interruptible
+; fully interruptible
; No matching PGO data
; 3 inlinees with PGO data; 6 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 10, 6.50) ref -> esi class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T21] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T09] ( 10, 6.50) ref -> esi class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V01 arg1 [V01,T23] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T05] ( 7, 5.50) int -> [ebp-0x10] spill-single-def
-; V04 loc2 [V04,T00] ( 16, 9 ) int -> [ebp-0x14]
+; V03 loc1 [V03,T14] ( 6, 5 ) int -> [ebp-0x10] spill-single-def
+; V04 loc2 [V04,T00] ( 12, 24.50) int -> [ebp-0x14]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
-;* V07 loc5 [V07,T24] ( 0, 0 ) int -> zero-ref
+; V07 loc5 [V07,T04] ( 4, 13 ) int -> edi
;* V08 tmp0 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V09 tmp1 [V09,T23] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V09 tmp1 [V09,T18] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V10 tmp2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp3 [V11,T04] ( 3, 6 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
-; V12 tmp4 [V12,T12] ( 2, 4 ) byref -> [ebp-0x20] spill-single-def "Inlining Arg"
+; V11 tmp3 [V11,T13] ( 3, 6 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
+; V12 tmp4 [V12,T17] ( 2, 4 ) byref -> [ebp-0x24] spill-single-def "Inlining Arg"
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp8 [V16,T03] ( 4, 6 ) int -> registers "Inlining Arg"
-; V17 tmp9 [V17,T13] ( 4, 3.50) byref -> ecx "Inlining Arg"
+; V16 tmp8 [V16,T03] ( 2, 16 ) int -> ecx "Inlining Arg"
+; V17 tmp9 [V17,T06] ( 2, 10 ) byref -> edx "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp12 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V21 tmp13 [V21,T02] ( 6, 6 ) int -> [ebp-0x1C] "Inlining Arg"
-; V22 tmp14 [V22,T10] ( 4, 4 ) byref -> [ebp-0x24] "Inlining Arg"
+; V21 tmp13 [V21,T01] ( 3, 24 ) int -> [ebp-0x1C] spill-single-def "Inlining Arg"
+; V22 tmp14 [V22,T02] ( 2, 16 ) byref -> [ebp-0x28] spill-single-def "Inlining Arg"
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp16 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp17 [V25,T11] ( 4, 4 ) int -> ebx "Inlining Arg"
-; V26 tmp18 [V26,T07] ( 5, 5 ) int -> edi "Inlining Arg"
+; V25 tmp17 [V25,T16] ( 4, 4 ) int -> [ebp-0x20] "Inlining Arg"
+; V26 tmp18 [V26,T15] ( 5, 5 ) int -> ebx "Inlining Arg"
;* V27 tmp19 [V27 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V28 tmp20 [V28,T17] ( 4, 2 ) int -> edx single-def "Inline stloc first use temp"
-; V29 tmp21 [V29,T15] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V30 tmp22 [V30,T14] ( 4, 3 ) byref -> edi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp23 [V31,T06] ( 7, 5 ) int -> ebx single-def "field V02._length (fldOffset=0x4)" P-INDEP
-; V32 tmp24 [V32,T08] ( 6, 4 ) byref -> ecx "field V05._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp25 [V33,T09] ( 6, 4 ) int -> registers "field V05._length (fldOffset=0x4)" P-INDEP
+; V28 tmp20 [V28,T20] ( 4, 2 ) int -> eax single-def "Inline stloc first use temp"
+; V29 tmp21 [V29,T19] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V30 tmp22 [V30,T12] ( 3, 6 ) byref -> [ebp-0x2C] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V31 tmp23 [V31,T05] ( 5, 11 ) int -> ebx single-def "field V02._length (fldOffset=0x4)" P-INDEP
+; V32 tmp24 [V32,T07] ( 4, 9.50) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp25 [V33,T08] ( 4, 9.50) int -> registers "field V05._length (fldOffset=0x4)" P-INDEP
;* V34 tmp26 [V34 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp27 [V35 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP
-; V36 tmp28 [V36,T19] ( 2, 2 ) byref -> ecx single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-; V37 tmp29 [V37,T22] ( 2, 2 ) int -> eax single-def "field V10._length (fldOffset=0x4)" P-INDEP
+; V36 tmp28 [V36,T21] ( 2, 2 ) byref -> edx single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V37 tmp29 [V37,T24] ( 2, 2 ) int -> ecx single-def "field V10._length (fldOffset=0x4)" P-INDEP
;* V38 tmp30 [V38 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V39 tmp31 [V39 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x4)" P-INDEP
-; V40 tmp32 [V40,T16] ( 4, 2 ) byref -> ecx "field V20._reference (fldOffset=0x0)" P-INDEP
-; V41 tmp33 [V41,T18] ( 4, 2 ) int -> registers "field V20._length (fldOffset=0x4)" P-INDEP
-; V42 tmp34 [V42,T20] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V40 tmp32 [V40,T10] ( 2, 8 ) byref -> ecx "field V20._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp33 [V41,T11] ( 2, 8 ) int -> edx "field V20._length (fldOffset=0x4)" P-INDEP
+; V42 tmp34 [V42,T22] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M26483_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -60,41 +60,46 @@ G_M26483_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 24
+ sub esp, 32
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
G_M26483_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, bword ptr [ebp+0x08]
; byrRegs +[edi]
+ mov bword ptr [ebp-0x2C], edi
+ ; GC ptr vars +{V30}
mov ebx, dword ptr [ebp+0x0C]
mov eax, dword ptr [esi+0x30]
+ mov dword ptr [ebp-0x14], eax
mov edx, eax
mov dword ptr [ebp-0x10], edx
cmp edx, ebx
jbe SHORT G_M26483_IG04
- ;; size=18 bbWeight=1 PerfScore 6.50
+ ;; size=24 bbWeight=1 PerfScore 8.50
G_M26483_IG03: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
; byrRegs -[edi]
+ ; GC ptr vars -{V30}
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M26483_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+G_M26483_IG04: ; bbWeight=1, gcVars=00001000 {V30}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
; gcrRegs +[esi]
; byrRegs +[edi]
+ ; GC ptr vars +{V12 V30}
lea ecx, bword ptr [edi+2*edx]
; byrRegs +[ecx]
- mov bword ptr [ebp-0x20], ecx
- ; GC ptr vars +{V12}
- mov eax, ebx
- sub eax, edx
- mov dword ptr [ebp-0x18], eax
- test eax, eax
+ mov bword ptr [ebp-0x24], ecx
+ mov ecx, ebx
+ ; byrRegs -[ecx]
+ sub ecx, edx
+ mov dword ptr [ebp-0x18], ecx
+ test ecx, ecx
jge SHORT G_M26483_IG06
;; size=17 bbWeight=1 PerfScore 4.25
-G_M26483_IG05: ; bbWeight=0.50, gcVars=00001000 {V12}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
- ; byrRegs -[ecx]
+G_M26483_IG05: ; bbWeight=0.50, gcVars=00021000 {V12 V30}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; byrRegs -[edi]
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -102,36 +107,42 @@ G_M26483_IG05: ; bbWeight=0.50, gcVars=00001000 {V12}, gcrefRegs=00000040
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M26483_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov ecx, bword ptr [ebp-0x20]
- ; byrRegs +[ecx]
- mov eax, dword ptr [ebp-0x18]
- cmp eax, 2
- jl G_M26483_IG18
- ;; size=15 bbWeight=1 PerfScore 3.25
-G_M26483_IG07: ; bbWeight=0.12, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000082 {ecx edi}, gcvars, byref
+G_M26483_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, bword ptr [ebp-0x24]
+ ; byrRegs +[edx]
+ mov ecx, dword ptr [ebp-0x18]
+ xor edi, edi
+ ;; size=8 bbWeight=1 PerfScore 2.25
+G_M26483_IG07: ; bbWeight=4, gcVars=00001000 {V30}, gcrefRegs=00000040 {esi}, byrefRegs=00000004 {edx}, gcvars, byref
; GC ptr vars -{V12}
- cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M26483_IG18
- ;; size=12 bbWeight=0.12 PerfScore 0.50
-G_M26483_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
- ; byrRegs -[ecx]
- mov edx, dword ptr [ebp-0x10]
- lea eax, [edx+0x02]
+ cmp ecx, 2
+ jl G_M26483_IG16
+ ;; size=9 bbWeight=4 PerfScore 5.00
+G_M26483_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000004 {edx}, byref
+ cmp dword ptr [edx], 0xD1FFAB1E
+ jne G_M26483_IG16
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M26483_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; byrRegs -[edx]
+ mov eax, dword ptr [ebp-0x14]
+ add eax, 2
cmp eax, ebx
ja SHORT G_M26483_IG03
- lea ecx, bword ptr [edi+2*eax]
+ mov edx, bword ptr [ebp-0x2C]
+ ; byrRegs +[edx]
+ lea ecx, bword ptr [edx+2*eax]
; byrRegs +[ecx]
- mov bword ptr [ebp-0x24], ecx
+ mov bword ptr [ebp-0x28], ecx
; GC ptr vars +{V22}
mov dword ptr [ebp-0x14], eax
mov edx, ebx
+ ; byrRegs -[edx]
sub edx, eax
mov dword ptr [ebp-0x1C], edx
test edx, edx
- jge SHORT G_M26483_IG10
- ;; size=30 bbWeight=0.50 PerfScore 4.00
-G_M26483_IG09: ; bbWeight=0.25, gcVars=00000400 {V22}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
+ jge SHORT G_M26483_IG11
+ ;; size=33 bbWeight=4 PerfScore 35.00
+G_M26483_IG10: ; bbWeight=2, gcVars=00001004 {V22 V30}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[ecx]
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
@@ -139,90 +150,72 @@ G_M26483_IG09: ; bbWeight=0.25, gcVars=00000400 {V22}, gcrefRegs=00000040
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- ;; size=16 bbWeight=0.25 PerfScore 0.88
-G_M26483_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- mov ecx, bword ptr [ebp-0x24]
+ ;; size=16 bbWeight=2 PerfScore 7.00
+G_M26483_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, bword ptr [ebp-0x28]
; byrRegs +[ecx]
mov edx, dword ptr [ebp-0x1C]
- cmp edx, 2
- jl G_M26483_IG18
- ;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M26483_IG11: ; bbWeight=0.12, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000082 {ecx edi}, gcvars, byref
- ; GC ptr vars -{V22}
- mov eax, dword ptr [ebp-0x14]
- cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M26483_IG18
- ;; size=15 bbWeight=0.12 PerfScore 0.62
-G_M26483_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+ inc edi
+ cmp edi, 2
+ mov eax, ecx
+ ; byrRegs +[eax]
+ mov ecx, edx
; byrRegs -[ecx]
- add eax, 2
- cmp eax, ebx
- ja G_M26483_IG03
- lea ecx, bword ptr [edi+2*eax]
- ; byrRegs +[ecx]
- mov edi, ecx
- mov dword ptr [ebp-0x14], eax
- sub ebx, eax
- jns SHORT G_M26483_IG14
- ;; size=23 bbWeight=0.50 PerfScore 2.25
-G_M26483_IG13: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
- ; byrRegs -[ecx]
- mov ecx, 0xD1FFAB1E
- ; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
...
@@ -12,14 +12,14 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
; V02 arg2 [V02,T28] ( 8, 7 ) ubyte -> [ebp-0x24] EH-live single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 4) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V04 loc1 [V04,T01] ( 12,132 ) ref -> [ebp-0x6C] class-hnd <<unknown class>>
+; V04 loc1 [V04,T06] ( 8, 68 ) ref -> [ebp-0x6C] class-hnd <<unknown class>>
; V05 loc2 [V05,T27] ( 3, 12 ) int -> edx
-; 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,T15] ( 5, 35 ) int -> [ebp-0x28] do-not-enreg[Z] EH-live
; V08 loc5 [V08,T37] ( 2, 5 ) ref -> esi class-hnd exact single-def <System.Runtime.Caching.MemoryCacheStore>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Runtime.Caching.ExpiresEntryRef>
;* V10 loc7 [V10 ] ( 0, 0 ) struct ( 4) zero-ref <System.Runtime.Caching.ExpiresEntryRef>
-; V11 loc8 [V11,T06] ( 16, 74 ) ref -> [ebp-0x70] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
+; V11 loc8 [V11,T05] ( 16, 74 ) ref -> [ebp-0x70] class-hnd exact EH-live spill-single-def <System.Runtime.Caching.ExpiresBucket>
; V12 loc9 [V12 ] ( 6, 6 ) ubyte -> [ebp-0x2C] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V13 loc10 [V13,T25] ( 4, 13 ) int -> [ebp-0x30]
;* V14 loc11 [V14,T48] ( 0, 0 ) int -> zero-ref do-not-enreg[M] EH-live
@@ -59,7 +59,7 @@
; V48 tmp28 [V48,T30] ( 6, 6 ) ref -> esi class-hnd exact "Inlining Arg" <System.Runtime.Caching.MemoryCacheStore>
; V49 tmp29 [V49,T29] ( 8, 8 ) long -> [ebp+0x08] do-not-enreg[F] single-def "field V01._dateData (fldOffset=0x0)" P-INDEP
; V50 tmp30 [V50,T16] ( 5, 35 ) int -> [ebp-0x40] do-not-enreg[Z] EH-live "field V03._ref (fldOffset=0x0)" P-INDEP
-; V51 tmp31 [V51,T05] ( 15, 83 ) int -> edx "field V09._ref (fldOffset=0x0)" P-INDEP
+; V51 tmp31 [V51,T04] ( 15, 83 ) int -> edx "field V09._ref (fldOffset=0x0)" P-INDEP
; V52 tmp32 [V52,T19] ( 4, 24 ) int -> edi "field V10._ref (fldOffset=0x0)" P-INDEP
;* V53 tmp33 [V53,T49] ( 0, 0 ) int -> zero-ref single-def "field V20._ref (fldOffset=0x0)" P-INDEP
;* V54 tmp34 [V54,T24] ( 0, 0 ) int -> zero-ref "field V21._ref (fldOffset=0x0)" P-INDEP
@@ -77,17 +77,17 @@
; V66 tmp46 [V66,T10] ( 3, 48 ) ref -> ecx "arr expr"
; V67 tmp47 [V67,T11] ( 3, 48 ) ref -> ecx "arr expr"
; V68 EHSlots [V68 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V69 cse0 [V69,T23] ( 4, 16 ) byref -> edx "CSE - conservative"
-;* V70 cse1 [V70 ] ( 0, 0 ) long -> zero-ref "CSE - conservative"
-; V71 cse2 [V71,T02] ( 6,128 ) int -> ebx "CSE - aggressive"
+; V69 cse0 [V69,T01] ( 6,128 ) byref -> ebx "CSE - aggressive"
+; V70 cse1 [V70,T23] ( 4, 16 ) byref -> edx "CSE - conservative"
+;* V71 cse2 [V71 ] ( 0, 0 ) long -> zero-ref "CSE - conservative"
; V72 cse3 [V72,T44] ( 3, 3 ) ref -> edx "CSE - conservative"
; V73 cse4 [V73,T45] ( 3, 3 ) ref -> ecx "CSE - conservative"
; V74 cse5 [V74,T13] ( 4, 44 ) int -> [ebp-0x5C] spill-single-def "CSE - moderate"
-; V75 rat0 [V75,T21] ( 4, 19 ) int -> [ebp-0x60] "field V70.lo (fldOffset=0x0)" P-INDEP
-; V76 rat1 [V76,T22] ( 4, 19 ) int -> [ebp-0x64] "field V70.hi (fldOffset=0x4)" P-INDEP
+; V75 rat0 [V75,T21] ( 4, 19 ) int -> [ebp-0x60] "field V71.lo (fldOffset=0x0)" P-INDEP
+; V76 rat1 [V76,T22] ( 4, 19 ) int -> [ebp-0x64] "field V71.hi (fldOffset=0x4)" P-INDEP
; V77 rat2 [V77,T35] ( 3, 6 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
; V78 rat3 [V78,T36] ( 3, 6 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V79 rat4 [V79,T04] ( 3, 96 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
+; V79 rat4 [V79,T03] ( 3, 96 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 104
@@ -197,7 +197,7 @@ G_M744_IG10: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {
xor eax, eax
mov dword ptr [ebp-0x2C], eax
;; size=10 bbWeight=1 PerfScore 2.50
-G_M744_IG11: ; bbWeight=1, gcVars=0000000000040040 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M744_IG11: ; bbWeight=1, gcVars=0000000000040020 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ecx]
; GC ptr vars -{V18}
cmp byte ptr [ebp-0x2C], 0
@@ -212,9 +212,9 @@ G_M744_IG12: ; bbWeight=0, gcVars=0000000000040000 {V00}, gcrefRegs=00000
G_M744_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M744_IG14: ; bbWeight=1, gcVars=0000000000040040 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M744_IG14: ; bbWeight=1, gcVars=0000000000040020 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx]
- ; GC ptr vars +{V06 V11}
+ ; GC ptr vars +{V05 V11}
lea edx, [ebp-0x2C]
mov ecx, ebx
; gcrRegs +[ecx]
@@ -272,15 +272,15 @@ G_M744_IG17: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {
;; size=4 bbWeight=1 PerfScore 1.25
G_M744_IG18: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx]
- ; GC ptr vars -{V06 V11}
+ ; GC ptr vars -{V05 V11}
mov dword ptr [ebp-0x1C], 0
mov dword ptr [ebp-0x18], 252
push G_M744_IG36
jmp G_M744_IG37
;; size=24 bbWeight=1 PerfScore 5.00
-G_M744_IG19: ; bbWeight=1, gcVars=0000000000040040 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M744_IG19: ; bbWeight=1, gcVars=0000000000040020 {V00 V11}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ebx]
- ; GC ptr vars +{V06 V11}
+ ; GC ptr vars +{V05 V11}
mov esi, dword ptr [ebp-0x60]
mov edi, dword ptr [ebp-0x64]
push dword ptr [ebp+0x0C]
@@ -326,15 +326,21 @@ G_M744_IG21: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {
cmp ecx, 1
jle G_M744_IG27
;; size=45 bbWeight=4 PerfScore 45.00
-G_M744_IG22: ; bbWeight=32, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+G_M744_IG22: ; bbWeight=32, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
lea ebx, [esi+2*esi]
- mov ecx, gword ptr [eax+4*ebx+0x10]
+ mov gword ptr [ebp-0x6C], eax
+ ; GC ptr vars +{V04}
+ lea ebx, bword ptr [eax+4*ebx+0x08]
+ ; byrRegs +[ebx]
+ mov ecx, gword ptr [ebx+0x08]
; gcrRegs +[ecx]
test ecx, ecx
- je G_M744_IG26
- ;; size=15 bbWeight=32 PerfScore 120.00
-G_M744_IG23: ; bbWeight=16, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
- lea edi, bword ptr [eax+4*ebx+0x08]
+ je SHORT G_M744_IG26
+ ;; size=17 bbWeight=32 PerfScore 184.00
+G_M744_IG23: ; bbWeight=16, gcVars=0000000000040060 {V00 V04 V11}, gcrefRegs=00000002 {ecx}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ ; GC ptr vars -{V05}
+ mov edi, ebx
; byrRegs +[edi]
mov edx, dword ptr [edi]
mov edi, dword ptr [edi+0x04]
@@ -348,35 +354,29 @@ G_M744_IG23: ; bbWeight=16, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000
mov edi, dword ptr [ebp-0x64]
sbb edi, edx
jge SHORT G_M744_IG24
- shl ebx, 2
- add ebx, 8
- mov gword ptr [ebp-0x6C], eax
- ; GC ptr vars +{V04}
- add ebx, eax
- ; byrRegs +[ebx]
push dword ptr [ebx+0x04]
push dword ptr [ebx]
mov ecx, gword ptr [ebp-0x70]
- ; GC ptr vars -{V06}
call [System.Runtime.Caching.ExpiresBucket:AddCount(System.DateTime):this]
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
; byrRegs -[ebx]
jmp SHORT G_M744_IG25
- ;; size=64 bbWeight=16 PerfScore 412.00
-G_M744_IG24: ; bbWeight=16, gcVars=0000000000040040 {V00 V11}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[eax ecx]
- ; GC ptr vars -{V04}
+ ;; size=51 bbWeight=16 PerfScore 368.00
+G_M744_IG24: ; bbWeight=16, gcrefRegs=00000002 {ecx}, byrefRegs=00000008 {ebx}, byref
+ ; gcrRegs +[ecx]
+ ; byrRegs +[ebx]
mov byte ptr [ecx+0x1C], 255
xor edx, edx
mov dword ptr [ecx+0x3C], edx
- mov dword ptr [eax+4*ebx+0x0C], 1
+ mov dword ptr [ebx+0x04], 1
mov ecx, dword ptr [ebp-0x40]
; gcrRegs -[ecx]
- mov dword ptr [eax+4*ebx+0x08], ecx
+ mov dword ptr [ebx], ecx
mov edi, dword ptr [ebp-0x34]
mov ecx, edi
shl ecx, 8
mov ebx, esi
+ ; byrRegs -[ebx]
movzx edx, bl
or ecx, edx
mov dword ptr [ebp-0x40], ecx
@@ -386,28 +386,26 @@ G_M744_IG24: ; bbWeight=16, gcVars=0000000000040040 {V00 V11}, gcrefRegs=
mov ebx, gword ptr [ebp-0x70]
; gcrRegs +[ebx]
inc dword ptr [ebx+0x18]
- mov gword ptr [ebp-0x6C], eax
- ; GC ptr vars +{V04}
mov dword ptr [ebp-0x34], edi
- ;; size=61 bbWeight=16 PerfScore 272.00
-G_M744_IG25: ; bbWeight=16, gcVars=0000000000040042 {V00 V04 V11}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax ebx]
+ ;; size=55 bbWeight=16 PerfScore 256.00
+G_M744_IG25: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
mov ecx, dword ptr [ebp-0x38]
dec ecx
mov dword ptr [ebp-0x38], ecx
- mov eax, gword ptr [ebp-0x6C]
- ; gcrRegs +[eax]
je SHORT G_M744_IG27
- ;; size=12 bbWeight=16 PerfScore 68.00
-G_M744_IG26: ; bbWeight=32, gcVars=0000000000040040 {V00 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V04}
+ ;; size=9 bbWeight=16 PerfScore 52.00
+G_M744_IG26: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
inc esi
mov ecx, dword ptr [ebp-0x5C]
cmp ecx, esi
+ mov eax, gword ptr [ebp-0x6C]
+ ; gcrRegs +[eax]
jg G_M744_IG22
- ;; size=12 bbWeight=32 PerfScore 80.00
-G_M744_IG27: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=15 bbWeight=32 PerfScore 112.00
+G_M744_IG27: ; bbWeight=4, gcVars=0000000000040020 {V00 V11}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
+ ; GC ptr vars -{V04}
mov esi, dword ptr [ebp-0x30]
dec esi
mov dword ptr [ebp-0x30], esi
@@ -763,7 +761,7 @@ G_M744_IG66: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1278, prolog size 35, PerfScore 1819.33, instruction count 404, allocated bytes for code 1278 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
+; Total bytes of code 1261, prolog size 35, PerfScore 1839.33, instruction count 401, allocated bytes for code 1261 (MethodHash=d871fd17) for method System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
; ============================================================
*************** EH table for System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this
@@ -3,47 +3,47 @@
; FullOpts code
; optimized code
; ebp 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 -> edi this single-def
-; V01 arg1 [V01,T19] ( 1, 1 ) struct (16) [ebp+0x08] single-def <System.Decimal>
+; V00 this [V00,T01] ( 12, 7 ) byref -> edi this single-def
+; V01 arg1 [V01,T18] ( 1, 1 ) struct (16) [ebp+0x08] single-def <System.Decimal>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[int]>
-; V03 loc1 [V03,T00] ( 10, 16 ) int -> esi
+; V03 loc1 [V03,T02] ( 9, 4.75) int -> esi
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[int]>
; V05 tmp0 [V05 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Decimal>
-; V08 tmp3 [V08,T04] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V09 tmp4 [V09,T10] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
+; V08 tmp3 [V08,T03] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V09 tmp4 [V09,T09] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
;* V10 tmp5 [V10 ] ( 0, 0 ) byref -> zero-ref
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref single-def ptr
-; V12 tmp7 [V12,T17] ( 2, 1 ) int -> ecx
-; V13 tmp8 [V13,T05] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V14 tmp9 [V14,T11] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
-; V15 tmp10 [V15,T06] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V16 tmp11 [V16,T12] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
-; V17 tmp12 [V17,T13] ( 2, 2 ) int -> edx "impAppendStmt"
+; V12 tmp7 [V12,T16] ( 2, 1 ) int -> ecx
+; V13 tmp8 [V13,T04] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V14 tmp9 [V14,T10] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
+; V15 tmp10 [V15,T05] ( 3, 3 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
+; V16 tmp11 [V16,T11] ( 2, 2 ) int -> edx "Strict ordering of exceptions for Array store"
+; V17 tmp12 [V17,T12] ( 2, 2 ) int -> edx "impAppendStmt"
;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref ptr
;* V20 tmp15 [V20 ] ( 0, 0 ) byref -> zero-ref single-def ptr
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref ptr
-; V22 tmp17 [V22,T18] ( 2, 1 ) int -> ecx
+; V22 tmp17 [V22,T17] ( 2, 1 ) int -> ecx
; V23 tmp18 [V23 ] ( 7, 13 ) struct (16) [ebp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V24 tmp19 [V24,T08] ( 3, 2.50) int -> edx "Inline stloc first use temp"
+; V24 tmp19 [V24,T07] ( 3, 2.50) int -> edx "Inline stloc first use temp"
;* V25 tmp20 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Decimal>
;* V27 tmp22 [V27 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-; V30 tmp25 [V30,T01] ( 12, 12 ) byref -> ebx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp26 [V31,T20] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" P-INDEP
+; V30 tmp25 [V30,T00] ( 14, 9.50) byref -> ebx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V31 tmp26 [V31,T19] ( 0, 0 ) int -> zero-ref ptr "field V02._length (fldOffset=0x4)" P-INDEP
;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x4)" P-INDEP
-; V34 tmp29 [V34,T09] ( 2, 2 ) byref -> ebx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V35 tmp30 [V35,T21] ( 0, 0 ) int -> zero-ref ptr "field V06._length (fldOffset=0x4)" P-INDEP
+; V34 tmp29 [V34,T08] ( 2, 2 ) byref -> ebx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V35 tmp30 [V35,T20] ( 0, 0 ) int -> zero-ref ptr "field V06._length (fldOffset=0x4)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "field V07._flags (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V07._hi32 (fldOffset=0x4)" P-INDEP
;* V38 tmp33 [V38 ] ( 0, 0 ) long -> zero-ref "field V07._lo64 (fldOffset=0x8)" P-INDEP
@@ -52,12 +52,11 @@
; V41 tmp36 [V41 ] ( 4, 5 ) long -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V23._lo64 (fldOffset=0x8)" P-DEP
;* V42 tmp37 [V42 ] ( 0, 0 ) byref -> zero-ref single-def ptr "field V25._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref ptr "field V25._length (fldOffset=0x4)" P-INDEP
-; V44 tmp39 [V44,T14] ( 2, 2 ) int -> ecx "field V26._flags (fldOffset=0x0)" P-INDEP
-; V45 tmp40 [V45,T15] ( 2, 2 ) int -> edx "field V26._hi32 (fldOffset=0x4)" P-INDEP
-; V46 tmp41 [V46,T07] ( 3, 3 ) long -> [ebp-0x38] do-not-enreg[F] "field V26._lo64 (fldOffset=0x8)" P-INDEP
+; V44 tmp39 [V44,T13] ( 2, 2 ) int -> ecx "field V26._flags (fldOffset=0x0)" P-INDEP
+; V45 tmp40 [V45,T14] ( 2, 2 ) int -> edx "field V26._hi32 (fldOffset=0x4)" P-INDEP
+; V46 tmp41 [V46,T06] ( 3, 3 ) long -> [ebp-0x38] do-not-enreg[F] "field V26._lo64 (fldOffset=0x8)" P-INDEP
; V47 GsCookie [V47 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V48 cse0 [V48,T16] ( 3, 1.50) int -> edx "CSE - conservative"
-; V49 cse1 [V49,T02] ( 3, 10 ) int -> ecx "CSE - aggressive"
+; V48 cse0 [V48,T15] ( 3, 1.50) int -> edx "CSE - conservative"
;
; Lcl frame size = 44
@@ -104,28 +103,46 @@ G_M46478_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {e
mov esi, 3
jmp SHORT G_M46478_IG06
;; size=42 bbWeight=1 PerfScore 14.25
-G_M46478_IG05: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
- mov esi, ecx
- test esi, esi
- jle SHORT G_M46478_IG07
- ;; size=6 bbWeight=2 PerfScore 3.00
-G_M46478_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
- lea ecx, [esi-0x01]
- cmp ecx, 4
- jae G_M46478_IG17
- cmp dword ptr [ebx+4*esi-0x04], 0
+G_M46478_IG05: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ mov esi, 2
+ jmp SHORT G_M46478_IG09
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp dword ptr [ebx+0x08], 0
je SHORT G_M46478_IG05
- ;; size=19 bbWeight=4 PerfScore 23.00
-G_M46478_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG07: ; bbWeight=0.12, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ mov esi, 1
+ jmp SHORT G_M46478_IG12
+ ;; size=7 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp dword ptr [ebx+0x04], 0
+ je SHORT G_M46478_IG08
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG10: ; bbWeight=0.12, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ jmp SHORT G_M46478_IG13
+ ;; size=2 bbWeight=0.12 PerfScore 0.25
+G_M46478_IG11: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ xor esi, esi
+ jmp SHORT G_M46478_IG13
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+ cmp dword ptr [ebx], 0
+ je SHORT G_M46478_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M46478_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
test esi, esi
- jne SHORT G_M46478_IG11
+ jne SHORT G_M46478_IG17
;; size=4 bbWeight=1 PerfScore 1.25
-G_M46478_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
; byrRegs -[ebx]
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M46478_IG18
+ je G_M46478_IG24
;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
+G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
mov esi, gword ptr [D1FFAB1EH]
; gcrRegs +[esi]
add esi, 4
@@ -134,11 +151,11 @@ G_M46478_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080
call CORINFO_HELP_ASSIGN_BYREF
movsd
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M46478_IG10
+ je SHORT G_M46478_IG16
call CORINFO_HELP_FAIL_FAST
; byrRegs -[esi edi]
;; size=29 bbWeight=0.50 PerfScore 4.12
-G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -146,13 +163,13 @@ G_M46478_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop ebp
ret 16
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M46478_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
+G_M46478_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
; byrRegs +[ebx edi]
cmp esi, 1
- jne SHORT G_M46478_IG13
+ jne SHORT G_M46478_IG19
mov edx, dword ptr [ebx]
test edx, edx
- jle SHORT G_M46478_IG13
+ jle SHORT G_M46478_IG19
mov dword ptr [edi+0x04], edx
mov edx, dword ptr [edi+0x04]
mov ecx, -1
@@ -165,12 +182,12 @@ G_M46478_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; gcrRegs +[edx]
mov gword ptr [edi], edx
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M46478_IG12
+ je SHORT G_M46478_IG18
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[edx]
; byrRegs -[ebx edi]
;; size=61 bbWeight=0.50 PerfScore 9.75
-G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M46478_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -178,7 +195,7 @@ G_M46478_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop ebp
ret 16
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M46478_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
+G_M46478_IG19: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, gcvars, byref, isz
; byrRegs +[ebx edi]
mov edx, esi
mov ecx, 0xD1FFAB1E ; <unknown class>
@@ -193,28 +210,28 @@ G_M46478_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; gcrRegs +[ecx]
mov edx, dword ptr [ebx]
cmp dword ptr [ecx+0x04], 0
- jbe SHORT G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [ecx+0x08], edx
cmp esi, 1
- jle SHORT G_M46478_IG14
+ jle SHORT G_M46478_IG20
mov ecx, gword ptr [edi]
mov edx, dword ptr [ebx+0x04]
cmp dword ptr [ecx+0x04], 1
- jbe SHORT G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [ecx+0x0C], edx
;; size=51 bbWeight=0.50 PerfScore 11.00
-G_M46478_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M46478_IG20: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
; gcrRegs -[ecx]
cmp esi, 2
- jle SHORT G_M46478_IG15
+ jle SHORT G_M46478_IG21
mov ecx, gword ptr [edi]
; gcrRegs +[ecx]
mov edx, dword ptr [ebx+0x08]
cmp dword ptr [ecx+0x04], 2
- jbe SHORT G_M46478_IG17
+ jbe SHORT G_M46478_IG23
mov dword ptr [ecx+0x10], edx
;; size=19 bbWeight=0.50 PerfScore 5.12
-G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M46478_IG21: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
; gcrRegs -[ecx]
mov ecx, -1
mov edx, 1
@@ -222,11 +239,11 @@ G_M46478_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088
cmove ecx, edx
mov dword ptr [edi+0x04], ecx
cmp dword ptr [ebp-0x10], 0xD1FFAB1E
- je SHORT G_M46478_IG16
+ je SHORT G_M46478_IG22
call CORINFO_HELP_FAIL_FAST
; byrRegs -[ebx edi]
;; size=37 bbWeight=0.50 PerfScore 4.38
-G_M46478_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M46478_IG22: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
...
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.windows.x86.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_pgo.windows.x86.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_tiered.windows.x86.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
coreclr_tests.run.windows.x86.checked.mch | 113 | 8 | 105 | 0 | -65 | +20,907 |
libraries.crossgen2.windows.x86.checked.mch | 6 | 5 | 1 | 0 | -293 | +9 |
libraries.pmi.windows.x86.checked.mch | 7 | 5 | 2 | 0 | -289 | +182 |
libraries_tests.run.windows.x86.Release.mch | 489 | 61 | 428 | 0 | -1,526 | +263,689 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 15 | 13 | 2 | 0 | -1,375 | +112 |
realworld.run.windows.x86.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
630 | 92 | 538 | 0 | -3,548 | +284,899 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.windows.x86.checked.mch | 24,488 | 4 | 24,484 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.windows.x86.checked.mch | 119,711 | 42,004 | 77,707 | 152 (0.13%) | 152 (0.13%) |
benchmarks.run_tiered.windows.x86.checked.mch | 47,907 | 28,726 | 19,181 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.windows.x86.checked.mch | 575,160 | 320,010 | 255,150 | 245 (0.04%) | 247 (0.04%) |
libraries.crossgen2.windows.x86.checked.mch | 241,927 | 15 | 241,912 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.windows.x86.checked.mch | 304,230 | 6 | 304,224 | 2 (0.00%) | 2 (0.00%) |
libraries_tests.run.windows.x86.Release.mch | 634,026 | 429,177 | 204,849 | 1,684 (0.26%) | 1,783 (0.28%) |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 315,748 | 21,872 | 293,876 | 7 (0.00%) | 7 (0.00%) |
realworld.run.windows.x86.checked.mch | 35,982 | 3 | 35,979 | 0 (0.00%) | 0 (0.00%) |
2,299,179 | 841,817 | 1,457,362 | 2,090 (0.09%) | 2,191 (0.10%) |
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 308813223 (overridden on cmd)
Total bytes of diff: 308834065 (overridden on cmd)
Total bytes of delta: 20842 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
670 : 2168.dasm (40.48 % of base)
456 : 225158.dasm (19.90 % of base)
456 : 275933.dasm (19.90 % of base)
439 : 234074.dasm (18.78 % of base)
439 : 171454.dasm (18.78 % of base)
432 : 82409.dasm (16.55 % of base)
432 : 30054.dasm (16.22 % of base)
424 : 168588.dasm (16.73 % of base)
424 : 130114.dasm (16.73 % of base)
424 : 150328.dasm (16.73 % of base)
424 : 181549.dasm (16.82 % of base)
424 : 108467.dasm (16.73 % of base)
424 : 42653.dasm (16.82 % of base)
420 : 34038.dasm (16.77 % of base)
182 : 23193.dasm (13.30 % of base)
169 : 155429.dasm (12.58 % of base)
169 : 22673.dasm (12.58 % of base)
169 : 237715.dasm (12.31 % of base)
169 : 365264.dasm (12.58 % of base)
169 : 368240.dasm (12.58 % of base)
Top file improvements (bytes):
-18 : 5046.dasm (-2.02 % of base)
-16 : 571894.dasm (-1.54 % of base)
-16 : 364239.dasm (-1.54 % of base)
-6 : 194091.dasm (-0.62 % of base)
-3 : 368485.dasm (-0.41 % of base)
-3 : 292441.dasm (-0.41 % of base)
-2 : 194955.dasm (-0.38 % of base)
-1 : 222042.dasm (-0.06 % of base)
47 total files with Code Size differences (8 improved, 39 regressed), 0 unchanged.
Top method regressions (bytes):
670 (40.48 % of base) : 2168.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
456 (19.90 % of base) : 225158.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
456 (19.90 % of base) : 275933.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
439 (18.78 % of base) : 234074.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
439 (18.78 % of base) : 171454.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
432 (16.55 % of base) : 82409.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
432 (16.22 % of base) : 30054.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.73 % of base) : 168588.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.73 % of base) : 130114.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.73 % of base) : 150328.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.82 % of base) : 181549.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.73 % of base) : 108467.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.82 % of base) : 42653.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
420 (16.77 % of base) : 34038.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
182 (13.30 % of base) : 23193.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
169 (12.58 % of base) : 155429.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
169 (12.58 % of base) : 22673.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
169 (12.31 % of base) : 237715.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
169 (12.58 % of base) : 365264.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
169 (12.58 % of base) : 368240.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
Top method improvements (bytes):
-18 (-2.02 % of base) : 5046.dasm - System.RuntimeType:GetFieldCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.FieldInfo]:this (Instrumented Tier1)
-16 (-1.54 % of base) : 571894.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-16 (-1.54 % of base) : 364239.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (Tier0-FullOpts)
-6 (-0.62 % of base) : 194091.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
-3 (-0.41 % of base) : 368485.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-3 (-0.41 % of base) : 292441.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-2 (-0.38 % of base) : 194955.dasm - System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
-1 (-0.06 % of base) : 222042.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
Top method regressions (percentages):
670 (40.48 % of base) : 2168.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
160 (27.40 % of base) : 1665.dasm - System.IO.PathInternal:NormalizeDirectorySeparators(System.String):System.String (Instrumented Tier1)
456 (19.90 % of base) : 225158.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
456 (19.90 % of base) : 275933.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
439 (18.78 % of base) : 234074.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
439 (18.78 % of base) : 171454.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.82 % of base) : 181549.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.82 % of base) : 42653.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
420 (16.77 % of base) : 34038.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.73 % of base) : 168588.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.73 % of base) : 130114.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.73 % of base) : 150328.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
424 (16.73 % of base) : 108467.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
432 (16.55 % of base) : 82409.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
432 (16.22 % of base) : 30054.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
182 (13.30 % of base) : 23193.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
169 (12.58 % of base) : 155429.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
169 (12.58 % of base) : 22673.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
169 (12.58 % of base) : 365264.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
169 (12.58 % of base) : 368240.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Instrumented Tier1)
Top method improvements (percentages):
-18 (-2.02 % of base) : 5046.dasm - System.RuntimeType:GetFieldCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.FieldInfo]:this (Instrumented Tier1)
-16 (-1.54 % of base) : 571894.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-16 (-1.54 % of base) : 364239.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (Tier0-FullOpts)
-6 (-0.62 % of base) : 194091.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
-3 (-0.41 % of base) : 368485.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-3 (-0.41 % of base) : 292441.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-2 (-0.38 % of base) : 194955.dasm - System.RuntimeType:GetEventCandidates(System.String,int,ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.EventInfo]:this (Instrumented Tier1)
-1 (-0.06 % of base) : 222042.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 31665137 (overridden on cmd)
Total bytes of diff: 31664853 (overridden on cmd)
Total bytes of delta: -284 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
9 : 190175.dasm (2.23 % of base)
Top file improvements (bytes):
-135 : 79010.dasm (-16.75 % of base)
-45 : 223489.dasm (-3.57 % of base)
-43 : 205335.dasm (-16.48 % of base)
-43 : 106827.dasm (-16.48 % of base)
-27 : 7266.dasm (-8.11 % of base)
6 total files with Code Size differences (5 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
9 (2.23 % of base) : 190175.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-135 (-16.75 % of base) : 79010.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)
-45 (-3.57 % of base) : 223489.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
-43 (-16.48 % of base) : 205335.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-43 (-16.48 % of base) : 106827.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-27 (-8.11 % of base) : 7266.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
Top method regressions (percentages):
9 (2.23 % of base) : 190175.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-135 (-16.75 % of base) : 79010.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)
-43 (-16.48 % of base) : 205335.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-43 (-16.48 % of base) : 106827.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-27 (-8.11 % of base) : 7266.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (FullOpts)
-45 (-3.57 % of base) : 223489.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 x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 48912132 (overridden on cmd)
Total bytes of diff: 48912025 (overridden on cmd)
Total bytes of delta: -107 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
168 : 214723.dasm (2.10 % of base)
14 : 279000.dasm (3.54 % of base)
Top file improvements (bytes):
-162 : 82520.dasm (-19.15 % of base)
-47 : 223575.dasm (-14.60 % of base)
-47 : 177162.dasm (-14.60 % of base)
-17 : 278081.dasm (-1.28 % of base)
-16 : 195588.dasm (-1.54 % of base)
7 total files with Code Size differences (5 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
168 (2.10 % of base) : 214723.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
14 (3.54 % of base) : 279000.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-162 (-19.15 % of base) : 82520.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 (-14.60 % of base) : 223575.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-47 (-14.60 % of base) : 177162.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-17 (-1.28 % of base) : 278081.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
-16 (-1.54 % of base) : 195588.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
Top method regressions (percentages):
14 (3.54 % of base) : 279000.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
168 (2.10 % of base) : 214723.dasm - R2RDump.TextDumper:DumpSectionContents(ILCompiler.Reflection.ReadyToRun.ReadyToRunSection):this (FullOpts)
Top method improvements (percentages):
-162 (-19.15 % of base) : 82520.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 (-14.60 % of base) : 223575.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-47 (-14.60 % of base) : 177162.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-16 (-1.54 % of base) : 195588.dasm - ILCompiler.DevirtualizationManager:ResolveVirtualMethod(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,byref):Internal.TypeSystem.MethodDesc:this (FullOpts)
-17 (-1.28 % of base) : 278081.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 x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 185434987 (overridden on cmd)
Total bytes of diff: 185697150 (overridden on cmd)
Total bytes of delta: 262163 (0.14 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
5356 : 186701.dasm (80.49 % of base)
5347 : 298235.dasm (80.36 % of base)
5332 : 197912.dasm (80.13 % of base)
5314 : 88815.dasm (80.87 % of base)
5273 : 444662.dasm (80.25 % of base)
5271 : 306218.dasm (80.16 % of base)
5271 : 333531.dasm (80.16 % of base)
5271 : 336388.dasm (80.16 % of base)
5271 : 367578.dasm (80.16 % of base)
5271 : 635362.dasm (80.16 % of base)
5271 : 377633.dasm (80.16 % of base)
5271 : 181088.dasm (80.16 % of base)
5271 : 486110.dasm (80.16 % of base)
5270 : 230425.dasm (80.20 % of base)
5266 : 208736.dasm (80.08 % of base)
5266 : 428261.dasm (80.08 % of base)
5262 : 274966.dasm (80.02 % of base)
5262 : 325475.dasm (80.02 % of base)
5262 : 424590.dasm (80.02 % of base)
5254 : 453528.dasm (79.90 % of base)
Top file improvements (bytes):
-187 : 608185.dasm (-16.25 % of base)
-147 : 608270.dasm (-32.67 % of base)
-142 : 582081.dasm (-12.89 % of base)
-142 : 582397.dasm (-23.28 % of base)
-122 : 608272.dasm (-26.93 % of base)
-116 : 608198.dasm (-20.75 % of base)
-105 : 608204.dasm (-18.13 % of base)
-104 : 608201.dasm (-22.08 % of base)
-64 : 597016.dasm (-16.71 % of base)
-51 : 469518.dasm (-10.87 % of base)
-47 : 177830.dasm (-14.60 % of base)
-47 : 444483.dasm (-14.60 % of base)
-45 : 582396.dasm (-12.93 % of base)
-30 : 36569.dasm (-2.94 % of base)
-19 : 362046.dasm (-2.51 % of base)
-17 : 424076.dasm (-1.33 % of base)
-9 : 248324.dasm (-0.16 % of base)
-6 : 4120.dasm (-0.75 % of base)
-3 : 339073.dasm (-0.41 % of base)
-3 : 339581.dasm (-0.41 % of base)
49 total files with Code Size differences (22 improved, 27 regressed), 0 unchanged.
Top method regressions (bytes):
5356 (80.49 % of base) : 186701.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5347 (80.36 % of base) : 298235.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5332 (80.13 % of base) : 197912.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5314 (80.87 % of base) : 88815.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5273 (80.25 % of base) : 444662.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 306218.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 333531.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 336388.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 367578.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 635362.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 377633.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 181088.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 486110.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5270 (80.20 % of base) : 230425.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5266 (80.08 % of base) : 208736.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5266 (80.08 % of base) : 428261.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5262 (80.02 % of base) : 274966.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5262 (80.02 % of base) : 325475.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5262 (80.02 % of base) : 424590.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5254 (79.90 % of base) : 453528.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):
-187 (-16.25 % of base) : 608185.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7245_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-147 (-32.67 % of base) : 608270.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7383_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-142 (-12.89 % of base) : 582081.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1008_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-142 (-23.28 % of base) : 582397.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1305_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-122 (-26.93 % of base) : 608272.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7385_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-20.75 % of base) : 608198.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7276_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-105 (-18.13 % of base) : 608204.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7290_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-104 (-22.08 % of base) : 608201.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7283_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-64 (-16.71 % of base) : 597016.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4394_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-51 (-10.87 % of base) : 469518.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-47 (-14.60 % of base) : 177830.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
-47 (-14.60 % of base) : 444483.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
-45 (-12.93 % of base) : 582396.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1304_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-30 (-2.94 % of base) : 36569.dasm - System.IO.Path:Combine(System.String[]):System.String (Instrumented Tier1)
-19 (-2.51 % of base) : 362046.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-17 (-1.33 % of base) : 424076.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (Tier0-FullOpts)
-9 (-0.16 % of base) : 248324.dasm - System.Diagnostics.Tracing.EventSource:CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,int):ubyte[] (Instrumented Tier1)
-6 (-0.75 % of base) : 4120.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
-3 (-0.41 % of base) : 339073.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-3 (-0.41 % of base) : 339581.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
Top method regressions (percentages):
5314 (80.87 % of base) : 88815.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5356 (80.49 % of base) : 186701.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5347 (80.36 % of base) : 298235.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5273 (80.25 % of base) : 444662.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5270 (80.20 % of base) : 230425.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 306218.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 333531.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 336388.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 367578.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 635362.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 377633.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 181088.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5271 (80.16 % of base) : 486110.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5332 (80.13 % of base) : 197912.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5266 (80.08 % of base) : 208736.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5266 (80.08 % of base) : 428261.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5262 (80.02 % of base) : 274966.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5262 (80.02 % of base) : 325475.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5262 (80.02 % of base) : 424590.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
5254 (79.90 % of base) : 453528.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):
-147 (-32.67 % of base) : 608270.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7383_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-122 (-26.93 % of base) : 608272.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7385_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-142 (-23.28 % of base) : 582397.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1305_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-104 (-22.08 % of base) : 608201.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7283_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-116 (-20.75 % of base) : 608198.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7276_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-105 (-18.13 % of base) : 608204.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7290_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-64 (-16.71 % of base) : 597016.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4394_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-187 (-16.25 % of base) : 608185.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7245_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-47 (-14.60 % of base) : 177830.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
-47 (-14.60 % of base) : 444483.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (Tier0-FullOpts)
-45 (-12.93 % of base) : 582396.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1304_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-142 (-12.89 % of base) : 582081.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1008_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-51 (-10.87 % of base) : 469518.dasm - System.Text.Rune:DecodeLastFromUtf8(System.ReadOnlySpan`1[ubyte],byref,byref):int (Instrumented Tier1)
-30 (-2.94 % of base) : 36569.dasm - System.IO.Path:Combine(System.String[]):System.String (Instrumented Tier1)
-19 (-2.51 % of base) : 362046.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-17 (-1.33 % of base) : 424076.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (Tier0-FullOpts)
-6 (-0.75 % of base) : 4120.dasm - System.RuntimeType:GetField(System.String,int):System.Reflection.FieldInfo:this (Instrumented Tier1)
-3 (-0.41 % of base) : 339073.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-3 (-0.41 % of base) : 339581.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-3 (-0.41 % of base) : 339405.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 x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 102172327 (overridden on cmd)
Total bytes of diff: 102171064 (overridden on cmd)
Total bytes of delta: -1263 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
98 : 297900.dasm (5.59 % of base)
14 : 120450.dasm (3.54 % of base)
Top file improvements (bytes):
-211 : 284303.dasm (-17.30 % of base)
-174 : 294121.dasm (-26.98 % of base)
-163 : 294088.dasm (-14.04 % of base)
-148 : 284345.dasm (-26.01 % of base)
-141 : 284354.dasm (-22.35 % of base)
-130 : 284350.dasm (-25.79 % of base)
-108 : 284506.dasm (-23.95 % of base)
-101 : 284504.dasm (-25.70 % of base)
-56 : 294120.dasm (-15.56 % of base)
-47 : 64764.dasm (-14.60 % of base)
-47 : 204789.dasm (-14.60 % of base)
-32 : 287419.dasm (-9.70 % of base)
-17 : 192393.dasm (-1.33 % of base)
15 total files with Code Size differences (13 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
98 (5.59 % of base) : 297900.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
14 (3.54 % of base) : 120450.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (bytes):
-211 (-17.30 % of base) : 284303.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3511_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-174 (-26.98 % of base) : 294121.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30797_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-163 (-14.04 % of base) : 294088.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30500_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-148 (-26.01 % of base) : 284345.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3542_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-141 (-22.35 % of base) : 284354.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3556_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-130 (-25.79 % of base) : 284350.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3549_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-108 (-23.95 % of base) : 284506.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3651_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-101 (-25.70 % of base) : 284504.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3649_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-15.56 % of base) : 294120.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30796_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-47 (-14.60 % of base) : 64764.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-47 (-14.60 % of base) : 204789.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-32 (-9.70 % of base) : 287419.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2789_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-17 (-1.33 % of base) : 192393.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
Top method regressions (percentages):
98 (5.59 % of base) : 297900.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
14 (3.54 % of base) : 120450.dasm - System.Numerics.BigInteger:.ctor(System.Decimal):this (FullOpts)
Top method improvements (percentages):
-174 (-26.98 % of base) : 294121.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30797_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-148 (-26.01 % of base) : 284345.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3542_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-130 (-25.79 % of base) : 284350.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3549_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-101 (-25.70 % of base) : 284504.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3649_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-108 (-23.95 % of base) : 284506.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3651_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-141 (-22.35 % of base) : 284354.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3556_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-211 (-17.30 % of base) : 284303.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3511_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-15.56 % of base) : 294120.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30796_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-47 (-14.60 % of base) : 64764.dasm - System.CodeDom.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-47 (-14.60 % of base) : 204789.dasm - System.Runtime.Serialization.CodeTypeReference:RipOffAssemblyInformationFromTypeName(System.String):System.String (FullOpts)
-163 (-14.04 % of base) : 294088.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30500_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-32 (-9.70 % of base) : 287419.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2789_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-17 (-1.33 % of base) : 192393.dasm - System.Runtime.Caching.ExpiresBucket:FlushExpiredItems(System.DateTime,ubyte):int:this (FullOpts)
15 total methods with Code Size differences (13 improved, 2 regressed).