Diffs are based on 1,449,677 contexts (345,734 MinOpts, 1,103,943 FullOpts).
MISSED contexts: 55,309 (3.68%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.arm.checked.mch | 13,691,660 | -68 |
benchmarks.run_pgo.linux.arm.checked.mch | 24,676,764 | -26 |
benchmarks.run_tiered.linux.arm.checked.mch | 17,983,552 | -64 |
coreclr_tests.run.linux.arm.checked.mch | 321,243,680 | -498 |
libraries.crossgen2.linux.arm.checked.mch | 35,989,292 | -28 |
libraries.pmi.linux.arm.checked.mch | 49,882,798 | -1,070 |
libraries_tests.run.linux.arm.Release.mch | 17,138,332 | -84 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 93,857,406 | -886 |
realworld.run.linux.arm.checked.mch | 13,598,268 | -128 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.arm.checked.mch | 13,379,084 | -68 |
benchmarks.run_pgo.linux.arm.checked.mch | 19,755,612 | -26 |
benchmarks.run_tiered.linux.arm.checked.mch | 10,616,262 | -64 |
coreclr_tests.run.linux.arm.checked.mch | 108,808,730 | -498 |
libraries.crossgen2.linux.arm.checked.mch | 35,988,062 | -28 |
libraries.pmi.linux.arm.checked.mch | 49,776,574 | -1,070 |
libraries_tests.run.linux.arm.Release.mch | 16,541,272 | -84 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 83,827,636 | -886 |
realworld.run.linux.arm.checked.mch | 13,163,196 | -128 |
@@ -8,43 +8,44 @@
; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00 ] ( 5, 7.50) struct ( 4) [sp+0x2C] single-def <System.Net.Http.Headers.HeaderDescriptor>+; V00 arg0 [V00 ] ( 5, 7.50) struct ( 4) [sp+0x24] single-def <System.Net.Http.Headers.HeaderDescriptor> ; V01 arg1 [V01,T03] ( 8, 13.50) ref -> r4 class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>-; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [sp+0x00] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>+; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [sp+0x00] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op-; V04 loc2 [V04,T12] ( 3, 1.50) ref -> r0 class-hnd single-def <<unknown class>>+; V04 loc2 [V04,T13] ( 3, 1.50) ref -> r0 class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>-; V07 loc5 [V07,T11] ( 4, 1.62) ref -> r2 class-hnd exact <System.String>+; V07 loc5 [V07,T12] ( 4, 1.62) ref -> r2 class-hnd exact <System.String> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V09 tmp1 [V09,T10] ( 2, 2 ) ref -> r2 single-def "CASTCLASS eval op1"+; V09 tmp1 [V09,T11] ( 2, 2 ) ref -> r2 single-def "CASTCLASS eval op1" ;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>-;* V12 tmp4 [V12,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V14 tmp6 [V14,T06] ( 5, 7.50) ref -> [sp+0x2C] do-not-enreg[] single-def "field V00._descriptor (fldOffset=0x0)" P-DEP+; V14 tmp6 [V14,T06] ( 5, 7.50) ref -> [sp+0x24] do-not-enreg[] single-def "field V00._descriptor (fldOffset=0x0)" P-DEP ; V15 tmp7 [V15,T02] ( 4, 12.50) ref -> r5 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V16 tmp8 [V16,T04] ( 2, 8 ) ref -> r2 "field V05._current (fldOffset=0x4)" P-INDEP
; V17 tmp9 [V17,T00] ( 6, 20.50) int -> r7 "field V05._index (fldOffset=0x8)" P-INDEP-; V18 tmp10 [V18,T07] ( 3, 8.50) int -> r6 "field V05._version (fldOffset=0xc)" P-INDEP
-; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> r5 single-def "field V11._list (fldOffset=0x0)" P-INDEP+; V18 tmp10 [V18,T09] ( 2, 4.50) int -> r6 "field V05._version (fldOffset=0xc)" P-INDEP
+; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> r5 single-def "field V11._list (fldOffset=0x0)" P-INDEP ;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x4)" P-INDEP-;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
-; V22 tmp14 [V22,T14] ( 2, 1 ) int -> r6 "field V11._version (fldOffset=0xc)" P-INDEP+;* V21 tmp13 [V21,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
+; V22 tmp14 [V22,T15] ( 2, 1 ) int -> r6 "field V11._version (fldOffset=0xc)" P-INDEP ; V23 tmp15 [V23,T01] ( 3, 24 ) ref -> r0 "arr expr"-; V24 PSPSym [V24,T15] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
-; V25 cse0 [V25,T05] ( 3, 12 ) int -> r8 "CSE - aggressive"
-; V26 cse1 [V26,T09] ( 4, 3 ) ref -> r5 "CSE - aggressive"+; V24 PSPSym [V24,T16] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"
+; V25 cse0 [V25,T08] ( 2, 8 ) int -> r0 "CSE - aggressive"
+; V26 cse1 [V26,T05] ( 2, 8 ) int -> r0 "CSE - aggressive"
+; V27 cse2 [V27,T10] ( 4, 3 ) ref -> r5 "CSE - aggressive" ;-; Lcl frame size = 16+; Lcl frame size = 12
G_M53769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0}- push {r4,r5,r6,r7,r8,r11,lr}
- sub sp, 16
- add r11, sp, 36
- add r0, sp, 48
- str r0, [sp+0x0C] // [V24 PSPSym]+ push {r4,r5,r6,r7,r11,lr}
+ sub sp, 12
+ add r11, sp, 28
+ add r0, sp, 40
+ str r0, [sp+0x08] // [V24 PSPSym] mov r4, r1
; gcrRegs +[r4]
;; size=18 bbWeight=1 PerfScore 7.00
@@ -54,7 +55,7 @@ G_M53769_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movs r1, 0
str r1, [sp+0x04] // [V03 loc1]
;; size=6 bbWeight=1 PerfScore 3.00-G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M53769_IG03: ; bbWeight=1, gcVars=00020000 {V02}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x04] // [V03 loc1]
cmp r1, 0
bne SHORT G_M53769_IG06
@@ -75,7 +76,7 @@ G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=0010 {r4},
ldr r5, [r4+0x04]
; gcrRegs +[r5]
cmp r5, 0- beq SHORT G_M53769_IG14+ beq SHORT G_M53769_IG13 ;; size=44 bbWeight=1 PerfScore 16.00
G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r1, r5
@@ -88,24 +89,24 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
cmp r0, 0- beq SHORT G_M53769_IG11+ beq SHORT G_M53769_IG10 mov r5, r0
ldr r6, [r5+0x0C]
movs r7, 0
;; size=30 bbWeight=0.50 PerfScore 5.50
G_M53769_IG05: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]- ldr r8, [r5+0x0C]
- cmp r6, r8
- bne SHORT G_M53769_IG07+ ldr r0, [r5+0x0C]
+ cmp r6, r0
+ bne SHORT G_M53769_IG09 ldr r0, [r5+0x08]
cmp r7, r0- bhs SHORT G_M53769_IG08+ bhs SHORT G_M53769_IG07 ldr r0, [r5+0x04]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r7, r1- bhs SHORT G_M53769_IG09+ bhs SHORT G_M53769_IG08 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -116,7 +117,7 @@ G_M53769_IG05: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
mov r0, r4
; gcrRegs +[r0]
; byrRegs -[r0]- ldr r1, [sp+0x2C] // [V14 tmp6]+ ldr r1, [sp+0x24] // [V14 tmp6] ; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -125,7 +126,7 @@ G_M53769_IG05: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r2]
; gcr arg pop 0
b SHORT G_M53769_IG05- ;; size=48 bbWeight=4 PerfScore 84.00+ ;; size=46 bbWeight=4 PerfScore 84.00 G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4-r5]
movw r3, 0xd1ff
@@ -137,22 +138,18 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=14 bbWeight=0 PerfScore 0.00
G_M53769_IG07: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]- cmp r6, r8
- bne SHORT G_M53769_IG10
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M53769_IG08: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movs r0, 0
str r0, [r4+0x04]- b SHORT G_M53769_IG14+ b SHORT G_M53769_IG13 ;; size=6 bbWeight=4 PerfScore 12.00-G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53769_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -160,7 +157,7 @@ G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4-r5]
mov r2, r5
; gcrRegs +[r2]
@@ -168,17 +165,17 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1- beq SHORT G_M53769_IG13+ beq SHORT G_M53769_IG12 ;; size=16 bbWeight=0.50 PerfScore 3.00-G_M53769_IG12: ; bbWeight=0.12, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref+G_M53769_IG11: ; bbWeight=0.12, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ; gcrRegs -[r2 r5]
movs r2, 0
;; size=2 bbWeight=0.12 PerfScore 0.12-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r2]
mov r0, r4
; gcrRegs +[r0]- ldr r1, [sp+0x2C] // [V14 tmp6]+ ldr r1, [sp+0x24] // [V14 tmp6] ; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -186,15 +183,15 @@ G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}
blx r3 // System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)
; gcrRegs -[r0-r2]
; gcr arg pop 0- b SHORT G_M53769_IG08+ b SHORT G_M53769_IG07 ;; size=18 bbWeight=0.50 PerfScore 3.50-G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M53769_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4]
ldrb r0, [sp+0x04] // [V03 loc1]
cmp r0, 0- beq SHORT G_M53769_IG16+ beq SHORT G_M53769_IG15 ;; size=8 bbWeight=1 PerfScore 3.00-G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53769_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr r0, [sp] // [V02 loc0]
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -204,38 +201,36 @@ G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r0]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00-G_M53769_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 16
- pop {r4,r5,r6,r7,r8,r11,lr}+G_M53769_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add sp, 12
+ pop {r4,r5,r6,r7,r11,lr} add sp, 4
bx lr
;; size=10 bbWeight=1 PerfScore 4.00-G_M53769_IG17: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V02 V16}
- push {r4,r5,r6,r7,r8,r11,lr}
- sub sp, 12+G_M53769_IG16: ; bbWeight=0, gcVars=00020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V02 V17}
+ push {r2,r3,r4,r5,r6,r7,r11,lr} add r3, r11, 12- str r3, [sp+0x04]
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M53769_IG18: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldrb r0, [r11-0x20] // [V03 loc1]+ str r3, [sp]
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M53769_IG17: ; bbWeight=0, gcVars=00020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldrb r0, [r11-0x18] // [V03 loc1] cmp r0, 0- beq SHORT G_M53769_IG19
- ldr r0, [r11-0x24] // [V02 loc0]+ beq SHORT G_M53769_IG18
+ ldr r0, [r11-0x1C] // [V02 loc0] ; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff- ; GC ptr vars -{V02 V16}+ ; GC ptr vars -{V02 V17} blx r3 // <unknown method>
; gcrRegs -[r0]
...
@@ -10,8 +10,8 @@
;
; V00 this [V00,T09] ( 3, 4 ) ref -> r5 this class-hnd single-def <System.Threading.Tasks.Task>
; V01 arg1 [V01,T08] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Threading.Tasks.Task+ContingentProperties>-; V02 loc0 [V02,T11] ( 5, 3.50) ref -> r6 class-hnd single-def <<unknown class>>
-; V03 loc1 [V03,T15] ( 3, 0.50) ref -> [sp+0x00] class-hnd EH-live spill-single-def <<unknown class>>+; V02 loc0 [V02,T12] ( 5, 3.50) ref -> r6 class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T16] ( 3, 0.50) ref -> [sp+0x00] class-hnd EH-live spill-single-def <<unknown class>> ; V04 loc2 [V04 ] ( 6, 2.50) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>
@@ -24,19 +24,20 @@
; V13 tmp5 [V13,T04] ( 3, 12 ) ref -> r9 class-hnd "Inlining Arg" <System.AggregateException>
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-;* V16 tmp8 [V16,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V16 tmp8 [V16,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V18 tmp10 [V18,T03] ( 4, 12.50) ref -> r6 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V19 tmp11 [V19,T02] ( 5, 14 ) ref -> r9 "field V05._current (fldOffset=0x4)" P-INDEP
; V20 tmp12 [V20,T00] ( 6, 20.50) int -> r8 "field V05._index (fldOffset=0x8)" P-INDEP-; V21 tmp13 [V21,T06] ( 3, 8.50) int -> r7 "field V05._version (fldOffset=0xc)" P-INDEP
-; V22 tmp14 [V22,T12] ( 3, 1.50) ref -> r6 single-def "field V09._list (fldOffset=0x0)" P-INDEP+; V21 tmp13 [V21,T11] ( 2, 4.50) int -> r7 "field V05._version (fldOffset=0xc)" P-INDEP
+; V22 tmp14 [V22,T13] ( 3, 1.50) ref -> r6 single-def "field V09._list (fldOffset=0x0)" P-INDEP ;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x4)" P-INDEP-;* V24 tmp16 [V24,T16] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x8)" P-INDEP
-; V25 tmp17 [V25,T13] ( 2, 1 ) int -> r7 "field V09._version (fldOffset=0xc)" P-INDEP+;* V24 tmp16 [V24,T17] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x8)" P-INDEP
+; V25 tmp17 [V25,T14] ( 2, 1 ) int -> r7 "field V09._version (fldOffset=0xc)" P-INDEP ; V26 tmp18 [V26,T01] ( 3, 24 ) ref -> r0 "arr expr"-; V27 PSPSym [V27,T14] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
-; V28 cse0 [V28,T05] ( 3, 12 ) int -> r9 "CSE - aggressive"+; V27 PSPSym [V27,T15] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V28 cse0 [V28,T07] ( 2, 8 ) int -> r0 "CSE - aggressive"
+; V29 cse1 [V29,T05] ( 2, 8 ) int -> r0 "CSE - aggressive" ;
; Lcl frame size = 16
@@ -70,7 +71,7 @@ G_M37406_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcrRegs +[r6]
dmb 15
cmp r6, 0- beq G_M37406_IG19+ beq G_M37406_IG18 ;; size=24 bbWeight=1 PerfScore 8.00
G_M37406_IG05: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
str r6, [sp] // [V03 loc1]
@@ -78,7 +79,7 @@ G_M37406_IG05: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
movs r1, 0
str r1, [sp+0x04] // [V04 loc2]
;; size=6 bbWeight=0.50 PerfScore 1.50-G_M37406_IG06: ; bbWeight=0.50, gcVars=00008000 {V03}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz+G_M37406_IG06: ; bbWeight=0.50, gcVars=00010000 {V03}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x04] // [V04 loc2]
cmp r1, 0
bne G_M37406_IG13
@@ -100,17 +101,17 @@ G_M37406_IG06: ; bbWeight=0.50, gcVars=00008000 {V03}, gcrefRegs=0070 {r4
mov r8, 0
;; size=46 bbWeight=0.50 PerfScore 7.50
G_M37406_IG07: ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz- ldr r9, [r6+0x0C]
- cmp r7, r9
- bne SHORT G_M37406_IG14+ ldr r0, [r6+0x0C]
+ cmp r7, r0
+ bne SHORT G_M37406_IG15 ldr r0, [r6+0x08]
cmp r8, r0- bhs G_M37406_IG17+ bhs SHORT G_M37406_IG16 ldr r0, [r6+0x04]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r8, r1- bhs SHORT G_M37406_IG15+ bhs SHORT G_M37406_IG14 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -124,7 +125,7 @@ G_M37406_IG07: ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
ands r0, r0, 0x1600000
cmp r0, 0
bne SHORT G_M37406_IG09- ;; size=54 bbWeight=4 PerfScore 76.00+ ;; size=50 bbWeight=4 PerfScore 76.00 G_M37406_IG08: ; bbWeight=2, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -216,20 +217,13 @@ G_M37406_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M37406_IG14: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4]
- cmp r7, r9
- bne SHORT G_M37406_IG16
- b SHORT G_M37406_IG17
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M37406_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]+G_M37406_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M37406_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M37406_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -237,11 +231,11 @@ G_M37406_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M37406_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M37406_IG16: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4]
ldrb r0, [sp+0x04] // [V04 loc2]
cmp r0, 0- beq SHORT G_M37406_IG18+ beq SHORT G_M37406_IG17 ldr r0, [sp] // [V03 loc1]
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -251,40 +245,40 @@ G_M37406_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.50-G_M37406_IG18: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref+G_M37406_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movs r3, 0
dmb 15
str r3, [r4+0x14]
;; size=8 bbWeight=0.50 PerfScore 1.50-G_M37406_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc+G_M37406_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4]
add sp, 16
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00-G_M37406_IG20: ; bbWeight=0, gcVars=00008000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V03}+G_M37406_IG19: ; bbWeight=0, gcVars=00010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V03 V16} push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
add r3, r11, 8
str r3, [sp+0x04]
;; size=10 bbWeight=0 PerfScore 0.00-G_M37406_IG21: ; bbWeight=0, gcVars=00008000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M37406_IG20: ; bbWeight=0, gcVars=00010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r0, [r11-0x24] // [V04 loc2]
cmp r0, 0- beq SHORT G_M37406_IG22+ beq SHORT G_M37406_IG21 ldr r0, [r11-0x28] // [V03 loc1]
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff- ; GC ptr vars -{V03}+ ; GC ptr vars -{V03 V16} blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
;; size=22 bbWeight=0 PerfScore 0.00-G_M37406_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc+G_M37406_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 450, prolog size 18, PerfScore 240.00, instruction count 154, allocated bytes for code 450 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)+; Total bytes of code 440, prolog size 18, PerfScore 228.00, instruction count 151, allocated bytes for code 440 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts) ; ============================================================
Unwind Info:
@@ -296,7 +290,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 207 (0x000cf) Actual length = 414 (0x00019e)+ Function Length : 202 (0x000ca) Actual length = 404 (0x000194) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -323,4 +317,4 @@ Unwind Info:
*************** EH table for System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M37406_IG06..G_M37406_IG17) handled by [G_M37406_IG20..END) (fault)+EH#0: try [G_M37406_IG06..G_M37406_IG16) handled by [G_M37406_IG19..END) (fault)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T18] ( 3, 3 ) int -> r4 single-def
-; V01 arg1 [V01,T19] ( 3, 3 ) int -> r5 single-def+; V00 arg0 [V00,T19] ( 3, 3 ) int -> r4 single-def
+; V01 arg1 [V01,T20] ( 3, 3 ) int -> r5 single-def ; V02 loc0 [V02 ] ( 4, 17 ) struct ( 8) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>-; V03 loc1 [V03,T20] ( 4, 11 ) int -> r5 +; V03 loc1 [V03,T21] ( 4, 11 ) int -> r5 ;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
@@ -19,14 +19,14 @@
; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> r4 class-hnd single-def "non-inline candidate call" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>-; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <<unknown class>>+; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> lr "Inlining Arg"
-; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> r3 "Inlining Arg"+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> lr "Inlining Arg"
+; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> r3 "Inlining Arg" ;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
@@ -40,30 +40,30 @@
;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V35 tmp28 [V35,T21] ( 4, 18 ) int -> r3 "Inline stloc first use temp"
-; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String>+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V35 tmp28 [V35,T22] ( 4, 18 ) int -> r3 "Inline stloc first use temp"
+; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String> ; V37 tmp30 [V37 ] ( 3, 3 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar"
; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP
; V39 tmp32 [V39 ] ( 3, 13 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x4)" P-DEP-; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> r4 single-def "field V04._list (fldOffset=0x0)" P-INDEP
-; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> r2 "field V04._current (fldOffset=0x4)" P-INDEP+; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> r4 single-def "field V04._list (fldOffset=0x0)" P-INDEP
+; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> r2 "field V04._current (fldOffset=0x4)" P-INDEP ; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r7 "field V04._index (fldOffset=0x8)" P-INDEP-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> r6 "field V04._version (fldOffset=0xc)" P-INDEP
-; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> r0 "field V09._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp38 [V45,T15] ( 2, 8 ) int -> r1 "field V09._length (fldOffset=0x4)" P-INDEP+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> r6 "field V04._version (fldOffset=0xc)" P-INDEP
+; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> r0 "field V09._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp38 [V45,T16] ( 2, 8 ) int -> r1 "field V09._length (fldOffset=0x4)" P-INDEP ;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> r4 single-def "field V13._list (fldOffset=0x0)" P-INDEP+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> r4 single-def "field V13._list (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x4)" P-INDEP-;* V50 tmp43 [V50,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-; V51 tmp44 [V51,T25] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP+;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
+; V51 tmp44 [V51,T26] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP ; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> r3 "field V14._reference (fldOffset=0x0)" P-INDEP-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> lr "field V14._length (fldOffset=0x4)" P-INDEP
-; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> r3 "field V15._reference (fldOffset=0x0)" P-INDEP
-; V55 tmp48 [V55,T16] ( 2, 8 ) int -> lr "field V15._length (fldOffset=0x4)" P-INDEP+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> lr "field V14._length (fldOffset=0x4)" P-INDEP
+; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> r3 "field V15._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp48 [V55,T17] ( 2, 8 ) int -> lr "field V15._length (fldOffset=0x4)" P-INDEP ;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP
;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
@@ -79,19 +79,20 @@
;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP
; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> r2 "arr expr"-; V71 PSPSym [V71,T27] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
-; V72 cse0 [V72,T04] ( 3, 24 ) int -> r8 "CSE - aggressive"+; V71 PSPSym [V71,T28] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
+; V72 cse0 [V72,T09] ( 2, 16 ) int -> r2 "CSE - aggressive"
+; V73 cse1 [V73,T04] ( 2, 16 ) int -> r2 "CSE - aggressive" ;-; Lcl frame size = 24+; Lcl frame size = 20
G_M58652_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG- push {r4,r5,r6,r7,r8,r10,r11,lr}
- sub sp, 24
- add r11, sp, 48+ push {r4,r5,r6,r7,r10,r11,lr}
+ sub sp, 20
+ add r11, sp, 40 movs r2, 0
str r2, [sp+0x08]- add r2, sp, 56
- str r2, [sp+0x14]+ add r2, sp, 48
+ str r2, [sp+0x10] mov r4, r0
mov r5, r1
;; size=22 bbWeight=1 PerfScore 9.00
@@ -112,7 +113,7 @@ G_M58652_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
ldrb r2, [r5+0x04]
cmp r2, 0- beq SHORT G_M58652_IG11+ beq SHORT G_M58652_IG10 ldr r4, [r5]
; gcrRegs +[r4]
ldr r6, [r4+0x0C]
@@ -150,15 +151,15 @@ G_M58652_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3},
; byrRegs -[r0-r1]
; gcr arg pop 0
cmp r0, 0- bne SHORT G_M58652_IG14+ bne SHORT G_M58652_IG13 ;; size=26 bbWeight=4 PerfScore 40.00
G_M58652_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz- ldr r8, [r4+0x0C]
- cmp r6, r8
- bne SHORT G_M58652_IG10+ ldr r2, [r4+0x0C]
+ cmp r6, r2
+ bne SHORT G_M58652_IG09 ldr r2, [r4+0x08]
cmp r7, r2- bhs SHORT G_M58652_IG11+ bhs SHORT G_M58652_IG10 ldr r2, [r4+0x04]
; gcrRegs +[r2]
ldr r0, [r2+0x04]
@@ -173,7 +174,7 @@ G_M58652_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; byrRegs -[r2]
adds r7, r7, 1
b SHORT G_M58652_IG04- ;; size=32 bbWeight=8 PerfScore 120.00+ ;; size=30 bbWeight=8 PerfScore 120.00 G_M58652_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r2 r4]
movw r3, 0xd1ff
@@ -190,10 +191,6 @@ G_M58652_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
G_M58652_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp r6, r8
- bne SHORT G_M58652_IG09
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M58652_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr r4, [r5]
; gcrRegs +[r4]
add r0, sp, 8
@@ -214,9 +211,9 @@ G_M58652_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r3, [r4+0x08]
ldr lr, [r0+0x04]
cmp lr, r3- bls SHORT G_M58652_IG13+ bls SHORT G_M58652_IG12 ;; size=36 bbWeight=8 PerfScore 120.00-G_M58652_IG12: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz+G_M58652_IG11: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz add lr, r3, 1
str lr, [r4+0x08]
adds r0, 8
@@ -229,9 +226,9 @@ G_M58652_IG12: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1 r4]
; byrRegs -[r0]- b SHORT G_M58652_IG14+ b SHORT G_M58652_IG13 ;; size=26 bbWeight=1 PerfScore 9.00-G_M58652_IG13: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref+G_M58652_IG12: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref ; gcrRegs +[r1 r4]
mov r0, r4
; gcrRegs +[r0]
@@ -242,24 +239,24 @@ G_M58652_IG13: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r1 r4]
; gcr arg pop 0
;; size=14 bbWeight=1 PerfScore 5.00-G_M58652_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M58652_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add r0, sp, 0
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 4.00-G_M58652_IG15: ; bbWeight=1, epilog, nogc, extend
- add sp, 24
- pop {r4,r5,r6,r7,r8,r10,r11,pc}+G_M58652_IG14: ; bbWeight=1, epilog, nogc, extend
+ add sp, 20
+ pop {r4,r5,r6,r7,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00-G_M58652_IG16: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc+G_M58652_IG15: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc ; gcrRegs +[r0]- push {r2,r3,r4,r5,r6,r7,r8,r10,r11,lr}+ push {r3,r4,r5,r6,r7,r10,r11,lr} add r3, r11, 8- str r3, [sp+0x04]+ str r3, [sp] ;; size=10 bbWeight=0 PerfScore 0.00-G_M58652_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref+G_M58652_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref ldr r3, [r0]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x04]
@@ -271,14 +268,14 @@ G_M58652_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byr
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0- movw r0, LOW ADDRESS G_M58652_IG14
- movt r0, HIGH ADDRESS G_M58652_IG14+ movw r0, LOW ADDRESS G_M58652_IG13
+ movt r0, HIGH ADDRESS G_M58652_IG13 ;; size=28 bbWeight=0 PerfScore 0.00-G_M58652_IG18: ; bbWeight=0, funclet epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r8,r10,r11,pc}+G_M58652_IG17: ; bbWeight=0, funclet epilog, nogc, extend
+ pop {r3,r4,r5,r6,r7,r10,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 310, prolog size 22, PerfScore 378.00, instruction count 119, allocated bytes for code 310 (MethodHash=943d1ae3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)+; Total bytes of code 304, prolog size 22, PerfScore 362.00, instruction count 117, allocated bytes for code 304 (MethodHash=943d1ae3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts) ; ============================================================
Unwind Info:
@@ -290,12 +287,12 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 134 (0x00086) Actual length = 268 (0x00010c)+ Function Length : 131 (0x00083) Actual length = 262 (0x000106) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----- 06 add sp, sp, #24 ; opsize 16
- AD F0 pop {r4,r5,r6,r7,r8,r10,r11,lr} ; opsize 32+ 05 add sp, sp, #20 ; opsize 16
+ AC F0 pop {r4,r5,r6,r7,r10,r11,lr} ; opsize 32 FF end
...
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 39 single block inlinees; 18 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T28] ( 15, 23 ) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexNode>+; V00 arg0 [V00,T34] ( 14, 21 ) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexNode> ; V01 loc0 [V01,T02] ( 16,137.50) ref -> r5 class-hnd single-def <<unknown class>>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Text.RegularExpressions.RegexNode]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
@@ -16,7 +16,7 @@
; V05 loc4 [V05,T22] ( 14, 42 ) int -> r6
; V06 loc5 [V06,T07] ( 11,110 ) ref -> r8 class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V07 loc6 [V07,T03] ( 12,122 ) int -> r7 -; V08 loc7 [V08,T30] ( 5, 24 ) ref -> r9 class-hnd <System.Text.RegularExpressions.RegexNode>+; V08 loc7 [V08,T29] ( 5, 24 ) ref -> r9 class-hnd <System.Text.RegularExpressions.RegexNode> ;* V09 loc8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V10 loc9 [V10,T45] ( 4, 12 ) ubyte -> r0
;* V11 loc10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
@@ -24,8 +24,8 @@
; V13 loc12 [V13,T59] ( 3, 6 ) ref -> r0 class-hnd exact <System.Text.RegularExpressions.RegexNode>
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V15 OutArgs [V15 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V16 tmp1 [V16,T64] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V17 tmp2 [V17,T65] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable"+; V16 tmp1 [V16,T65] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
+; V17 tmp2 [V17,T66] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable" ; V18 tmp3 [V18,T58] ( 5, 6.75) ref -> r5 class-hnd "spilling QMark2" <<unknown class>>
;* V19 tmp4 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V20 tmp5 [V20 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
@@ -50,7 +50,7 @@
;* V39 tmp24 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V40 tmp25 [V40,T47] ( 4, 11 ) ref -> r7 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V41 tmp26 [V41,T49] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V42 tmp27 [V42,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V42 tmp27 [V42,T63] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V43 tmp28 [V43,T39] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V44 tmp29 [V44,T04] ( 8,112 ) ref -> r2 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V45 tmp30 [V45,T13] ( 3, 80 ) ref -> r0 class-hnd "Inlining Arg" <System.__Canon>
@@ -75,21 +75,21 @@
; V64 tmp49 [V64,T56] ( 2, 8 ) int -> r0 "Inlining Arg"
; V65 tmp50 [V65,T57] ( 2, 8 ) int -> r0 "Inlining Arg"
; V66 tmp51 [V66,T41] ( 4, 16 ) ref -> r8 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>-; V67 tmp52 [V67,T53] ( 2, 8 ) ref -> r1 "CASTCLASS eval op1"
-; V68 tmp53 [V68,T48] ( 3, 10 ) ref -> r1 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>+; V67 tmp52 [V67,T53] ( 2, 8 ) ref -> r0 "CASTCLASS eval op1"
+; V68 tmp53 [V68,T48] ( 3, 10 ) ref -> r0 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V69 tmp54 [V69,T50] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V70 tmp55 [V70,T63] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable"+; V70 tmp55 [V70,T64] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable" ; V71 tmp56 [V71,T27] ( 8, 27 ) ref -> r9 class-hnd "spilling QMark2" <<unknown class>>-;* V72 tmp57 [V72,T68] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP+;* V72 tmp57 [V72,T69] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V73 tmp58 [V73,T44] ( 3, 8 ) ref -> r1 "field V02._current (fldOffset=0x4)" P-INDEP-; V74 tmp59 [V74,T29] ( 6, 20.50) int -> r6 "field V02._index (fldOffset=0x8)" P-INDEP
-;* V75 tmp60 [V75,T70] ( 0, 0 ) int -> zero-ref "field V02._version (fldOffset=0xc)" P-INDEP
-;* V76 tmp61 [V76,T69] ( 0, 0 ) ref -> zero-ref single-def "field V31._list (fldOffset=0x0)" P-INDEP+; V74 tmp59 [V74,T28] ( 6, 20.50) int -> r6 "field V02._index (fldOffset=0x8)" P-INDEP
+;* V75 tmp60 [V75,T71] ( 0, 0 ) int -> zero-ref "field V02._version (fldOffset=0xc)" P-INDEP
+;* V76 tmp61 [V76,T70] ( 0, 0 ) ref -> zero-ref single-def "field V31._list (fldOffset=0x0)" P-INDEP ;* V77 tmp62 [V77 ] ( 0, 0 ) ref -> zero-ref single-def "field V31._current (fldOffset=0x4)" P-INDEP-;* V78 tmp63 [V78,T71] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP
-;* V79 tmp64 [V79,T66] ( 0, 0 ) int -> zero-ref "field V31._version (fldOffset=0xc)" P-INDEP
-; V80 tmp65 [V80,T31] ( 3, 24 ) ref -> r1 "arr expr"
-; V81 tmp66 [V81,T32] ( 3, 24 ) ref -> r0 "arr expr"+;* V78 tmp63 [V78,T72] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP
+;* V79 tmp64 [V79,T67] ( 0, 0 ) int -> zero-ref "field V31._version (fldOffset=0xc)" P-INDEP
+; V80 tmp65 [V80,T30] ( 3, 24 ) ref -> r1 "arr expr"
+; V81 tmp66 [V81,T31] ( 3, 24 ) ref -> r0 "arr expr" ; V82 tmp67 [V82,T46] ( 3, 12 ) ref -> r0 "arr expr"
; V83 tmp68 [V83,T08] ( 3, 96 ) ref -> r0 "arr expr"
; V84 tmp69 [V84,T19] ( 3, 48 ) ref -> r2 "arr expr"
@@ -100,11 +100,12 @@
; V89 tmp74 [V89,T17] ( 2, 64 ) ref -> r1 "argument with side effect"
; V90 cse0 [V90,T18] ( 4, 56 ) int -> r0 "CSE - moderate"
; V91 cse1 [V91,T20] ( 3, 48 ) int -> r0 "CSE - moderate"-;* V92 cse2 [V92,T67] ( 0, 0 ) int -> zero-ref "CSE - conservative"
-; V93 cse3 [V93,T33] ( 3, 24 ) ref -> r2 "CSE - moderate"+;* V92 cse2 [V92,T68] ( 0, 0 ) int -> zero-ref "CSE - conservative"
+; V93 cse3 [V93,T32] ( 3, 24 ) ref -> r2 "CSE - moderate" ; V94 cse4 [V94,T42] ( 3, 12 ) int -> r7 "CSE - conservative"
; V95 cse5 [V95,T61] ( 3, 6 ) ref -> r1 "CSE - conservative"-; V96 cse6 [V96,T34] ( 3, 24 ) int -> r2 "CSE - moderate"+; V96 cse6 [V96,T62] ( 3, 6 ) ref -> r1 "CSE - conservative"
+; V97 cse7 [V97,T33] ( 3, 24 ) int -> r2 "CSE - moderate" ;
; Lcl frame size = 20
@@ -696,20 +697,26 @@ G_M3603_IG41: ; bbWeight=2, gcrefRegs=0330 {r4 r5 r8 r9}, byrefRegs=0000
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- ldr r1, [r4+0x04]+ ldr r2, [r4+0x04]
+ ; gcrRegs +[r2]
+ mov r1, r2 ; gcrRegs +[r1]- cmp r1, 0+ mov r0, r1
+ ; gcrRegs +[r0]
+ cmp r0, 0 beq SHORT G_M3603_IG44- ;; size=118 bbWeight=2 PerfScore 82.00
-G_M3603_IG42: ; bbWeight=1, gcrefRegs=0132 {r1 r4 r5 r8}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0+ ;; size=122 bbWeight=2 PerfScore 86.00
+G_M3603_IG42: ; bbWeight=1, gcrefRegs=0133 {r0 r1 r4 r5 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2]
+ ldr r0, [r0]
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3 bne SHORT G_M3603_IG44
;; size=14 bbWeight=1 PerfScore 5.00
G_M3603_IG43: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz+ ; gcrRegs -[r1] adds r0, r4, 4
; byrRegs +[r0]
mov r1, r8
@@ -721,15 +728,13 @@ G_M3603_IG43: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {},
; byrRegs -[r0]
b SHORT G_M3603_IG48
;; size=16 bbWeight=2 PerfScore 12.00-G_M3603_IG44: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r8]
- ldr r1, [r4+0x04]
- ; gcrRegs +[r1]+G_M3603_IG44: ; bbWeight=2, gcrefRegs=0132 {r1 r4 r5 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1 r8] mov r9, r1
; gcrRegs +[r9]
cmp r9, 0
beq SHORT G_M3603_IG47- ;; size=10 bbWeight=2 PerfScore 8.00+ ;; size=8 bbWeight=2 PerfScore 6.00 G_M3603_IG45: ; bbWeight=1, gcrefRegs=0332 {r1 r4 r5 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9]
movw r3, 0xd1ff
@@ -819,7 +824,7 @@ G_M3603_IG53: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1110, prolog size 12, PerfScore 2413.38, instruction count 428, allocated bytes for code 1110 (MethodHash=ab1ef1ec) for method System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)+; Total bytes of code 1112, prolog size 12, PerfScore 2415.38, instruction count 429, allocated bytes for code 1112 (MethodHash=ab1ef1ec) for method System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts) ; ============================================================
Unwind Info:
@@ -831,7 +836,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 555 (0x0022b) Actual length = 1110 (0x000456)+ Function Length : 556 (0x0022c) Actual length = 1112 (0x000458) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,12 +8,12 @@
; 0 inlinees with PGO data; 14 single block inlinees; 15 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T57] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T00] ( 27, 93 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode>+; V00 this [V00,T58] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T00] ( 26, 91 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V03 loc2 [V03,T32] ( 3, 12 ) ubyte -> r0
; V04 loc3 [V04,T26] ( 4, 12 ) ubyte -> r0 -;* V05 loc4 [V05,T63] ( 0, 0 ) ubyte -> zero-ref +;* V05 loc4 [V05,T64] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V07 loc6 [V07,T12] ( 3, 24 ) int -> r6
; V08 loc7 [V08,T01] ( 7, 76 ) int -> r5
@@ -25,7 +25,7 @@
;* V14 tmp4 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T34] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V16 tmp6 [V16,T41] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V17 tmp7 [V17,T58] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V17 tmp7 [V17,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V18 tmp8 [V18,T16] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V19 tmp9 [V19,T39] ( 4, 10 ) int -> r6 "Inline return value spill temp"
; V20 tmp10 [V20,T52] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
@@ -34,7 +34,7 @@
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V24 tmp14 [V24,T35] ( 4, 11 ) ref -> r7 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V25 tmp15 [V25,T42] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V26 tmp16 [V26,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V26 tmp16 [V26,T60] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V27 tmp17 [V27,T17] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V28 tmp18 [V28,T14] ( 4, 20 ) int -> r6 "Inlining Arg"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
@@ -42,10 +42,10 @@
; V31 tmp21 [V31,T46] ( 4, 8 ) int -> r7 "Inline return value spill temp"
; V32 tmp22 [V32,T53] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V33 tmp23 [V33,T21] ( 4, 16 ) ref -> r6 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>-; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r1 "CASTCLASS eval op1"
-; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r1 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>+; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r0 "CASTCLASS eval op1"
+; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r0 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V36 tmp26 [V36,T43] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V37 tmp27 [V37,T60] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable"+; V37 tmp27 [V37,T61] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable" ; V38 tmp28 [V38,T10] ( 8, 27 ) ref -> r4 class-hnd "spilling QMark2" <<unknown class>>
; V39 tmp29 [V39,T33] ( 3, 12 ) int -> r7 "Inlining Arg"
; V40 tmp30 [V40,T40] ( 4, 10 ) int -> r6 "Inline return value spill temp"
@@ -62,7 +62,7 @@
;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V52 tmp42 [V52,T36] ( 4, 11 ) ref -> r3 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V53 tmp43 [V53,T44] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V54 tmp44 [V54,T61] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V54 tmp44 [V54,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V55 tmp45 [V55,T18] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
;* V56 tmp46 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V57 tmp47 [V57,T49] ( 3, 8 ) ref -> r4 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
@@ -70,7 +70,7 @@
;* V59 tmp49 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V60 tmp50 [V60,T37] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V61 tmp51 [V61,T45] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V62 tmp52 [V62,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V62 tmp52 [V62,T63] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V63 tmp53 [V63,T19] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V64 tmp54 [V64,T28] ( 3, 12 ) ref -> r1 "arr expr"
; V65 tmp55 [V65,T29] ( 3, 12 ) ref -> r0 "arr expr"
@@ -81,7 +81,8 @@
; V70 cse1 [V70,T07] ( 3, 40 ) ref -> r1 "CSE - aggressive"
; V71 cse2 [V71,T55] ( 3, 6 ) ref -> r0 "CSE - conservative"
; V72 cse3 [V72,T56] ( 3, 6 ) ref -> r1 "CSE - conservative"-; V73 rat0 [V73,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable"+; V73 cse4 [V73,T57] ( 3, 6 ) ref -> r1 "CSE - conservative"
+; V74 rat0 [V74,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable" ;
; Lcl frame size = 0
@@ -109,7 +110,7 @@ G_M35244_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r4]
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50-G_M35244_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M35244_IG05: ; bbWeight=4, gcVars=000000000000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4]
ldrb r0, [r4+0x1E]
subs r3, r0, 3
@@ -397,20 +398,26 @@ G_M35244_IG30: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- ldr r1, [r4+0x04]+ ldr r2, [r4+0x04]
+ ; gcrRegs +[r2]
+ mov r1, r2 ; gcrRegs +[r1]- cmp r1, 0+ mov r0, r1
+ ; gcrRegs +[r0]
+ cmp r0, 0 beq SHORT G_M35244_IG33- ;; size=56 bbWeight=2 PerfScore 40.00
-G_M35244_IG31: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0+ ;; size=60 bbWeight=2 PerfScore 44.00
+G_M35244_IG31: ; bbWeight=1, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2]
+ ldr r0, [r0]
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3 bne SHORT G_M35244_IG33
;; size=14 bbWeight=1 PerfScore 5.00
G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz+ ; gcrRegs -[r1] adds r0, r4, 4
; byrRegs +[r0]
mov r1, r6
@@ -422,14 +429,13 @@ G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
; byrRegs -[r0]
b SHORT G_M35244_IG37
;; size=16 bbWeight=2 PerfScore 12.00-G_M35244_IG33: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4 r6]
- ldr r1, [r4+0x04]
- ; gcrRegs +[r1]+G_M35244_IG33: ; bbWeight=2, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1 r6] mov r4, r1+ ; gcrRegs +[r4] cmp r4, 0
beq SHORT G_M35244_IG36- ;; size=8 bbWeight=2 PerfScore 8.00+ ;; size=6 bbWeight=2 PerfScore 6.00 G_M35244_IG34: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4]
movw r3, 0xd1ff
@@ -748,7 +754,7 @@ G_M35244_IG68: ; bbWeight=0.50, epilog, nogc, extend
bx r3 // <unknown method>
; gcr arg pop 0
;; size=6 bbWeight=0.50 PerfScore 1.00-G_M35244_IG69: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M35244_IG69: ; bbWeight=0, gcVars=000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0 r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -776,7 +782,7 @@ RWD00 dd G_M35244_IG38
dd G_M35244_IG38
-; Total bytes of code 938, prolog size 10, PerfScore 1002.00, instruction count 372, allocated bytes for code 938 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)+; Total bytes of code 940, prolog size 10, PerfScore 1004.00, instruction count 373, allocated bytes for code 940 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts) ; ============================================================
Unwind Info:
@@ -788,7 +794,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 469 (0x001d5) Actual length = 938 (0x0003aa)+ Function Length : 470 (0x001d6) Actual length = 940 (0x0003ac) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -12,22 +12,22 @@
; V01 arg1 [V01,T13] ( 4, 3 ) int -> r6 single-def
; V02 arg2 [V02,T11] ( 3, 4 ) int -> r4 single-def
; V03 arg3 [V03,T12] ( 5, 3.50) int -> r5 single-def-; V04 arg4 [V04,T22] ( 1, 0.50) int -> [sp+0x38] single-def+; V04 arg4 [V04,T22] ( 1, 0.50) int -> [sp+0x30] single-def ;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 loc1 [V06,T16] ( 3, 1.50) int -> r7
;* V07 loc2 [V07,T23] ( 0, 0 ) ref -> zero-ref class-hnd exact EH-live single-def <System.Buffers.SharedArrayPoolPartitions+Partition>
; V08 loc3 [V08 ] ( 6, 2.50) ubyte -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op
; V09 loc4 [V09,T14] ( 3, 4.50) ref -> r6 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
; V10 loc5 [V10,T02] ( 10, 13.25) int -> registers -; V11 loc6 [V11,T07] ( 5, 10 ) ref -> r5 class-hnd <System.Array>
-; V12 loc7 [V12,T08] ( 4, 8 ) int -> r3 +; V11 loc6 [V11,T06] ( 5, 10 ) ref -> registers class-hnd <System.Array>
+; V12 loc7 [V12,T08] ( 4, 8 ) int -> r1 ; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14,T17] ( 3, 1.50) int -> r7
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
; V17 tmp4 [V17,T18] ( 3, 1.50) int -> r4
; V18 tmp5 [V18,T00] ( 3, 24 ) int -> r8 "impSpillLclRefs"-; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> r1 class-hnd "impSpillLclRefs" <<unknown class>>+; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> r3 class-hnd "impSpillLclRefs" <<unknown class>> ; V20 tmp7 [V20,T09] ( 2, 8 ) int -> r2 "impAppendStmt"
; V21 tmp8 [V21,T15] ( 2, 2 ) ubyte -> r0 "Inlining Arg"
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -35,19 +35,19 @@
; V24 tmp11 [V24,T10] ( 2, 8 ) int -> r3 "Inlining Arg"
; V25 tmp12 [V25,T04] ( 3, 12 ) ref -> r3 "arr expr"
; V26 tmp13 [V26,T05] ( 3, 12 ) int -> r2 "index expr"-; V27 PSPSym [V27,T21] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
-; V28 cse0 [V28,T06] ( 4, 10.50) int -> r5 "CSE - aggressive"+; V27 PSPSym [V27,T21] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
+; V28 cse0 [V28,T07] ( 3, 10 ) int -> r1 "CSE - aggressive" ; V29 cse1 [V29,T19] ( 3, 1.50) int -> r1 "CSE - moderate"
; V30 cse2 [V30,T20] ( 3, 1.50) int -> r1 "CSE - moderate"
;-; Lcl frame size = 24+; Lcl frame size = 20
G_M62513_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push {r4,r5,r6,r7,r8,r9,r11,lr}
- sub sp, 24
- add r11, sp, 48
- add r4, sp, 56
- str r4, [sp+0x14] // [V27 PSPSym]+ push {r4,r5,r6,r7,r8,r11,lr}
+ sub sp, 20
+ add r11, sp, 40
+ add r4, sp, 48
+ str r4, [sp+0x10] // [V27 PSPSym] str r0, [sp+0x08] // [V00 this]
; GC ptr vars +{V00}
mov r6, r1
@@ -63,8 +63,8 @@ G_M62513_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=0001 {r0},
G_M62513_IG03: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[r0]
; GC ptr vars -{V00}- add sp, 24
- pop {r4,r5,r6,r7,r8,r9,r11,pc}+ add sp, 20
+ pop {r4,r5,r6,r7,r8,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
G_M62513_IG04: ; bbWeight=0.50, gcVars=00000002 {V00}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r0]
@@ -109,12 +109,12 @@ G_M62513_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[r0]
ldr r1, [r0+0x0C]
cmp r1, 0- beq G_M62513_IG22+ beq G_M62513_IG23 ldr r1, [r0+0x10]
cmp r1, 0
bne SHORT G_M62513_IG12
str r6, [r0+0x10]- b SHORT G_M62513_IG22+ b SHORT G_M62513_IG23 ;; size=20 bbWeight=0.50 PerfScore 4.50
G_M62513_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
@@ -141,7 +141,7 @@ G_M62513_IG12: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
; gcrRegs +[r0]
subs r1, r6, r1
cmp r1, r7- ble SHORT G_M62513_IG22+ ble SHORT G_M62513_IG23 movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r6, [r1]
@@ -152,7 +152,7 @@ G_M62513_IG12: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
cmp r5, 2
bne SHORT G_M62513_IG17
mov r8, 32- ldr r5, [sp+0x38] // [V04 arg4]+ ldr r5, [sp+0x30] // [V04 arg4] cmp r5, 0x4000
ble SHORT G_M62513_IG13
mov r8, 33
@@ -172,34 +172,34 @@ G_M62513_IG14: ; bbWeight=1.75, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}
b SHORT G_M62513_IG17
;; size=6 bbWeight=1.75 PerfScore 3.50
G_M62513_IG15: ; bbWeight=2, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz- ldr r1, [r0+0x04]
- ; gcrRegs +[r1]
- subs r3, r5, 1
- str r3, [r0+0x0C]
- ldr r2, [r1+0x04]
- cmp r3, r2+ ldr r3, [r0+0x04]
+ ; gcrRegs +[r3]
+ subs r1, r1, 1
+ str r1, [r0+0x0C]
+ ldr r2, [r3+0x04]
+ cmp r1, r2 bhs SHORT G_M62513_IG10- adds r1, 8
- ; gcrRegs -[r1]
- ; byrRegs +[r1]
- lsls r3, r3, 2
- ldr r5, [r1+r3]
- ; gcrRegs +[r5]
- cmp r5, 0+ adds r3, 8
+ ; gcrRegs -[r3]
+ ; byrRegs +[r3]
+ lsls r1, r1, 2
+ ldr r8, [r3+r1]
+ ; gcrRegs +[r8]
+ cmp r8, 0 bne SHORT G_M62513_IG16
movw r0, 0xd1ff
; gcrRegs -[r0]
movt r0, 0xd1ff
movw r1, 0xd1ff- ; byrRegs -[r1] movt r1, 0xd1ff
movw r3, 0xd1ff+ ; byrRegs -[r3] movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0- ;; size=50 bbWeight=2 PerfScore 38.00
-G_M62513_IG16: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz+ ;; size=54 bbWeight=2 PerfScore 38.00
+G_M62513_IG16: ; bbWeight=2, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref, isz ldr r0, [sp+0x08] // [V00 this]
; gcrRegs +[r0]
ldr r3, [r0+0x04]
@@ -217,9 +217,15 @@ G_M62513_IG16: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
ldrb r3, [r6+0x5D]
; byrRegs -[r3]
cmp r3, 0- mov r8, r9
- beq SHORT G_M62513_IG17+ beq SHORT G_M62513_IG19 mov r0, r5+ ; gcrRegs -[r0]
+ mov r5, r8
+ ; gcrRegs +[r5]
+ mov r8, r0
+ ; gcrRegs -[r8]
+ mov r0, r5
+ ; gcrRegs +[r0] ldr r3, [r5]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x0C]
@@ -241,29 +247,35 @@ G_M62513_IG16: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
blx lr // <unknown method>
; gcrRegs -[r0 r5]
; gcr arg pop 0- ;; size=70 bbWeight=2 PerfScore 62.00
-G_M62513_IG17: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz ldr r0, [sp+0x08] // [V00 this]
; gcrRegs +[r0]- ldr r5, [r0+0x0C]
- cmp r5, 0
- ble SHORT G_M62513_IG19
- add r1, r8, -1
- mov r9, r1+ ;; size=76 bbWeight=2 PerfScore 68.00
+G_M62513_IG17: ; bbWeight=4, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz
+ ldr r1, [r0+0x0C]
+ cmp r1, 0
+ ble SHORT G_M62513_IG20
+ add r3, r8, -1
+ mov r5, r3 cmp r8, 0
bgt SHORT G_M62513_IG15- ;; size=20 bbWeight=4 PerfScore 32.00+ ;; size=18 bbWeight=4 PerfScore 28.00 G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]- b SHORT G_M62513_IG20
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- cmp r5, 0
- bgt SHORT G_M62513_IG20
- movs r4, 0 b SHORT G_M62513_IG21- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M62513_IG20: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M62513_IG19: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r6]
+ mov r8, r5
+ ldr r0, [sp+0x08] // [V00 this]
+ ; gcrRegs +[r0]
+ b SHORT G_M62513_IG17
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M62513_IG20: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6]
+ movs r4, 0
+ b SHORT G_M62513_IG22
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M62513_IG21: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ldr r4, [r0+0x10]
mov r0, r7
; gcrRegs -[r0]
@@ -276,10 +288,10 @@ G_M62513_IG20: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
ldr r0, [sp+0x08] // [V00 this]
; gcrRegs +[r0]
;; size=20 bbWeight=0.50 PerfScore 4.00-G_M62513_IG21: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref+G_M62513_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref str r4, [r0+0x10]
;; size=2 bbWeight=0.50 PerfScore 0.50-G_M62513_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz+G_M62513_IG23: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ldrb r3, [sp+0x0C] // [V08 loc3]
cmp r3, 0
beq G_M62513_IG03
@@ -291,17 +303,18 @@ G_M62513_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
; gcr arg pop 0
b SHORT G_M62513_IG03
;; size=22 bbWeight=0.50 PerfScore 3.50-G_M62513_IG23: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc+G_M62513_IG24: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; GC ptr vars +{V00 V01}- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}+ push {r4,r5,r6,r7,r8,r11,lr}
+ sub sp, 12 add r3, r11, 8- str r3, [sp+0x04]
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M62513_IG24: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldrb r0, [r11-0x24] // [V08 loc3]+ str r3, [sp+0x08]
+ ;; size=12 bbWeight=0 PerfScore 0.00...
@@ -8,10 +8,10 @@
; 1 inlinees with PGO data; 12 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T18] ( 3, 3 ) int -> r4 single-def
-; V01 arg1 [V01,T19] ( 3, 3 ) int -> r5 single-def+; V00 arg0 [V00,T19] ( 3, 3 ) int -> r4 single-def
+; V01 arg1 [V01,T20] ( 3, 3 ) int -> r5 single-def ; V02 loc0 [V02 ] ( 4, 17 ) struct ( 8) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>-; V03 loc1 [V03,T20] ( 4, 11 ) int -> r5 +; V03 loc1 [V03,T21] ( 4, 11 ) int -> r5 ;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
@@ -19,14 +19,14 @@
; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> r4 class-hnd single-def "non-inline candidate call" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>-; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <<unknown class>>+; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> lr "Inlining Arg"
-; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> r3 "Inlining Arg"+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> lr "Inlining Arg"
+; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> r3 "Inlining Arg" ;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
@@ -40,30 +40,30 @@
;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V35 tmp28 [V35,T21] ( 4, 18 ) int -> r3 "Inline stloc first use temp"
-; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String>+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V35 tmp28 [V35,T22] ( 4, 18 ) int -> r3 "Inline stloc first use temp"
+; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String> ; V37 tmp30 [V37 ] ( 3, 3 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar"
; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP
; V39 tmp32 [V39 ] ( 3, 13 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x4)" P-DEP-; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> r4 single-def "field V04._list (fldOffset=0x0)" P-INDEP
-; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> r2 "field V04._current (fldOffset=0x4)" P-INDEP+; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> r4 single-def "field V04._list (fldOffset=0x0)" P-INDEP
+; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> r2 "field V04._current (fldOffset=0x4)" P-INDEP ; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r7 "field V04._index (fldOffset=0x8)" P-INDEP-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> r6 "field V04._version (fldOffset=0xc)" P-INDEP
-; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> r0 "field V09._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp38 [V45,T15] ( 2, 8 ) int -> r1 "field V09._length (fldOffset=0x4)" P-INDEP+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> r6 "field V04._version (fldOffset=0xc)" P-INDEP
+; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> r0 "field V09._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp38 [V45,T16] ( 2, 8 ) int -> r1 "field V09._length (fldOffset=0x4)" P-INDEP ;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> r4 single-def "field V13._list (fldOffset=0x0)" P-INDEP+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> r4 single-def "field V13._list (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x4)" P-INDEP-;* V50 tmp43 [V50,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-; V51 tmp44 [V51,T25] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP+;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
+; V51 tmp44 [V51,T26] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP ; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> r3 "field V14._reference (fldOffset=0x0)" P-INDEP-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> lr "field V14._length (fldOffset=0x4)" P-INDEP
-; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> r3 "field V15._reference (fldOffset=0x0)" P-INDEP
-; V55 tmp48 [V55,T16] ( 2, 8 ) int -> lr "field V15._length (fldOffset=0x4)" P-INDEP+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> lr "field V14._length (fldOffset=0x4)" P-INDEP
+; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> r3 "field V15._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp48 [V55,T17] ( 2, 8 ) int -> lr "field V15._length (fldOffset=0x4)" P-INDEP ;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP
;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
@@ -79,19 +79,20 @@
;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP
; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> r2 "arr expr"-; V71 PSPSym [V71,T27] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
-; V72 cse0 [V72,T04] ( 3, 24 ) int -> r8 "CSE - aggressive"+; V71 PSPSym [V71,T28] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
+; V72 cse0 [V72,T09] ( 2, 16 ) int -> r2 "CSE - aggressive"
+; V73 cse1 [V73,T04] ( 2, 16 ) int -> r2 "CSE - aggressive" ;-; Lcl frame size = 24+; Lcl frame size = 20
G_M58652_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG- push {r4,r5,r6,r7,r8,r10,r11,lr}
- sub sp, 24
- add r11, sp, 48+ push {r4,r5,r6,r7,r10,r11,lr}
+ sub sp, 20
+ add r11, sp, 40 movs r2, 0
str r2, [sp+0x08]- add r2, sp, 56
- str r2, [sp+0x14]+ add r2, sp, 48
+ str r2, [sp+0x10] mov r4, r0
mov r5, r1
;; size=22 bbWeight=1 PerfScore 9.00
@@ -112,7 +113,7 @@ G_M58652_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
ldrb r2, [r5+0x04]
cmp r2, 0- beq SHORT G_M58652_IG11+ beq SHORT G_M58652_IG10 ldr r4, [r5]
; gcrRegs +[r4]
ldr r6, [r4+0x0C]
@@ -150,15 +151,15 @@ G_M58652_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3},
; byrRegs -[r0-r1]
; gcr arg pop 0
cmp r0, 0- bne SHORT G_M58652_IG14+ bne SHORT G_M58652_IG13 ;; size=26 bbWeight=4 PerfScore 40.00
G_M58652_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz- ldr r8, [r4+0x0C]
- cmp r6, r8
- bne SHORT G_M58652_IG10+ ldr r2, [r4+0x0C]
+ cmp r6, r2
+ bne SHORT G_M58652_IG09 ldr r2, [r4+0x08]
cmp r7, r2- bhs SHORT G_M58652_IG11+ bhs SHORT G_M58652_IG10 ldr r2, [r4+0x04]
; gcrRegs +[r2]
ldr r0, [r2+0x04]
@@ -173,7 +174,7 @@ G_M58652_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; byrRegs -[r2]
adds r7, r7, 1
b SHORT G_M58652_IG04- ;; size=32 bbWeight=8 PerfScore 120.00+ ;; size=30 bbWeight=8 PerfScore 120.00 G_M58652_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r2 r4]
movw r3, 0xd1ff
@@ -190,10 +191,6 @@ G_M58652_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
G_M58652_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp r6, r8
- bne SHORT G_M58652_IG09
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M58652_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr r4, [r5]
; gcrRegs +[r4]
add r0, sp, 8
@@ -214,9 +211,9 @@ G_M58652_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r3, [r4+0x08]
ldr lr, [r0+0x04]
cmp lr, r3- bls SHORT G_M58652_IG13+ bls SHORT G_M58652_IG12 ;; size=36 bbWeight=8 PerfScore 120.00-G_M58652_IG12: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz+G_M58652_IG11: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz add lr, r3, 1
str lr, [r4+0x08]
adds r0, 8
@@ -229,9 +226,9 @@ G_M58652_IG12: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1 r4]
; byrRegs -[r0]- b SHORT G_M58652_IG14+ b SHORT G_M58652_IG13 ;; size=26 bbWeight=1 PerfScore 9.00-G_M58652_IG13: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref+G_M58652_IG12: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref ; gcrRegs +[r1 r4]
mov r0, r4
; gcrRegs +[r0]
@@ -242,24 +239,24 @@ G_M58652_IG13: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r1 r4]
; gcr arg pop 0
;; size=14 bbWeight=1 PerfScore 5.00-G_M58652_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M58652_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add r0, sp, 0
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 4.00-G_M58652_IG15: ; bbWeight=1, epilog, nogc, extend
- add sp, 24
- pop {r4,r5,r6,r7,r8,r10,r11,pc}+G_M58652_IG14: ; bbWeight=1, epilog, nogc, extend
+ add sp, 20
+ pop {r4,r5,r6,r7,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00-G_M58652_IG16: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc+G_M58652_IG15: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc ; gcrRegs +[r0]- push {r2,r3,r4,r5,r6,r7,r8,r10,r11,lr}+ push {r3,r4,r5,r6,r7,r10,r11,lr} add r3, r11, 8- str r3, [sp+0x04]+ str r3, [sp] ;; size=10 bbWeight=0 PerfScore 0.00-G_M58652_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref+G_M58652_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref ldr r3, [r0]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x04]
@@ -271,14 +268,14 @@ G_M58652_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byr
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0- movw r0, LOW ADDRESS G_M58652_IG14
- movt r0, HIGH ADDRESS G_M58652_IG14+ movw r0, LOW ADDRESS G_M58652_IG13
+ movt r0, HIGH ADDRESS G_M58652_IG13 ;; size=28 bbWeight=0 PerfScore 0.00-G_M58652_IG18: ; bbWeight=0, funclet epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r8,r10,r11,pc}+G_M58652_IG17: ; bbWeight=0, funclet epilog, nogc, extend
+ pop {r3,r4,r5,r6,r7,r10,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 310, prolog size 22, PerfScore 378.00, instruction count 119, allocated bytes for code 310 (MethodHash=943d1ae3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)+; Total bytes of code 304, prolog size 22, PerfScore 362.00, instruction count 117, allocated bytes for code 304 (MethodHash=943d1ae3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts) ; ============================================================
Unwind Info:
@@ -290,12 +287,12 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 134 (0x00086) Actual length = 268 (0x00010c)+ Function Length : 131 (0x00083) Actual length = 262 (0x000106) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----- 06 add sp, sp, #24 ; opsize 16
- AD F0 pop {r4,r5,r6,r7,r8,r10,r11,lr} ; opsize 32+ 05 add sp, sp, #20 ; opsize 16
+ AC F0 pop {r4,r5,r6,r7,r10,r11,lr} ; opsize 32 FF end
...
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 loc0 [V00,T11] ( 8, 12 ) ref -> r4 class-hnd exact single-def <<unknown class>>-; V01 loc1 [V01,T30] ( 4, 1.50) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Object>+; V01 loc1 [V01,T32] ( 4, 1.50) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Object> ; V02 loc2 [V02 ] ( 6, 5 ) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op
;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V04 loc4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.WeakReference`1[System.Diagnostics.Tracing.EventSource]>
@@ -17,54 +17,56 @@
;* V06 loc6 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.EventSource]>
;* V07 loc7 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Diagnostics.Tracing.EventSource>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V09 tmp1 [V09,T21] ( 3, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V10 tmp2 [V10,T25] ( 2, 4 ) ubyte -> r0 "Inlining Arg"+; V09 tmp1 [V09,T23] ( 3, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V10 tmp2 [V10,T27] ( 2, 4 ) ubyte -> r0 "Inlining Arg" ;* V11 tmp3 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V12 tmp4 [V12,T24] ( 2, 4 ) ref -> r5 class-hnd single-def "Inlining Arg" <<unknown class>>+; V12 tmp4 [V12,T26] ( 2, 4 ) ref -> r5 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp7 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>-; V16 tmp8 [V16,T15] ( 5, 8 ) ref -> r2 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
-; V17 tmp9 [V17,T08] ( 5, 14 ) int -> r0 "Inline stloc first use temp"+; V16 tmp8 [V16,T17] ( 5, 8 ) ref -> r2 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
+; V17 tmp9 [V17,T09] ( 5, 14 ) int -> r0 "Inline stloc first use temp" ;* V18 tmp10 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>-; V19 tmp11 [V19,T22] ( 3, 6 ) ref -> r2 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>+; V19 tmp11 [V19,T24] ( 3, 6 ) ref -> r2 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>
;* V21 tmp13 [V21 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.EventSource>
; V22 tmp14 [V22,T12] ( 3, 12 ) ref -> r9 class-hnd "updating class info" <System.ComAwareWeakReference>
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp16 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V25 tmp17 [V25,T17] ( 2, 8 ) ref -> r0 class-hnd "dup spill" <System.Object>
-; V26 tmp18 [V26,T16] ( 4, 8 ) ref -> r0
-; V27 tmp19 [V27,T23] ( 3, 5.20) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V28 tmp20 [V28,T20] ( 4, 6.40) int -> r1 "Inline stloc first use temp"+; V25 tmp17 [V25,T19] ( 2, 8 ) ref -> r0 class-hnd "dup spill" <System.Object>
+; V26 tmp18 [V26,T18] ( 4, 8 ) ref -> r0
+; V27 tmp19 [V27,T25] ( 3, 5.20) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V28 tmp20 [V28,T22] ( 4, 6.40) int -> r1 "Inline stloc first use temp" ;* V29 tmp21 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventSource>-;* V30 tmp22 [V30,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V30 tmp22 [V30,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V31 tmp23 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V32 tmp24 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V33 tmp25 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.EventSource]>-;* V34 tmp26 [V34,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V34 tmp26 [V34,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V35 tmp27 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V36 tmp28 [V36,T04] ( 4, 17 ) ref -> r5 single-def "field V03._list (fldOffset=0x0)" P-INDEP-; V37 tmp29 [V37,T09] ( 3, 10 ) ref -> r8 "field V03._current (fldOffset=0x4)" P-INDEP+; V37 tmp29 [V37,T10] ( 3, 10 ) ref -> r8 "field V03._current (fldOffset=0x4)" P-INDEP ; V38 tmp30 [V38,T00] ( 6, 21 ) int -> r7 "field V03._index (fldOffset=0x8)" P-INDEP-; V39 tmp31 [V39,T10] ( 3, 13 ) int -> r6 "field V03._version (fldOffset=0xc)" P-INDEP
-; V40 tmp32 [V40,T06] ( 4, 17 ) ref -> r4 single-def "field V06._list (fldOffset=0x0)" P-INDEP
-; V41 tmp33 [V41,T07] ( 4, 10 ) ref -> r7 "field V06._current (fldOffset=0x4)" P-INDEP+; V39 tmp31 [V39,T15] ( 2, 9 ) int -> r6 "field V03._version (fldOffset=0xc)" P-INDEP
+; V40 tmp32 [V40,T05] ( 4, 17 ) ref -> r4 single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V41 tmp33 [V41,T08] ( 4, 10 ) ref -> r7 "field V06._current (fldOffset=0x4)" P-INDEP ; V42 tmp34 [V42,T01] ( 6, 21 ) int -> r6 "field V06._index (fldOffset=0x8)" P-INDEP-; V43 tmp35 [V43,T14] ( 2, 9 ) int -> r5 "field V06._version (fldOffset=0xc)" P-INDEP
-; V44 tmp36 [V44,T26] ( 3, 3 ) ref -> r5 single-def "field V13._list (fldOffset=0x0)" P-INDEP+; V43 tmp35 [V43,T16] ( 2, 9 ) int -> r5 "field V06._version (fldOffset=0xc)" P-INDEP
+; V44 tmp36 [V44,T28] ( 3, 3 ) ref -> r5 single-def "field V13._list (fldOffset=0x0)" P-INDEP ;* V45 tmp37 [V45 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x4)" P-INDEP-;* V46 tmp38 [V46,T31] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-; V47 tmp39 [V47,T28] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP
-; V48 tmp40 [V48,T27] ( 3, 3 ) ref -> r4 single-def "field V33._list (fldOffset=0x0)" P-INDEP+;* V46 tmp38 [V46,T33] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
+; V47 tmp39 [V47,T30] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP
+; V48 tmp40 [V48,T29] ( 3, 3 ) ref -> r4 single-def "field V33._list (fldOffset=0x0)" P-INDEP ;* V49 tmp41 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V33._current (fldOffset=0x4)" P-INDEP-;* V50 tmp42 [V50,T32] ( 0, 0 ) int -> zero-ref "field V33._index (fldOffset=0x8)" P-INDEP
-; V51 tmp43 [V51,T29] ( 2, 2 ) int -> r5 "field V33._version (fldOffset=0xc)" P-INDEP+;* V50 tmp42 [V50,T34] ( 0, 0 ) int -> zero-ref "field V33._index (fldOffset=0x8)" P-INDEP
+; V51 tmp43 [V51,T31] ( 2, 2 ) int -> r5 "field V33._version (fldOffset=0xc)" P-INDEP ; V52 tmp44 [V52,T02] ( 3, 24 ) ref -> r0 "arr expr"
; V53 tmp45 [V53,T03] ( 3, 24 ) ref -> r0 "arr expr"-; V54 PSPSym [V54,T33] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"+; V54 PSPSym [V54,T35] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym" ; V55 cse0 [V55,T13] ( 2, 8 ) int -> r0 "CSE - moderate"-; V56 cse1 [V56,T05] ( 3, 20 ) int -> r8 "CSE - aggressive"+; V56 cse1 [V56,T14] ( 2, 8 ) int -> r0 "CSE - moderate"
+; V57 cse2 [V57,T06] ( 2, 16 ) int -> r0 "CSE - aggressive"
+; V58 cse3 [V58,T07] ( 2, 16 ) int -> r0 "CSE - aggressive" ;
; Lcl frame size = 12
@@ -115,7 +117,7 @@ G_M64982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r1, 0
str r1, [sp+0x04] // [V02 loc2]
;; size=80 bbWeight=1 PerfScore 26.00-G_M64982_IG03: ; bbWeight=1, gcVars=0000000040000000 {V01}, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M64982_IG03: ; bbWeight=1, gcVars=0000000100000000 {V01}, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x04] // [V02 loc2]
cmp r1, 0
bne SHORT G_M64982_IG13
@@ -147,19 +149,19 @@ G_M64982_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movs r7, 0
;; size=14 bbWeight=1 PerfScore 5.00
G_M64982_IG06: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz- ldr r8, [r5+0x0C]
- cmp r6, r8
- bne SHORT G_M64982_IG19+ ldr r0, [r5+0x0C]
+ cmp r6, r0
+ bne G_M64982_IG20 ;; size=8 bbWeight=8 PerfScore 24.00
G_M64982_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5+0x08]
cmp r7, r0- bhs G_M64982_IG22+ bhs G_M64982_IG21 ldr r0, [r5+0x04]
; gcrRegs +[r0]
ldr r3, [r0+0x04]
cmp r7, r3- bhs SHORT G_M64982_IG20+ bhs SHORT G_M64982_IG19 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -300,20 +302,14 @@ G_M64982_IG18: ; bbWeight=0.80, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0000
; gcr arg pop 0
b SHORT G_M64982_IG06
;; size=18 bbWeight=0.80 PerfScore 5.60-G_M64982_IG19: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5]
- cmp r6, r8
- bne SHORT G_M64982_IG21
- b SHORT G_M64982_IG22
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M64982_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]+G_M64982_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4-r5] movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M64982_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M64982_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -321,13 +317,13 @@ G_M64982_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M64982_IG22: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M64982_IG21: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4]
ldrb r0, [sp+0x04] // [V02 loc2]
cmp r0, 0- beq SHORT G_M64982_IG24+ beq SHORT G_M64982_IG23 ;; size=8 bbWeight=1 PerfScore 3.00-G_M64982_IG23: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref+G_M64982_IG22: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ldr r0, [sp] // [V01 loc1]
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -337,7 +333,7 @@ G_M64982_IG23: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00-G_M64982_IG24: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M64982_IG23: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -351,14 +347,14 @@ G_M64982_IG24: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0- bne SHORT G_M64982_IG31+ bne SHORT G_M64982_IG30 ;; size=28 bbWeight=1 PerfScore 10.00-G_M64982_IG25: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M64982_IG24: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r5, [r4+0x0C]
movs r6, 0- b SHORT G_M64982_IG27+ b SHORT G_M64982_IG26 ;; size=6 bbWeight=1 PerfScore 3.00-G_M64982_IG26: ; bbWeight=2, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref+G_M64982_IG25: ; bbWeight=2, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref ; gcrRegs +[r7]
mov r0, r7
; gcrRegs +[r0]
@@ -377,20 +373,20 @@ G_M64982_IG26: ; bbWeight=2, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, b
; gcrRegs -[r0 r7]
; gcr arg pop 0
;; size=24 bbWeight=2 PerfScore 20.00-G_M64982_IG27: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M64982_IG26: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x0C]
cmp r5, r0- bne SHORT G_M64982_IG32+ bne SHORT G_M64982_IG31 ;; size=6 bbWeight=8 PerfScore 24.00-G_M64982_IG28: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M64982_IG27: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08]
cmp r6, r0- bhs SHORT G_M64982_IG29+ bhs SHORT G_M64982_IG28 ldr r0, [r4+0x04]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r6, r1- bhs SHORT G_M64982_IG30+ bhs SHORT G_M64982_IG29 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -398,21 +394,21 @@ G_M64982_IG28: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r7, [r0+r1]
; gcrRegs +[r7]
adds r6, r6, 1- b SHORT G_M64982_IG26+ b SHORT G_M64982_IG25 ;; size=24 bbWeight=4 PerfScore 48.00-G_M64982_IG29: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc+G_M64982_IG28: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4 r7]
; byrRegs -[r0]
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=4 PerfScore 8.00-G_M64982_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M64982_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M64982_IG31: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M64982_IG30: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -423,9 +419,9 @@ G_M64982_IG31: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
...
@@ -8,28 +8,28 @@
; 9 inlinees with PGO data; 33 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T21] ( 8, 7 ) ref -> [sp+0x08] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V01 arg1 [V01,T19] ( 3, 10 ) int -> r4 single-def+; V00 arg0 [V00,T22] ( 8, 7 ) ref -> [sp+0x08] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V01 arg1 [V01,T20] ( 3, 10 ) int -> r4 single-def ; V02 arg2 [V02 ] ( 4, 11 ) struct ( 4) [sp+0x3C] single-def <System.Threading.CancellationToken>-; V03 loc0 [V03,T20] ( 4, 11 ) ubyte -> [sp+0x0C] do-not-enreg[Z] EH-live
-; V04 loc1 [V04,T06] ( 8, 32 ) ref -> [sp+0x04] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>+; V03 loc0 [V03,T21] ( 4, 11 ) ubyte -> [sp+0x0C] do-not-enreg[Z] EH-live
+; V04 loc1 [V04,T05] ( 8, 32 ) ref -> [sp+0x04] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres> ;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>
;* V07 loc4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V10 tmp1 [V10,T18] ( 6, 12 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>+; V10 tmp1 [V10,T19] ( 6, 12 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres> ;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V14 tmp5 [V14,T24] ( 3, 6 ) int -> r6 "Inlining Arg"+; V14 tmp5 [V14,T26] ( 3, 6 ) int -> r6 "Inlining Arg" ;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp10 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref -; V21 tmp12 [V21,T23] ( 5, 8 ) int -> r7 "Inlining Arg"+; V21 tmp12 [V21,T25] ( 5, 8 ) int -> r7 "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp15 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -37,41 +37,43 @@
;* V26 tmp17 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp18 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp19 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>-; V29 tmp20 [V29,T14] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"+; V29 tmp20 [V29,T13] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp" ;* V30 tmp21 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp22 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V33 tmp24 [V33,T09] ( 3, 24 ) byref -> r1 "Inlining Arg"
; V34 tmp25 [V34,T10] ( 3, 24 ) byref -> r1 "Inlining Arg"
;* V35 tmp26 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-;* V36 tmp27 [V36,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V36 tmp27 [V36,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
;* V38 tmp29 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"-;* V40 tmp31 [V40,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V40 tmp31 [V40,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V41 tmp32 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>-; V42 tmp33 [V42,T17] ( 4, 11 ) ref -> [sp+0x3C] do-not-enreg[] single-def "field V02._source (fldOffset=0x0)" P-DEP
-; V43 tmp34 [V43,T05] ( 4, 25 ) ref -> r8 single-def "field V05._list (fldOffset=0x0)" P-INDEP+; V42 tmp33 [V42,T18] ( 4, 11 ) ref -> [sp+0x3C] do-not-enreg[] single-def "field V02._source (fldOffset=0x0)" P-DEP
+; V43 tmp34 [V43,T06] ( 4, 25 ) ref -> r8 single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V44 tmp35 [V44,T04] ( 6, 28 ) ref -> r7 "field V05._current (fldOffset=0x4)" P-INDEP
; V45 tmp36 [V45,T00] ( 6, 41 ) int -> r6 "field V05._index (fldOffset=0x8)" P-INDEP-; V46 tmp37 [V46,T13] ( 3, 17 ) int -> r9 "field V05._version (fldOffset=0xc)" P-INDEP
-; V47 tmp38 [V47,T07] ( 4, 25 ) ref -> r6 single-def "field V07._list (fldOffset=0x0)" P-INDEP+; V46 tmp37 [V46,T23] ( 2, 9 ) int -> r9 "field V05._version (fldOffset=0xc)" P-INDEP
+; V47 tmp38 [V47,T07] ( 4, 25 ) ref -> r7 single-def "field V07._list (fldOffset=0x0)" P-INDEP ; V48 tmp39 [V48,T08] ( 3, 16 ) ref -> r0 "field V07._current (fldOffset=0x4)" P-INDEP-; V49 tmp40 [V49,T01] ( 6, 41 ) int -> r9 "field V07._index (fldOffset=0x8)" P-INDEP
-; V50 tmp41 [V50,T22] ( 2, 9 ) int -> r8 "field V07._version (fldOffset=0xc)" P-INDEP
-; V51 tmp42 [V51,T25] ( 3, 3 ) ref -> r8 single-def "field V28._list (fldOffset=0x0)" P-INDEP+; V49 tmp40 [V49,T01] ( 6, 41 ) int -> r8 "field V07._index (fldOffset=0x8)" P-INDEP
+; V50 tmp41 [V50,T24] ( 2, 9 ) int -> r6 "field V07._version (fldOffset=0xc)" P-INDEP
+; V51 tmp42 [V51,T27] ( 3, 3 ) ref -> r8 single-def "field V28._list (fldOffset=0x0)" P-INDEP ;* V52 tmp43 [V52 ] ( 0, 0 ) ref -> zero-ref single-def "field V28._current (fldOffset=0x4)" P-INDEP-;* V53 tmp44 [V53,T29] ( 0, 0 ) int -> zero-ref "field V28._index (fldOffset=0x8)" P-INDEP
-; V54 tmp45 [V54,T27] ( 2, 2 ) int -> r9 "field V28._version (fldOffset=0xc)" P-INDEP
-; V55 tmp46 [V55,T26] ( 3, 3 ) ref -> r6 single-def "field V38._list (fldOffset=0x0)" P-INDEP+;* V53 tmp44 [V53,T31] ( 0, 0 ) int -> zero-ref "field V28._index (fldOffset=0x8)" P-INDEP
+; V54 tmp45 [V54,T29] ( 2, 2 ) int -> r9 "field V28._version (fldOffset=0xc)" P-INDEP
+; V55 tmp46 [V55,T28] ( 3, 3 ) ref -> r7 single-def "field V38._list (fldOffset=0x0)" P-INDEP ;* V56 tmp47 [V56 ] ( 0, 0 ) ref -> zero-ref single-def "field V38._current (fldOffset=0x4)" P-INDEP-;* V57 tmp48 [V57,T30] ( 0, 0 ) int -> zero-ref "field V38._index (fldOffset=0x8)" P-INDEP
-; V58 tmp49 [V58,T28] ( 2, 2 ) int -> r8 "field V38._version (fldOffset=0xc)" P-INDEP+;* V57 tmp48 [V57,T32] ( 0, 0 ) int -> zero-ref "field V38._index (fldOffset=0x8)" P-INDEP
+; V58 tmp49 [V58,T30] ( 2, 2 ) int -> r6 "field V38._version (fldOffset=0xc)" P-INDEP ; V59 tmp50 [V59,T02] ( 3, 48 ) ref -> r1 "arr expr"
; V60 tmp51 [V60,T03] ( 3, 48 ) ref -> r0 "arr expr"-; V61 PSPSym [V61,T31] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
-; V62 cse0 [V62,T11] ( 3, 24 ) int -> r7 "CSE - moderate"
-; V63 cse1 [V63,T12] ( 2, 16 ) int -> r0 "CSE - moderate"+; V61 PSPSym [V61,T33] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
+; V62 cse0 [V62,T16] ( 2, 16 ) int -> r1 "CSE - moderate"
+; V63 cse1 [V63,T11] ( 2, 16 ) int -> r1 "CSE - moderate"
+; V64 cse2 [V64,T17] ( 2, 16 ) int -> r0 "CSE - moderate"
+; V65 cse3 [V65,T12] ( 2, 16 ) int -> r0 "CSE - moderate" ;
; Lcl frame size = 24
@@ -86,13 +88,13 @@ G_M12834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; GC ptr vars +{V00}
mov r4, r1
;; size=20 bbWeight=1 PerfScore 8.00-G_M12834_IG02: ; bbWeight=1, gcVars=00200000 {V00}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz+G_M12834_IG02: ; bbWeight=1, gcVars=0000000000400000 {V00}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r0]
cmp r0, 0- beq G_M12834_IG24+ beq G_M12834_IG23 ldr r3, [r0+0x08]
cmp r3, 0- ble G_M12834_IG25+ ble G_M12834_IG24 ;; size=14 bbWeight=1 PerfScore 5.00
G_M12834_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
@@ -114,7 +116,7 @@ G_M12834_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r1, [r1]
and r1, r1, 1
cmp r1, 1- bne G_M12834_IG26+ bne G_M12834_IG25 ;; size=48 bbWeight=1 PerfScore 16.00
G_M12834_IG04: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
movw r1, 0xd1ff
@@ -124,10 +126,10 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, b
dmb 15
str r1, [r5+0x0C]
cmp r7, 0- blt G_M12834_IG27+ blt G_M12834_IG26 movw r1, 0xd1ff
cmp r7, r1- bgt G_M12834_IG28+ bgt G_M12834_IG27 ;; size=34 bbWeight=1 PerfScore 11.00
G_M12834_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
@@ -142,14 +144,14 @@ G_M12834_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
orrs r1, r2
str r1, [r5+0x0C]
cmp r6, 0- ble G_M12834_IG29+ ble G_M12834_IG28 ;; size=30 bbWeight=1 PerfScore 11.00
G_M12834_IG06: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref
str r6, [r5+0x10]
str r5, [sp+0x04] // [V04 loc1]
; GC ptr vars +{V04}
;; size=4 bbWeight=1 PerfScore 2.00-G_M12834_IG07: ; bbWeight=1, gcVars=00200040 {V00 V04}, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, gcvars, byref, isz+G_M12834_IG07: ; bbWeight=1, gcVars=0000000000400020 {V00 V04}, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, gcvars, byref, isz mov r8, r0
; gcrRegs +[r8]
ldr r9, [r8+0x0C]
@@ -254,12 +256,12 @@ G_M12834_IG13: ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, b
blt SHORT G_M12834_IG09
;; size=6 bbWeight=4 PerfScore 12.00
G_M12834_IG14: ; bbWeight=8, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz- ldr r7, [r8+0x0C]
- cmp r9, r7
- bne SHORT G_M12834_IG18+ ldr r1, [r8+0x0C]
+ cmp r9, r1
+ bne SHORT G_M12834_IG17 ldr r1, [r8+0x08]
cmp r6, r1- bhs SHORT G_M12834_IG19+ bhs SHORT G_M12834_IG18 ldr r1, [r8+0x04]
; gcrRegs +[r1]
ldr r2, [r1+0x04]
@@ -299,11 +301,7 @@ G_M12834_IG17: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M12834_IG18: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- cmp r9, r7
- bne SHORT G_M12834_IG17
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M12834_IG19: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref+G_M12834_IG18: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref mov r0, r5
; gcrRegs +[r0]
mov r1, r4
@@ -317,25 +315,25 @@ G_M12834_IG19: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
; gcr arg pop 0
str r0, [sp+0x0C] // [V03 loc0]
;; size=20 bbWeight=8 PerfScore 64.00-G_M12834_IG20: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- bl G_M12834_IG30+G_M12834_IG19: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ bl G_M12834_IG29 ;; size=4 bbWeight=1 PerfScore 1.00-G_M12834_IG21: ; bbWeight=1, nogc, extend+G_M12834_IG20: ; bbWeight=1, nogc, extend nop
;; size=2 bbWeight=1 PerfScore 1.00-G_M12834_IG22: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M12834_IG21: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r5]
; GC ptr vars -{V00 V04}
ldr r0, [sp+0x0C] // [V03 loc0]
;; size=2 bbWeight=1 PerfScore 1.00-G_M12834_IG23: ; bbWeight=1, epilog, nogc, extend+G_M12834_IG22: ; bbWeight=1, epilog, nogc, extend add sp, 24
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 4
bx lr
;; size=10 bbWeight=1 PerfScore 4.00-G_M12834_IG24: ; bbWeight=0, gcVars=00200000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00 V21}+G_M12834_IG23: ; bbWeight=0, gcVars=0000000000400000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V00} movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
@@ -351,7 +349,7 @@ G_M12834_IG24: ; bbWeight=0, gcVars=00200000 {V00}, gcrefRegs=0000 {}, by
cmp r1, 0
bgt G_M12834_IG03
;; size=38 bbWeight=0 PerfScore 0.00-G_M12834_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M12834_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -364,7 +362,7 @@ G_M12834_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
b SHORT G_M12834_IG03
;; size=30 bbWeight=0 PerfScore 0.00-G_M12834_IG26: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz+G_M12834_IG25: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r5]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -377,7 +375,7 @@ G_M12834_IG26: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
; gcrRegs +[r0]
b SHORT G_M12834_IG04
;; size=26 bbWeight=0 PerfScore 0.00-G_M12834_IG27: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz+G_M12834_IG26: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -392,7 +390,7 @@ G_M12834_IG27: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
cmp r7, r0
ble G_M12834_IG05
;; size=38 bbWeight=0 PerfScore 0.00-G_M12834_IG28: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz+G_M12834_IG27: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz...
@@ -8,7 +8,7 @@
; 4 inlinees with PGO data; 39 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T29] ( 15, 23 ) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexNode>+; V00 arg0 [V00,T34] ( 14, 21 ) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexNode> ; V01 loc0 [V01,T02] ( 16,137.50) ref -> r5 class-hnd single-def <<unknown class>>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Text.RegularExpressions.RegexNode]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
@@ -16,7 +16,7 @@
; V05 loc4 [V05,T23] ( 14, 42 ) int -> r6
; V06 loc5 [V06,T07] ( 11,110 ) ref -> r8 class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V07 loc6 [V07,T05] ( 12,122 ) int -> r7 -; V08 loc7 [V08,T31] ( 5, 24 ) ref -> r9 class-hnd <System.Text.RegularExpressions.RegexNode>+; V08 loc7 [V08,T30] ( 5, 24 ) ref -> r9 class-hnd <System.Text.RegularExpressions.RegexNode> ;* V09 loc8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V10 loc9 [V10,T45] ( 4, 12 ) ubyte -> r0
;* V11 loc10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
@@ -24,8 +24,8 @@
; V13 loc12 [V13,T59] ( 3, 6 ) ref -> r0 class-hnd exact <System.Text.RegularExpressions.RegexNode>
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V15 OutArgs [V15 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V16 tmp1 [V16,T64] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V17 tmp2 [V17,T65] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable"+; V16 tmp1 [V16,T65] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
+; V17 tmp2 [V17,T66] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable" ; V18 tmp3 [V18,T58] ( 5, 6.75) ref -> r5 class-hnd "spilling QMark2" <<unknown class>>
;* V19 tmp4 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V20 tmp5 [V20 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
@@ -50,7 +50,7 @@
;* V39 tmp24 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V40 tmp25 [V40,T47] ( 4, 11 ) ref -> r7 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V41 tmp26 [V41,T49] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V42 tmp27 [V42,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V42 tmp27 [V42,T63] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V43 tmp28 [V43,T39] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V44 tmp29 [V44,T06] ( 8,112 ) ref -> r2 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V45 tmp30 [V45,T13] ( 3, 80 ) ref -> r0 class-hnd "Inlining Arg" <System.__Canon>
@@ -75,21 +75,21 @@
; V64 tmp49 [V64,T56] ( 2, 8 ) int -> r0 "Inlining Arg"
; V65 tmp50 [V65,T57] ( 2, 8 ) int -> r0 "Inlining Arg"
; V66 tmp51 [V66,T41] ( 4, 16 ) ref -> r8 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>-; V67 tmp52 [V67,T53] ( 2, 8 ) ref -> r1 "CASTCLASS eval op1"
-; V68 tmp53 [V68,T48] ( 3, 10 ) ref -> r1 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>+; V67 tmp52 [V67,T53] ( 2, 8 ) ref -> r0 "CASTCLASS eval op1"
+; V68 tmp53 [V68,T48] ( 3, 10 ) ref -> r0 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V69 tmp54 [V69,T50] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V70 tmp55 [V70,T63] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable"+; V70 tmp55 [V70,T64] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable" ; V71 tmp56 [V71,T28] ( 8, 27 ) ref -> r9 class-hnd "spilling QMark2" <<unknown class>>-;* V72 tmp57 [V72,T68] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP+;* V72 tmp57 [V72,T69] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V73 tmp58 [V73,T44] ( 3, 8 ) ref -> r1 "field V02._current (fldOffset=0x4)" P-INDEP-; V74 tmp59 [V74,T30] ( 6, 20.50) int -> r6 "field V02._index (fldOffset=0x8)" P-INDEP
-;* V75 tmp60 [V75,T70] ( 0, 0 ) int -> zero-ref "field V02._version (fldOffset=0xc)" P-INDEP
-;* V76 tmp61 [V76,T69] ( 0, 0 ) ref -> zero-ref single-def "field V31._list (fldOffset=0x0)" P-INDEP+; V74 tmp59 [V74,T29] ( 6, 20.50) int -> r6 "field V02._index (fldOffset=0x8)" P-INDEP
+;* V75 tmp60 [V75,T71] ( 0, 0 ) int -> zero-ref "field V02._version (fldOffset=0xc)" P-INDEP
+;* V76 tmp61 [V76,T70] ( 0, 0 ) ref -> zero-ref single-def "field V31._list (fldOffset=0x0)" P-INDEP ;* V77 tmp62 [V77 ] ( 0, 0 ) ref -> zero-ref single-def "field V31._current (fldOffset=0x4)" P-INDEP-;* V78 tmp63 [V78,T71] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP
-;* V79 tmp64 [V79,T66] ( 0, 0 ) int -> zero-ref "field V31._version (fldOffset=0xc)" P-INDEP
-; V80 tmp65 [V80,T32] ( 3, 24 ) ref -> r1 "arr expr"
-; V81 tmp66 [V81,T33] ( 3, 24 ) ref -> r0 "arr expr"+;* V78 tmp63 [V78,T72] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP
+;* V79 tmp64 [V79,T67] ( 0, 0 ) int -> zero-ref "field V31._version (fldOffset=0xc)" P-INDEP
+; V80 tmp65 [V80,T31] ( 3, 24 ) ref -> r1 "arr expr"
+; V81 tmp66 [V81,T32] ( 3, 24 ) ref -> r0 "arr expr" ; V82 tmp67 [V82,T46] ( 3, 12 ) ref -> r0 "arr expr"
; V83 tmp68 [V83,T08] ( 3, 96 ) ref -> r0 "arr expr"
; V84 tmp69 [V84,T20] ( 3, 48 ) ref -> r2 "arr expr"
@@ -100,11 +100,12 @@
; V89 tmp74 [V89,T18] ( 2, 64 ) ref -> r1 "argument with side effect"
; V90 cse0 [V90,T19] ( 4, 56 ) int -> r0 "CSE - moderate"
; V91 cse1 [V91,T21] ( 3, 48 ) int -> r0 "CSE - moderate"-;* V92 cse2 [V92,T67] ( 0, 0 ) int -> zero-ref "CSE - conservative"
-; V93 cse3 [V93,T34] ( 3, 24 ) ref -> r2 "CSE - moderate"+;* V92 cse2 [V92,T68] ( 0, 0 ) int -> zero-ref "CSE - conservative"
+; V93 cse3 [V93,T33] ( 3, 24 ) ref -> r2 "CSE - moderate" ; V94 cse4 [V94,T42] ( 3, 12 ) int -> r7 "CSE - conservative"
; V95 cse5 [V95,T61] ( 3, 6 ) ref -> r1 "CSE - conservative"-; V96 cse6 [V96,T26] ( 3, 32 ) int -> r2 "CSE - moderate"+; V96 cse6 [V96,T62] ( 3, 6 ) ref -> r1 "CSE - conservative"
+; V97 cse7 [V97,T26] ( 3, 32 ) int -> r2 "CSE - moderate" ;
; Lcl frame size = 20
@@ -698,20 +699,26 @@ G_M3603_IG42: ; bbWeight=2, gcrefRegs=0330 {r4 r5 r8 r9}, byrefRegs=0000
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- ldr r1, [r4+0x04]+ ldr r2, [r4+0x04]
+ ; gcrRegs +[r2]
+ mov r1, r2 ; gcrRegs +[r1]- cmp r1, 0+ mov r0, r1
+ ; gcrRegs +[r0]
+ cmp r0, 0 beq SHORT G_M3603_IG45- ;; size=118 bbWeight=2 PerfScore 82.00
-G_M3603_IG43: ; bbWeight=1, gcrefRegs=0132 {r1 r4 r5 r8}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0+ ;; size=122 bbWeight=2 PerfScore 86.00
+G_M3603_IG43: ; bbWeight=1, gcrefRegs=0133 {r0 r1 r4 r5 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2]
+ ldr r0, [r0]
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3 bne SHORT G_M3603_IG45
;; size=14 bbWeight=1 PerfScore 5.00
G_M3603_IG44: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz+ ; gcrRegs -[r1] adds r0, r4, 4
; byrRegs +[r0]
mov r1, r8
@@ -723,15 +730,13 @@ G_M3603_IG44: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {},
; byrRegs -[r0]
b SHORT G_M3603_IG49
;; size=16 bbWeight=2 PerfScore 12.00-G_M3603_IG45: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r8]
- ldr r1, [r4+0x04]
- ; gcrRegs +[r1]+G_M3603_IG45: ; bbWeight=2, gcrefRegs=0132 {r1 r4 r5 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1 r8] mov r9, r1
; gcrRegs +[r9]
cmp r9, 0
beq SHORT G_M3603_IG48- ;; size=10 bbWeight=2 PerfScore 8.00+ ;; size=8 bbWeight=2 PerfScore 6.00 G_M3603_IG46: ; bbWeight=1, gcrefRegs=0332 {r1 r4 r5 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9]
movw r3, 0xd1ff
@@ -821,7 +826,7 @@ G_M3603_IG54: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1110, prolog size 12, PerfScore 2493.38, instruction count 428, allocated bytes for code 1110 (MethodHash=ab1ef1ec) for method System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)+; Total bytes of code 1112, prolog size 12, PerfScore 2495.38, instruction count 429, allocated bytes for code 1112 (MethodHash=ab1ef1ec) for method System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts) ; ============================================================
Unwind Info:
@@ -833,7 +838,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 555 (0x0022b) Actual length = 1110 (0x000456)+ Function Length : 556 (0x0022c) Actual length = 1112 (0x000458) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,12 +8,12 @@
; 0 inlinees with PGO data; 14 single block inlinees; 15 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T57] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T00] ( 27, 93 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode>+; V00 this [V00,T58] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T00] ( 26, 91 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V03 loc2 [V03,T32] ( 3, 12 ) ubyte -> r0
; V04 loc3 [V04,T26] ( 4, 12 ) ubyte -> r0 -;* V05 loc4 [V05,T63] ( 0, 0 ) ubyte -> zero-ref +;* V05 loc4 [V05,T64] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V07 loc6 [V07,T12] ( 3, 24 ) int -> r6
; V08 loc7 [V08,T01] ( 7, 76 ) int -> r5
@@ -25,7 +25,7 @@
;* V14 tmp4 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T34] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V16 tmp6 [V16,T41] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V17 tmp7 [V17,T58] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V17 tmp7 [V17,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V18 tmp8 [V18,T16] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V19 tmp9 [V19,T39] ( 4, 10 ) int -> r6 "Inline return value spill temp"
; V20 tmp10 [V20,T52] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
@@ -34,7 +34,7 @@
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V24 tmp14 [V24,T35] ( 4, 11 ) ref -> r7 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V25 tmp15 [V25,T42] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V26 tmp16 [V26,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V26 tmp16 [V26,T60] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V27 tmp17 [V27,T17] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V28 tmp18 [V28,T14] ( 4, 20 ) int -> r6 "Inlining Arg"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
@@ -42,10 +42,10 @@
; V31 tmp21 [V31,T46] ( 4, 8 ) int -> r7 "Inline return value spill temp"
; V32 tmp22 [V32,T53] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V33 tmp23 [V33,T21] ( 4, 16 ) ref -> r6 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>-; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r1 "CASTCLASS eval op1"
-; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r1 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>+; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r0 "CASTCLASS eval op1"
+; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r0 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V36 tmp26 [V36,T43] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V37 tmp27 [V37,T60] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable"+; V37 tmp27 [V37,T61] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable" ; V38 tmp28 [V38,T10] ( 8, 27 ) ref -> r4 class-hnd "spilling QMark2" <<unknown class>>
; V39 tmp29 [V39,T33] ( 3, 12 ) int -> r7 "Inlining Arg"
; V40 tmp30 [V40,T40] ( 4, 10 ) int -> r6 "Inline return value spill temp"
@@ -62,7 +62,7 @@
;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V52 tmp42 [V52,T36] ( 4, 11 ) ref -> r3 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V53 tmp43 [V53,T44] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V54 tmp44 [V54,T61] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V54 tmp44 [V54,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V55 tmp45 [V55,T18] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
;* V56 tmp46 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V57 tmp47 [V57,T49] ( 3, 8 ) ref -> r4 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
@@ -70,7 +70,7 @@
;* V59 tmp49 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V60 tmp50 [V60,T37] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V61 tmp51 [V61,T45] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V62 tmp52 [V62,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V62 tmp52 [V62,T63] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V63 tmp53 [V63,T19] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V64 tmp54 [V64,T28] ( 3, 12 ) ref -> r1 "arr expr"
; V65 tmp55 [V65,T29] ( 3, 12 ) ref -> r0 "arr expr"
@@ -81,7 +81,8 @@
; V70 cse1 [V70,T07] ( 3, 40 ) ref -> r1 "CSE - aggressive"
; V71 cse2 [V71,T55] ( 3, 6 ) ref -> r0 "CSE - conservative"
; V72 cse3 [V72,T56] ( 3, 6 ) ref -> r1 "CSE - conservative"-; V73 rat0 [V73,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable"+; V73 cse4 [V73,T57] ( 3, 6 ) ref -> r1 "CSE - conservative"
+; V74 rat0 [V74,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable" ;
; Lcl frame size = 0
@@ -109,7 +110,7 @@ G_M35244_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r4]
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50-G_M35244_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M35244_IG05: ; bbWeight=4, gcVars=000000000000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4]
ldrb r0, [r4+0x1E]
subs r3, r0, 3
@@ -397,20 +398,26 @@ G_M35244_IG30: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- ldr r1, [r4+0x04]+ ldr r2, [r4+0x04]
+ ; gcrRegs +[r2]
+ mov r1, r2 ; gcrRegs +[r1]- cmp r1, 0+ mov r0, r1
+ ; gcrRegs +[r0]
+ cmp r0, 0 beq SHORT G_M35244_IG33- ;; size=56 bbWeight=2 PerfScore 40.00
-G_M35244_IG31: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0+ ;; size=60 bbWeight=2 PerfScore 44.00
+G_M35244_IG31: ; bbWeight=1, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2]
+ ldr r0, [r0]
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3 bne SHORT G_M35244_IG33
;; size=14 bbWeight=1 PerfScore 5.00
G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz+ ; gcrRegs -[r1] adds r0, r4, 4
; byrRegs +[r0]
mov r1, r6
@@ -422,14 +429,13 @@ G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
; byrRegs -[r0]
b SHORT G_M35244_IG37
;; size=16 bbWeight=2 PerfScore 12.00-G_M35244_IG33: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4 r6]
- ldr r1, [r4+0x04]
- ; gcrRegs +[r1]+G_M35244_IG33: ; bbWeight=2, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1 r6] mov r4, r1+ ; gcrRegs +[r4] cmp r4, 0
beq SHORT G_M35244_IG36- ;; size=8 bbWeight=2 PerfScore 8.00+ ;; size=6 bbWeight=2 PerfScore 6.00 G_M35244_IG34: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4]
movw r3, 0xd1ff
@@ -748,7 +754,7 @@ G_M35244_IG68: ; bbWeight=0.50, epilog, nogc, extend
bx r3 // <unknown method>
; gcr arg pop 0
;; size=6 bbWeight=0.50 PerfScore 1.00-G_M35244_IG69: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M35244_IG69: ; bbWeight=0, gcVars=000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0 r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -776,7 +782,7 @@ RWD00 dd G_M35244_IG38
dd G_M35244_IG38
-; Total bytes of code 938, prolog size 10, PerfScore 1002.00, instruction count 372, allocated bytes for code 938 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)+; Total bytes of code 940, prolog size 10, PerfScore 1004.00, instruction count 373, allocated bytes for code 940 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts) ; ============================================================
Unwind Info:
@@ -788,7 +794,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 469 (0x001d5) Actual length = 938 (0x0003aa)+ Function Length : 470 (0x001d6) Actual length = 940 (0x0003ac) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,14 +8,14 @@
; 4 inlinees with PGO data; 13 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;-; V00 loc0 [V00,T17] ( 8, 260 ) ref -> r4 class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T00] ( 16,1249 ) ref -> r5 class-hnd single-def <<unknown class>>+; V00 loc0 [V00,T18] ( 8, 260 ) ref -> r4 class-hnd exact single-def <<unknown class>>
+; V01 loc1 [V01,T00] ( 15,1121 ) ref -> r5 class-hnd single-def <<unknown class>> ; V02 loc2 [V02,T06] ( 9, 641 ) ref -> r6 class-hnd single-def <<unknown class>>
; V03 loc3 [V03,T09] ( 8, 392 ) int -> registers -; V04 loc4 [V04,T38] ( 2, 0 ) ref -> [sp+0x10] class-hnd exact EH-live single-def <<unknown class>>+; V04 loc4 [V04,T39] ( 2, 0 ) ref -> [sp+0x10] class-hnd exact EH-live single-def <<unknown class>> ; V05 loc5 [V05 ] ( 6, 5 ) ubyte -> [sp+0x2C] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc6 [V06 ] ( 1, 64 ) long -> [sp+0x20] multireg-ret-; V07 loc7 [V07,T30] ( 3, 80 ) ref -> [sp+0x0C] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>>+; V07 loc7 [V07,T31] ( 3, 80 ) ref -> [sp+0x0C] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>> ; V08 loc8 [V08 ] ( 6, 320 ) ubyte -> [sp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op
; V09 loc9 [V09,T01] ( 11,1088 ) int -> [sp+0x18]
; V10 loc10 [V10,T08] ( 5, 448 ) ref -> r1 class-hnd exact <System.Threading.TimerQueue>
@@ -24,41 +24,42 @@
;* V13 loc13 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]>
;* V14 loc14 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Threading.TimerQueue>
; V15 OutArgs [V15 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V16 tmp1 [V16,T36] ( 2, 4 ) ubyte -> r0 "Inlining Arg"+; V16 tmp1 [V16,T37] ( 2, 4 ) ubyte -> r0 "Inlining Arg" ;* V17 tmp2 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"-;* V18 tmp3 [V18,T31] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V19 tmp4 [V19,T22] ( 2, 256 ) ubyte -> r1 "Inlining Arg"
-; V20 tmp5 [V20,T24] ( 3, 192 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V21 tmp6 [V21,T18] ( 4, 256 ) int -> r3 "Inline stloc first use temp"
-; V22 tmp7 [V22,T20] ( 2, 256 ) ref -> lr class-hnd "Inlining Arg" <System.__Canon>+;* V18 tmp3 [V18,T32] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V19 tmp4 [V19,T23] ( 2, 256 ) ubyte -> r1 "Inlining Arg"
+; V20 tmp5 [V20,T25] ( 3, 192 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V21 tmp6 [V21,T19] ( 4, 256 ) int -> r3 "Inline stloc first use temp"
+; V22 tmp7 [V22,T21] ( 2, 256 ) ref -> lr class-hnd "Inlining Arg" <System.__Canon> ;* V23 tmp8 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]>-;* V24 tmp9 [V24,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V24 tmp9 [V24,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V25 tmp10 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V26 tmp11 [V26,T16] ( 3, 272 ) int -> r2 "Inline stloc first use temp"
-;* V27 tmp12 [V27,T34] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP
-; V28 tmp13 [V28,T14] ( 2, 192 ) ref -> [sp+0x08] spill-single-def "field V13._current (fldOffset=0x4)" P-INDEP+; V26 tmp11 [V26,T17] ( 3, 272 ) int -> r2 "Inline stloc first use temp"
+;* V27 tmp12 [V27,T35] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP
+; V28 tmp13 [V28,T15] ( 2, 192 ) ref -> [sp+0x08] spill-single-def "field V13._current (fldOffset=0x4)" P-INDEP ; V29 tmp14 [V29,T02] ( 6, 656 ) int -> r8 "field V13._index (fldOffset=0x8)" P-INDEP-; V30 tmp15 [V30,T28] ( 2, 144 ) int -> r7 "field V13._version (fldOffset=0xc)" P-INDEP
-; V31 tmp16 [V31,T32] ( 2, 32 ) ref -> r0 "field V23._list (fldOffset=0x0)" P-INDEP+; V30 tmp15 [V30,T29] ( 2, 144 ) int -> r7 "field V13._version (fldOffset=0xc)" P-INDEP
+; V31 tmp16 [V31,T33] ( 2, 32 ) ref -> r0 "field V23._list (fldOffset=0x0)" P-INDEP ;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref "field V23._current (fldOffset=0x4)" P-INDEP-;* V33 tmp18 [V33,T35] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x8)" P-INDEP
-; V34 tmp19 [V34,T33] ( 2, 32 ) int -> r7 "field V23._version (fldOffset=0xc)" P-INDEP
-; V35 tmp20 [V35,T39] ( 2, 0 ) ref -> r2 "argument with side effect"+;* V33 tmp18 [V33,T36] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x8)" P-INDEP
+; V34 tmp19 [V34,T34] ( 2, 32 ) int -> r7 "field V23._version (fldOffset=0xc)" P-INDEP
+; V35 tmp20 [V35,T40] ( 2, 0 ) ref -> r2 "argument with side effect" ; V36 tmp21 [V36,T03] ( 3, 768 ) ref -> r1 "arr expr"
; V37 tmp22 [V37,T12] ( 3, 384 ) ref -> lr "arr expr"
; V38 tmp23 [V38,T04] ( 3, 768 ) ref -> r0 "arr expr"-; V39 tmp24 [V39,T21] ( 2, 256 ) ref -> r0 "argument with side effect"
-; V40 PSPSym [V40,T37] ( 1, 1 ) int -> [sp+0x30] do-not-enreg[V] "PSPSym"
-; V41 cse0 [V41,T07] ( 3, 384 ) int -> r2 "CSE - aggressive"
-; V42 cse1 [V42,T19] ( 4, 256 ) int -> r0 "CSE - moderate"
-; V43 cse2 [V43,T25] ( 3, 192 ) ref -> r1 "CSE - moderate"
-; V44 cse3 [V44,T29] ( 2, 128 ) int -> lr "CSE - moderate"
-; V45 rat0 [V45,T26] ( 2, 192 ) int -> r7 "field V06.lo (fldOffset=0x0)" P-INDEP
-; V46 rat1 [V46,T27] ( 2, 192 ) int -> r8 "field V06.hi (fldOffset=0x4)" P-INDEP
-; V47 rat2 [V47,T11] ( 4, 384 ) int -> r3 "field V11.lo (fldOffset=0x0)" P-INDEP
-; V48 rat3 [V48,T15] ( 3, 320 ) int -> lr "field V11.hi (fldOffset=0x4)" P-INDEP
-; V49 rat4 [V49,T05] ( 3, 768 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V50 rat5 [V50,T13] ( 3, 384 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"+; V39 tmp24 [V39,T22] ( 2, 256 ) ref -> r0 "argument with side effect"
+; V40 PSPSym [V40,T38] ( 1, 1 ) int -> [sp+0x30] do-not-enreg[V] "PSPSym"
+; V41 cse0 [V41,T13] ( 3, 384 ) int -> r3 "CSE - aggressive"
+; V42 cse1 [V42,T07] ( 3, 384 ) int -> r2 "CSE - aggressive"
+; V43 cse2 [V43,T20] ( 4, 256 ) int -> r0 "CSE - moderate"
+; V44 cse3 [V44,T26] ( 3, 192 ) ref -> r1 "CSE - moderate"
+; V45 cse4 [V45,T30] ( 2, 128 ) int -> lr "CSE - moderate"
+; V46 rat0 [V46,T27] ( 2, 192 ) int -> r7 "field V06.lo (fldOffset=0x0)" P-INDEP
+; V47 rat1 [V47,T28] ( 2, 192 ) int -> r8 "field V06.hi (fldOffset=0x4)" P-INDEP
+; V48 rat2 [V48,T11] ( 4, 384 ) int -> r3 "field V11.lo (fldOffset=0x0)" P-INDEP
+; V49 rat3 [V49,T16] ( 3, 320 ) int -> lr "field V11.hi (fldOffset=0x4)" P-INDEP
+; V50 rat4 [V50,T05] ( 3, 768 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V51 rat5 [V51,T14] ( 3, 384 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" ;
; Lcl frame size = 52
@@ -83,7 +84,7 @@ G_M45973_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r1, 0
str r1, [sp+0x2C] // [V05 loc5]
;; size=26 bbWeight=1 PerfScore 9.00-G_M45973_IG03: ; bbWeight=1, gcVars=0000004000000000 {V04}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz+G_M45973_IG03: ; bbWeight=1, gcVars=0000008000000000 {V04}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x2C] // [V05 loc5]
cmp r1, 0
beq SHORT G_M45973_IG06
@@ -175,7 +176,7 @@ G_M45973_IG10: ; bbWeight=64, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {
movs r1, 0
str r1, [sp+0x1C] // [V08 loc8]
;; size=64 bbWeight=64 PerfScore 1472.00-G_M45973_IG11: ; bbWeight=64, gcVars=0000000040000000 {V07}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz+G_M45973_IG11: ; bbWeight=64, gcVars=0000000080000000 {V07}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x1C] // [V08 loc8]
cmp r1, 0
bne G_M45973_IG25
@@ -405,8 +406,8 @@ G_M45973_IG29: ; bbWeight=16, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {
mov r8, 0
b SHORT G_M45973_IG32
;; size=10 bbWeight=16 PerfScore 64.00-G_M45973_IG30: ; bbWeight=64, gcVars=0000000000004000 {V28}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0] +[r3]+G_M45973_IG30: ; bbWeight=64, gcVars=0000000000008000 {V28}, gcrefRegs=4070 {r4 r5 r6 lr}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0] +[lr] ; GC ptr vars +{V28}
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -415,26 +416,25 @@ G_M45973_IG30: ; bbWeight=64, gcVars=0000000000004000 {V28}, gcrefRegs=00
cmp r0, 1
bne SHORT G_M45973_IG38
;; size=18 bbWeight=64 PerfScore 384.00-G_M45973_IG31: ; bbWeight=64, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref+G_M45973_IG31: ; bbWeight=64, gcrefRegs=4070 {r4 r5 r6 lr}, byrefRegs=0000 {}, byref movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]- mov r1, r3+ mov r1, lr ; gcrRegs +[r1]
movw r3, 0xd1ff- ; gcrRegs -[r3] movt r3, 0xd1ff
ldr r3, [r3]
ldr r2, [r0]
; GC ptr vars -{V28}
blx r3 // System.Threading.ThreadPoolWorkQueue:EnqueueAtHighPriority(System.Object):this- ; gcrRegs -[r0-r1]+ ; gcrRegs -[r0-r1 lr] ; gcr arg pop 0
;; size=26 bbWeight=64 PerfScore 576.00
G_M45973_IG32: ; bbWeight=128, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz- ldr r0, [r5+0x0C]
- cmp r7, r0+ ldr r3, [r5+0x0C]
+ cmp r7, r3 bne SHORT G_M45973_IG40
ldr r2, [r5+0x08]
cmp r8, r2
@@ -448,25 +448,24 @@ G_M45973_IG32: ; bbWeight=128, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs -[r0]
; byrRegs +[r0]
lsl r1, r8, 2- ldr r3, [r0+r1]
- ; gcrRegs +[r3]
- str r3, [sp+0x08] // [V28 tmp13]+ ldr lr, [r0+r1]
+ ; gcrRegs +[lr]
+ str lr, [sp+0x08] // [V28 tmp13] ; GC ptr vars +{V28}
add r8, r8, 1
b SHORT G_M45973_IG30- ;; size=36 bbWeight=128 PerfScore 2048.00+ ;; size=40 bbWeight=128 PerfScore 2048.00 G_M45973_IG33: ; bbWeight=128, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz- ; gcrRegs -[r3]+ ; gcrRegs -[lr] ; byrRegs -[r0]
; GC ptr vars -{V28}- ldr r0, [r5+0x0C]
- adds r0, r0, 1+ adds r0, r3, 1 str r0, [r5+0x0C]
movs r0, 0
str r0, [r5+0x08]
cmp r2, 0
ble SHORT G_M45973_IG35- ;; size=14 bbWeight=128 PerfScore 896.00+ ;; size=12 bbWeight=128 PerfScore 768.00 G_M45973_IG34: ; bbWeight=16, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
ldr r0, [r5+0x04]
; gcrRegs +[r0]
@@ -494,23 +493,23 @@ G_M45973_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M45973_IG38: ; bbWeight=0, gcVars=0000000000004000 {V28}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r3-r6]+G_M45973_IG38: ; bbWeight=0, gcVars=0000000000008000 {V28}, gcrefRegs=4070 {r4 r5 r6 lr}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4-r6 lr] ; GC ptr vars +{V28}
movw r0, 0xd1ff
movt r0, 0xd1ff
mov r1, 740- movw r2, 0xd1ff
- movt r2, 0xd1ff
- blx r2 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcrRegs -[r3]+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ ; gcrRegs -[lr] ; gcr arg pop 0- ldr r3, [sp+0x08] // [V28 tmp13]
- ; gcrRegs +[r3]+ ldr lr, [sp+0x08] // [V28 tmp13]
+ ; gcrRegs +[lr] b SHORT G_M45973_IG31- ;; size=26 bbWeight=0 PerfScore 0.00+ ;; size=28 bbWeight=0 PerfScore 0.00 G_M45973_IG39: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- ; gcrRegs -[r3-r6]+ ; gcrRegs -[r4-r6 lr] ; GC ptr vars -{V28}
movw r0, 0xd1ff
movw r1, 0xd1ff
@@ -541,14 +540,14 @@ G_M45973_IG40: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M45973_IG41: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V04 V38}+G_M45973_IG41: ; bbWeight=0, gcVars=0000008000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V04 V39} push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
add r3, r11, 8
str r3, [sp+0x08]
;; size=12 bbWeight=0 PerfScore 0.00-G_M45973_IG42: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M45973_IG42: ; bbWeight=0, gcVars=0000008000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r0, [r11-0x24] // [V05 loc5]
cmp r0, 0
beq SHORT G_M45973_IG43
@@ -556,7 +555,7 @@ G_M45973_IG42: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=000
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff- ; GC ptr vars -{V04 V38}+ ; GC ptr vars -{V04 V39} blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
@@ -565,14 +564,14 @@ G_M45973_IG43: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0 PerfScore 0.00-G_M45973_IG44: ; bbWeight=0, gcVars=0000000040000000 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V07 V30}...
@@ -8,44 +8,45 @@
; 0 inlinees with PGO data; 5 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00 ] ( 5, 7.50) struct ( 4) [sp+0x2C] single-def <System.Net.Http.Headers.HeaderDescriptor>+; V00 arg0 [V00 ] ( 5, 7.50) struct ( 4) [sp+0x24] single-def <System.Net.Http.Headers.HeaderDescriptor> ; V01 arg1 [V01,T03] ( 8, 13.50) ref -> r4 class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>-; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [sp+0x00] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>+; V02 loc0 [V02,T18] ( 3, 0.50) ref -> [sp+0x00] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op-; V04 loc2 [V04,T13] ( 3, 1.50) ref -> r0 class-hnd single-def <<unknown class>>+; V04 loc2 [V04,T14] ( 3, 1.50) ref -> r0 class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>-; V07 loc5 [V07,T12] ( 4, 1.62) ref -> r2 class-hnd exact <System.String>+; V07 loc5 [V07,T13] ( 4, 1.62) ref -> r2 class-hnd exact <System.String> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V09 tmp1 [V09,T11] ( 2, 2 ) ref -> r2 single-def "CASTCLASS eval op1"+; V09 tmp1 [V09,T12] ( 2, 2 ) ref -> r2 single-def "CASTCLASS eval op1" ;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>-; V11 tmp3 [V11,T09] ( 2, 4 ) ubyte -> r0 "Inlining Arg"+; V11 tmp3 [V11,T10] ( 2, 4 ) ubyte -> r0 "Inlining Arg" ;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>-;* V13 tmp5 [V13,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V13 tmp5 [V13,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V15 tmp7 [V15,T06] ( 5, 7.50) ref -> [sp+0x2C] do-not-enreg[] single-def "field V00._descriptor (fldOffset=0x0)" P-DEP+; V15 tmp7 [V15,T06] ( 5, 7.50) ref -> [sp+0x24] do-not-enreg[] single-def "field V00._descriptor (fldOffset=0x0)" P-DEP ; V16 tmp8 [V16,T02] ( 4, 12.50) ref -> r5 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V17 tmp9 [V17,T04] ( 2, 8 ) ref -> r2 "field V05._current (fldOffset=0x4)" P-INDEP
; V18 tmp10 [V18,T00] ( 6, 20.50) int -> r7 "field V05._index (fldOffset=0x8)" P-INDEP-; V19 tmp11 [V19,T07] ( 3, 8.50) int -> r6 "field V05._version (fldOffset=0xc)" P-INDEP
-; V20 tmp12 [V20,T14] ( 3, 1.50) ref -> r5 single-def "field V12._list (fldOffset=0x0)" P-INDEP+; V19 tmp11 [V19,T09] ( 2, 4.50) int -> r6 "field V05._version (fldOffset=0xc)" P-INDEP
+; V20 tmp12 [V20,T15] ( 3, 1.50) ref -> r5 single-def "field V12._list (fldOffset=0x0)" P-INDEP ;* V21 tmp13 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x4)" P-INDEP-;* V22 tmp14 [V22,T18] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
-; V23 tmp15 [V23,T15] ( 2, 1 ) int -> r6 "field V12._version (fldOffset=0xc)" P-INDEP+;* V22 tmp14 [V22,T19] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
+; V23 tmp15 [V23,T16] ( 2, 1 ) int -> r6 "field V12._version (fldOffset=0xc)" P-INDEP ; V24 tmp16 [V24,T01] ( 3, 24 ) ref -> r0 "arr expr"-; V25 PSPSym [V25,T16] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
-; V26 cse0 [V26,T05] ( 3, 12 ) int -> r8 "CSE - aggressive"
-; V27 cse1 [V27,T10] ( 4, 3 ) ref -> r5 "CSE - aggressive"+; V25 PSPSym [V25,T17] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"
+; V26 cse0 [V26,T08] ( 2, 8 ) int -> r0 "CSE - aggressive"
+; V27 cse1 [V27,T05] ( 2, 8 ) int -> r0 "CSE - aggressive"
+; V28 cse2 [V28,T11] ( 4, 3 ) ref -> r5 "CSE - aggressive" ;-; Lcl frame size = 16+; Lcl frame size = 12
G_M53769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0}- push {r4,r5,r6,r7,r8,r11,lr}
- sub sp, 16
- add r11, sp, 36
- add r0, sp, 48
- str r0, [sp+0x0C] // [V25 PSPSym]+ push {r4,r5,r6,r7,r11,lr}
+ sub sp, 12
+ add r11, sp, 28
+ add r0, sp, 40
+ str r0, [sp+0x08] // [V25 PSPSym] mov r4, r1
; gcrRegs +[r4]
;; size=18 bbWeight=1 PerfScore 7.00
@@ -55,7 +56,7 @@ G_M53769_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movs r1, 0
str r1, [sp+0x04] // [V03 loc1]
;; size=6 bbWeight=1 PerfScore 3.00-G_M53769_IG03: ; bbWeight=1, gcVars=00020000 {V02}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M53769_IG03: ; bbWeight=1, gcVars=00040000 {V02}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x04] // [V03 loc1]
cmp r1, 0
bne SHORT G_M53769_IG08
@@ -86,7 +87,7 @@ G_M53769_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r5, [r4+0x04]
; gcrRegs +[r5]
cmp r5, 0- beq SHORT G_M53769_IG16+ beq SHORT G_M53769_IG15 ;; size=6 bbWeight=1 PerfScore 3.00
G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r1, r5
@@ -99,24 +100,24 @@ G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
cmp r0, 0- beq SHORT G_M53769_IG13+ beq SHORT G_M53769_IG12 mov r5, r0
ldr r6, [r5+0x0C]
movs r7, 0
;; size=30 bbWeight=0.50 PerfScore 5.50
G_M53769_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]- ldr r8, [r5+0x0C]
- cmp r6, r8
- bne SHORT G_M53769_IG09+ ldr r0, [r5+0x0C]
+ cmp r6, r0
+ bne SHORT G_M53769_IG11 ldr r0, [r5+0x08]
cmp r7, r0- bhs SHORT G_M53769_IG10+ bhs SHORT G_M53769_IG09 ldr r0, [r5+0x04]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r7, r1- bhs SHORT G_M53769_IG11+ bhs SHORT G_M53769_IG10 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -127,7 +128,7 @@ G_M53769_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
mov r0, r4
; gcrRegs +[r0]
; byrRegs -[r0]- ldr r1, [sp+0x2C] // [V15 tmp7]+ ldr r1, [sp+0x24] // [V15 tmp7] ; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -136,7 +137,7 @@ G_M53769_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r2]
; gcr arg pop 0
b SHORT G_M53769_IG07- ;; size=48 bbWeight=4 PerfScore 84.00+ ;; size=46 bbWeight=4 PerfScore 84.00 G_M53769_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4-r5]
movw r3, 0xd1ff
@@ -148,22 +149,18 @@ G_M53769_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=14 bbWeight=0 PerfScore 0.00
G_M53769_IG09: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]- cmp r6, r8
- bne SHORT G_M53769_IG12
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M53769_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movs r0, 0
str r0, [r4+0x04]- b SHORT G_M53769_IG16+ b SHORT G_M53769_IG15 ;; size=6 bbWeight=4 PerfScore 12.00-G_M53769_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M53769_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53769_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -171,7 +168,7 @@ G_M53769_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4-r5]
mov r2, r5
; gcrRegs +[r2]
@@ -179,17 +176,17 @@ G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1- beq SHORT G_M53769_IG15+ beq SHORT G_M53769_IG14 ;; size=16 bbWeight=0.50 PerfScore 3.00-G_M53769_IG14: ; bbWeight=0.12, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref+G_M53769_IG13: ; bbWeight=0.12, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ; gcrRegs -[r2 r5]
movs r2, 0
;; size=2 bbWeight=0.12 PerfScore 0.12-G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz+G_M53769_IG14: ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r2]
mov r0, r4
; gcrRegs +[r0]- ldr r1, [sp+0x2C] // [V15 tmp7]+ ldr r1, [sp+0x24] // [V15 tmp7] ; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -197,15 +194,15 @@ G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}
blx r3 // System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)
; gcrRegs -[r0-r2]
; gcr arg pop 0- b SHORT G_M53769_IG10+ b SHORT G_M53769_IG09 ;; size=18 bbWeight=0.50 PerfScore 3.50-G_M53769_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M53769_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4]
ldrb r0, [sp+0x04] // [V03 loc1]
cmp r0, 0- beq SHORT G_M53769_IG18+ beq SHORT G_M53769_IG17 ;; size=8 bbWeight=1 PerfScore 3.00-G_M53769_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53769_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr r0, [sp] // [V02 loc0]
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -215,38 +212,36 @@ G_M53769_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r0]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00-G_M53769_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 16
- pop {r4,r5,r6,r7,r8,r11,lr}+G_M53769_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add sp, 12
+ pop {r4,r5,r6,r7,r11,lr} add sp, 4
bx lr
;; size=10 bbWeight=1 PerfScore 4.00-G_M53769_IG19: ; bbWeight=0, gcVars=00020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V02 V17}
- push {r4,r5,r6,r7,r8,r11,lr}
- sub sp, 12+G_M53769_IG18: ; bbWeight=0, gcVars=00040000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V02 V18}
+ push {r2,r3,r4,r5,r6,r7,r11,lr} add r3, r11, 12- str r3, [sp+0x04]
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M53769_IG20: ; bbWeight=0, gcVars=00020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldrb r0, [r11-0x20] // [V03 loc1]+ str r3, [sp]
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M53769_IG19: ; bbWeight=0, gcVars=00040000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldrb r0, [r11-0x18] // [V03 loc1] cmp r0, 0- beq SHORT G_M53769_IG21
- ldr r0, [r11-0x24] // [V02 loc0]+ beq SHORT G_M53769_IG20
+ ldr r0, [r11-0x1C] // [V02 loc0] ; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff- ; GC ptr vars -{V02 V17}+ ; GC ptr vars -{V02 V18}...
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T18] ( 3, 3 ) int -> r4 single-def
-; V01 arg1 [V01,T19] ( 3, 3 ) int -> r5 single-def+; V00 arg0 [V00,T19] ( 3, 3 ) int -> r4 single-def
+; V01 arg1 [V01,T20] ( 3, 3 ) int -> r5 single-def ; V02 loc0 [V02 ] ( 4, 17 ) struct ( 8) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>-; V03 loc1 [V03,T20] ( 4, 11 ) int -> r5 +; V03 loc1 [V03,T21] ( 4, 11 ) int -> r5 ;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
@@ -19,14 +19,14 @@
; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> r4 class-hnd single-def "non-inline candidate call" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>-; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <<unknown class>>+; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> lr "Inlining Arg"
-; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> r3 "Inlining Arg"+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> lr "Inlining Arg"
+; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> r3 "Inlining Arg" ;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V21 tmp14 [V21,T12] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
@@ -40,30 +40,30 @@
;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>-;* V32 tmp25 [V32,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V32 tmp25 [V32,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V34 tmp27 [V34,T23] ( 3, 17 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V35 tmp28 [V35,T21] ( 4, 18 ) int -> r3 "Inline stloc first use temp"
-; V36 tmp29 [V36,T17] ( 3, 20 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String>+; V34 tmp27 [V34,T24] ( 3, 17 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V35 tmp28 [V35,T22] ( 4, 18 ) int -> r3 "Inline stloc first use temp"
+; V36 tmp29 [V36,T18] ( 3, 20 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String> ; V37 tmp30 [V37 ] ( 3, 3 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar"
; V38 tmp31 [V38 ] ( 3, 13 ) byref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP
; V39 tmp32 [V39 ] ( 3, 13 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x4)" P-DEP-; V40 tmp33 [V40,T02] ( 4, 25 ) ref -> r4 single-def "field V04._list (fldOffset=0x0)" P-INDEP
-; V41 tmp34 [V41,T03] ( 4, 20 ) ref -> r2 "field V04._current (fldOffset=0x4)" P-INDEP+; V40 tmp33 [V40,T03] ( 4, 25 ) ref -> r4 single-def "field V04._list (fldOffset=0x0)" P-INDEP
+; V41 tmp34 [V41,T02] ( 4, 20 ) ref -> r2 "field V04._current (fldOffset=0x4)" P-INDEP ; V42 tmp35 [V42,T00] ( 6, 41 ) int -> r7 "field V04._index (fldOffset=0x8)" P-INDEP-; V43 tmp36 [V43,T05] ( 3, 17 ) int -> r6 "field V04._version (fldOffset=0xc)" P-INDEP
-; V44 tmp37 [V44,T13] ( 2, 8 ) byref -> r0 "field V09._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp38 [V45,T15] ( 2, 8 ) int -> r1 "field V09._length (fldOffset=0x4)" P-INDEP+; V43 tmp36 [V43,T13] ( 2, 9 ) int -> r6 "field V04._version (fldOffset=0xc)" P-INDEP
+; V44 tmp37 [V44,T14] ( 2, 8 ) byref -> r0 "field V09._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp38 [V45,T16] ( 2, 8 ) int -> r1 "field V09._length (fldOffset=0x4)" P-INDEP ;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP-; V48 tmp41 [V48,T24] ( 3, 3 ) ref -> r4 single-def "field V13._list (fldOffset=0x0)" P-INDEP+; V48 tmp41 [V48,T25] ( 3, 3 ) ref -> r4 single-def "field V13._list (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x4)" P-INDEP-;* V50 tmp43 [V50,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-; V51 tmp44 [V51,T25] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP+;* V50 tmp43 [V50,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
+; V51 tmp44 [V51,T26] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP ; V52 tmp45 [V52,T11] ( 3, 12 ) byref -> r3 "field V14._reference (fldOffset=0x0)" P-INDEP-; V53 tmp46 [V53,T06] ( 4, 16 ) int -> lr "field V14._length (fldOffset=0x4)" P-INDEP
-; V54 tmp47 [V54,T14] ( 2, 8 ) byref -> r3 "field V15._reference (fldOffset=0x0)" P-INDEP
-; V55 tmp48 [V55,T16] ( 2, 8 ) int -> lr "field V15._length (fldOffset=0x4)" P-INDEP+; V53 tmp46 [V53,T05] ( 4, 16 ) int -> lr "field V14._length (fldOffset=0x4)" P-INDEP
+; V54 tmp47 [V54,T15] ( 2, 8 ) byref -> r3 "field V15._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp48 [V55,T17] ( 2, 8 ) int -> lr "field V15._length (fldOffset=0x4)" P-INDEP ;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp50 [V57 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP
;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
@@ -79,19 +79,20 @@
;* V68 tmp61 [V68 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V69 tmp62 [V69 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP
; V70 tmp63 [V70,T01] ( 3, 48 ) ref -> r2 "arr expr"-; V71 PSPSym [V71,T27] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
-; V72 cse0 [V72,T04] ( 3, 24 ) int -> r8 "CSE - aggressive"+; V71 PSPSym [V71,T28] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
+; V72 cse0 [V72,T09] ( 2, 16 ) int -> r2 "CSE - aggressive"
+; V73 cse1 [V73,T04] ( 2, 16 ) int -> r2 "CSE - aggressive" ;-; Lcl frame size = 24+; Lcl frame size = 20
G_M58652_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG- push {r4,r5,r6,r7,r8,r10,r11,lr}
- sub sp, 24
- add r11, sp, 48+ push {r4,r5,r6,r7,r10,r11,lr}
+ sub sp, 20
+ add r11, sp, 40 movs r2, 0
str r2, [sp+0x08]- add r2, sp, 56
- str r2, [sp+0x14]+ add r2, sp, 48
+ str r2, [sp+0x10] mov r4, r0
mov r5, r1
;; size=22 bbWeight=1 PerfScore 9.00
@@ -112,7 +113,7 @@ G_M58652_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
ldrb r2, [r5+0x04]
cmp r2, 0- beq SHORT G_M58652_IG11+ beq SHORT G_M58652_IG10 ldr r4, [r5]
; gcrRegs +[r4]
ldr r6, [r4+0x0C]
@@ -150,15 +151,15 @@ G_M58652_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3},
; byrRegs -[r0-r1]
; gcr arg pop 0
cmp r0, 0- bne SHORT G_M58652_IG14+ bne SHORT G_M58652_IG13 ;; size=26 bbWeight=4 PerfScore 40.00
G_M58652_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz- ldr r8, [r4+0x0C]
- cmp r6, r8
- bne SHORT G_M58652_IG10+ ldr r2, [r4+0x0C]
+ cmp r6, r2
+ bne SHORT G_M58652_IG09 ldr r2, [r4+0x08]
cmp r7, r2- bhs SHORT G_M58652_IG11+ bhs SHORT G_M58652_IG10 ldr r2, [r4+0x04]
; gcrRegs +[r2]
ldr r0, [r2+0x04]
@@ -173,7 +174,7 @@ G_M58652_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; byrRegs -[r2]
adds r7, r7, 1
b SHORT G_M58652_IG04- ;; size=32 bbWeight=8 PerfScore 120.00+ ;; size=30 bbWeight=8 PerfScore 120.00 G_M58652_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r2 r4]
movw r3, 0xd1ff
@@ -190,10 +191,6 @@ G_M58652_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
G_M58652_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp r6, r8
- bne SHORT G_M58652_IG09
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M58652_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr r4, [r5]
; gcrRegs +[r4]
add r0, sp, 8
@@ -214,9 +211,9 @@ G_M58652_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r3, [r4+0x08]
ldr lr, [r0+0x04]
cmp lr, r3- bls SHORT G_M58652_IG13+ bls SHORT G_M58652_IG12 ;; size=36 bbWeight=8 PerfScore 120.00-G_M58652_IG12: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz+G_M58652_IG11: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz add lr, r3, 1
str lr, [r4+0x08]
adds r0, 8
@@ -229,9 +226,9 @@ G_M58652_IG12: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1 r4]
; byrRegs -[r0]- b SHORT G_M58652_IG14+ b SHORT G_M58652_IG13 ;; size=26 bbWeight=1 PerfScore 9.00-G_M58652_IG13: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref+G_M58652_IG12: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref ; gcrRegs +[r1 r4]
mov r0, r4
; gcrRegs +[r0]
@@ -242,24 +239,24 @@ G_M58652_IG13: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r1 r4]
; gcr arg pop 0
;; size=14 bbWeight=1 PerfScore 5.00-G_M58652_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M58652_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add r0, sp, 0
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 4.00-G_M58652_IG15: ; bbWeight=1, epilog, nogc, extend
- add sp, 24
- pop {r4,r5,r6,r7,r8,r10,r11,pc}+G_M58652_IG14: ; bbWeight=1, epilog, nogc, extend
+ add sp, 20
+ pop {r4,r5,r6,r7,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00-G_M58652_IG16: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc+G_M58652_IG15: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc ; gcrRegs +[r0]- push {r2,r3,r4,r5,r6,r7,r8,r10,r11,lr}+ push {r3,r4,r5,r6,r7,r10,r11,lr} add r3, r11, 8- str r3, [sp+0x04]+ str r3, [sp] ;; size=10 bbWeight=0 PerfScore 0.00-G_M58652_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref+G_M58652_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref ldr r3, [r0]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x04]
@@ -271,14 +268,14 @@ G_M58652_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byr
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0- movw r0, LOW ADDRESS G_M58652_IG14
- movt r0, HIGH ADDRESS G_M58652_IG14+ movw r0, LOW ADDRESS G_M58652_IG13
+ movt r0, HIGH ADDRESS G_M58652_IG13 ;; size=28 bbWeight=0 PerfScore 0.00-G_M58652_IG18: ; bbWeight=0, funclet epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r8,r10,r11,pc}+G_M58652_IG17: ; bbWeight=0, funclet epilog, nogc, extend
+ pop {r3,r4,r5,r6,r7,r10,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 310, prolog size 22, PerfScore 378.00, instruction count 119, allocated bytes for code 310 (MethodHash=943d1ae3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)+; Total bytes of code 304, prolog size 22, PerfScore 362.00, instruction count 117, allocated bytes for code 304 (MethodHash=943d1ae3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts) ; ============================================================
Unwind Info:
@@ -290,12 +287,12 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 134 (0x00086) Actual length = 268 (0x00010c)+ Function Length : 131 (0x00083) Actual length = 262 (0x000106) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----- 06 add sp, sp, #24 ; opsize 16
- AD F0 pop {r4,r5,r6,r7,r8,r10,r11,lr} ; opsize 32+ 05 add sp, sp, #20 ; opsize 16
+ AC F0 pop {r4,r5,r6,r7,r10,r11,lr} ; opsize 32 FF end
...
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 20 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments
;-; V00 loc0 [V00,T07] ( 8, 14 ) ref -> r4 class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T31] ( 4, 1.50) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Object>+; V00 loc0 [V00,T08] ( 8, 14 ) ref -> r4 class-hnd exact single-def <<unknown class>>
+; V01 loc1 [V01,T33] ( 4, 1.50) ref -> [sp+0x00] class-hnd EH-live spill-single-def <System.Object> ; V02 loc2 [V02 ] ( 6, 5 ) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op
;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V04 loc4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.WeakReference`1[System.Diagnostics.Tracing.EventSource]>
@@ -17,55 +17,57 @@
;* V06 loc6 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.EventSource]>
;* V07 loc7 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Diagnostics.Tracing.EventSource>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V09 tmp1 [V09,T21] ( 3, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V10 tmp2 [V10,T26] ( 2, 4 ) ubyte -> r0 "Inlining Arg"+; V09 tmp1 [V09,T23] ( 3, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V10 tmp2 [V10,T28] ( 2, 4 ) ubyte -> r0 "Inlining Arg" ;* V11 tmp3 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V12 tmp4 [V12,T25] ( 2, 4 ) ref -> r5 class-hnd single-def "Inlining Arg" <<unknown class>>+; V12 tmp4 [V12,T27] ( 2, 4 ) ref -> r5 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp7 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>-; V16 tmp8 [V16,T14] ( 5, 10 ) ref -> r2 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
-; V17 tmp9 [V17,T09] ( 5, 14 ) int -> r0 "Inline stloc first use temp"+; V16 tmp8 [V16,T15] ( 5, 10 ) ref -> r2 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
+; V17 tmp9 [V17,T10] ( 5, 14 ) int -> r0 "Inline stloc first use temp" ;* V18 tmp10 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>-; V19 tmp11 [V19,T22] ( 3, 6 ) ref -> r2 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>+; V19 tmp11 [V19,T24] ( 3, 6 ) ref -> r2 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>
;* V21 tmp13 [V21 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.EventSource>
; V22 tmp14 [V22,T12] ( 3, 12 ) ref -> r9 class-hnd "updating class info" <System.ComAwareWeakReference>
;* V23 tmp15 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp16 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V25 tmp17 [V25,T18] ( 2, 8 ) ref -> r0 class-hnd "dup spill" <System.Object>
-; V26 tmp18 [V26,T16] ( 4, 8 ) ref -> r0
-; V27 tmp19 [V27,T23] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V28 tmp20 [V28,T17] ( 4, 8 ) int -> r1 "Inline stloc first use temp"+; V25 tmp17 [V25,T20] ( 2, 8 ) ref -> r0 class-hnd "dup spill" <System.Object>
+; V26 tmp18 [V26,T18] ( 4, 8 ) ref -> r0
+; V27 tmp19 [V27,T25] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V28 tmp20 [V28,T19] ( 4, 8 ) int -> r1 "Inline stloc first use temp" ;* V29 tmp21 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventSource>-;* V30 tmp22 [V30,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V30 tmp22 [V30,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V31 tmp23 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V32 tmp24 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V33 tmp25 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.EventSource]>-;* V34 tmp26 [V34,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V34 tmp26 [V34,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V35 tmp27 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V36 tmp28 [V36,T04] ( 4, 17 ) ref -> r5 single-def "field V03._list (fldOffset=0x0)" P-INDEP-; V37 tmp29 [V37,T10] ( 3, 10 ) ref -> r8 "field V03._current (fldOffset=0x4)" P-INDEP+; V37 tmp29 [V37,T11] ( 3, 10 ) ref -> r8 "field V03._current (fldOffset=0x4)" P-INDEP ; V38 tmp30 [V38,T00] ( 6, 21 ) int -> r7 "field V03._index (fldOffset=0x8)" P-INDEP-; V39 tmp31 [V39,T11] ( 3, 13 ) int -> r6 "field V03._version (fldOffset=0xc)" P-INDEP
-; V40 tmp32 [V40,T06] ( 4, 17 ) ref -> r4 single-def "field V06._list (fldOffset=0x0)" P-INDEP
-; V41 tmp33 [V41,T08] ( 4, 10 ) ref -> r7 "field V06._current (fldOffset=0x4)" P-INDEP+; V39 tmp31 [V39,T16] ( 2, 9 ) int -> r6 "field V03._version (fldOffset=0xc)" P-INDEP
+; V40 tmp32 [V40,T05] ( 4, 17 ) ref -> r4 single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V41 tmp33 [V41,T09] ( 4, 10 ) ref -> r7 "field V06._current (fldOffset=0x4)" P-INDEP ; V42 tmp34 [V42,T01] ( 6, 21 ) int -> r6 "field V06._index (fldOffset=0x8)" P-INDEP-; V43 tmp35 [V43,T15] ( 2, 9 ) int -> r5 "field V06._version (fldOffset=0xc)" P-INDEP
-; V44 tmp36 [V44,T27] ( 3, 3 ) ref -> r5 single-def "field V13._list (fldOffset=0x0)" P-INDEP+; V43 tmp35 [V43,T17] ( 2, 9 ) int -> r5 "field V06._version (fldOffset=0xc)" P-INDEP
+; V44 tmp36 [V44,T29] ( 3, 3 ) ref -> r5 single-def "field V13._list (fldOffset=0x0)" P-INDEP ;* V45 tmp37 [V45 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x4)" P-INDEP-;* V46 tmp38 [V46,T32] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-; V47 tmp39 [V47,T29] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP
-; V48 tmp40 [V48,T28] ( 3, 3 ) ref -> r4 single-def "field V33._list (fldOffset=0x0)" P-INDEP+;* V46 tmp38 [V46,T34] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
+; V47 tmp39 [V47,T31] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP
+; V48 tmp40 [V48,T30] ( 3, 3 ) ref -> r4 single-def "field V33._list (fldOffset=0x0)" P-INDEP ;* V49 tmp41 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V33._current (fldOffset=0x4)" P-INDEP-;* V50 tmp42 [V50,T33] ( 0, 0 ) int -> zero-ref "field V33._index (fldOffset=0x8)" P-INDEP
-; V51 tmp43 [V51,T30] ( 2, 2 ) int -> r5 "field V33._version (fldOffset=0xc)" P-INDEP+;* V50 tmp42 [V50,T35] ( 0, 0 ) int -> zero-ref "field V33._index (fldOffset=0x8)" P-INDEP
+; V51 tmp43 [V51,T32] ( 2, 2 ) int -> r5 "field V33._version (fldOffset=0xc)" P-INDEP ; V52 tmp44 [V52,T02] ( 3, 24 ) ref -> r0 "arr expr"
; V53 tmp45 [V53,T03] ( 3, 24 ) ref -> r0 "arr expr"-; V54 PSPSym [V54,T34] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"+; V54 PSPSym [V54,T36] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym" ; V55 cse0 [V55,T13] ( 2, 8 ) int -> r0 "CSE - moderate"-; V56 cse1 [V56,T05] ( 3, 20 ) int -> r8 "CSE - aggressive"
-; V57 cse2 [V57,T24] ( 9, 4.50) ref -> r1 multi-def "CSE - moderate"+; V56 cse1 [V56,T14] ( 2, 8 ) int -> r0 "CSE - moderate"
+; V57 cse2 [V57,T06] ( 2, 16 ) int -> r0 "CSE - aggressive"
+; V58 cse3 [V58,T07] ( 2, 16 ) int -> r0 "CSE - aggressive"
+; V59 cse4 [V59,T26] ( 9, 4.50) ref -> r1 multi-def "CSE - moderate" ;
; Lcl frame size = 12
@@ -116,7 +118,7 @@ G_M64982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r1, 0
str r1, [sp+0x04] // [V02 loc2]
;; size=80 bbWeight=1 PerfScore 26.00-G_M64982_IG03: ; bbWeight=1, gcVars=0000000080000000 {V01}, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M64982_IG03: ; bbWeight=1, gcVars=0000000200000000 {V01}, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x04] // [V02 loc2]
cmp r1, 0
bne SHORT G_M64982_IG12
@@ -172,19 +174,19 @@ G_M64982_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movs r7, 0
;; size=14 bbWeight=1 PerfScore 5.00
G_M64982_IG08: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz- ldr r8, [r5+0x0C]
- cmp r6, r8
- bne SHORT G_M64982_IG18
- ;; size=8 bbWeight=8 PerfScore 24.00+ ldr r0, [r5+0x0C]
+ cmp r6, r0
+ bne SHORT G_M64982_IG19
+ ;; size=6 bbWeight=8 PerfScore 24.00 G_M64982_IG09: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5+0x08]
cmp r7, r0- bhs SHORT G_M64982_IG21+ bhs SHORT G_M64982_IG20 ldr r0, [r5+0x04]
; gcrRegs +[r0]
ldr r3, [r0+0x04]
cmp r7, r3- bhs SHORT G_M64982_IG19+ bhs SHORT G_M64982_IG18 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -298,20 +300,14 @@ G_M64982_IG17: ; bbWeight=2, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0000 {}
; gcr arg pop 0
b SHORT G_M64982_IG08
;; size=18 bbWeight=2 PerfScore 14.00-G_M64982_IG18: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5]
- cmp r6, r8
- bne SHORT G_M64982_IG20
- b SHORT G_M64982_IG21
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M64982_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]+G_M64982_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4-r5] movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M64982_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M64982_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -319,13 +315,13 @@ G_M64982_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M64982_IG21: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M64982_IG20: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4]
ldrb r0, [sp+0x04] // [V02 loc2]
cmp r0, 0- beq SHORT G_M64982_IG23+ beq SHORT G_M64982_IG22 ;; size=8 bbWeight=1 PerfScore 3.00-G_M64982_IG22: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref+G_M64982_IG21: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ldr r0, [sp] // [V01 loc1]
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -335,7 +331,7 @@ G_M64982_IG22: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00-G_M64982_IG23: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M64982_IG22: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -349,9 +345,9 @@ G_M64982_IG23: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0- beq SHORT G_M64982_IG25+ beq SHORT G_M64982_IG24 ;; size=28 bbWeight=1 PerfScore 10.00-G_M64982_IG24: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref+G_M64982_IG23: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movw r1, 0xd1ff
movt r1, 0xd1ff
mov r0, r1
@@ -363,12 +359,12 @@ G_M64982_IG24: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
;; size=22 bbWeight=0.50 PerfScore 3.50-G_M64982_IG25: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M64982_IG24: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r5, [r4+0x0C]
movs r6, 0- b SHORT G_M64982_IG27+ b SHORT G_M64982_IG26 ;; size=6 bbWeight=1 PerfScore 3.00-G_M64982_IG26: ; bbWeight=2, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref+G_M64982_IG25: ; bbWeight=2, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref ; gcrRegs +[r7]
mov r0, r7
; gcrRegs +[r0]
@@ -387,20 +383,20 @@ G_M64982_IG26: ; bbWeight=2, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, b
; gcrRegs -[r0 r7]
; gcr arg pop 0
;; size=24 bbWeight=2 PerfScore 20.00-G_M64982_IG27: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M64982_IG26: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x0C]
cmp r5, r0- bne SHORT G_M64982_IG31+ bne SHORT G_M64982_IG30 ;; size=6 bbWeight=8 PerfScore 24.00-G_M64982_IG28: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M64982_IG27: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08]
cmp r6, r0- bhs SHORT G_M64982_IG29+ bhs SHORT G_M64982_IG28 ldr r0, [r4+0x04]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r6, r1- bhs SHORT G_M64982_IG30+ bhs SHORT G_M64982_IG29 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -408,21 +404,21 @@ G_M64982_IG28: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r7, [r0+r1]
; gcrRegs +[r7]
adds r6, r6, 1- b SHORT G_M64982_IG26+ b SHORT G_M64982_IG25 ;; size=24 bbWeight=4 PerfScore 48.00-G_M64982_IG29: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc+G_M64982_IG28: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4 r7]
; byrRegs -[r0]
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=4 PerfScore 8.00-G_M64982_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M64982_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref...
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 39 single block inlinees; 18 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T28] ( 15, 23 ) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexNode>+; V00 arg0 [V00,T34] ( 14, 21 ) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexNode> ; V01 loc0 [V01,T02] ( 16,137.50) ref -> r5 class-hnd single-def <<unknown class>>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Text.RegularExpressions.RegexNode]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
@@ -16,7 +16,7 @@
; V05 loc4 [V05,T22] ( 14, 42 ) int -> r6
; V06 loc5 [V06,T07] ( 11,110 ) ref -> r8 class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V07 loc6 [V07,T03] ( 12,122 ) int -> r7 -; V08 loc7 [V08,T30] ( 5, 24 ) ref -> r9 class-hnd <System.Text.RegularExpressions.RegexNode>+; V08 loc7 [V08,T29] ( 5, 24 ) ref -> r9 class-hnd <System.Text.RegularExpressions.RegexNode> ;* V09 loc8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V10 loc9 [V10,T45] ( 4, 12 ) ubyte -> r0
;* V11 loc10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
@@ -24,8 +24,8 @@
; V13 loc12 [V13,T59] ( 3, 6 ) ref -> r0 class-hnd exact <System.Text.RegularExpressions.RegexNode>
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V15 OutArgs [V15 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V16 tmp1 [V16,T64] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
-; V17 tmp2 [V17,T65] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable"+; V16 tmp1 [V16,T65] ( 3, 4.25) ref -> r1 single-def "CASTCLASS eval op1"
+; V17 tmp2 [V17,T66] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable" ; V18 tmp3 [V18,T58] ( 5, 6.75) ref -> r5 class-hnd "spilling QMark2" <<unknown class>>
;* V19 tmp4 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V20 tmp5 [V20 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
@@ -50,7 +50,7 @@
;* V39 tmp24 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V40 tmp25 [V40,T47] ( 4, 11 ) ref -> r7 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V41 tmp26 [V41,T49] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V42 tmp27 [V42,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V42 tmp27 [V42,T63] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V43 tmp28 [V43,T39] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V44 tmp29 [V44,T04] ( 8,112 ) ref -> r2 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V45 tmp30 [V45,T13] ( 3, 80 ) ref -> r0 class-hnd "Inlining Arg" <System.__Canon>
@@ -75,21 +75,21 @@
; V64 tmp49 [V64,T56] ( 2, 8 ) int -> r0 "Inlining Arg"
; V65 tmp50 [V65,T57] ( 2, 8 ) int -> r0 "Inlining Arg"
; V66 tmp51 [V66,T41] ( 4, 16 ) ref -> r8 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>-; V67 tmp52 [V67,T53] ( 2, 8 ) ref -> r1 "CASTCLASS eval op1"
-; V68 tmp53 [V68,T48] ( 3, 10 ) ref -> r1 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>+; V67 tmp52 [V67,T53] ( 2, 8 ) ref -> r0 "CASTCLASS eval op1"
+; V68 tmp53 [V68,T48] ( 3, 10 ) ref -> r0 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V69 tmp54 [V69,T50] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V70 tmp55 [V70,T63] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable"+; V70 tmp55 [V70,T64] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable" ; V71 tmp56 [V71,T27] ( 8, 27 ) ref -> r9 class-hnd "spilling QMark2" <<unknown class>>-;* V72 tmp57 [V72,T68] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP+;* V72 tmp57 [V72,T69] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V73 tmp58 [V73,T44] ( 3, 8 ) ref -> r1 "field V02._current (fldOffset=0x4)" P-INDEP-; V74 tmp59 [V74,T29] ( 6, 20.50) int -> r6 "field V02._index (fldOffset=0x8)" P-INDEP
-;* V75 tmp60 [V75,T70] ( 0, 0 ) int -> zero-ref "field V02._version (fldOffset=0xc)" P-INDEP
-;* V76 tmp61 [V76,T69] ( 0, 0 ) ref -> zero-ref single-def "field V31._list (fldOffset=0x0)" P-INDEP+; V74 tmp59 [V74,T28] ( 6, 20.50) int -> r6 "field V02._index (fldOffset=0x8)" P-INDEP
+;* V75 tmp60 [V75,T71] ( 0, 0 ) int -> zero-ref "field V02._version (fldOffset=0xc)" P-INDEP
+;* V76 tmp61 [V76,T70] ( 0, 0 ) ref -> zero-ref single-def "field V31._list (fldOffset=0x0)" P-INDEP ;* V77 tmp62 [V77 ] ( 0, 0 ) ref -> zero-ref single-def "field V31._current (fldOffset=0x4)" P-INDEP-;* V78 tmp63 [V78,T71] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP
-;* V79 tmp64 [V79,T66] ( 0, 0 ) int -> zero-ref "field V31._version (fldOffset=0xc)" P-INDEP
-; V80 tmp65 [V80,T31] ( 3, 24 ) ref -> r1 "arr expr"
-; V81 tmp66 [V81,T32] ( 3, 24 ) ref -> r0 "arr expr"+;* V78 tmp63 [V78,T72] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP
+;* V79 tmp64 [V79,T67] ( 0, 0 ) int -> zero-ref "field V31._version (fldOffset=0xc)" P-INDEP
+; V80 tmp65 [V80,T30] ( 3, 24 ) ref -> r1 "arr expr"
+; V81 tmp66 [V81,T31] ( 3, 24 ) ref -> r0 "arr expr" ; V82 tmp67 [V82,T46] ( 3, 12 ) ref -> r0 "arr expr"
; V83 tmp68 [V83,T08] ( 3, 96 ) ref -> r0 "arr expr"
; V84 tmp69 [V84,T19] ( 3, 48 ) ref -> r2 "arr expr"
@@ -100,11 +100,12 @@
; V89 tmp74 [V89,T17] ( 2, 64 ) ref -> r1 "argument with side effect"
; V90 cse0 [V90,T18] ( 4, 56 ) int -> r0 "CSE - moderate"
; V91 cse1 [V91,T20] ( 3, 48 ) int -> r0 "CSE - moderate"-;* V92 cse2 [V92,T67] ( 0, 0 ) int -> zero-ref "CSE - conservative"
-; V93 cse3 [V93,T33] ( 3, 24 ) ref -> r2 "CSE - moderate"+;* V92 cse2 [V92,T68] ( 0, 0 ) int -> zero-ref "CSE - conservative"
+; V93 cse3 [V93,T32] ( 3, 24 ) ref -> r2 "CSE - moderate" ; V94 cse4 [V94,T42] ( 3, 12 ) int -> r7 "CSE - conservative"
; V95 cse5 [V95,T61] ( 3, 6 ) ref -> r1 "CSE - conservative"-; V96 cse6 [V96,T34] ( 3, 24 ) int -> r2 "CSE - moderate"+; V96 cse6 [V96,T62] ( 3, 6 ) ref -> r1 "CSE - conservative"
+; V97 cse7 [V97,T33] ( 3, 24 ) int -> r2 "CSE - moderate" ;
; Lcl frame size = 20
@@ -696,20 +697,26 @@ G_M3603_IG41: ; bbWeight=2, gcrefRegs=0330 {r4 r5 r8 r9}, byrefRegs=0000
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- ldr r1, [r4+0x04]+ ldr r2, [r4+0x04]
+ ; gcrRegs +[r2]
+ mov r1, r2 ; gcrRegs +[r1]- cmp r1, 0+ mov r0, r1
+ ; gcrRegs +[r0]
+ cmp r0, 0 beq SHORT G_M3603_IG44- ;; size=118 bbWeight=2 PerfScore 82.00
-G_M3603_IG42: ; bbWeight=1, gcrefRegs=0132 {r1 r4 r5 r8}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0+ ;; size=122 bbWeight=2 PerfScore 86.00
+G_M3603_IG42: ; bbWeight=1, gcrefRegs=0133 {r0 r1 r4 r5 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2]
+ ldr r0, [r0]
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3 bne SHORT G_M3603_IG44
;; size=14 bbWeight=1 PerfScore 5.00
G_M3603_IG43: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz+ ; gcrRegs -[r1] adds r0, r4, 4
; byrRegs +[r0]
mov r1, r8
@@ -721,15 +728,13 @@ G_M3603_IG43: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {},
; byrRegs -[r0]
b SHORT G_M3603_IG48
;; size=16 bbWeight=2 PerfScore 12.00-G_M3603_IG44: ; bbWeight=2, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r8]
- ldr r1, [r4+0x04]
- ; gcrRegs +[r1]+G_M3603_IG44: ; bbWeight=2, gcrefRegs=0132 {r1 r4 r5 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1 r8] mov r9, r1
; gcrRegs +[r9]
cmp r9, 0
beq SHORT G_M3603_IG47- ;; size=10 bbWeight=2 PerfScore 8.00+ ;; size=8 bbWeight=2 PerfScore 6.00 G_M3603_IG45: ; bbWeight=1, gcrefRegs=0332 {r1 r4 r5 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9]
movw r3, 0xd1ff
@@ -819,7 +824,7 @@ G_M3603_IG53: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1110, prolog size 12, PerfScore 2413.38, instruction count 428, allocated bytes for code 1110 (MethodHash=ab1ef1ec) for method System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)+; Total bytes of code 1112, prolog size 12, PerfScore 2415.38, instruction count 429, allocated bytes for code 1112 (MethodHash=ab1ef1ec) for method System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts) ; ============================================================
Unwind Info:
@@ -831,7 +836,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 555 (0x0022b) Actual length = 1110 (0x000456)+ Function Length : 556 (0x0022c) Actual length = 1112 (0x000458) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,12 +8,12 @@
; 0 inlinees with PGO data; 14 single block inlinees; 15 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T57] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T00] ( 27, 93 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode>+; V00 this [V00,T58] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T00] ( 26, 91 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V03 loc2 [V03,T32] ( 3, 12 ) ubyte -> r0
; V04 loc3 [V04,T26] ( 4, 12 ) ubyte -> r0 -;* V05 loc4 [V05,T63] ( 0, 0 ) ubyte -> zero-ref +;* V05 loc4 [V05,T64] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V07 loc6 [V07,T12] ( 3, 24 ) int -> r6
; V08 loc7 [V08,T01] ( 7, 76 ) int -> r5
@@ -25,7 +25,7 @@
;* V14 tmp4 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T34] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V16 tmp6 [V16,T41] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V17 tmp7 [V17,T58] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V17 tmp7 [V17,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V18 tmp8 [V18,T16] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V19 tmp9 [V19,T39] ( 4, 10 ) int -> r6 "Inline return value spill temp"
; V20 tmp10 [V20,T52] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
@@ -34,7 +34,7 @@
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V24 tmp14 [V24,T35] ( 4, 11 ) ref -> r7 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V25 tmp15 [V25,T42] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V26 tmp16 [V26,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V26 tmp16 [V26,T60] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V27 tmp17 [V27,T17] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V28 tmp18 [V28,T14] ( 4, 20 ) int -> r6 "Inlining Arg"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
@@ -42,10 +42,10 @@
; V31 tmp21 [V31,T46] ( 4, 8 ) int -> r7 "Inline return value spill temp"
; V32 tmp22 [V32,T53] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V33 tmp23 [V33,T21] ( 4, 16 ) ref -> r6 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>-; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r1 "CASTCLASS eval op1"
-; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r1 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>+; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r0 "CASTCLASS eval op1"
+; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r0 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V36 tmp26 [V36,T43] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V37 tmp27 [V37,T60] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable"+; V37 tmp27 [V37,T61] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable" ; V38 tmp28 [V38,T10] ( 8, 27 ) ref -> r4 class-hnd "spilling QMark2" <<unknown class>>
; V39 tmp29 [V39,T33] ( 3, 12 ) int -> r7 "Inlining Arg"
; V40 tmp30 [V40,T40] ( 4, 10 ) int -> r6 "Inline return value spill temp"
@@ -62,7 +62,7 @@
;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V52 tmp42 [V52,T36] ( 4, 11 ) ref -> r3 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V53 tmp43 [V53,T44] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V54 tmp44 [V54,T61] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V54 tmp44 [V54,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V55 tmp45 [V55,T18] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
;* V56 tmp46 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V57 tmp47 [V57,T49] ( 3, 8 ) ref -> r4 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
@@ -70,7 +70,7 @@
;* V59 tmp49 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V60 tmp50 [V60,T37] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V61 tmp51 [V61,T45] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V62 tmp52 [V62,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V62 tmp52 [V62,T63] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V63 tmp53 [V63,T19] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V64 tmp54 [V64,T28] ( 3, 12 ) ref -> r1 "arr expr"
; V65 tmp55 [V65,T29] ( 3, 12 ) ref -> r0 "arr expr"
@@ -81,7 +81,8 @@
; V70 cse1 [V70,T07] ( 3, 40 ) ref -> r1 "CSE - aggressive"
; V71 cse2 [V71,T55] ( 3, 6 ) ref -> r0 "CSE - conservative"
; V72 cse3 [V72,T56] ( 3, 6 ) ref -> r1 "CSE - conservative"-; V73 rat0 [V73,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable"+; V73 cse4 [V73,T57] ( 3, 6 ) ref -> r1 "CSE - conservative"
+; V74 rat0 [V74,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable" ;
; Lcl frame size = 0
@@ -109,7 +110,7 @@ G_M35244_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r4]
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50-G_M35244_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M35244_IG05: ; bbWeight=4, gcVars=000000000000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4]
ldrb r0, [r4+0x1E]
subs r3, r0, 3
@@ -397,20 +398,26 @@ G_M35244_IG30: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- ldr r1, [r4+0x04]+ ldr r2, [r4+0x04]
+ ; gcrRegs +[r2]
+ mov r1, r2 ; gcrRegs +[r1]- cmp r1, 0+ mov r0, r1
+ ; gcrRegs +[r0]
+ cmp r0, 0 beq SHORT G_M35244_IG33- ;; size=56 bbWeight=2 PerfScore 40.00
-G_M35244_IG31: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0+ ;; size=60 bbWeight=2 PerfScore 44.00
+G_M35244_IG31: ; bbWeight=1, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2]
+ ldr r0, [r0]
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3 bne SHORT G_M35244_IG33
;; size=14 bbWeight=1 PerfScore 5.00
G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz+ ; gcrRegs -[r1] adds r0, r4, 4
; byrRegs +[r0]
mov r1, r6
@@ -422,14 +429,13 @@ G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
; byrRegs -[r0]
b SHORT G_M35244_IG37
;; size=16 bbWeight=2 PerfScore 12.00-G_M35244_IG33: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4 r6]
- ldr r1, [r4+0x04]
- ; gcrRegs +[r1]+G_M35244_IG33: ; bbWeight=2, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1 r6] mov r4, r1+ ; gcrRegs +[r4] cmp r4, 0
beq SHORT G_M35244_IG36- ;; size=8 bbWeight=2 PerfScore 8.00+ ;; size=6 bbWeight=2 PerfScore 6.00 G_M35244_IG34: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4]
movw r3, 0xd1ff
@@ -748,7 +754,7 @@ G_M35244_IG68: ; bbWeight=0.50, epilog, nogc, extend
bx r3 // <unknown method>
; gcr arg pop 0
;; size=6 bbWeight=0.50 PerfScore 1.00-G_M35244_IG69: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M35244_IG69: ; bbWeight=0, gcVars=000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0 r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -776,7 +782,7 @@ RWD00 dd G_M35244_IG38
dd G_M35244_IG38
-; Total bytes of code 938, prolog size 10, PerfScore 1002.00, instruction count 372, allocated bytes for code 938 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)+; Total bytes of code 940, prolog size 10, PerfScore 1004.00, instruction count 373, allocated bytes for code 940 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts) ; ============================================================
Unwind Info:
@@ -788,7 +794,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 469 (0x001d5) Actual length = 938 (0x0003aa)+ Function Length : 470 (0x001d6) Actual length = 940 (0x0003ac) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -12,22 +12,22 @@
; V01 arg1 [V01,T13] ( 4, 3 ) int -> r6 single-def
; V02 arg2 [V02,T11] ( 3, 4 ) int -> r4 single-def
; V03 arg3 [V03,T12] ( 5, 3.50) int -> r5 single-def-; V04 arg4 [V04,T22] ( 1, 0.50) int -> [sp+0x38] single-def+; V04 arg4 [V04,T22] ( 1, 0.50) int -> [sp+0x30] single-def ;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 loc1 [V06,T16] ( 3, 1.50) int -> r7
;* V07 loc2 [V07,T23] ( 0, 0 ) ref -> zero-ref class-hnd exact EH-live single-def <System.Buffers.SharedArrayPoolPartitions+Partition>
; V08 loc3 [V08 ] ( 6, 2.50) ubyte -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op
; V09 loc4 [V09,T14] ( 3, 4.50) ref -> r6 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
; V10 loc5 [V10,T02] ( 10, 13.25) int -> registers -; V11 loc6 [V11,T07] ( 5, 10 ) ref -> r5 class-hnd <System.Array>
-; V12 loc7 [V12,T08] ( 4, 8 ) int -> r3 +; V11 loc6 [V11,T06] ( 5, 10 ) ref -> registers class-hnd <System.Array>
+; V12 loc7 [V12,T08] ( 4, 8 ) int -> r1 ; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14,T17] ( 3, 1.50) int -> r7
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
; V17 tmp4 [V17,T18] ( 3, 1.50) int -> r4
; V18 tmp5 [V18,T00] ( 3, 24 ) int -> r8 "impSpillLclRefs"-; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> r1 class-hnd "impSpillLclRefs" <<unknown class>>+; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> r3 class-hnd "impSpillLclRefs" <<unknown class>> ; V20 tmp7 [V20,T09] ( 2, 8 ) int -> r2 "impAppendStmt"
; V21 tmp8 [V21,T15] ( 2, 2 ) ubyte -> r0 "Inlining Arg"
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -35,19 +35,19 @@
; V24 tmp11 [V24,T10] ( 2, 8 ) int -> r3 "Inlining Arg"
; V25 tmp12 [V25,T04] ( 3, 12 ) ref -> r3 "arr expr"
; V26 tmp13 [V26,T05] ( 3, 12 ) int -> r2 "index expr"-; V27 PSPSym [V27,T21] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
-; V28 cse0 [V28,T06] ( 4, 10.50) int -> r5 "CSE - aggressive"+; V27 PSPSym [V27,T21] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
+; V28 cse0 [V28,T07] ( 3, 10 ) int -> r1 "CSE - aggressive" ; V29 cse1 [V29,T19] ( 3, 1.50) int -> r1 "CSE - moderate"
; V30 cse2 [V30,T20] ( 3, 1.50) int -> r1 "CSE - moderate"
;-; Lcl frame size = 24+; Lcl frame size = 20
G_M62513_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push {r4,r5,r6,r7,r8,r9,r11,lr}
- sub sp, 24
- add r11, sp, 48
- add r4, sp, 56
- str r4, [sp+0x14] // [V27 PSPSym]+ push {r4,r5,r6,r7,r8,r11,lr}
+ sub sp, 20
+ add r11, sp, 40
+ add r4, sp, 48
+ str r4, [sp+0x10] // [V27 PSPSym] str r0, [sp+0x08] // [V00 this]
; GC ptr vars +{V00}
mov r6, r1
@@ -63,8 +63,8 @@ G_M62513_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=0001 {r0},
G_M62513_IG03: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[r0]
; GC ptr vars -{V00}- add sp, 24
- pop {r4,r5,r6,r7,r8,r9,r11,pc}+ add sp, 20
+ pop {r4,r5,r6,r7,r8,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
G_M62513_IG04: ; bbWeight=0.50, gcVars=00000002 {V00}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r0]
@@ -109,12 +109,12 @@ G_M62513_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[r0]
ldr r1, [r0+0x0C]
cmp r1, 0- beq G_M62513_IG22+ beq G_M62513_IG23 ldr r1, [r0+0x10]
cmp r1, 0
bne SHORT G_M62513_IG12
str r6, [r0+0x10]- b SHORT G_M62513_IG22+ b SHORT G_M62513_IG23 ;; size=20 bbWeight=0.50 PerfScore 4.50
G_M62513_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
@@ -141,7 +141,7 @@ G_M62513_IG12: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
; gcrRegs +[r0]
subs r1, r6, r1
cmp r1, r7- ble SHORT G_M62513_IG22+ ble SHORT G_M62513_IG23 movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r6, [r1]
@@ -152,7 +152,7 @@ G_M62513_IG12: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
cmp r5, 2
bne SHORT G_M62513_IG17
mov r8, 32- ldr r5, [sp+0x38] // [V04 arg4]+ ldr r5, [sp+0x30] // [V04 arg4] cmp r5, 0x4000
ble SHORT G_M62513_IG13
mov r8, 33
@@ -172,34 +172,34 @@ G_M62513_IG14: ; bbWeight=1.75, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}
b SHORT G_M62513_IG17
;; size=6 bbWeight=1.75 PerfScore 3.50
G_M62513_IG15: ; bbWeight=2, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz- ldr r1, [r0+0x04]
- ; gcrRegs +[r1]
- subs r3, r5, 1
- str r3, [r0+0x0C]
- ldr r2, [r1+0x04]
- cmp r3, r2+ ldr r3, [r0+0x04]
+ ; gcrRegs +[r3]
+ subs r1, r1, 1
+ str r1, [r0+0x0C]
+ ldr r2, [r3+0x04]
+ cmp r1, r2 bhs SHORT G_M62513_IG10- adds r1, 8
- ; gcrRegs -[r1]
- ; byrRegs +[r1]
- lsls r3, r3, 2
- ldr r5, [r1+r3]
- ; gcrRegs +[r5]
- cmp r5, 0+ adds r3, 8
+ ; gcrRegs -[r3]
+ ; byrRegs +[r3]
+ lsls r1, r1, 2
+ ldr r8, [r3+r1]
+ ; gcrRegs +[r8]
+ cmp r8, 0 bne SHORT G_M62513_IG16
movw r0, 0xd1ff
; gcrRegs -[r0]
movt r0, 0xd1ff
movw r1, 0xd1ff- ; byrRegs -[r1] movt r1, 0xd1ff
movw r3, 0xd1ff+ ; byrRegs -[r3] movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0- ;; size=50 bbWeight=2 PerfScore 38.00
-G_M62513_IG16: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz+ ;; size=54 bbWeight=2 PerfScore 38.00
+G_M62513_IG16: ; bbWeight=2, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref, isz ldr r0, [sp+0x08] // [V00 this]
; gcrRegs +[r0]
ldr r3, [r0+0x04]
@@ -217,9 +217,15 @@ G_M62513_IG16: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
ldrb r3, [r6+0x5D]
; byrRegs -[r3]
cmp r3, 0- mov r8, r9
- beq SHORT G_M62513_IG17+ beq SHORT G_M62513_IG19 mov r0, r5+ ; gcrRegs -[r0]
+ mov r5, r8
+ ; gcrRegs +[r5]
+ mov r8, r0
+ ; gcrRegs -[r8]
+ mov r0, r5
+ ; gcrRegs +[r0] ldr r3, [r5]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x0C]
@@ -241,29 +247,35 @@ G_M62513_IG16: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
blx lr // <unknown method>
; gcrRegs -[r0 r5]
; gcr arg pop 0- ;; size=70 bbWeight=2 PerfScore 62.00
-G_M62513_IG17: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz ldr r0, [sp+0x08] // [V00 this]
; gcrRegs +[r0]- ldr r5, [r0+0x0C]
- cmp r5, 0
- ble SHORT G_M62513_IG19
- add r1, r8, -1
- mov r9, r1+ ;; size=76 bbWeight=2 PerfScore 68.00
+G_M62513_IG17: ; bbWeight=4, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz
+ ldr r1, [r0+0x0C]
+ cmp r1, 0
+ ble SHORT G_M62513_IG20
+ add r3, r8, -1
+ mov r5, r3 cmp r8, 0
bgt SHORT G_M62513_IG15- ;; size=20 bbWeight=4 PerfScore 32.00+ ;; size=18 bbWeight=4 PerfScore 28.00 G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]- b SHORT G_M62513_IG20
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- cmp r5, 0
- bgt SHORT G_M62513_IG20
- movs r4, 0 b SHORT G_M62513_IG21- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M62513_IG20: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M62513_IG19: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r6]
+ mov r8, r5
+ ldr r0, [sp+0x08] // [V00 this]
+ ; gcrRegs +[r0]
+ b SHORT G_M62513_IG17
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M62513_IG20: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6]
+ movs r4, 0
+ b SHORT G_M62513_IG22
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M62513_IG21: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ldr r4, [r0+0x10]
mov r0, r7
; gcrRegs -[r0]
@@ -276,10 +288,10 @@ G_M62513_IG20: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
ldr r0, [sp+0x08] // [V00 this]
; gcrRegs +[r0]
;; size=20 bbWeight=0.50 PerfScore 4.00-G_M62513_IG21: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref+G_M62513_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref str r4, [r0+0x10]
;; size=2 bbWeight=0.50 PerfScore 0.50-G_M62513_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz+G_M62513_IG23: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ldrb r3, [sp+0x0C] // [V08 loc3]
cmp r3, 0
beq G_M62513_IG03
@@ -291,17 +303,18 @@ G_M62513_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
; gcr arg pop 0
b SHORT G_M62513_IG03
;; size=22 bbWeight=0.50 PerfScore 3.50-G_M62513_IG23: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc+G_M62513_IG24: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; GC ptr vars +{V00 V01}- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}+ push {r4,r5,r6,r7,r8,r11,lr}
+ sub sp, 12 add r3, r11, 8- str r3, [sp+0x04]
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M62513_IG24: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldrb r0, [r11-0x24] // [V08 loc3]+ str r3, [sp+0x08]
+ ;; size=12 bbWeight=0 PerfScore 0.00...
@@ -10,11 +10,12 @@
; V00 loc0 [V00,T01] ( 4, 13 ) int -> r4
;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V03 tmp1 [V03,T02] ( 3, 12 ) ref -> r2 "arr expr"
-; V04 tmp2 [V04,T00] ( 3, 24 ) ref -> r3 "arr expr"
-; V05 PSPSym [V05,T05] ( 1, 1 ) int -> [sp+0x04] do-not-enreg[V] "PSPSym"
-; V06 cse0 [V06,T03] ( 3, 12 ) int -> r3 "CSE - aggressive"
-; V07 cse1 [V07,T04] ( 4, 9 ) int -> r5 hoist "CSE - aggressive"+; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> r3 "arr expr"
+;* V04 tmp2 [V04,T05] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V05 PSPSym [V05,T06] ( 1, 1 ) int -> [sp+0x04] do-not-enreg[V] "PSPSym"
+; V06 cse0 [V06,T02] ( 3, 12 ) byref -> r3 "CSE - aggressive"
+; V07 cse1 [V07,T03] ( 2, 8 ) ref -> r3 "CSE - aggressive"
+; V08 cse2 [V08,T04] ( 4, 9 ) int -> r5 hoist "CSE - aggressive" ;
; Lcl frame size = 8
@@ -32,7 +33,7 @@ G_M37813_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blx r3 // <unknown method>
; gcr arg pop 0
cmp r0, 0- ble SHORT G_M37813_IG09+ ble SHORT G_M37813_IG07 ;; size=18 bbWeight=1 PerfScore 7.00
G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r5, 0xd1ff
@@ -41,34 +42,7 @@ G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M37813_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb r3, [r5]
cmp r3, 0- bne SHORT G_M37813_IG07
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M37813_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- ldr r2, [r2]
- ; gcrRegs +[r2]
- movs r1, 0
- ldr r0, [r2+0x04]
- cmp r1, r0
- bhs SHORT G_M37813_IG14
- ;; size=18 bbWeight=2 PerfScore 14.00
-G_M37813_IG06: ; bbWeight=2, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref
- str r1, [r2+0x08]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M37813_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r2]
- cmp r3, 0
- beq SHORT G_M37813_IG10
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M37813_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movs r3, 0
- str r3, [r5-0x08]
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M37813_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M37813_IG10: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+ bne SHORT G_M37813_IG06 movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -77,19 +51,29 @@ G_M37813_IG10: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
ldr r1, [r3+0x04]
cmp r2, r1
bhs SHORT G_M37813_IG11- ldr r2, [r5-0x08]
- str r2, [r3+0x08]
- b SHORT G_M37813_IG12
- ;; size=26 bbWeight=4 PerfScore 40.00
-G_M37813_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ adds r3, 8 ; gcrRegs -[r3]- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- bkpt
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M37813_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ; byrRegs +[r3]
+ ;; size=26 bbWeight=4 PerfScore 44.00
+G_M37813_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ str r2, [r3]
+ b SHORT G_M37813_IG08
+ ;; size=4 bbWeight=4 PerfScore 8.00
+G_M37813_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r3]
+ movs r3, 0
+ str r3, [r5-0x08]
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M37813_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r2,r3,r4,r5,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M37813_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, gcvars, byref
+ ; byrRegs +[r3]
+ ldr r2, [r5-0x08]
+ str r2, [r3]
+ ;; size=6 bbWeight=4 PerfScore 8.00
+G_M37813_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r3] adds r4, r4, 1
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -99,26 +83,26 @@ G_M37813_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r0, r4
bgt SHORT G_M37813_IG04
;; size=18 bbWeight=4 PerfScore 28.00-G_M37813_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M37813_IG09+G_M37813_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M37813_IG07 ;; size=2 bbWeight=0.50 PerfScore 0.50-G_M37813_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M37813_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
bkpt
;; size=12 bbWeight=0 PerfScore 0.00-G_M37813_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc+G_M37813_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc push {r2,r3,r4,r5,r11,lr}
add r3, r11, 8
str r3, [sp+0x04]
;; size=10 bbWeight=0 PerfScore 0.00-G_M37813_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc+G_M37813_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc pop {r2,r3,r4,r5,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 162, prolog size 12, PerfScore 118.50, instruction count 59, allocated bytes for code 162 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)+; Total bytes of code 130, prolog size 12, PerfScore 102.50, instruction count 47, allocated bytes for code 130 (MethodHash=996e6c4a) for method Program:M49() (FullOpts) ; ============================================================
Unwind Info:
@@ -130,7 +114,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)+ Function Length : 58 (0x0003a) Actual length = 116 (0x000074) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -161,4 +145,4 @@ Unwind Info:
*************** EH table for Program:M49()
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M37813_IG10..G_M37813_IG12) handled by [G_M37813_IG15..END) (fault)+EH#0: try [G_M37813_IG08..G_M37813_IG09) handled by [G_M37813_IG12..END) (fault)
@@ -10,11 +10,12 @@
; V00 loc0 [V00,T01] ( 4, 13 ) int -> r4
;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V03 tmp1 [V03,T02] ( 3, 12 ) ref -> r2 "arr expr"
-; V04 tmp2 [V04,T00] ( 3, 24 ) ref -> r3 "arr expr"
-; V05 PSPSym [V05,T05] ( 1, 1 ) int -> [sp+0x04] do-not-enreg[V] "PSPSym"
-; V06 cse0 [V06,T03] ( 3, 12 ) int -> r3 "CSE - aggressive"
-; V07 cse1 [V07,T04] ( 4, 9 ) int -> r5 hoist "CSE - aggressive"+; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> r3 "arr expr"
+;* V04 tmp2 [V04,T05] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V05 PSPSym [V05,T06] ( 1, 1 ) int -> [sp+0x04] do-not-enreg[V] "PSPSym"
+; V06 cse0 [V06,T02] ( 3, 12 ) byref -> r3 "CSE - aggressive"
+; V07 cse1 [V07,T03] ( 2, 8 ) ref -> r3 "CSE - aggressive"
+; V08 cse2 [V08,T04] ( 4, 9 ) int -> r5 hoist "CSE - aggressive" ;
; Lcl frame size = 8
@@ -32,7 +33,7 @@ G_M37813_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blx r3 // <unknown method>
; gcr arg pop 0
cmp r0, 0- ble SHORT G_M37813_IG09+ ble SHORT G_M37813_IG07 ;; size=18 bbWeight=1 PerfScore 7.00
G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r5, 0xd1ff
@@ -41,34 +42,7 @@ G_M37813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M37813_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb r3, [r5]
cmp r3, 0- bne SHORT G_M37813_IG07
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M37813_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- ldr r2, [r2]
- ; gcrRegs +[r2]
- movs r1, 0
- ldr r0, [r2+0x04]
- cmp r1, r0
- bhs SHORT G_M37813_IG14
- ;; size=18 bbWeight=2 PerfScore 14.00
-G_M37813_IG06: ; bbWeight=2, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref
- str r1, [r2+0x08]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M37813_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r2]
- cmp r3, 0
- beq SHORT G_M37813_IG10
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M37813_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movs r3, 0
- str r3, [r5-0x08]
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M37813_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M37813_IG10: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+ bne SHORT G_M37813_IG06 movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -77,19 +51,29 @@ G_M37813_IG10: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
ldr r1, [r3+0x04]
cmp r2, r1
bhs SHORT G_M37813_IG11- ldr r2, [r5-0x08]
- str r2, [r3+0x08]
- b SHORT G_M37813_IG12
- ;; size=26 bbWeight=4 PerfScore 40.00
-G_M37813_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ adds r3, 8 ; gcrRegs -[r3]- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- bkpt
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M37813_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ; byrRegs +[r3]
+ ;; size=26 bbWeight=4 PerfScore 44.00
+G_M37813_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ str r2, [r3]
+ b SHORT G_M37813_IG08
+ ;; size=4 bbWeight=4 PerfScore 8.00
+G_M37813_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r3]
+ movs r3, 0
+ str r3, [r5-0x08]
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M37813_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r2,r3,r4,r5,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M37813_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, gcvars, byref
+ ; byrRegs +[r3]
+ ldr r2, [r5-0x08]
+ str r2, [r3]
+ ;; size=6 bbWeight=4 PerfScore 8.00
+G_M37813_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r3] adds r4, r4, 1
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -99,26 +83,26 @@ G_M37813_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r0, r4
bgt SHORT G_M37813_IG04
;; size=18 bbWeight=4 PerfScore 28.00-G_M37813_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M37813_IG09+G_M37813_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M37813_IG07 ;; size=2 bbWeight=0.50 PerfScore 0.50-G_M37813_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M37813_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
bkpt
;; size=12 bbWeight=0 PerfScore 0.00-G_M37813_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc+G_M37813_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc push {r2,r3,r4,r5,r11,lr}
add r3, r11, 8
str r3, [sp+0x04]
;; size=10 bbWeight=0 PerfScore 0.00-G_M37813_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc+G_M37813_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc pop {r2,r3,r4,r5,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 162, prolog size 12, PerfScore 118.50, instruction count 59, allocated bytes for code 162 (MethodHash=996e6c4a) for method Program:M49() (Tier0-FullOpts)+; Total bytes of code 130, prolog size 12, PerfScore 102.50, instruction count 47, allocated bytes for code 130 (MethodHash=996e6c4a) for method Program:M49() (Tier0-FullOpts) ; ============================================================
Unwind Info:
@@ -130,7 +114,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)+ Function Length : 58 (0x0003a) Actual length = 116 (0x000074) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -161,4 +145,4 @@ Unwind Info:
*************** EH table for Program:M49()
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M37813_IG10..G_M37813_IG12) handled by [G_M37813_IG15..END) (fault)+EH#0: try [G_M37813_IG08..G_M37813_IG09) handled by [G_M37813_IG12..END) (fault)
@@ -8,29 +8,28 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 loc0 [V00,T08] ( 2, 0 ) ref -> [sp+0x00] class-hnd exact EH-live single-def <<unknown class>>+; V00 loc0 [V00,T07] ( 2, 0 ) ref -> [sp+0x00] class-hnd exact EH-live single-def <<unknown class>> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) float -> zero-ref "bubbling QMark2"
; V03 tmp2 [V03,T00] ( 4, 38 ) ref -> r1 "CASTCLASS eval op1"-; V04 tmp3 [V04,T02] ( 3, 10 ) int -> r3 "fgMakeTemp is creating a new local variable"+; V04 tmp3 [V04,T01] ( 3, 10 ) int -> r3 "fgMakeTemp is creating a new local variable" ;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <double[]>
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>-; V07 tmp6 [V07,T09] ( 2, 0 ) float -> [sp+0x04] spill-single-def "bubbling QMark2"
-; V08 tmp7 [V08,T06] ( 3, 0 ) ref -> r5 single-def "CASTCLASS eval op1"
-; V09 tmp8 [V09,T07] ( 3, 0 ) int -> r3 "fgMakeTemp is creating a new local variable"
-; V10 tmp9 [V10,T05] ( 5, 0 ) ref -> r0 class-hnd "spilling QMark2" <double[]>
-; V11 PSPSym [V11,T04] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
-; V12 cse0 [V12,T01] ( 5, 24 ) ref -> r5 multi-def "CSE - aggressive"
-; V13 cse1 [V13,T03] ( 5, 4 ) int -> r4 multi-def "CSE - aggressive"+; V07 tmp6 [V07,T08] ( 2, 0 ) float -> [sp+0x04] spill-single-def "bubbling QMark2"
+; V08 tmp7 [V08,T05] ( 3, 0 ) ref -> r1 single-def "CASTCLASS eval op1"
+; V09 tmp8 [V09,T06] ( 3, 0 ) int -> r2 "fgMakeTemp is creating a new local variable"
+; V10 tmp9 [V10,T04] ( 5, 0 ) ref -> r0 class-hnd "spilling QMark2" <double[]>
+; V11 PSPSym [V11,T03] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"
+; V12 cse0 [V12,T02] ( 5, 4 ) int -> r4 multi-def "CSE - aggressive" ;-; Lcl frame size = 16+; Lcl frame size = 12
G_M52695_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push {r4,r5,r11,lr}
- sub sp, 16
- add r11, sp, 24
- add r0, sp, 32
- str r0, [sp+0x0C] // [V11 PSPSym]+ push {r4,r11,lr}
+ sub sp, 12
+ add r11, sp, 16
+ add r0, sp, 24
+ str r0, [sp+0x08] // [V11 PSPSym] ;; size=14 bbWeight=1 PerfScore 5.00
G_M52695_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r4, 0xd1ff
@@ -45,7 +44,7 @@ G_M52695_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str r0, [sp] // [V00 loc0]
; GC ptr vars +{V00}
;; size=24 bbWeight=1 PerfScore 8.00-G_M52695_IG03: ; bbWeight=8, gcVars=00000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M52695_IG03: ; bbWeight=8, gcVars=00000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0]
movs r0, 3
movs r1, 2
@@ -53,20 +52,18 @@ G_M52695_IG03: ; bbWeight=8, gcVars=00000100 {V00}, gcrefRegs=0000 {}, by
bhs SHORT G_M52695_IG06
movw r0, 0xd1ff
movt r0, 0xd1ff- ldr r5, [r0]
- ; gcrRegs +[r5]
- mov r1, r5+ ldr r1, [r0] ; gcrRegs +[r1]
cmp r1, 0- beq SHORT G_M52695_IG07
- ;; size=24 bbWeight=8 PerfScore 80.00
-G_M52695_IG04: ; bbWeight=2, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz+ beq SHORT G_M52695_IG03
+ ;; size=22 bbWeight=8 PerfScore 72.00
+G_M52695_IG04: ; bbWeight=2, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz ldr r0, [r1]
add r3, r4, 536
cmp r0, r3
beq SHORT G_M52695_IG07
;; size=10 bbWeight=2 PerfScore 8.00-G_M52695_IG05: ; bbWeight=1, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz+G_M52695_IG05: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz mov r0, r3
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -76,76 +73,68 @@ G_M52695_IG05: ; bbWeight=1, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, b
b SHORT G_M52695_IG07
;; size=14 bbWeight=1 PerfScore 5.00
G_M52695_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- ; gcrRegs -[r0 r5]+ ; gcrRegs -[r0] movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M52695_IG07: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5]
- cmp r5, 0
- beq SHORT G_M52695_IG03
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M52695_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[r5]+G_M52695_IG07: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc ; GC ptr vars -{V00}- add sp, 16
- pop {r4,r5,r11,pc}+ add sp, 12
+ pop {r4,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00-G_M52695_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- push {r2,r3,r4,r5,r11,lr}+G_M52695_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ push {r3,r4,r11,lr} add r3, r11, 8- str r3, [sp+0x04]+ str r3, [sp] ;; size=10 bbWeight=0 PerfScore 0.00-G_M52695_IG10: ; bbWeight=0, gcVars=00000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00 V08}
- ldr r0, [r11-0x18] // [V00 loc0]+G_M52695_IG09: ; bbWeight=0, gcVars=00000080 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V00 V07}
+ ldr r0, [r11-0x10] // [V00 loc0] ; gcrRegs +[r0]
vldr s0, [r0+0x08]- vstr s0, [r11-0x14] // [V07 tmp6]+ vstr s0, [r11-0x0C] // [V07 tmp6] movw r0, 0xd1ff
; gcrRegs -[r0]
movt r0, 0xd1ff- ldr r5, [r0]
- ; gcrRegs +[r5]
- mov r0, r5+ ldr r1, [r0]
+ ; gcrRegs +[r1]
+ mov r0, r1 ; gcrRegs +[r0]
cmp r0, 0- beq SHORT G_M52695_IG11
- ldr r1, [r0]+ beq SHORT G_M52695_IG10
+ ldr r3, [r0] movw r4, 0xd1ff
movt r4, 0xd1ff- add r3, r4, 536
- cmp r1, r3
- beq SHORT G_M52695_IG11
- mov r0, r3+ add r2, r4, 536
+ cmp r3, r2
+ beq SHORT G_M52695_IG10
+ mov r0, r2 ; gcrRegs -[r0]- mov r1, r5
- ; gcrRegs +[r1] movw r3, 0xd1ff
movt r3, 0xd1ff- ; GC ptr vars -{V00 V08}+ ; GC ptr vars -{V00 V07} blx r3 // CORINFO_HELP_CHKCASTARRAY- ; gcrRegs -[r1 r5] +[r0]+ ; gcrRegs -[r1] +[r0] ; gcr arg pop 0- ;; size=60 bbWeight=0 PerfScore 0.00
-G_M52695_IG11: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
- vldr s0, [r11-0x14] // [V07 tmp6]+ ;; size=58 bbWeight=0 PerfScore 0.00
+G_M52695_IG10: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ vldr s0, [r11-0x0C] // [V07 tmp6] movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Test.BB:Method1(float,double[])
; gcrRegs -[r0]
; gcr arg pop 0- movw r0, LOW ADDRESS G_M52695_IG08
- movt r0, HIGH ADDRESS G_M52695_IG08+ movw r0, LOW ADDRESS G_M52695_IG07
+ movt r0, HIGH ADDRESS G_M52695_IG07 ;; size=24 bbWeight=0 PerfScore 0.00-G_M52695_IG12: ; bbWeight=0, funclet epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}+G_M52695_IG11: ; bbWeight=0, funclet epilog, nogc, extend
+ pop {r3,r4,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 14, PerfScore 124.00, instruction count 70, allocated bytes for code 204 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts)+; Total bytes of code 196, prolog size 14, PerfScore 100.00, instruction count 66, allocated bytes for code 196 (MethodHash=459c3228) for method Test.BB:TestEntryPoint() (FullOpts) ; ============================================================
Unwind Info:
@@ -157,12 +146,12 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 53 (0x00035) Actual length = 106 (0x00006a)+ Function Length : 50 (0x00032) Actual length = 100 (0x000064) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----- 04 add sp, sp, #16 ; opsize 16
- A8 30 pop {r4,r5,r11,lr} ; opsize 32+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32 FF end
Unwind Info:
@@ -174,14 +163,14 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 49 (0x00031) Actual length = 98 (0x000062)+ Function Length : 48 (0x00030) Actual length = 96 (0x000060) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32+ A8 18 pop {r3,r4,r11,lr} ; opsize 32 FF end
FF end
*************** EH table for Test.BB:TestEntryPoint()
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M52695_IG03..G_M52695_IG08) handled by [G_M52695_IG09..END) (class: 1000008)+EH#0: try [G_M52695_IG03..G_M52695_IG07) handled by [G_M52695_IG08..END) (class: 1000008)
@@ -8,12 +8,12 @@
; 6 inlinees with PGO data; 14 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T57] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T00] ( 27, 93 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode>+; V00 this [V00,T58] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T00] ( 26, 91 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V03 loc2 [V03,T32] ( 3, 12 ) ubyte -> r0
; V04 loc3 [V04,T26] ( 4, 12 ) ubyte -> r0 -;* V05 loc4 [V05,T63] ( 0, 0 ) ubyte -> zero-ref +;* V05 loc4 [V05,T64] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V07 loc6 [V07,T12] ( 3, 24 ) int -> r6
; V08 loc7 [V08,T01] ( 7, 76 ) int -> r5
@@ -25,7 +25,7 @@
;* V14 tmp4 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T34] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V16 tmp6 [V16,T41] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V17 tmp7 [V17,T58] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V17 tmp7 [V17,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V18 tmp8 [V18,T16] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V19 tmp9 [V19,T39] ( 4, 10 ) int -> r6 "Inline return value spill temp"
; V20 tmp10 [V20,T52] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
@@ -34,7 +34,7 @@
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V24 tmp14 [V24,T35] ( 4, 11 ) ref -> r7 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V25 tmp15 [V25,T42] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V26 tmp16 [V26,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V26 tmp16 [V26,T60] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V27 tmp17 [V27,T17] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V28 tmp18 [V28,T14] ( 4, 20 ) int -> r6 "Inlining Arg"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
@@ -42,10 +42,10 @@
; V31 tmp21 [V31,T46] ( 4, 8 ) int -> r7 "Inline return value spill temp"
; V32 tmp22 [V32,T53] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V33 tmp23 [V33,T21] ( 4, 16 ) ref -> r6 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>-; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r1 "CASTCLASS eval op1"
-; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r1 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>+; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r0 "CASTCLASS eval op1"
+; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r0 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V36 tmp26 [V36,T43] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V37 tmp27 [V37,T60] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable"+; V37 tmp27 [V37,T61] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable" ; V38 tmp28 [V38,T10] ( 8, 27 ) ref -> r4 class-hnd "spilling QMark2" <<unknown class>>
; V39 tmp29 [V39,T33] ( 3, 12 ) int -> r7 "Inlining Arg"
; V40 tmp30 [V40,T40] ( 4, 10 ) int -> r6 "Inline return value spill temp"
@@ -62,7 +62,7 @@
;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V52 tmp42 [V52,T36] ( 4, 11 ) ref -> r3 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V53 tmp43 [V53,T44] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V54 tmp44 [V54,T61] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V54 tmp44 [V54,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V55 tmp45 [V55,T18] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
;* V56 tmp46 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V57 tmp47 [V57,T49] ( 3, 8 ) ref -> r4 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
@@ -70,7 +70,7 @@
;* V59 tmp49 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V60 tmp50 [V60,T37] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V61 tmp51 [V61,T45] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V62 tmp52 [V62,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V62 tmp52 [V62,T63] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V63 tmp53 [V63,T19] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V64 tmp54 [V64,T28] ( 3, 12 ) ref -> r1 "arr expr"
; V65 tmp55 [V65,T29] ( 3, 12 ) ref -> r0 "arr expr"
@@ -81,7 +81,8 @@
; V70 cse1 [V70,T07] ( 3, 40 ) ref -> r1 "CSE - aggressive"
; V71 cse2 [V71,T55] ( 3, 6 ) ref -> r0 "CSE - conservative"
; V72 cse3 [V72,T56] ( 3, 6 ) ref -> r1 "CSE - conservative"-; V73 rat0 [V73,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable"+; V73 cse4 [V73,T57] ( 3, 6 ) ref -> r1 "CSE - conservative"
+; V74 rat0 [V74,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable" ;
; Lcl frame size = 0
@@ -109,7 +110,7 @@ G_M35244_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r4]
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50-G_M35244_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M35244_IG05: ; bbWeight=4, gcVars=000000000000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4]
ldrb r0, [r4+0x1E]
subs r3, r0, 3
@@ -397,20 +398,26 @@ G_M35244_IG30: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- ldr r1, [r4+0x04]+ ldr r2, [r4+0x04]
+ ; gcrRegs +[r2]
+ mov r1, r2 ; gcrRegs +[r1]- cmp r1, 0+ mov r0, r1
+ ; gcrRegs +[r0]
+ cmp r0, 0 beq SHORT G_M35244_IG33- ;; size=56 bbWeight=2 PerfScore 40.00
-G_M35244_IG31: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0+ ;; size=60 bbWeight=2 PerfScore 44.00
+G_M35244_IG31: ; bbWeight=1, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2]
+ ldr r0, [r0]
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3 bne SHORT G_M35244_IG33
;; size=14 bbWeight=1 PerfScore 5.00
G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz+ ; gcrRegs -[r1] adds r0, r4, 4
; byrRegs +[r0]
mov r1, r6
@@ -422,14 +429,13 @@ G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
; byrRegs -[r0]
b SHORT G_M35244_IG37
;; size=16 bbWeight=2 PerfScore 12.00-G_M35244_IG33: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4 r6]
- ldr r1, [r4+0x04]
- ; gcrRegs +[r1]+G_M35244_IG33: ; bbWeight=2, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1 r6] mov r4, r1+ ; gcrRegs +[r4] cmp r4, 0
beq SHORT G_M35244_IG36- ;; size=8 bbWeight=2 PerfScore 8.00+ ;; size=6 bbWeight=2 PerfScore 6.00 G_M35244_IG34: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4]
movw r3, 0xd1ff
@@ -748,7 +754,7 @@ G_M35244_IG68: ; bbWeight=0.50, epilog, nogc, extend
bx r3 // <unknown method>
; gcr arg pop 0
;; size=6 bbWeight=0.50 PerfScore 1.00-G_M35244_IG69: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M35244_IG69: ; bbWeight=0, gcVars=000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0 r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -776,7 +782,7 @@ RWD00 dd G_M35244_IG38
dd G_M35244_IG38
-; Total bytes of code 938, prolog size 10, PerfScore 1002.00, instruction count 372, allocated bytes for code 938 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)+; Total bytes of code 940, prolog size 10, PerfScore 1004.00, instruction count 373, allocated bytes for code 940 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts) ; ============================================================
Unwind Info:
@@ -788,7 +794,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 469 (0x001d5) Actual length = 938 (0x0003aa)+ Function Length : 470 (0x001d6) Actual length = 940 (0x0003ac) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,16 +9,16 @@
; Final local variable assignments
;
; V00 this [V00,T13] ( 5,131 ) ref -> r5 this class-hnd single-def <ILCompiler.PEWriter.SectionBuilder>-; V01 arg1 [V01,T38] ( 3, 3 ) ref -> r4 class-hnd single-def <System.Reflection.Metadata.BlobBuilder>+; V01 arg1 [V01,T39] ( 3, 3 ) ref -> r4 class-hnd single-def <System.Reflection.Metadata.BlobBuilder> ; V02 arg2 [V02 ] ( 4, 4 ) long -> [sp+0x30] single-def-; V03 arg3 [V03,T44] ( 1, 1 ) ref -> [sp+0x60] class-hnd single-def <System.IO.Stream>+; V03 arg3 [V03,T45] ( 1, 1 ) ref -> [sp+0x60] class-hnd single-def <System.IO.Stream> ; V04 loc0 [V04,T07] ( 5,194 ) ref -> r6 class-hnd exact single-def <ILCompiler.PEWriter.RelocationHelper>-; V05 loc1 [V05,T32] ( 7, 22 ) ref -> [sp+0x14] class-hnd EH-live spill-single-def <<unknown class>>
-; V06 loc2 [V06,T22] ( 5, 80 ) ref -> [sp+0x10] class-hnd spill-single-def <<unknown class>>+; V05 loc1 [V05,T33] ( 7, 22 ) ref -> [sp+0x14] class-hnd EH-live spill-single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 5, 80 ) ref -> r4 class-hnd <<unknown class>> ; V07 loc3 [V07,T26] ( 2, 68 ) int -> [sp+0x2C] spill-single-def
;* V08 loc4 [V08 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[ILCompiler.PEWriter.PlacedObjectData]>
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <ILCompiler.PEWriter.PlacedObjectData>-; V10 loc6 [V10,T23] ( 3, 80 ) ref -> [sp+0x0C] class-hnd exact spill-single-def <ILCompiler.DependencyAnalysis.Relocation[]>+; V10 loc6 [V10,T22] ( 3, 80 ) ref -> [sp+0x10] class-hnd exact spill-single-def <ILCompiler.DependencyAnalysis.Relocation[]> ; V11 loc7 [V11,T05] ( 5,264 ) int -> [sp+0x28]
;* V12 loc8 [V12 ] ( 0, 0 ) struct (12) zero-ref <ILCompiler.DependencyAnalysis.Relocation>
; V13 loc9 [V13,T09] ( 3,192 ) int -> r7
@@ -28,19 +28,19 @@
; V17 loc13 [V17,T12] ( 3,160 ) int -> lr
; V18 loc14 [V18,T15] ( 2,128 ) int -> r0
; V19 OutArgs [V19 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V20 tmp1 [V20,T35] ( 3, 6 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <ILCompiler.PEWriter.RelocationHelper>
-; V21 tmp2 [V21,T42] ( 2, 4 ) ref -> r7 class-hnd single-def "dup spill" <<unknown class>>
-; V22 tmp3 [V22,T36] ( 3, 6 ) ref -> r4 class-hnd single-def "impAppendStmt" <<unknown class>>+; V20 tmp1 [V20,T36] ( 3, 6 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <ILCompiler.PEWriter.RelocationHelper>
+; V21 tmp2 [V21,T43] ( 2, 4 ) ref -> r7 class-hnd single-def "dup spill" <<unknown class>>
+; V22 tmp3 [V22,T37] ( 3, 6 ) ref -> r4 class-hnd single-def "impAppendStmt" <<unknown class>> ;* V23 tmp4 [V23 ] ( 0, 0 ) ref -> zero-ref single-def-; V24 tmp5 [V24,T41] ( 5, 4.50) ref -> r7
-; V25 tmp6 [V25,T37] ( 5, 5 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V26 tmp7 [V26,T43] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V27 tmp8 [V27,T33] ( 7, 14 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>+; V24 tmp5 [V24,T42] ( 5, 4.50) ref -> r7
+; V25 tmp6 [V25,T38] ( 5, 5 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp7 [V26,T44] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V27 tmp8 [V27,T34] ( 7, 14 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref
;* V29 tmp10 [V29 ] ( 0, 0 ) ref -> zero-ref
;* V30 tmp11 [V30 ] ( 0, 0 ) ref -> zero-ref
;* V31 tmp12 [V31 ] ( 0, 0 ) ref -> zero-ref -; V32 tmp13 [V32,T31] ( 3, 24 ) ref -> r9 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]>+; V32 tmp13 [V32,T32] ( 3, 24 ) ref -> r9 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]> ;* V33 tmp14 [V33 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.PEWriter.PlacedObjectData]>
;* V34 tmp15 [V34 ] ( 0, 0 ) struct (12) zero-ref "Inline return value spill temp" <ILCompiler.PEWriter.SymbolTarget>
; V35 tmp16 [V35,T01] ( 3,384 ) ref -> r0 class-hnd "Inlining Arg" <<unknown class>>
@@ -49,40 +49,41 @@
;* V38 tmp19 [V38 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <ILCompiler.PEWriter.SymbolTarget>
;* V39 tmp20 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V40 tmp21 [V40,T02] ( 3,384 ) ref -> r0 class-hnd "Inlining Arg" <<unknown class>>-;* V41 tmp22 [V41,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V41 tmp22 [V41,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V42 tmp23 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]>
;* V43 tmp24 [V43 ] ( 0, 0 ) ref -> zero-ref "field V09.Data (fldOffset=0x0)" P-INDEP-; V44 tmp25 [V44,T25] ( 2, 72 ) int -> [sp+0x24] spill-single-def "field V09.Offset (fldOffset=0x4)" P-INDEP
-; V45 tmp26 [V45,T14] ( 3,128 ) ref -> [sp+0x08] spill-single-def "field V12.Target (fldOffset=0x0)" P-INDEP
-; V46 tmp27 [V46,T10] ( 3,192 ) int -> r8 "field V12.RelocType (fldOffset=0x4)" P-INDEP+; V44 tmp25 [V44,T24] ( 2, 72 ) int -> [sp+0x24] spill-single-def "field V09.Offset (fldOffset=0x4)" P-INDEP
+; V45 tmp26 [V45,T14] ( 3,128 ) ref -> [sp+0x0C] spill-single-def "field V12.Target (fldOffset=0x0)" P-INDEP
+; V46 tmp27 [V46,T10] ( 3,192 ) int -> r9 "field V12.RelocType (fldOffset=0x4)" P-INDEP ; V47 tmp28 [V47,T16] ( 2,128 ) int -> r7 "field V12.Offset (fldOffset=0x8)" P-INDEP
;* V48 tmp29 [V48 ] ( 0, 0 ) int -> zero-ref "field V15.SectionIndex (fldOffset=0x0)" P-INDEP
;* V49 tmp30 [V49 ] ( 0, 0 ) int -> zero-ref "field V15.Offset (fldOffset=0x4)" P-INDEP
;* V50 tmp31 [V50 ] ( 0, 0 ) int -> zero-ref "field V15.Size (fldOffset=0x8)" P-INDEP
; V51 tmp32 [V51,T06] ( 4,256 ) int -> r1 "field V34.SectionIndex (fldOffset=0x0)" P-INDEP
; V52 tmp33 [V52,T11] ( 3,192 ) int -> r2 "field V34.Offset (fldOffset=0x4)" P-INDEP-; V53 tmp34 [V53,T21] ( 2, 96 ) int -> r3 "field V34.Size (fldOffset=0x8)" P-INDEP+; V53 tmp34 [V53,T20] ( 2, 96 ) int -> r3 "field V34.Size (fldOffset=0x8)" P-INDEP ;* V54 tmp35 [V54 ] ( 0, 0 ) int -> zero-ref "field V38.SectionIndex (fldOffset=0x0)" P-INDEP
;* V55 tmp36 [V55 ] ( 0, 0 ) int -> zero-ref "field V38.Offset (fldOffset=0x4)" P-INDEP
;* V56 tmp37 [V56 ] ( 0, 0 ) int -> zero-ref "field V38.Size (fldOffset=0x8)" P-INDEP-; V57 tmp38 [V57,T18] ( 5, 84 ) ref -> r9 "V08.[000..004)"+; V57 tmp38 [V57,T25] ( 4, 68 ) ref -> [sp+0x08] spill-single-def "V08.[000..004)" ; V58 tmp39 [V58,T17] ( 6, 84 ) int -> [sp+0x20] "V08.[004..008)"-; V59 tmp40 [V59,T27] ( 3, 52 ) int -> [sp+0x1C] spill-single-def "V08.[008..012)"+; V59 tmp40 [V59,T30] ( 2, 36 ) int -> [sp+0x1C] spill-single-def "V08.[008..012)" ; V60 tmp41 [V60,T28] ( 2, 24 ) ref -> r0 "V08.[012..016)"
; V61 tmp42 [V61,T29] ( 2, 24 ) int -> lr "V08.[016..020)"
;* V62 tmp43 [V62 ] ( 0, 0 ) ref -> zero-ref "V33.[000..004)"
;* V63 tmp44 [V63 ] ( 0, 0 ) int -> zero-ref "V33.[004..008)"-; V64 tmp45 [V64,T34] ( 2, 8 ) int -> r3 "V33.[008..012)"+; V64 tmp45 [V64,T35] ( 2, 8 ) int -> r3 "V33.[008..012)" ;* V65 tmp46 [V65 ] ( 0, 0 ) ref -> zero-ref "V33.[012..016)"
;* V66 tmp47 [V66 ] ( 0, 0 ) int -> zero-ref "V33.[016..020)"-; V67 tmp48 [V67,T19] ( 3, 96 ) byref -> r1 "Spilling address for field-by-field copy"
-; V68 tmp49 [V68,T20] ( 3, 96 ) ref -> r1 "arr expr"+; V67 tmp48 [V67,T18] ( 3, 96 ) byref -> r1 "Spilling address for field-by-field copy"
+; V68 tmp49 [V68,T19] ( 3, 96 ) ref -> r1 "arr expr" ; V69 tmp50 [V69,T00] ( 4,512 ) byref -> r7 "BlockOp address local"
; V70 tmp51 [V70,T03] ( 3,384 ) ref -> r0 "arr expr"-; V71 PSPSym [V71,T45] ( 1, 1 ) int -> [sp+0x38] do-not-enreg[V] "PSPSym"
-; V72 cse0 [V72,T24] ( 3, 80 ) int -> [sp+0x18] spill-single-def "CSE - moderate"
-; V73 rat0 [V73,T39] ( 3, 3 ) int -> [sp+0x30] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP
-; V74 rat1 [V74,T40] ( 3, 3 ) int -> [sp+0x34] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP+; V71 PSPSym [V71,T46] ( 1, 1 ) int -> [sp+0x38] do-not-enreg[V] "PSPSym"
+; V72 cse0 [V72,T27] ( 2, 32 ) int -> r1 "CSE - conservative"
+; V73 cse1 [V73,T23] ( 3, 80 ) int -> [sp+0x18] spill-single-def "CSE - moderate"
+; V74 rat0 [V74,T40] ( 3, 3 ) int -> [sp+0x30] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP
+; V75 rat1 [V75,T41] ( 3, 3 ) int -> [sp+0x34] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP ;
; Lcl frame size = 60
@@ -114,8 +115,8 @@ G_M14932_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
mov r0, r6
ldr r1, [sp+0x60] // [V03 arg3]
; gcrRegs +[r1]- ldr r2, [sp+0x30] // [V73 rat0]
- ldr r3, [sp+0x34] // [V74 rat1]+ ldr r2, [sp+0x30] // [V74 rat0]
+ ldr r3, [sp+0x34] // [V75 rat1] movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
@@ -147,7 +148,7 @@ G_M14932_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
ldr r1, [r1]
; gcrRegs +[r1]
cmp r1, 0- beq G_M14932_IG23+ beq G_M14932_IG22 adds r0, r7, 4
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -189,9 +190,9 @@ G_M14932_IG04: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
; gcrRegs -[r1]
; byrRegs -[r0]
cmp r4, 0- beq G_M14932_IG24+ beq G_M14932_IG23 cmp r7, 0- beq G_M14932_IG25+ beq G_M14932_IG24 movs r1, 0
str r1, [r2+0x08]
add r0, r2, 12
@@ -229,7 +230,7 @@ G_M14932_IG04: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
str r7, [sp+0x14] // [V05 loc1]
; GC ptr vars +{V05}
;; size=112 bbWeight=1 PerfScore 38.00-G_M14932_IG05: ; bbWeight=1, gcVars=0000000100000000 {V05}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz+G_M14932_IG05: ; bbWeight=1, gcVars=0000000200000000 {V05}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0]
mov r0, r7
; gcrRegs +[r0]
@@ -240,7 +241,7 @@ G_M14932_IG05: ; bbWeight=1, gcVars=0000000100000000 {V05}, gcrefRegs=00E
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0- beq G_M14932_IG21+ beq G_M14932_IG20 ;; size=20 bbWeight=1 PerfScore 7.00
G_M14932_IG06: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r7
@@ -253,8 +254,6 @@ G_M14932_IG06: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
; gcr arg pop 0
mov r4, r0
; gcrRegs +[r4]- str r4, [sp+0x10] // [V06 loc2]
- ; GC ptr vars +{V06} ldr r1, [r4+0x20]
ldr r0, [r4+0x1C]
; gcrRegs -[r0]
@@ -263,27 +262,29 @@ G_M14932_IG06: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
ldr r9, [r4+0x0C]
; gcrRegs +[r9]
ldr r3, [r9+0x0C]+ str r9, [sp+0x08] // [V57 tmp38]
+ ; GC ptr vars +{V57} movs r2, 0
str r3, [sp+0x1C] // [V59 tmp40]
ldr r7, [sp+0x14] // [V05 loc1]
; gcrRegs +[r7]
b SHORT G_M14932_IG12- ;; size=46 bbWeight=4 PerfScore 68.00
-G_M14932_IG07: ; bbWeight=8, gcVars=0000000100400000 {V05 V06}, gcrefRegs=02F1 {r0 r4 r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r0]+ ;; size=48 bbWeight=4 PerfScore 68.00
+G_M14932_IG07: ; bbWeight=8, gcVars=0000000202000000 {V05 V57}, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r9] +[r0] str lr, [sp+0x24] // [V44 tmp25]
ldr r12, [r0+0x04]
; gcrRegs +[r12]- str r12, [sp+0x0C] // [V10 loc6]+ str r12, [sp+0x10] // [V10 loc6] ; GC ptr vars +{V10}
movs r0, 0
; gcrRegs -[r0]
ldr r1, [r12+0x04]- str r1, [sp+0x18] // [V72 cse0]+ str r1, [sp+0x18] // [V73 cse1] cmp r1, 0
ble SHORT G_M14932_IG14
;; size=24 bbWeight=8 PerfScore 64.00-G_M14932_IG08: ; bbWeight=64, gcVars=0000000100C00000 {V05 V06 V10}, gcrefRegs=1270 {r4 r5 r6 r9 r12}, byrefRegs=0000 {}, gcvars, byref, isz+G_M14932_IG08: ; bbWeight=64, gcVars=0000000202400000 {V05 V10 V57}, gcrefRegs=1070 {r4 r5 r6 r12}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r7]
movs r7, 12
str r0, [sp+0x28] // [V11 loc7]
@@ -293,20 +294,18 @@ G_M14932_IG08: ; bbWeight=64, gcVars=0000000100C00000 {V05 V06 V10}, gcre
; byrRegs +[r7]
ldr r3, [r7]
; gcrRegs +[r3]- str r3, [sp+0x08] // [V45 tmp26]+ str r3, [sp+0x0C] // [V45 tmp26] ; GC ptr vars +{V45}- ldr r8, [r7+0x04]+ ldr r9, [r7+0x04] ldr r7, [r7+0x08]
; byrRegs -[r7]- ldr lr, [r4+0x1C]
- ldr r4, [sp+0x24] // [V44 tmp25]
- ; gcrRegs -[r4]
- add lr, r4
- add r7, lr
- ldr lr, [sp+0x2C] // [V07 loc3]
- add lr, r7
- ldr r4, [r6+0x28]
- sub r1, lr, r4+ ldr r8, [r4+0x1C]
+ add r8, lr
+ add r7, r8
+ ldr r8, [sp+0x2C] // [V07 loc3]
+ add r8, r7
+ ldr lr, [r6+0x28]
+ sub r1, r8, lr mov r0, r6
; gcrRegs +[r0]
movw lr, 0xd1ff
@@ -318,7 +317,7 @@ G_M14932_IG08: ; bbWeight=64, gcVars=0000000100C00000 {V05 V06 V10}, gcre
ldr r0, [r5+0x08]
; gcrRegs +[r0]
ldrsb r1, [r0]- ldr r1, [sp+0x08] // [V45 tmp26]+ ldr r1, [sp+0x0C] // [V45 tmp26] ; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -354,18 +353,18 @@ G_M14932_IG08: ; bbWeight=64, gcVars=0000000100C00000 {V05 V06 V10}, gcre
ldr r0, [r0+0x20]
; gcrRegs -[r0]
adds r0, r0, r2- cmp r8, 0x1000+ cmp r9, 0x1000 bne SHORT G_M14932_IG10- ;; size=132 bbWeight=64 PerfScore 3264.00
-G_M14932_IG09: ; bbWeight=32, gcVars=0000000100C00000 {V05 V06 V10}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref+ ;; size=132 bbWeight=64 PerfScore 3200.00...
@@ -9,16 +9,16 @@
; Final local variable assignments
;
; V00 this [V00,T13] ( 5,131 ) ref -> r5 this class-hnd single-def <ILCompiler.PEWriter.SectionBuilder>-; V01 arg1 [V01,T38] ( 3, 3 ) ref -> r4 class-hnd single-def <System.Reflection.Metadata.BlobBuilder>+; V01 arg1 [V01,T39] ( 3, 3 ) ref -> r4 class-hnd single-def <System.Reflection.Metadata.BlobBuilder> ; V02 arg2 [V02 ] ( 4, 4 ) long -> [sp+0x30] single-def-; V03 arg3 [V03,T44] ( 1, 1 ) ref -> [sp+0x60] class-hnd single-def <System.IO.Stream>+; V03 arg3 [V03,T45] ( 1, 1 ) ref -> [sp+0x60] class-hnd single-def <System.IO.Stream> ; V04 loc0 [V04,T07] ( 5,194 ) ref -> r6 class-hnd exact single-def <ILCompiler.PEWriter.RelocationHelper>-; V05 loc1 [V05,T32] ( 7, 22 ) ref -> [sp+0x14] class-hnd EH-live spill-single-def <<unknown class>>
-; V06 loc2 [V06,T22] ( 5, 80 ) ref -> [sp+0x10] class-hnd spill-single-def <<unknown class>>+; V05 loc1 [V05,T33] ( 7, 22 ) ref -> [sp+0x14] class-hnd EH-live spill-single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 5, 80 ) ref -> r4 class-hnd <<unknown class>> ; V07 loc3 [V07,T26] ( 2, 68 ) int -> [sp+0x2C] spill-single-def
;* V08 loc4 [V08 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[ILCompiler.PEWriter.PlacedObjectData]>
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <ILCompiler.PEWriter.PlacedObjectData>-; V10 loc6 [V10,T23] ( 3, 80 ) ref -> [sp+0x0C] class-hnd exact spill-single-def <ILCompiler.DependencyAnalysis.Relocation[]>+; V10 loc6 [V10,T22] ( 3, 80 ) ref -> [sp+0x10] class-hnd exact spill-single-def <ILCompiler.DependencyAnalysis.Relocation[]> ; V11 loc7 [V11,T05] ( 5,264 ) int -> [sp+0x28]
;* V12 loc8 [V12 ] ( 0, 0 ) struct (12) zero-ref <ILCompiler.DependencyAnalysis.Relocation>
; V13 loc9 [V13,T09] ( 3,192 ) int -> r7
@@ -28,19 +28,19 @@
; V17 loc13 [V17,T12] ( 3,160 ) int -> lr
; V18 loc14 [V18,T15] ( 2,128 ) int -> r0
; V19 OutArgs [V19 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V20 tmp1 [V20,T35] ( 3, 6 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <ILCompiler.PEWriter.RelocationHelper>
-; V21 tmp2 [V21,T42] ( 2, 4 ) ref -> r7 class-hnd single-def "dup spill" <<unknown class>>
-; V22 tmp3 [V22,T36] ( 3, 6 ) ref -> r4 class-hnd single-def "impAppendStmt" <<unknown class>>+; V20 tmp1 [V20,T36] ( 3, 6 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <ILCompiler.PEWriter.RelocationHelper>
+; V21 tmp2 [V21,T43] ( 2, 4 ) ref -> r7 class-hnd single-def "dup spill" <<unknown class>>
+; V22 tmp3 [V22,T37] ( 3, 6 ) ref -> r4 class-hnd single-def "impAppendStmt" <<unknown class>> ;* V23 tmp4 [V23 ] ( 0, 0 ) ref -> zero-ref single-def-; V24 tmp5 [V24,T41] ( 5, 4.50) ref -> r7
-; V25 tmp6 [V25,T37] ( 5, 5 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V26 tmp7 [V26,T43] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V27 tmp8 [V27,T33] ( 7, 14 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>+; V24 tmp5 [V24,T42] ( 5, 4.50) ref -> r7
+; V25 tmp6 [V25,T38] ( 5, 5 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp7 [V26,T44] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V27 tmp8 [V27,T34] ( 7, 14 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref
;* V29 tmp10 [V29 ] ( 0, 0 ) ref -> zero-ref
;* V30 tmp11 [V30 ] ( 0, 0 ) ref -> zero-ref
;* V31 tmp12 [V31 ] ( 0, 0 ) ref -> zero-ref -; V32 tmp13 [V32,T31] ( 3, 24 ) ref -> r9 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]>+; V32 tmp13 [V32,T32] ( 3, 24 ) ref -> r9 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]> ;* V33 tmp14 [V33 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.PEWriter.PlacedObjectData]>
;* V34 tmp15 [V34 ] ( 0, 0 ) struct (12) zero-ref "Inline return value spill temp" <ILCompiler.PEWriter.SymbolTarget>
; V35 tmp16 [V35,T01] ( 3,384 ) ref -> r0 class-hnd "Inlining Arg" <<unknown class>>
@@ -49,40 +49,41 @@
;* V38 tmp19 [V38 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <ILCompiler.PEWriter.SymbolTarget>
;* V39 tmp20 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V40 tmp21 [V40,T02] ( 3,384 ) ref -> r0 class-hnd "Inlining Arg" <<unknown class>>-;* V41 tmp22 [V41,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V41 tmp22 [V41,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V42 tmp23 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]>
;* V43 tmp24 [V43 ] ( 0, 0 ) ref -> zero-ref "field V09.Data (fldOffset=0x0)" P-INDEP-; V44 tmp25 [V44,T25] ( 2, 72 ) int -> [sp+0x24] spill-single-def "field V09.Offset (fldOffset=0x4)" P-INDEP
-; V45 tmp26 [V45,T14] ( 3,128 ) ref -> [sp+0x08] spill-single-def "field V12.Target (fldOffset=0x0)" P-INDEP
-; V46 tmp27 [V46,T10] ( 3,192 ) int -> r8 "field V12.RelocType (fldOffset=0x4)" P-INDEP+; V44 tmp25 [V44,T24] ( 2, 72 ) int -> [sp+0x24] spill-single-def "field V09.Offset (fldOffset=0x4)" P-INDEP
+; V45 tmp26 [V45,T14] ( 3,128 ) ref -> [sp+0x0C] spill-single-def "field V12.Target (fldOffset=0x0)" P-INDEP
+; V46 tmp27 [V46,T10] ( 3,192 ) int -> r9 "field V12.RelocType (fldOffset=0x4)" P-INDEP ; V47 tmp28 [V47,T16] ( 2,128 ) int -> r7 "field V12.Offset (fldOffset=0x8)" P-INDEP
;* V48 tmp29 [V48 ] ( 0, 0 ) int -> zero-ref "field V15.SectionIndex (fldOffset=0x0)" P-INDEP
;* V49 tmp30 [V49 ] ( 0, 0 ) int -> zero-ref "field V15.Offset (fldOffset=0x4)" P-INDEP
;* V50 tmp31 [V50 ] ( 0, 0 ) int -> zero-ref "field V15.Size (fldOffset=0x8)" P-INDEP
; V51 tmp32 [V51,T06] ( 4,256 ) int -> r1 "field V34.SectionIndex (fldOffset=0x0)" P-INDEP
; V52 tmp33 [V52,T11] ( 3,192 ) int -> r2 "field V34.Offset (fldOffset=0x4)" P-INDEP-; V53 tmp34 [V53,T21] ( 2, 96 ) int -> r3 "field V34.Size (fldOffset=0x8)" P-INDEP+; V53 tmp34 [V53,T20] ( 2, 96 ) int -> r3 "field V34.Size (fldOffset=0x8)" P-INDEP ;* V54 tmp35 [V54 ] ( 0, 0 ) int -> zero-ref "field V38.SectionIndex (fldOffset=0x0)" P-INDEP
;* V55 tmp36 [V55 ] ( 0, 0 ) int -> zero-ref "field V38.Offset (fldOffset=0x4)" P-INDEP
;* V56 tmp37 [V56 ] ( 0, 0 ) int -> zero-ref "field V38.Size (fldOffset=0x8)" P-INDEP-; V57 tmp38 [V57,T18] ( 5, 84 ) ref -> r9 "V08.[000..004)"+; V57 tmp38 [V57,T25] ( 4, 68 ) ref -> [sp+0x08] spill-single-def "V08.[000..004)" ; V58 tmp39 [V58,T17] ( 6, 84 ) int -> [sp+0x20] "V08.[004..008)"-; V59 tmp40 [V59,T27] ( 3, 52 ) int -> [sp+0x1C] spill-single-def "V08.[008..012)"+; V59 tmp40 [V59,T30] ( 2, 36 ) int -> [sp+0x1C] spill-single-def "V08.[008..012)" ; V60 tmp41 [V60,T28] ( 2, 24 ) ref -> r0 "V08.[012..016)"
; V61 tmp42 [V61,T29] ( 2, 24 ) int -> lr "V08.[016..020)"
;* V62 tmp43 [V62 ] ( 0, 0 ) ref -> zero-ref "V33.[000..004)"
;* V63 tmp44 [V63 ] ( 0, 0 ) int -> zero-ref "V33.[004..008)"-; V64 tmp45 [V64,T34] ( 2, 8 ) int -> r3 "V33.[008..012)"+; V64 tmp45 [V64,T35] ( 2, 8 ) int -> r3 "V33.[008..012)" ;* V65 tmp46 [V65 ] ( 0, 0 ) ref -> zero-ref "V33.[012..016)"
;* V66 tmp47 [V66 ] ( 0, 0 ) int -> zero-ref "V33.[016..020)"-; V67 tmp48 [V67,T19] ( 3, 96 ) byref -> r1 "Spilling address for field-by-field copy"
-; V68 tmp49 [V68,T20] ( 3, 96 ) ref -> r1 "arr expr"+; V67 tmp48 [V67,T18] ( 3, 96 ) byref -> r1 "Spilling address for field-by-field copy"
+; V68 tmp49 [V68,T19] ( 3, 96 ) ref -> r1 "arr expr" ; V69 tmp50 [V69,T00] ( 4,512 ) byref -> r7 "BlockOp address local"
; V70 tmp51 [V70,T03] ( 3,384 ) ref -> r0 "arr expr"-; V71 PSPSym [V71,T45] ( 1, 1 ) int -> [sp+0x38] do-not-enreg[V] "PSPSym"
-; V72 cse0 [V72,T24] ( 3, 80 ) int -> [sp+0x18] spill-single-def "CSE - moderate"
-; V73 rat0 [V73,T39] ( 3, 3 ) int -> [sp+0x30] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP
-; V74 rat1 [V74,T40] ( 3, 3 ) int -> [sp+0x34] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP+; V71 PSPSym [V71,T46] ( 1, 1 ) int -> [sp+0x38] do-not-enreg[V] "PSPSym"
+; V72 cse0 [V72,T27] ( 2, 32 ) int -> r1 "CSE - conservative"
+; V73 cse1 [V73,T23] ( 3, 80 ) int -> [sp+0x18] spill-single-def "CSE - moderate"
+; V74 rat0 [V74,T40] ( 3, 3 ) int -> [sp+0x30] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP
+; V75 rat1 [V75,T41] ( 3, 3 ) int -> [sp+0x34] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP ;
; Lcl frame size = 60
@@ -114,8 +115,8 @@ G_M14932_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
mov r0, r6
ldr r1, [sp+0x60] // [V03 arg3]
; gcrRegs +[r1]- ldr r2, [sp+0x30] // [V73 rat0]
- ldr r3, [sp+0x34] // [V74 rat1]+ ldr r2, [sp+0x30] // [V74 rat0]
+ ldr r3, [sp+0x34] // [V75 rat1] movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
@@ -147,7 +148,7 @@ G_M14932_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
ldr r1, [r1]
; gcrRegs +[r1]
cmp r1, 0- beq G_M14932_IG23+ beq G_M14932_IG22 adds r0, r7, 4
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -189,9 +190,9 @@ G_M14932_IG04: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
; gcrRegs -[r1]
; byrRegs -[r0]
cmp r4, 0- beq G_M14932_IG24+ beq G_M14932_IG23 cmp r7, 0- beq G_M14932_IG25+ beq G_M14932_IG24 movs r1, 0
str r1, [r2+0x08]
add r0, r2, 12
@@ -229,7 +230,7 @@ G_M14932_IG04: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
str r7, [sp+0x14] // [V05 loc1]
; GC ptr vars +{V05}
;; size=112 bbWeight=1 PerfScore 38.00-G_M14932_IG05: ; bbWeight=1, gcVars=0000000100000000 {V05}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz+G_M14932_IG05: ; bbWeight=1, gcVars=0000000200000000 {V05}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0]
mov r0, r7
; gcrRegs +[r0]
@@ -240,7 +241,7 @@ G_M14932_IG05: ; bbWeight=1, gcVars=0000000100000000 {V05}, gcrefRegs=00E
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0- beq G_M14932_IG21+ beq G_M14932_IG20 ;; size=20 bbWeight=1 PerfScore 7.00
G_M14932_IG06: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r7
@@ -253,8 +254,6 @@ G_M14932_IG06: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
; gcr arg pop 0
mov r4, r0
; gcrRegs +[r4]- str r4, [sp+0x10] // [V06 loc2]
- ; GC ptr vars +{V06} ldr r1, [r4+0x20]
ldr r0, [r4+0x1C]
; gcrRegs -[r0]
@@ -263,27 +262,29 @@ G_M14932_IG06: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
ldr r9, [r4+0x0C]
; gcrRegs +[r9]
ldr r3, [r9+0x0C]+ str r9, [sp+0x08] // [V57 tmp38]
+ ; GC ptr vars +{V57} movs r2, 0
str r3, [sp+0x1C] // [V59 tmp40]
ldr r7, [sp+0x14] // [V05 loc1]
; gcrRegs +[r7]
b SHORT G_M14932_IG12- ;; size=46 bbWeight=4 PerfScore 68.00
-G_M14932_IG07: ; bbWeight=8, gcVars=0000000100400000 {V05 V06}, gcrefRegs=02F1 {r0 r4 r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r0]+ ;; size=48 bbWeight=4 PerfScore 68.00
+G_M14932_IG07: ; bbWeight=8, gcVars=0000000202000000 {V05 V57}, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r9] +[r0] str lr, [sp+0x24] // [V44 tmp25]
ldr r12, [r0+0x04]
; gcrRegs +[r12]- str r12, [sp+0x0C] // [V10 loc6]+ str r12, [sp+0x10] // [V10 loc6] ; GC ptr vars +{V10}
movs r0, 0
; gcrRegs -[r0]
ldr r1, [r12+0x04]- str r1, [sp+0x18] // [V72 cse0]+ str r1, [sp+0x18] // [V73 cse1] cmp r1, 0
ble SHORT G_M14932_IG14
;; size=24 bbWeight=8 PerfScore 64.00-G_M14932_IG08: ; bbWeight=64, gcVars=0000000100C00000 {V05 V06 V10}, gcrefRegs=1270 {r4 r5 r6 r9 r12}, byrefRegs=0000 {}, gcvars, byref, isz+G_M14932_IG08: ; bbWeight=64, gcVars=0000000202400000 {V05 V10 V57}, gcrefRegs=1070 {r4 r5 r6 r12}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r7]
movs r7, 12
str r0, [sp+0x28] // [V11 loc7]
@@ -293,20 +294,18 @@ G_M14932_IG08: ; bbWeight=64, gcVars=0000000100C00000 {V05 V06 V10}, gcre
; byrRegs +[r7]
ldr r3, [r7]
; gcrRegs +[r3]- str r3, [sp+0x08] // [V45 tmp26]+ str r3, [sp+0x0C] // [V45 tmp26] ; GC ptr vars +{V45}- ldr r8, [r7+0x04]+ ldr r9, [r7+0x04] ldr r7, [r7+0x08]
; byrRegs -[r7]- ldr lr, [r4+0x1C]
- ldr r4, [sp+0x24] // [V44 tmp25]
- ; gcrRegs -[r4]
- add lr, r4
- add r7, lr
- ldr lr, [sp+0x2C] // [V07 loc3]
- add lr, r7
- ldr r4, [r6+0x28]
- sub r1, lr, r4+ ldr r8, [r4+0x1C]
+ add r8, lr
+ add r7, r8
+ ldr r8, [sp+0x2C] // [V07 loc3]
+ add r8, r7
+ ldr lr, [r6+0x28]
+ sub r1, r8, lr mov r0, r6
; gcrRegs +[r0]
movw lr, 0xd1ff
@@ -318,7 +317,7 @@ G_M14932_IG08: ; bbWeight=64, gcVars=0000000100C00000 {V05 V06 V10}, gcre
ldr r0, [r5+0x08]
; gcrRegs +[r0]
ldrsb r1, [r0]- ldr r1, [sp+0x08] // [V45 tmp26]+ ldr r1, [sp+0x0C] // [V45 tmp26] ; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -354,18 +353,18 @@ G_M14932_IG08: ; bbWeight=64, gcVars=0000000100C00000 {V05 V06 V10}, gcre
ldr r0, [r0+0x20]
; gcrRegs -[r0]
adds r0, r0, r2- cmp r8, 0x1000+ cmp r9, 0x1000 bne SHORT G_M14932_IG10- ;; size=132 bbWeight=64 PerfScore 3264.00
-G_M14932_IG09: ; bbWeight=32, gcVars=0000000100C00000 {V05 V06 V10}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref+ ;; size=132 bbWeight=64 PerfScore 3200.00...
@@ -8,20 +8,20 @@
; No matching PGO data
; Final local variable assignments
;-; V00 this [V00,T02] ( 4, 14 ) ref -> r6 this class-hnd single-def <System.Net.HttpEndPointListener>
-; V01 arg1 [V01,T01] ( 5, 22 ) ref -> r5 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs>
-; V02 loc0 [V02,T00] ( 3, 24 ) ubyte -> r7 +; V00 this [V00,T01] ( 4, 18 ) ref -> r6 this class-hnd single-def <System.Net.HttpEndPointListener>
+; V01 arg1 [V01,T00] ( 5, 26 ) ref -> r5 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs>
+; V02 loc0 [V02,T02] ( 2, 16 ) ubyte -> r0 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>-; V05 PSPSym [V05,T03] ( 1, 1 ) int -> [sp+0x04] do-not-enreg[V] "PSPSym"+; V05 PSPSym [V05,T03] ( 1, 1 ) int -> [sp+0x00] do-not-enreg[V] "PSPSym" ;-; Lcl frame size = 8+; Lcl frame size = 4
G_M14120_IG01: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG- push {r2,r3,r4,r5,r6,r7,r11,lr}
- add r11, sp, 24
- add r2, sp, 32
- str r2, [sp+0x04]+ push {r3,r4,r5,r6,r11,lr}
+ add r11, sp, 16
+ add r2, sp, 24
+ str r2, [sp] mov r6, r0
; gcrRegs +[r6]
mov r5, r1
@@ -52,13 +52,10 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0- mov r7, r0
- ;; size=42 bbWeight=8 PerfScore 136.00+ ;; size=40 bbWeight=8 PerfScore 128.00 G_M14120_IG03: ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz- cmp r7, 0
- bne SHORT G_M14120_IG05
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M14120_IG04: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref+ cmp r0, 0
+ bne SHORT G_M14120_IG04 mov r0, r6
; gcrRegs +[r0]
mov r1, r5
@@ -70,30 +67,27 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0- ;; size=18 bbWeight=4 PerfScore 28.00
-G_M14120_IG05: ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- cmp r7, 0
- beq SHORT G_M14120_IG02
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc+ b SHORT G_M14120_IG02
+ ;; size=24 bbWeight=8 PerfScore 80.00
+G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r5-r6]- pop {r2,r3,r4,r5,r6,r7,r11,pc}+ pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00-G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- push {r2,r3,r4,r5,r6,r7,r11,lr}+G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ push {r3,r4,r5,r6,r11,lr} add r3, r11, 8- str r3, [sp+0x04]+ str r3, [sp] ;; size=10 bbWeight=0 PerfScore 0.00-G_M14120_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r0, LOW ADDRESS G_M14120_IG06
- movt r0, HIGH ADDRESS G_M14120_IG06+G_M14120_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movw r0, LOW ADDRESS G_M14120_IG04
+ movt r0, HIGH ADDRESS G_M14120_IG04 add r0, pc
;; size=10 bbWeight=0 PerfScore 0.00-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r11,pc}+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 16, PerfScore 245.00, instruction count 42, allocated bytes for code 112 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)+; Total bytes of code 108, prolog size 16, PerfScore 257.00, instruction count 40, allocated bytes for code 108 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts) ; ============================================================
Unwind Info:
@@ -105,11 +99,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 44 (0x0002c) Actual length = 88 (0x000058)+ Function Length : 42 (0x0002a) Actual length = 84 (0x000054) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----- A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32 FF end
FF end
@@ -126,10 +120,10 @@ Unwind Info:
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----- A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32 FF end
FF end
*************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T01] ( 38, 80.50) ref -> [sp+0x08] this class-hnd EH-live single-def <System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]>+; V00 this [V00,T00] ( 38, 80.50) ref -> [sp+0x08] this class-hnd EH-live single-def <System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]> ; V01 loc0 [V01,T08] ( 5, 3 ) ubyte -> r0
;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 loc2 [V03,T07] ( 3, 6 ) ref -> r0 class-hnd <System.Xml.Linq.XContainer>
@@ -21,30 +21,30 @@
; V09 tmp4 [V09,T06] ( 4, 6.50) ref -> r1 class-hnd "Inline return value spill temp" <System.Xml.Linq.XNode>
; V10 tmp5 [V10,T03] ( 3, 12 ) ref -> r0 class-hnd "dup spill" <System.Xml.Linq.XNode>
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref -; V12 PSPSym [V12,T11] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"+; V12 PSPSym [V12,T11] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym" ; V13 cse0 [V13,T02] ( 3, 40 ) ref -> r1 "CSE - aggressive"-; V14 cse1 [V14,T00] ( 8, 84.50) ref -> r6 "CSE - aggressive"+; V14 cse1 [V14,T01] ( 7, 82.50) ref -> r2 "CSE - aggressive" ; V15 cse2 [V15,T10] ( 3, 1.50) ref -> r0 "CSE - moderate"
; V16 rat0 [V16,T05] ( 4, 8 ) int -> r5 "ReplaceWithLclVar is creating a new local variable"
; TEMP_01 ref -> [r11-0x1C]
;-; Lcl frame size = 20+; Lcl frame size = 24
G_M13296_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG- push {r4,r5,r6,r11,lr}
- sub sp, 20+ push {r4,r5,r11,lr}
+ sub sp, 24 add r11, sp, 32
movs r1, 0
str r1, [sp+0x04] // [TEMP_01]
add r1, sp, 40- str r1, [sp+0x10] // [V12 PSPSym]+ str r1, [sp+0x14] // [V12 PSPSym] str r0, [r11-0x14]
str r0, [sp+0x08] // [V00 this]
; GC ptr vars +{V00}
mov r4, r0
; gcrRegs +[r4]
;; size=26 bbWeight=1 PerfScore 10.00-G_M13296_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M13296_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ldr r5, [r4+0x1C]
cmp r5, 2
bhi SHORT G_M13296_IG03
@@ -52,11 +52,11 @@ G_M13296_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=0010 {r4},
beq SHORT G_M13296_IG04
cmp r5, 1
beq SHORT G_M13296_IG07- b SHORT G_M13296_IG20+ b SHORT G_M13296_IG18 ;; size=16 bbWeight=1 PerfScore 8.00
G_M13296_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movs r0, 0- b SHORT G_M13296_IG26+ b SHORT G_M13296_IG24 ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M13296_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, -1
@@ -102,7 +102,7 @@ G_M13296_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0- beq G_M13296_IG23+ beq G_M13296_IG21 ;; size=84 bbWeight=0.50 PerfScore 15.50
G_M13296_IG05: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5]
@@ -134,12 +134,12 @@ G_M13296_IG05: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
ldr r1, [r5+0x14]
; gcrRegs +[r1]
cmp r1, 0- beq G_M13296_IG22+ beq SHORT G_M13296_IG20 ldrb r1, [r5+0x24]
; gcrRegs -[r1]
cmp r1, 0
beq SHORT G_M13296_IG08- ;; size=64 bbWeight=2 PerfScore 48.00+ ;; size=62 bbWeight=2 PerfScore 48.00 G_M13296_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
ldr r1, [r5+0x14]
; gcrRegs +[r1]
@@ -157,7 +157,7 @@ G_M13296_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
mov r0, r1
mov r4, r5
; gcrRegs +[r4]- b SHORT G_M13296_IG26+ b SHORT G_M13296_IG24 ;; size=30 bbWeight=0.50 PerfScore 6.00
G_M13296_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r5]
@@ -223,7 +223,7 @@ G_M13296_IG12: ; bbWeight=0.50, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- b SHORT G_M13296_IG19+ b SHORT G_M13296_IG17 ;; size=22 bbWeight=0.50 PerfScore 3.50
G_M13296_IG13: ; bbWeight=8, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref
; gcrRegs +[r1]
@@ -238,37 +238,30 @@ G_M13296_IG13: ; bbWeight=8, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, b
; byrRegs -[r0]
;; size=20 bbWeight=8 PerfScore 48.00
G_M13296_IG14: ; bbWeight=16, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz- ldr r6, [r5+0x18]
- ; gcrRegs +[r6]
- cmp r6, 0
- beq SHORT G_M13296_IG16+ ldr r2, [r5+0x18]
+ ; gcrRegs +[r2]
+ cmp r2, 0
+ beq SHORT G_M13296_IG19 ldr r1, [r5+0x14]
; gcrRegs +[r1]- cmp r6, r1
- beq SHORT G_M13296_IG17
- ldr r1, [r6+0x04]+ cmp r2, r1
+ beq SHORT G_M13296_IG15
+ ldr r1, [r2+0x04] ldr r0, [r1+0x10]
; gcrRegs +[r0]- cmp r6, r0+ cmp r2, r0 beq SHORT G_M13296_IG13
;; size=20 bbWeight=16 PerfScore 160.00-G_M13296_IG15: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz+G_M13296_IG15: ; bbWeight=2, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0-r1]- b SHORT G_M13296_IG17
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M13296_IG16: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- cmp r6, 0
- beq SHORT G_M13296_IG21
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M13296_IG17: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz ldr r1, [r5+0x14]
; gcrRegs +[r1]- cmp r6, r1
- beq SHORT G_M13296_IG21+ cmp r2, r1
+ beq SHORT G_M13296_IG19 ;; size=6 bbWeight=2 PerfScore 6.00-G_M13296_IG18: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref+G_M13296_IG16: ; bbWeight=0.50, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, byref ; gcrRegs -[r1]- ldr r1, [r6+0x0C]+ ldr r1, [r2+0x0C] ; gcrRegs +[r1]
add r0, r5, 24
; byrRegs +[r0]
@@ -277,10 +270,10 @@ G_M13296_IG18: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}
add r12, pc
ldr r12, [r12]
blx r12 // CORINFO_HELP_ASSIGN_REF- ; gcrRegs -[r1 r6]+ ; gcrRegs -[r1-r2] ; byrRegs -[r0]
;; size=22 bbWeight=0.50 PerfScore 3.50-G_M13296_IG19: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz+G_M13296_IG17: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ldr r1, [r5+0x18]
; gcrRegs +[r1]
adds r0, r5, 4
@@ -297,9 +290,9 @@ G_M13296_IG19: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
movs r0, 1
mov r4, r5
; gcrRegs +[r4]- b SHORT G_M13296_IG26+ b SHORT G_M13296_IG24 ;; size=30 bbWeight=0.50 PerfScore 6.00-G_M13296_IG20: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M13296_IG18: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5]
mvn r0, 2
str r0, [r4+0x1C]
@@ -307,13 +300,13 @@ G_M13296_IG20: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs +[r5]
b SHORT G_M13296_IG09
;; size=10 bbWeight=0.50 PerfScore 2.00-G_M13296_IG21: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref+G_M13296_IG19: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref ; gcrRegs -[r4]
movs r0, 0
; gcrRegs +[r0]
str r0, [r5+0x18]
;; size=4 bbWeight=2 PerfScore 4.00-G_M13296_IG22: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz+G_M13296_IG20: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
movs r0, 0
; gcrRegs +[r0]
@@ -329,13 +322,13 @@ G_M13296_IG22: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
cmp r0, 0
bne G_M13296_IG05
;; size=26 bbWeight=4 PerfScore 40.00-G_M13296_IG23: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz+G_M13296_IG21: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz mov r0, -1
str r0, [r5+0x1C]
ldr r0, [r5+0x10]
; gcrRegs +[r0]
cmp r0, 0- beq SHORT G_M13296_IG24+ beq SHORT G_M13296_IG22 movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -344,28 +337,28 @@ G_M13296_IG23: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
;; size=26 bbWeight=0.50 PerfScore 5.00-G_M13296_IG24: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref+G_M13296_IG22: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref movs r0, 0
; gcrRegs +[r0]
str r0, [r5+0x10]
;; size=4 bbWeight=0.50 PerfScore 1.00-G_M13296_IG25: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref+G_M13296_IG23: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref ; gcrRegs -[r0]
mov r4, r5
; gcrRegs +[r4]
;; size=2 bbWeight=0.50 PerfScore 0.50-G_M13296_IG26: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc+G_M13296_IG24: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r5]- add sp, 20
- pop {r4,r5,r6,r11,pc}+ add sp, 24
+ pop {r4,r5,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00-G_M13296_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc+G_M13296_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc ; gcrRegs -[r4]- push {r3,r4,r5,r6,r11,lr}+ push {r2,r3,r4,r5,r11,lr} add r3, r11, 8- str r3, [sp]+ str r3, [sp+0x04] ;; size=10 bbWeight=0 PerfScore 0.00-G_M13296_IG28: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M13296_IG26: ; bbWeight=0, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ldr r0, [r11-0x18] // [V00 this]
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -376,11 +369,11 @@ G_M13296_IG28: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, by
...
@@ -9,22 +9,22 @@
; 0 inlinees with PGO data; 14 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;-; V00 loc0 [V00,T05] ( 8, 13 ) ref -> r5 class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T22] ( 4, 1 ) ref -> [sp+0x08] class-hnd EH-live spill-single-def <System.Object>+; V00 loc0 [V00,T04] ( 8, 13 ) ref -> r5 class-hnd exact single-def <<unknown class>>
+; V01 loc1 [V01,T23] ( 4, 1 ) ref -> [sp+0x08] class-hnd EH-live spill-single-def <System.Object> ; V02 loc2 [V02 ] ( 6, 2.50) ubyte -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op
;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V04 loc4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.WeakReference`1[System.Diagnostics.Tracing.EventSource]>
;* V05 loc5 [V05 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V07 tmp1 [V07,T17] ( 3, 3 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V08 tmp2 [V08,T19] ( 2, 2 ) ubyte -> r1 "Inlining Arg"+; V07 tmp1 [V07,T18] ( 3, 3 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T20] ( 2, 2 ) ubyte -> r1 "Inlining Arg" ;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V10 tmp4 [V10,T18] ( 2, 2 ) ref -> r6 class-hnd single-def "Inlining Arg" <<unknown class>>+; V10 tmp4 [V10,T19] ( 2, 2 ) ref -> r6 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V12 tmp6 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>
; V14 tmp8 [V14,T06] ( 6, 12 ) ref -> r2 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>-; V15 tmp9 [V15,T03] ( 5, 14 ) int -> r0 "Inline stloc first use temp"+; V15 tmp9 [V15,T02] ( 5, 14 ) int -> r0 "Inline stloc first use temp" ;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>
; V17 tmp11 [V17,T14] ( 3, 6 ) ref -> r2 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>
@@ -32,27 +32,28 @@
; V20 tmp14 [V20,T07] ( 3, 12 ) ref -> [sp+0x04] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
;* V21 tmp15 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp16 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V23 tmp17 [V23,T12] ( 2, 8 ) ref -> r0 class-hnd "dup spill" <System.Object>
-; V24 tmp18 [V24,T10] ( 4, 8 ) ref -> r0 +; V23 tmp17 [V23,T11] ( 2, 8 ) ref -> r0 class-hnd "dup spill" <System.Object>
+; V24 tmp18 [V24,T09] ( 4, 8 ) ref -> r0 ;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventSource>
; V26 tmp20 [V26,T15] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>-; V27 tmp21 [V27,T11] ( 4, 8 ) int -> r1 "Inline stloc first use temp"+; V27 tmp21 [V27,T10] ( 4, 8 ) int -> r1 "Inline stloc first use temp" ;* V28 tmp22 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventSource>-;* V29 tmp23 [V29,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V29 tmp23 [V29,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V30 tmp24 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V31 tmp25 [V31,T02] ( 4, 12.50) ref -> r6 single-def "field V03._list (fldOffset=0x0)" P-INDEP
-; V32 tmp26 [V32,T04] ( 3, 10 ) ref -> r9 "field V03._current (fldOffset=0x4)" P-INDEP+; V31 tmp25 [V31,T05] ( 4, 12.50) ref -> r6 single-def "field V03._list (fldOffset=0x0)" P-INDEP
+; V32 tmp26 [V32,T03] ( 3, 10 ) ref -> r9 "field V03._current (fldOffset=0x4)" P-INDEP ; V33 tmp27 [V33,T00] ( 6, 20.50) int -> r8 "field V03._index (fldOffset=0x8)" P-INDEP-; V34 tmp28 [V34,T09] ( 3, 8.50) int -> r7 "field V03._version (fldOffset=0xc)" P-INDEP
-; V35 tmp29 [V35,T20] ( 3, 1.50) ref -> r6 single-def "field V11._list (fldOffset=0x0)" P-INDEP+; V34 tmp28 [V34,T16] ( 2, 4.50) int -> r7 "field V03._version (fldOffset=0xc)" P-INDEP
+; V35 tmp29 [V35,T21] ( 3, 1.50) ref -> r6 single-def "field V11._list (fldOffset=0x0)" P-INDEP ;* V36 tmp30 [V36 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x4)" P-INDEP-;* V37 tmp31 [V37,T25] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
-; V38 tmp32 [V38,T23] ( 2, 1 ) int -> r7 "field V11._version (fldOffset=0xc)" P-INDEP+;* V37 tmp31 [V37,T26] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
+; V38 tmp32 [V38,T24] ( 2, 1 ) int -> r7 "field V11._version (fldOffset=0xc)" P-INDEP ; V39 tmp33 [V39,T01] ( 3, 24 ) ref -> r0 "arr expr"-; V40 PSPSym [V40,T24] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
-; V41 cse0 [V41,T21] ( 3, 1.50) byref -> r6 "CSE - moderate"
-; V42 cse1 [V42,T16] ( 6, 3 ) ref -> r0 multi-def "CSE - moderate"
-; V43 cse2 [V43,T08] ( 3, 12 ) int -> r9 "CSE - aggressive"+; V40 PSPSym [V40,T25] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
+; V41 cse0 [V41,T22] ( 3, 1.50) byref -> r6 "CSE - moderate"
+; V42 cse1 [V42,T17] ( 6, 3 ) ref -> r0 multi-def "CSE - moderate"
+; V43 cse2 [V43,T13] ( 2, 8 ) int -> r0 "CSE - aggressive"
+; V44 cse3 [V44,T08] ( 2, 8 ) int -> r0 "CSE - aggressive" ;
; Lcl frame size = 20
@@ -133,7 +134,7 @@ G_M58508_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
movs r1, 0
str r1, [sp+0x0C] // [V02 loc2]
;; size=70 bbWeight=0.50 PerfScore 13.00-G_M58508_IG06: ; bbWeight=0.50, gcVars=00400000 {V01}, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, gcvars, byref, isz+G_M58508_IG06: ; bbWeight=0.50, gcVars=00800000 {V01}, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x0C] // [V02 loc2]
cmp r1, 0
bne SHORT G_M58508_IG12
@@ -204,17 +205,17 @@ G_M58508_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0040 {r6},
mov r8, 0
;; size=10 bbWeight=0.50 PerfScore 1.50
G_M58508_IG09: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz- ldr r9, [r6+0x0C]
- cmp r7, r9
- bne SHORT G_M58508_IG18+ ldr r0, [r6+0x0C]
+ cmp r7, r0
+ bne SHORT G_M58508_IG19 ldr r0, [r6+0x08]
cmp r8, r0- bhs SHORT G_M58508_IG21+ bhs SHORT G_M58508_IG20 ldr r0, [r6+0x04]
; gcrRegs +[r0]
ldr r3, [r0+0x04]
cmp r8, r3- bhs SHORT G_M58508_IG19+ bhs SHORT G_M58508_IG18 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -228,7 +229,7 @@ G_M58508_IG09: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
ands r0, r3
cmp r0, 0
bne SHORT G_M58508_IG13- ;; size=50 bbWeight=4 PerfScore 76.00+ ;; size=48 bbWeight=4 PerfScore 76.00 G_M58508_IG10: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
; gcrRegs -[r9]
movs r2, 0
@@ -345,14 +346,8 @@ G_M58508_IG17: ; bbWeight=2, gcrefRegs=0064 {r2 r5 r6}, byrefRegs=0000 {}
; gcr arg pop 0
b SHORT G_M58508_IG09
;; size=20 bbWeight=2 PerfScore 16.00-G_M58508_IG18: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r6]
- cmp r7, r9
- bne SHORT G_M58508_IG20
- b SHORT G_M58508_IG21
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M58508_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]+G_M58508_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5-r6] movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
@@ -360,7 +355,7 @@ G_M58508_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=14 bbWeight=0 PerfScore 0.00-G_M58508_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M58508_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -369,11 +364,11 @@ G_M58508_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=16 bbWeight=0 PerfScore 0.00-G_M58508_IG21: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz+G_M58508_IG20: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r5]
ldrb r0, [sp+0x0C]
cmp r0, 0- beq SHORT G_M58508_IG22+ beq SHORT G_M58508_IG21 ldr r0, [sp+0x08] // [V01 loc1]
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -385,41 +380,41 @@ G_M58508_IG21: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
;; size=24 bbWeight=0.50 PerfScore 4.50-G_M58508_IG22: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref+G_M58508_IG21: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref mov r0, r5
; gcrRegs +[r0]
;; size=2 bbWeight=0.50 PerfScore 0.50-G_M58508_IG23: ; bbWeight=0.50, epilog, nogc, extend+G_M58508_IG22: ; bbWeight=0.50, epilog, nogc, extend add sp, 20
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00-G_M58508_IG24: ; bbWeight=0, gcVars=00400000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc+G_M58508_IG23: ; bbWeight=0, gcVars=00800000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; gcrRegs -[r0 r5]- ; GC ptr vars +{V01}+ ; GC ptr vars +{V01 V23} push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
add r3, r11, 8
str r3, [sp]
;; size=10 bbWeight=0 PerfScore 0.00-G_M58508_IG25: ; bbWeight=0, gcVars=00400000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M58508_IG24: ; bbWeight=0, gcVars=00800000 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r0, [r11-0x24] // [V02 loc2]
cmp r0, 0- beq SHORT G_M58508_IG26+ beq SHORT G_M58508_IG25 ldr r0, [r11-0x28] // [V01 loc1]
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]- ; GC ptr vars -{V01}+ ; GC ptr vars -{V01 V23} blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
;; size=26 bbWeight=0 PerfScore 0.00-G_M58508_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc+G_M58508_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 588, prolog size 14, PerfScore 277.00, instruction count 222, allocated bytes for code 588 (MethodHash=ee0a1b73) for method System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)+; Total bytes of code 580, prolog size 14, PerfScore 265.00, instruction count 219, allocated bytes for code 580 (MethodHash=ee0a1b73) for method System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts) ; ============================================================
Unwind Info:
@@ -431,7 +426,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 274 (0x00112) Actual length = 548 (0x000224)+ Function Length : 270 (0x0010e) Actual length = 540 (0x00021c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -467,4 +462,4 @@ Unwind Info:
*************** EH table for System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource]
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M58508_IG06..G_M58508_IG21) handled by [G_M58508_IG24..END) (fault)+EH#0: try [G_M58508_IG06..G_M58508_IG20) handled by [G_M58508_IG23..END) (fault)
@@ -96,7 +96,7 @@ G_M11311_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M11311_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb r0, [r4+0x1B]
cmp r0, 0- bne G_M11311_IG28+ bne G_M11311_IG29 movs r0, 0
movs r3, 0
str r0, [r9+0x28]
@@ -234,7 +234,7 @@ G_M11311_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre
;; size=38 bbWeight=2 PerfScore 30.00
G_M11311_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
cmp r6, 0- beq G_M11311_IG26+ beq G_M11311_IG27 ;; size=6 bbWeight=2 PerfScore 4.00
G_M11311_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
subs r1, r6, 1
@@ -270,12 +270,26 @@ G_M11311_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre
ldr r7, [r4+0x0C]
; gcrRegs +[r7]
cmp r6, 128- bhi SHORT G_M11311_IG19+ bls SHORT G_M11311_IG18
+ ;; size=10 bbWeight=4 PerfScore 16.00
+G_M11311_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4 r7]
+ ; byrRegs -[r5]
+ movw r4, LOW RELOC 0xD1FFAB1E
+ movt r4, HIGH RELOC 0xD1FFAB1E
+ add r4, pc
+ ldr r3, [r4]
+ blx r3 // System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ ; gcr arg pop 0
+ bkpt
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M11311_IG18: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0020 {r5}, byref, isz
+ ; gcrRegs +[r7]
+ ; byrRegs +[r5] cmp r6, 0- bge SHORT G_M11311_IG18
- ;; size=14 bbWeight=4 PerfScore 24.00
-G_M11311_IG17: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0020 {r5}, byref
- ; gcrRegs -[r4]+ bge SHORT G_M11311_IG20
+ ;; size=4 bbWeight=4 PerfScore 8.00
+G_M11311_IG19: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0020 {r5}, byref movw r1, LOW RELOC 0xD1FFAB1E
movt r1, HIGH RELOC 0xD1FFAB1E
add r1, pc
@@ -306,7 +320,7 @@ G_M11311_IG17: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0020 {r5}, by
; gcrRegs -[r0-r1 r8]
; gcr arg pop 0
;; size=52 bbWeight=2 PerfScore 40.00-G_M11311_IG18: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0020 {r5}, byref, isz+G_M11311_IG20: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0020 {r5}, byref mov r2, r6
addw r3, r9, 36 // [V05 loc4]
; byrRegs +[r3]
@@ -328,24 +342,12 @@ G_M11311_IG18: ; bbWeight=4, gcrefRegs=0080 {r7}, byrefRegs=0020 {r5}, by
; byrRegs -[r1 r3]
; gcr arg pop 0
mov r6, r0- b SHORT G_M11311_IG20
- ;; size=42 bbWeight=4 PerfScore 64.00
-G_M11311_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r5]
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r3, [r4]
- blx r3 // System.ThrowHelper:ThrowArgumentOutOfRangeException()
- ; gcr arg pop 0
- bkpt
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M11311_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
- ; byrRegs +[r5]+ ;; size=40 bbWeight=4 PerfScore 60.00
+G_M11311_IG21: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r6, 2- blt SHORT G_M11311_IG22+ blt SHORT G_M11311_IG23 ;; size=4 bbWeight=4 PerfScore 8.00-G_M11311_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref+G_M11311_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref movw r1, LOW RELOC 0xD1FFAB1E
movt r1, HIGH RELOC 0xD1FFAB1E
add r1, pc
@@ -368,18 +370,18 @@ G_M11311_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre
; gcrRegs -[r0-r1 r8]
; gcr arg pop 0
;; size=46 bbWeight=2 PerfScore 32.00-G_M11311_IG22: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz+G_M11311_IG23: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r6, 0
ldr r4, [r9+0x14] // [V00 this]
; gcrRegs +[r4]
beq G_M11311_IG07
;; size=10 bbWeight=4 PerfScore 12.00-G_M11311_IG23: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M11311_IG24: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r4]
; byrRegs -[r5]
; GC ptr vars -{V00}
cmp r6, 0- bgt SHORT G_M11311_IG24+ bgt SHORT G_M11311_IG25 movw r1, LOW RELOC 0xD1FFAB1E
movt r1, HIGH RELOC 0xD1FFAB1E
add r1, pc
@@ -398,7 +400,7 @@ G_M11311_IG23: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
; gcrRegs -[r0-r1 r8]
; gcr arg pop 0
;; size=38 bbWeight=0.50 PerfScore 7.00-G_M11311_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M11311_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldrh r0, [r9+0x24] // [V05 loc4]
movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
@@ -406,7 +408,7 @@ G_M11311_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr r12, [r12]
ldr lr, [r9+0x10] // [V53 GsCookie]
cmp r12, lr- beq SHORT G_M11311_IG25+ beq SHORT G_M11311_IG26 movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
add r12, pc
@@ -414,12 +416,12 @@ G_M11311_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blx r12 // CORINFO_HELP_FAIL_FAST
; gcr arg pop 0
;; size=42 bbWeight=0.50 PerfScore 6.50-G_M11311_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc+G_M11311_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc mov sp, r9
add sp, 52
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=8 bbWeight=0.50 PerfScore 1.50-G_M11311_IG26: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M11311_IG27: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz mov r0, -1
movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
@@ -427,7 +429,7 @@ G_M11311_IG26: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
ldr r12, [r12]
ldr lr, [r9+0x10] // [V53 GsCookie]
cmp r12, lr- beq SHORT G_M11311_IG27+ beq SHORT G_M11311_IG28 movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
add r12, pc
@@ -435,12 +437,12 @@ G_M11311_IG26: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
blx r12 // CORINFO_HELP_FAIL_FAST
; gcr arg pop 0
;; size=42 bbWeight=0.50 PerfScore 6.50-G_M11311_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc+G_M11311_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc mov sp, r9
add sp, 52
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=8 bbWeight=0.50 PerfScore 1.50-G_M11311_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M11311_IG29: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -449,14 +451,14 @@ G_M11311_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=16 bbWeight=0 PerfScore 0.00-G_M11311_IG29: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc+G_M11311_IG30: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; GC ptr vars +{V00 V01}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
add r3, r11, 8
str r3, [sp+0x08]
;; size=12 bbWeight=0 PerfScore 0.00-G_M11311_IG30: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M11311_IG31: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ldr r4, [r11-0x3C] // [V00 this]
; gcrRegs +[r4]
ldr r0, [r4+0x04]
@@ -471,7 +473,7 @@ G_M11311_IG30: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, by
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0- beq SHORT G_M11311_IG31+ beq SHORT G_M11311_IG32 ldr r4, [r11-0x3C] // [V00 this]
; gcrRegs +[r4]
ldr r5, [r4+0x04]
@@ -505,7 +507,7 @@ G_M11311_IG30: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, by
; gcrRegs -[r0 r5]
; gcr arg pop 0
;; size=86 bbWeight=0 PerfScore 0.00-G_M11311_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M11311_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
@@ -515,7 +517,7 @@ G_M11311_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 784, prolog size 46, PerfScore 398.00, instruction count 285, allocated bytes for code 784 (MethodHash=2c23d3d0) for method System.IO.BinaryReader:Read():int:this (FullOpts)+; Total bytes of code 782, prolog size 46, PerfScore 394.00, instruction count 284, allocated bytes for code 782 (MethodHash=2c23d3d0) for method System.IO.BinaryReader:Read():int:this (FullOpts) ; ============================================================
Unwind Info:
@@ -527,7 +529,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 335 (0x0014f) Actual length = 670 (0x00029e)+ Function Length : 334 (0x0014e) Actual length = 668 (0x00029c) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -564,4 +566,4 @@ Unwind Info:
*************** EH table for System.IO.BinaryReader:Read():int:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M11311_IG16..G_M11311_IG20) handled by [G_M11311_IG29..END) (class: 2000063)+EH#0: try [G_M11311_IG16..G_M11311_IG21) handled by [G_M11311_IG30..END) (class: 2000063)
@@ -9,54 +9,55 @@
; 0 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T15] ( 15, 14.50) ref -> [sp+0x3C] class-hnd <System.Reflection.MemberInfo>+; V00 arg0 [V00,T16] ( 15, 14.50) ref -> [sp+0x3C] class-hnd <System.Reflection.MemberInfo> ; V01 arg1 [V01,T07] ( 12, 39.50) ref -> registers class-hnd <System.Reflection.ParameterInfo[]>-; V02 arg2 [V02,T12] ( 6, 19.50) int -> r7 single-def
-; V03 arg3 [V03,T10] ( 8, 29.50) ubyte -> r6 single-def
-; V04 arg4 [V04,T38] ( 1, 0.50) ref -> [sp+0x90] class-hnd single-def <System.Object[]>
-; V05 arg5 [V05,T13] ( 2, 18 ) int -> r8 single-def
-; V06 arg6 [V06,T39] ( 1, 0.50) ref -> [sp+0x98] class-hnd single-def <System.String[]>
-; V07 arg7 [V07,T40] ( 1, 0.50) ref -> [sp+0x9C] class-hnd single-def <System.Type[]>
-; V08 arg8 [V08,T37] ( 1, 1 ) ubyte -> [sp+0xA0] single-def
-; V09 arg9 [V09,T16] ( 6, 14 ) ref -> [sp+0xA4] class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
-; V10 arg10 [V10,T30] ( 2, 4 ) ref -> [sp+0xA8] class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container>
-; V11 loc0 [V11,T27] ( 9, 5 ) ref -> [sp+0x38] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
-; V12 loc1 [V12,T14] ( 6, 18.50) ref -> [sp+0x34] class-hnd spill-single-def <System.Reflection.MethodBase>
-; V13 loc2 [V13,T28] ( 4, 5 ) ubyte -> [sp+0x64]
-; V14 loc3 [V14,T29] ( 3, 5 ) int -> [sp+0x60] spill-single-def+; V02 arg2 [V02,T13] ( 6, 19.50) int -> r7 single-def
+; V03 arg3 [V03,T12] ( 7, 21.50) ubyte -> r6 single-def
+; V04 arg4 [V04,T39] ( 1, 0.50) ref -> [sp+0x90] class-hnd single-def <System.Object[]>
+; V05 arg5 [V05,T14] ( 2, 18 ) int -> [sp+0x94] single-def
+; V06 arg6 [V06,T40] ( 1, 0.50) ref -> [sp+0x98] class-hnd single-def <System.String[]>
+; V07 arg7 [V07,T41] ( 1, 0.50) ref -> [sp+0x9C] class-hnd single-def <System.Type[]>
+; V08 arg8 [V08,T38] ( 1, 1 ) ubyte -> [sp+0xA0] single-def
+; V09 arg9 [V09,T17] ( 6, 14 ) ref -> [sp+0xA4] class-hnd single-def <System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]>
+; V10 arg10 [V10,T31] ( 2, 4 ) ref -> [sp+0xA8] class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Container>
+; V11 loc0 [V11,T28] ( 9, 5 ) ref -> [sp+0x38] class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V12 loc1 [V12,T15] ( 6, 18.50) ref -> [sp+0x34] class-hnd spill-single-def <System.Reflection.MethodBase>
+; V13 loc2 [V13,T29] ( 4, 5 ) ubyte -> [sp+0x64]
+; V14 loc3 [V14,T30] ( 3, 5 ) int -> [sp+0x60] spill-single-def ; V15 loc4 [V15,T11] ( 6, 24.50) int -> [sp+0x5C] -; V16 loc5 [V16,T02] ( 15, 82 ) ref -> [sp+0x30] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method>+; V16 loc5 [V16,T02] ( 15, 74 ) ref -> [sp+0x30] class-hnd exact spill-single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method> ; V17 loc6 [V17,T08] ( 3, 34 ) ref -> [sp+0x2C] class-hnd spill-single-def <System.Reflection.ParameterInfo[]>
; V18 loc7 [V18,T09] ( 9, 32 ) ref -> [sp+0x28] class-hnd <System.Reflection.MethodBase>
; V19 loc8 [V19,T00] ( 8, 84 ) int -> [sp+0x58]
; V20 loc9 [V20,T01] ( 8, 84 ) int -> [sp+0x54] -;* V21 loc10 [V21,T34] ( 0, 0 ) int -> zero-ref
-; V22 loc11 [V22,T06] ( 4, 50 ) int -> [sp+0x50] +;* V21 loc10 [V21,T35] ( 0, 0 ) int -> zero-ref
+; V22 loc11 [V22,T05] ( 4, 50 ) int -> [sp+0x50] ; V23 loc12 [V23 ] ( 3, 48 ) ubyte -> [sp+0x4C] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V24 loc13 [V24 ] ( 3, 48 ) ubyte -> [sp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V25 loc14 [V25 ] ( 3, 48 ) ubyte -> [sp+0x44] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V26 OutArgs [V26 ] ( 1, 1 ) struct (24) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V27 tmp1 [V27,T17] ( 9, 9 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
-; V28 tmp2 [V28,T19] ( 8, 8 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>+; V27 tmp1 [V27,T18] ( 9, 9 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V28 tmp2 [V28,T20] ( 8, 8 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method> ;* V29 tmp3 [V29 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V30 tmp4 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Reflection.ParameterInfo[]>
;* V31 tmp5 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Type>-; V32 tmp6 [V32,T18] ( 9, 9 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
-; V33 tmp7 [V33,T35] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
-; V34 tmp8 [V34,T36] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
-; V35 tmp9 [V35,T31] ( 3, 3 ) ref -> [sp+0x24] class-hnd spill-single-def "Inlining Arg" <System.Reflection.MethodBase>
-; V36 tmp10 [V36,T25] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"
-; V37 tmp11 [V37,T26] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"
-; V38 tmp12 [V38,T33] ( 2, 2 ) ref -> [sp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Reflection.PropertyInfo>
-; V39 tmp13 [V39,T32] ( 3, 3 ) ref -> [sp+0x1C] class-hnd spill-single-def "Inlining Arg" <System.Reflection.MethodBase>+; V32 tmp6 [V32,T19] ( 9, 9 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V33 tmp7 [V33,T36] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V34 tmp8 [V34,T37] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V35 tmp9 [V35,T32] ( 3, 3 ) ref -> [sp+0x24] class-hnd spill-single-def "Inlining Arg" <System.Reflection.MethodBase>
+; V36 tmp10 [V36,T26] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"
+; V37 tmp11 [V37,T27] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"
+; V38 tmp12 [V38,T34] ( 2, 2 ) ref -> [sp+0x20] class-hnd spill-single-def "Inlining Arg" <System.Reflection.PropertyInfo>
+; V39 tmp13 [V39,T33] ( 3, 3 ) ref -> [sp+0x1C] class-hnd spill-single-def "Inlining Arg" <System.Reflection.MethodBase> ; V40 tmp14 [V40,T03] ( 2, 64 ) ref -> r1 "argument with side effect"-; V41 tmp15 [V41,T04] ( 2, 64 ) ref -> r9 "argument with side effect"
-; V42 tmp16 [V42,T23] ( 2, 8 ) int -> r3 "argument with side effect"
-; V43 tmp17 [V43,T24] ( 2, 8 ) int -> [sp+0x40] spill-single-def "argument with side effect"
-; V44 tmp18 [V44,T20] ( 2, 8 ) ref -> [sp+0x18] spill-single-def "argument with side effect"
-; V45 tmp19 [V45,T21] ( 2, 8 ) ref -> r0 "argument with side effect"
-; V46 tmp20 [V46,T22] ( 2, 8 ) ref -> r0 "argument with side effect"
-; V47 cse0 [V47,T05] ( 5, 52 ) int -> r3 multi-def "CSE - aggressive"+; V41 tmp15 [V41,T04] ( 2, 64 ) ref -> r3 "argument with side effect"
+; V42 tmp16 [V42,T24] ( 2, 8 ) int -> r3 "argument with side effect"
+; V43 tmp17 [V43,T25] ( 2, 8 ) int -> [sp+0x40] spill-single-def "argument with side effect"
+; V44 tmp18 [V44,T21] ( 2, 8 ) ref -> [sp+0x18] spill-single-def "argument with side effect"
+; V45 tmp19 [V45,T22] ( 2, 8 ) ref -> r0 "argument with side effect"
+; V46 tmp20 [V46,T23] ( 2, 8 ) ref -> r0 "argument with side effect"
+; V47 cse0 [V47,T10] ( 5, 28 ) int -> r3 multi-def "CSE - aggressive"
+; V48 cse1 [V48,T06] ( 5, 44 ) int -> registers multi-def "CSE - aggressive" ;
; Lcl frame size = 108
@@ -75,27 +76,25 @@ G_M30168_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r7, r2
mov r6, r3
ldr r8, [sp+0x94] // [V05 arg5]- ldr r10, [sp+0xA4] // [V09 arg9]
- ; gcrRegs +[r10]
- ;; size=34 bbWeight=1 PerfScore 13.00
-G_M30168_IG02: ; bbWeight=1, gcrefRegs=0620 {r5 r9 r10}, byrefRegs=0000 {}, byref, isz
- movs r3, 0
- ; gcrRegs +[r3]
- str r3, [sp+0x38] // [V11 loc0]+ ;; size=30 bbWeight=1 PerfScore 12.00
+G_M30168_IG02: ; bbWeight=1, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref, isz
+ movs r2, 0
+ ; gcrRegs +[r2]
+ str r2, [sp+0x38] // [V11 loc0] ; GC ptr vars +{V11}
ldrb r0, [sp+0xA0] // [V08 arg8]
cmp r0, 0
bne G_M30168_IG12
;; size=14 bbWeight=1 PerfScore 5.00-G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000008000000 {V11}, gcrefRegs=0620 {r5 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r3]+G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000010000000 {V11}, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r2] mov r0, r9
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc- ldr r2, [r4]
- blx r2 // CORINFO_HELP_READYTORUN_ISINSTANCEOF+ ldr r1, [r4]
+ blx r1 // CORINFO_HELP_READYTORUN_ISINSTANCEOF str r0, [sp+0x34] // [V12 loc1]
; GC ptr vars +{V12}
movs r3, 0
@@ -145,9 +144,9 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000008000000 {V11}, gcrefRegs=
; GC ptr vars -{V11}
blx r3 // CORINFO_HELP_READYTORUN_NEW
; gcrRegs -[r9] +[r0]- mov r4, r0
- ; gcrRegs +[r4]
- add r0, r4, 12+ mov r2, r0
+ ; gcrRegs +[r2]
+ add r0, r2, 12 ; gcrRegs -[r0]
; byrRegs +[r0]
mov r1, r5
@@ -159,7 +158,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000008000000 {V11}, gcrefRegs=
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- add r0, r4, 16+ add r0, r2, 16 ; byrRegs +[r0]
mov r1, r5
; gcrRegs +[r1]
@@ -170,11 +169,11 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000008000000 {V11}, gcrefRegs=
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1 r5]
; byrRegs -[r0]- str r7, [r4+0x24]
- strb r6, [r4+0x28]+ str r7, [r2+0x24]
+ strb r6, [r2+0x28] movs r1, 1- strb r1, [r4+0x2B]
- adds r0, r4, 4+ strb r1, [r2+0x2B]
+ adds r0, r2, 4 ; byrRegs +[r0]
ldr r1, [sp+0x34] // [V12 loc1]
; gcrRegs +[r1]
@@ -184,7 +183,7 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000008000000 {V11}, gcrefRegs=
ldr r12, [r12]
blx r12 // CORINFO_HELP_ASSIGN_REF
; byrRegs -[r0]- add r0, r4, 8+ add r0, r2, 8 ; byrRegs +[r0]
movw r12, LOW RELOC 0xD1FFAB1E
movt r12, HIGH RELOC 0xD1FFAB1E
@@ -193,13 +192,13 @@ G_M30168_IG03: ; bbWeight=0.50, gcVars=0000000008000000 {V11}, gcrefRegs=
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- mov r5, r4+ mov r5, r2 ; gcrRegs +[r5]
movs r3, 0
str r3, [sp] // [V26 OutArgs]
;; size=218 bbWeight=0.50 PerfScore 40.00-G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]+G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2] str r3, [sp+0x04] // [V26 OutArgs+0x04]
ldr r3, [sp+0x9C] // [V07 arg7]
; gcrRegs +[r3]
@@ -220,7 +219,7 @@ G_M30168_IG04: ; bbWeight=0.50, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {
movs r0, 1
strb r0, [r5+0x29]
;; size=36 bbWeight=0.50 PerfScore 7.00-G_M30168_IG05: ; bbWeight=0.50, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {}, byref+G_M30168_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref movs r0, 1
strb r0, [r5+0x2E]
ldr r0, [r5+0x04]
@@ -239,7 +238,7 @@ G_M30168_IG05: ; bbWeight=0.50, gcrefRegs=0420 {r5 r10}, byrefRegs=0000 {
; GC ptr vars +{V11}
mov r5, r4
;; size=32 bbWeight=0.50 PerfScore 6.50-G_M30168_IG06: ; bbWeight=0.50, gcVars=0000000008004000 {V11 V12}, gcrefRegs=0620 {r5 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz+G_M30168_IG06: ; bbWeight=0.50, gcVars=0000000010008000 {V11 V12}, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0 r4]
cmp r9, 0
beq SHORT G_M30168_IG07
@@ -295,8 +294,8 @@ G_M30168_IG06: ; bbWeight=0.50, gcVars=0000000008004000 {V11 V12}, gcrefR
movs r3, 1
str r3, [sp+0x64] // [V13 loc2]
;; size=104 bbWeight=0.50 PerfScore 20.50-G_M30168_IG07: ; bbWeight=0.50, gcrefRegs=0620 {r5 r9 r10}, byrefRegs=0000 {}, byref, isz
- mov r0, r10+G_M30168_IG07: ; bbWeight=0.50, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [sp+0xA4] // [V09 arg9] ; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
@@ -306,15 +305,14 @@ G_M30168_IG07: ; bbWeight=0.50, gcrefRegs=0620 {r5 r9 r10}, byrefRegs=000
blx r3 // <unknown method>
; gcrRegs -[r0]
subs r4, r0, 1- bvs G_M30168_IG46+ bvs G_M30168_IG47 str r4, [sp+0x60] // [V14 loc3]
movs r3, 0
cmp r4, 0
blt SHORT G_M30168_IG11
;; size=32 bbWeight=0.50 PerfScore 6.50-G_M30168_IG08: ; bbWeight=4, gcrefRegs=0620 {r5 r9 r10}, byrefRegs=0000 {}, byref, isz
- str r10, [sp+0xA4] // [V09 arg9]
- mov r0, r10+G_M30168_IG08: ; bbWeight=4, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [sp+0xA4] // [V09 arg9] ; gcrRegs +[r0]
str r3, [sp+0x5C] // [V15 loc4]
mov r1, r3
@@ -323,15 +321,14 @@ G_M30168_IG08: ; bbWeight=4, gcrefRegs=0620 {r5 r9 r10}, byrefRegs=0000 {
add r4, pc
ldr r2, [r4]
blx r2 // <unknown method>- ; gcrRegs -[r10] mov r4, r0
; gcrRegs +[r4]
str r4, [sp+0x30] // [V16 loc5]
; GC ptr vars +{V16}
cmp r4, 0
beq SHORT G_M30168_IG10
...
@@ -9,37 +9,37 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T25] ( 4, 4 ) int -> r9 single-def
-; V01 arg1 [V01,T14] ( 4, 35 ) int -> r5 single-def
-; V02 arg2 [V02,T15] ( 3, 34 ) int -> r6 single-def
-; V03 arg3 [V03 ] ( 5, 354 ) int -> [sp+0x3C] do-not-enreg[X] addr-exposed ld-addr-op single-def
-; V04 arg4 [V04,T27] ( 1, 4 ) ref -> [sp+0x68] class-hnd single-def <System.Collections.Generic.List`1[ProcessInfo]>
-; V05 arg5 [V05,T18] ( 1, 32 ) ref -> [sp+0x6C] class-hnd single-def <ReadyToRunJittedMethods>
-; V06 arg6 [V06,T24] ( 5, 6.50) int -> r8 single-def
-; V07 loc0 [V07,T22] ( 7, 15 ) ref -> [sp+0x28] class-hnd exact EH-live spill-single-def <System.Threading.AutoResetEvent>+; V00 arg0 [V00,T24] ( 4, 4 ) int -> r8 single-def
+; V01 arg1 [V01,T19] ( 4, 7 ) int -> r5 single-def
+; V02 arg2 [V02,T20] ( 3, 6 ) int -> r6 single-def
+; V03 arg3 [V03 ] ( 5, 326 ) int -> [sp+0x3C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V04 arg4 [V04,T26] ( 1, 4 ) ref -> [sp+0x68] class-hnd single-def <System.Collections.Generic.List`1[ProcessInfo]>
+; V05 arg5 [V05,T27] ( 1, 4 ) ref -> [sp+0x6C] class-hnd single-def <ReadyToRunJittedMethods>
+; V06 arg6 [V06,T23] ( 5, 6.50) int -> r7 single-def
+; V07 loc0 [V07,T18] ( 7, 15 ) ref -> [sp+0x28] class-hnd exact EH-live spill-single-def <System.Threading.AutoResetEvent> ; V08 loc1 [V08,T06] ( 8, 125.50) ref -> [sp+0x24] class-hnd exact spill-single-def <<unknown class>>-; V09 loc2 [V09 ] ( 4, 353 ) int -> [sp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V10 loc3 [V10,T20] ( 3, 24 ) ubyte -> r5
-; V11 loc4 [V11,T21] ( 12, 21.04) int -> [sp+0x34]
-; V12 loc5 [V12,T09] ( 7, 134 ) int -> r9
-; V13 loc6 [V13,T16] ( 2, 36 ) ref -> r8 class-hnd <ProcessInfo>
-; V14 loc7 [V14,T11] ( 4, 76 ) ref -> [sp+0x20] class-hnd <ParallelRunner+ProcessSlot>
-;* V15 loc8 [V15,T19] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>+; V09 loc2 [V09 ] ( 4, 325 ) int -> [sp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V10 loc3 [V10,T15] ( 3, 24 ) ubyte -> r5
+; V11 loc4 [V11,T17] ( 12, 21.04) int -> [sp+0x34]
+; V12 loc5 [V12,T16] ( 7, 22 ) int -> r8
+; V13 loc6 [V13,T21] ( 2, 8 ) ref -> r7 class-hnd <ProcessInfo>
+; V14 loc7 [V14,T12] ( 4, 48 ) ref -> [sp+0x20] class-hnd <ParallelRunner+ProcessSlot>
+;* V15 loc8 [V15,T14] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>> ; V16 loc9 [V16,T04] ( 5, 288 ) int -> [sp+0x30]
; V17 loc10 [V17,T01] ( 5, 648 ) ref -> [sp+0x1C] class-hnd spill-single-def <ParallelRunner+ProcessSlot>-;* V18 loc11 [V18,T23] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V19 loc12 [V19,T12] ( 5, 72 ) int -> r6 +;* V18 loc11 [V18,T22] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V19 loc12 [V19,T10] ( 5, 72 ) int -> r6 ; V20 loc13 [V20,T08] ( 4, 160 ) ref -> r8 class-hnd <ParallelRunner+ProcessSlot>
; V21 OutArgs [V21 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V22 tmp1 [V22,T26] ( 3, 6 ) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.AutoResetEvent>
-; V23 tmp2 [V23,T17] ( 8, 32 ) ref -> [sp+0x14] class-hnd exact "NewObj constructor temp" <ParallelRunner+ProcessSlot>+; V22 tmp1 [V22,T25] ( 3, 6 ) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.AutoResetEvent>
+; V23 tmp2 [V23,T13] ( 8, 32 ) ref -> [sp+0x14] class-hnd exact "NewObj constructor temp" <ParallelRunner+ProcessSlot> ;* V24 tmp3 [V24,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V25 tmp4 [V25,T00] ( 4,2048 ) ref -> r10 class-hnd "Inlining Arg" <ProcessRunner>-;* V26 tmp5 [V26,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V26 tmp5 [V26,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V27 tmp6 [V27,T02] ( 4, 512 ) ref -> r9 class-hnd "Inlining Arg" <ProcessRunner>
; V28 PSPSym [V28,T28] ( 1, 1 ) int -> [sp+0x40] do-not-enreg[V] "PSPSym"
; V29 cse0 [V29,T03] ( 3, 384 ) ref -> r0 "CSE - aggressive"-; V30 cse1 [V30,T10] ( 3, 96 ) ref -> r0 "CSE - aggressive"+; V30 cse1 [V30,T09] ( 3, 96 ) ref -> r0 "CSE - aggressive" ; V31 cse2 [V31,T07] ( 9, 161.04) int -> [sp+0x2C] multi-def "CSE - aggressive"
;
; Lcl frame size = 68
@@ -53,14 +53,14 @@ G_M64833_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
add r4, sp, 104
str r4, [sp+0x40] // [V28 PSPSym]
str r3, [sp+0x3C] // [V03 arg3]- mov r9, r0+ mov r8, r0 mov r5, r1
mov r6, r2- ldr r10, [sp+0x68] // [V04 arg4]
- ; gcrRegs +[r10]
- ldr r8, [sp+0x70] // [V06 arg6]
- ;; size=34 bbWeight=1 PerfScore 13.00
-G_M64833_IG02: ; bbWeight=1, gcrefRegs=0400 {r10}, byrefRegs=0000 {}, byref+ ldr r9, [sp+0x68] // [V04 arg4]
+ ; gcrRegs +[r9]
+ ldr r7, [sp+0x70] // [V06 arg6]
+ ;; size=32 bbWeight=1 PerfScore 13.00
+G_M64833_IG02: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -87,12 +87,12 @@ G_M64833_IG02: ; bbWeight=1, gcrefRegs=0400 {r10}, byrefRegs=0000 {}, byr
str r4, [sp+0x28] // [V07 loc0]
; GC ptr vars +{V07}
;; size=40 bbWeight=1 PerfScore 16.00-G_M64833_IG03: ; bbWeight=1, gcVars=00400000 {V07}, gcrefRegs=0400 {r10}, byrefRegs=0000 {}, gcvars, byref, isz+G_M64833_IG03: ; bbWeight=1, gcVars=00040000 {V07}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r4]
; GC ptr vars -{V22}- ldr r7, [sp+0x6C] // [V05 arg5]
- ; gcrRegs +[r7]
- mov r0, r8+ ldr r10, [sp+0x6C] // [V05 arg5]
+ ; gcrRegs +[r10]
+ mov r0, r7 movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -106,17 +106,17 @@ G_M64833_IG03: ; bbWeight=1, gcVars=00400000 {V07}, gcrefRegs=0400 {r10},
; GC ptr vars +{V08}
movs r3, 0
str r3, [sp+0x34] // [V11 loc4]- cmp r8, 0+ cmp r7, 0 ble SHORT G_M64833_IG09
;; size=32 bbWeight=1 PerfScore 13.00-G_M64833_IG04: ; bbWeight=0.50, gcVars=00400040 {V07 V08}, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, gcvars, byref, isz+G_M64833_IG04: ; bbWeight=0.50, gcVars=00040040 {V07 V08}, gcrefRegs=0610 {r4 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0]
ldr r2, [r4+0x04]
str r2, [sp+0x2C] // [V31 cse2]- cmp r2, r8+ cmp r2, r7 blt SHORT G_M64833_IG07
;; size=8 bbWeight=0.50 PerfScore 2.00-G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=0480 {r7 r10}, byrefRegs=0000 {}, byref, isz+G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=0600 {r9 r10}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
@@ -160,15 +160,15 @@ G_M64833_IG05: ; bbWeight=3.96, gcrefRegs=0480 {r7 r10}, byrefRegs=0000 {
; byrRegs -[r0]
adds r4, r4, 1
str r4, [sp+0x34] // [V11 loc4]- cmp r4, r8+ cmp r4, r7 blt SHORT G_M64833_IG05
;; size=78 bbWeight=3.96 PerfScore 118.80-G_M64833_IG06: ; bbWeight=1, gcrefRegs=0480 {r7 r10}, byrefRegs=0000 {}, byref, isz+G_M64833_IG06: ; bbWeight=1, gcrefRegs=0600 {r9 r10}, byrefRegs=0000 {}, byref, isz ldr r4, [sp+0x24] // [V08 loc1]
; gcrRegs +[r4]
b SHORT G_M64833_IG09
;; size=4 bbWeight=1 PerfScore 2.00-G_M64833_IG07: ; bbWeight=0.04, gcrefRegs=0480 {r7 r10}, byrefRegs=0000 {}, byref, isz+G_M64833_IG07: ; bbWeight=0.04, gcrefRegs=0600 {r9 r10}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
@@ -214,42 +214,42 @@ G_M64833_IG07: ; bbWeight=0.04, gcrefRegs=0480 {r7 r10}, byrefRegs=0000 {
; gcrRegs -[r1 r3]
; byrRegs -[r0]
adds r4, r4, 1- cmp r4, r8+ cmp r4, r7 str r2, [sp+0x2C] // [V31 cse2]
str r4, [sp+0x34] // [V11 loc4]
blt SHORT G_M64833_IG07
;; size=90 bbWeight=0.04 PerfScore 1.36-G_M64833_IG08: ; bbWeight=0.02, gcrefRegs=0480 {r7 r10}, byrefRegs=0000 {}, byref+G_M64833_IG08: ; bbWeight=0.02, gcrefRegs=0600 {r9 r10}, byrefRegs=0000 {}, byref ldr r4, [sp+0x24] // [V08 loc1]
; gcrRegs +[r4]
;; size=2 bbWeight=0.02 PerfScore 0.02-G_M64833_IG09: ; bbWeight=1, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, byref, isz
- str r9, [sp+0x38] // [V09 loc2]
- cmp r9, r5+G_M64833_IG09: ; bbWeight=1, gcrefRegs=0610 {r4 r9 r10}, byrefRegs=0000 {}, byref, isz
+ str r8, [sp+0x38] // [V09 loc2]
+ cmp r8, r5 bge G_M64833_IG21
;; size=10 bbWeight=1 PerfScore 3.00-G_M64833_IG10: ; bbWeight=4, gcrefRegs=0480 {r7 r10}, byrefRegs=0000 {}, byref+G_M64833_IG10: ; bbWeight=4, gcrefRegs=0600 {r9 r10}, byrefRegs=0000 {}, byref ; gcrRegs -[r4]- str r10, [sp+0x68] // [V04 arg4]
- mov r0, r10+ str r9, [sp+0x68] // [V04 arg4]
+ mov r0, r9 ; gcrRegs +[r0]- mov r1, r9+ mov r1, r8 movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r2, [r0]
ldr r3, [r4]
blx r3 // <unknown method>- ; gcrRegs -[r10]+ ; gcrRegs -[r9] ; gcr arg pop 0- mov r8, r0
- ; gcrRegs +[r8]+ mov r7, r0
+ ; gcrRegs +[r7] movs r4, 0
; gcrRegs +[r4]
str r4, [sp+0x20] // [V14 loc7]
; GC ptr vars +{V14}
;; size=30 bbWeight=4 PerfScore 48.00-G_M64833_IG11: ; bbWeight=32, gcVars=00400840 {V07 V08 V14}, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz+G_M64833_IG11: ; bbWeight=32, gcVars=00041040 {V07 V08 V14}, gcrefRegs=0480 {r7 r10}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0 r4]
movs r3, 0
ldr lr, [sp+0x24] // [V08 loc1]
@@ -260,7 +260,7 @@ G_M64833_IG11: ; bbWeight=32, gcVars=00400840 {V07 V08 V14}, gcrefRegs=01
cmp r12, 0
ble SHORT G_M64833_IG18
;; size=22 bbWeight=32 PerfScore 224.00-G_M64833_IG12: ; bbWeight=64, gcrefRegs=4180 {r7 r8 lr}, byrefRegs=0000 {}, byref, isz+G_M64833_IG12: ; bbWeight=64, gcrefRegs=4480 {r7 r10 lr}, byrefRegs=0000 {}, byref, isz add r0, lr, 8
; byrRegs +[r0]
str r3, [sp+0x30] // [V16 loc9]
@@ -273,26 +273,26 @@ G_M64833_IG12: ; bbWeight=64, gcrefRegs=4180 {r7 r8 lr}, byrefRegs=0000 {
; gcrRegs +[r0]
; byrRegs -[r0]
cmp r0, 0- str r7, [sp+0x6C] // [V05 arg5]+ str r10, [sp+0x6C] // [V05 arg5] beq SHORT G_M64833_IG14- ;; size=20 bbWeight=64 PerfScore 576.00
-G_M64833_IG13: ; bbWeight=256, gcVars=00400842 {V07 V08 V14 V17}, gcrefRegs=0101 {r0 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r1 r7 lr]+ ;; size=22 bbWeight=64 PerfScore 576.00
+G_M64833_IG13: ; bbWeight=256, gcVars=00041042 {V07 V08 V14 V17}, gcrefRegs=0081 {r0 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r1 r10 lr] add r2, sp, 60 // [V03 arg3]
add r1, sp, 56 // [V09 loc2]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc- ldr r7, [r0]+ ldr r9, [r0] ldr r10, [r4]
blx r10 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
beq SHORT G_M64833_IG15- ldr r7, [sp+0x1C]
- ; gcrRegs +[r7]
- ldr r10, [r7+0x08]+ ldr r9, [sp+0x1C]
+ ; gcrRegs +[r9]
+ ldr r10, [r9+0x08] ; gcrRegs +[r10]
ldrsb r0, [r10]
mov r0, r10
@@ -316,50 +316,52 @@ G_M64833_IG13: ; bbWeight=256, gcVars=00400842 {V07 V08 V14 V17}, gcrefRe
; gcr arg pop 0
movs r0, 0
; gcrRegs +[r0]- str r0, [r7+0x08]+ str r0, [r9+0x08] b SHORT G_M64833_IG17- ;; size=74 bbWeight=256 PerfScore 7168.00
-G_M64833_IG14: ; bbWeight=32, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r7]
- ldr r7, [sp+0x1C] // [V17 loc10]
- ; gcrRegs +[r7]...
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T03] ( 4, 14 ) ref -> r5 this class-hnd single-def <System.Net.HttpEndPointListener>
-; V01 arg1 [V01,T02] ( 5, 22 ) ref -> r4 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs>
-; V02 loc0 [V02,T01] ( 3, 24 ) ubyte -> r6 +; V00 this [V00,T02] ( 4, 18 ) ref -> r5 this class-hnd single-def <System.Net.HttpEndPointListener>
+; V01 arg1 [V01,T01] ( 5, 26 ) ref -> r4 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs>
+; V02 loc0 [V02,T03] ( 2, 16 ) ubyte -> r0 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
; V05 tmp2 [V05,T00] ( 3, 48 ) ref -> r0 class-hnd "Inlining Arg" <System.Net.Sockets.Socket>
@@ -18,15 +18,15 @@
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref "field V06._source (fldOffset=0x0)" P-INDEP
;* V09 tmp6 [V09,T04] ( 0, 0 ) ref -> zero-ref "field V07._source (fldOffset=0x0)" P-INDEP-; V10 PSPSym [V10,T05] ( 1, 1 ) int -> [sp+0x00] do-not-enreg[V] "PSPSym"+; V10 PSPSym [V10,T05] ( 1, 1 ) int -> [sp+0x04] do-not-enreg[V] "PSPSym" ;-; Lcl frame size = 4+; Lcl frame size = 8
G_M14120_IG01: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG- push {r3,r4,r5,r6,r11,lr}+ push {r2,r3,r4,r5,r11,lr} add r11, sp, 16
add r2, sp, 24- str r2, [sp]+ str r2, [sp+0x04] mov r5, r0
; gcrRegs +[r5]
mov r4, r1
@@ -47,13 +47,10 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0- mov r6, r0
- ;; size=28 bbWeight=8 PerfScore 88.00+ ;; size=26 bbWeight=8 PerfScore 80.00 G_M14120_IG03: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz- cmp r6, 0
- bne SHORT G_M14120_IG05
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M14120_IG04: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref+ cmp r0, 0
+ bne SHORT G_M14120_IG04 mov r0, r5
; gcrRegs +[r0]
mov r1, r4
@@ -64,29 +61,26 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0- ;; size=16 bbWeight=4 PerfScore 24.00
-G_M14120_IG05: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- cmp r6, 0
- beq SHORT G_M14120_IG02
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc+ b SHORT G_M14120_IG02
+ ;; size=22 bbWeight=8 PerfScore 72.00
+G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4-r5]- pop {r3,r4,r5,r6,r11,pc}+ pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00-G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- push {r3,r4,r5,r6,r11,lr}+G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ push {r2,r3,r4,r5,r11,lr} add r3, r11, 8- str r3, [sp]+ str r3, [sp+0x04] ;; size=10 bbWeight=0 PerfScore 0.00-G_M14120_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r0, LOW ADDRESS G_M14120_IG06
- movt r0, HIGH ADDRESS G_M14120_IG06+G_M14120_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movw r0, LOW ADDRESS G_M14120_IG04
+ movt r0, HIGH ADDRESS G_M14120_IG04 ;; size=8 bbWeight=0 PerfScore 0.00-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend
+ pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 16, PerfScore 193.00, instruction count 34, allocated bytes for code 94 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)+; Total bytes of code 90, prolog size 16, PerfScore 201.00, instruction count 32, allocated bytes for code 90 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts) ; ============================================================
Unwind Info:
@@ -98,11 +92,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 36 (0x00024) Actual length = 72 (0x000048)+ Function Length : 34 (0x00022) Actual length = 68 (0x000044) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32 FF end
FF end
@@ -119,10 +113,10 @@ Unwind Info:
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32 FF end
FF end
*************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
@@ -8,29 +8,30 @@
; 3 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T09] ( 4, 4 ) ref -> r4 this class-hnd single-def <Xunit.AggregateMessageSink>
-; V01 arg1 [V01,T06] ( 3, 5.35) ref -> r5 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
-; V02 arg2 [V02,T07] ( 3, 5.35) ref -> r6 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]>
-; V03 loc0 [V03,T05] ( 4, 8.70) ubyte -> r7
-; V04 loc1 [V04,T14] ( 4, 1.50) ref -> [sp+0x04] class-hnd EH-live single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>+; V00 this [V00,T10] ( 4, 4 ) ref -> r4 this class-hnd single-def <Xunit.AggregateMessageSink>
+; V01 arg1 [V01,T07] ( 3, 5.35) ref -> r5 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
+; V02 arg2 [V02,T08] ( 3, 5.35) ref -> r6 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]>
+; V03 loc0 [V03,T06] ( 4, 8.70) ubyte -> r7
+; V04 loc1 [V04,T15] ( 4, 1.50) ref -> [sp+0x04] class-hnd EH-live single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]> ; V05 loc2 [V05 ] ( 5, 4 ) ubyte -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V06 loc3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V08 tmp1 [V08,T11] ( 2, 4 ) ubyte -> r0 "Inlining Arg"
-; V09 tmp2 [V09,T10] ( 2, 4 ) ref -> r9 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>+; V08 tmp1 [V08,T12] ( 2, 4 ) ubyte -> r0 "Inlining Arg"
+; V09 tmp2 [V09,T11] ( 2, 4 ) ref -> r9 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>-;* V11 tmp4 [V11,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V11 tmp4 [V11,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>-; V13 tmp6 [V13,T01] ( 5, 17.00) ref -> r9 single-def "field V06._list (fldOffset=0x0)" P-INDEP
-; V14 tmp7 [V14,T03] ( 2, 6.70) ref -> r0 "field V06._current (fldOffset=0x4)" P-INDEP+; V13 tmp6 [V13,T02] ( 4, 16.34) ref -> r9 single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V14 tmp7 [V14,T04] ( 2, 6.70) ref -> r0 "field V06._current (fldOffset=0x4)" P-INDEP ; V15 tmp8 [V15,T00] ( 6, 18.39) int -> [sp+0x08] "field V06._index (fldOffset=0x8)" P-INDEP-; V16 tmp9 [V16,T04] ( 3, 9.65) int -> r10 single-def "field V06._version (fldOffset=0xc)" P-INDEP
-; V17 tmp10 [V17,T12] ( 3, 3 ) ref -> r9 single-def "field V10._list (fldOffset=0x0)" P-INDEP+; V16 tmp9 [V16,T05] ( 2, 9 ) int -> r10 single-def "field V06._version (fldOffset=0xc)" P-INDEP
+; V17 tmp10 [V17,T13] ( 3, 3 ) ref -> r9 single-def "field V10._list (fldOffset=0x0)" P-INDEP ;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x4)" P-INDEP-;* V19 tmp12 [V19,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T13] ( 2, 2 ) int -> r10 single-def "field V10._version (fldOffset=0xc)" P-INDEP
-; V21 tmp14 [V21,T02] ( 3, 20.09) ref -> r0 "arr expr"
-; V22 PSPSym [V22,T16] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"+;* V19 tmp12 [V19,T16] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
+; V20 tmp13 [V20,T14] ( 2, 2 ) int -> r10 single-def "field V10._version (fldOffset=0xc)" P-INDEP
+; V21 tmp14 [V21,T01] ( 3, 20.09) ref -> r0 "arr expr"
+; V22 PSPSym [V22,T17] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
+; V23 cse0 [V23,T03] ( 2, 7.99) int -> r0 "CSE - aggressive" ;
; Lcl frame size = 20
@@ -56,7 +57,7 @@ G_M52679_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
str r8, [sp+0x04]
; GC ptr vars +{V04}
;; size=10 bbWeight=1 PerfScore 3.00-G_M52679_IG03: ; bbWeight=1, gcVars=00004000 {V04}, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz+G_M52679_IG03: ; bbWeight=1, gcVars=00008000 {V04}, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x0C]
cmp r1, 0
bne SHORT G_M52679_IG09
@@ -93,19 +94,19 @@ G_M52679_IG06: ; bbWeight=8, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000
; gcrRegs -[r4]
ldr r0, [r9+0x0C]
cmp r10, r0- bne SHORT G_M52679_IG10+ bne SHORT G_M52679_IG11 ;; size=8 bbWeight=8 PerfScore 24.00
G_M52679_IG07: ; bbWeight=4.00, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x08]
cmp r3, r0- bhs SHORT G_M52679_IG14+ bhs SHORT G_M52679_IG12 ;; size=8 bbWeight=4.00 PerfScore 11.99
G_M52679_IG08: ; bbWeight=3.35, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x04]
; gcrRegs +[r0]
ldr r2, [r0+0x04]
cmp r3, r2- bhs SHORT G_M52679_IG12+ bhs SHORT G_M52679_IG10 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -139,24 +140,14 @@ G_M52679_IG09: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byre
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M52679_IG10: ; bbWeight=0.65, gcrefRegs=0300 {r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r9]
- ldr r0, [r9+0x0C]
- cmp r10, r0
- bne SHORT G_M52679_IG13
- ;; size=8 bbWeight=0.65 PerfScore 1.96
-G_M52679_IG11: ; bbWeight=4, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r9]
- b SHORT G_M52679_IG14
- ;; size=2 bbWeight=4 PerfScore 4.00
-G_M52679_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M52679_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M52679_IG13: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref+G_M52679_IG11: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref ; gcrRegs +[r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -165,12 +156,12 @@ G_M52679_IG13: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byre
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M52679_IG14: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz+G_M52679_IG12: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz ldrb r0, [sp+0x0C] // [V05 loc2]
cmp r0, 0- beq SHORT G_M52679_IG16+ beq SHORT G_M52679_IG14 ;; size=8 bbWeight=1 PerfScore 3.00-G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref+G_M52679_IG13: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref mov r0, r8
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -180,37 +171,37 @@ G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, b
; gcrRegs -[r0 r8]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00-G_M52679_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov r0, r7
;; size=2 bbWeight=1 PerfScore 1.00-G_M52679_IG17: ; bbWeight=1, epilog, nogc, extend+G_M52679_IG15: ; bbWeight=1, epilog, nogc, extend add sp, 20
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00-G_M52679_IG18: ; bbWeight=0, gcVars=00004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V04 V14}+G_M52679_IG16: ; bbWeight=0, gcVars=00008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V04 V15} push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
add r3, r11, 8
str r3, [sp]
;; size=10 bbWeight=0 PerfScore 0.00-G_M52679_IG19: ; bbWeight=0, gcVars=00004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M52679_IG17: ; bbWeight=0, gcVars=00008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r0, [r11-0x24] // [V05 loc2]
cmp r0, 0- beq SHORT G_M52679_IG20+ beq SHORT G_M52679_IG18 ldr r0, [r11-0x2C] // [V04 loc1]
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff- ; GC ptr vars -{V04 V14}+ ; GC ptr vars -{V04 V15} blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
;; size=22 bbWeight=0 PerfScore 0.00-G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc+G_M52679_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 24, PerfScore 144.56, instruction count 98, allocated bytes for code 276 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)+; Total bytes of code 266, prolog size 24, PerfScore 138.60, instruction count 94, allocated bytes for code 266 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts) ; ============================================================
Unwind Info:
@@ -222,7 +213,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 120 (0x00078) Actual length = 240 (0x0000f0)+ Function Length : 115 (0x00073) Actual length = 230 (0x0000e6) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -250,4 +241,4 @@ Unwind Info:
*************** EH table for Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M52679_IG03..G_M52679_IG14) handled by [G_M52679_IG18..END) (fault)+EH#0: try [G_M52679_IG03..G_M52679_IG12) handled by [G_M52679_IG16..END) (fault)
@@ -8,25 +8,26 @@
; 2 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T06] ( 4, 4 ) ref -> r5 this class-hnd single-def <Microsoft.Extensions.Configuration.ConfigurationManager>
-; V01 loc0 [V01,T08] ( 6, 3 ) ref -> [sp+0x04] class-hnd EH-live single-def <<unknown class>>+; V00 this [V00,T07] ( 4, 4 ) ref -> r5 this class-hnd single-def <Microsoft.Extensions.Configuration.ConfigurationManager>
+; V01 loc0 [V01,T09] ( 6, 3 ) ref -> [sp+0x04] class-hnd EH-live single-def <<unknown class>> ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.Extensions.Configuration.IConfigurationProvider]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.Extensions.Configuration.IConfigurationProvider>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V05 tmp1 [V05,T07] ( 2, 4 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>+; V05 tmp1 [V05,T08] ( 2, 4 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Extensions.Configuration.IConfigurationProvider]>-;* V07 tmp3 [V07,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V07 tmp3 [V07,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V09 tmp5 [V09,T01] ( 5, 17.00) ref -> r7 single-def "field V02._list (fldOffset=0x0)" P-INDEP+; V09 tmp5 [V09,T02] ( 4, 16.34) ref -> r7 single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V10 tmp6 [V10,T04] ( 2, 5.35) ref -> r0 "field V02._current (fldOffset=0x4)" P-INDEP
; V11 tmp7 [V11,T00] ( 6, 18.39) int -> r9 "field V02._index (fldOffset=0x8)" P-INDEP-; V12 tmp8 [V12,T03] ( 3, 9.65) int -> r8 single-def "field V02._version (fldOffset=0xc)" P-INDEP
-; V13 tmp9 [V13,T09] ( 3, 3 ) ref -> r7 single-def "field V06._list (fldOffset=0x0)" P-INDEP+; V12 tmp8 [V12,T05] ( 2, 9 ) int -> r8 single-def "field V02._version (fldOffset=0xc)" P-INDEP
+; V13 tmp9 [V13,T10] ( 3, 3 ) ref -> r7 single-def "field V06._list (fldOffset=0x0)" P-INDEP ;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._current (fldOffset=0x4)" P-INDEP-;* V15 tmp11 [V15,T11] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x8)" P-INDEP
-; V16 tmp12 [V16,T10] ( 2, 2 ) int -> r8 single-def "field V06._version (fldOffset=0xc)" P-INDEP
-; V17 tmp13 [V17,T02] ( 3, 20.09) ref -> r0 "arr expr"
-; V18 PSPSym [V18,T12] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"+;* V15 tmp11 [V15,T12] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x8)" P-INDEP
+; V16 tmp12 [V16,T11] ( 2, 2 ) int -> r8 single-def "field V06._version (fldOffset=0xc)" P-INDEP
+; V17 tmp13 [V17,T01] ( 3, 20.09) ref -> r0 "arr expr"
+; V18 PSPSym [V18,T13] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V19 cse0 [V19,T03] ( 2, 7.99) int -> r0 "CSE - aggressive" ;
; Lcl frame size = 16
@@ -53,7 +54,7 @@ G_M4766_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
str r6, [sp+0x04]
; GC ptr vars +{V01}
;; size=20 bbWeight=1 PerfScore 8.00-G_M4766_IG03: ; bbWeight=1, gcVars=00000100 {V01}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz+G_M4766_IG03: ; bbWeight=1, gcVars=00000200 {V01}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0]
mov r0, r6
; gcrRegs +[r0]
@@ -79,12 +80,12 @@ G_M4766_IG04: ; bbWeight=2, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000
G_M4766_IG05: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r7+0x0C]
cmp r8, r0- bne SHORT G_M4766_IG10+ bne SHORT G_M4766_IG09 ;; size=6 bbWeight=8 PerfScore 24.00
G_M4766_IG06: ; bbWeight=4.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r7+0x08]
cmp r9, r0- bhs SHORT G_M4766_IG11+ bhs SHORT G_M4766_IG10 ;; size=6 bbWeight=4.00 PerfScore 11.99
G_M4766_IG07: ; bbWeight=3.35, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r7+0x04]
@@ -118,14 +119,8 @@ G_M4766_IG09: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M4766_IG10: ; bbWeight=0.65, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5 r7]
- ldr r0, [r7+0x0C]
- cmp r8, r0
- bne SHORT G_M4766_IG09
- ;; size=6 bbWeight=0.65 PerfScore 1.96
-G_M4766_IG11: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7]+G_M4766_IG10: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r5] mov r0, r6
; gcrRegs +[r0]
movw r4, 0xd1ff
@@ -144,34 +139,34 @@ G_M4766_IG11: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
; gcrRegs -[r0 r5]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 10.00-G_M4766_IG12: ; bbWeight=1, epilog, nogc, extend+G_M4766_IG11: ; bbWeight=1, epilog, nogc, extend add sp, 16
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00-G_M4766_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc+G_M4766_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
add r3, r11, 8
str r3, [sp+0x04]
;; size=10 bbWeight=0 PerfScore 0.00-G_M4766_IG14: ; bbWeight=0, gcVars=00000100 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V01}+G_M4766_IG13: ; bbWeight=0, gcVars=00000200 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V01 V09} ldr r0, [r11-0x24] // [V01 loc0]
; gcrRegs +[r0]
cmp r0, 0- beq SHORT G_M4766_IG15+ beq SHORT G_M4766_IG14 movw r4, 0xd1ff
movt r4, 0xd1ff
ldr r3, [r4]- ; GC ptr vars -{V01}+ ; GC ptr vars -{V01 V09} blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
;; size=20 bbWeight=0 PerfScore 0.00-G_M4766_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc+G_M4766_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 202, prolog size 16, PerfScore 111.08, instruction count 76, allocated bytes for code 202 (MethodHash=07d7ed61) for method Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts)+; Total bytes of code 196, prolog size 16, PerfScore 109.12, instruction count 73, allocated bytes for code 196 (MethodHash=07d7ed61) for method Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts) ; ============================================================
Unwind Info:
@@ -183,7 +178,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 84 (0x00054) Actual length = 168 (0x0000a8)+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -210,4 +205,4 @@ Unwind Info:
*************** EH table for Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M4766_IG03..G_M4766_IG11) handled by [G_M4766_IG13..END) (fault)+EH#0: try [G_M4766_IG03..G_M4766_IG10) handled by [G_M4766_IG12..END) (fault)
@@ -8,12 +8,12 @@
; 6 inlinees with PGO data; 14 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T57] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T00] ( 27, 93 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode>+; V00 this [V00,T58] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T00] ( 26, 91 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V03 loc2 [V03,T32] ( 3, 12 ) ubyte -> r0
; V04 loc3 [V04,T26] ( 4, 12 ) ubyte -> r0 -;* V05 loc4 [V05,T63] ( 0, 0 ) ubyte -> zero-ref +;* V05 loc4 [V05,T64] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V07 loc6 [V07,T12] ( 3, 24 ) int -> r6
; V08 loc7 [V08,T01] ( 7, 76 ) int -> r5
@@ -25,7 +25,7 @@
;* V14 tmp4 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T34] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V16 tmp6 [V16,T41] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V17 tmp7 [V17,T58] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V17 tmp7 [V17,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V18 tmp8 [V18,T16] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V19 tmp9 [V19,T39] ( 4, 10 ) int -> r6 "Inline return value spill temp"
; V20 tmp10 [V20,T52] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
@@ -34,7 +34,7 @@
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V24 tmp14 [V24,T35] ( 4, 11 ) ref -> r7 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V25 tmp15 [V25,T42] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V26 tmp16 [V26,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V26 tmp16 [V26,T60] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V27 tmp17 [V27,T17] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V28 tmp18 [V28,T14] ( 4, 20 ) int -> r6 "Inlining Arg"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
@@ -42,10 +42,10 @@
; V31 tmp21 [V31,T46] ( 4, 8 ) int -> r7 "Inline return value spill temp"
; V32 tmp22 [V32,T53] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V33 tmp23 [V33,T21] ( 4, 16 ) ref -> r6 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>-; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r1 "CASTCLASS eval op1"
-; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r1 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>+; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r0 "CASTCLASS eval op1"
+; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r0 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V36 tmp26 [V36,T43] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V37 tmp27 [V37,T60] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable"+; V37 tmp27 [V37,T61] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable" ; V38 tmp28 [V38,T10] ( 8, 27 ) ref -> r4 class-hnd "spilling QMark2" <<unknown class>>
; V39 tmp29 [V39,T33] ( 3, 12 ) int -> r7 "Inlining Arg"
; V40 tmp30 [V40,T40] ( 4, 10 ) int -> r6 "Inline return value spill temp"
@@ -62,7 +62,7 @@
;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V52 tmp42 [V52,T36] ( 4, 11 ) ref -> r3 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V53 tmp43 [V53,T44] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V54 tmp44 [V54,T61] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V54 tmp44 [V54,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V55 tmp45 [V55,T18] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
;* V56 tmp46 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V57 tmp47 [V57,T49] ( 3, 8 ) ref -> r4 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
@@ -70,7 +70,7 @@
;* V59 tmp49 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V60 tmp50 [V60,T37] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V61 tmp51 [V61,T45] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V62 tmp52 [V62,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V62 tmp52 [V62,T63] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V63 tmp53 [V63,T19] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V64 tmp54 [V64,T28] ( 3, 12 ) ref -> r1 "arr expr"
; V65 tmp55 [V65,T29] ( 3, 12 ) ref -> r0 "arr expr"
@@ -81,7 +81,8 @@
; V70 cse1 [V70,T07] ( 3, 40 ) ref -> r1 "CSE - aggressive"
; V71 cse2 [V71,T55] ( 3, 6 ) ref -> r0 "CSE - conservative"
; V72 cse3 [V72,T56] ( 3, 6 ) ref -> r1 "CSE - conservative"-; V73 rat0 [V73,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable"+; V73 cse4 [V73,T57] ( 3, 6 ) ref -> r1 "CSE - conservative"
+; V74 rat0 [V74,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable" ;
; Lcl frame size = 0
@@ -109,7 +110,7 @@ G_M35244_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r4]
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50-G_M35244_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M35244_IG05: ; bbWeight=4, gcVars=000000000000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4]
ldrb r0, [r4+0x1E]
subs r3, r0, 3
@@ -399,20 +400,26 @@ G_M35244_IG30: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- ldr r1, [r4+0x04]+ ldr r2, [r4+0x04]
+ ; gcrRegs +[r2]
+ mov r1, r2 ; gcrRegs +[r1]- cmp r1, 0+ mov r0, r1
+ ; gcrRegs +[r0]
+ cmp r0, 0 beq SHORT G_M35244_IG33- ;; size=56 bbWeight=2 PerfScore 40.00
-G_M35244_IG31: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0+ ;; size=60 bbWeight=2 PerfScore 44.00
+G_M35244_IG31: ; bbWeight=1, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2]
+ ldr r0, [r0]
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3 bne SHORT G_M35244_IG33
;; size=14 bbWeight=1 PerfScore 5.00
G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz+ ; gcrRegs -[r1] adds r0, r4, 4
; byrRegs +[r0]
mov r1, r6
@@ -424,14 +431,13 @@ G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
; byrRegs -[r0]
b SHORT G_M35244_IG37
;; size=16 bbWeight=2 PerfScore 12.00-G_M35244_IG33: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4 r6]
- ldr r1, [r4+0x04]
- ; gcrRegs +[r1]+G_M35244_IG33: ; bbWeight=2, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1 r6] mov r4, r1+ ; gcrRegs +[r4] cmp r4, 0
beq SHORT G_M35244_IG36- ;; size=8 bbWeight=2 PerfScore 8.00+ ;; size=6 bbWeight=2 PerfScore 6.00 G_M35244_IG34: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4]
movw r3, 0xd1ff
@@ -754,7 +760,7 @@ G_M35244_IG68: ; bbWeight=0.50, epilog, nogc, extend
bx r3 // <unknown method>
; gcr arg pop 0
;; size=6 bbWeight=0.50 PerfScore 1.00-G_M35244_IG69: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M35244_IG69: ; bbWeight=0, gcVars=000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0 r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -782,7 +788,7 @@ RWD00 dd G_M35244_IG38
dd G_M35244_IG38
-; Total bytes of code 950, prolog size 10, PerfScore 1006.50, instruction count 378, allocated bytes for code 950 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)+; Total bytes of code 952, prolog size 10, PerfScore 1008.50, instruction count 379, allocated bytes for code 952 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts) ; ============================================================
Unwind Info:
@@ -794,7 +800,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 475 (0x001db) Actual length = 950 (0x0003b6)+ Function Length : 476 (0x001dc) Actual length = 952 (0x0003b8) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,38 +9,38 @@
; Final local variable assignments
;
; V00 this [V00,T13] ( 5,131 ) ref -> r5 this class-hnd single-def <ILCompiler.PEWriter.SectionBuilder>-; V01 arg1 [V01,T38] ( 3, 3 ) ref -> r4 class-hnd single-def <System.Reflection.Metadata.BlobBuilder>+; V01 arg1 [V01,T39] ( 3, 3 ) ref -> r4 class-hnd single-def <System.Reflection.Metadata.BlobBuilder> ; V02 arg2 [V02 ] ( 4, 4 ) long -> [sp+0x30] single-def-; V03 arg3 [V03,T45] ( 1, 1 ) ref -> [sp+0x60] class-hnd single-def <System.IO.Stream>+; V03 arg3 [V03,T46] ( 1, 1 ) ref -> [sp+0x60] class-hnd single-def <System.IO.Stream> ; V04 loc0 [V04,T07] ( 5,194 ) ref -> r6 class-hnd exact single-def <ILCompiler.PEWriter.RelocationHelper>-; V05 loc1 [V05,T32] ( 7, 22 ) ref -> [sp+0x14] class-hnd EH-live spill-single-def <<unknown class>>
-; V06 loc2 [V06,T22] ( 5, 80 ) ref -> [sp+0x10] class-hnd spill-single-def <<unknown class>>+; V05 loc1 [V05,T33] ( 7, 22 ) ref -> [sp+0x14] class-hnd EH-live spill-single-def <<unknown class>>
+; V06 loc2 [V06,T21] ( 5, 80 ) ref -> r4 class-hnd <<unknown class>> ; V07 loc3 [V07,T26] ( 2, 68 ) int -> [sp+0x2C] spill-single-def
;* V08 loc4 [V08 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[ILCompiler.PEWriter.PlacedObjectData]>
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <ILCompiler.PEWriter.PlacedObjectData>-; V10 loc6 [V10,T23] ( 3, 80 ) ref -> [sp+0x0C] class-hnd exact spill-single-def <ILCompiler.DependencyAnalysis.Relocation[]>+; V10 loc6 [V10,T22] ( 3, 80 ) ref -> [sp+0x10] class-hnd exact spill-single-def <ILCompiler.DependencyAnalysis.Relocation[]> ; V11 loc7 [V11,T05] ( 5,264 ) int -> [sp+0x28]
;* V12 loc8 [V12 ] ( 0, 0 ) struct (12) zero-ref <ILCompiler.DependencyAnalysis.Relocation>-; V13 loc9 [V13,T09] ( 3,192 ) int -> r8 +; V13 loc9 [V13,T09] ( 3,192 ) int -> r7 ;* V14 loc10 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 loc11 [V15 ] ( 0, 0 ) struct (12) zero-ref <ILCompiler.PEWriter.SymbolTarget>
; V16 loc12 [V16,T08] ( 3,192 ) ref -> r0 class-hnd <<unknown class>>
; V17 loc13 [V17,T12] ( 3,160 ) int -> lr
; V18 loc14 [V18,T15] ( 2,128 ) int -> r0
; V19 OutArgs [V19 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V20 tmp1 [V20,T35] ( 3, 6 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <ILCompiler.PEWriter.RelocationHelper>
-; V21 tmp2 [V21,T42] ( 2, 4 ) ref -> r4 class-hnd single-def "dup spill" <<unknown class>>
-; V22 tmp3 [V22,T36] ( 3, 6 ) ref -> r7 class-hnd single-def "impAppendStmt" <<unknown class>>+; V20 tmp1 [V20,T36] ( 3, 6 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <ILCompiler.PEWriter.RelocationHelper>
+; V21 tmp2 [V21,T43] ( 2, 4 ) ref -> r4 class-hnd single-def "dup spill" <<unknown class>>
+; V22 tmp3 [V22,T37] ( 3, 6 ) ref -> r7 class-hnd single-def "impAppendStmt" <<unknown class>> ;* V23 tmp4 [V23 ] ( 0, 0 ) ref -> zero-ref single-def-; V24 tmp5 [V24,T41] ( 5, 4.50) ref -> r4
-; V25 tmp6 [V25,T37] ( 5, 5 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V26 tmp7 [V26,T43] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V27 tmp8 [V27,T33] ( 7, 14 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>+; V24 tmp5 [V24,T42] ( 5, 4.50) ref -> r4
+; V25 tmp6 [V25,T38] ( 5, 5 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp7 [V26,T44] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V27 tmp8 [V27,T34] ( 7, 14 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V28 tmp9 [V28 ] ( 0, 0 ) ref -> zero-ref
;* V29 tmp10 [V29 ] ( 0, 0 ) ref -> zero-ref
;* V30 tmp11 [V30 ] ( 0, 0 ) ref -> zero-ref single-def-; V31 tmp12 [V31,T44] ( 2, 2 ) ref -> r1 single-def
-; V32 tmp13 [V32,T31] ( 3, 24 ) ref -> r9 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]>+; V31 tmp12 [V31,T45] ( 2, 2 ) ref -> r1 single-def
+; V32 tmp13 [V32,T32] ( 3, 24 ) ref -> r9 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]> ;* V33 tmp14 [V33 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.PEWriter.PlacedObjectData]>
;* V34 tmp15 [V34 ] ( 0, 0 ) struct (12) zero-ref "Inline return value spill temp" <ILCompiler.PEWriter.SymbolTarget>
; V35 tmp16 [V35,T01] ( 3,384 ) ref -> r0 class-hnd "Inlining Arg" <<unknown class>>
@@ -49,41 +49,42 @@
;* V38 tmp19 [V38 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <ILCompiler.PEWriter.SymbolTarget>
;* V39 tmp20 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V40 tmp21 [V40,T02] ( 3,384 ) ref -> r0 class-hnd "Inlining Arg" <<unknown class>>-;* V41 tmp22 [V41,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V41 tmp22 [V41,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V42 tmp23 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]>
;* V43 tmp24 [V43 ] ( 0, 0 ) ref -> zero-ref "field V09.Data (fldOffset=0x0)" P-INDEP-; V44 tmp25 [V44,T25] ( 2, 72 ) int -> [sp+0x24] spill-single-def "field V09.Offset (fldOffset=0x4)" P-INDEP
-; V45 tmp26 [V45,T14] ( 3,128 ) ref -> [sp+0x08] spill-single-def "field V12.Target (fldOffset=0x0)" P-INDEP
-; V46 tmp27 [V46,T10] ( 3,192 ) int -> r7 "field V12.RelocType (fldOffset=0x4)" P-INDEP+; V44 tmp25 [V44,T24] ( 2, 72 ) int -> [sp+0x24] spill-single-def "field V09.Offset (fldOffset=0x4)" P-INDEP
+; V45 tmp26 [V45,T14] ( 3,128 ) ref -> [sp+0x0C] spill-single-def "field V12.Target (fldOffset=0x0)" P-INDEP
+; V46 tmp27 [V46,T10] ( 3,192 ) int -> r9 "field V12.RelocType (fldOffset=0x4)" P-INDEP ; V47 tmp28 [V47,T16] ( 2,128 ) int -> r8 "field V12.Offset (fldOffset=0x8)" P-INDEP
;* V48 tmp29 [V48 ] ( 0, 0 ) int -> zero-ref "field V15.SectionIndex (fldOffset=0x0)" P-INDEP
;* V49 tmp30 [V49 ] ( 0, 0 ) int -> zero-ref "field V15.Offset (fldOffset=0x4)" P-INDEP
;* V50 tmp31 [V50 ] ( 0, 0 ) int -> zero-ref "field V15.Size (fldOffset=0x8)" P-INDEP
; V51 tmp32 [V51,T06] ( 4,256 ) int -> r1 "field V34.SectionIndex (fldOffset=0x0)" P-INDEP
; V52 tmp33 [V52,T11] ( 3,192 ) int -> r2 "field V34.Offset (fldOffset=0x4)" P-INDEP-; V53 tmp34 [V53,T21] ( 2, 96 ) int -> r3 "field V34.Size (fldOffset=0x8)" P-INDEP+; V53 tmp34 [V53,T20] ( 2, 96 ) int -> r3 "field V34.Size (fldOffset=0x8)" P-INDEP ;* V54 tmp35 [V54 ] ( 0, 0 ) int -> zero-ref "field V38.SectionIndex (fldOffset=0x0)" P-INDEP
;* V55 tmp36 [V55 ] ( 0, 0 ) int -> zero-ref "field V38.Offset (fldOffset=0x4)" P-INDEP
;* V56 tmp37 [V56 ] ( 0, 0 ) int -> zero-ref "field V38.Size (fldOffset=0x8)" P-INDEP-; V57 tmp38 [V57,T18] ( 5, 84 ) ref -> r9 "V08.[000..004)"+; V57 tmp38 [V57,T25] ( 4, 68 ) ref -> [sp+0x08] spill-single-def "V08.[000..004)" ; V58 tmp39 [V58,T17] ( 6, 84 ) int -> [sp+0x20] "V08.[004..008)"-; V59 tmp40 [V59,T27] ( 3, 52 ) int -> [sp+0x1C] spill-single-def "V08.[008..012)"+; V59 tmp40 [V59,T30] ( 2, 36 ) int -> [sp+0x1C] spill-single-def "V08.[008..012)" ; V60 tmp41 [V60,T28] ( 2, 24 ) ref -> r0 "V08.[012..016)"
; V61 tmp42 [V61,T29] ( 2, 24 ) int -> lr "V08.[016..020)"
;* V62 tmp43 [V62 ] ( 0, 0 ) ref -> zero-ref "V33.[000..004)"
;* V63 tmp44 [V63 ] ( 0, 0 ) int -> zero-ref "V33.[004..008)"-; V64 tmp45 [V64,T34] ( 2, 8 ) int -> r3 "V33.[008..012)"+; V64 tmp45 [V64,T35] ( 2, 8 ) int -> r3 "V33.[008..012)" ;* V65 tmp46 [V65 ] ( 0, 0 ) ref -> zero-ref "V33.[012..016)"
;* V66 tmp47 [V66 ] ( 0, 0 ) int -> zero-ref "V33.[016..020)"-; V67 tmp48 [V67,T19] ( 3, 96 ) byref -> r1 "Spilling address for field-by-field copy"
-; V68 tmp49 [V68,T20] ( 3, 96 ) ref -> r1 "arr expr"+; V67 tmp48 [V67,T18] ( 3, 96 ) byref -> r1 "Spilling address for field-by-field copy"
+; V68 tmp49 [V68,T19] ( 3, 96 ) ref -> r1 "arr expr" ; V69 tmp50 [V69,T00] ( 4,512 ) byref -> r8 "BlockOp address local"
; V70 tmp51 [V70,T03] ( 3,384 ) ref -> r0 "arr expr"-; V71 PSPSym [V71,T46] ( 1, 1 ) int -> [sp+0x38] do-not-enreg[V] "PSPSym"
-;* V72 cse0 [V72,T47] ( 0, 0 ) int -> zero-ref "CSE - conservative"
-; V73 cse1 [V73,T24] ( 3, 80 ) int -> [sp+0x18] spill-single-def "CSE - moderate"
-; V74 rat0 [V74,T39] ( 3, 3 ) int -> [sp+0x30] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP
-; V75 rat1 [V75,T40] ( 3, 3 ) int -> [sp+0x34] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP+; V71 PSPSym [V71,T47] ( 1, 1 ) int -> [sp+0x38] do-not-enreg[V] "PSPSym"
+;* V72 cse0 [V72,T48] ( 0, 0 ) int -> zero-ref "CSE - conservative"
+; V73 cse1 [V73,T27] ( 2, 32 ) int -> r1 "CSE - conservative"
+; V74 cse2 [V74,T23] ( 3, 80 ) int -> [sp+0x18] spill-single-def "CSE - moderate"
+; V75 rat0 [V75,T40] ( 3, 3 ) int -> [sp+0x30] do-not-enreg[] "field V02.lo (fldOffset=0x0)" P-DEP
+; V76 rat1 [V76,T41] ( 3, 3 ) int -> [sp+0x34] do-not-enreg[] "field V02.hi (fldOffset=0x4)" P-DEP ;
; Lcl frame size = 60
@@ -115,8 +116,8 @@ G_M14932_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
mov r0, r6
ldr r1, [sp+0x60] // [V03 arg3]
; gcrRegs +[r1]- ldr r2, [sp+0x30] // [V74 rat0]
- ldr r3, [sp+0x34] // [V75 rat1]+ ldr r2, [sp+0x30] // [V75 rat0]
+ ldr r3, [sp+0x34] // [V76 rat1] movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
@@ -130,7 +131,7 @@ G_M14932_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1- bne G_M14932_IG24+ bne G_M14932_IG23 ;; size=66 bbWeight=1 PerfScore 22.00
G_M14932_IG03: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
@@ -156,7 +157,7 @@ G_M14932_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
ldr r1, [r1]
; gcrRegs +[r1]
cmp r1, 0- beq G_M14932_IG25+ beq G_M14932_IG24 adds r0, r4, 4
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -198,9 +199,9 @@ G_M14932_IG05: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
; gcrRegs -[r1]
; byrRegs -[r0]
cmp r7, 0- beq G_M14932_IG26+ beq G_M14932_IG25 cmp r4, 0- beq G_M14932_IG27+ beq G_M14932_IG26 movs r1, 0
str r1, [r8+0x08]
add r0, r8, 12
@@ -245,7 +246,7 @@ G_M14932_IG05: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
str r8, [sp+0x14] // [V05 loc1]
; GC ptr vars +{V05}
;; size=140 bbWeight=1 PerfScore 44.00-G_M14932_IG06: ; bbWeight=1, gcVars=0000000100000000 {V05}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz+G_M14932_IG06: ; bbWeight=1, gcVars=0000000200000000 {V05}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0]
mov r0, r8
; gcrRegs +[r0]
@@ -256,7 +257,7 @@ G_M14932_IG06: ; bbWeight=1, gcVars=0000000100000000 {V05}, gcrefRegs=016
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0- beq G_M14932_IG22+ beq G_M14932_IG21 ;; size=20 bbWeight=1 PerfScore 7.00
G_M14932_IG07: ; bbWeight=4, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
mov r0, r8
@@ -269,8 +270,6 @@ G_M14932_IG07: ; bbWeight=4, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}
; gcr arg pop 0
mov r4, r0
; gcrRegs +[r4]- str r4, [sp+0x10] // [V06 loc2]
- ; GC ptr vars +{V06} ldr r1, [r4+0x20]
ldr r0, [r4+0x1C]
; gcrRegs -[r0]
@@ -279,27 +278,29 @@ G_M14932_IG07: ; bbWeight=4, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}
ldr r9, [r4+0x0C]
; gcrRegs +[r9]
ldr r3, [r9+0x0C]+ str r9, [sp+0x08] // [V57 tmp38]
+ ; GC ptr vars +{V57} movs r2, 0
str r3, [sp+0x1C] // [V59 tmp40]
ldr r8, [sp+0x14] // [V05 loc1]
; gcrRegs +[r8]
b SHORT G_M14932_IG13- ;; size=44 bbWeight=4 PerfScore 68.00
-G_M14932_IG08: ; bbWeight=8, gcVars=0000000100400000 {V05 V06}, gcrefRegs=0371 {r0 r4 r5 r6 r8 r9}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r0]+ ;; size=46 bbWeight=4 PerfScore 68.00
+G_M14932_IG08: ; bbWeight=8, gcVars=0000000202000000 {V05 V57}, gcrefRegs=0171 {r0 r4 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r9] +[r0] str lr, [sp+0x24] // [V44 tmp25]
ldr r12, [r0+0x04]
; gcrRegs +[r12]- str r12, [sp+0x0C] // [V10 loc6]+ str r12, [sp+0x10] // [V10 loc6] ; GC ptr vars +{V10}
movs r0, 0
; gcrRegs -[r0]
ldr r1, [r12+0x04]- str r1, [sp+0x18] // [V73 cse1]+ str r1, [sp+0x18] // [V74 cse2] cmp r1, 0
ble SHORT G_M14932_IG15
;; size=24 bbWeight=8 PerfScore 64.00-G_M14932_IG09: ; bbWeight=64, gcVars=0000000100C00000 {V05 V06 V10}, gcrefRegs=1270 {r4 r5 r6 r9 r12}, byrefRegs=0000 {}, gcvars, byref, isz+G_M14932_IG09: ; bbWeight=64, gcVars=0000000202400000 {V05 V10 V57}, gcrefRegs=1070 {r4 r5 r6 r12}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r8]
mov r8, 12
str r0, [sp+0x28] // [V11 loc7]
@@ -309,20 +310,18 @@ G_M14932_IG09: ; bbWeight=64, gcVars=0000000100C00000 {V05 V06 V10}, gcre
; byrRegs +[r8]
ldr r3, [r8]
; gcrRegs +[r3]- str r3, [sp+0x08] // [V45 tmp26]+ str r3, [sp+0x0C] // [V45 tmp26] ; GC ptr vars +{V45}- ldr r7, [r8+0x04]+ ldr r9, [r8+0x04] ldr r8, [r8+0x08]
; byrRegs -[r8]- ldr lr, [r4+0x1C]
- ldr r4, [sp+0x24] // [V44 tmp25]
- ; gcrRegs -[r4]
- add lr, r4
- add r8, lr
- ldr lr, [sp+0x2C] // [V07 loc3]
- add lr, r8
- ldr r4, [r6+0x28]
- sub r1, lr, r4+ ldr r7, [r4+0x1C]
+ add r7, lr
+ add r7, r8
+ ldr r8, [sp+0x2C] // [V07 loc3]
+ add r8, r7
+ ldr lr, [r6+0x28]
+ sub r1, r8, lr mov r0, r6
; gcrRegs +[r0]
movw lr, 0xd1ff
@@ -334,7 +333,7 @@ G_M14932_IG09: ; bbWeight=64, gcVars=0000000100C00000 {V05 V06 V10}, gcre
ldr r0, [r5+0x08]
; gcrRegs +[r0]
ldrsb r1, [r0]
...
1[ubyte]:IntersectWithEnumerable(System.Collections.Generic.IEnumerable
1[ubyte]):this (FullOpts)@@ -8,42 +8,43 @@
; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T03] ( 8, 12 ) ref -> r5 this class-hnd single-def <System.Collections.Generic.SortedSet`1[ubyte]>
-; V01 arg1 [V01,T15] ( 3, 3 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[ubyte]>
-; V02 loc0 [V02,T04] ( 8, 12 ) ref -> r8 class-hnd exact single-def <System.Collections.Generic.List`1[ubyte]>
-; V03 loc1 [V03,T06] ( 7, 10 ) ref -> [sp+0x04] class-hnd EH-live spill-single-def <<unknown class>>
-; V04 loc2 [V04,T07] ( 4, 10 ) ubyte -> r4 +; V00 this [V00,T04] ( 8, 12 ) ref -> r5 this class-hnd single-def <System.Collections.Generic.SortedSet`1[ubyte]>
+; V01 arg1 [V01,T16] ( 3, 3 ) ref -> r4 class-hnd single-def <System.Collections.Generic.IEnumerable`1[ubyte]>
+; V02 loc0 [V02,T05] ( 8, 12 ) ref -> r8 class-hnd exact single-def <System.Collections.Generic.List`1[ubyte]>
+; V03 loc1 [V03,T07] ( 7, 10 ) ref -> [sp+0x04] class-hnd EH-live single-def <<unknown class>>
+; V04 loc2 [V04,T08] ( 4, 10 ) ubyte -> r4 ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[ubyte]>
;* V06 loc4 [V06 ] ( 0, 0 ) ubyte -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V08 tmp1 [V08,T13] ( 3, 6 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ubyte]>
-; V09 tmp2 [V09,T14] ( 3, 5.70) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V10 tmp3 [V10,T11] ( 4, 7.40) int -> r1 "Inline stloc first use temp"+; V08 tmp1 [V08,T14] ( 3, 6 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ubyte]>
+; V09 tmp2 [V09,T15] ( 3, 5.70) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V10 tmp3 [V10,T12] ( 4, 7.40) int -> r1 "Inline stloc first use temp" ;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ubyte]>-;* V12 tmp5 [V12,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V12 tmp5 [V12,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ubyte]>
; V14 tmp7 [V14,T02] ( 4, 17 ) ref -> r8 single-def "field V05._list (fldOffset=0x0)" P-INDEP-; V15 tmp8 [V15,T00] ( 6, 21 ) int -> r4 "field V05._index (fldOffset=0x4)" P-INDEP
-; V16 tmp9 [V16,T09] ( 2, 9 ) int -> r6 "field V05._version (fldOffset=0x8)" P-INDEP
-; V17 tmp10 [V17,T08] ( 2, 6 ) ubyte -> r1 "field V05._current (fldOffset=0xc)" P-INDEP
-; V18 tmp11 [V18,T17] ( 3, 3 ) ref -> r8 single-def "field V11._list (fldOffset=0x0)" P-INDEP
-;* V19 tmp12 [V19,T19] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x4)" P-INDEP
-; V20 tmp13 [V20,T18] ( 2, 2 ) int -> r6 "field V11._version (fldOffset=0x8)" P-INDEP+; V15 tmp8 [V15,T00] ( 6, 21 ) int -> r9 "field V05._index (fldOffset=0x4)" P-INDEP
+; V16 tmp9 [V16,T10] ( 2, 9 ) int -> r6 "field V05._version (fldOffset=0x8)" P-INDEP
+; V17 tmp10 [V17,T09] ( 2, 6 ) ubyte -> r1 "field V05._current (fldOffset=0xc)" P-INDEP
+; V18 tmp11 [V18,T18] ( 3, 3 ) ref -> r8 single-def "field V11._list (fldOffset=0x0)" P-INDEP
+;* V19 tmp12 [V19,T20] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x4)" P-INDEP
+; V20 tmp13 [V20,T19] ( 2, 2 ) int -> r6 "field V11._version (fldOffset=0x8)" P-INDEP ;* V21 tmp14 [V21 ] ( 0, 0 ) ubyte -> zero-ref "field V11._current (fldOffset=0xc)" P-INDEP
; V22 tmp15 [V22,T01] ( 3, 24 ) ref -> r1 "arr expr"-; V23 PSPSym [V23,T20] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"
-; V24 cse0 [V24,T16] ( 3, 4 ) int -> r7 "CSE - moderate"
-; V25 cse1 [V25,T05] ( 2, 8 ) int -> r1 "CSE - aggressive"
-; V26 cse2 [V26,T12] ( 4, 7 ) int -> r6 "CSE - moderate"+; V23 PSPSym [V23,T21] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V24 cse0 [V24,T17] ( 3, 4 ) int -> r7 "CSE - moderate"
+; V25 cse1 [V25,T06] ( 2, 8 ) int -> r1 "CSE - aggressive"
+; V26 cse2 [V26,T03] ( 2, 16 ) int -> r1 "CSE - aggressive"
+; V27 cse3 [V27,T13] ( 4, 7 ) int -> r6 "CSE - moderate" ;-; Lcl frame size = 12+; Lcl frame size = 16
G_M35530_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push {r4,r5,r6,r7,r8,r11,lr}
- sub sp, 12
- add r11, sp, 32
- add r2, sp, 40
- str r2, [sp+0x08] // [V23 PSPSym]+ push {r4,r5,r6,r7,r8,r9,r11,lr}
+ sub sp, 16
+ add r11, sp, 40
+ add r2, sp, 48
+ str r2, [sp+0x0C] // [V23 PSPSym] mov r5, r0
; gcrRegs +[r5]
mov r4, r1
@@ -84,17 +85,16 @@ G_M35530_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0- mov r4, r0
- ; gcrRegs +[r4]
- str r4, [sp+0x04]+ mov r9, r0
+ ; gcrRegs +[r9]
+ str r9, [sp+0x04] ; GC ptr vars +{V03}- ;; size=66 bbWeight=1 PerfScore 25.00
-G_M35530_IG03: ; bbWeight=1, gcVars=00000040 {V03}, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz+ ;; size=68 bbWeight=1 PerfScore 25.00
+G_M35530_IG03: ; bbWeight=1, gcVars=00000080 {V03}, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0]- mov r0, r4+ mov r0, r9 ; gcrRegs +[r0]
movw r4, 0xd1ff- ; gcrRegs -[r4] movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
@@ -103,8 +103,8 @@ G_M35530_IG03: ; bbWeight=1, gcVars=00000040 {V03}, gcrefRegs=0130 {r4 r5
cmp r0, 0
beq SHORT G_M35530_IG10
;; size=18 bbWeight=1 PerfScore 7.00-G_M35530_IG04: ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz
- ldr r0, [sp+0x04] // [V03 loc1]+G_M35530_IG04: ; bbWeight=4, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref, isz
+ mov r0, r9 ; gcrRegs +[r0]
movw r4, 0xd1ff
movt r4, 0xd1ff
@@ -124,7 +124,7 @@ G_M35530_IG04: ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, b
cmp r0, 0
beq SHORT G_M35530_IG07
;; size=30 bbWeight=4 PerfScore 52.00-G_M35530_IG05: ; bbWeight=2, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz+G_M35530_IG05: ; bbWeight=2, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref, isz ldr r0, [r8+0x0C]
adds r0, r0, 1
str r0, [r8+0x0C]
@@ -135,7 +135,7 @@ G_M35530_IG05: ; bbWeight=2, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, b
cmp r3, r1
bls SHORT G_M35530_IG09
;; size=24 bbWeight=2 PerfScore 16.00-G_M35530_IG06: ; bbWeight=1.70, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0000 {}, byref+G_M35530_IG06: ; bbWeight=1.70, gcrefRegs=0321 {r0 r5 r8 r9}, byrefRegs=0000 {}, byref adds r3, r1, 1
str r3, [r8+0x08]
adds r0, 8
@@ -143,9 +143,9 @@ G_M35530_IG06: ; bbWeight=1.70, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0000
; byrRegs +[r0]
strb r4, [r0+r1]
;; size=10 bbWeight=1.70 PerfScore 6.80-G_M35530_IG07: ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz+G_M35530_IG07: ; bbWeight=4, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r0]- ldr r0, [sp+0x04] // [V03 loc1]+ mov r0, r9 ; gcrRegs +[r0]
movw r4, 0xd1ff
movt r4, 0xd1ff
@@ -156,10 +156,10 @@ G_M35530_IG07: ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, b
cmp r0, 0
bne SHORT G_M35530_IG04
;; size=18 bbWeight=4 PerfScore 28.00-G_M35530_IG08: ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz+G_M35530_IG08: ; bbWeight=1, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref, isz b SHORT G_M35530_IG10
;; size=2 bbWeight=1 PerfScore 1.00-G_M35530_IG09: ; bbWeight=0.30, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz+G_M35530_IG09: ; bbWeight=0.30, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref, isz mov r0, r8
; gcrRegs +[r0]
mov r1, r4
@@ -171,15 +171,15 @@ G_M35530_IG09: ; bbWeight=0.30, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}
; gcr arg pop 0
b SHORT G_M35530_IG07
;; size=18 bbWeight=0.30 PerfScore 2.10-G_M35530_IG10: ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz
- ldr r0, [sp+0x04] // [V03 loc1]+G_M35530_IG10: ; bbWeight=1, gcrefRegs=0320 {r5 r8 r9}, byrefRegs=0000 {}, byref, isz
+ mov r0, r9 ; gcrRegs +[r0]
movw r4, 0xd1ff
movt r4, 0xd1ff
ldr r3, [r4]
; GC ptr vars -{V03}
blx r3 // <unknown method>- ; gcrRegs -[r0]+ ; gcrRegs -[r0 r9] ; gcr arg pop 0
mov r0, r5
; gcrRegs +[r0]
@@ -189,9 +189,9 @@ G_M35530_IG10: ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
ldr r6, [r8+0x0C]- movs r4, 0+ mov r9, 0 b SHORT G_M35530_IG12- ;; size=30 bbWeight=1 PerfScore 12.00+ ;; size=32 bbWeight=1 PerfScore 12.00 G_M35530_IG11: ; bbWeight=2, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref
uxtb r1, r1
mov r0, r5
@@ -208,25 +208,25 @@ G_M35530_IG12: ; bbWeight=8, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, b
;; size=8 bbWeight=8 PerfScore 24.00
G_M35530_IG13: ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz
ldr r1, [r8+0x08]- cmp r4, r1+ cmp r9, r1 bhs SHORT G_M35530_IG14
ldr r1, [r8+0x04]
; gcrRegs +[r1]
ldr r0, [r1+0x04]- cmp r4, r0+ cmp r9, r0 bhs SHORT G_M35530_IG15
adds r1, 8
; gcrRegs -[r1]
; byrRegs +[r1]- ldrb r1, [r1+r4]+ ldrb r1, [r1+r9] ; byrRegs -[r1]- adds r4, r4, 1+ add r9, r9, 1 b SHORT G_M35530_IG11- ;; size=26 bbWeight=4 PerfScore 44.00+ ;; size=30 bbWeight=4 PerfScore 44.00 G_M35530_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r5 r8]- add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}+ add sp, 16
+ pop {r4,r5,r6,r7,r8,r9,r11,pc} ;; size=6 bbWeight=4 PerfScore 8.00
G_M35530_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff
@@ -242,33 +242,32 @@ G_M35530_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M35530_IG17: ; bbWeight=0, gcVars=00000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc+G_M35530_IG17: ; bbWeight=0, gcVars=00000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; GC ptr vars +{V03}- push {r3,r4,r5,r6,r7,r8,r11,lr}+ push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr} add r3, r11, 8- str r3, [sp]+ str r3, [sp+0x04] ;; size=10 bbWeight=0 PerfScore 0.00-G_M35530_IG18: ; bbWeight=0, gcVars=00000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r4, [r11-0x1C] // [V03 loc1]
- ; gcrRegs +[r4]
- cmp r4, 0+G_M35530_IG18: ; bbWeight=0, gcVars=00000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r9, [r11-0x24] // [V03 loc1]
+ ; gcrRegs +[r9]
+ cmp r9, 0 beq SHORT G_M35530_IG19- mov r0, r4+ mov r0, r9 ; gcrRegs +[r0]
movw r4, 0xd1ff- ; gcrRegs -[r4] movt r4, 0xd1ff
ldr r3, [r4]
; GC ptr vars -{V03}
blx r3 // <unknown method>- ; gcrRegs -[r0]+ ; gcrRegs -[r0 r9] ; gcr arg pop 0- ;; size=22 bbWeight=0 PerfScore 0.00+ ;; size=24 bbWeight=0 PerfScore 0.00 G_M35530_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc- pop {r3,r4,r5,r6,r7,r8,r11,pc}+ pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}...
@@ -8,29 +8,30 @@
; 3 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T09] ( 4, 4 ) ref -> r4 this class-hnd single-def <Xunit.AggregateMessageSink>
-; V01 arg1 [V01,T06] ( 3, 5 ) ref -> r5 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
-; V02 arg2 [V02,T07] ( 3, 5 ) ref -> r6 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]>
-; V03 loc0 [V03,T05] ( 4, 8 ) ubyte -> r7
-; V04 loc1 [V04,T14] ( 4, 1.50) ref -> [sp+0x04] class-hnd EH-live single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>+; V00 this [V00,T10] ( 4, 4 ) ref -> r4 this class-hnd single-def <Xunit.AggregateMessageSink>
+; V01 arg1 [V01,T07] ( 3, 5 ) ref -> r5 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
+; V02 arg2 [V02,T08] ( 3, 5 ) ref -> r6 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]>
+; V03 loc0 [V03,T06] ( 4, 8 ) ubyte -> r7
+; V04 loc1 [V04,T15] ( 4, 1.50) ref -> [sp+0x04] class-hnd EH-live single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]> ; V05 loc2 [V05 ] ( 5, 4 ) ubyte -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V06 loc3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V08 tmp1 [V08,T11] ( 2, 4 ) ubyte -> r0 "Inlining Arg"
-; V09 tmp2 [V09,T10] ( 2, 4 ) ref -> r9 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>+; V08 tmp1 [V08,T12] ( 2, 4 ) ubyte -> r0 "Inlining Arg"
+; V09 tmp2 [V09,T11] ( 2, 4 ) ref -> r9 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>-;* V11 tmp4 [V11,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V11 tmp4 [V11,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>-; V13 tmp6 [V13,T01] ( 5, 17 ) ref -> r9 single-def "field V06._list (fldOffset=0x0)" P-INDEP
-; V14 tmp7 [V14,T03] ( 2, 6 ) ref -> r0 "field V06._current (fldOffset=0x4)" P-INDEP+; V13 tmp6 [V13,T02] ( 4, 16 ) ref -> r9 single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V14 tmp7 [V14,T04] ( 2, 6 ) ref -> r0 "field V06._current (fldOffset=0x4)" P-INDEP ; V15 tmp8 [V15,T00] ( 6, 17 ) int -> [sp+0x08] "field V06._index (fldOffset=0x8)" P-INDEP-; V16 tmp9 [V16,T04] ( 3, 10 ) int -> r10 single-def "field V06._version (fldOffset=0xc)" P-INDEP
-; V17 tmp10 [V17,T12] ( 3, 3 ) ref -> r9 single-def "field V10._list (fldOffset=0x0)" P-INDEP+; V16 tmp9 [V16,T05] ( 2, 9 ) int -> r10 single-def "field V06._version (fldOffset=0xc)" P-INDEP
+; V17 tmp10 [V17,T13] ( 3, 3 ) ref -> r9 single-def "field V10._list (fldOffset=0x0)" P-INDEP ;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x4)" P-INDEP-;* V19 tmp12 [V19,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T13] ( 2, 2 ) int -> r10 single-def "field V10._version (fldOffset=0xc)" P-INDEP
-; V21 tmp14 [V21,T02] ( 3, 18 ) ref -> r0 "arr expr"
-; V22 PSPSym [V22,T16] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"+;* V19 tmp12 [V19,T16] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
+; V20 tmp13 [V20,T14] ( 2, 2 ) int -> r10 single-def "field V10._version (fldOffset=0xc)" P-INDEP
+; V21 tmp14 [V21,T01] ( 3, 18 ) ref -> r0 "arr expr"
+; V22 PSPSym [V22,T17] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
+; V23 cse0 [V23,T03] ( 2, 8 ) int -> r0 "CSE - aggressive" ;
; Lcl frame size = 20
@@ -56,7 +57,7 @@ G_M52679_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
str r8, [sp+0x04]
; GC ptr vars +{V04}
;; size=10 bbWeight=1 PerfScore 3.00-G_M52679_IG03: ; bbWeight=1, gcVars=00004000 {V04}, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz+G_M52679_IG03: ; bbWeight=1, gcVars=00008000 {V04}, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x0C]
cmp r1, 0
bne SHORT G_M52679_IG09
@@ -93,19 +94,19 @@ G_M52679_IG06: ; bbWeight=8, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000
; gcrRegs -[r4]
ldr r0, [r9+0x0C]
cmp r10, r0- bne SHORT G_M52679_IG10+ bne SHORT G_M52679_IG11 ;; size=8 bbWeight=8 PerfScore 24.00
G_M52679_IG07: ; bbWeight=4, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x08]
cmp r3, r0- bhs SHORT G_M52679_IG14+ bhs SHORT G_M52679_IG12 ;; size=8 bbWeight=4 PerfScore 12.00
G_M52679_IG08: ; bbWeight=3, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x04]
; gcrRegs +[r0]
ldr r2, [r0+0x04]
cmp r3, r2- bhs SHORT G_M52679_IG12+ bhs SHORT G_M52679_IG10 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -139,24 +140,14 @@ G_M52679_IG09: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byre
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M52679_IG10: ; bbWeight=1, gcrefRegs=0300 {r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r9]
- ldr r0, [r9+0x0C]
- cmp r10, r0
- bne SHORT G_M52679_IG13
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M52679_IG11: ; bbWeight=4, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r9]
- b SHORT G_M52679_IG14
- ;; size=2 bbWeight=4 PerfScore 4.00
-G_M52679_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M52679_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M52679_IG13: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref+G_M52679_IG11: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref ; gcrRegs +[r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -165,12 +156,12 @@ G_M52679_IG13: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byre
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M52679_IG14: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz+G_M52679_IG12: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz ldrb r0, [sp+0x0C] // [V05 loc2]
cmp r0, 0- beq SHORT G_M52679_IG16+ beq SHORT G_M52679_IG14 ;; size=8 bbWeight=1 PerfScore 3.00-G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref+G_M52679_IG13: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref mov r0, r8
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -180,37 +171,37 @@ G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, b
; gcrRegs -[r0 r8]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00-G_M52679_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov r0, r7
;; size=2 bbWeight=1 PerfScore 1.00-G_M52679_IG17: ; bbWeight=1, epilog, nogc, extend+G_M52679_IG15: ; bbWeight=1, epilog, nogc, extend add sp, 20
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00-G_M52679_IG18: ; bbWeight=0, gcVars=00004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V04 V14}+G_M52679_IG16: ; bbWeight=0, gcVars=00008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V04 V15} push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
add r3, r11, 8
str r3, [sp]
;; size=10 bbWeight=0 PerfScore 0.00-G_M52679_IG19: ; bbWeight=0, gcVars=00004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M52679_IG17: ; bbWeight=0, gcVars=00008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r0, [r11-0x24] // [V05 loc2]
cmp r0, 0- beq SHORT G_M52679_IG20+ beq SHORT G_M52679_IG18 ldr r0, [r11-0x2C] // [V04 loc1]
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff- ; GC ptr vars -{V04 V14}+ ; GC ptr vars -{V04 V15} blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
;; size=22 bbWeight=0 PerfScore 0.00-G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc+G_M52679_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 24, PerfScore 139.00, instruction count 98, allocated bytes for code 276 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier0-FullOpts)+; Total bytes of code 266, prolog size 24, PerfScore 132.00, instruction count 94, allocated bytes for code 266 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier0-FullOpts) ; ============================================================
Unwind Info:
@@ -222,7 +213,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 120 (0x00078) Actual length = 240 (0x0000f0)+ Function Length : 115 (0x00073) Actual length = 230 (0x0000e6) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -250,4 +241,4 @@ Unwind Info:
*************** EH table for Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M52679_IG03..G_M52679_IG14) handled by [G_M52679_IG18..END) (fault)+EH#0: try [G_M52679_IG03..G_M52679_IG12) handled by [G_M52679_IG16..END) (fault)
@@ -9,66 +9,67 @@
; 6 inlinees with PGO data; 20 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;-; V00 loc0 [V00,T27] ( 4, 2 ) ref -> [sp+0x0C] class-hnd EH-live spill-single-def <<unknown class>>+; V00 loc0 [V00,T28] ( 4, 2 ) ref -> [sp+0x0C] class-hnd EH-live spill-single-def <<unknown class>> ; V01 loc1 [V01 ] ( 6, 5 ) ubyte -> [sp+0x24] do-not-enreg[X] addr-exposed ld-addr-op
; V02 loc2 [V02,T03] ( 6, 80.01) ref -> r4 class-hnd exact single-def <<unknown class>>
; V03 loc3 [V03,T01] ( 6,102 ) ref -> r5 class-hnd <System.Diagnostics.Tracing.EventListener>-; V04 loc4 [V04,T14] ( 4, 17.50) int -> r5 +; V04 loc4 [V04,T15] ( 4, 17.50) int -> r5 ;* V05 loc5 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.WeakReference`1[System.Diagnostics.Tracing.EventSource]>-; V07 loc7 [V07,T10] ( 5, 22 ) ref -> r9 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>+; V07 loc7 [V07,T09] ( 5, 22 ) ref -> r9 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource> ; V08 loc8 [V08,T02] ( 11, 90.51) ref -> [sp+0x08] class-hnd <<unknown class>>
; V09 loc9 [V09 ] ( 6, 27.50) struct (16) [sp+0x14] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]>-; V10 loc10 [V10,T32] ( 2, 0 ) ref -> [sp+0x04] class-hnd <System.Diagnostics.Tracing.EventListener>+; V10 loc10 [V10,T33] ( 2, 0 ) ref -> [sp+0x04] class-hnd <System.Diagnostics.Tracing.EventListener> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V12 tmp1 [V12,T21] ( 3, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp2 [V13,T31] ( 3, 0 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V14 tmp3 [V14,T25] ( 2, 4 ) ubyte -> r0 "Inlining Arg"+; V12 tmp1 [V12,T22] ( 3, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp2 [V13,T32] ( 3, 0 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V14 tmp3 [V14,T26] ( 2, 4 ) ubyte -> r0 "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp5 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"-; V17 tmp6 [V17,T24] ( 2, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <<unknown class>>+; V17 tmp6 [V17,T25] ( 2, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>-; V21 tmp10 [V21,T17] ( 3, 11 ) ref -> r9 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
-; V22 tmp11 [V22,T09] ( 6, 22 ) int -> [sp+0x10] spill-single-def "Inline stloc first use temp"+; V21 tmp10 [V21,T18] ( 3, 11 ) ref -> r9 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
+; V22 tmp11 [V22,T08] ( 6, 22 ) int -> [sp+0x10] spill-single-def "Inline stloc first use temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>-; V24 tmp13 [V24,T18] ( 3, 11 ) ref -> r0 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>+; V24 tmp13 [V24,T19] ( 3, 11 ) ref -> r0 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>
;* V26 tmp15 [V26 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.EventSource>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.ComAwareWeakReference>
;* V28 tmp17 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V29 tmp18 [V29,T13] ( 2, 18.03) ref -> r1 class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventListener>+; V29 tmp18 [V29,T14] ( 2, 18.03) ref -> r1 class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventListener> ;* V30 tmp19 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>-; V32 tmp21 [V32,T11] ( 2, 22 ) ref -> r3 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]>+; V32 tmp21 [V32,T10] ( 2, 22 ) ref -> r3 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> ; V33 tmp22 [V33,T04] ( 4, 38.50) ref -> r3
; V34 tmp23 [V34,T00] ( 4,176 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V35 tmp24 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V36 tmp25 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]>-; V37 tmp26 [V37,T12] ( 2, 22 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>+; V37 tmp26 [V37,T11] ( 2, 22 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]> ;* V38 tmp27 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp28 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-;* V40 tmp29 [V40,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V40 tmp29 [V40,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V41 tmp30 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V42 tmp31 [V42,T07] ( 5, 20.49) ref -> r6 single-def "field V05._list (fldOffset=0x0)" P-INDEP
-; V43 tmp32 [V43,T08] ( 3, 16.44) ref -> r9 "field V05._current (fldOffset=0x4)" P-INDEP+; V42 tmp31 [V42,T13] ( 4, 19.43) ref -> r6 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V43 tmp32 [V43,T07] ( 3, 16.44) ref -> r9 "field V05._current (fldOffset=0x4)" P-INDEP ; V44 tmp33 [V44,T05] ( 6, 29.26) int -> r8 "field V05._index (fldOffset=0x8)" P-INDEP-; V45 tmp34 [V45,T20] ( 3, 8.56) int -> r7 "field V05._version (fldOffset=0xc)" P-INDEP+; V45 tmp34 [V45,T21] ( 2, 7.50) int -> r7 "field V05._version (fldOffset=0xc)" P-INDEP ; V46 tmp35 [V46 ] ( 2, 11 ) ref -> [sp+0x14] do-not-enreg[X] addr-exposed "field V09._dictionary (fldOffset=0x0)" P-DEP
; V47 tmp36 [V47 ] ( 3, 11 ) ref -> [sp+0x18] do-not-enreg[X] addr-exposed "field V09._currentKey (fldOffset=0x4)" P-DEP
; V48 tmp37 [V48 ] ( 2, 11 ) int -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V09._index (fldOffset=0x8)" P-DEP
; V49 tmp38 [V49 ] ( 2, 11 ) int -> [sp+0x20] do-not-enreg[X] addr-exposed "field V09._version (fldOffset=0xc)" P-DEP-; V50 tmp39 [V50,T26] ( 3, 3 ) ref -> r6 single-def "field V18._list (fldOffset=0x0)" P-INDEP+; V50 tmp39 [V50,T27] ( 3, 3 ) ref -> r6 single-def "field V18._list (fldOffset=0x0)" P-INDEP ;* V51 tmp40 [V51 ] ( 0, 0 ) ref -> zero-ref single-def "field V18._current (fldOffset=0x4)" P-INDEP-;* V52 tmp41 [V52,T29] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
-; V53 tmp42 [V53,T28] ( 2, 2 ) int -> r7 "field V18._version (fldOffset=0xc)" P-INDEP
-; V54 tmp43 [V54,T15] ( 3, 16.50) ref -> r0 "field V36._dictionary (fldOffset=0x0)" P-INDEP
-;* V55 tmp44 [V55,T22] ( 0, 0 ) ref -> zero-ref "field V36._currentKey (fldOffset=0x4)" P-INDEP
-;* V56 tmp45 [V56,T23] ( 0, 0 ) int -> zero-ref "field V36._index (fldOffset=0x8)" P-INDEP
-; V57 tmp46 [V57,T19] ( 2, 11 ) int -> r1 "field V36._version (fldOffset=0xc)" P-INDEP+;* V52 tmp41 [V52,T30] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
+; V53 tmp42 [V53,T29] ( 2, 2 ) int -> r7 "field V18._version (fldOffset=0xc)" P-INDEP
+; V54 tmp43 [V54,T16] ( 3, 16.50) ref -> r0 "field V36._dictionary (fldOffset=0x0)" P-INDEP
+;* V55 tmp44 [V55,T23] ( 0, 0 ) ref -> zero-ref "field V36._currentKey (fldOffset=0x4)" P-INDEP
+;* V56 tmp45 [V56,T24] ( 0, 0 ) int -> zero-ref "field V36._index (fldOffset=0x8)" P-INDEP
+; V57 tmp46 [V57,T20] ( 2, 11 ) int -> r1 "field V36._version (fldOffset=0xc)" P-INDEP ; V58 tmp47 [V58,T06] ( 3, 32.65) ref -> r0 "arr expr"-; V59 PSPSym [V59,T30] ( 1, 1 ) int -> [sp+0x28] do-not-enreg[V] "PSPSym"+; V59 PSPSym [V59,T31] ( 1, 1 ) int -> [sp+0x28] do-not-enreg[V] "PSPSym"
+; V60 cse0 [V60,T12] ( 2, 12.99) int -> r0 "CSE - moderate" ;
; Lcl frame size = 44
@@ -92,13 +93,13 @@ G_M15982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
ldrb r1, [r0+0xA19]
cmp r1, 0- bne G_M15982_IG38+ bne G_M15982_IG36 movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r1, [r1]
; gcrRegs +[r1]
cmp r1, 0- beq G_M15982_IG39+ beq G_M15982_IG37 ;; size=48 bbWeight=1 PerfScore 14.00
G_M15982_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
@@ -111,7 +112,7 @@ G_M15982_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0
str r0, [sp+0x24] // [V01 loc1]
;; size=16 bbWeight=1 PerfScore 6.00-G_M15982_IG04: ; bbWeight=1, gcVars=0000000008000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M15982_IG04: ; bbWeight=1, gcVars=0000000010000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r1]
ldrb r0, [sp+0x24] // [V01 loc1]
cmp r0, 0
@@ -232,10 +233,10 @@ G_M15982_IG10: ; bbWeight=5.50, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000
ands r3, r0
str r3, [sp+0x10]
cmp r3, 0- beq G_M15982_IG36+ beq G_M15982_IG34 ands r0, r3, 2
cmp r0, 0- bne G_M15982_IG33+ bne G_M15982_IG31 mov r0, r3
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -287,7 +288,7 @@ G_M15982_IG15: ; bbWeight=4.51, gcrefRegs=0258 {r3 r4 r6 r9}, byrefRegs=0
; byrRegs +[r0]
; gcr arg pop 0
cmp r0, 0- beq SHORT G_M15982_IG32+ beq SHORT G_M15982_IG30 ;; size=22 bbWeight=4.51 PerfScore 40.57
G_M15982_IG16: ; bbWeight=25, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
@@ -297,7 +298,7 @@ G_M15982_IG16: ; bbWeight=25, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {
cmp r3, 0
bne SHORT G_M15982_IG15
;; size=8 bbWeight=25 PerfScore 100.00-G_M15982_IG17: ; bbWeight=5.50, gcVars=0000000008000000 {V00}, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz+G_M15982_IG17: ; bbWeight=5.50, gcVars=0000000010000000 {V00}, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r3]
; GC ptr vars -{V08}
ldr r3, [r4+0x10]
@@ -338,7 +339,7 @@ G_M15982_IG18: ; bbWeight=22, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {
mov r3, r1
; gcrRegs +[r3]
;; size=54 bbWeight=22 PerfScore 396.00-G_M15982_IG19: ; bbWeight=5.50, gcVars=0000000008000000 {V00}, gcrefRegs=0258 {r3 r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref+G_M15982_IG19: ; bbWeight=5.50, gcVars=0000000010000000 {V00}, gcrefRegs=0258 {r3 r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r1]
; GC ptr vars -{V00 V34}
ldr r0, [r3+0x04]
@@ -364,25 +365,25 @@ G_M15982_IG21: ; bbWeight=5.50, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000
blx r3 // <unknown method>
; gcr arg pop 0
cmp r0, 0- bne SHORT G_M15982_IG29+ bne SHORT G_M15982_IG27 ;; size=26 bbWeight=5.50 PerfScore 49.50
G_M15982_IG22: ; bbWeight=6.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9]
ldr r0, [r6+0x0C]
cmp r7, r0- bne SHORT G_M15982_IG25+ bne SHORT G_M15982_IG26 ;; size=6 bbWeight=6.50 PerfScore 19.50
G_M15982_IG23: ; bbWeight=6.49, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x08]
cmp r8, r0- bhs SHORT G_M15982_IG37+ bhs SHORT G_M15982_IG35 ;; size=6 bbWeight=6.49 PerfScore 19.48
G_M15982_IG24: ; bbWeight=5.44, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x04]
; gcrRegs +[r0]
ldr r3, [r0+0x04]
cmp r8, r3- bhs SHORT G_M15982_IG27+ bhs SHORT G_M15982_IG25 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -392,24 +393,15 @@ G_M15982_IG24: ; bbWeight=5.44, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}
add r8, r8, 1
b SHORT G_M15982_IG10
;; size=24 bbWeight=5.44 PerfScore 48.97-G_M15982_IG25: ; bbWeight=1.06, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4 r9]+G_M15982_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4 r6 r9] ; byrRegs -[r0]- ldr r0, [r6+0x0C]
- cmp r7, r0
- bne SHORT G_M15982_IG28
- ;; size=6 bbWeight=1.06 PerfScore 3.18
-G_M15982_IG26: ; bbWeight=6.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r6]
- b SHORT G_M15982_IG37
- ;; size=2 bbWeight=6.50 PerfScore 6.50
-G_M15982_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M15982_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M15982_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -417,7 +409,7 @@ G_M15982_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M15982_IG29: ; bbWeight=0, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref+G_M15982_IG27: ; bbWeight=0, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref ; gcrRegs +[r4 r6 r9]
ldr r3, [sp+0x18] // [V47 tmp36]
; gcrRegs +[r3]
@@ -429,13 +421,13 @@ G_M15982_IG29: ; bbWeight=0, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}
mov r2, r0
; gcrRegs +[r2]
;; size=14 bbWeight=0 PerfScore 0.00-G_M15982_IG30: ; bbWeight=0, gcVars=0000000108000000 {V00 V10}, gcrefRegs=0254 {r2 r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz+G_M15982_IG28: ; bbWeight=0, gcVars=0000000210000000 {V00 V10}, gcrefRegs=0254 {r2 r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0 r3]
; GC ptr vars +{V00}
str r2, [sp+0x08] // [V08 loc8]
; GC ptr vars +{V08}
cmp r2, 0- bne SHORT G_M15982_IG31+ bne SHORT G_M15982_IG29 movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
@@ -447,7 +439,7 @@ G_M15982_IG30: ; bbWeight=0, gcVars=0000000108000000 {V00 V10}, gcrefRegs
; gcrRegs -[r2]
; gcr arg pop 0
;; size=36 bbWeight=0 PerfScore 0.00-G_M15982_IG31: ; bbWeight=0, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref, isz+G_M15982_IG29: ; bbWeight=0, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref, isz ldr r2, [sp+0x08] // [V08 loc8]
; gcrRegs +[r2]
...
@@ -9,31 +9,31 @@
; 6 inlinees with PGO data; 20 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;-; V00 loc0 [V00,T27] ( 4, 2 ) ref -> [sp+0x0C] class-hnd EH-live spill-single-def <<unknown class>>+; V00 loc0 [V00,T28] ( 4, 2 ) ref -> [sp+0x0C] class-hnd EH-live spill-single-def <<unknown class>> ; V01 loc1 [V01 ] ( 6, 5 ) ubyte -> [sp+0x24] do-not-enreg[X] addr-exposed ld-addr-op
; V02 loc2 [V02,T03] ( 6, 95.63) ref -> r4 class-hnd exact single-def <<unknown class>>
; V03 loc3 [V03,T00] ( 6,202 ) ref -> r5 class-hnd <System.Diagnostics.Tracing.EventListener>-; V04 loc4 [V04,T14] ( 4, 14.50) int -> r5 +; V04 loc4 [V04,T15] ( 4, 14.50) int -> r5 ;* V05 loc5 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.WeakReference`1[System.Diagnostics.Tracing.EventSource]>-; V07 loc7 [V07,T10] ( 5, 18 ) ref -> r9 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>+; V07 loc7 [V07,T09] ( 5, 18 ) ref -> r9 ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource> ; V08 loc8 [V08,T01] ( 11,163.13) ref -> [sp+0x08] class-hnd <<unknown class>>
; V09 loc9 [V09 ] ( 6, 22.50) struct (16) [sp+0x14] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]>-; V10 loc10 [V10,T32] ( 2, 0 ) ref -> [sp+0x04] class-hnd <System.Diagnostics.Tracing.EventListener>+; V10 loc10 [V10,T33] ( 2, 0 ) ref -> [sp+0x04] class-hnd <System.Diagnostics.Tracing.EventListener> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V12 tmp1 [V12,T21] ( 3, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp2 [V13,T31] ( 3, 0 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V14 tmp3 [V14,T25] ( 2, 4 ) ubyte -> r0 "Inlining Arg"+; V12 tmp1 [V12,T22] ( 3, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp2 [V13,T32] ( 3, 0 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V14 tmp3 [V14,T26] ( 2, 4 ) ubyte -> r0 "Inlining Arg" ;* V15 tmp4 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp5 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"-; V17 tmp6 [V17,T24] ( 2, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <<unknown class>>+; V17 tmp6 [V17,T25] ( 2, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V19 tmp8 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>-; V21 tmp10 [V21,T17] ( 3, 9 ) ref -> r9 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
-; V22 tmp11 [V22,T09] ( 6, 18 ) int -> [sp+0x10] spill-single-def "Inline stloc first use temp"+; V21 tmp10 [V21,T18] ( 3, 9 ) ref -> r9 class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>
+; V22 tmp11 [V22,T08] ( 6, 18 ) int -> [sp+0x10] spill-single-def "Inline stloc first use temp" ;* V23 tmp12 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>-; V24 tmp13 [V24,T18] ( 3, 9 ) ref -> r0 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>+; V24 tmp13 [V24,T19] ( 3, 9 ) ref -> r0 class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource> ;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>
;* V26 tmp15 [V26 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Diagnostics.Tracing.EventSource>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.ComAwareWeakReference>
@@ -41,34 +41,35 @@
; V29 tmp18 [V29,T13] ( 2, 16.51) ref -> r1 class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventListener>
;* V30 tmp19 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>-; V32 tmp21 [V32,T11] ( 2, 18 ) ref -> r3 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]>+; V32 tmp21 [V32,T10] ( 2, 18 ) ref -> r3 class-hnd exact "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,ubyte]> ; V33 tmp22 [V33,T04] ( 4, 31.50) ref -> r3
; V34 tmp23 [V34,T02] ( 4,144 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V35 tmp24 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V36 tmp25 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.Diagnostics.Tracing.EventListener,ubyte]>-; V37 tmp26 [V37,T12] ( 2, 18 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]>+; V37 tmp26 [V37,T11] ( 2, 18 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]> ;* V38 tmp27 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp28 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-;* V40 tmp29 [V40,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V40 tmp29 [V40,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V41 tmp30 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V42 tmp31 [V42,T07] ( 5, 17.49) ref -> r6 single-def "field V05._list (fldOffset=0x0)" P-INDEP
-; V43 tmp32 [V43,T08] ( 3, 13.60) ref -> r9 "field V05._current (fldOffset=0x4)" P-INDEP+; V42 tmp31 [V42,T12] ( 4, 16.60) ref -> r6 single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V43 tmp32 [V43,T07] ( 3, 13.60) ref -> r9 "field V05._current (fldOffset=0x4)" P-INDEP ; V44 tmp33 [V44,T05] ( 6, 24.91) int -> r8 "field V05._index (fldOffset=0x8)" P-INDEP-; V45 tmp34 [V45,T20] ( 3, 7.40) int -> r7 "field V05._version (fldOffset=0xc)" P-INDEP+; V45 tmp34 [V45,T21] ( 2, 6.50) int -> r7 "field V05._version (fldOffset=0xc)" P-INDEP ; V46 tmp35 [V46 ] ( 2, 9 ) ref -> [sp+0x14] do-not-enreg[X] addr-exposed "field V09._dictionary (fldOffset=0x0)" P-DEP
; V47 tmp36 [V47 ] ( 3, 9 ) ref -> [sp+0x18] do-not-enreg[X] addr-exposed "field V09._currentKey (fldOffset=0x4)" P-DEP
; V48 tmp37 [V48 ] ( 2, 9 ) int -> [sp+0x1C] do-not-enreg[X] addr-exposed "field V09._index (fldOffset=0x8)" P-DEP
; V49 tmp38 [V49 ] ( 2, 9 ) int -> [sp+0x20] do-not-enreg[X] addr-exposed "field V09._version (fldOffset=0xc)" P-DEP-; V50 tmp39 [V50,T26] ( 3, 3 ) ref -> r6 single-def "field V18._list (fldOffset=0x0)" P-INDEP+; V50 tmp39 [V50,T27] ( 3, 3 ) ref -> r6 single-def "field V18._list (fldOffset=0x0)" P-INDEP ;* V51 tmp40 [V51 ] ( 0, 0 ) ref -> zero-ref single-def "field V18._current (fldOffset=0x4)" P-INDEP-;* V52 tmp41 [V52,T29] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
-; V53 tmp42 [V53,T28] ( 2, 2 ) int -> r7 "field V18._version (fldOffset=0xc)" P-INDEP
-; V54 tmp43 [V54,T15] ( 3, 13.50) ref -> r0 "field V36._dictionary (fldOffset=0x0)" P-INDEP
-;* V55 tmp44 [V55,T22] ( 0, 0 ) ref -> zero-ref "field V36._currentKey (fldOffset=0x4)" P-INDEP
-;* V56 tmp45 [V56,T23] ( 0, 0 ) int -> zero-ref "field V36._index (fldOffset=0x8)" P-INDEP
-; V57 tmp46 [V57,T19] ( 2, 9 ) int -> r1 "field V36._version (fldOffset=0xc)" P-INDEP+;* V52 tmp41 [V52,T30] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
+; V53 tmp42 [V53,T29] ( 2, 2 ) int -> r7 "field V18._version (fldOffset=0xc)" P-INDEP
+; V54 tmp43 [V54,T16] ( 3, 13.50) ref -> r0 "field V36._dictionary (fldOffset=0x0)" P-INDEP
+;* V55 tmp44 [V55,T23] ( 0, 0 ) ref -> zero-ref "field V36._currentKey (fldOffset=0x4)" P-INDEP
+;* V56 tmp45 [V56,T24] ( 0, 0 ) int -> zero-ref "field V36._index (fldOffset=0x8)" P-INDEP
+; V57 tmp46 [V57,T20] ( 2, 9 ) int -> r1 "field V36._version (fldOffset=0xc)" P-INDEP ; V58 tmp47 [V58,T06] ( 3, 27.62) ref -> r0 "arr expr"-; V59 PSPSym [V59,T30] ( 1, 1 ) int -> [sp+0x28] do-not-enreg[V] "PSPSym"+; V59 PSPSym [V59,T31] ( 1, 1 ) int -> [sp+0x28] do-not-enreg[V] "PSPSym"
+; V60 cse0 [V60,T14] ( 2, 10.99) int -> r0 "CSE - moderate" ;
; Lcl frame size = 44
@@ -92,13 +93,13 @@ G_M15982_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
ldrb r1, [r0+0xA19]
cmp r1, 0- bne G_M15982_IG38+ bne G_M15982_IG36 movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r1, [r1]
; gcrRegs +[r1]
cmp r1, 0- beq G_M15982_IG39+ beq G_M15982_IG37 ;; size=48 bbWeight=1 PerfScore 14.00
G_M15982_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
@@ -111,7 +112,7 @@ G_M15982_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0
str r0, [sp+0x24] // [V01 loc1]
;; size=16 bbWeight=1 PerfScore 6.00-G_M15982_IG04: ; bbWeight=1, gcVars=0000000008000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M15982_IG04: ; bbWeight=1, gcVars=0000000010000000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r1]
ldrb r0, [sp+0x24] // [V01 loc1]
cmp r0, 0
@@ -232,10 +233,10 @@ G_M15982_IG10: ; bbWeight=4.50, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000
ands r3, r0
str r3, [sp+0x10]
cmp r3, 0- beq G_M15982_IG36+ beq G_M15982_IG34 ands r0, r3, 2
cmp r0, 0- bne G_M15982_IG33+ bne G_M15982_IG31 mov r0, r3
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -287,7 +288,7 @@ G_M15982_IG15: ; bbWeight=4.13, gcrefRegs=0258 {r3 r4 r6 r9}, byrefRegs=0
; byrRegs +[r0]
; gcr arg pop 0
cmp r0, 0- beq SHORT G_M15982_IG32+ beq SHORT G_M15982_IG30 ;; size=22 bbWeight=4.13 PerfScore 37.16
G_M15982_IG16: ; bbWeight=50, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
@@ -297,7 +298,7 @@ G_M15982_IG16: ; bbWeight=50, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {
cmp r3, 0
bne SHORT G_M15982_IG15
;; size=8 bbWeight=50 PerfScore 200.00-G_M15982_IG17: ; bbWeight=4.50, gcVars=0000000008000000 {V00}, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz+G_M15982_IG17: ; bbWeight=4.50, gcVars=0000000010000000 {V00}, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r3]
; GC ptr vars -{V08}
ldr r3, [r4+0x10]
@@ -338,7 +339,7 @@ G_M15982_IG18: ; bbWeight=18, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {
mov r3, r1
; gcrRegs +[r3]
;; size=54 bbWeight=18 PerfScore 324.00-G_M15982_IG19: ; bbWeight=4.50, gcVars=0000000008000000 {V00}, gcrefRegs=0258 {r3 r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref+G_M15982_IG19: ; bbWeight=4.50, gcVars=0000000010000000 {V00}, gcrefRegs=0258 {r3 r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r1]
; GC ptr vars -{V34}
ldr r0, [r3+0x04]
@@ -364,25 +365,25 @@ G_M15982_IG21: ; bbWeight=4.50, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000
blx r3 // <unknown method>
; gcr arg pop 0
cmp r0, 0- bne SHORT G_M15982_IG29+ bne SHORT G_M15982_IG27 ;; size=26 bbWeight=4.50 PerfScore 40.50
G_M15982_IG22: ; bbWeight=5.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9]
ldr r0, [r6+0x0C]
cmp r7, r0- bne SHORT G_M15982_IG25+ bne SHORT G_M15982_IG26 ;; size=6 bbWeight=5.50 PerfScore 16.50
G_M15982_IG23: ; bbWeight=5.49, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x08]
cmp r8, r0- bhs SHORT G_M15982_IG37+ bhs SHORT G_M15982_IG35 ;; size=6 bbWeight=5.49 PerfScore 16.48
G_M15982_IG24: ; bbWeight=4.60, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r6+0x04]
; gcrRegs +[r0]
ldr r3, [r0+0x04]
cmp r8, r3- bhs SHORT G_M15982_IG27+ bhs SHORT G_M15982_IG25 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -392,24 +393,15 @@ G_M15982_IG24: ; bbWeight=4.60, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}
add r8, r8, 1
b SHORT G_M15982_IG10
;; size=24 bbWeight=4.60 PerfScore 41.43-G_M15982_IG25: ; bbWeight=0.90, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4 r9]+G_M15982_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4 r6 r9] ; byrRegs -[r0]- ldr r0, [r6+0x0C]
- cmp r7, r0
- bne SHORT G_M15982_IG28
- ;; size=6 bbWeight=0.90 PerfScore 2.69
-G_M15982_IG26: ; bbWeight=5.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r6]
- b SHORT G_M15982_IG37
- ;; size=2 bbWeight=5.50 PerfScore 5.50
-G_M15982_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M15982_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M15982_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -417,7 +409,7 @@ G_M15982_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M15982_IG29: ; bbWeight=0, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref+G_M15982_IG27: ; bbWeight=0, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref ; gcrRegs +[r4 r6 r9]
ldr r3, [sp+0x18] // [V47 tmp36]
; gcrRegs +[r3]
@@ -429,12 +421,12 @@ G_M15982_IG29: ; bbWeight=0, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}
mov r2, r0
; gcrRegs +[r2]
;; size=14 bbWeight=0 PerfScore 0.00-G_M15982_IG30: ; bbWeight=0, gcVars=0000000108000000 {V00 V10}, gcrefRegs=0254 {r2 r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz+G_M15982_IG28: ; bbWeight=0, gcVars=0000000210000000 {V00 V10}, gcrefRegs=0254 {r2 r4 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0 r3]
str r2, [sp+0x08] // [V08 loc8]
; GC ptr vars +{V08}
cmp r2, 0- bne SHORT G_M15982_IG31+ bne SHORT G_M15982_IG29 movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
@@ -446,7 +438,7 @@ G_M15982_IG30: ; bbWeight=0, gcVars=0000000108000000 {V00 V10}, gcrefRegs
; gcrRegs -[r2]
; gcr arg pop 0
;; size=36 bbWeight=0 PerfScore 0.00-G_M15982_IG31: ; bbWeight=0, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref, isz+G_M15982_IG29: ; bbWeight=0, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref, isz ldr r2, [sp+0x08] // [V08 loc8]
; gcrRegs +[r2]
ldr r1, [r2+0x04]
@@ -457,9 +449,9 @@ G_M15982_IG31: ; bbWeight=0, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}
...
@@ -9,39 +9,39 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 19, 19.50) ref -> r4 this class-hnd single-def <System.Diagnostics.Tracing.EventSource>-; V01 loc0 [V01,T41] ( 2, 2 ) ubyte -> r5 +; V01 loc0 [V01,T42] ( 2, 2 ) ubyte -> r5 ; V02 loc1 [V02 ] ( 2, 2 ) struct ( 8) [sp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]>
; V03 loc2 [V03,T05] ( 28, 21.50) ref -> r6 class-hnd exact single-def <System.Collections.Generic.List`1[ubyte]>-; V04 loc3 [V04,T28] ( 4, 3.50) ref -> r7 class-hnd single-def <ubyte[]>+; V04 loc3 [V04,T29] ( 4, 3.50) ref -> r7 class-hnd single-def <ubyte[]> ; V05 loc4 [V05,T23] ( 3, 4.50) int -> registers
; V06 loc5 [V06,T04] ( 10, 22.50) int -> r7
; V07 loc6 [V07 ] ( 6, 2.50) struct ( 8) [sp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V08 loc7 [V08 ] ( 3, 3 ) ubyte -> [sp+0x2C] do-not-enreg[X] addr-exposed ld-addr-op-; V09 loc8 [V09,T35] ( 2, 2.50) ref -> r8 class-hnd exact <System.String>+; V09 loc8 [V09,T36] ( 2, 2.50) ref -> r8 class-hnd exact <System.String> ; V10 loc9 [V10,T13] ( 5, 8.50) int -> r9
; V11 loc10 [V11,T18] ( 3, 6 ) int -> r0
;* V12 loc11 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[ubyte]>-; V13 loc12 [V13,T25] ( 2, 4 ) ubyte -> r0 +; V13 loc12 [V13,T26] ( 2, 4 ) ubyte -> r0 ; V14 OutArgs [V14 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V15 tmp1 [V15 ] ( 3, 2.99) struct ( 8) [sp+0x24] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp2 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>-; V17 tmp3 [V17,T29] ( 3, 3 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ubyte]>+; V17 tmp3 [V17,T30] ( 3, 3 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ubyte]> ;* V18 tmp4 [V18 ] ( 0, 0 ) ref -> zero-ref "spilling varStr"
;* V19 tmp5 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V20 tmp6 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>-; V21 tmp7 [V21,T67] ( 2, 0 ) ref -> r4 class-hnd exact "non-inline candidate call" <System.String>
-; V22 tmp8 [V22,T66] ( 3, 0 ) ref -> r5 class-hnd exact "NewObj constructor temp" <<unknown class>>+; V21 tmp7 [V21,T68] ( 2, 0 ) ref -> r4 class-hnd exact "non-inline candidate call" <System.String>
+; V22 tmp8 [V22,T67] ( 3, 0 ) ref -> r5 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V23 tmp9 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V24 tmp10 [V24 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"-; V25 tmp11 [V25,T07] ( 4, 16 ) int -> r9 "impSpillLclRefs"+; V25 tmp11 [V25,T06] ( 4, 16 ) int -> r9 "impSpillLclRefs" ;* V26 tmp12 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V27 tmp13 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
;* V28 tmp14 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
; V29 tmp15 [V29,T22] ( 5, 5 ) ref -> r0 class-hnd exact "Inlining Arg" <System.String>
;* V30 tmp16 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp17 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>-; V32 tmp18 [V32,T32] ( 3, 3 ) int -> r9 "Inlining Arg"
-; V33 tmp19 [V33,T39] ( 2, 2 ) byref -> r8 "Inlining Arg"+; V32 tmp18 [V32,T33] ( 3, 3 ) int -> r9 "Inlining Arg"
+; V33 tmp19 [V33,T40] ( 2, 2 ) byref -> r8 "Inlining Arg" ;* V34 tmp20 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp21 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp22 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -50,7 +50,7 @@
;* V39 tmp25 [V39 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V40 tmp26 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V41 tmp27 [V41 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"-; V42 tmp28 [V42,T24] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp"+; V42 tmp28 [V42,T25] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp" ;* V43 tmp29 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V44 tmp30 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V45 tmp31 [V45 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -61,22 +61,22 @@
;* V50 tmp36 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V51 tmp37 [V51 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V52 tmp38 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>-; V53 tmp39 [V53,T51] ( 3, 1.43) ref -> r1 class-hnd "Inline stloc first use temp" <ubyte[]>
-; V54 tmp40 [V54,T43] ( 4, 1.85) int -> r0 "Inline stloc first use temp"
-; V55 tmp41 [V55,T52] ( 3, 1.43) ref -> r0 class-hnd "Inline stloc first use temp" <ubyte[]>
-; V56 tmp42 [V56,T44] ( 4, 1.85) int -> r1 "Inline stloc first use temp"
-; V57 tmp43 [V57,T53] ( 3, 1.43) ref -> r0 class-hnd "Inline stloc first use temp" <ubyte[]>
-; V58 tmp44 [V58,T45] ( 4, 1.85) int -> r3 "Inline stloc first use temp"
-; V59 tmp45 [V59,T38] ( 3, 2 ) ubyte -> r1 "Inlining Arg"+; V53 tmp39 [V53,T52] ( 3, 1.43) ref -> r1 class-hnd "Inline stloc first use temp" <ubyte[]>
+; V54 tmp40 [V54,T44] ( 4, 1.85) int -> r0 "Inline stloc first use temp"
+; V55 tmp41 [V55,T53] ( 3, 1.43) ref -> r0 class-hnd "Inline stloc first use temp" <ubyte[]>
+; V56 tmp42 [V56,T45] ( 4, 1.85) int -> r1 "Inline stloc first use temp"
+; V57 tmp43 [V57,T54] ( 3, 1.43) ref -> r0 class-hnd "Inline stloc first use temp" <ubyte[]>
+; V58 tmp44 [V58,T46] ( 4, 1.85) int -> r3 "Inline stloc first use temp"
+; V59 tmp45 [V59,T39] ( 3, 2 ) ubyte -> r1 "Inlining Arg" ;* V60 tmp46 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V61 tmp47 [V61,T08] ( 4, 16 ) int -> r12 "Inlining Arg"+; V61 tmp47 [V61,T07] ( 4, 16 ) int -> r12 "Inlining Arg" ;* V62 tmp48 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V63 tmp49 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ubyte]>-;* V64 tmp50 [V64,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V64 tmp50 [V64,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V65 tmp51 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ubyte]>-; V66 tmp52 [V66,T27] ( 4, 3.81) ref -> r0 class-hnd single-def "Inlining Arg" <ubyte[]>+; V66 tmp52 [V66,T28] ( 4, 3.81) ref -> r0 class-hnd single-def "Inlining Arg" <ubyte[]> ;* V67 tmp53 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>-; V68 tmp54 [V68,T64] ( 3, 0.99) ubyte -> r0 "Inline return value spill temp"+; V68 tmp54 [V68,T65] ( 3, 0.99) ubyte -> r0 "Inline return value spill temp" ;* V69 tmp55 [V69 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V70 tmp56 [V70 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V71 tmp57 [V71 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
@@ -91,29 +91,29 @@
; V80 tmp66 [V80 ] ( 2, 2 ) int -> [sp+0x3C] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x4)" P-DEP
; V81 tmp67 [V81 ] ( 4, 1.50) byref -> [sp+0x30] do-not-enreg[X] addr-exposed "field V07._reference (fldOffset=0x0)" P-DEP
; V82 tmp68 [V82 ] ( 4, 1.50) int -> [sp+0x34] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x4)" P-DEP-; V83 tmp69 [V83,T06] ( 4, 12.50) ref -> r6 single-def "field V12._list (fldOffset=0x0)" P-INDEP+; V83 tmp69 [V83,T09] ( 4, 12.50) ref -> r6 single-def "field V12._list (fldOffset=0x0)" P-INDEP ; V84 tmp70 [V84,T00] ( 6, 20.50) int -> [sp+0x20] "field V12._index (fldOffset=0x4)" P-INDEP-; V85 tmp71 [V85,T14] ( 3, 8.50) int -> [sp+0x1C] spill-single-def "field V12._version (fldOffset=0x8)" P-INDEP+; V85 tmp71 [V85,T24] ( 2, 4.50) int -> [sp+0x1C] spill-single-def "field V12._version (fldOffset=0x8)" P-INDEP ; V86 tmp72 [V86,T12] ( 2, 6 ) ubyte -> [sp+0x18] spill-single-def "field V12._current (fldOffset=0xc)" P-INDEP-; V87 tmp73 [V87,T50] ( 2, 1.49) byref -> [sp+0x24] do-not-enreg[H] hidden-struct-arg "field V15._reference (fldOffset=0x0)" P-DEP
-; V88 tmp74 [V88,T48] ( 2, 1.50) int -> [sp+0x28] do-not-enreg[H] hidden-struct-arg "field V15._length (fldOffset=0x4)" P-DEP+; V87 tmp73 [V87,T51] ( 2, 1.49) byref -> [sp+0x24] do-not-enreg[H] hidden-struct-arg "field V15._reference (fldOffset=0x0)" P-DEP
+; V88 tmp74 [V88,T49] ( 2, 1.50) int -> [sp+0x28] do-not-enreg[H] hidden-struct-arg "field V15._length (fldOffset=0x4)" P-DEP ;* V89 tmp75 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp76 [V90 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP-; V91 tmp77 [V91,T36] ( 2, 2.50) byref -> r0 "field V19._reference (fldOffset=0x0)" P-INDEP
-; V92 tmp78 [V92,T55] ( 2, 1 ) int -> r1 "field V19._length (fldOffset=0x4)" P-INDEP+; V91 tmp77 [V91,T37] ( 2, 2.50) byref -> r0 "field V19._reference (fldOffset=0x0)" P-INDEP
+; V92 tmp78 [V92,T56] ( 2, 1 ) int -> r1 "field V19._length (fldOffset=0x4)" P-INDEP ;* V93 tmp79 [V93 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp80 [V94 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x4)" P-INDEP
;* V95 tmp81 [V95 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp82 [V96 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP-; V97 tmp83 [V97,T54] ( 2, 1 ) byref -> r8 "field V30._reference (fldOffset=0x0)" P-INDEP
-; V98 tmp84 [V98,T56] ( 2, 1 ) int -> r9 "field V30._length (fldOffset=0x4)" P-INDEP+; V97 tmp83 [V97,T55] ( 2, 1 ) byref -> r8 "field V30._reference (fldOffset=0x0)" P-INDEP
+; V98 tmp84 [V98,T57] ( 2, 1 ) int -> r9 "field V30._length (fldOffset=0x4)" P-INDEP ;* V99 tmp85 [V99 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp86 [V100 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP
;* V101 tmp87 [V101 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP
;* V102 tmp88 [V102 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x4)" P-INDEP
;* V103 tmp89 [V103 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V104 tmp90 [V104 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP-; V105 tmp91 [V105,T37] ( 2, 2.50) byref -> r2 "field V40._reference (fldOffset=0x0)" P-INDEP+; V105 tmp91 [V105,T38] ( 2, 2.50) byref -> r2 "field V40._reference (fldOffset=0x0)" P-INDEP ;* V106 tmp92 [V106 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x4)" P-INDEP
;* V107 tmp93 [V107 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp94 [V108 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x4)" P-INDEP
@@ -127,12 +127,12 @@
;* V116 tmp102 [V116 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x4)" P-INDEP
;* V117 tmp103 [V117 ] ( 0, 0 ) byref -> zero-ref "field V52._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp104 [V118 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP-; V119 tmp105 [V119,T46] ( 3, 1.50) ref -> r6 single-def "field V63._list (fldOffset=0x0)" P-INDEP
-;* V120 tmp106 [V120,T65] ( 0, 0 ) int -> zero-ref "field V63._index (fldOffset=0x4)" P-INDEP
-; V121 tmp107 [V121,T57] ( 2, 1 ) int -> r3 "field V63._version (fldOffset=0x8)" P-INDEP+; V119 tmp105 [V119,T47] ( 3, 1.50) ref -> r6 single-def "field V63._list (fldOffset=0x0)" P-INDEP
+;* V120 tmp106 [V120,T66] ( 0, 0 ) int -> zero-ref "field V63._index (fldOffset=0x4)" P-INDEP
+; V121 tmp107 [V121,T58] ( 2, 1 ) int -> r3 "field V63._version (fldOffset=0x8)" P-INDEP ;* V122 tmp108 [V122 ] ( 0, 0 ) ubyte -> zero-ref "field V63._current (fldOffset=0xc)" P-INDEP-; V123 tmp109 [V123,T63] ( 3, 0.99) byref -> r1 "field V67._reference (fldOffset=0x0)" P-INDEP
-; V124 tmp110 [V124,T49] ( 4, 1.49) int -> r2 "field V67._length (fldOffset=0x4)" P-INDEP+; V123 tmp109 [V123,T64] ( 3, 0.99) byref -> r1 "field V67._reference (fldOffset=0x0)" P-INDEP
+; V124 tmp110 [V124,T50] ( 4, 1.49) int -> r2 "field V67._length (fldOffset=0x4)" P-INDEP ;* V125 tmp111 [V125 ] ( 0, 0 ) byref -> zero-ref single-def "field V69._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp112 [V126 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x4)" P-INDEP
;* V127 tmp113 [V127 ] ( 0, 0 ) byref -> zero-ref single-def "field V71._reference (fldOffset=0x0)" P-INDEP
@@ -145,32 +145,33 @@
;* V134 tmp120 [V134 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x4)" P-INDEP
;* V135 tmp121 [V135 ] ( 0, 0 ) byref -> zero-ref "field V78._reference (fldOffset=0x0)" P-INDEP
;* V136 tmp122 [V136 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP-;* V137 tmp123 [V137,T42] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"+;* V137 tmp123 [V137,T43] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ; V138 tmp124 [V138,T01] ( 3, 24 ) ref -> r0 "arr expr"-; V139 tmp125 [V139,T09] ( 2, 16 ) ref -> r0 "argument with side effect"
-; V140 tmp126 [V140,T30] ( 3, 3 ) ref -> r0 "arr expr"
-; V141 tmp127 [V141,T40] ( 2, 2 ) ref -> r3 "argument with side effect"
-; V142 tmp128 [V142,T33] ( 3, 3 ) struct ( 8) [sp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlySpan`1[ushort]>
-; V143 tmp129 [V143,T68] ( 2, 0 ) ref -> r1 "argument with side effect"
-; V144 tmp130 [V144,T69] ( 2, 0 ) ref -> r4 "argument with side effect"
-; V145 tmp131 [V145,T70] ( 2, 0 ) ref -> r2 "argument with side effect"
-; V146 tmp132 [V146,T31] ( 3, 3 ) ref -> r0 "arr expr"+; V139 tmp125 [V139,T08] ( 2, 16 ) ref -> r0 "argument with side effect"
+; V140 tmp126 [V140,T31] ( 3, 3 ) ref -> r0 "arr expr"
+; V141 tmp127 [V141,T41] ( 2, 2 ) ref -> r3 "argument with side effect"
+; V142 tmp128 [V142,T34] ( 3, 3 ) struct ( 8) [sp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlySpan`1[ushort]>
+; V143 tmp129 [V143,T69] ( 2, 0 ) ref -> r1 "argument with side effect"
+; V144 tmp130 [V144,T70] ( 2, 0 ) ref -> r4 "argument with side effect"
+; V145 tmp131 [V145,T71] ( 2, 0 ) ref -> r2 "argument with side effect"
+; V146 tmp132 [V146,T32] ( 3, 3 ) ref -> r0 "arr expr" ; V147 tmp133 [V147,T10] ( 3, 12 ) ref -> r2 "arr expr"-;* V148 tmp134 [V148,T26] ( 0, 0 ) ref -> zero-ref "arr expr"+;* V148 tmp134 [V148,T27] ( 0, 0 ) ref -> zero-ref "arr expr" ; V149 tmp135 [V149,T02] ( 3, 24 ) ref -> r0 "arr expr"-;* V150 tmp136 [V150,T61] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V151 PSPSym [V151,T62] ( 1, 1 ) int -> [sp+0x40] do-not-enreg[V] "PSPSym"+;* V150 tmp136 [V150,T62] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V151 PSPSym [V151,T63] ( 1, 1 ) int -> [sp+0x40] do-not-enreg[V] "PSPSym" ; V152 cse0 [V152,T19] ( 3, 6 ) int -> lr "CSE - moderate"-; V153 cse1 [V153,T58] ( 2, 1 ) int -> r3 "CSE - conservative"
-; V154 cse2 [V154,T59] ( 2, 1 ) int -> r3 "CSE - conservative"
-; V155 cse3 [V155,T60] ( 2, 1 ) int -> r2 "CSE - conservative"
-; V156 cse4 [V156,T11] ( 3, 12 ) int -> r1 "CSE - moderate"
-; V157 cse5 [V157,T20] ( 3, 6 ) int -> r3 "CSE - moderate"
-; V158 cse6 [V158,T16] ( 2, 4 ) ref -> r2 "CSE - moderate"
-; V159 cse7 [V159,T47] ( 3, 1.50) int -> r0 "CSE - conservative"
-; V160 cse8 [V160,T34] ( 3, 3 ) int -> r8 "CSE - moderate"
-; V161 cse9 [V161,T21] ( 3, 6 ) int -> r1 "CSE - moderate"
-; V162 cse10 [V162,T17] ( 3, 6 ) byref -> r2 "CSE - moderate"+; V153 cse1 [V153,T59] ( 2, 1 ) int -> r3 "CSE - conservative"
+; V154 cse2 [V154,T60] ( 2, 1 ) int -> r3 "CSE - conservative"
+; V155 cse3 [V155,T61] ( 2, 1 ) int -> r2 "CSE - conservative"
+; V156 cse4 [V156,T15] ( 2, 8 ) int -> r0 "CSE - moderate"
+; V157 cse5 [V157,T11] ( 2, 8 ) int -> r0 "CSE - moderate"
+; V158 cse6 [V158,T20] ( 3, 6 ) int -> r3 "CSE - moderate"
+; V159 cse7 [V159,T16] ( 2, 4 ) ref -> r2 "CSE - moderate"
+; V160 cse8 [V160,T48] ( 3, 1.50) int -> r0 "CSE - conservative"
+; V161 cse9 [V161,T35] ( 3, 3 ) int -> r8 "CSE - moderate"
+; V162 cse10 [V162,T21] ( 3, 6 ) int -> r1 "CSE - moderate"
+; V163 cse11 [V163,T17] ( 3, 6 ) byref -> r2 "CSE - moderate" ; TEMP_01 ref -> [r11-0x54]
;
; Lcl frame size = 68
@@ -224,7 +225,7 @@ G_M6771_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r0, [r4+0x38]
; gcrRegs +[r0]
cmp r0, 0- beq G_M6771_IG32+ beq G_M6771_IG31 ;; size=8 bbWeight=1 PerfScore 3.00
G_M6771_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
@@ -271,7 +272,7 @@ G_M6771_IG06: ; bbWeight=4, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, by
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r7, r1- bhs G_M6771_IG42+ bhs G_M6771_IG41 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -297,7 +298,7 @@ G_M6771_IG07: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {},
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r7, r1- bhs G_M6771_IG42+ bhs G_M6771_IG41 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -306,10 +307,10 @@ G_M6771_IG07: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {},
; gcrRegs +[r0]
; byrRegs -[r0]
cmp r0, 0- beq G_M6771_IG43+ beq G_M6771_IG42 ldr r1, [r0+0x04]
cmp r1, 4- blo G_M6771_IG43+ blo G_M6771_IG42 add r8, r0, 16
; byrRegs +[r8]
ldr r0, [r0+0x04]
@@ -371,7 +372,7 @@ G_M6771_IG11: ; bbWeight=0.50, isz, extend
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r1, 5
...
@@ -139,7 +139,7 @@ G_M29207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M29207_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrb r0, [r4+0x1B]
cmp r0, 0- bne G_M29207_IG35+ bne G_M29207_IG34 mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -149,7 +149,7 @@ G_M29207_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs -[r0]
mov r5, r0
cmp r5, 0- blt G_M29207_IG36+ blt G_M29207_IG35 cmp r5, 0
bne SHORT G_M29207_IG05
;; size=34 bbWeight=1 PerfScore 13.00
@@ -195,7 +195,7 @@ G_M29207_IG06: ; bbWeight=4.00, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r
; byrRegs +[r6]
subs r3, r5, r7
cmp r3, 128- blt G_M29207_IG19+ blt G_M29207_IG28 ;; size=8 bbWeight=4.00 PerfScore 12.00
G_M29207_IG07: ; bbWeight=1.48, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, byref
movs r3, 128
@@ -206,7 +206,7 @@ G_M29207_IG08: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6},
str r2, [r9+0x24] // [V11 tmp2]
; GC ptr vars +{V11}
cmp r3, 128- bhi G_M29207_IG39+ bhi G_M29207_IG38 str r3, [r9+0x34] // [V27 tmp18]
cmp r3, 0
bge SHORT G_M29207_IG10
@@ -254,13 +254,13 @@ G_M29207_IG10: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6},
mov r3, r0
str r3, [r9+0x3C] // [V07 loc6]
cmp r3, 0- beq G_M29207_IG38+ beq G_M29207_IG37 cmp r7, 0
bne SHORT G_M29207_IG13
;; size=64 bbWeight=4 PerfScore 84.00
G_M29207_IG11: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, byref, isz
cmp r3, r5- beq G_M29207_IG30+ beq G_M29207_IG29 ;; size=6 bbWeight=2 PerfScore 4.00
G_M29207_IG12: ; bbWeight=1, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, byref
movw r0, 0xd1ff
@@ -355,11 +355,11 @@ G_M29207_IG17: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6},
str r2, [r9+0x20] // [V13 tmp4]
; GC ptr vars +{V13}
cmp r3, 128- bhi G_M29207_IG39+ bhi G_M29207_IG38 cmp r3, 0- bge SHORT G_M29207_IG21+ bge SHORT G_M29207_IG19 ;; size=16 bbWeight=4 PerfScore 24.00-G_M29207_IG18: ; bbWeight=2, gcVars=0000000000000010 {V13}, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, gcvars, byref, isz+G_M29207_IG18: ; bbWeight=2, gcVars=0000000000000010 {V13}, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, gcvars, byref ; gcrRegs -[r2]
movw r2, 0xd1ff
movt r2, 0xd1ff
@@ -374,14 +374,6 @@ G_M29207_IG18: ; bbWeight=2, gcVars=0000000000000010 {V13}, gcrefRegs=011
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r0-r1]- b SHORT G_M29207_IG20
- ;; size=32 bbWeight=2 PerfScore 20.00
-G_M29207_IG19: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, gcvars, byref, isz
- ; GC ptr vars -{V13 V109}
- b SHORT G_M29207_IG08
- ;; size=2 bbWeight=0.52 PerfScore 0.52
-G_M29207_IG20: ; bbWeight=2, gcVars=0000000000000410 {V13 V109}, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, gcvars, byref
- ; GC ptr vars +{V04 V13 V109} ldr r0, [r9+0x14] // [V109 cse0]
; gcrRegs +[r0]
mov r1, r0
@@ -389,17 +381,17 @@ G_M29207_IG20: ; bbWeight=2, gcVars=0000000000000410 {V13 V109}, gcrefReg
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]- ; GC ptr vars -{V04 V109}+ ; GC ptr vars -{V109} blx r3 // <unknown method>
; gcrRegs -[r0-r1]- ;; size=18 bbWeight=2 PerfScore 12.00
-G_M29207_IG21: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, byref, isz+ ;; size=48 bbWeight=2 PerfScore 30.00
+G_M29207_IG19: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, byref, isz ldr r1, [r4+0x10]
; gcrRegs +[r1]
cmp r1, 0- beq G_M29207_IG37+ beq G_M29207_IG36 ;; size=8 bbWeight=4 PerfScore 12.00-G_M29207_IG22: ; bbWeight=2, gcrefRegs=0112 {r1 r4 r8}, byrefRegs=0040 {r6}, byref+G_M29207_IG20: ; bbWeight=2, gcrefRegs=0112 {r1 r4 r8}, byrefRegs=0040 {r6}, byref add r2, r1, 8
; byrRegs +[r2]
str r2, [r9+0x18] // [V100 tmp91]
@@ -407,7 +399,7 @@ G_M29207_IG22: ; bbWeight=2, gcrefRegs=0112 {r1 r4 r8}, byrefRegs=0040 {r
ldr lr, [r1+0x04]
str lr, [r9+0x28] // [V101 tmp92]
;; size=16 bbWeight=2 PerfScore 8.00-G_M29207_IG23: ; bbWeight=4, gcVars=0000000000040010 {V13 V100}, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, gcvars, byref, isz+G_M29207_IG21: ; bbWeight=4, gcVars=0000000000040010 {V13 V100}, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, gcvars, byref, isz ; gcrRegs -[r1]
; byrRegs -[r2]
ldr r0, [r9+0x20] // [V13 tmp4]
@@ -438,9 +430,9 @@ G_M29207_IG23: ; bbWeight=4, gcVars=0000000000040010 {V13 V100}, gcrefReg
; byrRegs -[r1 r3]
str r0, [r9+0x38] // [V08 loc7]
cmp r8, 0- bne SHORT G_M29207_IG27+ bne SHORT G_M29207_IG25 ;; size=72 bbWeight=4 PerfScore 84.00-G_M29207_IG24: ; bbWeight=2.00, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz+G_M29207_IG22: ; bbWeight=2.00, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz ; gcrRegs -[r8]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -448,12 +440,12 @@ G_M29207_IG24: ; bbWeight=2.00, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6},
movt r2, 0xd1ff
blx r2 // CORINFO_HELP_COUNTPROFILE32
cmp r5, 360- bgt SHORT G_M29207_IG29+ bgt SHORT G_M29207_IG27 ;; size=24 bbWeight=2.00 PerfScore 14.00-G_M29207_IG25: ; bbWeight=1.48, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref+G_M29207_IG23: ; bbWeight=1.48, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref mov r0, r5
;; size=2 bbWeight=1.48 PerfScore 1.48-G_M29207_IG26: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref+G_M29207_IG24: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -462,7 +454,7 @@ G_M29207_IG26: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, by
mov r8, r0
; gcrRegs +[r8]
;; size=14 bbWeight=2 PerfScore 10.00-G_M29207_IG27: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, byref, isz+G_M29207_IG25: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, byref, isz ; gcrRegs -[r0]
ldr r1, [r4+0x10]
; gcrRegs +[r1]
@@ -479,9 +471,9 @@ G_M29207_IG27: ; bbWeight=4, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6},
ldr r3, [r9+0x3C] // [V07 loc6]
adds r7, r7, r3
cmp r7, r5- bge SHORT G_M29207_IG32+ bge SHORT G_M29207_IG31 ;; size=38 bbWeight=4 PerfScore 52.00-G_M29207_IG28: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, byref, isz+G_M29207_IG26: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, byref, isz ; gcrRegs -[r0]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -490,12 +482,17 @@ G_M29207_IG28: ; bbWeight=2, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6},
blx r3 // CORINFO_HELP_COUNTPROFILE32
b SHORT G_M29207_IG06
;; size=20 bbWeight=2 PerfScore 12.00-G_M29207_IG29: ; bbWeight=0.52, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz+G_M29207_IG27: ; bbWeight=0.52, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz ; gcrRegs -[r8]
mov r0, 360- b SHORT G_M29207_IG26+ b SHORT G_M29207_IG24 ;; size=6 bbWeight=0.52 PerfScore 1.04-G_M29207_IG30: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz+G_M29207_IG28: ; bbWeight=0.52, gcrefRegs=0110 {r4 r8}, byrefRegs=0040 {r6}, byref, isz
+ ; gcrRegs +[r8]
+ b SHORT G_M29207_IG08
+ ;; size=2 bbWeight=0.52 PerfScore 0.52
+G_M29207_IG29: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz
+ ; gcrRegs -[r8] movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -504,7 +501,7 @@ G_M29207_IG30: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6},
ldr r2, [r4+0x08]
; gcrRegs +[r2]
cmp r5, 128- bhi G_M29207_IG39+ bhi G_M29207_IG38 ldrsb r0, [r2]
str r6, [r9+0x30] // [V45 tmp36]
mov r0, r6
@@ -519,19 +516,19 @@ G_M29207_IG30: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6},
movt r12, 0xd1ff
ldr lr, [r9+0x10] // [V108 GsCookie]
cmp r12, lr- beq SHORT G_M29207_IG31+ beq SHORT G_M29207_IG30 movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_FAIL_FAST
; gcrRegs -[r0]
;; size=76 bbWeight=0.50 PerfScore 12.00-G_M29207_IG31: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc+G_M29207_IG30: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs +[r0]
mov sp, r9
add sp, 68
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=8 bbWeight=0.50 PerfScore 1.50-G_M29207_IG32: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref, isz+G_M29207_IG31: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0] +[r8]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -552,7 +549,7 @@ G_M29207_IG32: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=010
ldr r1, [r8+0x10]
adds r0, r0, r1
cmp r0, 360- bgt SHORT G_M29207_IG33+ bgt SHORT G_M29207_IG32 movw r0, 0xd1ff
movt r0, 0xd1ff
mov r1, 0x440
@@ -569,26 +566,26 @@ G_M29207_IG32: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=010
; gcrRegs -[r1 r8]
; byrRegs -[r0]
;; size=88 bbWeight=0.50 PerfScore 14.00-G_M29207_IG33: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz+G_M29207_IG32: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz mov r0, r5
; gcrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
ldr lr, [r9+0x10] // [V108 GsCookie]
cmp r12, lr- beq SHORT G_M29207_IG34+ beq SHORT G_M29207_IG33 movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_FAIL_FAST
; gcrRegs -[r0 r5]
;; size=28 bbWeight=0.50 PerfScore 4.50-G_M29207_IG34: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc+G_M29207_IG33: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs +[r0]
mov sp, r9
add sp, 68
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
...
@@ -8,12 +8,12 @@
; 6 inlinees with PGO data; 14 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T57] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T00] ( 27, 93 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode>+; V00 this [V00,T58] ( 4, 3 ) ref -> r4 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T00] ( 26, 91 ) ref -> r4 class-hnd <System.Text.RegularExpressions.RegexNode> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V03 loc2 [V03,T32] ( 3, 12 ) ubyte -> r0
; V04 loc3 [V04,T26] ( 4, 12 ) ubyte -> r0 -;* V05 loc4 [V05,T63] ( 0, 0 ) ubyte -> zero-ref +;* V05 loc4 [V05,T64] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode>
; V07 loc6 [V07,T12] ( 3, 24 ) int -> r6
; V08 loc7 [V08,T01] ( 7, 76 ) int -> r5
@@ -25,7 +25,7 @@
;* V14 tmp4 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T34] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V16 tmp6 [V16,T41] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V17 tmp7 [V17,T58] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V17 tmp7 [V17,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V18 tmp8 [V18,T16] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V19 tmp9 [V19,T39] ( 4, 10 ) int -> r6 "Inline return value spill temp"
; V20 tmp10 [V20,T52] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
@@ -34,7 +34,7 @@
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V24 tmp14 [V24,T35] ( 4, 11 ) ref -> r7 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V25 tmp15 [V25,T42] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V26 tmp16 [V26,T59] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V26 tmp16 [V26,T60] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V27 tmp17 [V27,T17] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V28 tmp18 [V28,T14] ( 4, 20 ) int -> r6 "Inlining Arg"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode>
@@ -42,10 +42,10 @@
; V31 tmp21 [V31,T46] ( 4, 8 ) int -> r7 "Inline return value spill temp"
; V32 tmp22 [V32,T53] ( 3, 6 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V33 tmp23 [V33,T21] ( 4, 16 ) ref -> r6 class-hnd "Inlining Arg" <System.Text.RegularExpressions.RegexNode>-; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r1 "CASTCLASS eval op1"
-; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r1 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>+; V34 tmp24 [V34,T50] ( 2, 8 ) ref -> r0 "CASTCLASS eval op1"
+; V35 tmp25 [V35,T38] ( 3, 10 ) ref -> r0 class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V36 tmp26 [V36,T43] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V37 tmp27 [V37,T60] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable"+; V37 tmp27 [V37,T61] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable" ; V38 tmp28 [V38,T10] ( 8, 27 ) ref -> r4 class-hnd "spilling QMark2" <<unknown class>>
; V39 tmp29 [V39,T33] ( 3, 12 ) int -> r7 "Inlining Arg"
; V40 tmp30 [V40,T40] ( 4, 10 ) int -> r6 "Inline return value spill temp"
@@ -62,7 +62,7 @@
;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V52 tmp42 [V52,T36] ( 4, 11 ) ref -> r3 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V53 tmp43 [V53,T44] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V54 tmp44 [V54,T61] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V54 tmp44 [V54,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V55 tmp45 [V55,T18] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
;* V56 tmp46 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V57 tmp47 [V57,T49] ( 3, 8 ) ref -> r4 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
@@ -70,7 +70,7 @@
;* V59 tmp49 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
; V60 tmp50 [V60,T37] ( 4, 11 ) ref -> r4 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
; V61 tmp51 [V61,T45] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"-; V62 tmp52 [V62,T62] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable"+; V62 tmp52 [V62,T63] ( 3, 5 ) int -> r2 "fgMakeTemp is creating a new local variable" ; V63 tmp53 [V63,T19] ( 6, 19 ) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V64 tmp54 [V64,T28] ( 3, 12 ) ref -> r1 "arr expr"
; V65 tmp55 [V65,T29] ( 3, 12 ) ref -> r0 "arr expr"
@@ -81,7 +81,8 @@
; V70 cse1 [V70,T07] ( 3, 40 ) ref -> r1 "CSE - aggressive"
; V71 cse2 [V71,T55] ( 3, 6 ) ref -> r0 "CSE - conservative"
; V72 cse3 [V72,T56] ( 3, 6 ) ref -> r1 "CSE - conservative"-; V73 rat0 [V73,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable"+; V73 cse4 [V73,T57] ( 3, 6 ) ref -> r1 "CSE - conservative"
+; V74 rat0 [V74,T13] ( 3, 24 ) int -> r5 "ReplaceWithLclVar is creating a new local variable" ;
; Lcl frame size = 0
@@ -109,7 +110,7 @@ G_M35244_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r4]
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50-G_M35244_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M35244_IG05: ; bbWeight=4, gcVars=000000000000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4]
ldrb r0, [r4+0x1E]
subs r3, r0, 3
@@ -399,20 +400,26 @@ G_M35244_IG30: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- ldr r1, [r4+0x04]+ ldr r2, [r4+0x04]
+ ; gcrRegs +[r2]
+ mov r1, r2 ; gcrRegs +[r1]- cmp r1, 0+ mov r0, r1
+ ; gcrRegs +[r0]
+ cmp r0, 0 beq SHORT G_M35244_IG33- ;; size=56 bbWeight=2 PerfScore 40.00
-G_M35244_IG31: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r1]
- ; gcrRegs -[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0+ ;; size=60 bbWeight=2 PerfScore 44.00
+G_M35244_IG31: ; bbWeight=1, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2]
+ ldr r0, [r0]
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3 bne SHORT G_M35244_IG33
;; size=14 bbWeight=1 PerfScore 5.00
G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz+ ; gcrRegs -[r1] adds r0, r4, 4
; byrRegs +[r0]
mov r1, r6
@@ -424,14 +431,13 @@ G_M35244_IG32: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
; byrRegs -[r0]
b SHORT G_M35244_IG37
;; size=16 bbWeight=2 PerfScore 12.00-G_M35244_IG33: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4 r6]
- ldr r1, [r4+0x04]
- ; gcrRegs +[r1]+G_M35244_IG33: ; bbWeight=2, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1 r6] mov r4, r1+ ; gcrRegs +[r4] cmp r4, 0
beq SHORT G_M35244_IG36- ;; size=8 bbWeight=2 PerfScore 8.00+ ;; size=6 bbWeight=2 PerfScore 6.00 G_M35244_IG34: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4]
movw r3, 0xd1ff
@@ -755,7 +761,7 @@ G_M35244_IG68: ; bbWeight=0.50, epilog, nogc, extend
bx r3 // <unknown method>
; gcr arg pop 0
;; size=6 bbWeight=0.50 PerfScore 1.00-G_M35244_IG69: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M35244_IG69: ; bbWeight=0, gcVars=000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0 r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -783,7 +789,7 @@ RWD00 dd G_M35244_IG38
dd G_M35244_IG38
-; Total bytes of code 952, prolog size 10, PerfScore 1008.50, instruction count 379, allocated bytes for code 952 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)+; Total bytes of code 954, prolog size 10, PerfScore 1010.50, instruction count 380, allocated bytes for code 954 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts) ; ============================================================
Unwind Info:
@@ -795,7 +801,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0- Function Length : 476 (0x001dc) Actual length = 952 (0x0003b8)+ Function Length : 477 (0x001dd) Actual length = 954 (0x0003ba) ---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T03] ( 4, 14 ) ref -> r5 this class-hnd single-def <System.Net.HttpEndPointListener>
-; V01 arg1 [V01,T02] ( 5, 22 ) ref -> r4 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs>
-; V02 loc0 [V02,T01] ( 3, 24 ) ubyte -> r6 +; V00 this [V00,T02] ( 4, 18 ) ref -> r5 this class-hnd single-def <System.Net.HttpEndPointListener>
+; V01 arg1 [V01,T01] ( 5, 26 ) ref -> r4 class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs>
+; V02 loc0 [V02,T03] ( 2, 16 ) ubyte -> r0 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
; V05 tmp2 [V05,T00] ( 3, 48 ) ref -> r0 class-hnd "Inlining Arg" <System.Net.Sockets.Socket>
@@ -18,15 +18,15 @@
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref "field V06._source (fldOffset=0x0)" P-INDEP
;* V09 tmp6 [V09,T04] ( 0, 0 ) ref -> zero-ref "field V07._source (fldOffset=0x0)" P-INDEP-; V10 PSPSym [V10,T05] ( 1, 1 ) int -> [sp+0x00] do-not-enreg[V] "PSPSym"+; V10 PSPSym [V10,T05] ( 1, 1 ) int -> [sp+0x04] do-not-enreg[V] "PSPSym" ;-; Lcl frame size = 4+; Lcl frame size = 8
G_M14120_IG01: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG- push {r3,r4,r5,r6,r11,lr}+ push {r2,r3,r4,r5,r11,lr} add r11, sp, 16
add r2, sp, 24- str r2, [sp]+ str r2, [sp+0x04] mov r5, r0
; gcrRegs +[r5]
mov r4, r1
@@ -47,13 +47,10 @@ G_M14120_IG02: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0- mov r6, r0
- ;; size=28 bbWeight=8 PerfScore 88.00+ ;; size=26 bbWeight=8 PerfScore 80.00 G_M14120_IG03: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz- cmp r6, 0
- bne SHORT G_M14120_IG05
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M14120_IG04: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref+ cmp r0, 0
+ bne SHORT G_M14120_IG04 mov r0, r5
; gcrRegs +[r0]
mov r1, r4
@@ -64,29 +61,26 @@ G_M14120_IG04: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0- ;; size=16 bbWeight=4 PerfScore 24.00
-G_M14120_IG05: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- cmp r6, 0
- beq SHORT G_M14120_IG02
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M14120_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc+ b SHORT G_M14120_IG02
+ ;; size=22 bbWeight=8 PerfScore 72.00
+G_M14120_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4-r5]- pop {r3,r4,r5,r6,r11,pc}+ pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00-G_M14120_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- push {r3,r4,r5,r6,r11,lr}+G_M14120_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ push {r2,r3,r4,r5,r11,lr} add r3, r11, 8- str r3, [sp]+ str r3, [sp+0x04] ;; size=10 bbWeight=0 PerfScore 0.00-G_M14120_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r0, LOW ADDRESS G_M14120_IG06
- movt r0, HIGH ADDRESS G_M14120_IG06+G_M14120_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movw r0, LOW ADDRESS G_M14120_IG04
+ movt r0, HIGH ADDRESS G_M14120_IG04 ;; size=8 bbWeight=0 PerfScore 0.00-G_M14120_IG09: ; bbWeight=0, funclet epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}+G_M14120_IG07: ; bbWeight=0, funclet epilog, nogc, extend
+ pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 16, PerfScore 193.00, instruction count 34, allocated bytes for code 94 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)+; Total bytes of code 90, prolog size 16, PerfScore 201.00, instruction count 32, allocated bytes for code 90 (MethodHash=c2bdc8d7) for method System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts) ; ============================================================
Unwind Info:
@@ -98,11 +92,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 36 (0x00024) Actual length = 72 (0x000048)+ Function Length : 34 (0x00022) Actual length = 68 (0x000044) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32 FF end
FF end
@@ -119,10 +113,10 @@ Unwind Info:
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32 FF end
FF end
*************** EH table for System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG07..END) (class: 100003E)+EH#0: try [G_M14120_IG02..G_M14120_IG03) handled by [G_M14120_IG05..END) (class: 100003E)
@@ -8,29 +8,30 @@
; 3 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T09] ( 4, 4 ) ref -> r4 this class-hnd single-def <Xunit.AggregateMessageSink>
-; V01 arg1 [V01,T06] ( 3, 5.35) ref -> r5 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
-; V02 arg2 [V02,T07] ( 3, 5.35) ref -> r6 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]>
-; V03 loc0 [V03,T05] ( 4, 8.70) ubyte -> r7
-; V04 loc1 [V04,T14] ( 4, 1.50) ref -> [sp+0x04] class-hnd EH-live single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>+; V00 this [V00,T10] ( 4, 4 ) ref -> r4 this class-hnd single-def <Xunit.AggregateMessageSink>
+; V01 arg1 [V01,T07] ( 3, 5.35) ref -> r5 class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
+; V02 arg2 [V02,T08] ( 3, 5.35) ref -> r6 class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]>
+; V03 loc0 [V03,T06] ( 4, 8.70) ubyte -> r7
+; V04 loc1 [V04,T15] ( 4, 1.50) ref -> [sp+0x04] class-hnd EH-live single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]> ; V05 loc2 [V05 ] ( 5, 4 ) ubyte -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V06 loc3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V08 tmp1 [V08,T11] ( 2, 4 ) ubyte -> r0 "Inlining Arg"
-; V09 tmp2 [V09,T10] ( 2, 4 ) ref -> r9 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>+; V08 tmp1 [V08,T12] ( 2, 4 ) ubyte -> r0 "Inlining Arg"
+; V09 tmp2 [V09,T11] ( 2, 4 ) ref -> r9 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>-;* V11 tmp4 [V11,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V11 tmp4 [V11,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>-; V13 tmp6 [V13,T01] ( 5, 17.00) ref -> r9 single-def "field V06._list (fldOffset=0x0)" P-INDEP
-; V14 tmp7 [V14,T03] ( 2, 6.70) ref -> r0 "field V06._current (fldOffset=0x4)" P-INDEP+; V13 tmp6 [V13,T02] ( 4, 16.34) ref -> r9 single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V14 tmp7 [V14,T04] ( 2, 6.70) ref -> r0 "field V06._current (fldOffset=0x4)" P-INDEP ; V15 tmp8 [V15,T00] ( 6, 18.39) int -> [sp+0x08] "field V06._index (fldOffset=0x8)" P-INDEP-; V16 tmp9 [V16,T04] ( 3, 9.65) int -> r10 single-def "field V06._version (fldOffset=0xc)" P-INDEP
-; V17 tmp10 [V17,T12] ( 3, 3 ) ref -> r9 single-def "field V10._list (fldOffset=0x0)" P-INDEP+; V16 tmp9 [V16,T05] ( 2, 9 ) int -> r10 single-def "field V06._version (fldOffset=0xc)" P-INDEP
+; V17 tmp10 [V17,T13] ( 3, 3 ) ref -> r9 single-def "field V10._list (fldOffset=0x0)" P-INDEP ;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x4)" P-INDEP-;* V19 tmp12 [V19,T15] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
-; V20 tmp13 [V20,T13] ( 2, 2 ) int -> r10 single-def "field V10._version (fldOffset=0xc)" P-INDEP
-; V21 tmp14 [V21,T02] ( 3, 20.09) ref -> r0 "arr expr"
-; V22 PSPSym [V22,T16] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"+;* V19 tmp12 [V19,T16] ( 0, 0 ) int -> zero-ref single-def "field V10._index (fldOffset=0x8)" P-INDEP
+; V20 tmp13 [V20,T14] ( 2, 2 ) int -> r10 single-def "field V10._version (fldOffset=0xc)" P-INDEP
+; V21 tmp14 [V21,T01] ( 3, 20.09) ref -> r0 "arr expr"
+; V22 PSPSym [V22,T17] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
+; V23 cse0 [V23,T03] ( 2, 7.99) int -> r0 "CSE - aggressive" ;
; Lcl frame size = 20
@@ -56,7 +57,7 @@ G_M52679_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
str r8, [sp+0x04]
; GC ptr vars +{V04}
;; size=10 bbWeight=1 PerfScore 3.00-G_M52679_IG03: ; bbWeight=1, gcVars=00004000 {V04}, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz+G_M52679_IG03: ; bbWeight=1, gcVars=00008000 {V04}, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x0C]
cmp r1, 0
bne SHORT G_M52679_IG09
@@ -93,19 +94,19 @@ G_M52679_IG06: ; bbWeight=8, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000
; gcrRegs -[r4]
ldr r0, [r9+0x0C]
cmp r10, r0- bne SHORT G_M52679_IG10+ bne SHORT G_M52679_IG11 ;; size=8 bbWeight=8 PerfScore 24.00
G_M52679_IG07: ; bbWeight=4.00, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x08]
cmp r3, r0- bhs SHORT G_M52679_IG14+ bhs SHORT G_M52679_IG12 ;; size=8 bbWeight=4.00 PerfScore 11.99
G_M52679_IG08: ; bbWeight=3.35, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x04]
; gcrRegs +[r0]
ldr r2, [r0+0x04]
cmp r3, r2- bhs SHORT G_M52679_IG12+ bhs SHORT G_M52679_IG10 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -139,24 +140,14 @@ G_M52679_IG09: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byre
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M52679_IG10: ; bbWeight=0.65, gcrefRegs=0300 {r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r9]
- ldr r0, [r9+0x0C]
- cmp r10, r0
- bne SHORT G_M52679_IG13
- ;; size=8 bbWeight=0.65 PerfScore 1.96
-G_M52679_IG11: ; bbWeight=4, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r9]
- b SHORT G_M52679_IG14
- ;; size=2 bbWeight=4 PerfScore 4.00
-G_M52679_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M52679_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M52679_IG13: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref+G_M52679_IG11: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref ; gcrRegs +[r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -165,12 +156,12 @@ G_M52679_IG13: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byre
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M52679_IG14: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz+G_M52679_IG12: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz ldrb r0, [sp+0x0C] // [V05 loc2]
cmp r0, 0- beq SHORT G_M52679_IG16+ beq SHORT G_M52679_IG14 ;; size=8 bbWeight=1 PerfScore 3.00-G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref+G_M52679_IG13: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref mov r0, r8
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -180,37 +171,37 @@ G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, b
; gcrRegs -[r0 r8]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00-G_M52679_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M52679_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov r0, r7
;; size=2 bbWeight=1 PerfScore 1.00-G_M52679_IG17: ; bbWeight=1, epilog, nogc, extend+G_M52679_IG15: ; bbWeight=1, epilog, nogc, extend add sp, 20
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00-G_M52679_IG18: ; bbWeight=0, gcVars=00004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V04 V14}+G_M52679_IG16: ; bbWeight=0, gcVars=00008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V04 V15} push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
add r3, r11, 8
str r3, [sp]
;; size=10 bbWeight=0 PerfScore 0.00-G_M52679_IG19: ; bbWeight=0, gcVars=00004000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M52679_IG17: ; bbWeight=0, gcVars=00008000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r0, [r11-0x24] // [V05 loc2]
cmp r0, 0- beq SHORT G_M52679_IG20+ beq SHORT G_M52679_IG18 ldr r0, [r11-0x2C] // [V04 loc1]
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff- ; GC ptr vars -{V04 V14}+ ; GC ptr vars -{V04 V15} blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
;; size=22 bbWeight=0 PerfScore 0.00-G_M52679_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc+G_M52679_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 24, PerfScore 144.56, instruction count 98, allocated bytes for code 276 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)+; Total bytes of code 266, prolog size 24, PerfScore 138.60, instruction count 94, allocated bytes for code 266 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts) ; ============================================================
Unwind Info:
@@ -222,7 +213,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 120 (0x00078) Actual length = 240 (0x0000f0)+ Function Length : 115 (0x00073) Actual length = 230 (0x0000e6) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -250,4 +241,4 @@ Unwind Info:
*************** EH table for Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M52679_IG03..G_M52679_IG14) handled by [G_M52679_IG18..END) (fault)+EH#0: try [G_M52679_IG03..G_M52679_IG12) handled by [G_M52679_IG16..END) (fault)
@@ -8,25 +8,26 @@
; 2 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T06] ( 4, 4 ) ref -> r5 this class-hnd single-def <Microsoft.Extensions.Configuration.ConfigurationManager>
-; V01 loc0 [V01,T08] ( 6, 3 ) ref -> [sp+0x04] class-hnd EH-live single-def <<unknown class>>+; V00 this [V00,T07] ( 4, 4 ) ref -> r5 this class-hnd single-def <Microsoft.Extensions.Configuration.ConfigurationManager>
+; V01 loc0 [V01,T09] ( 6, 3 ) ref -> [sp+0x04] class-hnd EH-live single-def <<unknown class>> ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.Extensions.Configuration.IConfigurationProvider]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.Extensions.Configuration.IConfigurationProvider>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V05 tmp1 [V05,T07] ( 2, 4 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>+; V05 tmp1 [V05,T08] ( 2, 4 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Extensions.Configuration.IConfigurationProvider]>-;* V07 tmp3 [V07,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V07 tmp3 [V07,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V09 tmp5 [V09,T01] ( 5, 17.00) ref -> r7 single-def "field V02._list (fldOffset=0x0)" P-INDEP+; V09 tmp5 [V09,T02] ( 4, 16.34) ref -> r7 single-def "field V02._list (fldOffset=0x0)" P-INDEP ; V10 tmp6 [V10,T04] ( 2, 5.35) ref -> r0 "field V02._current (fldOffset=0x4)" P-INDEP
; V11 tmp7 [V11,T00] ( 6, 18.39) int -> r9 "field V02._index (fldOffset=0x8)" P-INDEP-; V12 tmp8 [V12,T03] ( 3, 9.65) int -> r8 single-def "field V02._version (fldOffset=0xc)" P-INDEP
-; V13 tmp9 [V13,T09] ( 3, 3 ) ref -> r7 single-def "field V06._list (fldOffset=0x0)" P-INDEP+; V12 tmp8 [V12,T05] ( 2, 9 ) int -> r8 single-def "field V02._version (fldOffset=0xc)" P-INDEP
+; V13 tmp9 [V13,T10] ( 3, 3 ) ref -> r7 single-def "field V06._list (fldOffset=0x0)" P-INDEP ;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._current (fldOffset=0x4)" P-INDEP-;* V15 tmp11 [V15,T11] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x8)" P-INDEP
-; V16 tmp12 [V16,T10] ( 2, 2 ) int -> r8 single-def "field V06._version (fldOffset=0xc)" P-INDEP
-; V17 tmp13 [V17,T02] ( 3, 20.09) ref -> r0 "arr expr"
-; V18 PSPSym [V18,T12] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"+;* V15 tmp11 [V15,T12] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x8)" P-INDEP
+; V16 tmp12 [V16,T11] ( 2, 2 ) int -> r8 single-def "field V06._version (fldOffset=0xc)" P-INDEP
+; V17 tmp13 [V17,T01] ( 3, 20.09) ref -> r0 "arr expr"
+; V18 PSPSym [V18,T13] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V19 cse0 [V19,T03] ( 2, 7.99) int -> r0 "CSE - aggressive" ;
; Lcl frame size = 16
@@ -53,7 +54,7 @@ G_M4766_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
str r6, [sp+0x04]
; GC ptr vars +{V01}
;; size=20 bbWeight=1 PerfScore 8.00-G_M4766_IG03: ; bbWeight=1, gcVars=00000100 {V01}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz+G_M4766_IG03: ; bbWeight=1, gcVars=00000200 {V01}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0]
mov r0, r6
; gcrRegs +[r0]
@@ -79,12 +80,12 @@ G_M4766_IG04: ; bbWeight=2, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000
G_M4766_IG05: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r7+0x0C]
cmp r8, r0- bne SHORT G_M4766_IG10+ bne SHORT G_M4766_IG09 ;; size=6 bbWeight=8 PerfScore 24.00
G_M4766_IG06: ; bbWeight=4.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r7+0x08]
cmp r9, r0- bhs SHORT G_M4766_IG11+ bhs SHORT G_M4766_IG10 ;; size=6 bbWeight=4.00 PerfScore 11.99
G_M4766_IG07: ; bbWeight=3.35, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r7+0x04]
@@ -118,14 +119,8 @@ G_M4766_IG09: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M4766_IG10: ; bbWeight=0.65, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5 r7]
- ldr r0, [r7+0x0C]
- cmp r8, r0
- bne SHORT G_M4766_IG09
- ;; size=6 bbWeight=0.65 PerfScore 1.96
-G_M4766_IG11: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7]+G_M4766_IG10: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r5] mov r0, r6
; gcrRegs +[r0]
movw r4, 0xd1ff
@@ -144,34 +139,34 @@ G_M4766_IG11: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
; gcrRegs -[r0 r5]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 10.00-G_M4766_IG12: ; bbWeight=1, epilog, nogc, extend+G_M4766_IG11: ; bbWeight=1, epilog, nogc, extend add sp, 16
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00-G_M4766_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc+G_M4766_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
add r3, r11, 8
str r3, [sp+0x04]
;; size=10 bbWeight=0 PerfScore 0.00-G_M4766_IG14: ; bbWeight=0, gcVars=00000100 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V01}+G_M4766_IG13: ; bbWeight=0, gcVars=00000200 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V01 V09} ldr r0, [r11-0x24] // [V01 loc0]
; gcrRegs +[r0]
cmp r0, 0- beq SHORT G_M4766_IG15+ beq SHORT G_M4766_IG14 movw r4, 0xd1ff
movt r4, 0xd1ff
ldr r3, [r4]- ; GC ptr vars -{V01}+ ; GC ptr vars -{V01 V09} blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
;; size=20 bbWeight=0 PerfScore 0.00-G_M4766_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc+G_M4766_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 202, prolog size 16, PerfScore 111.08, instruction count 76, allocated bytes for code 202 (MethodHash=07d7ed61) for method Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts)+; Total bytes of code 196, prolog size 16, PerfScore 109.12, instruction count 73, allocated bytes for code 196 (MethodHash=07d7ed61) for method Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts) ; ============================================================
Unwind Info:
@@ -183,7 +178,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 84 (0x00054) Actual length = 168 (0x0000a8)+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -210,4 +205,4 @@ Unwind Info:
*************** EH table for Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M4766_IG03..G_M4766_IG11) handled by [G_M4766_IG13..END) (fault)+EH#0: try [G_M4766_IG03..G_M4766_IG10) handled by [G_M4766_IG12..END) (fault)
@@ -260,7 +260,7 @@ G_M42812_IG10: ; bbWeight=1, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
movw r8, 0xd1ff
movt r8, 0xd1ff
cmp r5, 0- blt SHORT G_M42812_IG15+ blt G_M42812_IG21 mov r1, r5
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -291,23 +291,23 @@ G_M42812_IG10: ; bbWeight=1, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
; byrRegs +[r7]
ldr r8, [r5+0x04]
cmp r8, 0- ble SHORT G_M42812_IG24
- ;; size=90 bbWeight=1 PerfScore 30.00+ ble SHORT G_M42812_IG18
+ ;; size=92 bbWeight=1 PerfScore 30.00 G_M42812_IG11: ; bbWeight=4.00, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref, isz
cmp r8, r4- bgt SHORT G_M42812_IG19
- ;; size=4 bbWeight=4.00 PerfScore 8.00+ bgt G_M42812_IG25
+ ;; size=6 bbWeight=4.00 PerfScore 8.00 G_M42812_IG12: ; bbWeight=1.48, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref
mov r3, r8
;; size=2 bbWeight=1.48 PerfScore 1.48
G_M42812_IG13: ; bbWeight=4, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref, isz
cmp r3, r8- bhi SHORT G_M42812_IG18+ bhi G_M42812_IG22 str r3, [sp+0x1C]
cmp r3, 0- bge SHORT G_M42812_IG21
- ;; size=10 bbWeight=4 PerfScore 20.00
-G_M42812_IG14: ; bbWeight=2, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref, isz+ bge SHORT G_M42812_IG15
+ ;; size=12 bbWeight=4 PerfScore 20.00
+G_M42812_IG14: ; bbWeight=2, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref movw r2, 0xd1ff
movt r2, 0xd1ff
mov r0, r2
@@ -323,64 +323,6 @@ G_M42812_IG14: ; bbWeight=2, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r
blx lr // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0- b SHORT G_M42812_IG20
- ;; size=30 bbWeight=2 PerfScore 20.00
-G_M42812_IG15: ; bbWeight=0, gcVars=0000000000004080 {V05 V06}, gcrefRegs=0240 {r6 r9}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r5]
- ; byrRegs -[r7]
- ; GC ptr vars -{V91}
- movw r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_STRCNS
- ; gcrRegs +[r0]
- ; gcr arg pop 0
- mov r1, r0
- ; gcrRegs +[r1]
- mov r0, r5
- ; gcrRegs -[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
- ; gcrRegs -[r1]
- ; gcr arg pop 0
- bkpt
- ;; size=40 bbWeight=0 PerfScore 0.00
-G_M42812_IG16: ; bbWeight=0, gcrefRegs=0240 {r6 r9}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M42812_IG17: ; bbWeight=0, gcrefRegs=0240 {r6 r9}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.IO.StreamWriter:ThrowAsyncIOInProgress()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M42812_IG18: ; bbWeight=0, gcrefRegs=0240 {r6 r9}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowArgumentOutOfRangeException()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M42812_IG19: ; bbWeight=0.52, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref, isz
- ; gcrRegs +[r5]
- ; byrRegs +[r7]
- mov r3, r4
- b SHORT G_M42812_IG13
- ;; size=4 bbWeight=0.52 PerfScore 1.04
-G_M42812_IG20: ; bbWeight=2, gcVars=0000000000004088 {V05 V06 V91}, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, gcvars, byref
- ; GC ptr vars +{V03 V91} ldr r0, [sp+0x08] // [V91 cse0]
; gcrRegs +[r0]
mov r1, r0
@@ -388,12 +330,12 @@ G_M42812_IG20: ; bbWeight=2, gcVars=0000000000004088 {V05 V06 V91}, gcref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]- ; GC ptr vars -{V03 V91}+ ; GC ptr vars -{V91} blx r3 // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0- ;; size=16 bbWeight=2 PerfScore 12.00
-G_M42812_IG21: ; bbWeight=4.00, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref, isz+ ;; size=44 bbWeight=2 PerfScore 30.00
+G_M42812_IG15: ; bbWeight=4.00, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref, isz mov r1, r7
; byrRegs +[r1]
ldr r3, [sp+0x1C] // [V41 tmp30]
@@ -412,9 +354,9 @@ G_M42812_IG21: ; bbWeight=4.00, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080
adds r7, r7, r1
sub r8, r8, r0
cmp r8, 0- bge SHORT G_M42812_IG23+ bge SHORT G_M42812_IG17 ;; size=38 bbWeight=4.00 PerfScore 56.00-G_M42812_IG22: ; bbWeight=2.00, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref+G_M42812_IG16: ; bbWeight=2.00, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref movw r0, 0xd1ff
movt r0, 0xd1ff
mov r3, r0
@@ -431,11 +373,11 @@ G_M42812_IG22: ; bbWeight=2.00, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080
; gcrRegs -[r0-r1]
; gcr arg pop 0
;; size=26 bbWeight=2.00 PerfScore 18.00-G_M42812_IG23: ; bbWeight=4.00, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref, isz+G_M42812_IG17: ; bbWeight=4.00, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref, isz cmp r8, 0
bgt SHORT G_M42812_IG11
;; size=6 bbWeight=4.00 PerfScore 8.00-G_M42812_IG24: ; bbWeight=1, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz+G_M42812_IG18: ; bbWeight=1, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r7]
ldr r0, [r6+0x24]
; gcrRegs +[r0]
@@ -444,7 +386,7 @@ G_M42812_IG24: ; bbWeight=1, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}
dmb 15
ands r0, r0, 0x1600000
cmp r0, 0- beq SHORT G_M42812_IG17+ beq G_M42812_IG24 mov r0, r6
; gcrRegs +[r0]
movs r1, 1
@@ -470,9 +412,9 @@ G_M42812_IG24: ; bbWeight=1, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}
ldr r1, [r0]
; gcrRegs +[r1]
cmp r1, 0- bne SHORT G_M42812_IG26
- ;; size=64 bbWeight=1 PerfScore 24.00
-G_M42812_IG25: ; bbWeight=0.50, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz+ bne SHORT G_M42812_IG20
+ ;; size=66 bbWeight=1 PerfScore 24.00
+G_M42812_IG19: ; bbWeight=0.50, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r1]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -491,7 +433,7 @@ G_M42812_IG25: ; bbWeight=0.50, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0
ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0- beq SHORT G_M42812_IG16+ beq SHORT G_M42812_IG23 adds r0, r1, 4
; byrRegs +[r0]
mov r1, r3
@@ -516,7 +458,7 @@ G_M42812_IG25: ; bbWeight=0.50, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0
mov r1, r2
; gcrRegs +[r1]
;; size=84 bbWeight=0.50 PerfScore 14.00-G_M42812_IG26: ; bbWeight=1, gcVars=0000000000004080 {V05 V06}, gcrefRegs=0272 {r1 r4 r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref+G_M42812_IG20: ; bbWeight=1, gcVars=0000000000004080 {V05 V06}, gcrefRegs=0272 {r1 r4 r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r2]
; GC ptr vars -{V23}
mov r0, r4
@@ -561,8 +503,62 @@ G_M42812_IG26: ; bbWeight=1, gcVars=0000000000004080 {V05 V06}, gcrefRegs
blx lr // <unknown method>
; gcrRegs -[r1-r5 r7]
; gcr arg pop 0- ;; size=80 bbWeight=1 PerfScore 27.00
-G_M42812_IG27: ; bbWeight=1, gcrefRegs=0240 {r6 r9}, byrefRegs=0000 {}, byref+ b SHORT G_M42812_IG26
+ ;; size=82 bbWeight=1 PerfScore 28.00
+G_M42812_IG21: ; bbWeight=0, gcrefRegs=0240 {r6 r9}, byrefRegs=0000 {}, byref
+ movw r0, 0xd1ff
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_STRCNS
+ ; gcrRegs +[r0]
+ ; gcr arg pop 0
+ mov r1, r0
+ ; gcrRegs +[r1]
+ mov r0, r5
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
+ ; gcrRegs -[r1]
+ ; gcr arg pop 0
+ bkpt
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M42812_IG22: ; bbWeight=0, gcrefRegs=0240 {r6 r9}, byrefRegs=0000 {}, byref
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.ThrowHelper:ThrowArgumentOutOfRangeException()
+ ; gcr arg pop 0
+ bkpt
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M42812_IG23: ; bbWeight=0, gcrefRegs=0240 {r6 r9}, byrefRegs=0000 {}, byref
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
+ ; gcr arg pop 0
+ bkpt
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M42812_IG24: ; bbWeight=0, gcrefRegs=0240 {r6 r9}, byrefRegs=0000 {}, byref
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.IO.StreamWriter:ThrowAsyncIOInProgress()
+ ; gcr arg pop 0
+ bkpt
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M42812_IG25: ; bbWeight=0.52, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0080 {r7}, byref, isz
+ ; gcrRegs +[r5]
+ ; byrRegs +[r7]
+ mov r3, r4
+ b SHORT G_M42812_IG13
+ ;; size=4 bbWeight=0.52 PerfScore 1.04
+G_M42812_IG26: ; bbWeight=1, gcrefRegs=0240 {r6 r9}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5]
+ ; byrRegs -[r7]...
@@ -53,7 +53,7 @@
;* V42 tmp33 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <uint[]>
; V44 tmp35 [V44 ] ( 7,160.00) struct (16) [sp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op double-align "Inlining Arg" <System.Decimal>-; V45 tmp36 [V45,T17] ( 8, 24 ) int -> r9 "Inline return value spill temp"+; V45 tmp36 [V45,T17] ( 8, 24 ) int -> r10 "Inline return value spill temp" ;* V46 tmp37 [V46 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V47 tmp38 [V47 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
; V48 tmp39 [V48,T36] ( 3, 16.00) int -> r9 "Inline stloc first use temp"
@@ -80,10 +80,10 @@
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
; V70 tmp61 [V70 ] ( 3, 48 ) ref -> [sp+0x44] do-not-enreg[X] addr-exposed "field V24._bits (fldOffset=0x0)" P-DEP
; V71 tmp62 [V71 ] ( 3, 48 ) int -> [sp+0x48] do-not-enreg[X] addr-exposed "field V24._sign (fldOffset=0x4)" P-DEP-; V72 tmp63 [V72,T28] ( 3, 16 ) byref -> r1 "field V26._reference (fldOffset=0x0)" P-INDEP
-; V73 tmp64 [V73,T32] ( 3, 16 ) int -> r2 "field V26._length (fldOffset=0x4)" P-INDEP
-; V74 tmp65 [V74,T29] ( 3, 16 ) byref -> r0 "field V29._reference (fldOffset=0x0)" P-INDEP
-; V75 tmp66 [V75,T33] ( 3, 16 ) int -> lr "field V29._length (fldOffset=0x4)" P-INDEP+; V72 tmp63 [V72,T28] ( 3, 20.27) byref -> r1 "field V26._reference (fldOffset=0x0)" P-INDEP
+; V73 tmp64 [V73,T30] ( 3, 20.27) int -> r2 "field V26._length (fldOffset=0x4)" P-INDEP
+; V74 tmp65 [V74,T32] ( 3, 16 ) byref -> r0 "field V29._reference (fldOffset=0x0)" P-INDEP
+; V75 tmp66 [V75,T34] ( 3, 16 ) int -> lr "field V29._length (fldOffset=0x4)" P-INDEP ; V76 tmp67 [V76 ] ( 3, 24 ) ref -> [sp+0x3C] do-not-enreg[X] addr-exposed "field V31._bits (fldOffset=0x0)" P-DEP
; V77 tmp68 [V77 ] ( 3, 24 ) int -> [sp+0x40] do-not-enreg[X] addr-exposed "field V31._sign (fldOffset=0x4)" P-DEP
; V78 tmp69 [V78,T16] ( 4, 24.54) ref -> r9 "field V32._bits (fldOffset=0x0)" P-INDEP
@@ -96,9 +96,9 @@
;* V85 tmp76 [V85 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x4)" P-INDEP
; V86 tmp77 [V86 ] ( 3, 48 ) ref -> [sp+0x34] do-not-enreg[X] addr-exposed "field V37._bits (fldOffset=0x0)" P-DEP
; V87 tmp78 [V87 ] ( 3, 48 ) int -> [sp+0x38] do-not-enreg[X] addr-exposed "field V37._sign (fldOffset=0x4)" P-DEP-; V88 tmp79 [V88,T30] ( 3, 16 ) byref -> r1 "field V39._reference (fldOffset=0x0)" P-INDEP
-; V89 tmp80 [V89,T34] ( 3, 16 ) int -> r2 "field V39._length (fldOffset=0x4)" P-INDEP
-; V90 tmp81 [V90,T31] ( 3, 16 ) byref -> r0 "field V42._reference (fldOffset=0x0)" P-INDEP+; V88 tmp79 [V88,T29] ( 3, 20.27) byref -> r1 "field V39._reference (fldOffset=0x0)" P-INDEP
+; V89 tmp80 [V89,T31] ( 3, 20.27) int -> r2 "field V39._length (fldOffset=0x4)" P-INDEP
+; V90 tmp81 [V90,T33] ( 3, 16 ) byref -> r0 "field V42._reference (fldOffset=0x0)" P-INDEP ; V91 tmp82 [V91,T35] ( 3, 16 ) int -> lr "field V42._length (fldOffset=0x4)" P-INDEP
; V92 tmp83 [V92 ] ( 4, 56.00) int -> [sp+0x20] do-not-enreg[X] addr-exposed "field V44._flags (fldOffset=0x0)" P-DEP
; V93 tmp84 [V93 ] ( 3, 64.00) int -> [sp+0x24] do-not-enreg[X] addr-exposed "field V44._hi32 (fldOffset=0x4)" P-DEP
@@ -156,7 +156,7 @@ G_M48799_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movs r5, 0
ldr r6, [r4+0x04]
cmp r6, 0- ble G_M48799_IG36+ ble G_M48799_IG42 ;; size=28 bbWeight=1 PerfScore 11.00
G_M48799_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
@@ -178,7 +178,7 @@ G_M48799_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r2, [r2+0x04]
; gcrRegs -[r2]
cmp r5, r2- bhs G_M48799_IG40+ bhs G_M48799_IG43 ldr r2, [sp+0x9C]
; gcrRegs +[r2]
movs r3, 12
@@ -219,7 +219,7 @@ G_M48799_IG06: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byr
ldr r2, [r2+0x04]
; gcrRegs -[r2]
cmp r7, r2- bhs G_M48799_IG40+ bhs G_M48799_IG43 ldr r2, [sp+0x9C]
; gcrRegs +[r2]
movs r3, 12
@@ -246,7 +246,7 @@ G_M48799_IG08: ; bbWeight=16, isz, extend
ldrb r2, [sp+0x7C]
sub r8, r2, r3
cmp r8, 0- ble SHORT G_M48799_IG19+ ble SHORT G_M48799_IG22 ;; size=20 bbWeight=16 PerfScore 112.00
G_M48799_IG09: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r9, [sp+0x60]
@@ -258,7 +258,7 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs +[r2]
ldr r0, [r2+0x04]
cmp r8, r0- bhs G_M48799_IG40+ bhs G_M48799_IG43 lsl r0, r8, 3
adds r0, 8
adds r2, r2, r0
@@ -268,7 +268,7 @@ G_M48799_IG09: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs +[r8]
ldr r10, [r2+0x04]
cmp r9, 0- bne SHORT G_M48799_IG13+ bne SHORT G_M48799_IG15 cmp r8, 0
bne SHORT G_M48799_IG12
movs r2, 0
@@ -291,180 +291,35 @@ G_M48799_IG10: ; bbWeight=8, nogc, extend
str r1, [sp+0x50]
;; size=8 bbWeight=8 PerfScore 32.00
G_M48799_IG11: ; bbWeight=8, isz, extend- b SHORT G_M48799_IG18+ b SHORT G_M48799_IG21 ;; size=2 bbWeight=8 PerfScore 8.00-G_M48799_IG12: ; bbWeight=3.73, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz+G_M48799_IG12: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref ; gcrRegs +[r8]
movs r1, 0
movs r2, 0- b SHORT G_M48799_IG14
- ;; size=6 bbWeight=3.73 PerfScore 11.19
-G_M48799_IG13: ; bbWeight=4.27, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r9]
- add r1, r9, 8+ ;; size=4 bbWeight=8 PerfScore 16.00
+G_M48799_IG13: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1]- ldr r2, [r9+0x04]
- ;; size=8 bbWeight=4.27 PerfScore 8.54
-G_M48799_IG14: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0002 {r1}, byref, isz
- ; gcrRegs -[r9] cmp r8, 0- bne SHORT G_M48799_IG16+ bne SHORT G_M48799_IG19 ;; size=6 bbWeight=8 PerfScore 16.00-G_M48799_IG15: ; bbWeight=3.73, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref, isz+G_M48799_IG14: ; bbWeight=3.73, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref, isz ; gcrRegs -[r8]
movs r0, 0
mov lr, 0- b SHORT G_M48799_IG17+ b SHORT G_M48799_IG20 ;; size=8 bbWeight=3.73 PerfScore 11.19-G_M48799_IG16: ; bbWeight=4.27, gcrefRegs=0110 {r4 r8}, byrefRegs=0002 {r1}, byref
- ; gcrRegs +[r8]
- add r0, r8, 8
- ; byrRegs +[r0]
- ldr lr, [r8+0x04]
- ;; size=8 bbWeight=4.27 PerfScore 8.54
-G_M48799_IG17: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0003 {r0 r1}, byref
- ; gcrRegs -[r8]
- str r0, [sp]
- ; byr arg write
- str lr, [sp+0x04]
- str r10, [sp+0x08]
- add r0, sp, 76
- ; byrRegs -[r0]
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr lr, [lr]
- blx lr // <unknown method>+G_M48799_IG15: ; bbWeight=4.27, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r8-r9] ; byrRegs -[r1]- ; gcr arg pop 0
- ;; size=26 bbWeight=8 PerfScore 64.00
-G_M48799_IG18: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r1, [sp+0x4C]
- ; gcrRegs +[r1]
- ldr r2, [sp+0x50]
- add r0, sp, 128
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcrRegs -[r1]
- ; gcr arg pop 0
- mov r8, r0
- b SHORT G_M48799_IG31
- ;; size=22 bbWeight=8 PerfScore 72.00
-G_M48799_IG19: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r8, 0
- bge SHORT G_M48799_IG30
- ldr r9, [sp+0x80]
- ; gcrRegs +[r9]
- ldr r3, [sp+0x84]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- ldr r2, [r2]
- ; gcrRegs +[r2]
- rsbs r0, r8, 0
- ldr r1, [r2+0x04]
- cmp r0, r1
- bhs G_M48799_IG40
- rsbs r0, r8, 0
- lsls r0, r0, 3
- adds r0, 8
- adds r2, r0, r2
- ; gcrRegs -[r2]
- ; byrRegs +[r2]
- ldr r8, [r2]
- ; gcrRegs +[r8]
- ldr r10, [r2+0x04]
- cmp r9, 0
- bne SHORT G_M48799_IG23
- cmp r8, 0
- bne SHORT G_M48799_IG22
- movs r2, 0
- ; byrRegs -[r2]
- str r2, [sp+0x34]
- str r2, [sp+0x38]
- smull r2, r3, r3, r10
- add r0, sp, 52
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- ldr r1, [r1]
- blx r1 // <unknown method>+ add r1, r9, 8
+ ; byrRegs +[r1]
+ ldr r2, [r9+0x04]
+ b SHORT G_M48799_IG13
+ ;; size=10 bbWeight=4.27 PerfScore 12.81
+G_M48799_IG16: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ; gcrRegs -[r8-r9]- ; gcr arg pop 0
- ;; size=88 bbWeight=8 PerfScore 240.00
-G_M48799_IG20: ; bbWeight=8, nogc, extend
- ldr r1, [sp+0x34]
- str r1, [sp+0x3C]
- ldr r1, [sp+0x38]
- str r1, [sp+0x40]
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M48799_IG21: ; bbWeight=8, isz, extend
- b SHORT G_M48799_IG28
- ;; size=2 bbWeight=8 PerfScore 8.00
-G_M48799_IG22: ; bbWeight=3.73, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r8]
- movs r1, 0
- movs r2, 0
- b SHORT G_M48799_IG24
- ;; size=6 bbWeight=3.73 PerfScore 11.19
-G_M48799_IG23: ; bbWeight=4.27, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r9]
- add r1, r9, 8
- ; byrRegs +[r1]
- ldr r2, [r9+0x04]
- ;; size=8 bbWeight=4.27 PerfScore 8.54
-G_M48799_IG24: ; bbWeight=8, gcrefRegs=0110 {r4 r8}, byrefRegs=0002 {r1}, byref, isz
- ; gcrRegs -[r9]
- cmp r8, 0
- bne SHORT G_M48799_IG26
- ;; size=6 bbWeight=8 PerfScore 16.00
-G_M48799_IG25: ; bbWeight=3.73, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref, isz
- ; gcrRegs -[r8]
- movs r0, 0
- mov lr, 0
- b SHORT G_M48799_IG27
- ;; size=8 bbWeight=3.73 PerfScore 11.19
-G_M48799_IG26: ; bbWeight=4.27, gcrefRegs=0110 {r4 r8}, byrefRegs=0002 {r1}, byref
- ; gcrRegs +[r8]
- add r0, r8, 8
- ; byrRegs +[r0]
- ldr lr, [r8+0x04]
- ;; size=8 bbWeight=4.27 PerfScore 8.54
-G_M48799_IG27: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0003 {r0 r1}, byref
- ; gcrRegs -[r8]...
@@ -10,50 +10,50 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.ComponentModel.Composition.ContractMismatchExceptionTests>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.ComponentModel.Composition.Expectations+<GetExceptionMessages>d__16>-; V02 loc1 [V02,T05] ( 7, 10 ) ref -> [sp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
-; V03 loc2 [V03,T04] ( 5, 12 ) ref -> r5 class-hnd <System.String>+; V02 loc1 [V02,T07] ( 7, 10 ) ref -> [sp+0x10] class-hnd EH-live single-def <<unknown class>>
+; V03 loc2 [V03,T06] ( 5, 12 ) ref -> r6 class-hnd <System.String> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.ComponentModel.Composition.CompositionContractMismatchException>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T01] ( 3, 24 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.Exception>-; V07 tmp2 [V07,T00] ( 6, 44 ) ref -> r6 class-hnd exact "NewObj constructor temp" <System.ComponentModel.Composition.CompositionContractMismatchException>
-; V08 tmp3 [V08,T06] ( 4, 8 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.Expectations+<GetExceptionMessages>d__16>
-; V09 tmp4 [V09,T03] ( 2, 16 ) ref -> r7 class-hnd exact "dup spill" <System.String>
-; V10 tmp5 [V10,T02] ( 8, 18 ) ref -> r7
-; V11 tmp6 [V11,T07] ( 2, 8 ) ref -> r7 class-hnd exact "impAppendStmt" <System.String>+; V07 tmp2 [V07,T00] ( 6, 48 ) ref -> r7 class-hnd exact "NewObj constructor temp" <System.ComponentModel.Composition.CompositionContractMismatchException>
+; V08 tmp3 [V08,T08] ( 4, 8 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.Expectations+<GetExceptionMessages>d__16>
+; V09 tmp4 [V09,T03] ( 2, 16 ) ref -> r8 class-hnd exact "dup spill" <System.String>
+; V10 tmp5 [V10,T02] ( 8, 22 ) ref -> r8
+; V11 tmp6 [V11,T04] ( 2, 16 ) ref -> r8 class-hnd exact "impAppendStmt" <System.String> ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>-; V13 tmp8 [V13,T08] ( 2, 8 ) ref -> r0 class-hnd exact "Inlining Arg" <System.String>+; V13 tmp8 [V13,T05] ( 2, 16 ) ref -> r0 class-hnd exact "Inlining Arg" <System.String> ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Object[]>
;* V15 tmp10 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"-; V19 tmp14 [V19 ] ( 2, 8 ) ref -> [sp+0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.Object>+; V19 tmp14 [V19 ] ( 2, 16 ) ref -> [sp+0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.Object> ;* V20 tmp15 [V20 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Object]>
;* V21 tmp16 [V21 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp17 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp18 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V24 tmp19 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>-; V25 tmp20 [V25,T11] ( 2, 8 ) int -> r5 "Inlining Arg"+; V25 tmp20 [V25,T12] ( 2, 8 ) int -> r6 "Inlining Arg" ; V26 tmp21 [V26,T09] ( 2, 8 ) byref -> r4 "Inlining Arg"
;* V27 tmp22 [V27 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp23 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp24 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>-; V30 tmp25 [V30,T12] ( 2, 8 ) int -> r7 "Inlining Arg"
-; V31 tmp26 [V31,T10] ( 2, 8 ) byref -> r6 "Inlining Arg"+; V30 tmp25 [V30,T13] ( 2, 8 ) int -> r8 "Inlining Arg"
+; V31 tmp26 [V31,T10] ( 2, 8 ) byref -> r7 "Inlining Arg" ;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x4)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP-; V38 tmp33 [V38,T13] ( 2, 4 ) byref -> r2 "field V20._reference (fldOffset=0x0)" P-INDEP+; V38 tmp33 [V38,T11] ( 2, 8 ) byref -> r2 "field V20._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp34 [V39,T22] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x4)" P-INDEP
; V40 tmp35 [V40,T14] ( 2, 4 ) byref -> r4 "field V21._reference (fldOffset=0x0)" P-INDEP-; V41 tmp36 [V41,T18] ( 2, 4 ) int -> r5 "field V21._length (fldOffset=0x4)" P-INDEP+; V41 tmp36 [V41,T18] ( 2, 4 ) int -> r6 "field V21._length (fldOffset=0x4)" P-INDEP ;* V42 tmp37 [V42 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
; V44 tmp39 [V44,T15] ( 2, 4 ) byref -> r4 "field V23._reference (fldOffset=0x0)" P-INDEP-; V45 tmp40 [V45,T19] ( 2, 4 ) int -> r5 "field V23._length (fldOffset=0x4)" P-INDEP+; V45 tmp40 [V45,T19] ( 2, 4 ) int -> r6 "field V23._length (fldOffset=0x4)" P-INDEP ;* V46 tmp41 [V46 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp42 [V47 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
; V48 tmp43 [V48,T16] ( 2, 4 ) byref -> r2 "field V27._reference (fldOffset=0x0)" P-INDEP
@@ -62,18 +62,18 @@
; V51 tmp46 [V51,T21] ( 2, 4 ) int -> r3 "field V28._length (fldOffset=0x4)" P-INDEP
;* V52 tmp47 [V52 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp48 [V53 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP-; V54 PSPSym [V54,T23] ( 1, 1 ) int -> [sp+0x18] do-not-enreg[V] "PSPSym"+; V54 PSPSym [V54,T23] ( 1, 1 ) int -> [sp+0x1C] do-not-enreg[V] "PSPSym" ;-; Lcl frame size = 28+; Lcl frame size = 32
G_M9079_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push {r4,r5,r6,r7,r10,r11,lr}
- sub sp, 28
- add r11, sp, 48+ push {r4,r5,r6,r7,r8,r10,r11,lr}
+ sub sp, 32
+ add r11, sp, 56 movs r1, 0
str r1, [sp+0x14] // [V19 tmp14]- add r1, sp, 56
- str r1, [sp+0x18] // [V54 PSPSym]+ add r1, sp, 64
+ str r1, [sp+0x1C] // [V54 PSPSym] ;; size=18 bbWeight=1 PerfScore 7.00
G_M9079_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
@@ -101,35 +101,34 @@ G_M9079_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r3 // <unknown method>
; gcrRegs -[r4]
; gcr arg pop 0- mov r4, r0
- ; gcrRegs +[r4]
- str r4, [sp+0x10]+ mov r5, r0
+ ; gcrRegs +[r5]
+ str r5, [sp+0x10] ; GC ptr vars +{V02}
;; size=56 bbWeight=1 PerfScore 19.00-G_M9079_IG03: ; bbWeight=1, gcVars=00000020 {V02}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M9079_IG03: ; bbWeight=1, gcVars=00000080 {V02}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0]- mov r0, r4+ mov r0, r5 ; gcrRegs +[r0]
movw r4, 0xd1ff- ; gcrRegs -[r4] movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0- beq G_M9079_IG13+ beq G_M9079_IG12 ;; size=20 bbWeight=1 PerfScore 7.00-G_M9079_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r0, [sp+0x10] // [V02 loc1]+G_M9079_IG04: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, r5 ; gcrRegs +[r0]
movw r4, 0xd1ff
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0- mov r5, r0
- ; gcrRegs +[r5]+ mov r6, r0
+ ; gcrRegs +[r6] movw r0, 0xd1ff
; gcrRegs -[r0]
movt r0, 0xd1ff
@@ -154,25 +153,25 @@ G_M9079_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blx r3 // CORINFO_HELP_NEWSFAST
; gcrRegs +[r0]
; gcr arg pop 0- mov r6, r0
- ; gcrRegs +[r6]
- mov r0, r6+ mov r7, r0
+ ; gcrRegs +[r7]
+ mov r0, r7 movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0- add r0, r6, 8+ add r0, r7, 8 ; byrRegs +[r0]- mov r1, r5+ mov r1, r6 ; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- add r0, r6, 16+ add r0, r7, 16 ; byrRegs +[r0]
mov r1, r4
; gcrRegs +[r1]
@@ -181,28 +180,25 @@ G_M9079_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1 r4]
; byrRegs -[r0]- ldr r7, [r6+0x08]
- ; gcrRegs +[r7]
- cmp r7, 0
- bne SHORT G_M9079_IG09
- ;; size=122 bbWeight=4 PerfScore 164.00
-G_M9079_IG05: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r7]+ ldr r8, [r7+0x08]
+ ; gcrRegs +[r8]
+ cmp r8, 0
+ bne SHORT G_M9079_IG08 movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>- ; gcrRegs +[r0]+ ; gcrRegs -[r8] +[r0] ; gcr arg pop 0- mov r7, r0
- ; gcrRegs +[r7]
- mov r0, r6+ mov r8, r0
+ ; gcrRegs +[r8]
+ mov r0, r7 movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // <unknown method>- ; gcrRegs -[r6]+ ; gcrRegs -[r7] ; gcr arg pop 0
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -213,7 +209,7 @@ G_M9079_IG05: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
add r2, sp, 20 // [V19 tmp14]
; byrRegs +[r2]
movs r3, 1- mov r1, r7+ mov r1, r8 ; gcrRegs +[r1]
movs r0, 0
; gcrRegs -[r0]
@@ -221,17 +217,17 @@ G_M9079_IG05: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>- ; gcrRegs -[r1 r7] +[r0]+ ; gcrRegs -[r1 r8] +[r0] ; byrRegs -[r2]
; gcr arg pop 0- mov r7, r0
- ; gcrRegs +[r7]
- cmp r7, 0
- bne SHORT G_M9079_IG08
- ;; size=76 bbWeight=2 PerfScore 54.00
-G_M9079_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r5 r7]
- ldr r0, [sp+0x10] // [V02 loc1]+ mov r8, r0
+ ; gcrRegs +[r8]
+ cmp r8, 0
+ bne SHORT G_M9079_IG07
+ ;; size=204 bbWeight=4 PerfScore 272.00
+G_M9079_IG05: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0 r6 r8]
+ mov r0, r5 ; gcrRegs +[r0]
movw r4, 0xd1ff
movt r4, 0xd1ff
@@ -242,14 +238,14 @@ G_M9079_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r0, 0
bne SHORT G_M9079_IG04
;; size=18 bbWeight=4 PerfScore 28.00-G_M9079_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M9079_IG13...
@@ -8,43 +8,44 @@
; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00 ] ( 5, 7.50) struct ( 4) [sp+0x2C] single-def <System.Net.Http.Headers.HeaderDescriptor>+; V00 arg0 [V00 ] ( 5, 7.50) struct ( 4) [sp+0x24] single-def <System.Net.Http.Headers.HeaderDescriptor> ; V01 arg1 [V01,T03] ( 8, 13.50) ref -> r4 class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>-; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [sp+0x00] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>+; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [sp+0x00] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op-; V04 loc2 [V04,T12] ( 3, 1.50) ref -> r0 class-hnd single-def <<unknown class>>+; V04 loc2 [V04,T13] ( 3, 1.50) ref -> r0 class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>-; V07 loc5 [V07,T11] ( 4, 1.62) ref -> r2 class-hnd exact <System.String>+; V07 loc5 [V07,T12] ( 4, 1.62) ref -> r2 class-hnd exact <System.String> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V09 tmp1 [V09,T10] ( 2, 2 ) ref -> r2 single-def "CASTCLASS eval op1"+; V09 tmp1 [V09,T11] ( 2, 2 ) ref -> r2 single-def "CASTCLASS eval op1" ;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>-;* V12 tmp4 [V12,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V14 tmp6 [V14,T06] ( 5, 7.50) ref -> [sp+0x2C] do-not-enreg[] single-def "field V00._descriptor (fldOffset=0x0)" P-DEP+; V14 tmp6 [V14,T06] ( 5, 7.50) ref -> [sp+0x24] do-not-enreg[] single-def "field V00._descriptor (fldOffset=0x0)" P-DEP ; V15 tmp7 [V15,T02] ( 4, 12.50) ref -> r5 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V16 tmp8 [V16,T04] ( 2, 8 ) ref -> r2 "field V05._current (fldOffset=0x4)" P-INDEP
; V17 tmp9 [V17,T00] ( 6, 20.50) int -> r7 "field V05._index (fldOffset=0x8)" P-INDEP-; V18 tmp10 [V18,T07] ( 3, 8.50) int -> r6 "field V05._version (fldOffset=0xc)" P-INDEP
-; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> r5 single-def "field V11._list (fldOffset=0x0)" P-INDEP+; V18 tmp10 [V18,T09] ( 2, 4.50) int -> r6 "field V05._version (fldOffset=0xc)" P-INDEP
+; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> r5 single-def "field V11._list (fldOffset=0x0)" P-INDEP ;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x4)" P-INDEP-;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
-; V22 tmp14 [V22,T14] ( 2, 1 ) int -> r6 "field V11._version (fldOffset=0xc)" P-INDEP+;* V21 tmp13 [V21,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
+; V22 tmp14 [V22,T15] ( 2, 1 ) int -> r6 "field V11._version (fldOffset=0xc)" P-INDEP ; V23 tmp15 [V23,T01] ( 3, 24 ) ref -> r0 "arr expr"-; V24 PSPSym [V24,T15] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
-; V25 cse0 [V25,T05] ( 3, 12 ) int -> r8 "CSE - aggressive"
-; V26 cse1 [V26,T09] ( 4, 3 ) ref -> r5 "CSE - aggressive"+; V24 PSPSym [V24,T16] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"
+; V25 cse0 [V25,T08] ( 2, 8 ) int -> r0 "CSE - aggressive"
+; V26 cse1 [V26,T05] ( 2, 8 ) int -> r0 "CSE - aggressive"
+; V27 cse2 [V27,T10] ( 4, 3 ) ref -> r5 "CSE - aggressive" ;-; Lcl frame size = 16+; Lcl frame size = 12
G_M53769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0}- push {r4,r5,r6,r7,r8,r11,lr}
- sub sp, 16
- add r11, sp, 36
- add r0, sp, 48
- str r0, [sp+0x0C] // [V24 PSPSym]+ push {r4,r5,r6,r7,r11,lr}
+ sub sp, 12
+ add r11, sp, 28
+ add r0, sp, 40
+ str r0, [sp+0x08] // [V24 PSPSym] mov r4, r1
; gcrRegs +[r4]
;; size=18 bbWeight=1 PerfScore 7.00
@@ -54,7 +55,7 @@ G_M53769_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movs r1, 0
str r1, [sp+0x04] // [V03 loc1]
;; size=6 bbWeight=1 PerfScore 3.00-G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz+G_M53769_IG03: ; bbWeight=1, gcVars=00020000 {V02}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x04] // [V03 loc1]
cmp r1, 0
bne SHORT G_M53769_IG06
@@ -75,7 +76,7 @@ G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=0010 {r4},
ldr r5, [r4+0x04]
; gcrRegs +[r5]
cmp r5, 0- beq SHORT G_M53769_IG14+ beq SHORT G_M53769_IG13 ;; size=44 bbWeight=1 PerfScore 16.00
G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r1, r5
@@ -88,24 +89,24 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
cmp r0, 0- beq SHORT G_M53769_IG11+ beq SHORT G_M53769_IG10 mov r5, r0
ldr r6, [r5+0x0C]
movs r7, 0
;; size=30 bbWeight=0.50 PerfScore 5.50
G_M53769_IG05: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]- ldr r8, [r5+0x0C]
- cmp r6, r8
- bne SHORT G_M53769_IG07+ ldr r0, [r5+0x0C]
+ cmp r6, r0
+ bne SHORT G_M53769_IG09 ldr r0, [r5+0x08]
cmp r7, r0- bhs SHORT G_M53769_IG08+ bhs SHORT G_M53769_IG07 ldr r0, [r5+0x04]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r7, r1- bhs SHORT G_M53769_IG09+ bhs SHORT G_M53769_IG08 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -116,7 +117,7 @@ G_M53769_IG05: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
mov r0, r4
; gcrRegs +[r0]
; byrRegs -[r0]- ldr r1, [sp+0x2C] // [V14 tmp6]+ ldr r1, [sp+0x24] // [V14 tmp6] ; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -125,7 +126,7 @@ G_M53769_IG05: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r2]
; gcr arg pop 0
b SHORT G_M53769_IG05- ;; size=48 bbWeight=4 PerfScore 84.00+ ;; size=46 bbWeight=4 PerfScore 84.00 G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4-r5]
movw r3, 0xd1ff
@@ -137,22 +138,18 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=14 bbWeight=0 PerfScore 0.00
G_M53769_IG07: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]- cmp r6, r8
- bne SHORT G_M53769_IG10
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M53769_IG08: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movs r0, 0
str r0, [r4+0x04]- b SHORT G_M53769_IG14+ b SHORT G_M53769_IG13 ;; size=6 bbWeight=4 PerfScore 12.00-G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53769_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53769_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -160,7 +157,7 @@ G_M53769_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4-r5]
mov r2, r5
; gcrRegs +[r2]
@@ -168,17 +165,17 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1- beq SHORT G_M53769_IG13+ beq SHORT G_M53769_IG12 ;; size=16 bbWeight=0.50 PerfScore 3.00-G_M53769_IG12: ; bbWeight=0.12, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref+G_M53769_IG11: ; bbWeight=0.12, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ; gcrRegs -[r2 r5]
movs r2, 0
;; size=2 bbWeight=0.12 PerfScore 0.12-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r2]
mov r0, r4
; gcrRegs +[r0]- ldr r1, [sp+0x2C] // [V14 tmp6]+ ldr r1, [sp+0x24] // [V14 tmp6] ; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -186,15 +183,15 @@ G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}
blx r3 // System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)
; gcrRegs -[r0-r2]
; gcr arg pop 0- b SHORT G_M53769_IG08+ b SHORT G_M53769_IG07 ;; size=18 bbWeight=0.50 PerfScore 3.50-G_M53769_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M53769_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4]
ldrb r0, [sp+0x04] // [V03 loc1]
cmp r0, 0- beq SHORT G_M53769_IG16+ beq SHORT G_M53769_IG15 ;; size=8 bbWeight=1 PerfScore 3.00-G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M53769_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr r0, [sp] // [V02 loc0]
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -204,38 +201,36 @@ G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r0]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00-G_M53769_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 16
- pop {r4,r5,r6,r7,r8,r11,lr}+G_M53769_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add sp, 12
+ pop {r4,r5,r6,r7,r11,lr} add sp, 4
bx lr
;; size=10 bbWeight=1 PerfScore 4.00-G_M53769_IG17: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V02 V16}
- push {r4,r5,r6,r7,r8,r11,lr}
- sub sp, 12+G_M53769_IG16: ; bbWeight=0, gcVars=00020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V02 V17}
+ push {r2,r3,r4,r5,r6,r7,r11,lr} add r3, r11, 12- str r3, [sp+0x04]
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M53769_IG18: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldrb r0, [r11-0x20] // [V03 loc1]+ str r3, [sp]
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M53769_IG17: ; bbWeight=0, gcVars=00020000 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldrb r0, [r11-0x18] // [V03 loc1] cmp r0, 0- beq SHORT G_M53769_IG19
- ldr r0, [r11-0x24] // [V02 loc0]+ beq SHORT G_M53769_IG18
+ ldr r0, [r11-0x1C] // [V02 loc0] ; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff- ; GC ptr vars -{V02 V16}+ ; GC ptr vars -{V02 V17} blx r3 // <unknown method>
; gcrRegs -[r0]
...
@@ -10,8 +10,8 @@
;
; V00 this [V00,T09] ( 3, 4 ) ref -> r5 this class-hnd single-def <System.Threading.Tasks.Task>
; V01 arg1 [V01,T08] ( 5, 4.50) ref -> r4 class-hnd single-def <System.Threading.Tasks.Task+ContingentProperties>-; V02 loc0 [V02,T11] ( 5, 3.50) ref -> r6 class-hnd single-def <<unknown class>>
-; V03 loc1 [V03,T15] ( 3, 0.50) ref -> [sp+0x00] class-hnd EH-live spill-single-def <<unknown class>>+; V02 loc0 [V02,T12] ( 5, 3.50) ref -> r6 class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T16] ( 3, 0.50) ref -> [sp+0x00] class-hnd EH-live spill-single-def <<unknown class>> ; V04 loc2 [V04 ] ( 6, 2.50) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>
@@ -20,19 +20,20 @@
;* V09 tmp1 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V11 tmp3 [V11,T04] ( 3, 12 ) ref -> r9 class-hnd "Inlining Arg" <System.AggregateException>-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V14 tmp6 [V14,T03] ( 4, 12.50) ref -> r6 single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V15 tmp7 [V15,T02] ( 5, 16 ) ref -> r9 "field V05._current (fldOffset=0x4)" P-INDEP
; V16 tmp8 [V16,T00] ( 6, 20.50) int -> r8 "field V05._index (fldOffset=0x8)" P-INDEP-; V17 tmp9 [V17,T06] ( 3, 8.50) int -> r7 "field V05._version (fldOffset=0xc)" P-INDEP
-; V18 tmp10 [V18,T12] ( 3, 1.50) ref -> r6 single-def "field V09._list (fldOffset=0x0)" P-INDEP+; V17 tmp9 [V17,T11] ( 2, 4.50) int -> r7 "field V05._version (fldOffset=0xc)" P-INDEP
+; V18 tmp10 [V18,T13] ( 3, 1.50) ref -> r6 single-def "field V09._list (fldOffset=0x0)" P-INDEP ;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x4)" P-INDEP-;* V20 tmp12 [V20,T16] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x8)" P-INDEP
-; V21 tmp13 [V21,T13] ( 2, 1 ) int -> r7 "field V09._version (fldOffset=0xc)" P-INDEP+;* V20 tmp12 [V20,T17] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x8)" P-INDEP
+; V21 tmp13 [V21,T14] ( 2, 1 ) int -> r7 "field V09._version (fldOffset=0xc)" P-INDEP ; V22 tmp14 [V22,T01] ( 3, 24 ) ref -> r0 "arr expr"-; V23 PSPSym [V23,T14] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
-; V24 cse0 [V24,T05] ( 3, 12 ) int -> r9 "CSE - aggressive"+; V23 PSPSym [V23,T15] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V24 cse0 [V24,T07] ( 2, 8 ) int -> r0 "CSE - aggressive"
+; V25 cse1 [V25,T05] ( 2, 8 ) int -> r0 "CSE - aggressive" ;
; Lcl frame size = 16
@@ -66,7 +67,7 @@ G_M37406_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcrRegs +[r6]
dmb 15
cmp r6, 0- beq G_M37406_IG21+ beq G_M37406_IG20 ;; size=24 bbWeight=1 PerfScore 8.00
G_M37406_IG05: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
str r6, [sp] // [V03 loc1]
@@ -74,7 +75,7 @@ G_M37406_IG05: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
movs r1, 0
str r1, [sp+0x04] // [V04 loc2]
;; size=6 bbWeight=0.50 PerfScore 1.50-G_M37406_IG06: ; bbWeight=0.50, gcVars=00008000 {V03}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz+G_M37406_IG06: ; bbWeight=0.50, gcVars=00010000 {V03}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x04] // [V04 loc2]
cmp r1, 0
bne G_M37406_IG15
@@ -96,17 +97,17 @@ G_M37406_IG06: ; bbWeight=0.50, gcVars=00008000 {V03}, gcrefRegs=0070 {r4
mov r8, 0
;; size=46 bbWeight=0.50 PerfScore 7.50
G_M37406_IG07: ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz- ldr r9, [r6+0x0C]
- cmp r7, r9
- bne SHORT G_M37406_IG16+ ldr r0, [r6+0x0C]
+ cmp r7, r0
+ bne SHORT G_M37406_IG17 ldr r0, [r6+0x08]
cmp r8, r0- bhs G_M37406_IG19+ bhs SHORT G_M37406_IG18 ldr r0, [r6+0x04]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r8, r1- bhs SHORT G_M37406_IG17+ bhs SHORT G_M37406_IG16 adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -122,7 +123,7 @@ G_M37406_IG07: ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
bne SHORT G_M37406_IG08
movs r0, 0
b SHORT G_M37406_IG09- ;; size=58 bbWeight=4 PerfScore 84.00+ ;; size=54 bbWeight=4 PerfScore 84.00 G_M37406_IG08: ; bbWeight=4, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=4 PerfScore 4.00
@@ -218,20 +219,13 @@ G_M37406_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M37406_IG16: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4]
- cmp r7, r9
- bne SHORT G_M37406_IG18
- b SHORT G_M37406_IG19
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M37406_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4]+G_M37406_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M37406_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M37406_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -239,11 +233,11 @@ G_M37406_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M37406_IG19: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz+G_M37406_IG18: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4]
ldrb r0, [sp+0x04] // [V04 loc2]
cmp r0, 0- beq SHORT G_M37406_IG20+ beq SHORT G_M37406_IG19 ldr r0, [sp] // [V03 loc1]
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -253,40 +247,40 @@ G_M37406_IG19: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.50-G_M37406_IG20: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref+G_M37406_IG19: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movs r3, 0
dmb 15
str r3, [r4+0x14]
;; size=8 bbWeight=0.50 PerfScore 1.50-G_M37406_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc+G_M37406_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4]
add sp, 16
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00-G_M37406_IG22: ; bbWeight=0, gcVars=00008000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V03 V15}+G_M37406_IG21: ; bbWeight=0, gcVars=00010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V03 V16} push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
add r3, r11, 8
str r3, [sp+0x04]
;; size=10 bbWeight=0 PerfScore 0.00-G_M37406_IG23: ; bbWeight=0, gcVars=00008000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M37406_IG22: ; bbWeight=0, gcVars=00010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r0, [r11-0x24] // [V04 loc2]
cmp r0, 0- beq SHORT G_M37406_IG24+ beq SHORT G_M37406_IG23 ldr r0, [r11-0x28] // [V03 loc1]
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff- ; GC ptr vars -{V03 V15}+ ; GC ptr vars -{V03 V16} blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
;; size=22 bbWeight=0 PerfScore 0.00-G_M37406_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc+G_M37406_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc pop {r2,r3,r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 446, prolog size 18, PerfScore 272.00, instruction count 156, allocated bytes for code 446 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)+; Total bytes of code 436, prolog size 18, PerfScore 260.00, instruction count 153, allocated bytes for code 436 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts) ; ============================================================
Unwind Info:
@@ -298,7 +292,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 205 (0x000cd) Actual length = 410 (0x00019a)+ Function Length : 200 (0x000c8) Actual length = 400 (0x000190) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -325,4 +319,4 @@ Unwind Info:
*************** EH table for System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M37406_IG06..G_M37406_IG19) handled by [G_M37406_IG22..END) (fault)+EH#0: try [G_M37406_IG06..G_M37406_IG18) handled by [G_M37406_IG21..END) (fault)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T18] ( 3, 3 ) int -> r4 single-def
-; V01 arg1 [V01,T19] ( 3, 3 ) int -> r5 single-def+; V00 arg0 [V00,T19] ( 3, 3 ) int -> r4 single-def
+; V01 arg1 [V01,T20] ( 3, 3 ) int -> r5 single-def ; V02 loc0 [V02 ] ( 4, 17 ) struct ( 8) [sp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>-; V03 loc1 [V03,T20] ( 4, 11 ) int -> r5 +; V03 loc1 [V03,T21] ( 4, 11 ) int -> r5 ;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
@@ -19,14 +19,14 @@
; V08 tmp1 [V08,T10] ( 7, 84 ) ref -> r4 class-hnd single-def "non-inline candidate call" <<unknown class>>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>-; V11 tmp4 [V11,T28] ( 3, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V12 tmp5 [V12,T22] ( 2, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <<unknown class>>+; V11 tmp4 [V11,T29] ( 3, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V12 tmp5 [V12,T23] ( 2, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp8 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>-; V17 tmp10 [V17,T08] ( 2, 16 ) int -> [sp+0x0C] spill-single-def "Inlining Arg"
-; V18 tmp11 [V18,T07] ( 2, 16 ) byref -> [sp+0x00] spill-single-def "Inlining Arg"+; V17 tmp10 [V17,T07] ( 2, 16 ) int -> [sp+0x0C] spill-single-def "Inlining Arg"
+; V18 tmp11 [V18,T06] ( 2, 16 ) byref -> [sp+0x00] spill-single-def "Inlining Arg" ; V19 tmp12 [V19,T12] ( 2, 8 ) ubyte -> r0 "Inline return value spill temp"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -38,30 +38,30 @@
;* V27 tmp20 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp21 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>-;* V30 tmp23 [V30,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V30 tmp23 [V30,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V31 tmp24 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V32 tmp25 [V32,T23] ( 3, 17 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V33 tmp26 [V33,T21] ( 4, 18 ) int -> r3 "Inline stloc first use temp"
-; V34 tmp27 [V34,T17] ( 3, 20 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String>+; V32 tmp25 [V32,T24] ( 3, 17 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V33 tmp26 [V33,T22] ( 4, 18 ) int -> r3 "Inline stloc first use temp"
+; V34 tmp27 [V34,T18] ( 3, 20 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String> ; V35 tmp28 [V35 ] ( 3, 3 ) struct ( 8) [sp+0x04] do-not-enreg[XS] addr-exposed "Reverse Pinvoke FrameVar"
; V36 tmp29 [V36 ] ( 3, 13 ) byref -> [sp+0x10] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP
; V37 tmp30 [V37 ] ( 3, 13 ) int -> [sp+0x14] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x4)" P-DEP-; V38 tmp31 [V38,T02] ( 4, 25 ) ref -> r4 single-def "field V04._list (fldOffset=0x0)" P-INDEP
-; V39 tmp32 [V39,T03] ( 4, 20 ) ref -> r0 "field V04._current (fldOffset=0x4)" P-INDEP+; V38 tmp31 [V38,T03] ( 4, 25 ) ref -> r4 single-def "field V04._list (fldOffset=0x0)" P-INDEP
+; V39 tmp32 [V39,T02] ( 4, 20 ) ref -> r0 "field V04._current (fldOffset=0x4)" P-INDEP ; V40 tmp33 [V40,T00] ( 6, 41 ) int -> r7 "field V04._index (fldOffset=0x8)" P-INDEP-; V41 tmp34 [V41,T05] ( 3, 17 ) int -> r6 "field V04._version (fldOffset=0xc)" P-INDEP
-; V42 tmp35 [V42,T13] ( 2, 8 ) byref -> r8 "field V09._reference (fldOffset=0x0)" P-INDEP
-; V43 tmp36 [V43,T15] ( 2, 8 ) int -> r9 "field V09._length (fldOffset=0x4)" P-INDEP+; V41 tmp34 [V41,T13] ( 2, 9 ) int -> r6 "field V04._version (fldOffset=0xc)" P-INDEP
+; V42 tmp35 [V42,T14] ( 2, 8 ) byref -> r8 "field V09._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp36 [V43,T16] ( 2, 8 ) int -> r9 "field V09._length (fldOffset=0x4)" P-INDEP ;* V44 tmp37 [V44 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp38 [V45 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP-; V46 tmp39 [V46,T24] ( 3, 3 ) ref -> r4 single-def "field V13._list (fldOffset=0x0)" P-INDEP+; V46 tmp39 [V46,T25] ( 3, 3 ) ref -> r4 single-def "field V13._list (fldOffset=0x0)" P-INDEP ;* V47 tmp40 [V47 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x4)" P-INDEP-;* V48 tmp41 [V48,T26] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-; V49 tmp42 [V49,T25] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP+;* V48 tmp41 [V48,T27] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
+; V49 tmp42 [V49,T26] ( 2, 2 ) int -> r6 "field V13._version (fldOffset=0xc)" P-INDEP ; V50 tmp43 [V50,T11] ( 3, 12 ) byref -> r1 "field V14._reference (fldOffset=0x0)" P-INDEP-; V51 tmp44 [V51,T06] ( 4, 16 ) int -> r3 "field V14._length (fldOffset=0x4)" P-INDEP
-; V52 tmp45 [V52,T14] ( 2, 8 ) byref -> r1 "field V15._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T16] ( 2, 8 ) int -> r3 "field V15._length (fldOffset=0x4)" P-INDEP+; V51 tmp44 [V51,T05] ( 4, 16 ) int -> r3 "field V14._length (fldOffset=0x4)" P-INDEP
+; V52 tmp45 [V52,T15] ( 2, 8 ) byref -> r1 "field V15._reference (fldOffset=0x0)" P-INDEP
+; V53 tmp46 [V53,T17] ( 2, 8 ) int -> r3 "field V15._length (fldOffset=0x4)" P-INDEP ;* V54 tmp47 [V54 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp48 [V55 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP
;* V56 tmp49 [V56 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
@@ -77,8 +77,9 @@
;* V66 tmp59 [V66 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V67 tmp60 [V67 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
; V68 tmp61 [V68,T01] ( 3, 48 ) ref -> r0 "arr expr"-; V69 PSPSym [V69,T27] ( 1, 1 ) int -> [sp+0x18] do-not-enreg[V] "PSPSym"
-; V70 cse0 [V70,T04] ( 3, 24 ) int -> r8 "CSE - aggressive"+; V69 PSPSym [V69,T28] ( 1, 1 ) int -> [sp+0x18] do-not-enreg[V] "PSPSym"
+; V70 cse0 [V70,T09] ( 2, 16 ) int -> r0 "CSE - aggressive"
+; V71 cse1 [V71,T04] ( 2, 16 ) int -> r0 "CSE - aggressive" ;
; Lcl frame size = 28
@@ -110,7 +111,7 @@ G_M58652_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
ldrb r0, [r5+0x04]
cmp r0, 0- beq SHORT G_M58652_IG11+ beq SHORT G_M58652_IG10 ldr r4, [r5]
; gcrRegs +[r4]
ldr r6, [r4+0x0C]
@@ -161,15 +162,15 @@ G_M58652_IG06: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
; byrRegs -[r0-r1 r8]
; gcr arg pop 0
cmp r0, 0- bne SHORT G_M58652_IG14+ bne SHORT G_M58652_IG13 ;; size=24 bbWeight=4 PerfScore 40.00
G_M58652_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz- ldr r8, [r4+0x0C]
- cmp r6, r8
- bne SHORT G_M58652_IG10+ ldr r0, [r4+0x0C]
+ cmp r6, r0
+ bne SHORT G_M58652_IG09 ldr r0, [r4+0x08]
cmp r7, r0- bhs SHORT G_M58652_IG11+ bhs SHORT G_M58652_IG10 ldr r0, [r4+0x04]
; gcrRegs +[r0]
ldr r3, [r0+0x04]
@@ -184,7 +185,7 @@ G_M58652_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; byrRegs -[r0]
adds r7, r7, 1
b SHORT G_M58652_IG04- ;; size=32 bbWeight=8 PerfScore 120.00+ ;; size=30 bbWeight=8 PerfScore 120.00 G_M58652_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0 r4]
movw r3, 0xd1ff
@@ -201,10 +202,6 @@ G_M58652_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
G_M58652_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp r6, r8
- bne SHORT G_M58652_IG09
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M58652_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr r4, [r5]
; gcrRegs +[r4]
add r0, sp, 16 // [V02 loc0]
@@ -225,9 +222,9 @@ G_M58652_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r3, [r4+0x08]
ldr lr, [r0+0x04]
cmp lr, r3- bls SHORT G_M58652_IG13+ bls SHORT G_M58652_IG12 ;; size=36 bbWeight=8 PerfScore 120.00-G_M58652_IG12: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz+G_M58652_IG11: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}, byref, isz add lr, r3, 1
str lr, [r4+0x08]
adds r0, 8
@@ -240,9 +237,9 @@ G_M58652_IG12: ; bbWeight=1, gcrefRegs=0013 {r0 r1 r4}, byrefRegs=0000 {}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1 r4]
; byrRegs -[r0]- b SHORT G_M58652_IG14+ b SHORT G_M58652_IG13 ;; size=26 bbWeight=1 PerfScore 9.00-G_M58652_IG13: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref+G_M58652_IG12: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref ; gcrRegs +[r1 r4]
mov r0, r4
; gcrRegs +[r0]
@@ -253,24 +250,24 @@ G_M58652_IG13: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r1 r4]
; gcr arg pop 0
;; size=14 bbWeight=1 PerfScore 5.00-G_M58652_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M58652_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add r0, sp, 4 // [V35 tmp28]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_JIT_REVERSE_PINVOKE_EXIT
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 4.00-G_M58652_IG15: ; bbWeight=1, epilog, nogc, extend+G_M58652_IG14: ; bbWeight=1, epilog, nogc, extend add sp, 28
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00-G_M58652_IG16: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc+G_M58652_IG15: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc ; gcrRegs +[r0]
push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
add r3, r11, 8
str r3, [sp]
;; size=10 bbWeight=0 PerfScore 0.00-G_M58652_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref+G_M58652_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref ldr r3, [r0]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x04]
@@ -282,14 +279,14 @@ G_M58652_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byr
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0- movw r0, LOW ADDRESS G_M58652_IG14
- movt r0, HIGH ADDRESS G_M58652_IG14+ movw r0, LOW ADDRESS G_M58652_IG13
+ movt r0, HIGH ADDRESS G_M58652_IG13 ;; size=28 bbWeight=0 PerfScore 0.00-G_M58652_IG18: ; bbWeight=0, funclet epilog, nogc, extend+G_M58652_IG17: ; bbWeight=0, funclet epilog, nogc, extend pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 330, prolog size 22, PerfScore 414.00, instruction count 128, allocated bytes for code 330 (MethodHash=943d1ae3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)+; Total bytes of code 324, prolog size 22, PerfScore 398.00, instruction count 126, allocated bytes for code 324 (MethodHash=943d1ae3) for method System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts) ; ============================================================
Unwind Info:
@@ -301,7 +298,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0- Function Length : 144 (0x00090) Actual length = 288 (0x000120)+ Function Length : 141 (0x0008d) Actual length = 282 (0x00011a) --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -329,4 +326,4 @@ Unwind Info:
*************** EH table for System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int)
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM-EH#0: try [G_M58652_IG03..G_M58652_IG14) handled by [G_M58652_IG16..END) (class: 2000051)+EH#0: try [G_M58652_IG03..G_M58652_IG13) handled by [G_M58652_IG15..END) (class: 2000051)
@@ -9,35 +9,36 @@
; Final local variable assignments
;
; V00 this [V00,T07] ( 13, 13 ) ref -> [sp+0x10] this class-hnd EH-live single-def <System.Management.Automation.Internal.PipelineProcessor>-; V01 loc0 [V01,T13] ( 3, 1 ) ref -> [sp+0x0C] class-hnd exact EH-live spill-single-def <<unknown class>>
-; V02 loc1 [V02,T14] ( 3, 1 ) ubyte -> [sp+0x1C] EH-live single-def+; V01 loc0 [V01,T14] ( 3, 1 ) ref -> [sp+0x0C] class-hnd exact EH-live spill-single-def <<unknown class>>
+; V02 loc1 [V02,T15] ( 3, 1 ) ubyte -> [sp+0x1C] EH-live single-def ;* V03 loc2 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.CommandProcessorBase]>-; V04 loc3 [V04,T09] ( 3, 4 ) ref -> [sp+0x08] do-not-enreg[Z] class-hnd EH-live <System.Management.Automation.CommandProcessorBase>+; V04 loc3 [V04,T10] ( 3, 4 ) ref -> [sp+0x08] do-not-enreg[Z] class-hnd EH-live <System.Management.Automation.CommandProcessorBase> ;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
;* V07 loc6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V09 tmp1 [V09,T17] ( 4, 0 ) ref -> r4 class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V10 tmp2 [V10,T18] ( 2, 0 ) ref -> r1 class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V11 tmp3 [V11,T10] ( 2, 4 ) ref -> r5 class-hnd single-def "Inlining Arg" <<unknown class>>+; V09 tmp1 [V09,T18] ( 4, 0 ) ref -> r6 class-hnd "impSpillSpecialSideEff" <<unknown class>>
+; V10 tmp2 [V10,T19] ( 2, 0 ) ref -> r1 class-hnd "impSpillSpecialSideEff" <<unknown class>>
+; V11 tmp3 [V11,T11] ( 2, 4 ) ref -> r5 class-hnd single-def "Inlining Arg" <<unknown class>> ;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.CommandProcessorBase]>-;* V13 tmp5 [V13,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V13 tmp5 [V13,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V15 tmp7 [V15,T08] ( 6, 6 ) ref -> r4 class-hnd exact "Inlining Arg" <System.Management.Automation.Runspaces.LocalPipeline>+; V15 tmp7 [V15,T09] ( 6, 6 ) ref -> r6 class-hnd exact "Inlining Arg" <System.Management.Automation.Runspaces.LocalPipeline> ;* V16 tmp8 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.Runspaces.PipelineStopper>
; V17 tmp9 [V17,T03] ( 4, 24 ) ref -> [sp+0x04] EH-live single-def "field V03._list (fldOffset=0x0)" P-INDEP-; V18 tmp10 [V18,T02] ( 5, 24 ) ref -> r0 "field V03._current (fldOffset=0x4)" P-INDEP+; V18 tmp10 [V18,T02] ( 5, 24 ) ref -> registers "field V03._current (fldOffset=0x4)" P-INDEP ; V19 tmp11 [V19,T00] ( 6, 41 ) int -> [sp+0x18] do-not-enreg[Z] EH-live "field V03._index (fldOffset=0x8)" P-INDEP-; V20 tmp12 [V20,T05] ( 3, 16 ) int -> [sp+0x14] EH-live single-def "field V03._version (fldOffset=0xc)" P-INDEP
-; V21 tmp13 [V21,T11] ( 3, 3 ) ref -> r5 single-def "field V12._list (fldOffset=0x0)" P-INDEP+; V20 tmp12 [V20,T08] ( 2, 8 ) int -> [sp+0x14] EH-live spill-single-def "field V03._version (fldOffset=0xc)" P-INDEP
+; V21 tmp13 [V21,T12] ( 3, 3 ) ref -> r5 single-def "field V12._list (fldOffset=0x0)" P-INDEP ;* V22 tmp14 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x4)" P-INDEP-;* V23 tmp15 [V23,T15] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x8)" P-INDEP
-; V24 tmp16 [V24,T12] ( 2, 2 ) int -> r6 single-def "field V12._version (fldOffset=0xc)" P-INDEP+;* V23 tmp15 [V23,T16] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x8)" P-INDEP
+; V24 tmp16 [V24,T13] ( 2, 2 ) int -> r0 single-def "field V12._version (fldOffset=0xc)" P-INDEP ; V25 tmp17 [V25,T01] ( 3, 48 ) ref -> r0 "arr expr"-; V26 tmp18 [V26,T19] ( 2, 0 ) ref -> r0 "argument with side effect"
-; V27 tmp19 [V27,T20] ( 2, 0 ) ref -> r1 "argument with side effect"
-; V28 PSPSym [V28,T16] ( 1, 1 ) int -> [sp+0x20] do-not-enreg[V] "PSPSym"
-; V29 cse0 [V29,T04] ( 3, 24 ) int -> r4 "CSE - aggressive"+; V26 tmp18 [V26,T20] ( 2, 0 ) ref -> r0 "argument with side effect"
+; V27 tmp19 [V27,T21] ( 2, 0 ) ref -> r1 "argument with side effect"
+; V28 PSPSym [V28,T17] ( 1, 1 ) int -> [sp+0x20] do-not-enreg[V] "PSPSym"
+; V29 cse0 [V29,T06] ( 2, 16 ) int -> r0 "CSE - aggressive"
+; V30 cse1 [V30,T04] ( 2, 16 ) int -> r2 "CSE - aggressive" ;
; Lcl frame size = 36
@@ -90,70 +91,77 @@ G_M35394_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r2]
ldr r5, [r2+0x04]
; gcrRegs +[r5]- ldr r6, [r5+0x0C]+ ldr r0, [r5+0x0C] str r5, [sp+0x04] // [V17 tmp9]
; GC ptr vars +{V17}- movs r0, 0
- str r0, [sp+0x18] // [V19 tmp11]
- str r6, [sp+0x14] // [V20 tmp12]+ movs r3, 0
+ str r3, [sp+0x18] // [V19 tmp11]
+ str r0, [sp+0x14] // [V20 tmp12] b SHORT G_M35394_IG08
;; size=16 bbWeight=1 PerfScore 8.00-G_M35394_IG06: ; bbWeight=4, gcVars=00002088 {V00 V01 V17}, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, gcvars, byref, isz+G_M35394_IG06: ; bbWeight=4, gcVars=00004088 {V00 V01 V17}, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r2] +[r0]
str r0, [sp+0x08] // [V04 loc3]
; GC ptr vars +{V04}
cmp r0, 0
beq SHORT G_M35394_IG08+ mov r3, r0
+ ; gcrRegs +[r3]
+ ldr r0, [sp+0x14] // [V20 tmp12]
+ ; gcrRegs -[r0] ldr r2, [sp+0x10] // [V00 this]
; gcrRegs +[r2]
ldr r4, [sp+0x1C] // [V02 loc1]- ldrb r3, [r0+0x2A]
- cmp r3, 0+ ldrb r1, [r3+0x2A]
+ cmp r1, 0 beq SHORT G_M35394_IG08- ;; size=18 bbWeight=4 PerfScore 32.00
-G_M35394_IG07: ; bbWeight=4, gcVars=00002288 {V00 V01 V04 V17}, gcrefRegs=0025 {r0 r2 r5}, byrefRegs=0000 {}, gcvars, byref
- movs r3, 0
- str r3, [r2+0x1C]+ ;; size=22 bbWeight=4 PerfScore 40.00
+G_M35394_IG07: ; bbWeight=4, gcVars=00004488 {V00 V01 V04 V17}, gcrefRegs=002C {r2 r3 r5}, byrefRegs=0000 {}, gcvars, byref
+ movs r1, 0
+ str r1, [r2+0x1C]
+ mov r0, r3
+ ; gcrRegs +[r0] movw r3, 0xd1ff+ ; gcrRegs -[r3] movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r0 r2]
; gcr arg pop 0- ;; size=16 bbWeight=4 PerfScore 24.00
-G_M35394_IG08: ; bbWeight=8, gcVars=00002088 {V00 V01 V17}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+ ;; size=18 bbWeight=4 PerfScore 28.00
+G_M35394_IG08: ; bbWeight=8, gcVars=00004088 {V00 V01 V17}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r5]
; GC ptr vars -{V04}
ldr r5, [sp+0x04] // [V17 tmp9]
; gcrRegs +[r5]- ldr r4, [r5+0x0C]
- ldr r6, [sp+0x14] // [V20 tmp12]
- cmp r6, r4
- bne SHORT G_M35394_IG11+ ldr r0, [r5+0x0C]
+ ldr r3, [sp+0x14] // [V20 tmp12]
+ cmp r3, r0
+ bne SHORT G_M35394_IG10 ldr r0, [sp+0x18] // [V19 tmp11]- ldr r3, [r5+0x08]
- cmp r0, r3
- bhs SHORT G_M35394_IG12+ ldr r2, [r5+0x08]
+ cmp r0, r2
+ bhs SHORT G_M35394_IG11 ldr r0, [r5+0x04]
; gcrRegs +[r0]- ldr r3, [sp+0x18] // [V19 tmp11]
- ldr r2, [r0+0x04]
- cmp r3, r2+ ldr r2, [sp+0x18] // [V19 tmp11]
+ ldr r1, [r0+0x04]
+ cmp r2, r1 bhs SHORT G_M35394_IG09
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]- ldr r3, [sp+0x18] // [V19 tmp11]
- lsls r3, r3, 2
- ldr r0, [r0+r3]+ ldr r2, [sp+0x18] // [V19 tmp11]
+ lsls r2, r2, 2
+ ldr r0, [r0+r2] ; gcrRegs +[r0]
; byrRegs -[r0]- ldr r3, [sp+0x18] // [V19 tmp11]
- adds r3, r3, 1
- str r3, [sp+0x18] // [V19 tmp11]+ ldr r2, [sp+0x18] // [V19 tmp11]
+ adds r2, r2, 1
+ str r2, [sp+0x18] // [V19 tmp11] b SHORT G_M35394_IG06
;; size=44 bbWeight=8 PerfScore 176.00-G_M35394_IG09: ; bbWeight=0, gcVars=00002080 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M35394_IG09: ; bbWeight=0, gcVars=00004080 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0 r5]
; GC ptr vars -{V17}
movw r3, 0xd1ff
@@ -169,11 +177,7 @@ G_M35394_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M35394_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r6, r4
- bne SHORT G_M35394_IG10
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M35394_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M35394_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr r2, [sp+0x10] // [V00 this]
; gcrRegs +[r2]
add r0, r2, 28
@@ -186,25 +190,24 @@ G_M35394_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]- ldr r4, [r2+0x30]
- ; gcrRegs +[r4]
- cmp r4, 0+ ldr r6, [r2+0x30]
+ ; gcrRegs +[r6]
+ cmp r6, 0 beq SHORT G_M35394_IG03- ldr r3, [r4+0x60]+ ldr r3, [r6+0x60] ; gcrRegs +[r3]
ldr r4, [sp+0x1C] // [V02 loc1]- ; gcrRegs -[r4] strb r4, [r3+0x10]
b SHORT G_M35394_IG03
;; size=32 bbWeight=1 PerfScore 13.00-G_M35394_IG13: ; bbWeight=0, gcVars=00002288 {V00 V01 V04 V17}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; gcrRegs -[r2-r3] +[r0]
- ; GC ptr vars +{V01 V04 V09 V13 V17}+G_M35394_IG12: ; bbWeight=0, gcVars=00004488 {V00 V01 V04 V17}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; gcrRegs -[r2-r3 r6] +[r0]
+ ; GC ptr vars +{V01 V04 V10 V17} push {r3,r4,r5,r6,r11,lr}
add r3, r11, 8
str r3, [sp]
;; size=10 bbWeight=0 PerfScore 0.00-G_M35394_IG14: ; bbWeight=0, gcVars=00002288 {V00 V01 V04 V17}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref+G_M35394_IG13: ; bbWeight=0, gcVars=00004488 {V00 V01 V04 V17}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref mov r1, r0
; gcrRegs +[r1]
ldr r0, [r11-0x20] // [V00 this]
@@ -226,27 +229,27 @@ G_M35394_IG14: ; bbWeight=0, gcVars=00002288 {V00 V01 V04 V17}, gcrefRegs
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]- ; GC ptr vars -{V04 V09 V13}+ ; GC ptr vars -{V04 V10} blx r3 // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0
movw r0, LOW ADDRESS G_M35394_IG08
movt r0, HIGH ADDRESS G_M35394_IG08
;; size=58 bbWeight=0 PerfScore 0.00-G_M35394_IG15: ; bbWeight=0, funclet epilog, nogc, extend+G_M35394_IG14: ; bbWeight=0, funclet epilog, nogc, extend pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00-G_M35394_IG16: ; bbWeight=0, gcVars=00002288 {V00 V01 V04 V17}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc+G_M35394_IG15: ; bbWeight=0, gcVars=00004488 {V00 V01 V04 V17}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; gcrRegs +[r0]- ; GC ptr vars +{V04 V09}+ ; GC ptr vars +{V04 V10} push {r3,r4,r5,r6,r11,lr}
add r3, r11, 8
str r3, [sp]
;; size=10 bbWeight=0 PerfScore 0.00-G_M35394_IG17: ; bbWeight=0, gcVars=00002288 {V00 V01 V04 V17}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
- mov r4, r0
- ; gcrRegs +[r4]
- mov r1, r4+G_M35394_IG16: ; bbWeight=0, gcVars=00004488 {V00 V01 V04 V17}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov r6, r0
+ ; gcrRegs +[r6]
+ mov r1, r6 ; gcrRegs +[r1]
movw r0, 0xd1ff
; gcrRegs -[r0]
@@ -257,8 +260,8 @@ G_M35394_IG17: ; bbWeight=0, gcVars=00002288 {V00 V01 V04 V17}, gcrefRegs
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
cmp r0, 0- bne SHORT G_M35394_IG18...
@@ -8,14 +8,14 @@
; 0 inlinees with PGO data; 13 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;-; V00 loc0 [V00,T17] ( 8, 260 ) ref -> r4 class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T00] ( 16,1249 ) ref -> r5 class-hnd single-def <<unknown class>>+; V00 loc0 [V00,T18] ( 8, 260 ) ref -> r4 class-hnd exact single-def <<unknown class>>
+; V01 loc1 [V01,T00] ( 15,1121 ) ref -> r5 class-hnd single-def <<unknown class>> ; V02 loc2 [V02,T06] ( 9, 641 ) ref -> r6 class-hnd single-def <<unknown class>>
; V03 loc3 [V03,T09] ( 8, 392 ) int -> registers -; V04 loc4 [V04,T38] ( 2, 0 ) ref -> [sp+0x10] class-hnd exact EH-live single-def <<unknown class>>+; V04 loc4 [V04,T39] ( 2, 0 ) ref -> [sp+0x10] class-hnd exact EH-live single-def <<unknown class>> ; V05 loc5 [V05 ] ( 6, 5 ) ubyte -> [sp+0x2C] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc6 [V06 ] ( 1, 64 ) long -> [sp+0x20] multireg-ret-; V07 loc7 [V07,T30] ( 3, 80 ) ref -> [sp+0x0C] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>>+; V07 loc7 [V07,T31] ( 3, 80 ) ref -> [sp+0x0C] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>> ; V08 loc8 [V08 ] ( 6, 320 ) ubyte -> [sp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op
; V09 loc9 [V09,T01] ( 11,1088 ) int -> [sp+0x18]
; V10 loc10 [V10,T08] ( 5, 448 ) ref -> r1 class-hnd exact <System.Threading.TimerQueue>
@@ -24,41 +24,42 @@
;* V13 loc13 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]>
;* V14 loc14 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Threading.TimerQueue>
; V15 OutArgs [V15 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"-; V16 tmp1 [V16,T36] ( 2, 4 ) ubyte -> r0 "Inlining Arg"+; V16 tmp1 [V16,T37] ( 2, 4 ) ubyte -> r0 "Inlining Arg" ;* V17 tmp2 [V17 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"-;* V18 tmp3 [V18,T31] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V19 tmp4 [V19,T22] ( 2, 256 ) ubyte -> r0 "Inlining Arg"
-; V20 tmp5 [V20,T24] ( 3, 192 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V21 tmp6 [V21,T18] ( 4, 256 ) int -> r3 "Inline stloc first use temp"
-; V22 tmp7 [V22,T20] ( 2, 256 ) ref -> lr class-hnd "Inlining Arg" <System.__Canon>+;* V18 tmp3 [V18,T32] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V19 tmp4 [V19,T23] ( 2, 256 ) ubyte -> r0 "Inlining Arg"
+; V20 tmp5 [V20,T25] ( 3, 192 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V21 tmp6 [V21,T19] ( 4, 256 ) int -> r3 "Inline stloc first use temp"
+; V22 tmp7 [V22,T21] ( 2, 256 ) ref -> lr class-hnd "Inlining Arg" <System.__Canon> ;* V23 tmp8 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]>-;* V24 tmp9 [V24,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V24 tmp9 [V24,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V25 tmp10 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V26 tmp11 [V26,T16] ( 3, 272 ) int -> r2 "Inline stloc first use temp"
-;* V27 tmp12 [V27,T34] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP
-; V28 tmp13 [V28,T14] ( 2, 192 ) ref -> [sp+0x08] spill-single-def "field V13._current (fldOffset=0x4)" P-INDEP+; V26 tmp11 [V26,T17] ( 3, 272 ) int -> r2 "Inline stloc first use temp"
+;* V27 tmp12 [V27,T35] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP
+; V28 tmp13 [V28,T15] ( 2, 192 ) ref -> [sp+0x08] spill-single-def "field V13._current (fldOffset=0x4)" P-INDEP ; V29 tmp14 [V29,T02] ( 6, 656 ) int -> r8 "field V13._index (fldOffset=0x8)" P-INDEP-; V30 tmp15 [V30,T28] ( 2, 144 ) int -> r7 "field V13._version (fldOffset=0xc)" P-INDEP
-; V31 tmp16 [V31,T32] ( 2, 32 ) ref -> r0 "field V23._list (fldOffset=0x0)" P-INDEP+; V30 tmp15 [V30,T29] ( 2, 144 ) int -> r7 "field V13._version (fldOffset=0xc)" P-INDEP
+; V31 tmp16 [V31,T33] ( 2, 32 ) ref -> r0 "field V23._list (fldOffset=0x0)" P-INDEP ;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref "field V23._current (fldOffset=0x4)" P-INDEP-;* V33 tmp18 [V33,T35] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x8)" P-INDEP
-; V34 tmp19 [V34,T33] ( 2, 32 ) int -> r7 "field V23._version (fldOffset=0xc)" P-INDEP
-; V35 tmp20 [V35,T39] ( 2, 0 ) ref -> r2 "argument with side effect"+;* V33 tmp18 [V33,T36] ( 0, 0 ) int -> zero-ref "field V23._index (fldOffset=0x8)" P-INDEP
+; V34 tmp19 [V34,T34] ( 2, 32 ) int -> r7 "field V23._version (fldOffset=0xc)" P-INDEP
+; V35 tmp20 [V35,T40] ( 2, 0 ) ref -> r2 "argument with side effect" ; V36 tmp21 [V36,T03] ( 3, 768 ) ref -> r1 "arr expr"
; V37 tmp22 [V37,T12] ( 3, 384 ) ref -> lr "arr expr"
; V38 tmp23 [V38,T04] ( 3, 768 ) ref -> r0 "arr expr"-; V39 tmp24 [V39,T21] ( 2, 256 ) ref -> r0 "argument with side effect"
-; V40 PSPSym [V40,T37] ( 1, 1 ) int -> [sp+0x30] do-not-enreg[V] "PSPSym"
-; V41 cse0 [V41,T07] ( 3, 384 ) int -> r2 "CSE - aggressive"
-; V42 cse1 [V42,T19] ( 4, 256 ) int -> r0 "CSE - moderate"
-; V43 cse2 [V43,T25] ( 3, 192 ) ref -> r1 "CSE - moderate"
-; V44 cse3 [V44,T29] ( 2, 128 ) int -> lr "CSE - moderate"
-; V45 rat0 [V45,T26] ( 2, 192 ) int -> r7 "field V06.lo (fldOffset=0x0)" P-INDEP
-; V46 rat1 [V46,T27] ( 2, 192 ) int -> r8 "field V06.hi (fldOffset=0x4)" P-INDEP
-; V47 rat2 [V47,T11] ( 4, 384 ) int -> r3 "field V11.lo (fldOffset=0x0)" P-INDEP
-; V48 rat3 [V48,T15] ( 3, 320 ) int -> lr "field V11.hi (fldOffset=0x4)" P-INDEP
-; V49 rat4 [V49,T05] ( 3, 768 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; V50 rat5 [V50,T13] ( 3, 384 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"+; V39 tmp24 [V39,T22] ( 2, 256 ) ref -> r0 "argument with side effect"
+; V40 PSPSym [V40,T38] ( 1, 1 ) int -> [sp+0x30] do-not-enreg[V] "PSPSym"
+; V41 cse0 [V41,T13] ( 3, 384 ) int -> r3 "CSE - aggressive"
+; V42 cse1 [V42,T07] ( 3, 384 ) int -> r2 "CSE - aggressive"
+; V43 cse2 [V43,T20] ( 4, 256 ) int -> r0 "CSE - moderate"
+; V44 cse3 [V44,T26] ( 3, 192 ) ref -> r1 "CSE - moderate"
+; V45 cse4 [V45,T30] ( 2, 128 ) int -> lr "CSE - moderate"
+; V46 rat0 [V46,T27] ( 2, 192 ) int -> r7 "field V06.lo (fldOffset=0x0)" P-INDEP
+; V47 rat1 [V47,T28] ( 2, 192 ) int -> r8 "field V06.hi (fldOffset=0x4)" P-INDEP
+; V48 rat2 [V48,T11] ( 4, 384 ) int -> r3 "field V11.lo (fldOffset=0x0)" P-INDEP
+; V49 rat3 [V49,T16] ( 3, 320 ) int -> lr "field V11.hi (fldOffset=0x4)" P-INDEP
+; V50 rat4 [V50,T05] ( 3, 768 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V51 rat5 [V51,T14] ( 3, 384 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" ;
; Lcl frame size = 52
@@ -83,7 +84,7 @@ G_M45973_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r1, 0
str r1, [sp+0x2C] // [V05 loc5]
;; size=26 bbWeight=1 PerfScore 9.00-G_M45973_IG03: ; bbWeight=1, gcVars=0000004000000000 {V04}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz+G_M45973_IG03: ; bbWeight=1, gcVars=0000008000000000 {V04}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x2C] // [V05 loc5]
cmp r1, 0
beq SHORT G_M45973_IG05
@@ -172,7 +173,7 @@ G_M45973_IG09: ; bbWeight=64, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {
movs r1, 0
str r1, [sp+0x1C] // [V08 loc8]
;; size=64 bbWeight=64 PerfScore 1472.00-G_M45973_IG10: ; bbWeight=64, gcVars=0000000040000000 {V07}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz+G_M45973_IG10: ; bbWeight=64, gcVars=0000000080000000 {V07}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x1C] // [V08 loc8]
cmp r1, 0
bne G_M45973_IG24
@@ -399,8 +400,8 @@ G_M45973_IG28: ; bbWeight=16, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {
mov r8, 0
b SHORT G_M45973_IG31
;; size=10 bbWeight=16 PerfScore 64.00-G_M45973_IG29: ; bbWeight=64, gcVars=0000000000004000 {V28}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0] +[r3]+G_M45973_IG29: ; bbWeight=64, gcVars=0000000000008000 {V28}, gcrefRegs=4070 {r4 r5 r6 lr}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0] +[lr] ; GC ptr vars +{V28}
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -409,26 +410,25 @@ G_M45973_IG29: ; bbWeight=64, gcVars=0000000000004000 {V28}, gcrefRegs=00
cmp r0, 1
bne SHORT G_M45973_IG37
;; size=18 bbWeight=64 PerfScore 384.00-G_M45973_IG30: ; bbWeight=64, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref+G_M45973_IG30: ; bbWeight=64, gcrefRegs=4070 {r4 r5 r6 lr}, byrefRegs=0000 {}, byref movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]- mov r1, r3+ mov r1, lr ; gcrRegs +[r1]
movw r3, 0xd1ff- ; gcrRegs -[r3] movt r3, 0xd1ff
ldr r3, [r3]
ldr r2, [r0]
; GC ptr vars -{V28}
blx r3 // System.Threading.ThreadPoolWorkQueue:EnqueueAtHighPriority(System.Object):this- ; gcrRegs -[r0-r1]+ ; gcrRegs -[r0-r1 lr] ; gcr arg pop 0
;; size=26 bbWeight=64 PerfScore 576.00
G_M45973_IG31: ; bbWeight=128, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz- ldr r0, [r5+0x0C]
- cmp r7, r0+ ldr r3, [r5+0x0C]
+ cmp r7, r3 bne SHORT G_M45973_IG39
ldr r2, [r5+0x08]
cmp r8, r2
@@ -442,25 +442,24 @@ G_M45973_IG31: ; bbWeight=128, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs -[r0]
; byrRegs +[r0]
lsl r1, r8, 2- ldr r3, [r0+r1]
- ; gcrRegs +[r3]
- str r3, [sp+0x08] // [V28 tmp13]+ ldr lr, [r0+r1]
+ ; gcrRegs +[lr]
+ str lr, [sp+0x08] // [V28 tmp13] ; GC ptr vars +{V28}
add r8, r8, 1
b SHORT G_M45973_IG29- ;; size=36 bbWeight=128 PerfScore 2048.00+ ;; size=40 bbWeight=128 PerfScore 2048.00 G_M45973_IG32: ; bbWeight=128, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz- ; gcrRegs -[r3]+ ; gcrRegs -[lr] ; byrRegs -[r0]
; GC ptr vars -{V28}- ldr r0, [r5+0x0C]
- adds r0, r0, 1+ adds r0, r3, 1 str r0, [r5+0x0C]
movs r0, 0
str r0, [r5+0x08]
cmp r2, 0
ble SHORT G_M45973_IG34- ;; size=14 bbWeight=128 PerfScore 896.00+ ;; size=12 bbWeight=128 PerfScore 768.00 G_M45973_IG33: ; bbWeight=16, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
ldr r0, [r5+0x04]
; gcrRegs +[r0]
@@ -488,23 +487,23 @@ G_M45973_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00-G_M45973_IG37: ; bbWeight=0, gcVars=0000000000004000 {V28}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r3-r6]+G_M45973_IG37: ; bbWeight=0, gcVars=0000000000008000 {V28}, gcrefRegs=4070 {r4 r5 r6 lr}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4-r6 lr] ; GC ptr vars +{V28}
movw r0, 0xd1ff
movt r0, 0xd1ff
mov r1, 740- movw r2, 0xd1ff
- movt r2, 0xd1ff
- blx r2 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcrRegs -[r3]+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ ; gcrRegs -[lr] ; gcr arg pop 0- ldr r3, [sp+0x08] // [V28 tmp13]
- ; gcrRegs +[r3]+ ldr lr, [sp+0x08] // [V28 tmp13]
+ ; gcrRegs +[lr] b SHORT G_M45973_IG30- ;; size=26 bbWeight=0 PerfScore 0.00+ ;; size=28 bbWeight=0 PerfScore 0.00 G_M45973_IG38: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- ; gcrRegs -[r3-r6]+ ; gcrRegs -[r4-r6 lr] ; GC ptr vars -{V28}
movw r0, 0xd1ff
movw r1, 0xd1ff
@@ -535,14 +534,14 @@ G_M45973_IG39: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00-G_M45973_IG40: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V04 V38}+G_M45973_IG40: ; bbWeight=0, gcVars=0000008000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V04 V39} push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
add r3, r11, 8
str r3, [sp+0x08]
;; size=12 bbWeight=0 PerfScore 0.00-G_M45973_IG41: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M45973_IG41: ; bbWeight=0, gcVars=0000008000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r0, [r11-0x24] // [V05 loc5]
cmp r0, 0
beq SHORT G_M45973_IG42
@@ -550,7 +549,7 @@ G_M45973_IG41: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=000
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff- ; GC ptr vars -{V04 V38}+ ; GC ptr vars -{V04 V39} blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
@@ -559,14 +558,14 @@ G_M45973_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0 PerfScore 0.00-G_M45973_IG43: ; bbWeight=0, gcVars=0000000040000000 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V07 V30}...
@@ -12,39 +12,39 @@
; V01 arg1 [V01,T13] ( 4, 3 ) int -> r6 single-def
; V02 arg2 [V02,T11] ( 3, 4 ) int -> r4 single-def
; V03 arg3 [V03,T12] ( 5, 3.50) int -> r5 single-def-; V04 arg4 [V04,T21] ( 1, 0.50) int -> [sp+0x38] single-def+; V04 arg4 [V04,T21] ( 1, 0.50) int -> [sp+0x30] single-def ;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 loc1 [V06,T15] ( 3, 1.50) int -> r7
;* V07 loc2 [V07,T22] ( 0, 0 ) ref -> zero-ref class-hnd exact EH-live single-def <System.Buffers.SharedArrayPoolPartitions+Partition>
; V08 loc3 [V08 ] ( 6, 2.50) ubyte -> [sp+0x0C] do-not-enreg[X] addr-exposed ld-addr-op
; V09 loc4 [V09,T14] ( 3, 4.50) ref -> r6 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
; V10 loc5 [V10,T02] ( 10, 13.25) int -> registers -; V11 loc6 [V11,T07] ( 5, 10 ) ref -> r5 class-hnd <System.Array>
-; V12 loc7 [V12,T08] ( 4, 8 ) int -> r3 +; V11 loc6 [V11,T06] ( 5, 10 ) ref -> registers class-hnd <System.Array>
+; V12 loc7 [V12,T08] ( 4, 8 ) int -> r1 ; V13 OutArgs [V13 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14,T16] ( 3, 1.50) int -> r7
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref
; V17 tmp4 [V17,T17] ( 3, 1.50) int -> r4
; V18 tmp5 [V18,T00] ( 3, 24 ) int -> r8 "impSpillLclRefs"-; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> r1 class-hnd "impSpillLclRefs" <<unknown class>>+; V19 tmp6 [V19,T03] ( 3, 12 ) ref -> r3 class-hnd "impSpillLclRefs" <<unknown class>> ; V20 tmp7 [V20,T09] ( 2, 8 ) int -> r2 "impAppendStmt"
; V21 tmp8 [V21,T10] ( 2, 8 ) int -> r3 "Inlining Arg"
; V22 tmp9 [V22,T04] ( 3, 12 ) ref -> r3 "arr expr"
; V23 tmp10 [V23,T05] ( 3, 12 ) int -> r2 "index expr"-; V24 PSPSym [V24,T20] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
-; V25 cse0 [V25,T06] ( 4, 10.50) int -> r5 "CSE - aggressive"+; V24 PSPSym [V24,T20] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
+; V25 cse0 [V25,T07] ( 3, 10 ) int -> r1 "CSE - aggressive" ; V26 cse1 [V26,T18] ( 3, 1.50) int -> r1 "CSE - moderate"
; V27 cse2 [V27,T19] ( 3, 1.50) int -> r1 "CSE - moderate"
;-; Lcl frame size = 24+; Lcl frame size = 20
G_M62513_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG- push {r4,r5,r6,r7,r8,r9,r11,lr}
- sub sp, 24
- add r11, sp, 48
- add r4, sp, 56
- str r4, [sp+0x14] // [V24 PSPSym]+ push {r4,r5,r6,r7,r8,r11,lr}
+ sub sp, 20
+ add r11, sp, 40
+ add r4, sp, 48
+ str r4, [sp+0x10] // [V24 PSPSym] str r0, [sp+0x08] // [V00 this]
; GC ptr vars +{V00}
mov r6, r1
@@ -60,8 +60,8 @@ G_M62513_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=0001 {r0},
G_M62513_IG03: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[r0]
; GC ptr vars -{V00}- add sp, 24
- pop {r4,r5,r6,r7,r8,r9,r11,pc}+ add sp, 20
+ pop {r4,r5,r6,r7,r8,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
G_M62513_IG04: ; bbWeight=0.50, gcVars=00000002 {V00}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r0]
@@ -98,12 +98,12 @@ G_M62513_IG07: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
; gcrRegs +[r0]
ldr r1, [r0+0x0C]
cmp r1, 0- beq G_M62513_IG22+ beq G_M62513_IG23 ldr r1, [r0+0x10]
cmp r1, 0
bne SHORT G_M62513_IG11
str r6, [r0+0x10]- b SHORT G_M62513_IG22+ b SHORT G_M62513_IG23 ;; size=56 bbWeight=0.50 PerfScore 10.50
G_M62513_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
@@ -130,7 +130,7 @@ G_M62513_IG11: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
; gcrRegs +[r0]
subs r1, r6, r1
cmp r1, r7- ble SHORT G_M62513_IG22+ ble SHORT G_M62513_IG23 movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r6, [r1]
@@ -141,7 +141,7 @@ G_M62513_IG11: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
cmp r5, 2
bne SHORT G_M62513_IG17
mov r8, 32- ldr r5, [sp+0x38] // [V04 arg4]+ ldr r5, [sp+0x30] // [V04 arg4] cmp r5, 0x4000
ble SHORT G_M62513_IG12
mov r8, 33
@@ -161,30 +161,30 @@ G_M62513_IG13: ; bbWeight=1.75, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}
b SHORT G_M62513_IG17
;; size=6 bbWeight=1.75 PerfScore 3.50
G_M62513_IG14: ; bbWeight=2, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz- ldr r1, [r0+0x04]
- ; gcrRegs +[r1]
- subs r3, r5, 1
- str r3, [r0+0x0C]
- ldr r2, [r1+0x04]
- cmp r3, r2+ ldr r3, [r0+0x04]
+ ; gcrRegs +[r3]
+ subs r1, r1, 1
+ str r1, [r0+0x0C]
+ ldr r2, [r3+0x04]
+ cmp r1, r2 bhs SHORT G_M62513_IG09- adds r1, 8
- ; gcrRegs -[r1]
- ; byrRegs +[r1]
- lsls r3, r3, 2
- ldr r5, [r1+r3]
- ; gcrRegs +[r5]
- cmp r5, 0+ adds r3, 8
+ ; gcrRegs -[r3]
+ ; byrRegs +[r3]
+ lsls r1, r1, 2
+ ldr r8, [r3+r1]
+ ; gcrRegs +[r8]
+ cmp r8, 0 bne SHORT G_M62513_IG15
movs r0, 0
; gcrRegs -[r0]
b SHORT G_M62513_IG16- ;; size=26 bbWeight=2 PerfScore 26.00
-G_M62513_IG15: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
- ; byrRegs -[r1]+ ;; size=30 bbWeight=2 PerfScore 26.00
+G_M62513_IG15: ; bbWeight=2, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r3] movs r0, 1
;; size=2 bbWeight=2 PerfScore 2.00-G_M62513_IG16: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz+G_M62513_IG16: ; bbWeight=2, gcrefRegs=0140 {r6 r8}, byrefRegs=0000 {}, byref, isz movw r1, 0xd1ff
movt r1, 0xd1ff
movw r3, 0xd1ff
@@ -209,9 +209,15 @@ G_M62513_IG16: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
ldrb r3, [r6+0x5D]
; byrRegs -[r3]
cmp r3, 0- mov r8, r9
- beq SHORT G_M62513_IG17+ beq SHORT G_M62513_IG19 mov r0, r5+ ; gcrRegs -[r0]
+ mov r5, r8
+ ; gcrRegs +[r5]
+ mov r8, r0
+ ; gcrRegs -[r8]
+ mov r0, r5
+ ; gcrRegs +[r0] ldr r3, [r5]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x0C]
@@ -233,29 +239,35 @@ G_M62513_IG16: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
blx lr // <unknown method>
; gcrRegs -[r0 r5]
; gcr arg pop 0- ;; size=90 bbWeight=2 PerfScore 74.00
-G_M62513_IG17: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz ldr r0, [sp+0x08] // [V00 this]
; gcrRegs +[r0]- ldr r5, [r0+0x0C]
- cmp r5, 0
- ble SHORT G_M62513_IG19
- add r1, r8, -1
- mov r9, r1+ ;; size=96 bbWeight=2 PerfScore 80.00
+G_M62513_IG17: ; bbWeight=4, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz
+ ldr r1, [r0+0x0C]
+ cmp r1, 0
+ ble SHORT G_M62513_IG20
+ add r3, r8, -1
+ mov r5, r3 cmp r8, 0
bgt SHORT G_M62513_IG14- ;; size=20 bbWeight=4 PerfScore 32.00+ ;; size=18 bbWeight=4 PerfScore 28.00 G_M62513_IG18: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]- b SHORT G_M62513_IG20
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M62513_IG19: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- cmp r5, 0
- bgt SHORT G_M62513_IG20
- movs r4, 0 b SHORT G_M62513_IG21- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M62513_IG20: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M62513_IG19: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r6]
+ mov r8, r5
+ ldr r0, [sp+0x08] // [V00 this]
+ ; gcrRegs +[r0]
+ b SHORT G_M62513_IG17
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M62513_IG20: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6]
+ movs r4, 0
+ b SHORT G_M62513_IG22
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M62513_IG21: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ldr r4, [r0+0x10]
mov r0, r7
; gcrRegs -[r0]
@@ -268,10 +280,10 @@ G_M62513_IG20: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
ldr r0, [sp+0x08] // [V00 this]
; gcrRegs +[r0]
;; size=20 bbWeight=0.50 PerfScore 4.00-G_M62513_IG21: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref+G_M62513_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref str r4, [r0+0x10]
;; size=2 bbWeight=0.50 PerfScore 0.50-G_M62513_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz+G_M62513_IG23: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ldrb r3, [sp+0x0C] // [V08 loc3]
cmp r3, 0
beq G_M62513_IG03
@@ -283,17 +295,18 @@ G_M62513_IG22: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
; gcr arg pop 0
b SHORT G_M62513_IG03
;; size=22 bbWeight=0.50 PerfScore 3.50-G_M62513_IG23: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc+G_M62513_IG24: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc ; GC ptr vars +{V00 V01}- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}+ push {r4,r5,r6,r7,r8,r11,lr}
+ sub sp, 12 add r3, r11, 8- str r3, [sp+0x04]
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M62513_IG24: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldrb r0, [r11-0x24] // [V08 loc3]+ str r3, [sp+0x08]
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M62513_IG25: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldrb r0, [r11-0x1C] // [V08 loc3] cmp r0, 0- beq SHORT G_M62513_IG25
- ldr r0, [r11-0x28] // [V00 this]+ beq SHORT G_M62513_IG26...
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.linux.arm.checked.mch | 19 | 14 | 4 | 1 | -88 | +20 |
benchmarks.run_pgo.linux.arm.checked.mch | 10 | 6 | 3 | 1 | -34 | +8 |
benchmarks.run_tiered.linux.arm.checked.mch | 19 | 14 | 4 | 1 | -84 | +20 |
coreclr_tests.run.linux.arm.checked.mch | 141 | 83 | 53 | 5 | -780 | +282 |
libraries.crossgen2.linux.arm.checked.mch | 10 | 8 | 1 | 1 | -46 | +18 |
libraries.pmi.linux.arm.checked.mch | 126 | 118 | 5 | 3 | -1,090 | +20 |
libraries_tests.run.linux.arm.Release.mch | 11 | 10 | 1 | 0 | -86 | +2 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 141 | 104 | 18 | 19 | -960 | +74 |
realworld.run.linux.arm.checked.mch | 31 | 24 | 5 | 2 | -152 | +24 |
508 | 381 | 94 | 33 | -3,320 | +468 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.linux.arm.checked.mch | 42,331 | 4,278 | 38,053 | 1,165 (2.68%) | 1,165 (2.68%) |
benchmarks.run_pgo.linux.arm.checked.mch | 47,709 | 18,036 | 29,673 | 753 (1.55%) | 753 (1.55%) |
benchmarks.run_tiered.linux.arm.checked.mch | 72,866 | 38,765 | 34,101 | 1,011 (1.37%) | 1,011 (1.37%) |
coreclr_tests.run.linux.arm.checked.mch | 471,634 | 259,195 | 212,439 | 7,529 (1.57%) | 7,529 (1.57%) |
libraries.crossgen2.linux.arm.checked.mch | 198,321 | 14 | 198,307 | 77 (0.04%) | 77 (0.04%) |
libraries.pmi.linux.arm.checked.mch | 272,819 | 6 | 272,813 | 7,891 (2.81%) | 7,891 (2.81%) |
libraries_tests.run.linux.arm.Release.mch | 33,537 | 3,662 | 29,875 | 1,186 (3.42%) | 1,186 (3.42%) |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 274,024 | 21,625 | 252,399 | 34,271 (11.12%) | 34,271 (11.12%) |
realworld.run.linux.arm.checked.mch | 36,436 | 153 | 36,283 | 1,426 (3.77%) | 1,426 (3.77%) |
1,449,677 | 345,734 | 1,103,943 | 55,309 (3.68%) | 55,309 (3.68%) |
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: 13691660 (overridden on cmd)
Total bytes of diff: 13691592 (overridden on cmd)
Total bytes of delta: -68 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
14 : 1660.dasm (3.03 % of base)
2 : 4637.dasm (0.21 % of base)
2 : 3362.dasm (0.10 % of base)
2 : 4628.dasm (0.18 % of base)
Top file improvements (bytes):
-12 : 19073.dasm (-0.15 % of base)
-10 : 4106.dasm (-2.22 % of base)
-10 : 3865.dasm (-3.33 % of base)
-8 : 17394.dasm (-0.51 % of base)
-8 : 13684.dasm (-0.48 % of base)
-8 : 69.dasm (-0.93 % of base)
-8 : 1341.dasm (-1.31 % of base)
-6 : 5404.dasm (-1.94 % of base)
-6 : 7931.dasm (-1.01 % of base)
-4 : 28788.dasm (-0.41 % of base)
-2 : 31075.dasm (-0.32 % of base)
-2 : 3370.dasm (-0.11 % of base)
-2 : 2984.dasm (-0.24 % of base)
-2 : 494.dasm (-0.20 % of base)
18 total files with Code Size differences (14 improved, 4 regressed), 1 unchanged.
Top method regressions (bytes):
14 (3.03 % of base) : 1660.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
2 (0.10 % of base) : 3362.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
2 (0.18 % of base) : 4628.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
2 (0.21 % of base) : 4637.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
Top method improvements (bytes):
-12 (-0.15 % of base) : 19073.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
-10 (-3.33 % of base) : 3865.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-10 (-2.22 % of base) : 4106.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
-8 (-1.31 % of base) : 1341.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
-8 (-0.93 % of base) : 69.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-8 (-0.48 % of base) : 13684.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
-8 (-0.51 % of base) : 17394.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
-6 (-1.94 % of base) : 5404.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)
-6 (-1.01 % of base) : 7931.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
-4 (-0.41 % of base) : 28788.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
-2 (-0.32 % of base) : 31075.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
-2 (-0.11 % of base) : 3370.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
-2 (-0.20 % of base) : 494.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
-2 (-0.24 % of base) : 2984.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
Top method regressions (percentages):
14 (3.03 % of base) : 1660.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
2 (0.21 % of base) : 4637.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
2 (0.18 % of base) : 4628.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
2 (0.10 % of base) : 3362.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
Top method improvements (percentages):
-10 (-3.33 % of base) : 3865.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-10 (-2.22 % of base) : 4106.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
-6 (-1.94 % of base) : 5404.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)
-8 (-1.31 % of base) : 1341.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
-6 (-1.01 % of base) : 7931.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
-8 (-0.93 % of base) : 69.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-8 (-0.51 % of base) : 17394.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
-8 (-0.48 % of base) : 13684.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
-4 (-0.41 % of base) : 28788.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (FullOpts)
-2 (-0.32 % of base) : 31075.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
-2 (-0.24 % of base) : 2984.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
-2 (-0.20 % of base) : 494.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
-12 (-0.15 % of base) : 19073.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
-2 (-0.11 % of base) : 3370.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
18 total methods with Code Size differences (14 improved, 4 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: 24676764 (overridden on cmd)
Total bytes of diff: 24676738 (overridden on cmd)
Total bytes of delta: -26 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
4 : 43857.dasm (0.45 % of base)
2 : 15987.dasm (0.18 % of base)
2 : 9965.dasm (0.21 % of base)
Top file improvements (bytes):
-8 : 17233.dasm (-0.47 % of base)
-6 : 175.dasm (-0.69 % of base)
-6 : 40766.dasm (-0.79 % of base)
-6 : 7591.dasm (-1.94 % of base)
-6 : 17145.dasm (-0.94 % of base)
-2 : 1399.dasm (-0.20 % of base)
9 total files with Code Size differences (6 improved, 3 regressed), 1 unchanged.
Top method regressions (bytes):
4 (0.45 % of base) : 43857.dasm - System.Threading.TimerQueue:TimerThread() (Tier0-FullOpts)
2 (0.18 % of base) : 15987.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)
2 (0.21 % of base) : 9965.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)
Top method improvements (bytes):
-8 (-0.47 % of base) : 17233.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
-6 (-0.94 % of base) : 17145.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (Tier0-FullOpts)
-6 (-0.69 % of base) : 175.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-6 (-1.94 % of base) : 7591.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)
-6 (-0.79 % of base) : 40766.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-2 (-0.20 % of base) : 1399.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
Top method regressions (percentages):
4 (0.45 % of base) : 43857.dasm - System.Threading.TimerQueue:TimerThread() (Tier0-FullOpts)
2 (0.21 % of base) : 9965.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)
2 (0.18 % of base) : 15987.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)
Top method improvements (percentages):
-6 (-1.94 % of base) : 7591.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)
-6 (-0.94 % of base) : 17145.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (Tier0-FullOpts)
-6 (-0.79 % of base) : 40766.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-6 (-0.69 % of base) : 175.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-8 (-0.47 % of base) : 17233.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
-2 (-0.20 % of base) : 1399.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
9 total methods with Code Size differences (6 improved, 3 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: 17983552 (overridden on cmd)
Total bytes of diff: 17983488 (overridden on cmd)
Total bytes of delta: -64 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
14 : 11723.dasm (3.03 % of base)
2 : 6889.dasm (0.21 % of base)
2 : 6875.dasm (0.18 % of base)
2 : 10759.dasm (0.10 % of base)
Top file improvements (bytes):
-12 : 40756.dasm (-0.15 % of base)
-10 : 15877.dasm (-3.12 % of base)
-8 : 38667.dasm (-0.51 % of base)
-8 : 165.dasm (-0.93 % of base)
-8 : 29579.dasm (-0.48 % of base)
-8 : 3199.dasm (-1.31 % of base)
-6 : 5411.dasm (-1.94 % of base)
-6 : 11291.dasm (-1.01 % of base)
-6 : 16324.dasm (-1.22 % of base)
-4 : 56293.dasm (-0.41 % of base)
-2 : 1234.dasm (-0.20 % of base)
-2 : 60342.dasm (-0.32 % of base)
-2 : 11777.dasm (-0.24 % of base)
-2 : 9473.dasm (-0.11 % of base)
18 total files with Code Size differences (14 improved, 4 regressed), 1 unchanged.
Top method regressions (bytes):
14 (3.03 % of base) : 11723.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
2 (0.10 % of base) : 10759.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
2 (0.18 % of base) : 6875.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)
2 (0.21 % of base) : 6889.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)
Top method improvements (bytes):
-12 (-0.15 % of base) : 40756.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
-10 (-3.12 % of base) : 15877.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier0-FullOpts)
-8 (-1.31 % of base) : 3199.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (Tier0-FullOpts)
-8 (-0.93 % of base) : 165.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-8 (-0.48 % of base) : 29579.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
-8 (-0.51 % of base) : 38667.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (Tier0-FullOpts)
-6 (-1.94 % of base) : 5411.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)
-6 (-1.22 % of base) : 16324.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (Tier0-FullOpts)
-6 (-1.01 % of base) : 11291.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-4 (-0.41 % of base) : 56293.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier0-FullOpts)
-2 (-0.32 % of base) : 60342.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
-2 (-0.11 % of base) : 9473.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier0-FullOpts)
-2 (-0.20 % of base) : 1234.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
-2 (-0.24 % of base) : 11777.dasm - System.Threading.TimerQueue:TimerThread() (Tier0-FullOpts)
Top method regressions (percentages):
14 (3.03 % of base) : 11723.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
2 (0.21 % of base) : 6889.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)
2 (0.18 % of base) : 6875.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)
2 (0.10 % of base) : 10759.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
Top method improvements (percentages):
-10 (-3.12 % of base) : 15877.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier0-FullOpts)
-6 (-1.94 % of base) : 5411.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)
-8 (-1.31 % of base) : 3199.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (Tier0-FullOpts)
-6 (-1.22 % of base) : 16324.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (Tier0-FullOpts)
-6 (-1.01 % of base) : 11291.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-8 (-0.93 % of base) : 165.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-8 (-0.51 % of base) : 38667.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (Tier0-FullOpts)
-8 (-0.48 % of base) : 29579.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (Tier0-FullOpts)
-4 (-0.41 % of base) : 56293.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier0-FullOpts)
-2 (-0.32 % of base) : 60342.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
-2 (-0.24 % of base) : 11777.dasm - System.Threading.TimerQueue:TimerThread() (Tier0-FullOpts)
-2 (-0.20 % of base) : 1234.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
-12 (-0.15 % of base) : 40756.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
-2 (-0.11 % of base) : 9473.dasm - System.Net.Security.SslStream+<EnsureFullTlsFrameAsync>d__169`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier0-FullOpts)
18 total methods with Code Size differences (14 improved, 4 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: 321243680 (overridden on cmd)
Total bytes of diff: 321243182 (overridden on cmd)
Total bytes of delta: -498 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
6 : 118627.dasm (0.14 % of base)
6 : 167759.dasm (0.15 % of base)
6 : 185428.dasm (0.14 % of base)
6 : 210555.dasm (0.14 % of base)
6 : 214984.dasm (0.14 % of base)
6 : 237164.dasm (0.14 % of base)
6 : 246883.dasm (0.14 % of base)
6 : 111483.dasm (0.14 % of base)
6 : 156932.dasm (0.14 % of base)
6 : 226039.dasm (0.14 % of base)
6 : 27113.dasm (0.15 % of base)
6 : 294544.dasm (0.14 % of base)
6 : 5020.dasm (0.14 % of base)
6 : 116451.dasm (0.14 % of base)
6 : 166172.dasm (0.14 % of base)
6 : 179412.dasm (0.14 % of base)
6 : 208823.dasm (0.14 % of base)
6 : 216924.dasm (0.14 % of base)
6 : 218480.dasm (0.14 % of base)
6 : 8064.dasm (0.14 % of base)
Top file improvements (bytes):
-32 : 202699.dasm (-19.75 % of base)
-32 : 418649.dasm (-19.75 % of base)
-26 : 2142.dasm (-0.84 % of base)
-22 : 309793.dasm (-0.92 % of base)
-22 : 477180.dasm (-0.93 % of base)
-20 : 311037.dasm (-0.79 % of base)
-18 : 2859.dasm (-2.22 % of base)
-16 : 477587.dasm (-0.61 % of base)
-14 : 274382.dasm (-0.39 % of base)
-14 : 300827.dasm (-3.59 % of base)
-14 : 301680.dasm (-3.59 % of base)
-14 : 303287.dasm (-3.63 % of base)
-14 : 303678.dasm (-3.63 % of base)
-12 : 304388.dasm (-3.00 % of base)
-12 : 302423.dasm (-3.19 % of base)
-12 : 311135.dasm (-3.00 % of base)
-10 : 167001.dasm (-3.38 % of base)
-10 : 272938.dasm (-2.66 % of base)
-10 : 2877.dasm (-1.66 % of base)
-10 : 301841.dasm (-2.65 % of base)
58 total files with Code Size differences (28 improved, 30 regressed), 5 unchanged.
Top method regressions (bytes):
6 (0.14 % of base) : 118627.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.15 % of base) : 167759.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 185428.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 210555.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 214984.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 237164.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 246883.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 111483.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 156932.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 226039.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.15 % of base) : 27113.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 294544.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 5020.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 116451.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 166172.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 179412.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 208823.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 216924.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 218480.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 8064.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
Top method improvements (bytes):
-32 (-19.75 % of base) : 418649.dasm - Program:M49() (FullOpts)
-32 (-19.75 % of base) : 202699.dasm - Program:M49() (Tier0-FullOpts)
-26 (-0.84 % of base) : 2142.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
-22 (-0.93 % of base) : 477180.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
-22 (-0.92 % of base) : 309793.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (Tier0-FullOpts)
-20 (-0.79 % of base) : 311037.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (Tier0-FullOpts)
-18 (-2.22 % of base) : 2859.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
-16 (-0.61 % of base) : 477587.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
-14 (-0.39 % of base) : 274382.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (Tier0-FullOpts)
-14 (-3.59 % of base) : 300827.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-14 (-3.59 % of base) : 301680.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-14 (-3.63 % of base) : 303287.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-14 (-3.63 % of base) : 303678.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-12 (-3.00 % of base) : 304388.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-12 (-3.19 % of base) : 302423.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-12 (-3.00 % of base) : 311135.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-10 (-0.65 % of base) : 476929.dasm - Microsoft.Build.Execution.ProjectInstance:CreateItemsSnapshot(System.Collections.Generic.ICollection`1[Microsoft.Build.Evaluation.ProjectItem],int,ubyte):System.Collections.Generic.Dictionary`2[Microsoft.Build.Evaluation.ProjectItem,Microsoft.Build.Execution.ProjectItemInstance]:this (FullOpts)
-10 (-2.66 % of base) : 272938.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-10 (-2.65 % of base) : 301841.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-10 (-2.66 % of base) : 301128.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
Top method regressions (percentages):
4 (0.50 % of base) : 463819.dasm - ILCompiler.PEWriter.SectionBuilder:RelocateOutputFile(System.Reflection.Metadata.BlobBuilder,ulong,System.IO.Stream):this (FullOpts)
4 (0.50 % of base) : 275254.dasm - ILCompiler.PEWriter.SectionBuilder:RelocateOutputFile(System.Reflection.Metadata.BlobBuilder,ulong,System.IO.Stream):this (Tier0-FullOpts)
2 (0.21 % of base) : 315517.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
4 (0.21 % of base) : 312274.dasm - System.IO.BinaryReader:ReadString():System.String:this (Tier1)
2 (0.21 % of base) : 1012.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)
2 (0.19 % of base) : 167529.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
2 (0.19 % of base) : 382956.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
2 (0.19 % of base) : 153148.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)
6 (0.15 % of base) : 167759.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.15 % of base) : 27113.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.15 % of base) : 174498.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 118627.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 185428.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 210555.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 237164.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 246883.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 111483.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 226039.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 294544.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
6 (0.14 % of base) : 5020.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier1)
Top method improvements (percentages):
-32 (-19.75 % of base) : 418649.dasm - Program:M49() (FullOpts)
-32 (-19.75 % of base) : 202699.dasm - Program:M49() (Tier0-FullOpts)
-8 (-3.92 % of base) : 424436.dasm - Test.BB:TestEntryPoint() (FullOpts)
-8 (-3.85 % of base) : 211836.dasm - Test.BB:TestEntryPoint() (Tier0-FullOpts)
-14 (-3.63 % of base) : 303287.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-14 (-3.63 % of base) : 303678.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-14 (-3.59 % of base) : 300827.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-14 (-3.59 % of base) : 301680.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-10 (-3.38 % of base) : 167001.dasm - System.Diagnostics.Tracing.ManifestBuilder:TranslateIndexToManifestConvention(int,System.String):int:this (Instrumented Tier1)
-12 (-3.19 % of base) : 302423.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-12 (-3.00 % of base) : 304388.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-12 (-3.00 % of base) : 311135.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-10 (-2.66 % of base) : 272938.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-10 (-2.66 % of base) : 301128.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-10 (-2.65 % of base) : 301841.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-18 (-2.22 % of base) : 2859.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
-10 (-1.66 % of base) : 2877.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier1)
-6 (-1.42 % of base) : 416327.dasm - Mutate:TestEntryPoint():int (FullOpts)
-6 (-1.42 % of base) : 201661.dasm - Mutate:TestEntryPoint():int (Tier0-FullOpts)
-8 (-1.31 % of base) : 464022.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
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: 35989292 (overridden on cmd)
Total bytes of diff: 35989264 (overridden on cmd)
Total bytes of delta: -28 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
18 : 167795.dasm (2.33 % of base)
Top file improvements (bytes):
-8 : 107925.dasm (-1.49 % of base)
-8 : 19865.dasm (-1.36 % of base)
-6 : 107930.dasm (-0.97 % of base)
-6 : 192287.dasm (-0.74 % of base)
-6 : 171960.dasm (-0.36 % of base)
-6 : 108885.dasm (-0.36 % of base)
-4 : 167768.dasm (-3.57 % of base)
-2 : 18274.dasm (-0.26 % of base)
9 total files with Code Size differences (8 improved, 1 regressed), 1 unchanged.
Top method regressions (bytes):
18 (2.33 % of base) : 167795.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)
Top method improvements (bytes):
-8 (-1.36 % of base) : 19865.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
-8 (-1.49 % of base) : 107925.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-6 (-0.36 % of base) : 171960.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
-6 (-0.36 % of base) : 108885.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
-6 (-0.74 % of base) : 192287.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
-6 (-0.97 % of base) : 107930.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-4 (-3.57 % of base) : 167768.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
-2 (-0.26 % of base) : 18274.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
Top method regressions (percentages):
18 (2.33 % of base) : 167795.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)
Top method improvements (percentages):
-4 (-3.57 % of base) : 167768.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
-8 (-1.49 % of base) : 107925.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-1.36 % of base) : 19865.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
-6 (-0.97 % of base) : 107930.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-6 (-0.74 % of base) : 192287.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
-6 (-0.36 % of base) : 171960.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
-6 (-0.36 % of base) : 108885.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
-2 (-0.26 % of base) : 18274.dasm - System.IO.BinaryReader:Read():int:this (FullOpts)
9 total methods with Code Size differences (8 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: 49882798 (overridden on cmd)
Total bytes of diff: 49881728 (overridden on cmd)
Total bytes of delta: -1070 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
10 : 176397.dasm (2.92 % of base)
4 : 189564.dasm (0.21 % of base)
2 : 220344.dasm (0.18 % of base)
2 : 68009.dasm (0.23 % of base)
2 : 88.dasm (0.21 % of base)
Top file improvements (bytes):
-30 : 272542.dasm (-2.03 % of base)
-28 : 245942.dasm (-0.98 % of base)
-24 : 98558.dasm (-1.08 % of base)
-22 : 191628.dasm (-0.66 % of base)
-22 : 252989.dasm (-0.93 % of base)
-20 : 227741.dasm (-0.76 % of base)
-20 : 256732.dasm (-0.79 % of base)
-18 : 27387.dasm (-0.21 % of base)
-18 : 184752.dasm (-1.05 % of base)
-18 : 239795.dasm (-1.05 % of base)
-16 : 270576.dasm (-1.24 % of base)
-16 : 71179.dasm (-0.77 % of base)
-14 : 196263.dasm (-0.24 % of base)
-14 : 251961.dasm (-0.69 % of base)
-14 : 254151.dasm (-1.35 % of base)
-14 : 191666.dasm (-1.08 % of base)
-14 : 255899.dasm (-1.89 % of base)
-14 : 272209.dasm (-0.67 % of base)
-14 : 174334.dasm (-1.06 % of base)
-14 : 252017.dasm (-1.41 % of base)
61 total files with Code Size differences (56 improved, 5 regressed), 3 unchanged.
Top method regressions (bytes):
10 (2.92 % of base) : 176397.dasm - System.Collections.Generic.SortedSet`1[ubyte]:IntersectWithEnumerable(System.Collections.Generic.IEnumerable`1[ubyte]):this (FullOpts)
4 (0.21 % of base) : 189564.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
2 (0.23 % of base) : 68009.dasm - ILCompiler.PEWriter.SectionBuilder:RelocateOutputFile(System.Reflection.Metadata.BlobBuilder,ulong,System.IO.Stream):this (FullOpts)
2 (0.18 % of base) : 220344.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
2 (0.21 % of base) : 88.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
Top method improvements (bytes):
-30 (-2.03 % of base) : 272542.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
-28 (-0.98 % of base) : 245942.dasm - System.Data.DataTable:ReadXmlSchema(System.Xml.XmlReader,ubyte):this (FullOpts)
-24 (-1.08 % of base) : 98558.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.StackScheduler:FilterValidStackLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.CodeGen.StackScheduler+LocalDefUseInfo]):System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.CodeGen.StackScheduler+LocalDefUseInfo] (FullOpts)
-22 (-0.93 % of base) : 252989.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
-22 (-0.66 % of base) : 191628.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
-20 (-0.79 % of base) : 256732.dasm - Microsoft.Build.BackEnd.TaskBuilder+<ExecuteBucket>d__19:MoveNext():this (FullOpts)
-20 (-0.76 % of base) : 227741.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
-18 (-1.05 % of base) : 184752.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
-18 (-1.05 % of base) : 239795.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
-18 (-0.21 % of base) : 27387.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
-16 (-0.77 % of base) : 71179.dasm - Microsoft.Diagnostics.Tracing.ZippedETLWriter:WriteArchive(int):ubyte:this (FullOpts)
-16 (-1.24 % of base) : 270576.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (FullOpts)
-14 (-1.35 % of base) : 254151.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
-14 (-1.89 % of base) : 255899.dasm - Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:AddProject(Microsoft.Build.Evaluation.Project):this (FullOpts)
-14 (-0.69 % of base) : 251961.dasm - Microsoft.Build.Execution.BuildManager:EndBuild():this (FullOpts)
-14 (-1.41 % of base) : 252017.dasm - Microsoft.Build.Execution.BuildManager:OnThreadException(System.Exception):this (FullOpts)
-14 (-0.24 % of base) : 196263.dasm - Microsoft.CodeAnalysis.CommonCompiler:CompileAndEmit(Microsoft.CodeAnalysis.TouchedFileLogger,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText],Microsoft.CodeAnalysis.AnalyzerConfigSet,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.EmbeddedText],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.ErrorLogger,System.Threading.CancellationToken,byref,byref,byref):this (FullOpts)
-14 (-1.19 % of base) : 272541.dasm - System.Composition.Convention.PartConventionBuilder:BuildOnImportsSatisfiedNotification(System.Type,byref):this (FullOpts)
-14 (-1.06 % of base) : 174334.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateIPAddresses>d__8:MoveNext():ubyte:this (FullOpts)
-14 (-0.67 % of base) : 272209.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)
Top method regressions (percentages):
10 (2.92 % of base) : 176397.dasm - System.Collections.Generic.SortedSet`1[ubyte]:IntersectWithEnumerable(System.Collections.Generic.IEnumerable`1[ubyte]):this (FullOpts)
2 (0.23 % of base) : 68009.dasm - ILCompiler.PEWriter.SectionBuilder:RelocateOutputFile(System.Reflection.Metadata.BlobBuilder,ulong,System.IO.Stream):this (FullOpts)
2 (0.21 % of base) : 88.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
4 (0.21 % of base) : 189564.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
2 (0.18 % of base) : 220344.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
Top method improvements (percentages):
-4 (-4.26 % of base) : 237348.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
-10 (-3.62 % of base) : 166607.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
-6 (-2.97 % of base) : 272709.dasm - Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts)
-8 (-2.76 % of base) : 255898.dasm - Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this (FullOpts)
-6 (-2.46 % of base) : 235971.dasm - System.IO.Packaging.PackagePart:Close():this (FullOpts)
-12 (-2.43 % of base) : 229626.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[ubyte]:ReserveOneMessage():ubyte:this (FullOpts)
-8 (-2.26 % of base) : 230508.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
-8 (-2.22 % of base) : 254146.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_RegisteredLoggerTypeNames():System.Collections.Generic.ICollection`1[System.String]:this (FullOpts)
-6 (-2.17 % of base) : 251116.dasm - Microsoft.Build.Evaluation.ProjectCollection:RemoveGlobalProperty(System.String):ubyte:this (FullOpts)
-12 (-2.17 % of base) : 224974.dasm - Microsoft.Build.Framework.NativeMethods:KillTree(int) (FullOpts)
-6 (-2.11 % of base) : 166606.dasm - Xunit.AggregateMessageSink:Dispose():this (FullOpts)
-30 (-2.03 % of base) : 272542.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
-6 (-2.03 % of base) : 251096.dasm - Microsoft.Build.Evaluation.ProjectCollection:RemoveAllToolsets():this (FullOpts)
-8 (-1.98 % of base) : 174793.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:X500DistinguishedNameEncode(System.String,int):ubyte[] (FullOpts)
-6 (-1.96 % of base) : 237359.dasm - System.Net.HttpEndPointListener:Close():this (FullOpts)
-8 (-1.92 % of base) : 155880.dasm - Newtonsoft.Json.Linq.JsonPath.ArrayMultipleIndexFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
-6 (-1.90 % of base) : 265690.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-14 (-1.89 % of base) : 255899.dasm - Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:AddProject(Microsoft.Build.Evaluation.Project):this (FullOpts)
-8 (-1.89 % of base) : 265784.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-1.87 % of base) : 267588.dasm - System.Security.Claims.ClaimsIdentity+<CombinedClaimsIterator>d__38:MoveNext():ubyte:this (FullOpts)
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: 17138332 (overridden on cmd)
Total bytes of diff: 17138248 (overridden on cmd)
Total bytes of delta: -84 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
2 : 568.dasm (0.21 % of base)
Top file improvements (bytes):
-26 : 24249.dasm (-0.79 % of base)
-10 : 23800.dasm (-3.62 % of base)
-8 : 5323.dasm (-0.88 % of base)
-8 : 681.dasm (-0.68 % of base)
-8 : 9482.dasm (-0.88 % of base)
-6 : 17791.dasm (-0.58 % of base)
-6 : 671.dasm (-0.47 % of base)
-6 : 1442.dasm (-0.62 % of base)
-6 : 6463.dasm (-0.58 % of base)
-2 : 5279.dasm (-0.18 % of base)
11 total files with Code Size differences (10 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
2 (0.21 % of base) : 568.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)
Top method improvements (bytes):
-26 (-0.79 % of base) : 24249.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (Tier0-FullOpts)
-10 (-3.62 % of base) : 23800.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier0-FullOpts)
-8 (-0.68 % of base) : 681.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
-8 (-0.88 % of base) : 5323.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
-8 (-0.88 % of base) : 9482.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
-6 (-0.62 % of base) : 1442.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier0-FullOpts)
-6 (-0.47 % of base) : 671.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
-6 (-0.58 % of base) : 17791.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
-6 (-0.58 % of base) : 6463.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
-2 (-0.18 % of base) : 5279.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
Top method regressions (percentages):
2 (0.21 % of base) : 568.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier0-FullOpts)
Top method improvements (percentages):
-10 (-3.62 % of base) : 23800.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier0-FullOpts)
-8 (-0.88 % of base) : 5323.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
-8 (-0.88 % of base) : 9482.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
-26 (-0.79 % of base) : 24249.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (Tier0-FullOpts)
-8 (-0.68 % of base) : 681.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
-6 (-0.62 % of base) : 1442.dasm - System.Diagnostics.ProcessWaitState:CheckChildren(ubyte,ubyte) (Tier0-FullOpts)
-6 (-0.58 % of base) : 17791.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
-6 (-0.58 % of base) : 6463.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
-6 (-0.47 % of base) : 671.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
-2 (-0.18 % of base) : 5279.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
11 total methods with Code Size differences (10 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: 93857406 (overridden on cmd)
Total bytes of diff: 93856520 (overridden on cmd)
Total bytes of delta: -886 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
10 : 209722.dasm (1.12 % of base)
8 : 130581.dasm (0.78 % of base)
8 : 83060.dasm (1.65 % of base)
6 : 130578.dasm (0.65 % of base)
4 : 208069.dasm (0.42 % of base)
4 : 58517.dasm (0.23 % of base)
4 : 208092.dasm (0.46 % of base)
4 : 208141.dasm (0.46 % of base)
4 : 208024.dasm (0.44 % of base)
4 : 208027.dasm (0.46 % of base)
4 : 231168.dasm (0.32 % of base)
2 : 196.dasm (0.21 % of base)
2 : 269936.dasm (0.21 % of base)
2 : 156911.dasm (0.12 % of base)
2 : 157496.dasm (0.12 % of base)
2 : 271127.dasm (0.18 % of base)
2 : 142758.dasm (0.14 % of base)
2 : 7784.dasm (0.18 % of base)
Top file improvements (bytes):
-22 : 304820.dasm (-0.79 % of base)
-22 : 122886.dasm (-1.00 % of base)
-22 : 846.dasm (-0.67 % of base)
-22 : 88456.dasm (-1.46 % of base)
-18 : 149923.dasm (-0.21 % of base)
-16 : 122523.dasm (-0.78 % of base)
-16 : 297614.dasm (-0.76 % of base)
-16 : 9365.dasm (-1.29 % of base)
-16 : 300294.dasm (-0.64 % of base)
-14 : 299525.dasm (-0.79 % of base)
-14 : 149875.dasm (-0.33 % of base)
-14 : 20609.dasm (-0.73 % of base)
-14 : 224430.dasm (-1.06 % of base)
-14 : 156089.dasm (-0.57 % of base)
-14 : 3897.dasm (-1.11 % of base)
-14 : 14651.dasm (-1.52 % of base)
-12 : 306653.dasm (-1.38 % of base)
-12 : 150969.dasm (-1.56 % of base)
-12 : 152157.dasm (-1.56 % of base)
-12 : 187418.dasm (-1.56 % of base)
59 total files with Code Size differences (41 improved, 18 regressed), 19 unchanged.
Top method regressions (bytes):
10 (1.12 % of base) : 209722.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
8 (1.65 % of base) : 83060.dasm - System.ComponentModel.Composition.ContractMismatchExceptionTests:Constructor3_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
8 (0.78 % of base) : 130581.dasm - System.IO.Tests.WriteTests:Write_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
6 (0.65 % of base) : 130578.dasm - System.IO.Tests.WriteTests:WriteLine_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
4 (0.23 % of base) : 58517.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
4 (0.46 % of base) : 208027.dasm - System.Tests.DecimalTests:BigInteger_Ceiling() (FullOpts)
4 (0.46 % of base) : 208092.dasm - System.Tests.DecimalTests:BigInteger_Floor() (FullOpts)
4 (0.42 % of base) : 208069.dasm - System.Tests.DecimalTests:BigInteger_Round() (FullOpts)
4 (0.46 % of base) : 208141.dasm - System.Tests.DecimalTests:BigInteger_RoundAwayFromZero() (FullOpts)
4 (0.44 % of base) : 208024.dasm - System.Tests.DecimalTests:BigInteger_Truncate() (FullOpts)
4 (0.32 % of base) : 231168.dasm - System.Text.Tests.EncodingTest+<>c:<TestGetEncodingsWithProvider>b__19_0():this (FullOpts)
2 (0.14 % of base) : 142758.dasm - System.Buffers.Text.Tests.Base64DecoderUnitTests:BasicDecodingInvalidInputLength():this (FullOpts)
2 (0.12 % of base) : 156911.dasm - System.Security.Cryptography.X509Certificates.Tests.Common.CertificateAuthority:CheckRevocation(System.ReadOnlyMemory`1[ubyte],byref):int:this (FullOpts)
2 (0.12 % of base) : 157496.dasm - System.Security.Cryptography.X509Certificates.Tests.Common.CertificateAuthority:CheckRevocation(System.ReadOnlyMemory`1[ubyte],byref):int:this (FullOpts)
2 (0.18 % of base) : 271127.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
2 (0.18 % of base) : 7784.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
2 (0.21 % of base) : 196.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
2 (0.21 % of base) : 269936.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
Top method improvements (bytes):
-22 (-1.00 % of base) : 122886.dasm - System.AssertExtensions:SequenceEqual[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]) (FullOpts)
-22 (-1.46 % of base) : 88456.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
-22 (-0.79 % of base) : 304820.dasm - System.Threading.Tests.EtwTests+<>c:<WaitHandleWaitEventTest>b__1_0():this (FullOpts)
-22 (-0.67 % of base) : 846.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
-18 (-0.21 % of base) : 149923.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
-16 (-1.29 % of base) : 9365.dasm - Microsoft.DotNet.XUnitExtensions.XunitParallelTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (FullOpts)
-16 (-0.78 % of base) : 122523.dasm - System.IO.Compression.Tests.ZipFileTestBase+<CreateFromDir>d__25:MoveNext():this (FullOpts)
-16 (-0.76 % of base) : 297614.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[System.__Canon,int]:MoveNext():this (FullOpts)
-16 (-0.64 % of base) : 300294.dasm - System.Threading.Tasks.Dataflow.Tests.BatchBlockTests+<TestNonGreedyLostMessages>d__17:MoveNext():this (FullOpts)
-14 (-1.52 % of base) : 14651.dasm - Microsoft.CodeAnalysis.DocumentationCommentId+Parser:ParseTypeSymbol(System.String,byref,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ISymbol,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.ISymbol]) (FullOpts)
-14 (-0.73 % of base) : 20609.dasm - NuGet.Protocol.HttpSourceAuthenticationHandler+<SendAsync>d__9:MoveNext():this (FullOpts)
-14 (-0.57 % of base) : 156089.dasm - System.Net.Security.Kerberos.KerberosExecutor+<PrepareInvoke>d__21:MoveNext():this (FullOpts)
-14 (-0.33 % of base) : 149875.dasm - System.Net.WebSockets.WebSocketHandle+<ConnectAsync>d__22:MoveNext():this (FullOpts)
-14 (-1.06 % of base) : 224430.dasm - System.Security.Cryptography.X509Certificates.X509SubjectAlternativeNameExtension+<EnumerateIPAddresses>d__8:MoveNext():ubyte:this (FullOpts)
-14 (-0.79 % of base) : 299525.dasm - System.Threading.Tasks.Dataflow.Tests.SimpleNetworkTests+<BufferBlocksToBatchNonGreedyToAction>d__8:MoveNext():this (FullOpts)
-14 (-1.11 % of base) : 3897.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (FullOpts)
-12 (-1.38 % of base) : 306653.dasm - CoreXml.Test.XLinq.FunctionalTests.EventsTests.EventsRemove:XAttributeRemoveOneByOne():this (FullOpts)
-12 (-1.65 % of base) : 36283.dasm - LamarCodeGeneration.DependencyGatherer+<findDependencies>d__5:MoveNext():ubyte:this (FullOpts)
-12 (-1.56 % of base) : 150969.dasm - System.Diagnostics.Tracing.TestEventListener:AddSource(System.String,System.Nullable`1[System.Guid],int,long):this (FullOpts)
-12 (-1.56 % of base) : 152157.dasm - System.Diagnostics.Tracing.TestEventListener:AddSource(System.String,System.Nullable`1[System.Guid],int,long):this (FullOpts)
Top method regressions (percentages):
8 (1.65 % of base) : 83060.dasm - System.ComponentModel.Composition.ContractMismatchExceptionTests:Constructor3_ValueAsMessageArgument_ShouldSetMessageProperty():this (FullOpts)
10 (1.12 % of base) : 209722.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
8 (0.78 % of base) : 130581.dasm - System.IO.Tests.WriteTests:Write_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
6 (0.65 % of base) : 130578.dasm - System.IO.Tests.WriteTests:WriteLine_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
4 (0.46 % of base) : 208027.dasm - System.Tests.DecimalTests:BigInteger_Ceiling() (FullOpts)
4 (0.46 % of base) : 208092.dasm - System.Tests.DecimalTests:BigInteger_Floor() (FullOpts)
4 (0.46 % of base) : 208141.dasm - System.Tests.DecimalTests:BigInteger_RoundAwayFromZero() (FullOpts)
4 (0.44 % of base) : 208024.dasm - System.Tests.DecimalTests:BigInteger_Truncate() (FullOpts)
4 (0.42 % of base) : 208069.dasm - System.Tests.DecimalTests:BigInteger_Round() (FullOpts)
4 (0.32 % of base) : 231168.dasm - System.Text.Tests.EncodingTest+<>c:<TestGetEncodingsWithProvider>b__19_0():this (FullOpts)
4 (0.23 % of base) : 58517.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
2 (0.21 % of base) : 269936.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
2 (0.21 % of base) : 196.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
2 (0.18 % of base) : 271127.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
2 (0.18 % of base) : 7784.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
2 (0.14 % of base) : 142758.dasm - System.Buffers.Text.Tests.Base64DecoderUnitTests:BasicDecodingInvalidInputLength():this (FullOpts)
2 (0.12 % of base) : 156911.dasm - System.Security.Cryptography.X509Certificates.Tests.Common.CertificateAuthority:CheckRevocation(System.ReadOnlyMemory`1[ubyte],byref):int:this (FullOpts)
2 (0.12 % of base) : 157496.dasm - System.Security.Cryptography.X509Certificates.Tests.Common.CertificateAuthority:CheckRevocation(System.ReadOnlyMemory`1[ubyte],byref):int:this (FullOpts)
Top method improvements (percentages):
-4 (-4.26 % of base) : 149255.dasm - System.Net.HttpEndPointListener:Accept(System.Net.Sockets.SocketAsyncEventArgs):this (FullOpts)
-10 (-3.62 % of base) : 539.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
-6 (-2.97 % of base) : 33852.dasm - Microsoft.Extensions.Configuration.ConfigurationManager:Microsoft.Extensions.Configuration.IConfigurationRoot.Reload():this (FullOpts)
-6 (-2.46 % of base) : 127552.dasm - System.IO.Packaging.PackagePart:Close():this (FullOpts)
-12 (-2.43 % of base) : 299508.dasm - System.Threading.Tasks.Dataflow.Internal.JoinBlockTarget`1[int]:ReserveOneMessage():ubyte:this (FullOpts)
-8 (-2.26 % of base) : 37595.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
-8 (-1.98 % of base) : 153465.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:X500DistinguishedNameEncode(System.String,int):ubyte[] (FullOpts)
-6 (-1.96 % of base) : 149281.dasm - System.Net.HttpEndPointListener:Close():this (FullOpts)
-6 (-1.90 % of base) : 20614.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-6 (-1.90 % of base) : 147127.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-8 (-1.89 % of base) : 20687.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-1.89 % of base) : 147244.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-1.87 % of base) : 215093.dasm - System.Security.Claims.ClaimsIdentity+<CombinedClaimsIterator>d__38:MoveNext():ubyte:this (FullOpts)
-12 (-1.65 % of base) : 36283.dasm - LamarCodeGeneration.DependencyGatherer+<findDependencies>d__5:MoveNext():ubyte:this (FullOpts)
-8 (-1.63 % of base) : 223403.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_NonNullOrEmptyPassword_MemberData>d__19:MoveNext():ubyte:this (FullOpts)
-8 (-1.59 % of base) : 221787.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountNotExceedingDefaultLimit_AndNullOrEmptyPassword_MemberData>d__17:MoveNext():ubyte:this (FullOpts)
-12 (-1.56 % of base) : 150969.dasm - System.Diagnostics.Tracing.TestEventListener:AddSource(System.String,System.Nullable`1[System.Guid],int,long):this (FullOpts)
-12 (-1.56 % of base) : 152157.dasm - System.Diagnostics.Tracing.TestEventListener:AddSource(System.String,System.Nullable`1[System.Guid],int,long):this (FullOpts)
-12 (-1.56 % of base) : 187418.dasm - System.Diagnostics.Tracing.TestEventListener:AddSource(System.String,System.Nullable`1[System.Guid],int,long):this (FullOpts)
-12 (-1.56 % of base) : 301125.dasm - System.Diagnostics.Tracing.TestEventListener:AddSource(System.String,System.Nullable`1[System.Guid],int,long):this (FullOpts)
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: 13598268 (overridden on cmd)
Total bytes of diff: 13598140 (overridden on cmd)
Total bytes of delta: -128 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
14 : 6301.dasm (3.18 % of base)
4 : 16240.dasm (0.46 % of base)
2 : 36047.dasm (0.45 % of base)
2 : 23354.dasm (0.21 % of base)
2 : 34263.dasm (0.17 % of base)
Top file improvements (bytes):
-10 : 5975.dasm (-2.24 % of base)
-10 : 20191.dasm (-3.33 % of base)
-10 : 17035.dasm (-0.52 % of base)
-10 : 20764.dasm (-0.58 % of base)
-8 : 1458.dasm (-1.31 % of base)
-8 : 35980.dasm (-0.58 % of base)
-8 : 69.dasm (-0.93 % of base)
-6 : 35955.dasm (-1.78 % of base)
-6 : 37807.dasm (-1.02 % of base)
-6 : 20415.dasm (-1.54 % of base)
-6 : 35317.dasm (-1.03 % of base)
-6 : 35442.dasm (-1.82 % of base)
-6 : 37805.dasm (-0.68 % of base)
-6 : 37826.dasm (-1.02 % of base)
-6 : 18176.dasm (-1.01 % of base)
-6 : 35359.dasm (-1.60 % of base)
-6 : 36019.dasm (-0.34 % of base)
-6 : 36187.dasm (-0.57 % of base)
-6 : 36235.dasm (-1.36 % of base)
-4 : 17533.dasm (-0.10 % of base)
29 total files with Code Size differences (24 improved, 5 regressed), 2 unchanged.
Top method regressions (bytes):
14 (3.18 % of base) : 6301.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (0.46 % of base) : 16240.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
2 (0.45 % of base) : 36047.dasm - System.Management.Automation.Internal.PipelineProcessor:Clean():this (FullOpts)
2 (0.17 % of base) : 34263.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
2 (0.21 % of base) : 23354.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
Top method improvements (bytes):
-10 (-0.58 % of base) : 20764.dasm - Microsoft.CodeAnalysis.RuleSetProcessor:ReadRuleSet(System.Xml.Linq.XElement,System.String):Microsoft.CodeAnalysis.RuleSet (FullOpts)
-10 (-0.52 % of base) : 17035.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadBigValues(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
-10 (-3.33 % of base) : 20191.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-10 (-2.24 % of base) : 5975.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
-8 (-0.58 % of base) : 35980.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
-8 (-1.31 % of base) : 1458.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
-8 (-0.93 % of base) : 69.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-6 (-1.54 % of base) : 20415.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
-6 (-1.36 % of base) : 36235.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFormatDataHelper(System.Management.Automation.ExtendedTypeDefinition,Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Collections.Generic.List`1[Microsoft.PowerShell.Commands.Internal.Format.XmlLoaderLoggerEntry],byref,System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors,Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase,ubyte,ubyte) (FullOpts)
-6 (-0.57 % of base) : 36187.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFromFileHelper(System.Collections.ObjectModel.Collection`1[System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors],Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost,ubyte,byref,byref):Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase (FullOpts)
-6 (-1.82 % of base) : 35442.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)
-6 (-1.78 % of base) : 35955.dasm - System.Management.Automation.CommandProcessor:DoBegin():this (FullOpts)
-6 (-0.34 % of base) : 36019.dasm - System.Management.Automation.Internal.ModuleUtils+<GetDefaultAvailableModuleFiles>d__9:MoveNext():ubyte:this (FullOpts)
-6 (-1.03 % of base) : 35317.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
-6 (-1.60 % of base) : 35359.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
-6 (-1.02 % of base) : 37826.dasm - System.Management.Automation.PSObject:GetMappedAdapter(System.Object,System.Management.Automation.Runspaces.TypeTable):System.Management.Automation.PSObject+AdapterSet (FullOpts)
-6 (-1.02 % of base) : 37807.dasm - System.Management.Automation.Runspaces.LocalRunspace:CloseOrDisconnectAllRemoteRunspaces(System.Func`1[System.Collections.Generic.List`1[System.Management.Automation.RemoteRunspace]]) (FullOpts)
-6 (-0.68 % of base) : 37805.dasm - System.Management.Automation.Runspaces.LocalRunspace:StopOrDisconnectAllJobs():this (FullOpts)
-6 (-1.01 % of base) : 18176.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
-4 (-0.10 % of base) : 17533.dasm - Microsoft.ML.Data.TextLoader+Bindings:.ctor(Microsoft.ML.Data.TextLoader,Microsoft.ML.Data.TextLoader+Column[],Microsoft.ML.Data.IMultiStreamSource,Microsoft.ML.Data.IMultiStreamSource):this (FullOpts)
Top method regressions (percentages):
14 (3.18 % of base) : 6301.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
4 (0.46 % of base) : 16240.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
2 (0.45 % of base) : 36047.dasm - System.Management.Automation.Internal.PipelineProcessor:Clean():this (FullOpts)
2 (0.21 % of base) : 23354.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
2 (0.17 % of base) : 34263.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts)
Top method improvements (percentages):
-10 (-3.33 % of base) : 20191.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-10 (-2.24 % of base) : 5975.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
-6 (-1.82 % of base) : 35442.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)
-6 (-1.78 % of base) : 35955.dasm - System.Management.Automation.CommandProcessor:DoBegin():this (FullOpts)
-6 (-1.60 % of base) : 35359.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
-6 (-1.54 % of base) : 20415.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
-6 (-1.36 % of base) : 36235.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFormatDataHelper(System.Management.Automation.ExtendedTypeDefinition,Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Collections.Generic.List`1[Microsoft.PowerShell.Commands.Internal.Format.XmlLoaderLoggerEntry],byref,System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors,Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase,ubyte,ubyte) (FullOpts)
-8 (-1.31 % of base) : 1458.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
-6 (-1.03 % of base) : 35317.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
-6 (-1.02 % of base) : 37826.dasm - System.Management.Automation.PSObject:GetMappedAdapter(System.Object,System.Management.Automation.Runspaces.TypeTable):System.Management.Automation.PSObject+AdapterSet (FullOpts)
-6 (-1.02 % of base) : 37807.dasm - System.Management.Automation.Runspaces.LocalRunspace:CloseOrDisconnectAllRemoteRunspaces(System.Func`1[System.Collections.Generic.List`1[System.Management.Automation.RemoteRunspace]]) (FullOpts)
-6 (-1.01 % of base) : 18176.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
-8 (-0.93 % of base) : 69.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-6 (-0.68 % of base) : 37805.dasm - System.Management.Automation.Runspaces.LocalRunspace:StopOrDisconnectAllJobs():this (FullOpts)
-4 (-0.63 % of base) : 35786.dasm - System.Management.Automation.Internal.PipelineProcessor:SynchronousExecuteEnumerate(System.Object):System.Array:this (FullOpts)
-8 (-0.58 % of base) : 35980.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
-10 (-0.58 % of base) : 20764.dasm - Microsoft.CodeAnalysis.RuleSetProcessor:ReadRuleSet(System.Xml.Linq.XElement,System.String):Microsoft.CodeAnalysis.RuleSet (FullOpts)
-6 (-0.57 % of base) : 36187.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:LoadFromFileHelper(System.Collections.ObjectModel.Collection`1[System.Management.Automation.Runspaces.PSSnapInTypeAndFormatErrors],Microsoft.PowerShell.Commands.Internal.Format.PSPropertyExpressionFactory,System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost,ubyte,byref,byref):Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBase (FullOpts)
-10 (-0.52 % of base) : 17035.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadBigValues(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
-6 (-0.34 % of base) : 36019.dasm - System.Management.Automation.Internal.ModuleUtils+<GetDefaultAvailableModuleFiles>d__9:MoveNext():ubyte:this (FullOpts)
29 total methods with Code Size differences (24 improved, 5 regressed).
Diffs are based on 1,625,054 contexts (327,626 MinOpts, 1,297,428 FullOpts).
MISSED contexts: base: 4,647 (0.29%), diff: 4,685 (0.29%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.windows.x86.checked.mch | 11,308,587 | -228 |
benchmarks.run_pgo.windows.x86.checked.mch | 33,240,977 | -110 |
benchmarks.run_tiered.windows.x86.checked.mch | 14,131,622 | -220 |
coreclr_tests.run.windows.x86.checked.mch | 215,366,523 | +206 |
libraries.crossgen2.windows.x86.checked.mch | 36,012,344 | -91 |
libraries.pmi.windows.x86.checked.mch | 51,340,369 | -1,121 |
libraries_tests.run.windows.x86.Release.mch | 14,894,587 | -72 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 109,493,031 | -679 |
realworld.run.windows.x86.checked.mch | 11,827,284 | -65 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.windows.x86.checked.mch | 11,308,109 | -228 |
benchmarks.run_pgo.windows.x86.checked.mch | 27,119,029 | -110 |
benchmarks.run_tiered.windows.x86.checked.mch | 7,276,985 | -220 |
coreclr_tests.run.windows.x86.checked.mch | 93,105,499 | +206 |
libraries.crossgen2.windows.x86.checked.mch | 36,011,284 | -91 |
libraries.pmi.windows.x86.checked.mch | 51,245,136 | -1,121 |
libraries_tests.run.windows.x86.Release.mch | 9,404,392 | -72 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 100,540,258 | -679 |
realworld.run.windows.x86.checked.mch | 11,531,570 | -65 |
@@ -10,30 +10,31 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor>
; V01 arg1 [V01,T03] ( 8, 13.50) ref -> esi class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>-; V02 loc0 [V02,T15] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>+; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op-; V04 loc2 [V04,T12] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>+; V04 loc2 [V04,T13] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
-; V08 tmp0 [V08,T11] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1"+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
+; V08 tmp0 [V08,T12] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>-;* V11 tmp3 [V11,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V11 tmp3 [V11,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V13 tmp5 [V13,T08] ( 2, 4.50) ref -> edi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
; V14 tmp6 [V14,T02] ( 4, 12.50) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V15 tmp7 [V15,T04] ( 2, 8 ) ref -> edx "field V05._current (fldOffset=0x4)" P-INDEP
; V16 tmp8 [V16,T00] ( 6, 20.50) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP-; V17 tmp9 [V17,T06] ( 3, 8.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
-; V18 tmp10 [V18,T13] ( 3, 1.50) ref -> ebx single-def "field V10._list (fldOffset=0x0)" P-INDEP+; V17 tmp9 [V17,T09] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V18 tmp10 [V18,T14] ( 3, 1.50) ref -> ebx single-def "field V10._list (fldOffset=0x0)" P-INDEP ;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x4)" P-INDEP-;* V20 tmp12 [V20,T16] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
-; V21 tmp13 [V21,T14] ( 2, 1 ) int -> eax "field V10._version (fldOffset=0xc)" P-INDEP+;* V20 tmp12 [V20,T17] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
+; V21 tmp13 [V21,T15] ( 2, 1 ) int -> eax "field V10._version (fldOffset=0xc)" P-INDEP ; V22 tmp14 [V22,T01] ( 3, 24 ) ref -> edx "arr expr"
; V23 EHSlots [V23 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V24 cse0 [V24,T05] ( 3, 12 ) int -> edx "CSE - aggressive"
-; V25 cse1 [V25,T09] ( 4, 3 ) ref -> ebx "CSE - moderate"+; V24 cse0 [V24,T07] ( 2, 8 ) int -> edx "CSE - aggressive"
+; V25 cse1 [V25,T05] ( 2, 8 ) int -> edx "CSE - aggressive"
+; V26 cse2 [V26,T10] ( 4, 3 ) ref -> ebx "CSE - moderate" ;
; Lcl frame size = 36
@@ -57,7 +58,7 @@ G_M53769_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
xor edx, edx
mov dword ptr [ebp-0x24], edx
;; size=8 bbWeight=1 PerfScore 2.25-G_M53769_IG03: ; bbWeight=1, gcVars=00008000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne SHORT G_M53769_IG06
lea edx, [ebp-0x24]
@@ -70,8 +71,8 @@ G_M53769_IG03: ; bbWeight=1, gcVars=00008000 {V02}, gcrefRegs=000000C0 {e
mov ebx, gword ptr [esi+0x04]
; gcrRegs +[ebx]
test ebx, ebx- je G_M53769_IG12
- ;; size=37 bbWeight=1 PerfScore 12.00+ je SHORT G_M53769_IG11
+ ;; size=33 bbWeight=1 PerfScore 12.00 G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, ebx
; gcrRegs +[edx]
@@ -79,7 +80,7 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax- je SHORT G_M53769_IG11+ je SHORT G_M53769_IG10 mov ebx, eax
mov eax, dword ptr [ebx+0x0C]
; gcrRegs -[eax]
@@ -89,13 +90,14 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
G_M53769_IG05: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebx+0x0C]
cmp eax, edx- jne SHORT G_M53769_IG07
- cmp ecx, dword ptr [ebx+0x08]
- jae SHORT G_M53769_IG08+ jne SHORT G_M53769_IG09
+ mov edx, dword ptr [ebx+0x08]
+ cmp ecx, edx
+ jae SHORT G_M53769_IG07 mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae SHORT G_M53769_IG09+ jae SHORT G_M53769_IG08 mov edx, gword ptr [edx+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x28], ecx
@@ -107,7 +109,7 @@ G_M53769_IG05: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
mov eax, dword ptr [ebp-0x2C]
mov ecx, dword ptr [ebp-0x28]
jmp SHORT G_M53769_IG05- ;; size=45 bbWeight=4 PerfScore 99.00+ ;; size=47 bbWeight=4 PerfScore 96.00 G_M53769_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi edi]
call [System.Threading.Monitor:ThrowLockTakenException()]
@@ -115,24 +117,20 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=7 bbWeight=0 PerfScore 0.00
G_M53769_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]- cmp dword ptr [ebp-0x2C], edx
- jne SHORT G_M53769_IG10
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M53769_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz xor ecx, ecx
; gcrRegs +[ecx]
mov gword ptr [esi+0x04], ecx- jmp SHORT G_M53769_IG12+ jmp SHORT G_M53769_IG11 ;; size=7 bbWeight=4 PerfScore 13.00-G_M53769_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx esi]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00-G_M53769_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ebx esi edi]
mov edx, ebx
; gcrRegs +[edx]
@@ -144,36 +142,36 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
mov ecx, esi
call [System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)]
; gcrRegs -[ecx edx ebx edi]- jmp SHORT G_M53769_IG08+ jmp SHORT G_M53769_IG07 ;; size=24 bbWeight=0.50 PerfScore 5.00-G_M53769_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi]
cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG16+ je SHORT G_M53769_IG15 ;; size=6 bbWeight=1 PerfScore 3.00-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
; GC ptr vars -{V02}
call <unknown method>
; gcrRegs -[ecx]- jmp SHORT G_M53769_IG16+ jmp SHORT G_M53769_IG15 ;; size=10 bbWeight=0.50 PerfScore 2.00-G_M53769_IG14: ; bbWeight=0, gcVars=00008000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V02 V15}+G_M53769_IG13: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V02 V16} cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG15+ je SHORT G_M53769_IG14 mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]- ; GC ptr vars -{V02 V15}+ ; GC ptr vars -{V02 V16} call <unknown method>
; gcrRegs -[ecx]
;; size=14 bbWeight=0 PerfScore 0.00-G_M53769_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M53769_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M53769_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -182,9 +180,9 @@ G_M53769_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 233, prolog size 14, PerfScore 162.88, instruction count 84, allocated bytes for code 233 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)+; Total bytes of code 226, prolog size 14, PerfScore 147.88, instruction count 83, allocated bytes for code 226 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts) ; ============================================================
*************** EH table for System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo)
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M53769_IG03..G_M53769_IG12) handled by [G_M53769_IG14..G_M53769_IG16) (fault)+EH#0: try [G_M53769_IG03..G_M53769_IG11) handled by [G_M53769_IG13..G_M53769_IG15) (fault)
@@ -10,30 +10,31 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor>
; V01 arg1 [V01,T03] ( 8, 13.50) ref -> esi class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>-; V02 loc0 [V02,T15] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>+; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op-; V04 loc2 [V04,T12] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>+; V04 loc2 [V04,T13] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
-; V08 tmp0 [V08,T11] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1"+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
+; V08 tmp0 [V08,T12] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>-;* V11 tmp3 [V11,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V11 tmp3 [V11,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V13 tmp5 [V13,T08] ( 2, 4.50) ref -> edi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
; V14 tmp6 [V14,T02] ( 4, 12.50) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V15 tmp7 [V15,T04] ( 2, 8 ) ref -> edx "field V05._current (fldOffset=0x4)" P-INDEP
; V16 tmp8 [V16,T00] ( 6, 20.50) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP-; V17 tmp9 [V17,T06] ( 3, 8.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
-; V18 tmp10 [V18,T13] ( 3, 1.50) ref -> ebx single-def "field V10._list (fldOffset=0x0)" P-INDEP+; V17 tmp9 [V17,T09] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V18 tmp10 [V18,T14] ( 3, 1.50) ref -> ebx single-def "field V10._list (fldOffset=0x0)" P-INDEP ;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x4)" P-INDEP-;* V20 tmp12 [V20,T16] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
-; V21 tmp13 [V21,T14] ( 2, 1 ) int -> eax "field V10._version (fldOffset=0xc)" P-INDEP+;* V20 tmp12 [V20,T17] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
+; V21 tmp13 [V21,T15] ( 2, 1 ) int -> eax "field V10._version (fldOffset=0xc)" P-INDEP ; V22 tmp14 [V22,T01] ( 3, 24 ) ref -> edx "arr expr"
; V23 EHSlots [V23 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V24 cse0 [V24,T05] ( 3, 12 ) int -> edx "CSE - aggressive"
-; V25 cse1 [V25,T09] ( 4, 3 ) ref -> ebx "CSE - moderate"+; V24 cse0 [V24,T07] ( 2, 8 ) int -> edx "CSE - aggressive"
+; V25 cse1 [V25,T05] ( 2, 8 ) int -> edx "CSE - aggressive"
+; V26 cse2 [V26,T10] ( 4, 3 ) ref -> ebx "CSE - moderate" ;
; Lcl frame size = 36
@@ -57,7 +58,7 @@ G_M53769_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
xor edx, edx
mov dword ptr [ebp-0x24], edx
;; size=8 bbWeight=1 PerfScore 2.25-G_M53769_IG03: ; bbWeight=1, gcVars=00008000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne SHORT G_M53769_IG06
lea edx, [ebp-0x24]
@@ -70,8 +71,8 @@ G_M53769_IG03: ; bbWeight=1, gcVars=00008000 {V02}, gcrefRegs=000000C0 {e
mov ebx, gword ptr [esi+0x04]
; gcrRegs +[ebx]
test ebx, ebx- je G_M53769_IG12
- ;; size=37 bbWeight=1 PerfScore 12.00+ je SHORT G_M53769_IG11
+ ;; size=33 bbWeight=1 PerfScore 12.00 G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, ebx
; gcrRegs +[edx]
@@ -79,7 +80,7 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax- je SHORT G_M53769_IG11+ je SHORT G_M53769_IG10 mov ebx, eax
mov eax, dword ptr [ebx+0x0C]
; gcrRegs -[eax]
@@ -89,13 +90,14 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
G_M53769_IG05: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebx+0x0C]
cmp eax, edx- jne SHORT G_M53769_IG07
- cmp ecx, dword ptr [ebx+0x08]
- jae SHORT G_M53769_IG08+ jne SHORT G_M53769_IG09
+ mov edx, dword ptr [ebx+0x08]
+ cmp ecx, edx
+ jae SHORT G_M53769_IG07 mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae SHORT G_M53769_IG09+ jae SHORT G_M53769_IG08 mov edx, gword ptr [edx+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x28], ecx
@@ -107,7 +109,7 @@ G_M53769_IG05: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
mov eax, dword ptr [ebp-0x2C]
mov ecx, dword ptr [ebp-0x28]
jmp SHORT G_M53769_IG05- ;; size=45 bbWeight=4 PerfScore 99.00+ ;; size=47 bbWeight=4 PerfScore 96.00 G_M53769_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi edi]
call [System.Threading.Monitor:ThrowLockTakenException()]
@@ -115,24 +117,20 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=7 bbWeight=0 PerfScore 0.00
G_M53769_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]- cmp dword ptr [ebp-0x2C], edx
- jne SHORT G_M53769_IG10
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M53769_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz xor ecx, ecx
; gcrRegs +[ecx]
mov gword ptr [esi+0x04], ecx- jmp SHORT G_M53769_IG12+ jmp SHORT G_M53769_IG11 ;; size=7 bbWeight=4 PerfScore 13.00-G_M53769_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx esi]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00-G_M53769_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ebx esi edi]
mov edx, ebx
; gcrRegs +[edx]
@@ -144,36 +142,36 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
mov ecx, esi
call [System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)]
; gcrRegs -[ecx edx ebx edi]- jmp SHORT G_M53769_IG08+ jmp SHORT G_M53769_IG07 ;; size=24 bbWeight=0.50 PerfScore 5.00-G_M53769_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi]
cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG16+ je SHORT G_M53769_IG15 ;; size=6 bbWeight=1 PerfScore 3.00-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
; GC ptr vars -{V02}
call <unknown method>
; gcrRegs -[ecx]- jmp SHORT G_M53769_IG16+ jmp SHORT G_M53769_IG15 ;; size=10 bbWeight=0.50 PerfScore 2.00-G_M53769_IG14: ; bbWeight=0, gcVars=00008000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V02 V15}+G_M53769_IG13: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V02 V16} cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG15+ je SHORT G_M53769_IG14 mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]- ; GC ptr vars -{V02 V15}+ ; GC ptr vars -{V02 V16} call <unknown method>
; gcrRegs -[ecx]
;; size=14 bbWeight=0 PerfScore 0.00-G_M53769_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M53769_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M53769_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -182,9 +180,9 @@ G_M53769_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 233, prolog size 14, PerfScore 162.88, instruction count 84, allocated bytes for code 233 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)+; Total bytes of code 226, prolog size 14, PerfScore 147.88, instruction count 83, allocated bytes for code 226 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts) ; ============================================================
*************** EH table for System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo)
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M53769_IG03..G_M53769_IG12) handled by [G_M53769_IG14..G_M53769_IG16) (fault)+EH#0: try [G_M53769_IG03..G_M53769_IG11) handled by [G_M53769_IG13..G_M53769_IG15) (fault)
@@ -10,8 +10,8 @@
;
; V00 this [V00,T09] ( 3, 4 ) ref -> edi this class-hnd single-def <System.Threading.Tasks.Task>
; V01 arg1 [V01,T08] ( 5, 4.50) ref -> esi class-hnd single-def <System.Threading.Tasks.Task+ContingentProperties>-; V02 loc0 [V02,T11] ( 5, 3.50) ref -> ebx class-hnd single-def <<unknown class>>
-; V03 loc1 [V03,T14] ( 3, 0.50) ref -> [ebp-0x30] class-hnd EH-live spill-single-def <<unknown class>>+; V02 loc0 [V02,T12] ( 5, 3.50) ref -> ebx class-hnd single-def <<unknown class>>
+; V03 loc1 [V03,T15] ( 3, 0.50) ref -> [ebp-0x30] class-hnd EH-live spill-single-def <<unknown class>> ; V04 loc2 [V04 ] ( 6, 2.50) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>
@@ -23,19 +23,20 @@
; V12 tmp4 [V12,T04] ( 3, 12 ) ref -> [ebp-0x38] class-hnd spill-single-def "Inlining Arg" <System.AggregateException>
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-;* V15 tmp7 [V15,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V15 tmp7 [V15,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V16 tmp8 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V17 tmp9 [V17,T03] ( 4, 12.50) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V18 tmp10 [V18,T02] ( 5, 14 ) ref -> [ebp-0x3C] "field V05._current (fldOffset=0x4)" P-INDEP
; V19 tmp11 [V19,T00] ( 6, 20.50) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP-; V20 tmp12 [V20,T06] ( 3, 8.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
-; V21 tmp13 [V21,T12] ( 3, 1.50) ref -> ebx single-def "field V08._list (fldOffset=0x0)" P-INDEP+; V20 tmp12 [V20,T11] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V21 tmp13 [V21,T13] ( 3, 1.50) ref -> ebx single-def "field V08._list (fldOffset=0x0)" P-INDEP ;* V22 tmp14 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._current (fldOffset=0x4)" P-INDEP-;* V23 tmp15 [V23,T15] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
-; V24 tmp16 [V24,T13] ( 2, 1 ) int -> eax "field V08._version (fldOffset=0xc)" P-INDEP+;* V23 tmp15 [V23,T16] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
+; V24 tmp16 [V24,T14] ( 2, 1 ) int -> eax "field V08._version (fldOffset=0xc)" P-INDEP ; V25 tmp17 [V25,T01] ( 3, 24 ) ref -> edx "arr expr"
; V26 EHSlots [V26 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V27 cse0 [V27,T05] ( 3, 12 ) int -> edx "CSE - moderate"+; V27 cse0 [V27,T07] ( 2, 8 ) int -> edx "CSE - moderate"
+; V28 cse1 [V28,T05] ( 2, 8 ) int -> edx "CSE - moderate" ;
; Lcl frame size = 48
@@ -61,7 +62,7 @@ G_M37406_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov ebx, gword ptr [esi+0x14]
; gcrRegs +[ebx]
test ebx, ebx- je G_M37406_IG18+ je G_M37406_IG17 ;; size=24 bbWeight=1 PerfScore 7.75
G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov gword ptr [ebp-0x30], ebx
@@ -69,7 +70,7 @@ G_M37406_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
xor edx, edx
mov dword ptr [ebp-0x24], edx
;; size=8 bbWeight=0.50 PerfScore 1.12-G_M37406_IG04: ; bbWeight=0.50, gcVars=00004000 {V03}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref+G_M37406_IG04: ; bbWeight=0.50, gcVars=00008000 {V03}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref cmp byte ptr [ebp-0x24], 0
jne G_M37406_IG10
lea edx, [ebp-0x24]
@@ -86,13 +87,14 @@ G_M37406_IG04: ; bbWeight=0.50, gcVars=00004000 {V03}, gcrefRegs=000000C8
G_M37406_IG05: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebx+0x0C]
cmp eax, edx- jne G_M37406_IG11
- cmp ecx, dword ptr [ebx+0x08]
- jae G_M37406_IG14+ jne G_M37406_IG12
+ mov edx, dword ptr [ebx+0x08]
+ cmp ecx, edx
+ jae G_M37406_IG13 mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae G_M37406_IG12+ jae G_M37406_IG11 mov edx, gword ptr [edx+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x28], ecx
@@ -100,8 +102,8 @@ G_M37406_IG05: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
; GC ptr vars +{V18}
test dword ptr [edx+0x1C], 0xD1FFAB1E
jne SHORT G_M37406_IG07- ;; size=52 bbWeight=4 PerfScore 86.00
-G_M37406_IG06: ; bbWeight=2, gcVars=00004004 {V03 V18}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref+ ;; size=54 bbWeight=4 PerfScore 83.00
+G_M37406_IG06: ; bbWeight=2, gcVars=00008004 {V03 V18}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[edx]
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
@@ -166,65 +168,58 @@ G_M37406_IG08: ; bbWeight=2, gcrefRegs=000000C9 {eax ebx esi edi}, byrefR
mov ecx, dword ptr [ebp-0x28]
jmp G_M37406_IG05
;; size=23 bbWeight=2 PerfScore 17.00-G_M37406_IG09: ; bbWeight=1, gcVars=00004010 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M37406_IG09: ; bbWeight=1, gcVars=00008010 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; GC ptr vars +{V12}
mov eax, gword ptr [ebp-0x38]
; gcrRegs +[eax]
jmp SHORT G_M37406_IG08
;; size=5 bbWeight=1 PerfScore 3.00-G_M37406_IG10: ; bbWeight=0, gcVars=00004000 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+G_M37406_IG10: ; bbWeight=0, gcVars=00008000 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax ebx esi edi]
; GC ptr vars -{V12}
call [System.Threading.Monitor:ThrowLockTakenException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M37406_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi]
- cmp dword ptr [ebp-0x2C], edx
- jne SHORT G_M37406_IG13
- jmp SHORT G_M37406_IG14
- ;; size=7 bbWeight=4 PerfScore 20.00
-G_M37406_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]+G_M37406_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00-G_M37406_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M37406_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M37406_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz+G_M37406_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi]
cmp byte ptr [ebp-0x24], 0- je SHORT G_M37406_IG17
- mov ecx, gword ptr [ebp-0x30]
- ; gcrRegs +[ecx]
- ; GC ptr vars -{V03}
- call <unknown method>
- ; gcrRegs -[ecx]
- jmp SHORT G_M37406_IG17
- ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M37406_IG15: ; bbWeight=0, gcVars=00004000 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[esi]
- ; GC ptr vars +{V03}
- cmp byte ptr [ebp-0x24], 0 je SHORT G_M37406_IG16
mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
; GC ptr vars -{V03}
call <unknown method>+ ; gcrRegs -[ecx]
+ jmp SHORT G_M37406_IG16
+ ;; size=16 bbWeight=0.50 PerfScore 3.50
+G_M37406_IG14: ; bbWeight=0, gcVars=00008000 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
+ ; GC ptr vars +{V03 V15}
+ cmp byte ptr [ebp-0x24], 0
+ je SHORT G_M37406_IG15
+ mov ecx, gword ptr [ebp-0x30]
+ ; gcrRegs +[ecx]
+ ; GC ptr vars -{V03 V15}
+ call <unknown method> ; gcrRegs -[ecx]
;; size=14 bbWeight=0 PerfScore 0.00-G_M37406_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M37406_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M37406_IG17: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref+G_M37406_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs +[esi]
xor eax, eax
; gcrRegs +[eax]
mov gword ptr [esi+0x14], eax
;; size=5 bbWeight=0.50 PerfScore 0.62-G_M37406_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M37406_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc ; gcrRegs -[eax esi]
lea esp, [ebp-0x0C]
pop ebx
@@ -234,9 +229,9 @@ G_M37406_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret
;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 349, prolog size 18, PerfScore 234.75, instruction count 110, allocated bytes for code 349 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)+; Total bytes of code 344, prolog size 18, PerfScore 211.75, instruction count 108, allocated bytes for code 344 (MethodHash=88f36de1) for method System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts) ; ============================================================
*************** EH table for System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M37406_IG04..G_M37406_IG14) handled by [G_M37406_IG15..G_M37406_IG17) (fault)+EH#0: try [G_M37406_IG04..G_M37406_IG13) handled by [G_M37406_IG14..G_M37406_IG16) (fault)
@@ -8,26 +8,27 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T08] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl>
-; V01 arg1 [V01,T07] ( 3, 4 ) ref -> esi class-hnd single-def <ubyte[]>+; V00 this [V00,T09] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl>
+; V01 arg1 [V01,T08] ( 3, 4 ) ref -> esi class-hnd single-def <ubyte[]> ; V02 loc0 [V02 ] ( 3, 7 ) int -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Diagnostics.Tracing.FieldMetadata>-; V05 tmp0 [V05,T09] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>+; V05 tmp0 [V05,T10] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>> ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]>-;* V07 tmp2 [V07,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V07 tmp2 [V07,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V09 tmp4 [V09,T02] ( 4, 17 ) ref -> edi single-def "field V03._list (fldOffset=0x0)" P-INDEP-; V10 tmp5 [V10,T04] ( 2, 6 ) ref -> ecx "field V03._current (fldOffset=0x4)" P-INDEP+; V10 tmp5 [V10,T05] ( 2, 6 ) ref -> ecx "field V03._current (fldOffset=0x4)" P-INDEP ; V11 tmp6 [V11,T00] ( 6, 21 ) int -> [ebp-0x28] "field V03._index (fldOffset=0x8)" P-INDEP-; V12 tmp7 [V12,T05] ( 2, 9 ) int -> ebx "field V03._version (fldOffset=0xc)" P-INDEP
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> edi single-def "field V06._list (fldOffset=0x0)" P-INDEP+; V12 tmp7 [V12,T06] ( 2, 9 ) int -> ebx "field V03._version (fldOffset=0xc)" P-INDEP
+; V13 tmp8 [V13,T11] ( 3, 3 ) ref -> edi single-def "field V06._list (fldOffset=0x0)" P-INDEP ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._current (fldOffset=0x4)" P-INDEP-;* V15 tmp10 [V15,T12] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
-; V16 tmp11 [V16,T11] ( 2, 2 ) int -> ebx "field V06._version (fldOffset=0xc)" P-INDEP+;* V15 tmp10 [V15,T13] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
+; V16 tmp11 [V16,T12] ( 2, 2 ) int -> ebx "field V06._version (fldOffset=0xc)" P-INDEP ; V17 tmp12 [V17,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V18 EHSlots [V18 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V19 cse0 [V19,T03] ( 2, 8 ) int -> ecx "CSE - moderate"+; V19 cse0 [V19,T04] ( 2, 8 ) int -> ecx "CSE - moderate"
+; V20 cse1 [V20,T03] ( 2, 16 ) int -> ecx "CSE - aggressive" ;
; Lcl frame size = 28
@@ -65,9 +66,10 @@ G_M38703_IG04: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=
mov edx, dword ptr [ebp-0x28]
;; size=15 bbWeight=2 PerfScore 17.00
G_M38703_IG05: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [edi+0x0C]+ mov ecx, dword ptr [edi+0x0C]
+ cmp ebx, ecx jne SHORT G_M38703_IG10- ;; size=5 bbWeight=8 PerfScore 32.00+ ;; size=7 bbWeight=8 PerfScore 26.00 G_M38703_IG06: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx
@@ -101,6 +103,6 @@ G_M38703_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 97, prolog size 14, PerfScore 138.25, instruction count 41, allocated bytes for code 97 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)+; Total bytes of code 99, prolog size 14, PerfScore 132.25, instruction count 42, allocated bytes for code 99 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts) ; ============================================================
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T06] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
-; V01 arg1 [V01,T07] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>+; V00 this [V00,T07] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
+; V01 arg1 [V01,T08] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack>
;* V04 tmp0 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
@@ -18,14 +18,15 @@
; V07 tmp3 [V07,T02] ( 4, 12.50) ref -> edi single-def "field V02._list (fldOffset=0x0)" P-INDEP
; V08 tmp4 [V08,T03] ( 3, 8 ) ref -> eax "field V02._current (fldOffset=0x4)" P-INDEP
; V09 tmp5 [V09,T00] ( 6, 20.50) int -> [ebp-0x24] "field V02._index (fldOffset=0x8)" P-INDEP-; V10 tmp6 [V10,T08] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
-; V11 tmp7 [V11,T09] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP+; V10 tmp6 [V10,T09] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
+; V11 tmp7 [V11,T10] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._current (fldOffset=0x4)" P-INDEP-;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T10] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP+;* V13 tmp9 [V13,T12] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T11] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP ; V15 tmp11 [V15,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V16 EHSlots [V16 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V17 cse0 [V17,T04] ( 2, 8 ) int -> ecx "CSE - aggressive"+; V17 cse0 [V17,T06] ( 2, 8 ) int -> ecx "CSE - aggressive"
+; V18 cse1 [V18,T04] ( 2, 8 ) int -> ecx "CSE - aggressive" ;
; Lcl frame size = 24
@@ -65,7 +66,8 @@ G_M37225_IG04: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
mov edx, dword ptr [ebp-0x24]
;; size=11 bbWeight=2 PerfScore 12.50
G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [edi+0x0C]+ mov ecx, dword ptr [edi+0x0C]
+ cmp ebx, ecx jne SHORT G_M37225_IG08
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx
@@ -79,7 +81,7 @@ G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
inc edx
mov dword ptr [ebp-0x24], edx
jmp SHORT G_M37225_IG04- ;; size=30 bbWeight=4 PerfScore 74.00+ ;; size=32 bbWeight=4 PerfScore 71.00 G_M37225_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax ecx esi edi]
lea esp, [ebp-0x0C]
@@ -97,6 +99,6 @@ G_M37225_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 14, PerfScore 110.00, instruction count 40, allocated bytes for code 90 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)+; Total bytes of code 92, prolog size 14, PerfScore 107.00, instruction count 41, allocated bytes for code 92 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts) ; ============================================================
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T06] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
-; V01 arg1 [V01,T07] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>+; V00 this [V00,T07] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
+; V01 arg1 [V01,T08] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack>
;* V04 tmp0 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
@@ -18,14 +18,15 @@
; V07 tmp3 [V07,T02] ( 4, 12.50) ref -> edi single-def "field V02._list (fldOffset=0x0)" P-INDEP
; V08 tmp4 [V08,T03] ( 3, 8 ) ref -> eax "field V02._current (fldOffset=0x4)" P-INDEP
; V09 tmp5 [V09,T00] ( 6, 20.50) int -> [ebp-0x24] "field V02._index (fldOffset=0x8)" P-INDEP-; V10 tmp6 [V10,T08] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
-; V11 tmp7 [V11,T09] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP+; V10 tmp6 [V10,T09] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
+; V11 tmp7 [V11,T10] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._current (fldOffset=0x4)" P-INDEP-;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T10] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP+;* V13 tmp9 [V13,T12] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T11] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP ; V15 tmp11 [V15,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V16 EHSlots [V16 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V17 cse0 [V17,T04] ( 2, 8 ) int -> ecx "CSE - aggressive"+; V17 cse0 [V17,T06] ( 2, 8 ) int -> ecx "CSE - aggressive"
+; V18 cse1 [V18,T04] ( 2, 8 ) int -> ecx "CSE - aggressive" ;
; Lcl frame size = 24
@@ -65,7 +66,8 @@ G_M37225_IG04: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
mov edx, dword ptr [ebp-0x24]
;; size=11 bbWeight=2 PerfScore 12.50
G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [edi+0x0C]+ mov ecx, dword ptr [edi+0x0C]
+ cmp ebx, ecx jne SHORT G_M37225_IG08
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx
@@ -79,7 +81,7 @@ G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
inc edx
mov dword ptr [ebp-0x24], edx
jmp SHORT G_M37225_IG04- ;; size=30 bbWeight=4 PerfScore 74.00+ ;; size=32 bbWeight=4 PerfScore 71.00 G_M37225_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax ecx esi edi]
lea esp, [ebp-0x0C]
@@ -97,6 +99,6 @@ G_M37225_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 14, PerfScore 110.00, instruction count 40, allocated bytes for code 90 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)+; Total bytes of code 92, prolog size 14, PerfScore 107.00, instruction count 41, allocated bytes for code 92 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts) ; ============================================================
@@ -8,26 +8,26 @@
; 9 inlinees with PGO data; 33 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T19] ( 8, 7 ) ref -> [ebp-0x3C] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V01 arg1 [V01,T17] ( 3, 10 ) int -> esi single-def+; V00 arg0 [V00,T20] ( 8, 7 ) ref -> [ebp-0x3C] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V01 arg1 [V01,T18] ( 3, 10 ) int -> esi single-def ;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Threading.CancellationToken>-; V03 loc0 [V03,T18] ( 4, 11 ) ubyte -> [ebp-0x28] do-not-enreg[Z] EH-live
-; V04 loc1 [V04,T06] ( 8, 32 ) ref -> [ebp-0x40] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>+; V03 loc0 [V03,T19] ( 4, 11 ) ubyte -> [ebp-0x28] do-not-enreg[Z] EH-live
+; V04 loc1 [V04,T05] ( 8, 32 ) ref -> [ebp-0x40] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres> ;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>
;* V07 loc4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>-; V09 tmp0 [V09,T16] ( 6, 12 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>+; V09 tmp0 [V09,T17] ( 6, 12 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres> ;* V10 tmp1 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V13 tmp4 [V13,T22] ( 3, 6 ) int -> [ebp-0x2C] spill-single-def "Inlining Arg"+; V13 tmp4 [V13,T24] ( 3, 6 ) int -> [ebp-0x2C] spill-single-def "Inlining Arg" ;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref single-def-;* V18 tmp9 [V18,T27] ( 0, 0 ) ref -> zero-ref single-def
-;* V19 tmp10 [V19,T28] ( 0, 0 ) int -> zero-ref +;* V18 tmp9 [V18,T29] ( 0, 0 ) ref -> zero-ref single-def
+;* V19 tmp10 [V19,T30] ( 0, 0 ) int -> zero-ref ;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -35,41 +35,43 @@
;* V24 tmp15 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp16 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp17 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>-; V27 tmp18 [V27,T13] ( 2, 8 ) ubyte -> eax "Inline return value spill temp"+; V27 tmp18 [V27,T12] ( 2, 8 ) ubyte -> eax "Inline return value spill temp" ;* V28 tmp19 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp20 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"-; V31 tmp22 [V31,T09] ( 3, 24 ) byref -> edx "Inlining Arg"+; V31 tmp22 [V31,T09] ( 3, 24 ) byref -> ecx "Inlining Arg" ;* V32 tmp23 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V33 tmp24 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-;* V34 tmp25 [V34,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V34 tmp25 [V34,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V35 tmp26 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
;* V36 tmp27 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"-;* V38 tmp29 [V38,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V38 tmp29 [V38,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V39 tmp30 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>-; V40 tmp31 [V40,T21] ( 1, 8 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
-; V41 tmp32 [V41,T05] ( 4, 25 ) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP+; V40 tmp31 [V40,T23] ( 1, 8 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
+; V41 tmp32 [V41,T06] ( 4, 25 ) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V42 tmp33 [V42,T04] ( 6, 28 ) ref -> edi "field V05._current (fldOffset=0x4)" P-INDEP
; V43 tmp34 [V43,T00] ( 6, 41 ) int -> [ebp-0x30] "field V05._index (fldOffset=0x8)" P-INDEP-; V44 tmp35 [V44,T12] ( 3, 17 ) int -> [ebp-0x34] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP+; V44 tmp35 [V44,T21] ( 2, 9 ) int -> [ebp-0x34] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP ; V45 tmp36 [V45,T07] ( 4, 25 ) ref -> ebx single-def "field V07._list (fldOffset=0x0)" P-INDEP
; V46 tmp37 [V46,T08] ( 3, 16 ) ref -> ecx "field V07._current (fldOffset=0x4)" P-INDEP
; V47 tmp38 [V47,T01] ( 6, 41 ) int -> edi "field V07._index (fldOffset=0x8)" P-INDEP-; V48 tmp39 [V48,T20] ( 2, 9 ) int -> esi "field V07._version (fldOffset=0xc)" P-INDEP
-; V49 tmp40 [V49,T23] ( 3, 3 ) ref -> ebx single-def "field V26._list (fldOffset=0x0)" P-INDEP+; V48 tmp39 [V48,T22] ( 2, 9 ) int -> esi "field V07._version (fldOffset=0xc)" P-INDEP
+; V49 tmp40 [V49,T25] ( 3, 3 ) ref -> ebx single-def "field V26._list (fldOffset=0x0)" P-INDEP ;* V50 tmp41 [V50 ] ( 0, 0 ) ref -> zero-ref single-def "field V26._current (fldOffset=0x4)" P-INDEP-;* V51 tmp42 [V51,T29] ( 0, 0 ) int -> zero-ref "field V26._index (fldOffset=0x8)" P-INDEP
-; V52 tmp43 [V52,T25] ( 2, 2 ) int -> [ebp-0x38] spill-single-def "field V26._version (fldOffset=0xc)" P-INDEP
-; V53 tmp44 [V53,T24] ( 3, 3 ) ref -> ebx single-def "field V36._list (fldOffset=0x0)" P-INDEP+;* V51 tmp42 [V51,T31] ( 0, 0 ) int -> zero-ref "field V26._index (fldOffset=0x8)" P-INDEP
+; V52 tmp43 [V52,T27] ( 2, 2 ) int -> [ebp-0x38] spill-single-def "field V26._version (fldOffset=0xc)" P-INDEP
+; V53 tmp44 [V53,T26] ( 3, 3 ) ref -> ebx single-def "field V36._list (fldOffset=0x0)" P-INDEP ;* V54 tmp45 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "field V36._current (fldOffset=0x4)" P-INDEP-;* V55 tmp46 [V55,T30] ( 0, 0 ) int -> zero-ref "field V36._index (fldOffset=0x8)" P-INDEP
-; V56 tmp47 [V56,T26] ( 2, 2 ) int -> esi "field V36._version (fldOffset=0xc)" P-INDEP+;* V55 tmp46 [V55,T32] ( 0, 0 ) int -> zero-ref "field V36._index (fldOffset=0x8)" P-INDEP
+; V56 tmp47 [V56,T28] ( 2, 2 ) int -> esi "field V36._version (fldOffset=0xc)" P-INDEP ; V57 tmp48 [V57,T02] ( 3, 48 ) ref -> edi "arr expr"
; V58 tmp49 [V58,T03] ( 3, 48 ) ref -> ecx "arr expr"
; V59 EHSlots [V59 ] ( 1, 1 ) struct (20) [ebp-0x24] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V60 cse0 [V60,T10] ( 3, 24 ) int -> edi "CSE - moderate"
-; V61 cse1 [V61,T11] ( 2, 16 ) int -> ecx "CSE - moderate"+; V60 cse0 [V60,T15] ( 2, 16 ) int -> edi "CSE - moderate"
+; V61 cse1 [V61,T10] ( 2, 16 ) int -> edi "CSE - moderate"
+; V62 cse2 [V62,T16] ( 2, 16 ) int -> ecx "CSE - moderate"
+; V63 cse3 [V63,T11] ( 2, 16 ) int -> ecx "CSE - moderate" ;
; Lcl frame size = 52
@@ -86,12 +88,12 @@ G_M12834_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; GC ptr vars +{V00}
mov esi, edx
;; size=19 bbWeight=1 PerfScore 7.00-G_M12834_IG02: ; bbWeight=1, gcVars=00080000 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref+G_M12834_IG02: ; bbWeight=1, gcVars=0000000000100000 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[ecx]
test ecx, ecx- je G_M12834_IG30+ je G_M12834_IG29 cmp dword ptr [ecx+0x08], 0- jle G_M12834_IG31+ jle G_M12834_IG30 ;; size=18 bbWeight=1 PerfScore 5.25
G_M12834_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
@@ -114,14 +116,16 @@ G_M12834_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
or edx, 0xD1FFAB1E
mov dword ptr [ebx+0x0C], edx
test eax, eax- jle G_M12834_IG32+ jle G_M12834_IG31 ;; size=57 bbWeight=1 PerfScore 12.75
G_M12834_IG04: ; bbWeight=1, gcrefRegs=0000000A {ecx ebx}, byrefRegs=00000000 {}, byref
mov dword ptr [ebx+0x10], eax- mov gword ptr [ebp-0x40], ebx+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x40], edx ; GC ptr vars +{V04}- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M12834_IG05: ; bbWeight=1, gcVars=00080040 {V00 V04}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref+ ;; size=8 bbWeight=1 PerfScore 2.25
+G_M12834_IG05: ; bbWeight=1, gcVars=0000000000100020 {V00 V04}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[ebx]
mov ebx, ecx
; gcrRegs +[ebx]
@@ -133,11 +137,11 @@ G_M12834_IG05: ; bbWeight=1, gcVars=00080040 {V00 V04}, gcrefRegs=0000000
mov dword ptr [ebp-0x34], ecx
jmp G_M12834_IG13
;; size=21 bbWeight=1 PerfScore 7.50-G_M12834_IG06: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz+G_M12834_IG06: ; bbWeight=4, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[edi]- mov edx, edi
- ; gcrRegs +[edx]
- cmp byte ptr [edx], dl+ mov ecx, edi
+ ; gcrRegs +[ecx]
+ cmp byte ptr [ecx], cl test dword ptr [edi+0x1C], 0xD1FFAB1E
jne SHORT G_M12834_IG10
cmp gword ptr [edi+0x10], 0
@@ -145,7 +149,7 @@ G_M12834_IG06: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000
jmp SHORT G_M12834_IG08
;; size=21 bbWeight=4 PerfScore 53.00
G_M12834_IG07: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz- ; gcrRegs -[edx edi]+ ; gcrRegs -[ecx edx edi] mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -154,75 +158,72 @@ G_M12834_IG07: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
; gcrRegs -[ecx edx]
mov eax, dword ptr [ebp-0x30]
mov ecx, dword ptr [ebp-0x34]+ mov edx, gword ptr [ebp-0x40]
+ ; gcrRegs +[edx] jmp SHORT G_M12834_IG13- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M12834_IG08: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M12834_IG08: ; bbWeight=4, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[edi]- lea edx, bword ptr [edi+0x10]
- ; byrRegs +[edx]
- test edx, edx+ lea ecx, bword ptr [edi+0x10]
+ ; byrRegs +[ecx]
+ test ecx, ecx je G_M12834_IG17
push 0
; gcr arg push 0- mov ecx, edx
- ; byrRegs +[ecx]
- mov edx, gword ptr [ebp-0x40]
- ; gcrRegs +[edx]
- ; byrRegs -[edx] call <unknown method>
; gcrRegs -[edx] +[eax]
; byrRegs -[ecx]
; gcr arg pop 1
test eax, eax+ mov edx, gword ptr [ebp-0x40]
+ ; gcrRegs +[edx] je SHORT G_M12834_IG15- ;; size=27 bbWeight=4 PerfScore 25.00
-G_M12834_IG09: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz+ ;; size=25 bbWeight=4 PerfScore 24.00
+G_M12834_IG09: ; bbWeight=4, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax]
push 1
mov ecx, edi
; gcrRegs +[ecx]- mov edx, gword ptr [ebp-0x40]
- ; gcrRegs +[edx] call [<unknown method>]
; gcrRegs -[ecx edx edi]
test eax, eax- jne SHORT G_M12834_IG14
- ;; size=17 bbWeight=4 PerfScore 26.00
-G_M12834_IG10: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [ebp-0x40]
; gcrRegs +[edx]- lea edi, bword ptr [edx+0x10]
- ; byrRegs +[edi]
- mov ecx, -1+ jne SHORT G_M12834_IG14
+ ;; size=17 bbWeight=4 PerfScore 26.00
+G_M12834_IG10: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
+ lea ecx, bword ptr [edx+0x10]
+ ; byrRegs +[ecx]
+ mov edi, -1 lock - xadd dword ptr [edi], ecx
- dec ecx+ xadd dword ptr [ecx], edi
+ dec edi jne SHORT G_M12834_IG11
mov ecx, edx
; gcrRegs +[ecx]+ ; byrRegs -[ecx] xor edx, edx
; gcrRegs -[edx]
call [<unknown method>]
; gcrRegs -[ecx]- ; byrRegs -[edi] mov edx, gword ptr [ebp-0x40]
; gcrRegs +[edx]- ;; size=31 bbWeight=4 PerfScore 98.00+ ;; size=28 bbWeight=4 PerfScore 94.00 G_M12834_IG11: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edx+0x10], 0
jl SHORT G_M12834_IG07
;; size=6 bbWeight=4 PerfScore 16.00-G_M12834_IG12: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]+G_M12834_IG12: ; bbWeight=2, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref mov eax, dword ptr [ebp-0x30]
mov ecx, dword ptr [ebp-0x34]
;; size=6 bbWeight=2 PerfScore 4.00-G_M12834_IG13: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz+G_M12834_IG13: ; bbWeight=8, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz mov edi, dword ptr [ebx+0x0C]
cmp ecx, edi
...
@@ -9,62 +9,62 @@
; Final local variable assignments
;
; V00 arg0 [V00,T14] ( 15, 11.75) ref -> [ebp-0xC0] class-hnd single-def <System.Reflection.MemberInfo>-; V01 arg1 [V01,T27] ( 5, 3.50) int -> [ebp-0x24] single-def
-; V02 arg2 [V02,T40] ( 4, 2 ) ubyte -> [ebp+0x20]
-; V03 arg3 [V03,T53] ( 3, 1.50) ubyte -> [ebp+0x1C] single-def
-; V04 arg4 [V04,T56] ( 2, 1 ) ref -> [ebp+0x18] class-hnd single-def <System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap]>
-; V05 arg5 [V05,T68] ( 1, 0.50) int -> [ebp+0x14] single-def
-; V06 arg6 [V06,T63] ( 2, 1 ) ubyte -> [ebp+0x10] single-def
-; V07 arg7 [V07,T42] ( 3, 2 ) byref -> [ebp+0x0C] single-def
-; V08 arg8 [V08,T66] ( 1, 0.50) ref -> [ebp+0x08] class-hnd single-def <System.Reflection.MemberInfo>+; V01 arg1 [V01,T28] ( 5, 3.50) int -> [ebp-0x24] single-def
+; V02 arg2 [V02,T41] ( 4, 2 ) ubyte -> [ebp+0x20]
+; V03 arg3 [V03,T54] ( 3, 1.50) ubyte -> [ebp+0x1C] single-def
+; V04 arg4 [V04,T57] ( 2, 1 ) ref -> [ebp+0x18] class-hnd single-def <System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap]>
+; V05 arg5 [V05,T69] ( 1, 0.50) int -> [ebp+0x14] single-def
+; V06 arg6 [V06,T64] ( 2, 1 ) ubyte -> [ebp+0x10] single-def
+; V07 arg7 [V07,T43] ( 3, 2 ) byref -> [ebp+0x0C] single-def
+; V08 arg8 [V08,T67] ( 1, 0.50) ref -> [ebp+0x08] class-hnd single-def <System.Reflection.MemberInfo> ; V09 loc0 [V09,T13] ( 19, 15.50) int -> [ebp-0x28] ld-addr-op-; V10 loc1 [V10,T41] ( 4, 2 ) int -> [ebp-0x2C] +; V10 loc1 [V10,T42] ( 4, 2 ) int -> [ebp-0x2C] ; V11 loc2 [V11 ] ( 14, 10 ) ref -> [ebp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
; V12 loc3 [V12,T07] ( 5, 19.50) ubyte -> [ebp-0x34] ld-addr-op-; V13 loc4 [V13,T32] ( 7, 7 ) ubyte -> [ebp-0x38] ld-addr-op
-; V14 loc5 [V14,T25] ( 10, 6.50) ubyte -> [ebp-0x3C] +; V13 loc4 [V13,T33] ( 7, 7 ) ubyte -> [ebp-0x38] ld-addr-op
+; V14 loc5 [V14,T26] ( 10, 6.50) ubyte -> [ebp-0x3C] ; V15 loc6 [V15,T05] ( 7, 20.50) ubyte -> registers ld-addr-op
; V16 loc7 [V16,T09] ( 4, 19 ) ubyte -> [ebp-0x40] ld-addr-op
; V17 loc8 [V17,T03] ( 8, 24 ) ubyte -> [ebp-0x44] ld-addr-op
; V18 loc9 [V18,T10] ( 4, 19 ) ubyte -> [ebp-0x48] ld-addr-op-; V19 loc10 [V19,T26] ( 6, 6 ) ubyte -> [ebp-0x4C] +; V19 loc10 [V19,T27] ( 6, 6 ) ubyte -> [ebp-0x4C] ; V20 loc11 [V20,T08] ( 5, 19.50) ubyte -> [ebp-0x50] ld-addr-op-; V21 loc12 [V21,T28] ( 5, 5.50) int -> [ebp-0x54] ld-addr-op
-; V22 loc13 [V22,T29] ( 10, 5 ) ref -> [ebp-0xC4] class-hnd single-def <ProtoBuf.Meta.AttributeMap[]>+; V21 loc12 [V21,T29] ( 5, 5.50) int -> [ebp-0x54] ld-addr-op
+; V22 loc13 [V22,T30] ( 10, 5 ) ref -> [ebp-0xC4] class-hnd single-def <ProtoBuf.Meta.AttributeMap[]> ; V23 loc14 [V23,T01] ( 37, 83.50) ref -> [ebp-0xC8] class-hnd <ProtoBuf.Meta.AttributeMap>
;* V24 loc15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd <ProtoBuf.ProtoMemberAttribute>-; V25 loc16 [V25,T57] ( 2, 1 ) ref -> edi class-hnd single-def <System.Object>+; V25 loc16 [V25,T58] ( 2, 1 ) ref -> edi class-hnd single-def <System.Object> ;* V26 loc17 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[ProtoBuf.Meta.AttributeMap]>
; V27 loc18 [V27,T00] ( 17,146 ) ref -> [ebp-0xCC] class-hnd <ProtoBuf.Meta.AttributeMap>
; V28 loc19 [V28 ] ( 5, 7 ) ref -> [ebp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>-; V29 tmp0 [V29,T64] ( 2, 1 ) int -> edx +; V29 tmp0 [V29,T65] ( 2, 1 ) int -> edx ; V30 tmp1 [V30,T11] ( 16, 16 ) ref -> [ebp-0xD0] class-hnd exact spill-single-def "NewObj constructor temp" <ProtoBuf.ProtoMemberAttribute>-; V31 tmp2 [V31,T58] ( 2, 1 ) ref -> eax single-def
-; V32 tmp3 [V32,T59] ( 2, 1 ) ref -> edi single-def
-; V33 tmp4 [V33,T34] ( 6, 3 ) ref -> edi single-def
-;* V34 tmp5 [V34,T67] ( 0, 0 ) ref -> zero-ref single-def
-; V35 tmp6 [V35,T51] ( 3, 1.50) ref -> ebx
-; V36 tmp7 [V36,T45] ( 2, 2 ) ref -> eax class-hnd single-def "dup spill" <ProtoBuf.Meta.AttributeMap>
-; V37 tmp8 [V37,T35] ( 7, 3.50) ref -> [ebp-0xD4]
-; V38 tmp9 [V38,T33] ( 3, 4 ) int -> esi "fgMakeTemp is creating a new local variable"+; V31 tmp2 [V31,T59] ( 2, 1 ) ref -> eax single-def
+; V32 tmp3 [V32,T60] ( 2, 1 ) ref -> edi single-def
+; V33 tmp4 [V33,T35] ( 6, 3 ) ref -> edi single-def
+;* V34 tmp5 [V34,T68] ( 0, 0 ) ref -> zero-ref single-def
+; V35 tmp6 [V35,T52] ( 3, 1.50) ref -> ebx
+; V36 tmp7 [V36,T46] ( 2, 2 ) ref -> eax class-hnd single-def "dup spill" <ProtoBuf.Meta.AttributeMap>
+; V37 tmp8 [V37,T36] ( 7, 3.50) ref -> [ebp-0xD4]
+; V38 tmp9 [V38,T34] ( 3, 4 ) int -> esi "fgMakeTemp is creating a new local variable" ; V39 tmp10 [V39,T06] ( 6, 20 ) ref -> [ebp-0xD8] class-hnd "spilling QMark2" <System.String>
; V40 tmp11 [V40,T23] ( 2, 8 ) int -> edx "dup spill"-; V41 tmp12 [V41,T49] ( 2, 2 ) int -> edx "dup spill"
-; V42 tmp13 [V42,T39] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V43 tmp14 [V43,T60] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>+; V41 tmp12 [V41,T50] ( 2, 2 ) int -> edx "dup spill"
+; V42 tmp13 [V42,T40] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
+;* V43 tmp14 [V43,T61] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> ;* V44 tmp15 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ProtoBuf.Meta.EnumMember>
; V45 tmp16 [V45 ] ( 6, 2.50) ref -> [ebp-0x5C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>-; V46 tmp17 [V46,T43] ( 3, 2 ) int -> edx "fgMakeTemp is creating a new local variable"
-; V47 tmp18 [V47,T46] ( 2, 2 ) ref -> ecx class-hnd single-def "spilling QMark2" <System.String>
-;* V48 tmp19 [V48,T69] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V49 tmp20 [V49,T36] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String>
-; V50 tmp21 [V50,T47] ( 2, 2 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String>+; V46 tmp17 [V46,T44] ( 3, 2 ) int -> edx "fgMakeTemp is creating a new local variable"
+; V47 tmp18 [V47,T47] ( 2, 2 ) ref -> ecx class-hnd single-def "spilling QMark2" <System.String>
+;* V48 tmp19 [V48,T70] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V49 tmp20 [V49,T37] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String>
+; V50 tmp21 [V50,T48] ( 2, 2 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String> ; V51 tmp22 [V51 ] ( 6, 2.75) ref -> [ebp-0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
; V52 tmp23 [V52 ] ( 6, 2.50) ref -> [ebp-0x64] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>-; V53 tmp24 [V53,T44] ( 3, 2 ) int -> eax "fgMakeTemp is creating a new local variable"
-; V54 tmp25 [V54,T48] ( 2, 2 ) ref -> ecx class-hnd single-def "spilling QMark2" <System.String>
-;* V55 tmp26 [V55,T70] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V56 tmp27 [V56,T37] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String>+; V53 tmp24 [V53,T45] ( 3, 2 ) int -> eax "fgMakeTemp is creating a new local variable"
+; V54 tmp25 [V54,T49] ( 2, 2 ) ref -> ecx class-hnd single-def "spilling QMark2" <System.String>
+;* V55 tmp26 [V55,T71] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V56 tmp27 [V56,T38] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String> ;* V57 tmp28 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V58 tmp29 [V58 ] ( 6, 2.75) ref -> [ebp-0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
;* V59 tmp30 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -74,13 +74,13 @@
; V63 tmp34 [V63 ] ( 6, 2.75) ref -> [ebp-0x74] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
;* V64 tmp35 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V65 tmp36 [V65 ] ( 6, 2.75) ref -> [ebp-0x78] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>-; V66 tmp37 [V66,T54] ( 3, 1.50) ubyte -> ecx "Inline return value spill temp"+; V66 tmp37 [V66,T55] ( 3, 1.50) ubyte -> ecx "Inline return value spill temp" ; V67 tmp38 [V67 ] ( 6, 2.75) ref -> [ebp-0x7C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
;* V68 tmp39 [V68 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V69 tmp40 [V69 ] ( 6, 2.75) ref -> [ebp-0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
;* V70 tmp41 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ProtoBuf.Meta.AttributeMap]>
; V71 tmp42 [V71,T12] ( 5, 16 ) ref -> [ebp-0xDC] class-hnd exact "Inlining Arg" <System.String>-; V72 tmp43 [V72,T30] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"+; V72 tmp43 [V72,T31] ( 2, 4 ) ubyte -> eax "Inline return value spill temp" ; V73 tmp44 [V73,T21] ( 2, 8 ) byref -> esi "impAppendStmt"
;* V74 tmp45 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V75 tmp46 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -91,7 +91,7 @@
; V80 tmp51 [V80 ] ( 6, 10 ) ref -> [ebp-0x88] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
; V81 tmp52 [V81,T20] ( 3, 8 ) int -> eax "fgMakeTemp is creating a new local variable"
; V82 tmp53 [V82,T22] ( 2, 8 ) ref -> ecx class-hnd "spilling QMark2" <System.String>-;* V83 tmp54 [V83,T50] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V83 tmp54 [V83,T51] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V84 tmp55 [V84,T16] ( 3, 12 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
;* V85 tmp56 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V86 tmp57 [V86 ] ( 6, 70 ) ref -> [ebp-0x8C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
@@ -118,21 +118,22 @@
;* V107 tmp78 [V107 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V108 tmp79 [V108 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V109 tmp80 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V110 tmp81 [V110,T55] ( 3, 1 ) ubyte -> registers "Inline return value spill temp"
-; V111 tmp82 [V111,T38] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String>+; V110 tmp81 [V110,T56] ( 3, 1 ) ubyte -> registers "Inline return value spill temp"
+; V111 tmp82 [V111,T39] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String> ; V112 tmp83 [V112,T15] ( 4, 12.50) ref -> [ebp-0xE0] spill-single-def "field V26._list (fldOffset=0x0)" P-INDEP
; V113 tmp84 [V113,T19] ( 2, 6 ) ref -> ecx "field V26._current (fldOffset=0x4)" P-INDEP
; V114 tmp85 [V114,T02] ( 6, 20.50) int -> [ebp-0xB4] "field V26._index (fldOffset=0x8)" P-INDEP-; V115 tmp86 [V115,T31] ( 2, 4.50) int -> [ebp-0xB8] spill-single-def "field V26._version (fldOffset=0xc)" P-INDEP
-; V116 tmp87 [V116,T61] ( 2, 1 ) ref -> ecx single-def "field V44.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-; V117 tmp88 [V117,T62] ( 2, 1 ) ref -> edi single-def "field V44.<Value>k__BackingField (fldOffset=0x4)" P-INDEP
-; V118 tmp89 [V118,T52] ( 3, 1.50) ref -> [ebp-0xE4] spill-single-def "field V70._list (fldOffset=0x0)" P-INDEP+; V115 tmp86 [V115,T32] ( 2, 4.50) int -> [ebp-0xB8] spill-single-def "field V26._version (fldOffset=0xc)" P-INDEP
+; V116 tmp87 [V116,T62] ( 2, 1 ) ref -> ecx single-def "field V44.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+; V117 tmp88 [V117,T63] ( 2, 1 ) ref -> edi single-def "field V44.<Value>k__BackingField (fldOffset=0x4)" P-INDEP
+; V118 tmp89 [V118,T53] ( 3, 1.50) ref -> [ebp-0xE4] spill-single-def "field V70._list (fldOffset=0x0)" P-INDEP ;* V119 tmp90 [V119 ] ( 0, 0 ) ref -> zero-ref single-def "field V70._current (fldOffset=0x4)" P-INDEP-;* V120 tmp91 [V120,T71] ( 0, 0 ) int -> zero-ref "field V70._index (fldOffset=0x8)" P-INDEP
-; V121 tmp92 [V121,T65] ( 2, 1 ) int -> [ebp-0xBC] spill-single-def "field V70._version (fldOffset=0xc)" P-INDEP+;* V120 tmp91 [V120,T72] ( 0, 0 ) int -> zero-ref "field V70._index (fldOffset=0x8)" P-INDEP
+; V121 tmp92 [V121,T66] ( 2, 1 ) int -> [ebp-0xBC] spill-single-def "field V70._version (fldOffset=0xc)" P-INDEP ; V122 tmp93 [V122,T04] ( 3, 24 ) ref -> ecx "arr expr"
; V123 EHSlots [V123 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V124 cse0 [V124,T18] ( 2, 8 ) int -> ecx "CSE - conservative"+; V124 cse0 [V124,T25] ( 2, 8 ) int -> ecx "CSE - conservative"
+; V125 cse1 [V125,T18] ( 2, 8 ) int -> ecx "CSE - conservative" ; TEMP_02 ref -> [ebp-0xE8]
; TEMP_01 int -> [ebp-0xEC]
;
@@ -317,7 +318,7 @@ G_M42865_IG16: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
; gcrRegs +[eax]
mov edx, 0xD1FFAB1E ; System.String
cmp dword ptr [eax], edx- jne G_M42865_IG140+ jne G_M42865_IG137 mov gword ptr [ebp-0x30], ecx
;; size=53 bbWeight=0.50 PerfScore 10.75
G_M42865_IG17: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
@@ -465,7 +466,7 @@ G_M42865_IG24: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs +[edx]
mov eax, 0xD1FFAB1E ; System.String
cmp dword ptr [edx], eax- jne G_M42865_IG141+ jne G_M42865_IG138 mov gword ptr [ebp-0x30], ecx
;; size=63 bbWeight=0.50 PerfScore 11.62
G_M42865_IG25: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
@@ -552,7 +553,7 @@ G_M42865_IG30: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
mov gword ptr [ebp-0xC0], esi
; GC ptr vars +{V00}
;; size=16 bbWeight=0.50 PerfScore 2.50-G_M42865_IG31: ; bbWeight=0.50, gcVars=000000000000000020004002 {V00 V22 V23}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M42865_IG31: ; bbWeight=0.50, gcVars=000000000000000040004002 {V00 V22 V23}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[esi]
xor ecx, ecx
; gcrRegs +[ecx]
@@ -692,7 +693,7 @@ G_M42865_IG40: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
je G_M42865_IG50
jmp SHORT G_M42865_IG45
;; size=21 bbWeight=0.50 PerfScore 3.25-G_M42865_IG41: ; bbWeight=0.25, gcVars=000000000000000020000002 {V22 V23}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref+G_M42865_IG41: ; bbWeight=0.25, gcVars=000000000000000040000002 {V22 V23}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[ecx] +[esi]
; GC ptr vars -{V00}
mov gword ptr [ebp-0xC0], esi
@@ -711,7 +712,7 @@ G_M42865_IG43: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs +[edi]
jmp G_M42865_IG54
;; size=11 bbWeight=0.25 PerfScore 0.75-G_M42865_IG44: ; bbWeight=0.50, gcVars=000000000000000020004002 {V00 V22 V23}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M42865_IG44: ; bbWeight=0.50, gcVars=000000000000000040004002 {V00 V22 V23}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[esi edi]
; GC ptr vars +{V00 V14}
mov ecx, 1
@@ -836,7 +837,7 @@ G_M42865_IG54: ; bbWeight=0.50, gcVars=000000000000000000000002 {V23}, gc
cmp gword ptr [ebp+0x18], 0
mov gword ptr [ebp-0xC4], edi
; GC ptr vars +{V22}- je G_M42865_IG107+ je G_M42865_IG104 mov edi, gword ptr [ebp+0x18]
mov gword ptr [ebp-0xE4], edi
; GC ptr vars +{V118}
@@ -850,15 +851,15 @@ G_M42865_IG54: ; bbWeight=0.50, gcVars=000000000000000000000002 {V23}, gc
xor edx, edx
mov ecx, dword ptr [ebp-0xBC]
mov dword ptr [ebp-0xB8], ecx- jmp G_M42865_IG106+ jmp G_M42865_IG103 ;; size=71 bbWeight=0.50 PerfScore 9.12
G_M42865_IG55: ; bbWeight=0.25, gcVars=000000000000000000000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V22 V23 V112 V118}
mov gword ptr [ebp-0xC4], edi
; GC ptr vars +{V22}- jmp G_M42865_IG107+ jmp G_M42865_IG104 ;; size=11 bbWeight=0.25 PerfScore 0.75-G_M42865_IG56: ; bbWeight=2, gcVars=000000000000000020008002 {V22 V23 V112}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref+G_M42865_IG56: ; bbWeight=2, gcVars=000000000000000040008002 {V22 V23 V112}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[edi] +[ecx]
; GC ptr vars +{V01 V15 V23 V112}
mov gword ptr [ebp-0xC0], esi
@@ -882,15 +883,15 @@ G_M42865_IG56: ; bbWeight=2, gcVars=000000000000000020008002 {V22 V23 V11
; gcrRegs +[esi]
mov edi, gword ptr [ebp-0xE0]
; gcrRegs +[edi]- je G_M42865_IG94+ je G_M42865_IG103 mov ecx, gword ptr [ebp-0x58]
; gcrRegs +[ecx]
mov gword ptr [ebp-0xD8], ecx
; GC ptr vars +{V39}
cmp gword ptr [ebp-0x58], 0- je G_M42865_IG93+ je G_M42865_IG91 ;; size=76 bbWeight=2 PerfScore 42.00-G_M42865_IG57: ; bbWeight=1, gcVars=000000000000000020008043 {V22 V23 V27 V39 V112}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref+G_M42865_IG57: ; bbWeight=1, gcVars=000000000000000040008043 {V22 V23 V27 V39 V112}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[ecx]
; GC ptr vars -{V00}
mov gword ptr [ebp-0xC0], esi
@@ -903,13 +904,13 @@ G_M42865_IG57: ; bbWeight=1, gcVars=000000000000000020008043 {V22 V23 V27
cmp dword ptr [edi], esi
...
@@ -8,27 +8,27 @@
; 9 inlinees with PGO data; 33 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T19] ( 8, 7 ) ref -> [ebp-0x40] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V01 arg1 [V01,T17] ( 3, 10 ) int -> esi single-def+; V00 arg0 [V00,T20] ( 8, 7 ) ref -> [ebp-0x40] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V01 arg1 [V01,T18] ( 3, 10 ) int -> esi single-def ;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Threading.CancellationToken>-; V03 loc0 [V03,T18] ( 4, 11 ) ubyte -> [ebp-0x28] do-not-enreg[Z] EH-live
-; V04 loc1 [V04,T06] ( 8, 32 ) ref -> [ebp-0x44] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>+; V03 loc0 [V03,T19] ( 4, 11 ) ubyte -> [ebp-0x28] do-not-enreg[Z] EH-live
+; V04 loc1 [V04,T05] ( 8, 32 ) ref -> [ebp-0x44] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres> ;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>
;* V07 loc4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>-; V09 tmp0 [V09,T16] ( 6, 12 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>+; V09 tmp0 [V09,T17] ( 6, 12 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres> ;* V10 tmp1 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V13 tmp4 [V13,T23] ( 3, 6 ) int -> [ebp-0x2C] spill-single-def "Inlining Arg"+; V13 tmp4 [V13,T25] ( 3, 6 ) int -> [ebp-0x2C] spill-single-def "Inlining Arg" ;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref single-def
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref -; V20 tmp11 [V20,T21] ( 5, 8 ) int -> [ebp-0x30] spill-single-def "Inlining Arg"+; V20 tmp11 [V20,T23] ( 5, 8 ) int -> [ebp-0x30] spill-single-def "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"
@@ -36,41 +36,43 @@
;* V25 tmp16 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp17 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp18 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>-; V28 tmp19 [V28,T13] ( 2, 8 ) ubyte -> eax "Inline return value spill temp"+; V28 tmp19 [V28,T12] ( 2, 8 ) ubyte -> eax "Inline return value spill temp" ;* V29 tmp20 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp21 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"-; V32 tmp23 [V32,T09] ( 3, 24 ) byref -> edx "Inlining Arg"+; V32 tmp23 [V32,T09] ( 3, 24 ) byref -> ecx "Inlining Arg" ;* V33 tmp24 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V34 tmp25 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-;* V35 tmp26 [V35,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V35 tmp26 [V35,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
;* V37 tmp28 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"-;* V39 tmp30 [V39,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V39 tmp30 [V39,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>-; V41 tmp32 [V41,T22] ( 1, 8 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
-; V42 tmp33 [V42,T05] ( 4, 25 ) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP+; V41 tmp32 [V41,T24] ( 1, 8 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
+; V42 tmp33 [V42,T06] ( 4, 25 ) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V43 tmp34 [V43,T04] ( 6, 28 ) ref -> edi "field V05._current (fldOffset=0x4)" P-INDEP
; V44 tmp35 [V44,T00] ( 6, 41 ) int -> [ebp-0x34] "field V05._index (fldOffset=0x8)" P-INDEP-; V45 tmp36 [V45,T12] ( 3, 17 ) int -> [ebp-0x38] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP+; V45 tmp36 [V45,T21] ( 2, 9 ) int -> [ebp-0x38] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP ; V46 tmp37 [V46,T07] ( 4, 25 ) ref -> ebx single-def "field V07._list (fldOffset=0x0)" P-INDEP
; V47 tmp38 [V47,T08] ( 3, 16 ) ref -> ecx "field V07._current (fldOffset=0x4)" P-INDEP
; V48 tmp39 [V48,T01] ( 6, 41 ) int -> edi "field V07._index (fldOffset=0x8)" P-INDEP-; V49 tmp40 [V49,T20] ( 2, 9 ) int -> esi "field V07._version (fldOffset=0xc)" P-INDEP
-; V50 tmp41 [V50,T24] ( 3, 3 ) ref -> ebx single-def "field V27._list (fldOffset=0x0)" P-INDEP+; V49 tmp40 [V49,T22] ( 2, 9 ) int -> esi "field V07._version (fldOffset=0xc)" P-INDEP
+; V50 tmp41 [V50,T26] ( 3, 3 ) ref -> ebx single-def "field V27._list (fldOffset=0x0)" P-INDEP ;* V51 tmp42 [V51 ] ( 0, 0 ) ref -> zero-ref single-def "field V27._current (fldOffset=0x4)" P-INDEP-;* V52 tmp43 [V52,T28] ( 0, 0 ) int -> zero-ref "field V27._index (fldOffset=0x8)" P-INDEP
-; V53 tmp44 [V53,T26] ( 2, 2 ) int -> [ebp-0x3C] spill-single-def "field V27._version (fldOffset=0xc)" P-INDEP
-; V54 tmp45 [V54,T25] ( 3, 3 ) ref -> ebx single-def "field V37._list (fldOffset=0x0)" P-INDEP+;* V52 tmp43 [V52,T30] ( 0, 0 ) int -> zero-ref "field V27._index (fldOffset=0x8)" P-INDEP
+; V53 tmp44 [V53,T28] ( 2, 2 ) int -> [ebp-0x3C] spill-single-def "field V27._version (fldOffset=0xc)" P-INDEP
+; V54 tmp45 [V54,T27] ( 3, 3 ) ref -> ebx single-def "field V37._list (fldOffset=0x0)" P-INDEP ;* V55 tmp46 [V55 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._current (fldOffset=0x4)" P-INDEP-;* V56 tmp47 [V56,T29] ( 0, 0 ) int -> zero-ref "field V37._index (fldOffset=0x8)" P-INDEP
-; V57 tmp48 [V57,T27] ( 2, 2 ) int -> esi "field V37._version (fldOffset=0xc)" P-INDEP+;* V56 tmp47 [V56,T31] ( 0, 0 ) int -> zero-ref "field V37._index (fldOffset=0x8)" P-INDEP
+; V57 tmp48 [V57,T29] ( 2, 2 ) int -> esi "field V37._version (fldOffset=0xc)" P-INDEP ; V58 tmp49 [V58,T02] ( 3, 48 ) ref -> edi "arr expr"
; V59 tmp50 [V59,T03] ( 3, 48 ) ref -> ecx "arr expr"
; V60 EHSlots [V60 ] ( 1, 1 ) struct (20) [ebp-0x24] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V61 cse0 [V61,T10] ( 3, 24 ) int -> edi "CSE - moderate"
-; V62 cse1 [V62,T11] ( 2, 16 ) int -> ecx "CSE - moderate"+; V61 cse0 [V61,T15] ( 2, 16 ) int -> edi "CSE - moderate"
+; V62 cse1 [V62,T10] ( 2, 16 ) int -> edi "CSE - moderate"
+; V63 cse2 [V63,T16] ( 2, 16 ) int -> ecx "CSE - moderate"
+; V64 cse3 [V64,T11] ( 2, 16 ) int -> ecx "CSE - moderate" ;
; Lcl frame size = 56
@@ -87,12 +89,12 @@ G_M12834_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; GC ptr vars +{V00}
mov esi, edx
;; size=19 bbWeight=1 PerfScore 7.00-G_M12834_IG02: ; bbWeight=1, gcVars=00080000 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref+G_M12834_IG02: ; bbWeight=1, gcVars=00100000 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[ecx]
test ecx, ecx- je G_M12834_IG33+ je G_M12834_IG32 cmp dword ptr [ecx+0x08], 0- jle G_M12834_IG34+ jle G_M12834_IG33 ;; size=18 bbWeight=1 PerfScore 5.25
G_M12834_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
@@ -109,7 +111,7 @@ G_M12834_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs -[eax]
mov dword ptr [ebp-0x2C], eax
test byte ptr [D1FFAB1EH], 1 ; global ptr- je G_M12834_IG35+ je G_M12834_IG34 ;; size=39 bbWeight=1 PerfScore 10.75
G_M12834_IG04: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
@@ -118,9 +120,9 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
xor ecx, ecx
mov dword ptr [ebx+0x0C], ecx
test edx, edx- jl G_M12834_IG36+ jl G_M12834_IG35 cmp edx, 0x7FF- jg G_M12834_IG23+ jg G_M12834_IG22 ;; size=34 bbWeight=1 PerfScore 6.75
G_M12834_IG05: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebx+0x0C]
@@ -129,14 +131,16 @@ G_M12834_IG05: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
or ecx, edx
mov dword ptr [ebx+0x0C], ecx
test eax, eax- jle G_M12834_IG39+ jle G_M12834_IG38 ;; size=25 bbWeight=1 PerfScore 5.25
G_M12834_IG06: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov dword ptr [ebx+0x10], eax- mov gword ptr [ebp-0x44], ebx+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x44], edx ; GC ptr vars +{V04}- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M12834_IG07: ; bbWeight=1, gcVars=00080040 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+ ;; size=8 bbWeight=1 PerfScore 2.25
+G_M12834_IG07: ; bbWeight=1, gcVars=00100020 {V00 V04}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[ebx]
mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx]
@@ -150,11 +154,11 @@ G_M12834_IG07: ; bbWeight=1, gcVars=00080040 {V00 V04}, gcrefRegs=0000000
mov dword ptr [ebp-0x38], ecx
jmp G_M12834_IG15
;; size=24 bbWeight=1 PerfScore 8.50-G_M12834_IG08: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz+G_M12834_IG08: ; bbWeight=4, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[edi]- mov edx, edi
- ; gcrRegs +[edx]
- cmp byte ptr [edx], dl+ mov ecx, edi
+ ; gcrRegs +[ecx]
+ cmp byte ptr [ecx], cl test dword ptr [edi+0x1C], 0xD1FFAB1E
jne SHORT G_M12834_IG12
cmp gword ptr [edi+0x10], 0
@@ -162,7 +166,7 @@ G_M12834_IG08: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000
jmp SHORT G_M12834_IG10
;; size=21 bbWeight=4 PerfScore 53.00
G_M12834_IG09: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz- ; gcrRegs -[edx edi]+ ; gcrRegs -[ecx edx edi] mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -171,75 +175,72 @@ G_M12834_IG09: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
; gcrRegs -[ecx edx]
mov eax, dword ptr [ebp-0x34]
mov ecx, dword ptr [ebp-0x38]+ mov edx, gword ptr [ebp-0x44]
+ ; gcrRegs +[edx] jmp SHORT G_M12834_IG15- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M12834_IG10: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M12834_IG10: ; bbWeight=4, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[edi]- lea edx, bword ptr [edi+0x10]
- ; byrRegs +[edx]
- test edx, edx+ lea ecx, bword ptr [edi+0x10]
+ ; byrRegs +[ecx]
+ test ecx, ecx je G_M12834_IG19
push 0
; gcr arg push 0- mov ecx, edx
- ; byrRegs +[ecx]
- mov edx, gword ptr [ebp-0x44]
- ; gcrRegs +[edx]
- ; byrRegs -[edx] call <unknown method>
; gcrRegs -[edx] +[eax]
; byrRegs -[ecx]
; gcr arg pop 1
test eax, eax+ mov edx, gword ptr [ebp-0x44]
+ ; gcrRegs +[edx] je SHORT G_M12834_IG17- ;; size=27 bbWeight=4 PerfScore 25.00
-G_M12834_IG11: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz+ ;; size=25 bbWeight=4 PerfScore 24.00
+G_M12834_IG11: ; bbWeight=4, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax]
push 1
mov ecx, edi
; gcrRegs +[ecx]- mov edx, gword ptr [ebp-0x44]
- ; gcrRegs +[edx] call [<unknown method>]
; gcrRegs -[ecx edx edi]
test eax, eax- jne SHORT G_M12834_IG16
- ;; size=17 bbWeight=4 PerfScore 26.00
-G_M12834_IG12: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [ebp-0x44]
; gcrRegs +[edx]- lea edi, bword ptr [edx+0x10]
- ; byrRegs +[edi]
- mov ecx, -1+ jne SHORT G_M12834_IG16
+ ;; size=17 bbWeight=4 PerfScore 26.00
+G_M12834_IG12: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
+ lea ecx, bword ptr [edx+0x10]
+ ; byrRegs +[ecx]
+ mov edi, -1 lock - xadd dword ptr [edi], ecx
- dec ecx+ xadd dword ptr [ecx], edi
+ dec edi jne SHORT G_M12834_IG13
mov ecx, edx
; gcrRegs +[ecx]+ ; byrRegs -[ecx] xor edx, edx
; gcrRegs -[edx]
...
@@ -8,26 +8,27 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T08] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl>
-; V01 arg1 [V01,T07] ( 3, 4 ) ref -> esi class-hnd single-def <ubyte[]>+; V00 this [V00,T09] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl>
+; V01 arg1 [V01,T08] ( 3, 4 ) ref -> esi class-hnd single-def <ubyte[]> ; V02 loc0 [V02 ] ( 3, 7 ) int -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Diagnostics.Tracing.FieldMetadata>-; V05 tmp0 [V05,T09] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>+; V05 tmp0 [V05,T10] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>> ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]>-;* V07 tmp2 [V07,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V07 tmp2 [V07,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V09 tmp4 [V09,T02] ( 4, 17 ) ref -> edi single-def "field V03._list (fldOffset=0x0)" P-INDEP-; V10 tmp5 [V10,T04] ( 2, 6 ) ref -> ecx "field V03._current (fldOffset=0x4)" P-INDEP+; V10 tmp5 [V10,T05] ( 2, 6 ) ref -> ecx "field V03._current (fldOffset=0x4)" P-INDEP ; V11 tmp6 [V11,T00] ( 6, 21 ) int -> [ebp-0x28] "field V03._index (fldOffset=0x8)" P-INDEP-; V12 tmp7 [V12,T05] ( 2, 9 ) int -> ebx "field V03._version (fldOffset=0xc)" P-INDEP
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> edi single-def "field V06._list (fldOffset=0x0)" P-INDEP+; V12 tmp7 [V12,T06] ( 2, 9 ) int -> ebx "field V03._version (fldOffset=0xc)" P-INDEP
+; V13 tmp8 [V13,T11] ( 3, 3 ) ref -> edi single-def "field V06._list (fldOffset=0x0)" P-INDEP ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._current (fldOffset=0x4)" P-INDEP-;* V15 tmp10 [V15,T12] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
-; V16 tmp11 [V16,T11] ( 2, 2 ) int -> ebx "field V06._version (fldOffset=0xc)" P-INDEP+;* V15 tmp10 [V15,T13] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
+; V16 tmp11 [V16,T12] ( 2, 2 ) int -> ebx "field V06._version (fldOffset=0xc)" P-INDEP ; V17 tmp12 [V17,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V18 EHSlots [V18 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V19 cse0 [V19,T03] ( 2, 8 ) int -> ecx "CSE - moderate"+; V19 cse0 [V19,T04] ( 2, 8 ) int -> ecx "CSE - moderate"
+; V20 cse1 [V20,T03] ( 2, 16 ) int -> ecx "CSE - aggressive" ;
; Lcl frame size = 28
@@ -65,9 +66,10 @@ G_M38703_IG04: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=
mov edx, dword ptr [ebp-0x28]
;; size=15 bbWeight=2 PerfScore 17.00
G_M38703_IG05: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [edi+0x0C]+ mov ecx, dword ptr [edi+0x0C]
+ cmp ebx, ecx jne SHORT G_M38703_IG10- ;; size=5 bbWeight=8 PerfScore 32.00+ ;; size=7 bbWeight=8 PerfScore 26.00 G_M38703_IG06: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx
@@ -101,6 +103,6 @@ G_M38703_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 97, prolog size 14, PerfScore 138.25, instruction count 41, allocated bytes for code 97 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (Tier0-FullOpts)+; Total bytes of code 99, prolog size 14, PerfScore 132.25, instruction count 42, allocated bytes for code 99 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (Tier0-FullOpts) ; ============================================================
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T06] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
-; V01 arg1 [V01,T07] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>+; V00 this [V00,T07] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
+; V01 arg1 [V01,T08] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack>
;* V04 tmp0 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
@@ -18,14 +18,15 @@
; V07 tmp3 [V07,T02] ( 4, 12.50) ref -> edi single-def "field V02._list (fldOffset=0x0)" P-INDEP
; V08 tmp4 [V08,T03] ( 3, 8 ) ref -> eax "field V02._current (fldOffset=0x4)" P-INDEP
; V09 tmp5 [V09,T00] ( 6, 20.50) int -> [ebp-0x24] "field V02._index (fldOffset=0x8)" P-INDEP-; V10 tmp6 [V10,T08] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
-; V11 tmp7 [V11,T09] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP+; V10 tmp6 [V10,T09] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
+; V11 tmp7 [V11,T10] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._current (fldOffset=0x4)" P-INDEP-;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T10] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP+;* V13 tmp9 [V13,T12] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T11] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP ; V15 tmp11 [V15,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V16 EHSlots [V16 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V17 cse0 [V17,T04] ( 2, 8 ) int -> ecx "CSE - aggressive"+; V17 cse0 [V17,T06] ( 2, 8 ) int -> ecx "CSE - aggressive"
+; V18 cse1 [V18,T04] ( 2, 8 ) int -> ecx "CSE - aggressive" ;
; Lcl frame size = 24
@@ -65,7 +66,8 @@ G_M37225_IG04: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
mov edx, dword ptr [ebp-0x24]
;; size=11 bbWeight=2 PerfScore 12.50
G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [edi+0x0C]+ mov ecx, dword ptr [edi+0x0C]
+ cmp ebx, ecx jne SHORT G_M37225_IG08
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx
@@ -79,7 +81,7 @@ G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
inc edx
mov dword ptr [ebp-0x24], edx
jmp SHORT G_M37225_IG04- ;; size=30 bbWeight=4 PerfScore 74.00+ ;; size=32 bbWeight=4 PerfScore 71.00 G_M37225_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax ecx esi edi]
lea esp, [ebp-0x0C]
@@ -97,6 +99,6 @@ G_M37225_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 14, PerfScore 110.00, instruction count 40, allocated bytes for code 90 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts)+; Total bytes of code 92, prolog size 14, PerfScore 107.00, instruction count 41, allocated bytes for code 92 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts) ; ============================================================
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T06] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
-; V01 arg1 [V01,T07] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>+; V00 this [V00,T07] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
+; V01 arg1 [V01,T08] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack>
;* V04 tmp0 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
@@ -18,14 +18,15 @@
; V07 tmp3 [V07,T02] ( 4, 12.50) ref -> edi single-def "field V02._list (fldOffset=0x0)" P-INDEP
; V08 tmp4 [V08,T03] ( 3, 8 ) ref -> eax "field V02._current (fldOffset=0x4)" P-INDEP
; V09 tmp5 [V09,T00] ( 6, 20.50) int -> [ebp-0x24] "field V02._index (fldOffset=0x8)" P-INDEP-; V10 tmp6 [V10,T08] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
-; V11 tmp7 [V11,T09] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP+; V10 tmp6 [V10,T09] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
+; V11 tmp7 [V11,T10] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._current (fldOffset=0x4)" P-INDEP-;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T10] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP+;* V13 tmp9 [V13,T12] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T11] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP ; V15 tmp11 [V15,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V16 EHSlots [V16 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V17 cse0 [V17,T04] ( 2, 8 ) int -> ecx "CSE - aggressive"+; V17 cse0 [V17,T06] ( 2, 8 ) int -> ecx "CSE - aggressive"
+; V18 cse1 [V18,T04] ( 2, 8 ) int -> ecx "CSE - aggressive" ;
; Lcl frame size = 24
@@ -65,7 +66,8 @@ G_M37225_IG04: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
mov edx, dword ptr [ebp-0x24]
;; size=11 bbWeight=2 PerfScore 12.50
G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [edi+0x0C]+ mov ecx, dword ptr [edi+0x0C]
+ cmp ebx, ecx jne SHORT G_M37225_IG08
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx
@@ -79,7 +81,7 @@ G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
inc edx
mov dword ptr [ebp-0x24], edx
jmp SHORT G_M37225_IG04- ;; size=30 bbWeight=4 PerfScore 74.00+ ;; size=32 bbWeight=4 PerfScore 71.00 G_M37225_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax ecx esi edi]
lea esp, [ebp-0x0C]
@@ -97,6 +99,6 @@ G_M37225_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 14, PerfScore 110.00, instruction count 40, allocated bytes for code 90 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts)+; Total bytes of code 92, prolog size 14, PerfScore 107.00, instruction count 41, allocated bytes for code 92 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts) ; ============================================================
@@ -10,31 +10,32 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor>
; V01 arg1 [V01,T03] ( 8, 13.50) ref -> esi class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>-; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>+; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op-; V04 loc2 [V04,T13] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>+; V04 loc2 [V04,T14] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>-; V07 loc5 [V07,T11] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
-; V08 tmp0 [V08,T12] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1"+; V07 loc5 [V07,T12] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
+; V08 tmp0 [V08,T13] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>-; V10 tmp2 [V10,T09] ( 2, 4 ) ubyte -> ecx "Inlining Arg"+; V10 tmp2 [V10,T10] ( 2, 4 ) ubyte -> ecx "Inlining Arg" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V14 tmp6 [V14,T08] ( 2, 4.50) ref -> edi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
; V15 tmp7 [V15,T02] ( 4, 12.50) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V16 tmp8 [V16,T04] ( 2, 8 ) ref -> edx "field V05._current (fldOffset=0x4)" P-INDEP
; V17 tmp9 [V17,T00] ( 6, 20.50) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP-; V18 tmp10 [V18,T06] ( 3, 8.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
-; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> ebx single-def "field V11._list (fldOffset=0x0)" P-INDEP+; V18 tmp10 [V18,T09] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V19 tmp11 [V19,T15] ( 3, 1.50) ref -> ebx single-def "field V11._list (fldOffset=0x0)" P-INDEP ;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x4)" P-INDEP-;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
-; V22 tmp14 [V22,T15] ( 2, 1 ) int -> eax "field V11._version (fldOffset=0xc)" P-INDEP+;* V21 tmp13 [V21,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
+; V22 tmp14 [V22,T16] ( 2, 1 ) int -> eax "field V11._version (fldOffset=0xc)" P-INDEP ; V23 tmp15 [V23,T01] ( 3, 24 ) ref -> edx "arr expr"
; V24 EHSlots [V24 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V25 cse0 [V25,T05] ( 3, 12 ) int -> edx "CSE - aggressive"
-; V26 cse1 [V26,T10] ( 4, 3 ) ref -> ebx "CSE - moderate"+; V25 cse0 [V25,T07] ( 2, 8 ) int -> edx "CSE - aggressive"
+; V26 cse1 [V26,T05] ( 2, 8 ) int -> edx "CSE - aggressive"
+; V27 cse2 [V27,T11] ( 4, 3 ) ref -> ebx "CSE - moderate" ;
; Lcl frame size = 36
@@ -58,7 +59,7 @@ G_M53769_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
xor edx, edx
mov dword ptr [ebp-0x24], edx
;; size=8 bbWeight=1 PerfScore 2.25-G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M53769_IG03: ; bbWeight=1, gcVars=00020000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne SHORT G_M53769_IG08
lea edx, [ebp-0x24]
@@ -78,12 +79,12 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=0.50 PerfScore 1.75-G_M53769_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref+G_M53769_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ebx, gword ptr [esi+0x04]
; gcrRegs +[ebx]
test ebx, ebx- je G_M53769_IG14
- ;; size=11 bbWeight=1 PerfScore 3.25+ je SHORT G_M53769_IG13
+ ;; size=7 bbWeight=1 PerfScore 3.25 G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, ebx
; gcrRegs +[edx]
@@ -91,7 +92,7 @@ G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax- je SHORT G_M53769_IG13+ je SHORT G_M53769_IG12 mov ebx, eax
mov eax, dword ptr [ebx+0x0C]
; gcrRegs -[eax]
@@ -101,13 +102,14 @@ G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
G_M53769_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebx+0x0C]
cmp eax, edx- jne SHORT G_M53769_IG09
- cmp ecx, dword ptr [ebx+0x08]
- jae SHORT G_M53769_IG10+ jne SHORT G_M53769_IG11
+ mov edx, dword ptr [ebx+0x08]
+ cmp ecx, edx
+ jae SHORT G_M53769_IG09 mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae SHORT G_M53769_IG11+ jae SHORT G_M53769_IG10 mov edx, gword ptr [edx+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x28], ecx
@@ -119,7 +121,7 @@ G_M53769_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
mov eax, dword ptr [ebp-0x2C]
mov ecx, dword ptr [ebp-0x28]
jmp SHORT G_M53769_IG07- ;; size=45 bbWeight=4 PerfScore 99.00+ ;; size=47 bbWeight=4 PerfScore 96.00 G_M53769_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi edi]
call [System.Threading.Monitor:ThrowLockTakenException()]
@@ -127,24 +129,20 @@ G_M53769_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=7 bbWeight=0 PerfScore 0.00
G_M53769_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]- cmp dword ptr [ebp-0x2C], edx
- jne SHORT G_M53769_IG12
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M53769_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz xor ecx, ecx
; gcrRegs +[ecx]
mov gword ptr [esi+0x04], ecx- jmp SHORT G_M53769_IG14+ jmp SHORT G_M53769_IG13 ;; size=7 bbWeight=4 PerfScore 13.00-G_M53769_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx esi]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00-G_M53769_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ebx esi edi]
mov edx, ebx
; gcrRegs +[edx]
@@ -156,36 +154,36 @@ G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
mov ecx, esi
call [System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)]
; gcrRegs -[ecx edx ebx edi]- jmp SHORT G_M53769_IG10+ jmp SHORT G_M53769_IG09 ;; size=24 bbWeight=0.50 PerfScore 5.00-G_M53769_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi]
cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG18+ je SHORT G_M53769_IG17 ;; size=6 bbWeight=1 PerfScore 3.00-G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
; GC ptr vars -{V02}
call <unknown method>
; gcrRegs -[ecx]- jmp SHORT G_M53769_IG18+ jmp SHORT G_M53769_IG17 ;; size=10 bbWeight=0.50 PerfScore 2.00-G_M53769_IG16: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V02 V16}+G_M53769_IG15: ; bbWeight=0, gcVars=00020000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V02 V17} cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG17+ je SHORT G_M53769_IG16 mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]- ; GC ptr vars -{V02 V16}+ ; GC ptr vars -{V02 V17} call <unknown method>
; gcrRegs -[ecx]
;; size=14 bbWeight=0 PerfScore 0.00-G_M53769_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M53769_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M53769_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -194,9 +192,9 @@ G_M53769_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 247, prolog size 14, PerfScore 162.88, instruction count 88, allocated bytes for code 247 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier0-FullOpts)+; Total bytes of code 240, prolog size 14, PerfScore 147.88, instruction count 87, allocated bytes for code 240 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier0-FullOpts) ; ============================================================
*************** EH table for System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo)
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M53769_IG03..G_M53769_IG14) handled by [G_M53769_IG16..G_M53769_IG18) (fault)+EH#0: try [G_M53769_IG03..G_M53769_IG13) handled by [G_M53769_IG15..G_M53769_IG17) (fault)
@@ -10,31 +10,32 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor>
; V01 arg1 [V01,T03] ( 8, 13.50) ref -> esi class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>-; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>+; V02 loc0 [V02,T17] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op-; V04 loc2 [V04,T13] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>+; V04 loc2 [V04,T14] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>-; V07 loc5 [V07,T11] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
-; V08 tmp0 [V08,T12] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1"+; V07 loc5 [V07,T12] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
+; V08 tmp0 [V08,T13] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>-; V10 tmp2 [V10,T09] ( 2, 4 ) ubyte -> ecx "Inlining Arg"+; V10 tmp2 [V10,T10] ( 2, 4 ) ubyte -> ecx "Inlining Arg" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>-;* V12 tmp4 [V12,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V14 tmp6 [V14,T08] ( 2, 4.50) ref -> edi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
; V15 tmp7 [V15,T02] ( 4, 12.50) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V16 tmp8 [V16,T04] ( 2, 8 ) ref -> edx "field V05._current (fldOffset=0x4)" P-INDEP
; V17 tmp9 [V17,T00] ( 6, 20.50) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP-; V18 tmp10 [V18,T06] ( 3, 8.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
-; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> ebx single-def "field V11._list (fldOffset=0x0)" P-INDEP+; V18 tmp10 [V18,T09] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V19 tmp11 [V19,T15] ( 3, 1.50) ref -> ebx single-def "field V11._list (fldOffset=0x0)" P-INDEP ;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x4)" P-INDEP-;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
-; V22 tmp14 [V22,T15] ( 2, 1 ) int -> eax "field V11._version (fldOffset=0xc)" P-INDEP+;* V21 tmp13 [V21,T18] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
+; V22 tmp14 [V22,T16] ( 2, 1 ) int -> eax "field V11._version (fldOffset=0xc)" P-INDEP ; V23 tmp15 [V23,T01] ( 3, 24 ) ref -> edx "arr expr"
; V24 EHSlots [V24 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V25 cse0 [V25,T05] ( 3, 12 ) int -> edx "CSE - aggressive"
-; V26 cse1 [V26,T10] ( 4, 3 ) ref -> ebx "CSE - moderate"+; V25 cse0 [V25,T07] ( 2, 8 ) int -> edx "CSE - aggressive"
+; V26 cse1 [V26,T05] ( 2, 8 ) int -> edx "CSE - aggressive"
+; V27 cse2 [V27,T11] ( 4, 3 ) ref -> ebx "CSE - moderate" ;
; Lcl frame size = 36
@@ -58,7 +59,7 @@ G_M53769_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
xor edx, edx
mov dword ptr [ebp-0x24], edx
;; size=8 bbWeight=1 PerfScore 2.25-G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M53769_IG03: ; bbWeight=1, gcVars=00020000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne SHORT G_M53769_IG08
lea edx, [ebp-0x24]
@@ -78,12 +79,12 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=0.50 PerfScore 1.75-G_M53769_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref+G_M53769_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ebx, gword ptr [esi+0x04]
; gcrRegs +[ebx]
test ebx, ebx- je G_M53769_IG14
- ;; size=11 bbWeight=1 PerfScore 3.25+ je SHORT G_M53769_IG13
+ ;; size=7 bbWeight=1 PerfScore 3.25 G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, ebx
; gcrRegs +[edx]
@@ -91,7 +92,7 @@ G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax- je SHORT G_M53769_IG13+ je SHORT G_M53769_IG12 mov ebx, eax
mov eax, dword ptr [ebx+0x0C]
; gcrRegs -[eax]
@@ -101,13 +102,14 @@ G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
G_M53769_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebx+0x0C]
cmp eax, edx- jne SHORT G_M53769_IG09
- cmp ecx, dword ptr [ebx+0x08]
- jae SHORT G_M53769_IG10+ jne SHORT G_M53769_IG11
+ mov edx, dword ptr [ebx+0x08]
+ cmp ecx, edx
+ jae SHORT G_M53769_IG09 mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae SHORT G_M53769_IG11+ jae SHORT G_M53769_IG10 mov edx, gword ptr [edx+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x28], ecx
@@ -119,7 +121,7 @@ G_M53769_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
mov eax, dword ptr [ebp-0x2C]
mov ecx, dword ptr [ebp-0x28]
jmp SHORT G_M53769_IG07- ;; size=45 bbWeight=4 PerfScore 99.00+ ;; size=47 bbWeight=4 PerfScore 96.00 G_M53769_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi edi]
call [System.Threading.Monitor:ThrowLockTakenException()]
@@ -127,24 +129,20 @@ G_M53769_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=7 bbWeight=0 PerfScore 0.00
G_M53769_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]- cmp dword ptr [ebp-0x2C], edx
- jne SHORT G_M53769_IG12
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M53769_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz xor ecx, ecx
; gcrRegs +[ecx]
mov gword ptr [esi+0x04], ecx- jmp SHORT G_M53769_IG14+ jmp SHORT G_M53769_IG13 ;; size=7 bbWeight=4 PerfScore 13.00-G_M53769_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx esi]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00-G_M53769_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ebx esi edi]
mov edx, ebx
; gcrRegs +[edx]
@@ -156,36 +154,36 @@ G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
mov ecx, esi
call [System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)]
; gcrRegs -[ecx edx ebx edi]- jmp SHORT G_M53769_IG10+ jmp SHORT G_M53769_IG09 ;; size=24 bbWeight=0.50 PerfScore 5.00-G_M53769_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi]
cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG18+ je SHORT G_M53769_IG17 ;; size=6 bbWeight=1 PerfScore 3.00-G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
; GC ptr vars -{V02}
call <unknown method>
; gcrRegs -[ecx]- jmp SHORT G_M53769_IG18+ jmp SHORT G_M53769_IG17 ;; size=10 bbWeight=0.50 PerfScore 2.00-G_M53769_IG16: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V02 V16}+G_M53769_IG15: ; bbWeight=0, gcVars=00020000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V02 V17} cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG17+ je SHORT G_M53769_IG16 mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]- ; GC ptr vars -{V02 V16}+ ; GC ptr vars -{V02 V17} call <unknown method>
; gcrRegs -[ecx]
;; size=14 bbWeight=0 PerfScore 0.00-G_M53769_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M53769_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M53769_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -194,9 +192,9 @@ G_M53769_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 247, prolog size 14, PerfScore 162.88, instruction count 88, allocated bytes for code 247 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier0-FullOpts)+; Total bytes of code 240, prolog size 14, PerfScore 147.88, instruction count 87, allocated bytes for code 240 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier0-FullOpts) ; ============================================================
*************** EH table for System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo)
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M53769_IG03..G_M53769_IG14) handled by [G_M53769_IG16..G_M53769_IG18) (fault)+EH#0: try [G_M53769_IG03..G_M53769_IG13) handled by [G_M53769_IG15..G_M53769_IG17) (fault)
@@ -8,26 +8,26 @@
; 0 inlinees with PGO data; 33 single block inlinees; 18 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T19] ( 7, 7 ) ref -> [ebp-0x3C] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
-; V01 arg1 [V01,T17] ( 3, 10 ) int -> esi single-def+; V00 arg0 [V00,T20] ( 7, 7 ) ref -> [ebp-0x3C] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
+; V01 arg1 [V01,T18] ( 3, 10 ) int -> esi single-def ;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Threading.CancellationToken>-; V03 loc0 [V03,T18] ( 4, 11 ) ubyte -> [ebp-0x28] do-not-enreg[Z] EH-live
-; V04 loc1 [V04,T06] ( 8, 32 ) ref -> [ebp-0x40] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres>+; V03 loc0 [V03,T19] ( 4, 11 ) ubyte -> [ebp-0x28] do-not-enreg[Z] EH-live
+; V04 loc1 [V04,T05] ( 8, 32 ) ref -> [ebp-0x40] class-hnd exact EH-live spill-single-def <System.Threading.Tasks.Task+SetOnCountdownMres> ;* V05 loc2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>
;* V07 loc4 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V08 loc5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Threading.Tasks.Task>-; V09 tmp0 [V09,T16] ( 6, 12 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres>+; V09 tmp0 [V09,T17] ( 6, 12 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task+SetOnCountdownMres> ;* V10 tmp1 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V13 tmp4 [V13,T22] ( 3, 6 ) int -> [ebp-0x2C] spill-single-def "Inlining Arg"+; V13 tmp4 [V13,T24] ( 3, 6 ) int -> [ebp-0x2C] spill-single-def "Inlining Arg" ;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref single-def-;* V18 tmp9 [V18,T27] ( 0, 0 ) ref -> zero-ref single-def
-;* V19 tmp10 [V19,T28] ( 0, 0 ) int -> zero-ref +;* V18 tmp9 [V18,T29] ( 0, 0 ) ref -> zero-ref single-def
+;* V19 tmp10 [V19,T30] ( 0, 0 ) int -> zero-ref ;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -35,41 +35,43 @@
;* V24 tmp15 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp16 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp17 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>-; V27 tmp18 [V27,T13] ( 2, 8 ) ubyte -> eax "Inline return value spill temp"+; V27 tmp18 [V27,T12] ( 2, 8 ) ubyte -> eax "Inline return value spill temp" ;* V28 tmp19 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp20 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"-; V31 tmp22 [V31,T09] ( 3, 24 ) byref -> edx "Inlining Arg"+; V31 tmp22 [V31,T09] ( 3, 24 ) byref -> ecx "Inlining Arg" ;* V32 tmp23 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V33 tmp24 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-;* V34 tmp25 [V34,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V34 tmp25 [V34,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V35 tmp26 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>
;* V36 tmp27 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.Tasks.Task]>
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"-;* V38 tmp29 [V38,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V38 tmp29 [V38,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V39 tmp30 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Threading.Tasks.Task]>-; V40 tmp31 [V40,T21] ( 1, 8 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
-; V41 tmp32 [V41,T05] ( 4, 25 ) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP+; V40 tmp31 [V40,T23] ( 1, 8 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
+; V41 tmp32 [V41,T06] ( 4, 25 ) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP ; V42 tmp33 [V42,T04] ( 6, 28 ) ref -> edi "field V05._current (fldOffset=0x4)" P-INDEP
; V43 tmp34 [V43,T00] ( 6, 41 ) int -> [ebp-0x30] "field V05._index (fldOffset=0x8)" P-INDEP-; V44 tmp35 [V44,T12] ( 3, 17 ) int -> [ebp-0x34] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP+; V44 tmp35 [V44,T21] ( 2, 9 ) int -> [ebp-0x34] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP ; V45 tmp36 [V45,T07] ( 4, 25 ) ref -> esi single-def "field V07._list (fldOffset=0x0)" P-INDEP
; V46 tmp37 [V46,T08] ( 3, 16 ) ref -> ecx "field V07._current (fldOffset=0x4)" P-INDEP
; V47 tmp38 [V47,T01] ( 6, 41 ) int -> ebx "field V07._index (fldOffset=0x8)" P-INDEP-; V48 tmp39 [V48,T20] ( 2, 9 ) int -> edi "field V07._version (fldOffset=0xc)" P-INDEP
-; V49 tmp40 [V49,T23] ( 3, 3 ) ref -> ebx single-def "field V26._list (fldOffset=0x0)" P-INDEP+; V48 tmp39 [V48,T22] ( 2, 9 ) int -> edi "field V07._version (fldOffset=0xc)" P-INDEP
+; V49 tmp40 [V49,T25] ( 3, 3 ) ref -> ebx single-def "field V26._list (fldOffset=0x0)" P-INDEP ;* V50 tmp41 [V50 ] ( 0, 0 ) ref -> zero-ref single-def "field V26._current (fldOffset=0x4)" P-INDEP-;* V51 tmp42 [V51,T29] ( 0, 0 ) int -> zero-ref "field V26._index (fldOffset=0x8)" P-INDEP
-; V52 tmp43 [V52,T25] ( 2, 2 ) int -> [ebp-0x38] spill-single-def "field V26._version (fldOffset=0xc)" P-INDEP
-; V53 tmp44 [V53,T24] ( 3, 3 ) ref -> esi single-def "field V36._list (fldOffset=0x0)" P-INDEP+;* V51 tmp42 [V51,T31] ( 0, 0 ) int -> zero-ref "field V26._index (fldOffset=0x8)" P-INDEP
+; V52 tmp43 [V52,T27] ( 2, 2 ) int -> [ebp-0x38] spill-single-def "field V26._version (fldOffset=0xc)" P-INDEP
+; V53 tmp44 [V53,T26] ( 3, 3 ) ref -> esi single-def "field V36._list (fldOffset=0x0)" P-INDEP ;* V54 tmp45 [V54 ] ( 0, 0 ) ref -> zero-ref single-def "field V36._current (fldOffset=0x4)" P-INDEP-;* V55 tmp46 [V55,T30] ( 0, 0 ) int -> zero-ref "field V36._index (fldOffset=0x8)" P-INDEP
-; V56 tmp47 [V56,T26] ( 2, 2 ) int -> edi "field V36._version (fldOffset=0xc)" P-INDEP+;* V55 tmp46 [V55,T32] ( 0, 0 ) int -> zero-ref "field V36._index (fldOffset=0x8)" P-INDEP
+; V56 tmp47 [V56,T28] ( 2, 2 ) int -> edi "field V36._version (fldOffset=0xc)" P-INDEP ; V57 tmp48 [V57,T02] ( 3, 48 ) ref -> edi "arr expr"
; V58 tmp49 [V58,T03] ( 3, 48 ) ref -> ecx "arr expr"
; V59 EHSlots [V59 ] ( 1, 1 ) struct (20) [ebp-0x24] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V60 cse0 [V60,T10] ( 3, 24 ) int -> edi "CSE - moderate"
-; V61 cse1 [V61,T11] ( 2, 16 ) int -> ecx "CSE - moderate"+; V60 cse0 [V60,T15] ( 2, 16 ) int -> edi "CSE - moderate"
+; V61 cse1 [V61,T10] ( 2, 16 ) int -> edi "CSE - moderate"
+; V62 cse2 [V62,T16] ( 2, 16 ) int -> ecx "CSE - moderate"
+; V63 cse3 [V63,T11] ( 2, 16 ) int -> ecx "CSE - moderate" ;
; Lcl frame size = 52
@@ -86,7 +88,7 @@ G_M12834_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; GC ptr vars +{V00}
mov esi, edx
;; size=19 bbWeight=1 PerfScore 7.00-G_M12834_IG02: ; bbWeight=1, gcVars=00080000 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M12834_IG02: ; bbWeight=1, gcVars=0000000000100000 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[ecx]
test ecx, ecx
jne SHORT G_M12834_IG03
@@ -137,10 +139,12 @@ G_M12834_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
G_M12834_IG05: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ebp-0x2C]
mov dword ptr [ebx+0x10], eax- mov gword ptr [ebp-0x40], ebx+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x40], edx ; GC ptr vars +{V04}- ;; size=9 bbWeight=1 PerfScore 3.00
-G_M12834_IG06: ; bbWeight=1, gcVars=00080040 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M12834_IG06: ; bbWeight=1, gcVars=0000000000100020 {V00 V04}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[ebx]
mov ecx, gword ptr [ebp-0x3C]
; gcrRegs +[ecx]
@@ -152,68 +156,63 @@ G_M12834_IG06: ; bbWeight=1, gcVars=00080040 {V00 V04}, gcrefRegs=0000000
mov ecx, dword ptr [ebp-0x38]
; gcrRegs -[ecx]
mov dword ptr [ebp-0x34], ecx- jmp G_M12834_IG11
- ;; size=24 bbWeight=1 PerfScore 8.50
-G_M12834_IG07: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz+ jmp SHORT G_M12834_IG11
+ ;; size=21 bbWeight=1 PerfScore 8.50
+G_M12834_IG07: ; bbWeight=4, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[edi]- mov edx, edi
- ; gcrRegs +[edx]
- cmp byte ptr [edx], dl+ mov ecx, edi
+ ; gcrRegs +[ecx]
+ cmp byte ptr [ecx], cl test dword ptr [edi+0x1C], 0xD1FFAB1E
jne SHORT G_M12834_IG09
cmp gword ptr [edi+0x10], 0
jne SHORT G_M12834_IG08- lea edx, bword ptr [edi+0x10]
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
- test edx, edx+ lea ecx, bword ptr [edi+0x10]
+ ; gcrRegs -[ecx]
+ ; byrRegs +[ecx]
+ test ecx, ecx je G_M12834_IG16
push 0
; gcr arg push 0- mov ecx, edx
- ; byrRegs +[ecx]
- mov edx, gword ptr [ebp-0x40]
- ; gcrRegs +[edx]
- ; byrRegs -[edx] call <unknown method>
; gcrRegs -[edx] +[eax]
; byrRegs -[ecx]
; gcr arg pop 1
test eax, eax+ mov edx, gword ptr [ebp-0x40]
+ ; gcrRegs +[edx] je G_M12834_IG14- ;; size=50 bbWeight=4 PerfScore 70.00
-G_M12834_IG08: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz+ ;; size=48 bbWeight=4 PerfScore 69.00
+G_M12834_IG08: ; bbWeight=4, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax]
push 1
mov ecx, edi
; gcrRegs +[ecx]- mov edx, gword ptr [ebp-0x40]
- ; gcrRegs +[edx] call [<unknown method>]
; gcrRegs -[ecx edx edi]
test eax, eax- jne SHORT G_M12834_IG13
- ;; size=17 bbWeight=4 PerfScore 26.00
-G_M12834_IG09: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [ebp-0x40]
; gcrRegs +[edx]- lea edi, bword ptr [edx+0x10]
- ; byrRegs +[edi]
- mov ecx, -1+ jne SHORT G_M12834_IG13
+ ;; size=17 bbWeight=4 PerfScore 26.00
+G_M12834_IG09: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
+ lea ecx, bword ptr [edx+0x10]
+ ; byrRegs +[ecx]
+ mov edi, -1 lock - xadd dword ptr [edi], ecx
- dec ecx+ xadd dword ptr [ecx], edi
+ dec edi jne SHORT G_M12834_IG10
mov ecx, edx
; gcrRegs +[ecx]+ ; byrRegs -[ecx] xor edx, edx
; gcrRegs -[edx]
call [<unknown method>]
; gcrRegs -[ecx]- ; byrRegs -[edi] mov edx, gword ptr [ebp-0x40]
; gcrRegs +[edx]- ;; size=31 bbWeight=4 PerfScore 98.00+ ;; size=28 bbWeight=4 PerfScore 94.00 G_M12834_IG10: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edx+0x10], 0
jge SHORT G_M12834_IG12
@@ -224,13 +223,16 @@ G_M12834_IG10: ; bbWeight=4, gcrefRegs=0000000C {edx ebx}, byrefRegs=0000
; gcrRegs -[ecx edx]
mov eax, dword ptr [ebp-0x30]
mov ecx, dword ptr [ebp-0x34]- ;; size=28 bbWeight=4 PerfScore 38.00
-G_M12834_IG11: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz+ mov edx, gword ptr [ebp-0x40]
+ ; gcrRegs +[edx]
+ ;; size=31 bbWeight=4 PerfScore 42.00
+G_M12834_IG11: ; bbWeight=8, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz mov edi, dword ptr [ebx+0x0C]
cmp ecx, edi- jne SHORT G_M12834_IG18
- cmp eax, dword ptr [ebx+0x08]
- jae SHORT G_M12834_IG19+ jne SHORT G_M12834_IG17
+ mov edi, dword ptr [ebx+0x08]
+ cmp eax, edi
+ jae SHORT G_M12834_IG18 mov edi, gword ptr [ebx+0x04]
; gcrRegs +[edi]
cmp eax, dword ptr [edi+0x04]
@@ -239,25 +241,27 @@ G_M12834_IG11: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
inc eax
mov dword ptr [ebp-0x30], eax
jmp G_M12834_IG07- ;; size=33 bbWeight=8 PerfScore 148.00+ ;; size=35 bbWeight=8 PerfScore 142.00 G_M12834_IG12: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz- ; gcrRegs -[edi]+ ; gcrRegs -[edx edi]
+ mov eax, dword ptr [ebp-0x30]
+ mov ecx, dword ptr [ebp-0x34]
+ mov edx, gword ptr [ebp-0x40]
+ ; gcrRegs +[edx]
+ jmp SHORT G_M12834_IG11
+ ;; size=11 bbWeight=2 PerfScore 10.00...
@@ -8,26 +8,27 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T08] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl>
-; V01 arg1 [V01,T07] ( 3, 4 ) ref -> esi class-hnd single-def <ubyte[]>+; V00 this [V00,T09] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl>
+; V01 arg1 [V01,T08] ( 3, 4 ) ref -> esi class-hnd single-def <ubyte[]> ; V02 loc0 [V02 ] ( 3, 7 ) int -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Diagnostics.Tracing.FieldMetadata>-; V05 tmp0 [V05,T09] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>+; V05 tmp0 [V05,T10] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>> ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]>-;* V07 tmp2 [V07,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V07 tmp2 [V07,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V09 tmp4 [V09,T02] ( 4, 17 ) ref -> edi single-def "field V03._list (fldOffset=0x0)" P-INDEP-; V10 tmp5 [V10,T04] ( 2, 6 ) ref -> ecx "field V03._current (fldOffset=0x4)" P-INDEP+; V10 tmp5 [V10,T05] ( 2, 6 ) ref -> ecx "field V03._current (fldOffset=0x4)" P-INDEP ; V11 tmp6 [V11,T00] ( 6, 21 ) int -> [ebp-0x28] "field V03._index (fldOffset=0x8)" P-INDEP-; V12 tmp7 [V12,T05] ( 2, 9 ) int -> ebx "field V03._version (fldOffset=0xc)" P-INDEP
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> edi single-def "field V06._list (fldOffset=0x0)" P-INDEP+; V12 tmp7 [V12,T06] ( 2, 9 ) int -> ebx "field V03._version (fldOffset=0xc)" P-INDEP
+; V13 tmp8 [V13,T11] ( 3, 3 ) ref -> edi single-def "field V06._list (fldOffset=0x0)" P-INDEP ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._current (fldOffset=0x4)" P-INDEP-;* V15 tmp10 [V15,T12] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
-; V16 tmp11 [V16,T11] ( 2, 2 ) int -> ebx "field V06._version (fldOffset=0xc)" P-INDEP+;* V15 tmp10 [V15,T13] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
+; V16 tmp11 [V16,T12] ( 2, 2 ) int -> ebx "field V06._version (fldOffset=0xc)" P-INDEP ; V17 tmp12 [V17,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V18 EHSlots [V18 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V19 cse0 [V19,T03] ( 2, 8 ) int -> ecx "CSE - moderate"+; V19 cse0 [V19,T04] ( 2, 8 ) int -> ecx "CSE - moderate"
+; V20 cse1 [V20,T03] ( 2, 16 ) int -> ecx "CSE - aggressive" ;
; Lcl frame size = 28
@@ -65,9 +66,10 @@ G_M38703_IG04: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=
mov edx, dword ptr [ebp-0x28]
;; size=15 bbWeight=2 PerfScore 17.00
G_M38703_IG05: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [edi+0x0C]+ mov ecx, dword ptr [edi+0x0C]
+ cmp ebx, ecx jne SHORT G_M38703_IG10- ;; size=5 bbWeight=8 PerfScore 32.00+ ;; size=7 bbWeight=8 PerfScore 26.00 G_M38703_IG06: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx
@@ -101,6 +103,6 @@ G_M38703_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 97, prolog size 14, PerfScore 138.25, instruction count 41, allocated bytes for code 97 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (Tier0-FullOpts)+; Total bytes of code 99, prolog size 14, PerfScore 132.25, instruction count 42, allocated bytes for code 99 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (Tier0-FullOpts) ; ============================================================
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T06] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
-; V01 arg1 [V01,T07] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>+; V00 this [V00,T07] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
+; V01 arg1 [V01,T08] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack>
;* V04 tmp0 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
@@ -18,14 +18,15 @@
; V07 tmp3 [V07,T02] ( 4, 12.50) ref -> edi single-def "field V02._list (fldOffset=0x0)" P-INDEP
; V08 tmp4 [V08,T03] ( 3, 8 ) ref -> eax "field V02._current (fldOffset=0x4)" P-INDEP
; V09 tmp5 [V09,T00] ( 6, 20.50) int -> [ebp-0x24] "field V02._index (fldOffset=0x8)" P-INDEP-; V10 tmp6 [V10,T08] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
-; V11 tmp7 [V11,T09] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP+; V10 tmp6 [V10,T09] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
+; V11 tmp7 [V11,T10] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._current (fldOffset=0x4)" P-INDEP-;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T10] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP+;* V13 tmp9 [V13,T12] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T11] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP ; V15 tmp11 [V15,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V16 EHSlots [V16 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V17 cse0 [V17,T04] ( 2, 8 ) int -> ecx "CSE - aggressive"+; V17 cse0 [V17,T06] ( 2, 8 ) int -> ecx "CSE - aggressive"
+; V18 cse1 [V18,T04] ( 2, 8 ) int -> ecx "CSE - aggressive" ;
; Lcl frame size = 24
@@ -65,7 +66,8 @@ G_M37225_IG04: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
mov edx, dword ptr [ebp-0x24]
;; size=11 bbWeight=2 PerfScore 12.50
G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [edi+0x0C]+ mov ecx, dword ptr [edi+0x0C]
+ cmp ebx, ecx jne SHORT G_M37225_IG08
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx
@@ -79,7 +81,7 @@ G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
inc edx
mov dword ptr [ebp-0x24], edx
jmp SHORT G_M37225_IG04- ;; size=30 bbWeight=4 PerfScore 74.00+ ;; size=32 bbWeight=4 PerfScore 71.00 G_M37225_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax ecx esi edi]
lea esp, [ebp-0x0C]
@@ -97,6 +99,6 @@ G_M37225_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 14, PerfScore 110.00, instruction count 40, allocated bytes for code 90 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts)+; Total bytes of code 92, prolog size 14, PerfScore 107.00, instruction count 41, allocated bytes for code 92 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts) ; ============================================================
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T06] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
-; V01 arg1 [V01,T07] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>+; V00 this [V00,T07] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
+; V01 arg1 [V01,T08] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack>
;* V04 tmp0 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
@@ -18,14 +18,15 @@
; V07 tmp3 [V07,T02] ( 4, 12.50) ref -> edi single-def "field V02._list (fldOffset=0x0)" P-INDEP
; V08 tmp4 [V08,T03] ( 3, 8 ) ref -> eax "field V02._current (fldOffset=0x4)" P-INDEP
; V09 tmp5 [V09,T00] ( 6, 20.50) int -> [ebp-0x24] "field V02._index (fldOffset=0x8)" P-INDEP-; V10 tmp6 [V10,T08] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
-; V11 tmp7 [V11,T09] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP+; V10 tmp6 [V10,T09] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
+; V11 tmp7 [V11,T10] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._current (fldOffset=0x4)" P-INDEP-;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T10] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP+;* V13 tmp9 [V13,T12] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T11] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP ; V15 tmp11 [V15,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V16 EHSlots [V16 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V17 cse0 [V17,T04] ( 2, 8 ) int -> ecx "CSE - aggressive"+; V17 cse0 [V17,T06] ( 2, 8 ) int -> ecx "CSE - aggressive"
+; V18 cse1 [V18,T04] ( 2, 8 ) int -> ecx "CSE - aggressive" ;
; Lcl frame size = 24
@@ -65,7 +66,8 @@ G_M37225_IG04: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
mov edx, dword ptr [ebp-0x24]
;; size=11 bbWeight=2 PerfScore 12.50
G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [edi+0x0C]+ mov ecx, dword ptr [edi+0x0C]
+ cmp ebx, ecx jne SHORT G_M37225_IG08
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx
@@ -79,7 +81,7 @@ G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
inc edx
mov dword ptr [ebp-0x24], edx
jmp SHORT G_M37225_IG04- ;; size=30 bbWeight=4 PerfScore 74.00+ ;; size=32 bbWeight=4 PerfScore 71.00 G_M37225_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax ecx esi edi]
lea esp, [ebp-0x0C]
@@ -97,6 +99,6 @@ G_M37225_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 14, PerfScore 110.00, instruction count 40, allocated bytes for code 90 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts)+; Total bytes of code 92, prolog size 14, PerfScore 107.00, instruction count 41, allocated bytes for code 92 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts) ; ============================================================
@@ -9,10 +9,11 @@
;
; V00 loc0 [V00,T01] ( 4, 13 ) int -> esi
;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref -; V02 tmp0 [V02,T02] ( 3, 12 ) ref -> edx "arr expr"
-; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> eax "arr expr"+; V02 tmp0 [V02,T00] ( 3, 24 ) ref -> eax "arr expr"
+;* V03 tmp1 [V03,T04] ( 0, 0 ) ref -> zero-ref "arr expr" ; V04 EHSlots [V04 ] ( 1, 1 ) struct (16) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"-; V05 cse0 [V05,T03] ( 3, 12 ) int -> eax "CSE - aggressive"+; V05 cse0 [V05,T02] ( 3, 12 ) byref -> eax "CSE - aggressive"
+; V06 cse1 [V06,T03] ( 2, 8 ) ref -> eax "CSE - aggressive" ;
; Lcl frame size = 20
@@ -31,71 +32,60 @@ G_M37813_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
xor esi, esi
call [<unknown method>]
test eax, eax- jle SHORT G_M37813_IG07+ jle SHORT G_M37813_IG05 ;; size=12 bbWeight=1 PerfScore 4.50
G_M37813_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz- movzx eax, byte ptr [D1FFAB1EH] ; static handle
- test eax, eax
- jne SHORT G_M37813_IG05
- ;; size=11 bbWeight=4 PerfScore 13.00
-G_M37813_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[edx]
- cmp dword ptr [edx+0x04], 0
- jbe SHORT G_M37813_IG13
- xor ecx, ecx
- mov dword ptr [edx+0x08], ecx
- ;; size=17 bbWeight=2 PerfScore 14.50
-G_M37813_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edx]
- test eax, eax
- je SHORT G_M37813_IG08
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M37813_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+ cmp byte ptr [D1FFAB1EH], 0 ; data for <unknown class>:<unknown field>
+ jne SHORT G_M37813_IG04
+ mov eax, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[eax]
+ cmp dword ptr [eax+0x04], 0
+ jbe SHORT G_M37813_IG10
+ add eax, 8
+ ; gcrRegs -[eax]
+ ; byrRegs +[eax]
+ xor edx, edx
+ mov dword ptr [eax], edx
+ jmp SHORT G_M37813_IG06
+ ;; size=29 bbWeight=4 PerfScore 54.00
+G_M37813_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; byrRegs -[eax] xor eax, eax
mov dword ptr [D1FFAB1EH], eax
;; size=7 bbWeight=0.50 PerfScore 0.62-G_M37813_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M37813_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x04]
pop esi
pop ebp
ret
;; size=6 bbWeight=1 PerfScore 2.50-G_M37813_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
- cmp dword ptr [eax+0x04], 0
- jbe SHORT G_M37813_IG09+G_M37813_IG06: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
+ ; byrRegs +[eax] mov edx, dword ptr [D1FFAB1EH] ; static handle- mov dword ptr [eax+0x08], edx
- jmp SHORT G_M37813_IG10
- ;; size=22 bbWeight=4 PerfScore 44.00
-G_M37813_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M37813_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+ mov dword ptr [eax], edx
+ ;; size=8 bbWeight=4 PerfScore 12.00
+G_M37813_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; byrRegs -[eax] inc esi
call [<unknown method>]
cmp eax, esi
jg SHORT G_M37813_IG03
;; size=11 bbWeight=4 PerfScore 18.00-G_M37813_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M37813_IG07+G_M37813_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M37813_IG05 ;; size=2 bbWeight=1 PerfScore 2.00-G_M37813_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M37813_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M37813_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M37813_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 128, prolog size 21, PerfScore 110.88, instruction count 46, allocated bytes for code 128 (MethodHash=996e6c4a) for method Program:M49() (Tier0-FullOpts)+; Total bytes of code 105, prolog size 21, PerfScore 100.38, instruction count 39, allocated bytes for code 105 (MethodHash=996e6c4a) for method Program:M49() (Tier0-FullOpts) ; ============================================================
*************** EH table for Program:M49()
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M37813_IG08..G_M37813_IG10) handled by [G_M37813_IG12..G_M37813_IG13) (fault)+EH#0: try [G_M37813_IG06..G_M37813_IG07) handled by [G_M37813_IG09..G_M37813_IG10) (fault)
@@ -9,10 +9,11 @@
;
; V00 loc0 [V00,T01] ( 4, 13 ) int -> esi
;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref -; V02 tmp0 [V02,T02] ( 3, 12 ) ref -> edx "arr expr"
-; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> eax "arr expr"+; V02 tmp0 [V02,T00] ( 3, 24 ) ref -> eax "arr expr"
+;* V03 tmp1 [V03,T04] ( 0, 0 ) ref -> zero-ref "arr expr" ; V04 EHSlots [V04 ] ( 1, 1 ) struct (16) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"-; V05 cse0 [V05,T03] ( 3, 12 ) int -> eax "CSE - aggressive"+; V05 cse0 [V05,T02] ( 3, 12 ) byref -> eax "CSE - aggressive"
+; V06 cse1 [V06,T03] ( 2, 8 ) ref -> eax "CSE - aggressive" ;
; Lcl frame size = 20
@@ -31,71 +32,60 @@ G_M37813_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
xor esi, esi
call [<unknown method>]
test eax, eax- jle SHORT G_M37813_IG07+ jle SHORT G_M37813_IG05 ;; size=12 bbWeight=1 PerfScore 4.50
G_M37813_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz- movzx eax, byte ptr [D1FFAB1EH] ; static handle
- test eax, eax
- jne SHORT G_M37813_IG05
- ;; size=11 bbWeight=4 PerfScore 13.00
-G_M37813_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[edx]
- cmp dword ptr [edx+0x04], 0
- jbe SHORT G_M37813_IG13
- xor ecx, ecx
- mov dword ptr [edx+0x08], ecx
- ;; size=17 bbWeight=2 PerfScore 14.50
-G_M37813_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edx]
- test eax, eax
- je SHORT G_M37813_IG08
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M37813_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+ cmp byte ptr [D1FFAB1EH], 0 ; data for <unknown class>:<unknown field>
+ jne SHORT G_M37813_IG04
+ mov eax, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[eax]
+ cmp dword ptr [eax+0x04], 0
+ jbe SHORT G_M37813_IG10
+ add eax, 8
+ ; gcrRegs -[eax]
+ ; byrRegs +[eax]
+ xor edx, edx
+ mov dword ptr [eax], edx
+ jmp SHORT G_M37813_IG06
+ ;; size=29 bbWeight=4 PerfScore 54.00
+G_M37813_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; byrRegs -[eax] xor eax, eax
mov dword ptr [D1FFAB1EH], eax
;; size=7 bbWeight=0.50 PerfScore 0.62-G_M37813_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M37813_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x04]
pop esi
pop ebp
ret
;; size=6 bbWeight=1 PerfScore 2.50-G_M37813_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
- cmp dword ptr [eax+0x04], 0
- jbe SHORT G_M37813_IG09+G_M37813_IG06: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
+ ; byrRegs +[eax] mov edx, dword ptr [D1FFAB1EH] ; static handle- mov dword ptr [eax+0x08], edx
- jmp SHORT G_M37813_IG10
- ;; size=22 bbWeight=4 PerfScore 44.00
-G_M37813_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M37813_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+ mov dword ptr [eax], edx
+ ;; size=8 bbWeight=4 PerfScore 12.00
+G_M37813_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; byrRegs -[eax] inc esi
call [<unknown method>]
cmp eax, esi
jg SHORT G_M37813_IG03
;; size=11 bbWeight=4 PerfScore 18.00-G_M37813_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M37813_IG07+G_M37813_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M37813_IG05 ;; size=2 bbWeight=1 PerfScore 2.00-G_M37813_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M37813_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M37813_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M37813_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 128, prolog size 21, PerfScore 110.88, instruction count 46, allocated bytes for code 128 (MethodHash=996e6c4a) for method Program:M49() (FullOpts)+; Total bytes of code 105, prolog size 21, PerfScore 100.38, instruction count 39, allocated bytes for code 105 (MethodHash=996e6c4a) for method Program:M49() (FullOpts) ; ============================================================
*************** EH table for Program:M49()
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M37813_IG08..G_M37813_IG10) handled by [G_M37813_IG12..G_M37813_IG13) (fault)+EH#0: try [G_M37813_IG06..G_M37813_IG07) handled by [G_M37813_IG09..G_M37813_IG10) (fault)
@@ -8,73 +8,74 @@
; 2 inlinees with PGO data; 22 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T30] ( 6, 5 ) ref -> [ebp-0x48] this class-hnd single-def <ILCompiler.PEWriter.SectionBuilder>
-; V01 arg1 [V01,T40] ( 2, 1.50) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Reflection.PortableExecutable.SectionLocation>
-; V02 loc0 [V02,T23] ( 7, 37 ) ref -> [ebp-0x4C] class-hnd <System.Reflection.Metadata.BlobBuilder>+; V00 this [V00,T31] ( 6, 5 ) ref -> [ebp-0x44] this class-hnd single-def <ILCompiler.PEWriter.SectionBuilder>
+; V01 arg1 [V01,T41] ( 2, 1.50) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.Reflection.PortableExecutable.SectionLocation>
+; V02 loc0 [V02,T23] ( 7, 37 ) ref -> [ebp-0x48] class-hnd <System.Reflection.Metadata.BlobBuilder> ; V03 loc1 [V03,T08] ( 6,129.50) int -> [ebp-0x24] -; V04 loc2 [V04,T02] ( 12,290.50) ref -> [ebp-0x50] class-hnd <System.Collections.Generic.List`1[ushort]>
-; V05 loc3 [V05,T35] ( 5, 3.50) ref -> eax class-hnd single-def <ILCompiler.PEWriter.Section>
-; V06 loc4 [V06,T26] ( 7, 22 ) ref -> [ebp-0x54] class-hnd EH-live spill-single-def <<unknown class>>
-; V07 loc5 [V07,T19] ( 3, 40 ) ref -> [ebp-0x58] class-hnd spill-single-def <ILCompiler.PEWriter.Section>+; V04 loc2 [V04,T02] ( 12,290.50) ref -> [ebp-0x4C] class-hnd <System.Collections.Generic.List`1[ushort]>
+; V05 loc3 [V05,T36] ( 5, 3.50) ref -> eax class-hnd single-def <ILCompiler.PEWriter.Section>
+; V06 loc4 [V06,T27] ( 7, 22 ) ref -> [ebp-0x50] class-hnd EH-live spill-single-def <<unknown class>>
+; V07 loc5 [V07,T19] ( 3, 40 ) ref -> [ebp-0x54] class-hnd spill-single-def <ILCompiler.PEWriter.Section> ;* V08 loc6 [V08 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[ILCompiler.PEWriter.PlacedObjectData]>
;* V09 loc7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <ILCompiler.PEWriter.PlacedObjectData>-; V10 loc8 [V10,T01] ( 6,328 ) int -> [ebp-0x28]
-; V11 loc9 [V11,T03] ( 4,224 ) int -> ecx +; V10 loc8 [V10,T01] ( 6,328 ) int -> ebx
+; V11 loc9 [V11,T03] ( 4,224 ) int -> eax ;* V12 loc10 [V12 ] ( 0, 0 ) int -> zero-ref -; V13 loc11 [V13,T09] ( 4,128 ) int -> [ebp-0x2C] spill-single-def
-; V14 loc12 [V14,T16] ( 3, 96 ) ushort -> [ebp-0x30] spill-single-def
-; V15 tmp0 [V15,T28] ( 5, 10 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Metadata.BlobBuilder>
-; V16 tmp1 [V16,T34] ( 2, 4 ) ref -> edx class-hnd single-def "dup spill" <<unknown class>>
-; V17 tmp2 [V17,T31] ( 3, 6 ) ref -> [ebp-0x5C] class-hnd spill-single-def "impAppendStmt" <<unknown class>>+; V13 loc11 [V13,T09] ( 4,128 ) int -> [ebp-0x28] spill-single-def
+; V14 loc12 [V14,T15] ( 3, 96 ) ushort -> [ebp-0x2C] spill-single-def
+; V15 tmp0 [V15,T29] ( 5, 10 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Metadata.BlobBuilder>
+; V16 tmp1 [V16,T35] ( 2, 4 ) ref -> edx class-hnd single-def "dup spill" <<unknown class>>
+; V17 tmp2 [V17,T32] ( 3, 6 ) ref -> [ebp-0x58] class-hnd spill-single-def "impAppendStmt" <<unknown class>> ;* V18 tmp3 [V18 ] ( 0, 0 ) ref -> zero-ref single-def-; V19 tmp4 [V19,T33] ( 5, 4.50) ref -> [ebp-0x60] +; V19 tmp4 [V19,T34] ( 5, 4.50) ref -> [ebp-0x5C] ;* V20 tmp5 [V20 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"-; V21 tmp6 [V21,T04] ( 3,192 ) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ushort]>+; V21 tmp6 [V21,T04] ( 3,192 ) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <System.Collections.Generic.List`1[ushort]> ;* V22 tmp7 [V22 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V23 tmp8 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.PortableExecutable.DirectoryEntry>-; V24 tmp9 [V24,T32] ( 5, 5 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>>+; V24 tmp9 [V24,T33] ( 5, 5 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V25 tmp10 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"-; V26 tmp11 [V26,T36] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V27 tmp12 [V27,T27] ( 7, 14 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>>+; V26 tmp11 [V26,T37] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V27 tmp12 [V27,T28] ( 7, 14 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V28 tmp13 [V28 ] ( 0, 0 ) ref -> zero-ref
;* V29 tmp14 [V29 ] ( 0, 0 ) ref -> zero-ref
;* V30 tmp15 [V30 ] ( 0, 0 ) ref -> zero-ref
;* V31 tmp16 [V31 ] ( 0, 0 ) ref -> zero-ref -; V32 tmp17 [V32,T25] ( 3, 24 ) ref -> edx class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]>+; V32 tmp17 [V32,T26] ( 3, 24 ) ref -> edx class-hnd "Inlining Arg" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]> ;* V33 tmp18 [V33 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[ILCompiler.PEWriter.PlacedObjectData]>-; V34 tmp19 [V34,T06] ( 4,160 ) int -> [ebp-0x34] "Inline return value spill temp"
-; V35 tmp20 [V35,T13] ( 3, 96 ) ref -> [ebp-0x68] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>+; V34 tmp19 [V34,T06] ( 4,160 ) int -> [ebp-0x30] "Inline return value spill temp"
+; V35 tmp20 [V35,T12] ( 3, 96 ) ref -> edi class-hnd "Inline stloc first use temp" <<unknown class>> ; V36 tmp21 [V36,T10] ( 4,128 ) int -> ecx "Inline stloc first use temp"-;* V37 tmp22 [V37,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V37 tmp22 [V37,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V38 tmp23 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ILCompiler.PEWriter.PlacedObjectData]>
;* V39 tmp24 [V39 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V40 tmp25 [V40 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"-; V41 tmp26 [V41,T39] ( 2, 2 ) int -> eax "Inlining Arg"
-; V42 tmp27 [V42,T05] ( 4,144 ) ref -> ebx "field V09.Data (fldOffset=0x0)" P-INDEP
-; V43 tmp28 [V43,T22] ( 2, 40 ) int -> [ebp-0x38] spill-single-def "field V09.Offset (fldOffset=0x4)" P-INDEP
-; V44 tmp29 [V44,T41] ( 2, 1 ) int -> edi single-def "field V23.RelativeVirtualAddress (fldOffset=0x0)" P-INDEP
-; V45 tmp30 [V45,T42] ( 2, 1 ) int -> eax single-def "field V23.Size (fldOffset=0x4)" P-INDEP
-; V46 tmp31 [V46,T38] ( 3, 2 ) int -> [ebp-0x3C] spill-single-def "V01.[000..004)"
-; V47 tmp32 [V47,T12] ( 5, 84 ) ref -> [ebp-0x6C] spill-single-def "V08.[000..004)"
-; V48 tmp33 [V48,T11] ( 6, 84 ) int -> [ebp-0x40] "V08.[004..008)"
-; V49 tmp34 [V49,T18] ( 3, 52 ) int -> [ebp-0x44] spill-single-def "V08.[008..012)"
-; V50 tmp35 [V50,T20] ( 2, 24 ) ref -> ebx "V08.[012..016)"+; V41 tmp26 [V41,T40] ( 2, 2 ) int -> eax "Inlining Arg"
+; V42 tmp27 [V42,T05] ( 4,144 ) ref -> [ebp-0x64] spill-single-def "field V09.Data (fldOffset=0x0)" P-INDEP
+; V43 tmp28 [V43,T22] ( 2, 40 ) int -> [ebp-0x34] spill-single-def "field V09.Offset (fldOffset=0x4)" P-INDEP
+; V44 tmp29 [V44,T42] ( 2, 1 ) int -> edi single-def "field V23.RelativeVirtualAddress (fldOffset=0x0)" P-INDEP
+; V45 tmp30 [V45,T43] ( 2, 1 ) int -> eax single-def "field V23.Size (fldOffset=0x4)" P-INDEP
+; V46 tmp31 [V46,T39] ( 3, 2 ) int -> [ebp-0x38] spill-single-def "V01.[000..004)"
+; V47 tmp32 [V47,T16] ( 4, 68 ) ref -> [ebp-0x68] spill-single-def "V08.[000..004)"
+; V48 tmp33 [V48,T11] ( 6, 84 ) int -> [ebp-0x3C] "V08.[004..008)"
+; V49 tmp34 [V49,T24] ( 2, 36 ) int -> [ebp-0x40] spill-single-def "V08.[008..012)"
+; V50 tmp35 [V50,T20] ( 2, 24 ) ref -> ecx "V08.[012..016)" ; V51 tmp36 [V51,T21] ( 2, 24 ) int -> esi "V08.[016..020)"
;* V52 tmp37 [V52 ] ( 0, 0 ) ref -> zero-ref "V33.[000..004)"
;* V53 tmp38 [V53 ] ( 0, 0 ) int -> zero-ref "V33.[004..008)"-; V54 tmp39 [V54,T29] ( 2, 8 ) int -> ecx "V33.[008..012)"+; V54 tmp39 [V54,T30] ( 2, 8 ) int -> ecx "V33.[008..012)" ;* V55 tmp40 [V55 ] ( 0, 0 ) ref -> zero-ref "V33.[012..016)"
;* V56 tmp41 [V56 ] ( 0, 0 ) int -> zero-ref "V33.[016..020)"-; V57 tmp42 [V57,T14] ( 3, 96 ) byref -> esi "Spilling address for field-by-field copy"
-; V58 tmp43 [V58,T15] ( 3, 96 ) ref -> esi "arr expr"
-; V59 tmp44 [V59,T00] ( 3,384 ) ref -> esi "arr expr"+; V57 tmp42 [V57,T13] ( 3, 96 ) byref -> esi "Spilling address for field-by-field copy"
+; V58 tmp43 [V58,T14] ( 3, 96 ) ref -> esi "arr expr"
+; V59 tmp44 [V59,T00] ( 3,384 ) ref -> eax "arr expr" ;* V60 tmp45 [V60,T17] ( 0, 0 ) ref -> zero-ref "arr expr"
; V61 EHSlots [V61 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"-;* V62 cse0 [V62,T43] ( 0, 0 ) int -> zero-ref "CSE - conservative"+;* V62 cse0 [V62,T44] ( 0, 0 ) int -> zero-ref "CSE - conservative" ; V63 cse1 [V63,T07] ( 3,160 ) byref -> esi "CSE - moderate"-; V64 cse2 [V64,T37] ( 3, 2.50) int -> eax "CSE - conservative"+; V64 cse2 [V64,T38] ( 3, 2.50) int -> eax "CSE - conservative"
+; V65 cse3 [V65,T18] ( 2, 32 ) int -> esi "CSE - conservative" ;-; Lcl frame size = 96+; Lcl frame size = 92
G_M62078_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -82,7 +83,7 @@ G_M62078_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx- sub esp, 96+ sub esp, 92 xor eax, eax
mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], eax
@@ -93,7 +94,7 @@ G_M62078_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=25 bbWeight=1 PerfScore 9.00
G_M62078_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, dword ptr [ebp+0x08]- mov dword ptr [ebp-0x3C], edi+ mov dword ptr [ebp-0x38], edi mov ecx, 0xD1FFAB1E ; System.Reflection.Metadata.BlobBuilder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -117,7 +118,7 @@ G_M62078_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov dword ptr [ebp-0x24], eax
xor edx, edx
; gcrRegs +[edx]- mov gword ptr [ebp-0x50], edx+ mov gword ptr [ebp-0x4C], edx ; GC ptr vars +{V04}
mov ecx, esi
; gcrRegs +[ecx]
@@ -134,29 +135,29 @@ G_M62078_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=0
mov dword ptr [eax+0x1C], edi
mov ebx, gword ptr [eax+0x08]
; gcrRegs +[ebx]- mov gword ptr [ebp-0x4C], ebx+ mov gword ptr [ebp-0x48], ebx ; GC ptr vars +{V02}- mov ebx, gword ptr [ebp-0x4C]
- mov edi, dword ptr [ebp-0x3C]+ mov ebx, gword ptr [ebp-0x48]
+ mov edi, dword ptr [ebp-0x38] ;; size=21 bbWeight=0.50 PerfScore 4.00
G_M62078_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
; GC ptr vars -{V02}- mov gword ptr [ebp-0x48], esi+ mov gword ptr [ebp-0x44], esi ; GC ptr vars +{V00}
mov eax, gword ptr [esi+0x0C]
; gcrRegs +[eax]- mov gword ptr [ebp-0x5C], eax+ mov gword ptr [ebp-0x58], eax ; GC ptr vars +{V17}
test byte ptr [D1FFAB1EH], 1 ; global ptr- je G_M62078_IG37+ je G_M62078_IG36 ;; size=22 bbWeight=1 PerfScore 8.00-G_M62078_IG05: ; bbWeight=1, gcVars=00000000C0000004 {V00 V04 V17}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M62078_IG05: ; bbWeight=1, gcVars=0000000180000004 {V00 V04 V17}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax esi]
mov edx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[edx]
test edx, edx- mov gword ptr [ebp-0x60], edx+ mov gword ptr [ebp-0x5C], edx ; GC ptr vars +{V19}
jne SHORT G_M62078_IG07
;; size=13 bbWeight=1 PerfScore 4.25
@@ -169,7 +170,7 @@ G_M62078_IG06: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
mov ecx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ecx]
test ecx, ecx- je G_M62078_IG38+ je G_M62078_IG37 lea edx, bword ptr [eax+0x04]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_ECX
@@ -178,25 +179,25 @@ G_M62078_IG06: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
mov dword ptr [eax+0x0C], 0xD1FFAB1E
mov edx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF_EAX- mov gword ptr [ebp-0x60], eax+ mov gword ptr [ebp-0x5C], eax ; GC ptr vars +{V19}
;; size=52 bbWeight=0.50 PerfScore 4.62-G_M62078_IG07: ; bbWeight=1, gcVars=00000002C0000004 {V00 V04 V17 V19}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref+G_M62078_IG07: ; bbWeight=1, gcVars=0000000580000004 {V00 V04 V17 V19}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax]
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
lea edx, bword ptr [eax+0x04]
; byrRegs +[edx]- mov ecx, gword ptr [ebp-0x5C]+ mov ecx, gword ptr [ebp-0x58] ; gcrRegs +[ecx]
call CORINFO_HELP_ASSIGN_REF_ECX
; byrRegs -[edx]
test ecx, ecx- je G_M62078_IG39
- mov ecx, gword ptr [ebp-0x60]+ je G_M62078_IG38
+ mov ecx, gword ptr [ebp-0x5C] test ecx, ecx- je G_M62078_IG40+ je G_M62078_IG39 xor edx, edx
; gcrRegs +[edx]
mov gword ptr [eax+0x08], edx
@@ -219,123 +220,124 @@ G_M62078_IG07: ; bbWeight=1, gcVars=00000002C0000004 {V00 V04 V17 V19}, g
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]- mov gword ptr [ebp-0x54], eax+ mov gword ptr [ebp-0x50], eax ; GC ptr vars +{V06}
;; size=82 bbWeight=1 PerfScore 18.75-G_M62078_IG08: ; bbWeight=1, gcVars=0000000044000004 {V00 V04 V06}, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, gcvars, byref+G_M62078_IG08: ; bbWeight=1, gcVars=0000000088000004 {V00 V04 V06}, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, gcvars, byref mov ecx, eax
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[eax ecx]
test eax, eax- je G_M62078_IG28+ je G_M62078_IG27 ;; size=16 bbWeight=1 PerfScore 4.50
G_M62078_IG09: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref- mov ecx, gword ptr [ebp-0x54]+ mov ecx, gword ptr [ebp-0x50] ; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx] +[eax]- mov gword ptr [ebp-0x58], eax+ mov gword ptr [ebp-0x54], eax ; GC ptr vars +{V07}
mov edx, gword ptr [eax+0x0C]
; gcrRegs +[edx]
...
@@ -121,7 +121,7 @@
;* V110 tmp95 [V110,T56] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V111 tmp96 [V111,T03] ( 3, 19.68) ref -> esi class-hnd exact "Inlining Arg" <System.String>
; V112 tmp97 [V112,T10] ( 5, 12 ) int -> esi "Inlining Arg"-; V113 tmp98 [V113,T17] ( 3, 8 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>+; V113 tmp98 [V113,T17] ( 3, 8 ) ref -> edx class-hnd exact "Inlining Arg" <System.String> ;* V114 tmp99 [V114 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V115 tmp100 [V115 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.Emit.RuntimeMethodBuilder>
; V116 tmp101 [V116,T45] ( 5, 3 ) ref -> eax class-hnd single-def "Inlining Arg" <<unknown class>>
@@ -207,7 +207,7 @@ G_M15401_IG02: ; bbWeight=1, gcVars=000000000000000000000200 {V00}, gcref
setne cl
movzx ecx, cl
mov dword ptr [ebp-0x10], ecx- jmp G_M15401_IG22+ jmp G_M15401_IG17 ;; size=47 bbWeight=1 PerfScore 10.50
G_M15401_IG03: ; bbWeight=2.00, gcVars=000000000000000000004200 {V00 V08}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx]
@@ -235,12 +235,12 @@ G_M15401_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
mov dword ptr [ebp-0x20], ecx
mov byte ptr [ebp-0x1C], 0
cmp byte ptr [ebp-0x1C], 0- jne G_M15401_IG15+ jne G_M15401_IG20 mov esi, gword ptr [ebp-0x58]
; gcrRegs +[esi]
; byrRegs -[esi]
test esi, esi- je G_M15401_IG16+ je G_M15401_IG21 mov ecx, dword ptr [ebp-0x20]
cmp ecx, dword ptr [ebp-0x14]
ja G_M15401_IG48
@@ -264,7 +264,7 @@ G_M15401_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
G_M15401_IG05: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov eax, dword ptr [ebp-0x30]
cmp dword ptr [esi+0x04], eax- ja G_M15401_IG16+ ja G_M15401_IG21 ;; size=12 bbWeight=2 PerfScore 10.00
G_M15401_IG06: ; bbWeight=2.00, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
lea edx, bword ptr [esi+0x08]
@@ -303,7 +303,7 @@ G_M15401_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
;; size=46 bbWeight=2 PerfScore 25.00
G_M15401_IG08: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
cmp dword ptr [ebp-0x34], 2- jb G_M15401_IG18+ jb G_M15401_IG25 ;; size=10 bbWeight=2 PerfScore 6.00
G_M15401_IG09: ; bbWeight=2.00, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov edx, 0xD1FFAB1E
@@ -341,10 +341,10 @@ G_M15401_IG10: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=57 bbWeight=2 PerfScore 32.50-G_M15401_IG11: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz+G_M15401_IG11: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref cmp dword ptr [ebp-0x38], 0- je SHORT G_M15401_IG19
- ;; size=6 bbWeight=2 PerfScore 6.00+ je G_M15401_IG26
+ ;; size=10 bbWeight=2 PerfScore 6.00 G_M15401_IG12: ; bbWeight=2.00, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov edx, 0xD1FFAB1E
; byrRegs +[edx]
@@ -368,7 +368,7 @@ G_M15401_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov bword ptr [ebp-0x74], eax
; GC ptr vars +{V73}
test ebx, ebx- jge SHORT G_M15401_IG20+ jge SHORT G_M15401_IG15 mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -376,51 +376,14 @@ G_M15401_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [<unknown method>]
; gcrRegs -[ecx edx]
; byrRegs -[eax]- jmp SHORT G_M15401_IG17
- ;; size=28 bbWeight=2 PerfScore 17.50
-G_M15401_IG15: ; bbWeight=1, gcVars=000000000000000000004200 {V00 V08}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
- ; GC ptr vars -{V73}
- mov esi, gword ptr [ebp-0x58]
- ; gcrRegs +[esi]
- ;; size=3 bbWeight=1 PerfScore 1.00
-G_M15401_IG16: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- lea ecx, [ebp-0x28]
- mov edx, esi
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[edx]
- jmp G_M15401_IG07
- ;; size=16 bbWeight=0.00 PerfScore 0.02
-G_M15401_IG17: ; bbWeight=2, gcVars=000000000000000000044200 {V00 V08 V73}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V73} mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]- jmp SHORT G_M15401_IG20
- ;; size=18 bbWeight=2 PerfScore 11.00
-G_M15401_IG18: ; bbWeight=0.01, gcVars=000000000000000000004200 {V00 V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V73}
- lea ecx, [ebp-0x28]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[edx]
- jmp G_M15401_IG10
- ;; size=19 bbWeight=0.01 PerfScore 0.03
-G_M15401_IG19: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- lea ecx, [ebp-0x28]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[edx]
- jmp SHORT G_M15401_IG13
- ;; size=16 bbWeight=0.01 PerfScore 0.03
-G_M15401_IG20: ; bbWeight=2, gcVars=000000000000000000044200 {V00 V08 V73}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V73}+ ;; size=42 bbWeight=2 PerfScore 20.50
+G_M15401_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov eax, bword ptr [ebp-0x74]
; byrRegs +[eax]
push ebx
@@ -439,9 +402,9 @@ G_M15401_IG20: ; bbWeight=2, gcVars=000000000000000000044200 {V00 V08 V73
vmovdqu xmmword ptr [ebp-0x28], xmm0
vmovdqu xmmword ptr [ebp-0x20], xmm0
test edx, edx- je SHORT G_M15401_IG22+ je SHORT G_M15401_IG17 ;; size=33 bbWeight=2 PerfScore 17.67-G_M15401_IG21: ; bbWeight=1.94, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref+G_M15401_IG16: ; bbWeight=1.94, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax]
push 0
mov ecx, gword ptr [D1FFAB1EH] ; static handle
@@ -450,7 +413,7 @@ G_M15401_IG21: ; bbWeight=1.94, gcrefRegs=0000004C {edx ebx esi}, byrefRe
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=1.94 PerfScore 17.48-G_M15401_IG22: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref+G_M15401_IG17: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi]
mov edx, gword ptr [ebp-0x50]
; gcrRegs +[edx]
@@ -467,14 +430,14 @@ G_M15401_IG22: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
test eax, eax
jne G_M15401_IG03
;; size=26 bbWeight=8 PerfScore 94.00-G_M15401_IG23: ; bbWeight=1, gcVars=000000000000000000000200 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M15401_IG18: ; bbWeight=1, gcVars=000000000000000000000200 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax]
; GC ptr vars -{V08}
mov esi, dword ptr [ebp-0x10]
test esi, esi- jne SHORT G_M15401_IG25
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M15401_IG24: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref+ jne G_M15401_IG33
+ ;; size=11 bbWeight=1 PerfScore 2.25
+G_M15401_IG19: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
mov edx, dword ptr [edi+0x04]
@@ -500,17 +463,146 @@ G_M15401_IG24: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
mov edi, gword ptr [ebp-0x5C]
; gcrRegs +[edi]
mov gword ptr [ebp+0x10], edi- ;; size=59 bbWeight=0.50 PerfScore 10.00
-G_M15401_IG25: ; bbWeight=1, gcVars=000000000000000000000200 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edi]
- ; GC ptr vars -{V09}+ jmp G_M15401_IG33
+ ;; size=64 bbWeight=0.50 PerfScore 11.00
+G_M15401_IG20: ; bbWeight=1, gcVars=000000000000000000004200 {V00 V08}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ebx edi]
+ ; GC ptr vars -{V09} +{V08}
+ mov esi, gword ptr [ebp-0x58]
+ ; gcrRegs +[esi]
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M15401_IG21: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ lea ecx, [ebp-0x28]
+ mov edx, esi
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[edx]
+ jmp G_M15401_IG07
+ ;; size=16 bbWeight=0.00 PerfScore 0.02
+G_M15401_IG22: ; bbWeight=0.50, gcVars=000000000000000000008200 {V00 V12}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[esi] +[ebx edi]
+ ; GC ptr vars -{V08} +{V12 V15}
+ xor ecx, ecx
+ mov edx, gword ptr [ebp+0x0C]
+ ; gcrRegs +[edx]
+ cmp dword ptr [edx+0x04], 0
+ jle G_M15401_IG31
+ ;; size=15 bbWeight=0.50 PerfScore 2.62
+G_M15401_IG23: ; bbWeight=4, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz
+ mov esi, gword ptr [edx+4*ecx+0x08]
+ ; gcrRegs +[esi]
+ test esi, esi
+ je SHORT G_M15401_IG30
+ ;; size=8 bbWeight=4 PerfScore 13.00
+G_M15401_IG24: ; bbWeight=1.84, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M15401_IG27
+ ;; size=2 bbWeight=1.84 PerfScore 3.68
+G_M15401_IG25: ; bbWeight=0.01, gcVars=000000000000000000004200 {V00 V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx ebx edi]
+ ; GC ptr vars -{V12 V15} +{V08}
+ lea ecx, [ebp-0x28]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[edx]
+ jmp G_M15401_IG10
+ ;; size=19 bbWeight=0.01 PerfScore 0.03
+G_M15401_IG26: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ lea ecx, [ebp-0x28]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[edx]
+ jmp G_M15401_IG13
+ ;; size=19 bbWeight=0.01 PerfScore 0.03
+G_M15401_IG27: ; bbWeight=1.84, gcVars=000000000000000000008200 {V00 V12}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[edx ebx edi]
+ ; GC ptr vars -{V08} +{V12 V15}
+ cmp dword ptr [esi+0x04], 0
+ je SHORT G_M15401_IG30
+ ;; size=6 bbWeight=1.84 PerfScore 7.35
+G_M15401_IG28: ; bbWeight=2, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi]
+ cmp dword ptr [ebp-0x10], 0
+ jne G_M15401_IG43
+ mov esi, 2
+ ;; size=15 bbWeight=2 PerfScore 6.50
+G_M15401_IG29: ; bbWeight=2, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref
+ add esi, ecx
+ mov gword ptr [ebp+0x0C], edx
+ mov dword ptr [ebp-0x2C], ecx
+ mov edx, gword ptr [edx+4*ecx+0x08]
+ mov eax, edi
+ ; gcrRegs +[eax]
+ cmp byte ptr [eax], al
+ test esi, esi
+ jl G_M15401_IG54...
@@ -105,32 +105,32 @@ G_M25128_IG03: ; bbWeight=1.21, gcrefRegs=00000000 {}, byrefRegs=000000C0
; GC ptr vars -{V01}
mov ecx, dword ptr [esi+0x08]
cmp ecx, dword ptr [esi+0x04]- jge G_M25128_IG34+ jge G_M25128_IG22 ;; size=12 bbWeight=1.21 PerfScore 7.29
G_M25128_IG04: ; bbWeight=1.20, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
lea eax, [ecx+0x01]
mov dword ptr [esi+0x08], eax
cmp ecx, dword ptr [esi+0x04]- jae G_M25128_IG47+ jae G_M25128_IG44 mov eax, bword ptr [esi]
; byrRegs +[eax]
movzx ebx, word ptr [eax+2*ecx]
test ebx, ebx- je G_M25128_IG44+ je G_M25128_IG65 ;; size=29 bbWeight=1.20 PerfScore 12.91
G_M25128_IG05: ; bbWeight=1.21, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
; byrRegs -[eax]
mov eax, ebx
test eax, eax- je G_M25128_IG39+ je G_M25128_IG38 ;; size=10 bbWeight=1.21 PerfScore 1.82
G_M25128_IG06: ; bbWeight=1.14, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
cmp eax, 44- je G_M25128_IG35+ je G_M25128_IG34 ;; size=9 bbWeight=1.14 PerfScore 1.43
G_M25128_IG07: ; bbWeight=0.93, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
cmp eax, 61- je G_M25128_IG37+ je G_M25128_IG36 ;; size=9 bbWeight=0.93 PerfScore 1.16
G_M25128_IG08: ; bbWeight=0.71, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
mov dword ptr [ebp-0x14], eax
@@ -166,44 +166,91 @@ G_M25128_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M25128_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
cmp edx, 39- je G_M25128_IG49+ je G_M25128_IG66 cmp edx, 34- je G_M25128_IG49+ je G_M25128_IG66 ;; size=18 bbWeight=0.50 PerfScore 1.25
G_M25128_IG13: ; bbWeight=6.07, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
test edx, edx- je G_M25128_IG41+ je G_M25128_IG40 ;; size=8 bbWeight=6.07 PerfScore 7.59-G_M25128_IG14: ; bbWeight=6, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz+G_M25128_IG14: ; bbWeight=6, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref mov dword ptr [ebp-0x28], ecx
test ecx, ecx- jne G_M25128_IG52+ jne G_M25128_IG47 cmp edx, 44- je SHORT G_M25128_IG16
- ;; size=16 bbWeight=6 PerfScore 21.00+ je G_M25128_IG33
+ ;; size=20 bbWeight=6 PerfScore 21.00 G_M25128_IG15: ; bbWeight=5.79, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
cmp edx, 61- jne G_M25128_IG27+ je G_M25128_IG33 ;; size=9 bbWeight=5.79 PerfScore 7.23-G_M25128_IG16: ; bbWeight=0.43, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- dec dword ptr [esi+0x08]
- ;; size=3 bbWeight=0.43 PerfScore 1.29
-G_M25128_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz+G_M25128_IG16: ; bbWeight=5.57, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+ cmp edx, 39
+ je G_M25128_IG65
+ cmp edx, 34
+ je G_M25128_IG65
+ ;; size=18 bbWeight=5.57 PerfScore 13.93
+G_M25128_IG17: ; bbWeight=5.57, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+ cmp edx, 92
+ je G_M25128_IG48
+ mov bword ptr [ebp-0x38], edi
+ ; GC ptr vars +{V01}
+ mov eax, dword ptr [ebp-0x20]
+ mov ebx, bword ptr [ebp-0x1C]
+ ; byrRegs +[ebx]
+ mov edi, dword ptr [ebp-0x18]
+ ; byrRegs -[edi]
+ cmp eax, edi
+ jae G_M25128_IG41
+ ;; size=29 bbWeight=5.57 PerfScore 36.21
+G_M25128_IG18: ; bbWeight=5.54, gcVars=0000000000000200 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, gcvars, byref
+ mov word ptr [ebx+2*eax], dx
+ inc eax
+ mov dword ptr [ebp-0x20], eax
+ ;; size=8 bbWeight=5.54 PerfScore 12.48
+G_M25128_IG19: ; bbWeight=5.57, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ ; byrRegs -[ebx]
+ mov edx, dword ptr [esi+0x08]
+ cmp edx, dword ptr [esi+0x04]
+ jge G_M25128_IG42
+ ;; size=12 bbWeight=5.57 PerfScore 33.43
+G_M25128_IG20: ; bbWeight=5.51, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ lea eax, [edx+0x01]
+ mov dword ptr [esi+0x08], eax
+ cmp edx, dword ptr [esi+0x04]
+ jae G_M25128_IG44
+ mov eax, bword ptr [esi]
+ ; byrRegs +[eax]
+ movzx edx, word ptr [eax+2*edx]
+ test edx, edx
+ je G_M25128_IG65
+ ;; size=29 bbWeight=5.51 PerfScore 59.22
+G_M25128_IG21: ; bbWeight=5.57, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ ; byrRegs -[eax]
+ mov edi, edx
+ mov ecx, dword ptr [ebp-0x28]
+ mov edi, bword ptr [ebp-0x38]
+ ; byrRegs +[edi]
+ jmp G_M25128_IG13
+ ;; size=13 bbWeight=5.57 PerfScore 23.68
+G_M25128_IG22: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref
+ ; GC ptr vars -{V01}
+ xor ebx, ebx
+ jmp G_M25128_IG05
+ ;; size=7 bbWeight=0.01 PerfScore 0.03
+G_M25128_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz ; byrRegs -[esi]- cmp dword ptr [ebp-0x28], 0
- jne SHORT G_M25128_IG22
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M25128_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz mov ecx, dword ptr [ebp-0x20]
test ecx, ecx- jle SHORT G_M25128_IG22+ jle SHORT G_M25128_IG27 ;; size=7 bbWeight=0.50 PerfScore 1.12-G_M25128_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz+G_M25128_IG24: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz lea esi, [ecx-0x01]
cmp esi, ecx- jl SHORT G_M25128_IG21+ jl SHORT G_M25128_IG26 ;; size=7 bbWeight=0.50 PerfScore 0.88-G_M25128_IG20: ; bbWeight=2.00, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref+G_M25128_IG25: ; bbWeight=2.00, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -211,27 +258,27 @@ G_M25128_IG20: ; bbWeight=2.00, gcrefRegs=00000000 {}, byrefRegs=00000080
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=2.00 PerfScore 7.00-G_M25128_IG21: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref+G_M25128_IG26: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref cmp esi, dword ptr [ebp-0x18]- jae G_M25128_IG47+ jae G_M25128_IG44 mov ecx, bword ptr [ebp-0x1C]
; byrRegs +[ecx]
movzx ecx, word ptr [ecx+2*esi]
; byrRegs -[ecx]
call [System.Reflection.AssemblyNameParser:IsWhiteSpace(ushort):ubyte]
test eax, eax- jne G_M25128_IG45+ jne G_M25128_IG67 ;; size=30 bbWeight=0.50 PerfScore 5.13-G_M25128_IG22: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref+G_M25128_IG27: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref mov esi, dword ptr [ebp-0x20]
cmp esi, dword ptr [ebp-0x18]- ja G_M25128_IG46+ ja G_M25128_IG68 ;; size=12 bbWeight=0.50 PerfScore 2.00-G_M25128_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz+G_M25128_IG28: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz mov ebx, bword ptr [ebp-0x1C]
; byrRegs +[ebx]
test esi, esi- jge SHORT G_M25128_IG24+ jge SHORT G_M25128_IG29 mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -239,7 +286,7 @@ G_M25128_IG23: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=23 bbWeight=0.50 PerfScore 2.87-G_M25128_IG24: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref+G_M25128_IG29: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref mov bword ptr [ebp-0x34], ebx
mov dword ptr [ebp-0x30], esi
lea ecx, [ebp-0x34]
@@ -253,9 +300,9 @@ G_M25128_IG24: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [ebp-0x24], xmm0
test edx, edx- jne G_M25128_IG33+ jne G_M25128_IG43 ;; size=37 bbWeight=0.50 PerfScore 4.67-G_M25128_IG25: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz+G_M25128_IG30: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz ; gcrRegs -[eax edx]
mov edx, edi
; byrRegs +[edx]
@@ -264,10 +311,10 @@ G_M25128_IG25: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
; byrRegs -[edx edi]
mov eax, 3
cmp dword ptr [ebp-0x3C], 0xD1FFAB1E- je SHORT G_M25128_IG26+ je SHORT G_M25128_IG31 call CORINFO_HELP_FAIL_FAST
;; size=26 bbWeight=0.50 PerfScore 2.75-G_M25128_IG26: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M25128_IG31: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -275,82 +322,25 @@ G_M25128_IG26: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75-G_M25128_IG27: ; bbWeight=5.57, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref
- ; byrRegs +[esi edi]
- cmp edx, 39
- je G_M25128_IG44
- cmp edx, 34
- je G_M25128_IG44
- ;; size=18 bbWeight=5.57 PerfScore 13.93
-G_M25128_IG28: ; bbWeight=5.57, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- cmp edx, 92
- je G_M25128_IG48
- mov bword ptr [ebp-0x38], edi
- ; GC ptr vars +{V01}
- mov eax, dword ptr [ebp-0x20]
- mov ebx, bword ptr [ebp-0x1C]
- ; byrRegs +[ebx]
- mov edi, dword ptr [ebp-0x18]
- ; byrRegs -[edi]
- cmp eax, edi
- jae G_M25128_IG42
- ;; size=29 bbWeight=5.57 PerfScore 36.21
-G_M25128_IG29: ; bbWeight=5.54, gcVars=0000000000000200 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, gcvars, byref
- mov word ptr [ebx+2*eax], dx
- inc eax
- mov dword ptr [ebp-0x20], eax
- ;; size=8 bbWeight=5.54 PerfScore 12.48
-G_M25128_IG30: ; bbWeight=5.57, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref...
@@ -141,7 +141,7 @@ G_M15514_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcr arg pop 1
xor edi, edi
cmp dword ptr [esi+0x08], 0- jle G_M15514_IG25+ jle G_M15514_IG22 ;; size=27 bbWeight=1 PerfScore 10.75
G_M15514_IG08: ; bbWeight=4.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
xor ecx, ecx
@@ -154,7 +154,7 @@ G_M15514_IG08: ; bbWeight=4.00, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs -[ecx] +[eax]
mov gword ptr [ebp-0x20], eax
test eax, eax- je G_M15514_IG30+ je G_M15514_IG29 ;; size=35 bbWeight=4.00 PerfScore 47.00
G_M15514_IG09: ; bbWeight=2.00, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
lea ebx, bword ptr [eax+0x08]
@@ -162,18 +162,18 @@ G_M15514_IG09: ; bbWeight=2.00, gcrefRegs=00000041 {eax esi}, byrefRegs=0
mov eax, dword ptr [eax+0x04]
; gcrRegs -[eax]
;; size=6 bbWeight=2.00 PerfScore 5.00-G_M15514_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz+G_M15514_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref mov bword ptr [ebp-0x14], ebx
mov dword ptr [ebp-0x10], eax
xor edx, edx
mov dword ptr [ebp-0x1C], edx
mov byte ptr [ebp-0x18], 0
cmp edi, dword ptr [esi+0x08]- jae G_M15514_IG32+ jae G_M15514_IG31 mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
cmp edi, dword ptr [edx+0x04]- jae G_M15514_IG29+ jae G_M15514_IG28 mov edx, dword ptr [edx+4*edi+0x08]
; gcrRegs -[edx]
lea ecx, [ebp-0x24]
@@ -182,7 +182,7 @@ G_M15514_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008
mov ecx, dword ptr [ebp-0x1C]
mov ebx, dword ptr [ebp-0x10]
cmp ecx, ebx- ja G_M15514_IG31+ ja G_M15514_IG30 mov edx, bword ptr [ebp-0x14]
; byrRegs +[edx]
lea eax, bword ptr [edx+2*ecx]
@@ -190,8 +190,8 @@ G_M15514_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000008
mov bword ptr [ebp-0x28], eax
; GC ptr vars +{V18}
sub ebx, ecx- jns SHORT G_M15514_IG17
- ;; size=76 bbWeight=4 PerfScore 107.00+ jns G_M15514_IG24
+ ;; size=80 bbWeight=4 PerfScore 107.00 G_M15514_IG11: ; bbWeight=2, gcVars=00004000 {V18}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[eax edx]
mov ecx, 0xD1FFAB1E
@@ -203,10 +203,10 @@ G_M15514_IG11: ; bbWeight=2, gcVars=00004000 {V18}, gcrefRegs=00000040 {e
mov eax, bword ptr [ebp-0x28]
; byrRegs +[eax]
;; size=19 bbWeight=2 PerfScore 9.00-G_M15514_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz+G_M15514_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref test ebx, ebx- je SHORT G_M15514_IG18
- ;; size=4 bbWeight=4 PerfScore 5.00+ je G_M15514_IG25
+ ;; size=8 bbWeight=4 PerfScore 5.00 G_M15514_IG13: ; bbWeight=2.00, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref
mov edx, 0xD1FFAB1E
; byrRegs +[edx]
@@ -223,7 +223,7 @@ G_M15514_IG13: ; bbWeight=2.00, gcrefRegs=00000040 {esi}, byrefRegs=00000
G_M15514_IG14: ; bbWeight=4.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ebx, dword ptr [ebp-0x1C]
cmp ebx, dword ptr [ebp-0x10]- ja G_M15514_IG31+ ja G_M15514_IG30 ;; size=12 bbWeight=4.00 PerfScore 16.01
G_M15514_IG15: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, bword ptr [ebp-0x14]
@@ -231,9 +231,9 @@ G_M15514_IG15: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov bword ptr [ebp-0x2C], eax
; GC ptr vars +{V31}
test ebx, ebx- jge SHORT G_M15514_IG20+ jge SHORT G_M15514_IG17 ;; size=10 bbWeight=4 PerfScore 13.00-G_M15514_IG16: ; bbWeight=2, gcVars=00000100 {V31}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M15514_IG16: ; bbWeight=2, gcVars=00000100 {V31}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; byrRegs -[eax]
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
@@ -241,34 +241,14 @@ G_M15514_IG16: ; bbWeight=2, gcVars=00000100 {V31}, gcrefRegs=00000040 {e
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]- jmp SHORT G_M15514_IG19
- ;; size=18 bbWeight=2 PerfScore 11.00
-G_M15514_IG17: ; bbWeight=2, gcVars=00004000 {V18}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V31} +{V18}
- mov eax, bword ptr [ebp-0x28]
- ; byrRegs +[eax]
- jmp SHORT G_M15514_IG12
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M15514_IG18: ; bbWeight=0.01, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; byrRegs -[eax]
- ; GC ptr vars -{V18}
- lea ecx, [ebp-0x24]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[edx]
- jmp SHORT G_M15514_IG14
- ;; size=16 bbWeight=0.01 PerfScore 0.03
-G_M15514_IG19: ; bbWeight=2, gcVars=00000100 {V31}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars +{V31} mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]- ;; size=16 bbWeight=2 PerfScore 7.00
-G_M15514_IG20: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz+ ;; size=32 bbWeight=2 PerfScore 14.00
+G_M15514_IG17: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov eax, bword ptr [ebp-0x2C]
; byrRegs +[eax]
push ebx
@@ -287,9 +267,9 @@ G_M15514_IG20: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
vmovdqu xmmword ptr [ebp-0x24], xmm0
vmovdqu xmmword ptr [ebp-0x1C], xmm0
test edx, edx- je SHORT G_M15514_IG22+ je SHORT G_M15514_IG19 ;; size=33 bbWeight=4 PerfScore 35.33-G_M15514_IG21: ; bbWeight=1.94, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref+G_M15514_IG18: ; bbWeight=1.94, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax]
push 0
mov ecx, gword ptr [D1FFAB1EH] ; static handle
@@ -298,46 +278,46 @@ G_M15514_IG21: ; bbWeight=1.94, gcrefRegs=0000004C {edx ebx esi}, byrefRe
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=1.94 PerfScore 17.48-G_M15514_IG22: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz+G_M15514_IG19: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz mov ecx, ebx
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx ebx]
test edi, edi- jle SHORT G_M15514_IG24+ jle SHORT G_M15514_IG21 ;; size=12 bbWeight=4 PerfScore 18.00-G_M15514_IG23: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz+G_M15514_IG20: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz cmp edi, dword ptr [esi+0x08]- jae SHORT G_M15514_IG32+ jae G_M15514_IG31 mov eax, gword ptr [esi+0x04]
; gcrRegs +[eax]
mov edx, eax
; gcrRegs +[edx]
cmp edi, dword ptr [edx+0x04]- jae SHORT G_M15514_IG29+ jae SHORT G_M15514_IG28 mov edx, dword ptr [edx+4*edi+0x08]
; gcrRegs -[edx]
lea ecx, [edi-0x01]
cmp ecx, dword ptr [esi+0x08]- jae SHORT G_M15514_IG32+ jae SHORT G_M15514_IG31 cmp ecx, dword ptr [eax+0x04]- jae SHORT G_M15514_IG29+ jae SHORT G_M15514_IG28 cmp dword ptr [eax+4*ecx+0x08], edx- jge SHORT G_M15514_IG27
- ;; size=38 bbWeight=2 PerfScore 49.50
-G_M15514_IG24: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref+ jge SHORT G_M15514_IG26
+ ;; size=42 bbWeight=2 PerfScore 49.50
+G_M15514_IG21: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax]
inc edi
cmp edi, dword ptr [esi+0x08]
jl G_M15514_IG08
;; size=10 bbWeight=4 PerfScore 17.00-G_M15514_IG25: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref+G_M15514_IG22: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref call [<unknown method>]
xor eax, eax
cmp dword ptr [esi+0x08], 100
sete al
;; size=15 bbWeight=0.50 PerfScore 3.62-G_M15514_IG26: ; bbWeight=0.50, epilog, nogc, extend+G_M15514_IG23: ; bbWeight=0.50, epilog, nogc, extend lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -345,11 +325,27 @@ G_M15514_IG26: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75-G_M15514_IG27: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+G_M15514_IG24: ; bbWeight=2, gcVars=00004000 {V18}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars +{V18}
+ mov eax, bword ptr [ebp-0x28]
+ ; byrRegs +[eax]
+ jmp G_M15514_IG12
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M15514_IG25: ; bbWeight=0.01, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; byrRegs -[eax]
+ ; GC ptr vars -{V18}
+ lea ecx, [ebp-0x24]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[edx]
+ jmp G_M15514_IG14
+ ;; size=19 bbWeight=0.01 PerfScore 0.03
+G_M15514_IG26: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12-G_M15514_IG28: ; bbWeight=0.50, epilog, nogc, extend+G_M15514_IG27: ; bbWeight=0.50, epilog, nogc, extend lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -357,27 +353,27 @@ G_M15514_IG28: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75-G_M15514_IG29: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+G_M15514_IG28: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00-G_M15514_IG30: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref+G_M15514_IG29: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs +[esi]
xor ebx, ebx
; byrRegs +[ebx]
xor eax, eax
jmp G_M15514_IG10
;; size=9 bbWeight=0 PerfScore 0.00-G_M15514_IG31: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref...
@@ -9,21 +9,21 @@
; 0 inlinees with PGO data; 14 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;-; V00 loc0 [V00,T05] ( 8, 13 ) ref -> esi class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T22] ( 4, 1 ) ref -> [ebp-0x30] class-hnd EH-live spill-single-def <System.Object>+; V00 loc0 [V00,T04] ( 8, 13 ) ref -> esi class-hnd exact single-def <<unknown class>>
+; V01 loc1 [V01,T23] ( 4, 1 ) ref -> [ebp-0x30] class-hnd EH-live spill-single-def <System.Object> ; V02 loc2 [V02 ] ( 6, 2.50) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V04 loc4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.WeakReference`1[System.Diagnostics.Tracing.EventSource]>
;* V05 loc5 [V05 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.Diagnostics.Tracing.EventSource>-; V06 tmp0 [V06,T17] ( 3, 3 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V07 tmp1 [V07,T19] ( 2, 2 ) ubyte -> ecx "Inlining Arg"+; V06 tmp0 [V06,T18] ( 3, 3 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V07 tmp1 [V07,T20] ( 2, 2 ) ubyte -> ecx "Inlining Arg" ;* V08 tmp2 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V09 tmp3 [V09,T18] ( 2, 2 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>+; V09 tmp3 [V09,T19] ( 2, 2 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>> ;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[System.Diagnostics.Tracing.EventSource]]>
;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>
; V13 tmp7 [V13,T06] ( 6, 12 ) ref -> edx class-hnd "Inline return value spill temp" <System.Diagnostics.Tracing.EventSource>-; V14 tmp8 [V14,T03] ( 5, 14 ) int -> edx "Inline stloc first use temp"+; V14 tmp8 [V14,T02] ( 5, 14 ) int -> edx "Inline stloc first use temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>
; V16 tmp10 [V16,T14] ( 3, 6 ) ref -> edx class-hnd "Inline stloc first use temp" <System.Diagnostics.Tracing.EventSource>
;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Diagnostics.Tracing.EventSource>
@@ -31,27 +31,28 @@
; V19 tmp13 [V19,T07] ( 3, 12 ) ref -> [ebp-0x34] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>
;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp15 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V22 tmp16 [V22,T12] ( 2, 8 ) ref -> eax class-hnd "dup spill" <System.Object>
-; V23 tmp17 [V23,T10] ( 4, 8 ) ref -> eax +; V22 tmp16 [V22,T11] ( 2, 8 ) ref -> eax class-hnd "dup spill" <System.Object>
+; V23 tmp17 [V23,T09] ( 4, 8 ) ref -> eax ;* V24 tmp18 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventSource>
; V25 tmp19 [V25,T15] ( 3, 6 ) ref -> [ebp-0x38] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>-; V26 tmp20 [V26,T11] ( 4, 8 ) int -> eax "Inline stloc first use temp"+; V26 tmp20 [V26,T10] ( 4, 8 ) int -> ebx "Inline stloc first use temp" ;* V27 tmp21 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Diagnostics.Tracing.EventSource>-;* V28 tmp22 [V28,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V28 tmp22 [V28,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V30 tmp24 [V30,T02] ( 4, 12.50) ref -> edi single-def "field V03._list (fldOffset=0x0)" P-INDEP
-; V31 tmp25 [V31,T04] ( 3, 10 ) ref -> [ebp-0x3C] spill-single-def "field V03._current (fldOffset=0x4)" P-INDEP+; V30 tmp24 [V30,T05] ( 4, 12.50) ref -> edi single-def "field V03._list (fldOffset=0x0)" P-INDEP
+; V31 tmp25 [V31,T03] ( 3, 10 ) ref -> [ebp-0x3C] spill-single-def "field V03._current (fldOffset=0x4)" P-INDEP ; V32 tmp26 [V32,T00] ( 6, 20.50) int -> [ebp-0x28] "field V03._index (fldOffset=0x8)" P-INDEP-; V33 tmp27 [V33,T09] ( 3, 8.50) int -> [ebp-0x2C] spill-single-def "field V03._version (fldOffset=0xc)" P-INDEP
-; V34 tmp28 [V34,T20] ( 3, 1.50) ref -> edi single-def "field V10._list (fldOffset=0x0)" P-INDEP+; V33 tmp27 [V33,T16] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V03._version (fldOffset=0xc)" P-INDEP
+; V34 tmp28 [V34,T21] ( 3, 1.50) ref -> edi single-def "field V10._list (fldOffset=0x0)" P-INDEP ;* V35 tmp29 [V35 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x4)" P-INDEP-;* V36 tmp30 [V36,T24] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
-; V37 tmp31 [V37,T23] ( 2, 1 ) int -> ebx "field V10._version (fldOffset=0xc)" P-INDEP+;* V36 tmp30 [V36,T25] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
+; V37 tmp31 [V37,T24] ( 2, 1 ) int -> ebx "field V10._version (fldOffset=0xc)" P-INDEP ; V38 tmp32 [V38,T01] ( 3, 24 ) ref -> eax "arr expr"
; V39 EHSlots [V39 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V40 cse0 [V40,T21] ( 3, 1.50) byref -> edi "CSE - conservative"
-; V41 cse1 [V41,T16] ( 6, 3 ) ref -> edx multi-def "CSE - moderate"
-; V42 cse2 [V42,T08] ( 3, 12 ) int -> eax "CSE - moderate"+; V40 cse0 [V40,T22] ( 3, 1.50) byref -> edi "CSE - conservative"
+; V41 cse1 [V41,T17] ( 6, 3 ) ref -> edx multi-def "CSE - moderate"
+; V42 cse2 [V42,T13] ( 2, 8 ) int -> eax "CSE - moderate"
+; V43 cse3 [V43,T08] ( 2, 8 ) int -> eax "CSE - moderate" ;
; Lcl frame size = 48
@@ -111,7 +112,7 @@ G_M58508_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
xor edx, edx
mov dword ptr [ebp-0x24], edx
;; size=39 bbWeight=0.50 PerfScore 8.50-G_M58508_IG06: ; bbWeight=0.50, gcVars=00400000 {V01}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M58508_IG06: ; bbWeight=0.50, gcVars=00800000 {V01}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne G_M58508_IG12
lea edx, [ebp-0x24]
@@ -157,13 +158,14 @@ G_M58508_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
G_M58508_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [edi+0x0C]
cmp ebx, eax- jne G_M58508_IG18
- cmp ecx, dword ptr [edi+0x08]
- jae G_M58508_IG21+ jne G_M58508_IG19
+ mov eax, dword ptr [edi+0x08]
+ cmp ecx, eax
+ jae G_M58508_IG20 mov eax, gword ptr [edi+0x04]
; gcrRegs +[eax]
cmp ecx, dword ptr [eax+0x04]- jae G_M58508_IG19+ jae G_M58508_IG18 mov eax, gword ptr [eax+4*ecx+0x08]
mov gword ptr [ebp-0x3C], eax
; GC ptr vars +{V31}
@@ -172,7 +174,7 @@ G_M58508_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov edx, dword ptr [eax+0x04]
and edx, -2
jne SHORT G_M58508_IG13- ;; size=51 bbWeight=4 PerfScore 83.00+ ;; size=53 bbWeight=4 PerfScore 80.00 G_M58508_IG10: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
; GC ptr vars -{V31}
@@ -191,21 +193,18 @@ G_M58508_IG11: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=
; gcrRegs +[eax]
mov gword ptr [ebp-0x38], eax
; GC ptr vars +{V25}- mov eax, dword ptr [esi+0x08]
- ; gcrRegs -[eax]
- mov ebx, gword ptr [ebp-0x38]
- ; gcrRegs +[ebx]
- cmp dword ptr [ebx+0x04], eax+ mov ebx, dword ptr [esi+0x08]
+ cmp dword ptr [eax+0x04], ebx jbe SHORT G_M58508_IG17
mov dword ptr [ebp-0x28], ecx- lea ebx, [eax+0x01]
- ; gcrRegs -[ebx]
- mov dword ptr [esi+0x08], ebx+ lea eax, [ebx+0x01]
+ ; gcrRegs -[eax]
+ mov dword ptr [esi+0x08], eax push edx
; gcr arg push 0
mov ecx, gword ptr [ebp-0x38]
; gcrRegs +[ecx]- mov edx, eax+ mov edx, ebx ; gcrRegs -[edx]
; GC ptr vars -{V25}
call [CORINFO_HELP_ARRADDR_ST]
@@ -214,13 +213,13 @@ G_M58508_IG11: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=
mov ecx, dword ptr [ebp-0x28]
mov ebx, dword ptr [ebp-0x2C]
jmp SHORT G_M58508_IG09- ;; size=65 bbWeight=2 PerfScore 64.00+ ;; size=62 bbWeight=2 PerfScore 62.00 G_M58508_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
call [System.Threading.Monitor:ThrowLockTakenException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M58508_IG13: ; bbWeight=2, gcVars=00400010 {V01 V31}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M58508_IG13: ; bbWeight=2, gcVars=00800008 {V01 V31}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[esi edi]
; GC ptr vars +{V31}
test dl, 2
@@ -254,11 +253,11 @@ G_M58508_IG15: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
mov edx, eax
; gcrRegs +[edx]
;; size=2 bbWeight=2 PerfScore 0.50-G_M58508_IG16: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref+G_M58508_IG16: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax]- jmp G_M58508_IG11
- ;; size=5 bbWeight=2 PerfScore 4.00
-G_M58508_IG17: ; bbWeight=2, gcVars=00400000 {V01}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref+ jmp SHORT G_M58508_IG11
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M58508_IG17: ; bbWeight=2, gcVars=00800000 {V01}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V31}
mov dword ptr [ebp-0x28], ecx
mov ecx, esi
@@ -269,52 +268,46 @@ G_M58508_IG17: ; bbWeight=2, gcVars=00400000 {V01}, gcrefRegs=000000C4 {e
mov ebx, dword ptr [ebp-0x2C]
jmp G_M58508_IG09
;; size=22 bbWeight=2 PerfScore 16.50-G_M58508_IG18: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- cmp dword ptr [ebp-0x2C], eax
- jne SHORT G_M58508_IG20
- jmp SHORT G_M58508_IG21
- ;; size=7 bbWeight=4 PerfScore 20.00
-G_M58508_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]+G_M58508_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi edi] call [CORINFO_HELP_RNGCHKFAIL]
;; size=6 bbWeight=0 PerfScore 0.00-G_M58508_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M58508_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M58508_IG21: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz+G_M58508_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi]
cmp byte ptr [ebp-0x24], 0- je SHORT G_M58508_IG24+ je SHORT G_M58508_IG23 mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
; GC ptr vars -{V01}
call [<unknown method>]
; gcrRegs -[ecx]- jmp SHORT G_M58508_IG24+ jmp SHORT G_M58508_IG23 ;; size=17 bbWeight=0.50 PerfScore 4.50-G_M58508_IG22: ; bbWeight=0, gcVars=00400000 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M58508_IG21: ; bbWeight=0, gcVars=00800000 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[esi]- ; GC ptr vars +{V01 V22}+ ; GC ptr vars +{V01 V23} cmp byte ptr [ebp-0x24], 0- je SHORT G_M58508_IG23+ je SHORT G_M58508_IG22 mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]- ; GC ptr vars -{V01 V22}+ ; GC ptr vars -{V01 V23} call [<unknown method>]
; gcrRegs -[ecx]
;; size=15 bbWeight=0 PerfScore 0.00-G_M58508_IG23: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M58508_IG22: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M58508_IG24: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref+G_M58508_IG23: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs +[esi]
mov eax, esi
; gcrRegs +[eax]
;; size=2 bbWeight=0.50 PerfScore 0.12-G_M58508_IG25: ; bbWeight=0.50, epilog, nogc, extend+G_M58508_IG24: ; bbWeight=0.50, epilog, nogc, extend lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -323,9 +316,9 @@ G_M58508_IG25: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 448, prolog size 14, PerfScore 281.38, instruction count 142, allocated bytes for code 448 (MethodHash=ee0a1b73) for method System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)+; Total bytes of code 437, prolog size 14, PerfScore 256.38, instruction count 139, allocated bytes for code 437 (MethodHash=ee0a1b73) for method System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts) ; ============================================================
*************** EH table for System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource]
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M58508_IG06..G_M58508_IG21) handled by [G_M58508_IG22..G_M58508_IG24) (fault)+EH#0: try [G_M58508_IG06..G_M58508_IG20) handled by [G_M58508_IG21..G_M58508_IG23) (fault)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T01] ( 38, 80.50) ref -> [ebp-0x1C] do-not-enreg[H] this class-hnd EH-live single-def <System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]>+; V00 this [V00,T00] ( 38, 80.50) ref -> [ebp-0x18] do-not-enreg[H] this class-hnd EH-live single-def <System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]> ; V01 loc0 [V01,T08] ( 5, 3 ) ubyte -> eax
;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 loc2 [V03,T06] ( 3, 6 ) ref -> eax class-hnd <System.Xml.Linq.XContainer>
@@ -20,9 +20,9 @@
; V08 tmp3 [V08,T05] ( 4, 6.50) ref -> ecx class-hnd "Inline return value spill temp" <System.Xml.Linq.XNode>
; V09 tmp4 [V09,T03] ( 3, 12 ) ref -> eax class-hnd "dup spill" <System.Xml.Linq.XNode>
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref -; V11 EHSlots [V11 ] ( 1, 1 ) struct (16) [ebp-0x18] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
-; V12 cse0 [V12,T02] ( 3, 40 ) ref -> ecx "CSE - aggressive"
-; V13 cse1 [V13,T00] ( 8, 84.50) ref -> esi "CSE - aggressive"+; V11 EHSlots [V11 ] ( 1, 1 ) struct (16) [ebp-0x14] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
+; V12 cse0 [V12,T02] ( 3, 40 ) ref -> eax "CSE - aggressive"
+; V13 cse1 [V13,T01] ( 7, 82.50) ref -> ecx "CSE - aggressive" ; V14 cse2 [V14,T10] ( 3, 1.50) ref -> ecx "CSE - moderate"
; V15 rat0 [V15,T07] ( 3, 6 ) int -> ecx "ReplaceWithLclVar is creating a new local variable"
;
@@ -31,15 +31,14 @@
G_M13296_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp- push esi sub esp, 24
xor eax, eax- mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x1C], ecx+ mov dword ptr [ebp-0x0C], eax
+ mov gword ptr [ebp-0x18], ecx ; GC ptr vars +{V00}- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M13296_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov eax, gword ptr [ebp-0x1C]+ ;; size=14 bbWeight=1 PerfScore 3.75
+G_M13296_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov eax, gword ptr [ebp-0x18] ; gcrRegs +[eax]
mov ecx, dword ptr [eax+0x1C]
cmp ecx, 2
@@ -53,23 +52,23 @@ G_M13296_IG02: ; bbWeight=1, gcVars=00000002 {V00}, gcrefRegs=00000000 {}
;; size=30 bbWeight=1 PerfScore 10.00
G_M13296_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax- jmp G_M13296_IG27+ jmp G_M13296_IG25 ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M13296_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref- mov ecx, gword ptr [ebp-0x1C]+ mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx]
mov dword ptr [ecx+0x1C], -1- mov ecx, gword ptr [ebp-0x1C]+ mov ecx, gword ptr [ebp-0x18] mov ecx, dword ptr [ecx]
; gcrRegs -[ecx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]- mov ecx, gword ptr [ebp-0x1C]+ mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx]
mov ecx, gword ptr [ecx+0x08]
nop
call [eax]
; gcrRegs -[ecx] +[eax]- mov edx, gword ptr [ebp-0x1C]+ mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]
lea edx, bword ptr [edx+0x10]
; gcrRegs -[edx]
@@ -77,29 +76,29 @@ G_M13296_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
call [CORINFO_HELP_ASSIGN_REF_EAX]
; gcrRegs -[eax]
; byrRegs -[edx]- mov ecx, gword ptr [ebp-0x1C]+ mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx]
mov dword ptr [ecx+0x1C], -3- mov ecx, gword ptr [ebp-0x1C]+ mov ecx, gword ptr [ebp-0x18] mov ecx, gword ptr [ecx+0x10]
call [<unknown method>]
; gcrRegs -[ecx]
test eax, eax- je G_M13296_IG23+ je G_M13296_IG21 ;; size=74 bbWeight=0.50 PerfScore 14.00
G_M13296_IG05: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz- mov ecx, gword ptr [ebp-0x1C]+ mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx]
mov ecx, dword ptr [ecx]
; gcrRegs -[ecx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]- mov ecx, gword ptr [ebp-0x1C]+ mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx]
mov ecx, gword ptr [ecx+0x10]
nop
call [eax]
; gcrRegs -[ecx] +[eax]- mov edx, gword ptr [ebp-0x1C]+ mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]
lea edx, bword ptr [edx+0x14]
; gcrRegs -[edx]
@@ -107,46 +106,46 @@ G_M13296_IG05: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [CORINFO_HELP_ASSIGN_REF_EAX]
; gcrRegs -[eax]
; byrRegs -[edx]- mov edx, gword ptr [ebp-0x1C]+ mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]
cmp gword ptr [edx+0x14], 0- je G_M13296_IG22
- mov edx, gword ptr [ebp-0x1C]+ je G_M13296_IG20
+ mov edx, gword ptr [ebp-0x18] cmp byte ptr [edx+0x24], 0
je SHORT G_M13296_IG08
;; size=56 bbWeight=2 PerfScore 53.50
G_M13296_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]- mov edx, gword ptr [ebp-0x1C]+ mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]
mov ecx, gword ptr [edx+0x14]
; gcrRegs +[ecx]- mov edx, gword ptr [ebp-0x1C]+ mov edx, gword ptr [ebp-0x18] lea edx, bword ptr [edx+0x04]
; gcrRegs -[edx]
; byrRegs +[edx]
call [CORINFO_HELP_ASSIGN_REF_ECX]
; gcrRegs -[ecx]
; byrRegs -[edx]- mov edx, gword ptr [ebp-0x1C]+ mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]
mov dword ptr [edx+0x1C], 1
mov eax, 1- jmp G_M13296_IG27+ jmp G_M13296_IG25 ;; size=38 bbWeight=0.50 PerfScore 5.88
G_M13296_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]- mov edx, gword ptr [ebp-0x1C]+ mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]
mov dword ptr [edx+0x1C], -3
;; size=10 bbWeight=0.50 PerfScore 1.00
G_M13296_IG08: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]- mov edx, gword ptr [ebp-0x1C]+ mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]
mov ecx, gword ptr [edx+0x14]
; gcrRegs +[ecx]- mov edx, gword ptr [ebp-0x1C]+ mov edx, gword ptr [ebp-0x18] lea edx, bword ptr [edx+0x18]
; gcrRegs -[edx]
; byrRegs +[edx]
@@ -155,7 +154,7 @@ G_M13296_IG08: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; byrRegs -[edx]
;; size=18 bbWeight=2 PerfScore 15.00
G_M13296_IG09: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz- mov ecx, gword ptr [ebp-0x1C]+ mov ecx, gword ptr [ebp-0x18] ; gcrRegs +[ecx]
mov ecx, gword ptr [ecx+0x18]
call [CORINFO_HELP_READYTORUN_ISINSTANCEOF]
@@ -183,7 +182,7 @@ G_M13296_IG11: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
je SHORT G_M13296_IG14
;; size=4 bbWeight=2 PerfScore 2.50
G_M13296_IG12: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz- mov edx, gword ptr [ebp-0x1C]+ mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]
lea edx, bword ptr [edx+0x18]
; gcrRegs -[edx]
@@ -191,152 +190,143 @@ G_M13296_IG12: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000
call [CORINFO_HELP_ASSIGN_REF_ECX]
; gcrRegs -[ecx]
; byrRegs -[edx]- jmp SHORT G_M13296_IG19+ jmp SHORT G_M13296_IG17 ;; size=14 bbWeight=0.50 PerfScore 3.25-G_M13296_IG13: ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x1C]+G_M13296_IG13: ; bbWeight=8, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[eax]
+ mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]
lea edx, bword ptr [edx+0x18]
; gcrRegs -[edx]
; byrRegs +[edx]- call [CORINFO_HELP_ASSIGN_REF_ECX]
- ; gcrRegs -[ecx]+ call [CORINFO_HELP_ASSIGN_REF_EAX]
+ ; gcrRegs -[eax] ; byrRegs -[edx]
;; size=12 bbWeight=8 PerfScore 36.00
G_M13296_IG14: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz- mov edx, gword ptr [ebp-0x1C]+ mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]- mov esi, gword ptr [edx+0x18]
- ; gcrRegs +[esi]
- test esi, esi
- je SHORT G_M13296_IG16
- mov edx, gword ptr [ebp-0x1C]
- cmp esi, gword ptr [edx+0x14]
- je SHORT G_M13296_IG17
- mov ecx, gword ptr [esi+0x04]+ mov ecx, gword ptr [edx+0x18] ; gcrRegs +[ecx]- cmp esi, gword ptr [ecx+0x10]+ test ecx, ecx
+ je SHORT G_M13296_IG19
+ mov edx, gword ptr [ebp-0x18]
+ cmp ecx, gword ptr [edx+0x14]
+ je SHORT G_M13296_IG15
+ mov eax, gword ptr [ecx+0x04]
+ ; gcrRegs +[eax]
+ cmp ecx, gword ptr [eax+0x10] je SHORT G_M13296_IG13
;; size=26 bbWeight=16 PerfScore 244.00-G_M13296_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx edx]
- jmp SHORT G_M13296_IG17
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M13296_IG16: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test esi, esi
- je SHORT G_M13296_IG21
- ;; size=4 bbWeight=2 PerfScore 2.50
-G_M13296_IG17: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edx, gword ptr [ebp-0x1C]+G_M13296_IG15: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax edx]
+ mov edx, gword ptr [ebp-0x18] ; gcrRegs +[edx]- cmp esi, gword ptr [edx+0x14]
- je SHORT G_M13296_IG21+ cmp ecx, gword ptr [edx+0x14]
+ je SHORT G_M13296_IG19 ;; size=8 bbWeight=2 PerfScore 10.00
...
@@ -9,24 +9,24 @@
; 0 inlinees with PGO data; 24 single block inlinees; 14 inlinees without PGO data
; Final local variable assignments
;-; V00 loc0 [V00,T34] ( 3, 24 ) ref -> [ebp-0x7C] class-hnd <<unknown class>>+; V00 loc0 [V00,T35] ( 3, 24 ) ref -> [ebp-0x78] class-hnd <<unknown class>> ; V01 loc1 [V01,T00] ( 15,333 ) ref -> esi class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T12] ( 9, 84 ) int -> ebx -; V03 loc3 [V03,T36] ( 4, 20 ) ref -> [ebp-0x80] do-not-enreg[Z] class-hnd EH-live <System.Object>+; V03 loc3 [V03,T37] ( 4, 20 ) ref -> [ebp-0x7C] do-not-enreg[Z] class-hnd EH-live <System.Object> ; V04 loc4 [V04 ] ( 6, 40 ) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
;* V05 loc5 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.CounterGroup]>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Diagnostics.Tracing.CounterGroup>
; V07 loc7 [V07 ] ( 5,128 ) struct ( 8) [ebp-0x2C] do-not-enreg[XS] addr-exposed <System.DateTime>-; V08 loc8 [V08,T24] ( 3, 48 ) int -> ecx +; V08 loc8 [V08,T25] ( 3, 48 ) int -> ecx ; V09 loc9 [V09 ] ( 2, 32 ) struct ( 8) [ebp-0x34] do-not-enreg[XS] addr-exposed ld-addr-op <System.TimeSpan>
;* V10 loc10 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.CounterGroup]>
;* V11 loc11 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Diagnostics.Tracing.CounterGroup>-; V12 tmp0 [V12,T46] ( 3, 6 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>+; V12 tmp0 [V12,T47] ( 3, 6 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V13 tmp1 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V14 tmp2 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime>
;* V15 tmp3 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.DateTime>-; V16 tmp4 [V16,T31] ( 2, 32 ) ubyte -> ecx "Inlining Arg"
-; V17 tmp5 [V17,T30] ( 2, 32 ) ref -> edx class-hnd "Inlining Arg" <<unknown class>>+; V16 tmp4 [V16,T32] ( 2, 32 ) ubyte -> ecx "Inlining Arg"
+; V17 tmp5 [V17,T31] ( 2, 32 ) ref -> edx class-hnd "Inlining Arg" <<unknown class>> ;* V18 tmp6 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.CounterGroup]>
;* V19 tmp7 [V19 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V20 tmp8 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
@@ -37,70 +37,71 @@
;* V25 tmp13 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V26 tmp14 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V27 tmp15 [V27 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"-; V28 tmp16 [V28,T23] ( 3, 48 ) ref -> edx class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V29 tmp17 [V29,T18] ( 4, 64 ) int -> ecx "Inline stloc first use temp"+; V28 tmp16 [V28,T24] ( 3, 48 ) ref -> edx class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V29 tmp17 [V29,T19] ( 4, 64 ) int -> ecx "Inline stloc first use temp" ;* V30 tmp18 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V31 tmp19 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
;* V32 tmp20 [V32 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
;* V33 tmp21 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan>
;* V34 tmp22 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"-; V35 tmp23 [V35,T19] ( 4, 64 ) int -> ecx "Inline return value spill temp"
-; V36 tmp24 [V36,T25] ( 3, 48 ) int -> ecx "Inline return value spill temp"
-;* V37 tmp25 [V37,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+; V35 tmp23 [V35,T20] ( 4, 64 ) int -> ecx "Inline return value spill temp"
+; V36 tmp24 [V36,T26] ( 3, 48 ) int -> ecx "Inline return value spill temp"
+;* V37 tmp25 [V37,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V38 tmp26 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V39 tmp27 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.CounterGroup]>-;* V40 tmp28 [V40,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V40 tmp28 [V40,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V41 tmp29 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V42 tmp30 [V42,T17] ( 3, 68 ) int -> edx "Inline stloc first use temp"+; V42 tmp30 [V42,T18] ( 3, 68 ) int -> eax "Inline stloc first use temp" ;* V43 tmp31 [V43 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"-;* V44 tmp32 [V44,T42] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V45 tmp33 [V45,T03] ( 5,168 ) ref -> [ebp-0x84] spill-single-def "field V05._list (fldOffset=0x0)" P-INDEP
-; V46 tmp34 [V46,T07] ( 5,112 ) ref -> edi "field V05._current (fldOffset=0x4)" P-INDEP+;* V44 tmp32 [V44,T43] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V45 tmp33 [V45,T07] ( 4,136 ) ref -> [ebp-0x80] spill-single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V46 tmp34 [V46,T06] ( 5,112 ) ref -> edi "field V05._current (fldOffset=0x4)" P-INDEP ; V47 tmp35 [V47,T01] ( 6,168 ) int -> [ebp-0x38] "field V05._index (fldOffset=0x8)" P-INDEP-; V48 tmp36 [V48,T10] ( 3,104 ) int -> [ebp-0x3C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP+; V48 tmp36 [V48,T16] ( 2, 72 ) int -> [ebp-0x3C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP ; V49 tmp37 [V49 ] ( 5,128 ) long -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V07._dateData (fldOffset=0x0)" P-DEP
; V50 tmp38 [V50 ] ( 2, 32 ) long -> [ebp-0x34] do-not-enreg[X] addr-exposed "field V09._ticks (fldOffset=0x0)" P-DEP-;* V51 tmp39 [V51,T43] ( 0, 0 ) ref -> zero-ref "field V10._list (fldOffset=0x0)" P-INDEP
-; V52 tmp40 [V52,T13] ( 2, 48 ) ref -> edx "field V10._current (fldOffset=0x4)" P-INDEP+;* V51 tmp39 [V51,T44] ( 0, 0 ) ref -> zero-ref "field V10._list (fldOffset=0x0)" P-INDEP
+; V52 tmp40 [V52,T13] ( 2, 48 ) ref -> eax "field V10._current (fldOffset=0x4)" P-INDEP ; V53 tmp41 [V53,T02] ( 6,168 ) int -> [ebp-0x40] "field V10._index (fldOffset=0x8)" P-INDEP-; V54 tmp42 [V54,T16] ( 2, 72 ) int -> [ebp-0x44] spill-single-def "field V10._version (fldOffset=0xc)" P-INDEP
-;* V55 tmp43 [V55,T32] ( 0, 0 ) long -> zero-ref "field V13._ticks (fldOffset=0x0)" P-INDEP
-; V56 tmp44 [V56,T20] ( 3, 64 ) long -> [ebp-0x4C] do-not-enreg[F] "field V14._dateData (fldOffset=0x0)" P-INDEP+; V54 tmp42 [V54,T17] ( 2, 72 ) int -> edi "field V10._version (fldOffset=0xc)" P-INDEP
+;* V55 tmp43 [V55,T33] ( 0, 0 ) long -> zero-ref "field V13._ticks (fldOffset=0x0)" P-INDEP
+; V56 tmp44 [V56,T21] ( 3, 64 ) long -> [ebp-0x48] do-not-enreg[F] "field V14._dateData (fldOffset=0x0)" P-INDEP ;* V57 tmp45 [V57 ] ( 0, 0 ) long -> zero-ref "field V15._dateData (fldOffset=0x0)" P-INDEP-; V58 tmp46 [V58,T35] ( 3, 24 ) ref -> edx "field V18._list (fldOffset=0x0)" P-INDEP+; V58 tmp46 [V58,T36] ( 3, 24 ) ref -> edx "field V18._list (fldOffset=0x0)" P-INDEP ;* V59 tmp47 [V59 ] ( 0, 0 ) ref -> zero-ref "field V18._current (fldOffset=0x4)" P-INDEP-;* V60 tmp48 [V60,T44] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
-; V61 tmp49 [V61,T39] ( 2, 16 ) int -> [ebp-0x50] spill-single-def "field V18._version (fldOffset=0xc)" P-INDEP
-; V62 tmp50 [V62,T08] ( 5,128 ) long -> [ebp-0x58] do-not-enreg[F] "field V20._dateData (fldOffset=0x0)" P-INDEP+;* V60 tmp48 [V60,T45] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
+; V61 tmp49 [V61,T40] ( 2, 16 ) int -> [ebp-0x4C] spill-single-def "field V18._version (fldOffset=0xc)" P-INDEP
+; V62 tmp50 [V62,T08] ( 5,128 ) long -> [ebp-0x54] do-not-enreg[F] "field V20._dateData (fldOffset=0x0)" P-INDEP ;* V63 tmp51 [V63 ] ( 0, 0 ) long -> zero-ref "field V21._ticks (fldOffset=0x0)" P-INDEP-; V64 tmp52 [V64,T26] ( 3, 48 ) long -> [ebp-0x60] do-not-enreg[F] "field V23._dateData (fldOffset=0x0)" P-INDEP+; V64 tmp52 [V64,T27] ( 3, 48 ) long -> [ebp-0x5C] do-not-enreg[F] "field V23._dateData (fldOffset=0x0)" P-INDEP ;* V65 tmp53 [V65 ] ( 0, 0 ) long -> zero-ref "field V25._dateData (fldOffset=0x0)" P-INDEP
;* V66 tmp54 [V66 ] ( 0, 0 ) long -> zero-ref "field V26._dateData (fldOffset=0x0)" P-INDEP-; V67 tmp55 [V67,T27] ( 3, 48 ) long -> [ebp-0x68] do-not-enreg[F] "field V30._dateData (fldOffset=0x0)" P-INDEP
-; V68 tmp56 [V68,T28] ( 3, 48 ) long -> [ebp-0x70] do-not-enreg[F] "field V31._dateData (fldOffset=0x0)" P-INDEP
-; V69 tmp57 [V69,T29] ( 3, 48 ) long -> [ebp-0x78] do-not-enreg[F] "field V33._ticks (fldOffset=0x0)" P-INDEP
-; V70 tmp58 [V70,T37] ( 2, 16 ) ref -> ecx "field V39._list (fldOffset=0x0)" P-INDEP+; V67 tmp55 [V67,T28] ( 3, 48 ) long -> [ebp-0x64] do-not-enreg[F] "field V30._dateData (fldOffset=0x0)" P-INDEP
+; V68 tmp56 [V68,T29] ( 3, 48 ) long -> [ebp-0x6C] do-not-enreg[F] "field V31._dateData (fldOffset=0x0)" P-INDEP
+; V69 tmp57 [V69,T30] ( 3, 48 ) long -> [ebp-0x74] do-not-enreg[F] "field V33._ticks (fldOffset=0x0)" P-INDEP
+; V70 tmp58 [V70,T38] ( 2, 16 ) ref -> ecx "field V39._list (fldOffset=0x0)" P-INDEP ;* V71 tmp59 [V71 ] ( 0, 0 ) ref -> zero-ref "field V39._current (fldOffset=0x4)" P-INDEP-;* V72 tmp60 [V72,T45] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x8)" P-INDEP
-; V73 tmp61 [V73,T40] ( 2, 16 ) int -> eax "field V39._version (fldOffset=0xc)" P-INDEP
-; V74 tmp62 [V74,T04] ( 3,192 ) ref -> edi "arr expr"
-; V75 tmp63 [V75,T05] ( 3,192 ) ref -> edx "arr expr"
-; V76 tmp64 [V76,T38] ( 2, 16 ) ref -> ecx "argument with side effect"+;* V72 tmp60 [V72,T46] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x8)" P-INDEP
+; V73 tmp61 [V73,T41] ( 2, 16 ) int -> edi "field V39._version (fldOffset=0xc)" P-INDEP
+; V74 tmp62 [V74,T03] ( 3,192 ) ref -> edi "arr expr"
+; V75 tmp63 [V75,T04] ( 3,192 ) ref -> eax "arr expr"
+; V76 tmp64 [V76,T39] ( 2, 16 ) ref -> ecx "argument with side effect" ; V77 EHSlots [V77 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V78 cse0 [V78,T33] ( 4, 25 ) byref -> [ebp-0x88] spill-single-def hoist "CSE - conservative"
-; V79 cse1 [V79,T41] ( 3, 12 ) ref -> edx "CSE - conservative"
-; V80 cse2 [V80,T09] ( 3, 96 ) int -> edx "CSE - moderate"
-;* V81 rat0 [V81 ] ( 0, 0 ) int -> zero-ref "field V19.lo (fldOffset=0x0)" P-INDEP
-;* V82 rat1 [V82 ] ( 0, 0 ) int -> zero-ref "field V19.hi (fldOffset=0x4)" P-INDEP
-; V83 rat2 [V83,T14] ( 3, 80 ) int -> edx "field V22.lo (fldOffset=0x0)" P-INDEP
-; V84 rat3 [V84,T15] ( 3, 80 ) int -> ecx "field V22.hi (fldOffset=0x4)" P-INDEP
-; V85 rat4 [V85,T06] ( 3,192 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V86 rat5 [V86,T11] ( 3, 96 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
-; TEMP_02 int -> [ebp-0x8C]
-; TEMP_01 int -> [ebp-0x90]
-; TEMP_03 double -> [ebp-0x98]+; V78 cse0 [V78,T34] ( 4, 25 ) byref -> [ebp-0x84] spill-single-def hoist "CSE - conservative"
+; V79 cse1 [V79,T42] ( 3, 12 ) ref -> edx "CSE - conservative"
+; V80 cse2 [V80,T09] ( 3, 96 ) int -> eax "CSE - moderate"
+; V81 cse3 [V81,T11] ( 2, 64 ) int -> edi "CSE - moderate"
+;* V82 rat0 [V82 ] ( 0, 0 ) int -> zero-ref "field V19.lo (fldOffset=0x0)" P-INDEP
+;* V83 rat1 [V83 ] ( 0, 0 ) int -> zero-ref "field V19.hi (fldOffset=0x4)" P-INDEP
+; V84 rat2 [V84,T14] ( 3, 80 ) int -> edx "field V22.lo (fldOffset=0x0)" P-INDEP
+; V85 rat3 [V85,T15] ( 3, 80 ) int -> ecx "field V22.hi (fldOffset=0x4)" P-INDEP
+; V86 rat4 [V86,T05] ( 3,192 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V87 rat5 [V87,T10] ( 3, 96 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"
+; TEMP_02 int -> [ebp-0x88]
+; TEMP_01 int -> [ebp-0x8C]
+; TEMP_03 double -> [ebp-0x94] ;-; Lcl frame size = 140+; Lcl frame size = 136
G_M58893_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -108,7 +109,7 @@ G_M58893_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx- sub esp, 140+ sub esp, 136 xor eax, eax
mov dword ptr [ebp-0x18], eax
;; size=17 bbWeight=1 PerfScore 5.75
@@ -132,25 +133,25 @@ G_M58893_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; byrRegs +[eax]
mov edi, eax
; byrRegs +[edi]- mov bword ptr [ebp-0x88], edi+ mov bword ptr [ebp-0x84], edi ; GC ptr vars +{V78}
;; size=39 bbWeight=1 PerfScore 16.00-G_M58893_IG03: ; bbWeight=8, gcVars=0000000200000000 {V78}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref+G_M58893_IG03: ; bbWeight=8, gcVars=0000000400000000 {V78}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref ; byrRegs -[eax]
mov ebx, 0xD1FFAB1E
mov edx, gword ptr [edi+0x0AE0]
; gcrRegs +[edx]- mov gword ptr [ebp-0x80], edx+ mov gword ptr [ebp-0x7C], edx ; GC ptr vars +{V03}
xor edx, edx
; gcrRegs -[edx]
mov dword ptr [ebp-0x24], edx
;; size=19 bbWeight=8 PerfScore 36.00-G_M58893_IG04: ; bbWeight=8, gcVars=0000001200000000 {V03 V78}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz+G_M58893_IG04: ; bbWeight=8, gcVars=0000002400000000 {V03 V78}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne G_M58893_IG13
lea edx, [ebp-0x24]- mov ecx, gword ptr [ebp-0x80]+ mov ecx, gword ptr [ebp-0x7C] ; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
@@ -170,31 +171,32 @@ G_M58893_IG05: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000080
G_M58893_IG06: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
mov eax, gword ptr [edi+0x0AEC]
; gcrRegs +[eax]- mov gword ptr [ebp-0x7C], eax+ mov gword ptr [ebp-0x78], eax ; GC ptr vars +{V00}
mov edx, gword ptr [edi+0x0AF0]
; gcrRegs +[edx]
mov ecx, dword ptr [edx+0x0C]- mov dword ptr [ebp-0x50], ecx
- mov gword ptr [ebp-0x84], edx+ mov dword ptr [ebp-0x4C], ecx
+ mov gword ptr [ebp-0x80], edx ; GC ptr vars +{V45}
xor ecx, ecx- mov eax, dword ptr [ebp-0x50]+ mov eax, dword ptr [ebp-0x4C] ; gcrRegs -[eax]
mov dword ptr [ebp-0x3C], eax- ;; size=35 bbWeight=8 PerfScore 90.00
-G_M58893_IG07: ; bbWeight=64, gcVars=0000001600000008 {V00 V03 V45 V78}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref+ ;; size=32 bbWeight=8 PerfScore 90.00
+G_M58893_IG07: ; bbWeight=64, gcVars=0000002C00000080 {V00 V03 V45 V78}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref ; byrRegs -[edi]
cmp eax, dword ptr [edx+0x0C]- jne G_M58893_IG17+ jne G_M58893_IG18 ;; size=9 bbWeight=64 PerfScore 256.00
G_M58893_IG08: ; bbWeight=32, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref- cmp ecx, dword ptr [edx+0x08]
- jae G_M58893_IG21+ mov edi, dword ptr [edx+0x08]
+ cmp ecx, edi
+ jae G_M58893_IG20 mov edi, gword ptr [edx+0x04]
; gcrRegs +[edi]
cmp ecx, dword ptr [edi+0x04]- jae G_M58893_IG18+ jae G_M58893_IG17 mov edi, gword ptr [edi+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x38], ecx
@@ -206,45 +208,45 @@ G_M58893_IG08: ; bbWeight=32, gcrefRegs=00000044 {edx esi}, byrefRegs=000
mov ecx, dword ptr [edx]
mov edx, dword ptr [edx+0x04]
; byrRegs -[edx]- mov dword ptr [ebp-0x4C], ecx
- mov dword ptr [ebp-0x48], edx+ mov dword ptr [ebp-0x48], ecx
+ mov dword ptr [ebp-0x44], edx mov edx, dword ptr [ebp-0x2C]
mov ecx, dword ptr [ebp-0x28]- mov dword ptr [ebp-0x58], edx
- mov dword ptr [ebp-0x54], ecx
- mov edx, dword ptr [ebp-0x58]
- mov ecx, dword ptr [ebp-0x54]+ mov dword ptr [ebp-0x54], edx
+ mov dword ptr [ebp-0x50], ecx
+ mov edx, dword ptr [ebp-0x54]
+ mov ecx, dword ptr [ebp-0x50] and ecx, 0xD1FFAB1E
add edx, 0x2710
adc ecx, 0
...
@@ -9,58 +9,59 @@
; 0 inlinees with PGO data; 12 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;-; V00 loc0 [V00,T18] ( 8, 260 ) ref -> [ebp-0x54] class-hnd exact spill-single-def <<unknown class>>
-; V01 loc1 [V01,T00] ( 16,1249 ) ref -> edi class-hnd single-def <<unknown class>>+; V00 loc0 [V00,T19] ( 8, 260 ) ref -> [ebp-0x54] class-hnd exact spill-single-def <<unknown class>>
+; V01 loc1 [V01,T01] ( 15,1121 ) ref -> edi class-hnd single-def <<unknown class>> ; V02 loc2 [V02,T06] ( 9, 641 ) ref -> esi class-hnd single-def <<unknown class>>
; V03 loc3 [V03,T09] ( 8, 392 ) int -> [ebp-0x24] -; V04 loc4 [V04,T40] ( 2, 0 ) ref -> [ebp-0x58] class-hnd exact EH-live single-def <<unknown class>>+; V04 loc4 [V04,T41] ( 2, 0 ) ref -> [ebp-0x58] class-hnd exact EH-live single-def <<unknown class>> ; V05 loc5 [V05 ] ( 6, 5 ) ubyte -> [ebp-0x28] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc6 [V06 ] ( 1, 64 ) long -> [ebp-0x30] multireg-ret-; V07 loc7 [V07,T30] ( 3, 80 ) ref -> [ebp-0x5C] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>>+; V07 loc7 [V07,T31] ( 3, 80 ) ref -> [ebp-0x5C] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>> ; V08 loc8 [V08 ] ( 6, 320 ) ubyte -> [ebp-0x34] do-not-enreg[X] addr-exposed ld-addr-op-; V09 loc9 [V09,T01] ( 12,1152 ) int -> [ebp-0x38] +; V09 loc9 [V09,T00] ( 12,1152 ) int -> [ebp-0x38] ; V10 loc10 [V10,T08] ( 5, 448 ) ref -> [ebp-0x60] class-hnd exact spill-single-def <System.Threading.TimerQueue>
;* V11 loc11 [V11 ] ( 0, 0 ) long -> zero-ref
; V12 loc12 [V12,T10] ( 6, 384 ) int -> ebx
;* V13 loc13 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]>
;* V14 loc14 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Threading.TimerQueue>-; V15 tmp0 [V15,T39] ( 2, 4 ) ubyte -> ecx "Inlining Arg"+; V15 tmp0 [V15,T40] ( 2, 4 ) ubyte -> ecx "Inlining Arg" ;* V16 tmp1 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"-;* V17 tmp2 [V17,T33] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V18 tmp3 [V18,T23] ( 2, 256 ) ubyte -> ecx "Inlining Arg"
-; V19 tmp4 [V19,T25] ( 3, 192 ) ref -> [ebp-0x64] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V20 tmp5 [V20,T19] ( 4, 256 ) int -> ebx "Inline stloc first use temp"
-; V21 tmp6 [V21,T21] ( 2, 256 ) ref -> ecx class-hnd exact "Inlining Arg" <System.Threading.TimerQueue>+;* V17 tmp2 [V17,T34] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V18 tmp3 [V18,T24] ( 2, 256 ) ubyte -> ecx "Inlining Arg"
+; V19 tmp4 [V19,T26] ( 3, 192 ) ref -> [ebp-0x64] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V20 tmp5 [V20,T20] ( 4, 256 ) int -> ebx "Inline stloc first use temp"
+; V21 tmp6 [V21,T22] ( 2, 256 ) ref -> ecx class-hnd exact "Inlining Arg" <System.Threading.TimerQueue> ;* V22 tmp7 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Threading.TimerQueue]>-;* V23 tmp8 [V23,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V23 tmp8 [V23,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V24 tmp9 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V25 tmp10 [V25,T17] ( 3, 272 ) int -> ebx "Inline stloc first use temp"
-;* V26 tmp11 [V26,T36] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP
-; V27 tmp12 [V27,T15] ( 2, 192 ) ref -> ebx "field V13._current (fldOffset=0x4)" P-INDEP+; V25 tmp10 [V25,T18] ( 3, 272 ) int -> eax "Inline stloc first use temp"
+;* V26 tmp11 [V26,T37] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP
+; V27 tmp12 [V27,T16] ( 2, 192 ) ref -> ebx "field V13._current (fldOffset=0x4)" P-INDEP ; V28 tmp13 [V28,T02] ( 6, 656 ) int -> [ebp-0x3C] "field V13._index (fldOffset=0x8)" P-INDEP-; V29 tmp14 [V29,T29] ( 2, 144 ) int -> [ebp-0x40] spill-single-def "field V13._version (fldOffset=0xc)" P-INDEP
-; V30 tmp15 [V30,T34] ( 2, 32 ) ref -> eax "field V22._list (fldOffset=0x0)" P-INDEP+; V29 tmp14 [V29,T30] ( 2, 144 ) int -> [ebp-0x40] spill-single-def "field V13._version (fldOffset=0xc)" P-INDEP
+; V30 tmp15 [V30,T35] ( 2, 32 ) ref -> eax "field V22._list (fldOffset=0x0)" P-INDEP ;* V31 tmp16 [V31 ] ( 0, 0 ) ref -> zero-ref "field V22._current (fldOffset=0x4)" P-INDEP-;* V32 tmp17 [V32,T37] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x8)" P-INDEP
-; V33 tmp18 [V33,T35] ( 2, 32 ) int -> eax "field V22._version (fldOffset=0xc)" P-INDEP+;* V32 tmp17 [V32,T38] ( 0, 0 ) int -> zero-ref "field V22._index (fldOffset=0x8)" P-INDEP
+; V33 tmp18 [V33,T36] ( 2, 32 ) int -> eax "field V22._version (fldOffset=0xc)" P-INDEP ; V34 tmp19 [V34,T03] ( 3, 768 ) ref -> edx "arr expr"
; V35 tmp20 [V35,T12] ( 3, 384 ) ref -> ecx "arr expr"
; V36 tmp21 [V36,T13] ( 3, 384 ) ref -> edx "arr expr"-; V37 tmp22 [V37,T04] ( 3, 768 ) ref -> ebx "arr expr"
-; V38 tmp23 [V38,T22] ( 2, 256 ) ref -> ecx "argument with side effect"
-; V39 tmp24 [V39,T31] ( 2, 64 ) ref -> ecx "argument with side effect"+; V37 tmp22 [V37,T04] ( 3, 768 ) ref -> eax "arr expr"
+; V38 tmp23 [V38,T23] ( 2, 256 ) ref -> ecx "argument with side effect"
+; V39 tmp24 [V39,T32] ( 2, 64 ) ref -> ecx "argument with side effect" ; V40 EHSlots [V40 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V41 cse0 [V41,T38] ( 4, 4 ) byref -> esi "CSE - conservative"
-; V42 cse1 [V42,T32] ( 6, 51 ) ref -> edx multi-def "CSE - conservative"
-; V43 cse2 [V43,T07] ( 3, 384 ) int -> ebx "CSE - moderate"
-; V44 cse3 [V44,T20] ( 4, 256 ) int -> edx "CSE - conservative"
-; V45 cse4 [V45,T26] ( 3, 192 ) ref -> [ebp-0x68] spill-single-def "CSE - conservative"
-; V46 rat0 [V46,T27] ( 2, 192 ) int -> [ebp-0x44] spill-single-def "field V06.lo (fldOffset=0x0)" P-INDEP
-; V47 rat1 [V47,T28] ( 2, 192 ) int -> [ebp-0x48] spill-single-def "field V06.hi (fldOffset=0x4)" P-INDEP
-; V48 rat2 [V48,T11] ( 4, 384 ) int -> ebx "field V11.lo (fldOffset=0x0)" P-INDEP
-; V49 rat3 [V49,T16] ( 3, 320 ) int -> [ebp-0x4C] spill-single-def "field V11.hi (fldOffset=0x4)" P-INDEP
-; V50 rat4 [V50,T05] ( 3, 768 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
-; V51 rat5 [V51,T14] ( 3, 384 ) int -> [ebp-0x50] spill-single-def "ReplaceWithLclVar is creating a new local variable"+; V41 cse0 [V41,T39] ( 4, 4 ) byref -> esi "CSE - conservative"
+; V42 cse1 [V42,T33] ( 6, 51 ) ref -> edx multi-def "CSE - conservative"
+; V43 cse2 [V43,T14] ( 3, 384 ) int -> ebx "CSE - moderate"
+; V44 cse3 [V44,T07] ( 3, 384 ) int -> eax "CSE - moderate"
+; V45 cse4 [V45,T21] ( 4, 256 ) int -> edx "CSE - conservative"
+; V46 cse5 [V46,T27] ( 3, 192 ) ref -> [ebp-0x68] spill-single-def "CSE - conservative"
+; V47 rat0 [V47,T28] ( 2, 192 ) int -> [ebp-0x44] spill-single-def "field V06.lo (fldOffset=0x0)" P-INDEP
+; V48 rat1 [V48,T29] ( 2, 192 ) int -> [ebp-0x48] spill-single-def "field V06.hi (fldOffset=0x4)" P-INDEP
+; V49 rat2 [V49,T11] ( 4, 384 ) int -> ebx "field V11.lo (fldOffset=0x0)" P-INDEP
+; V50 rat3 [V50,T17] ( 3, 320 ) int -> [ebp-0x4C] spill-single-def "field V11.hi (fldOffset=0x4)" P-INDEP
+; V51 rat4 [V51,T05] ( 3, 768 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V52 rat5 [V52,T15] ( 3, 384 ) int -> [ebp-0x50] spill-single-def "ReplaceWithLclVar is creating a new local variable" ; TEMP_01 int -> [ebp-0x6C]
;
; Lcl frame size = 96
@@ -91,22 +92,22 @@ G_M45973_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
xor edx, edx
mov dword ptr [ebp-0x28], edx
;; size=31 bbWeight=1 PerfScore 10.50-G_M45973_IG03: ; bbWeight=1, gcVars=0000010000040000 {V00 V04}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz+G_M45973_IG03: ; bbWeight=1, gcVars=0000020000080000 {V00 V04}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz ; byrRegs -[eax]
cmp byte ptr [ebp-0x28], 0
je SHORT G_M45973_IG05
;; size=6 bbWeight=1 PerfScore 3.00-G_M45973_IG04: ; bbWeight=0, gcVars=0000010000000000 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+G_M45973_IG04: ; bbWeight=0, gcVars=0000020000000000 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[ebx edi]
; byrRegs -[esi]
; GC ptr vars -{V00}
call [System.Threading.Monitor:ThrowLockTakenException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M45973_IG05: ; bbWeight=1, gcVars=0000010000040000 {V00 V04}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz+G_M45973_IG05: ; bbWeight=1, gcVars=0000020000080000 {V00 V04}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz ; gcrRegs +[ebx edi]
; byrRegs +[esi]- ; GC ptr vars +{V00 V18}+ ; GC ptr vars +{V00 V19} lea edx, [ebp-0x28]
mov ecx, ebx
; gcrRegs +[ecx]
@@ -128,8 +129,8 @@ G_M45973_IG06: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000
; gcrRegs +[esi]
; byrRegs -[esi]
;; size=6 bbWeight=1 PerfScore 2.00-G_M45973_IG07: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V04 V18}+G_M45973_IG07: ; bbWeight=1, gcVars=0000000000080000 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V04 V19} cmp byte ptr [ebp-0x28], 0
je SHORT G_M45973_IG10
mov ecx, ebx
@@ -138,14 +139,14 @@ G_M45973_IG07: ; bbWeight=1, gcVars=0000000000040000 {V00}, gcrefRegs=000
; gcrRegs -[ecx]
jmp SHORT G_M45973_IG10
;; size=16 bbWeight=1 PerfScore 8.25-G_M45973_IG08: ; bbWeight=0, gcVars=0000010000000000 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M45973_IG08: ; bbWeight=0, gcVars=0000020000000000 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[ebx esi edi]- ; GC ptr vars -{V00} +{V04}+ ; GC ptr vars -{V00} +{V04 V41} cmp byte ptr [ebp-0x28], 0
je SHORT G_M45973_IG09
mov ecx, gword ptr [ebp-0x58]
; gcrRegs +[ecx]- ; GC ptr vars -{V04}+ ; GC ptr vars -{V04 V41} call [<unknown method>]
; gcrRegs -[ecx]
;; size=15 bbWeight=0 PerfScore 0.00
@@ -153,9 +154,9 @@ G_M45973_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M45973_IG10: ; bbWeight=8, gcVars=0000000000040000 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref+G_M45973_IG10: ; bbWeight=8, gcVars=0000000000080000 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[ebx esi edi]- ; GC ptr vars +{V00 V18}+ ; GC ptr vars +{V00 V19} mov eax, -1
;; size=5 bbWeight=8 PerfScore 2.00
G_M45973_IG11: ; bbWeight=64, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
@@ -181,8 +182,8 @@ G_M45973_IG11: ; bbWeight=64, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs
xor eax, eax
mov dword ptr [ebp-0x34], eax
;; size=54 bbWeight=64 PerfScore 1216.00-G_M45973_IG12: ; bbWeight=64, gcVars=0000000040040000 {V00 V07}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V18}+G_M45973_IG12: ; bbWeight=64, gcVars=0000000080080000 {V00 V07}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V19} cmp byte ptr [ebp-0x34], 0
jne G_M45973_IG26
lea edx, [ebp-0x34]
@@ -233,7 +234,7 @@ G_M45973_IG15: ; bbWeight=128, gcrefRegs=000000C0 {esi edi}, byrefRegs=00
sbb edx, 0
jge G_M45973_IG24
;; size=60 bbWeight=128 PerfScore 3232.00-G_M45973_IG16: ; bbWeight=64, gcVars=0000000040040100 {V00 V07 V10}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M45973_IG16: ; bbWeight=64, gcVars=0000000080080100 {V00 V07 V10}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz mov byte ptr [ecx+0x39], 0
inc dword ptr [edi+0x0C]
mov edx, gword ptr [edi+0x04]
@@ -267,7 +268,7 @@ G_M45973_IG17: ; bbWeight=64, gcrefRegs=000000C0 {esi edi}, byrefRegs=000
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
mov gword ptr [ebp-0x68], ecx- ; GC ptr vars +{V45}+ ; GC ptr vars +{V46} cmp ebx, dword ptr [ecx+0x04]
jae SHORT G_M45973_IG25
mov ecx, gword ptr [ecx+4*ebx+0x08]
@@ -281,7 +282,7 @@ G_M45973_IG17: ; bbWeight=64, gcrefRegs=000000C0 {esi edi}, byrefRegs=000
lea edx, bword ptr [edx+4*eax+0x08]
; gcrRegs -[edx]
; byrRegs +[edx]- ; GC ptr vars -{V45}+ ; GC ptr vars -{V46} call [CORINFO_HELP_ASSIGN_REF_ECX]
; gcrRegs -[ecx]
; byrRegs -[edx]
@@ -306,19 +307,19 @@ G_M45973_IG21: ; bbWeight=32, gcrefRegs=000000C0 {esi edi}, byrefRegs=000
mov dword ptr [ebp-0x38], eax
jmp SHORT G_M45973_IG18
;; size=5 bbWeight=32 PerfScore 96.00-G_M45973_IG22: ; bbWeight=0, gcVars=0000000040000000 {V07}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+G_M45973_IG22: ; bbWeight=0, gcVars=0000000080000000 {V07}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[esi edi]
; GC ptr vars -{V00}
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M45973_IG23: ; bbWeight=64, gcVars=0000000040040100 {V00 V07 V10}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M45973_IG23: ; bbWeight=64, gcVars=0000000080080100 {V00 V07 V10}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[ecx esi edi]- ; GC ptr vars +{V00 V10 V18}+ ; GC ptr vars +{V00 V10 V19} mov ecx, edi
mov edx, gword ptr [ebp-0x60]
; gcrRegs +[edx]- ; GC ptr vars -{V10 V18}+ ; GC ptr vars -{V10 V19} call [<unknown method>]
; gcrRegs -[ecx edx]
jmp SHORT G_M45973_IG17
@@ -338,7 +339,7 @@ G_M45973_IG24: ; bbWeight=64, gcrefRegs=000000C0 {esi edi}, byrefRegs=000
mov dword ptr [ebp-0x24], ebx
jmp SHORT G_M45973_IG19
;; size=35 bbWeight=64 PerfScore 832.00-G_M45973_IG25: ; bbWeight=0, gcVars=0000000040000000 {V07}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+G_M45973_IG25: ; bbWeight=0, gcVars=0000000080000000 {V07}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[esi edi]
; GC ptr vars -{V00}
call [CORINFO_HELP_RNGCHKFAIL]
@@ -347,16 +348,16 @@ G_M45973_IG26: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [System.Threading.Monitor:ThrowLockTakenException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M45973_IG27: ; bbWeight=64, gcVars=0000000040040000 {V00 V07}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M45973_IG27: ; bbWeight=64, gcVars=0000000080080000 {V00 V07}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[esi edi]- ; GC ptr vars +{V00 V18}+ ; GC ptr vars +{V00 V19} cmp byte ptr [ebp-0x34], 0
je SHORT G_M45973_IG29
;; size=6 bbWeight=64 PerfScore 192.00
G_M45973_IG28: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [ebp-0x5C]
; gcrRegs +[ecx]- ; GC ptr vars -{V07 V18}+ ; GC ptr vars -{V07 V19} call [<unknown method>]
...
@@ -9,25 +9,25 @@
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T14] ( 8, 5.50) ref -> esi class-hnd single-def <System.Object>
-; V01 loc0 [V01,T23] ( 3, 1.50) ref -> edi class-hnd single-def <System.Action>
-; V02 loc1 [V02,T24] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>
-; V03 loc2 [V03,T25] ( 3, 1.50) ref -> eax class-hnd single-def <System.Threading.Tasks.Task>
-; V04 loc3 [V04,T21] ( 4, 2 ) ref -> ebx class-hnd single-def <<unknown class>>
-; V05 loc4 [V05,T26] ( 3, 1.50) ref -> ebx class-hnd single-def <<unknown class>>
-; V06 loc5 [V06,T27] ( 3, 1.50) ref -> ebx class-hnd single-def <System.Delegate[]>+; V00 arg0 [V00,T15] ( 8, 5.50) ref -> esi class-hnd single-def <System.Object>
+; V01 loc0 [V01,T24] ( 3, 1.50) ref -> edi class-hnd single-def <System.Action>
+; V02 loc1 [V02,T25] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>
+; V03 loc2 [V03,T26] ( 3, 1.50) ref -> eax class-hnd single-def <System.Threading.Tasks.Task>
+; V04 loc3 [V04,T22] ( 4, 2 ) ref -> ebx class-hnd single-def <<unknown class>>
+; V05 loc4 [V05,T27] ( 3, 1.50) ref -> ebx class-hnd single-def <<unknown class>>
+; V06 loc5 [V06,T28] ( 3, 1.50) ref -> ebx class-hnd single-def <System.Delegate[]> ; V07 loc6 [V07,T01] ( 8, 52.50) ref -> esi class-hnd exact single-def <<unknown class>>
;* V08 loc7 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Object]>
;* V09 loc8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object>-; V10 loc9 [V10,T15] ( 3, 6 ) ref -> eax class-hnd <System.Delegate[]>+; V10 loc9 [V10,T16] ( 3, 6 ) ref -> eax class-hnd <System.Delegate[]> ; V11 loc10 [V11,T07] ( 3, 20 ) ref -> [ebp-0x34] class-hnd spill-single-def <System.Delegate[]>
; V12 loc11 [V12,T00] ( 5, 66 ) int -> [ebp-0x24]
; V13 loc12 [V13,T02] ( 4, 48 ) ref -> ebx class-hnd <System.Delegate>-; V14 tmp0 [V14,T17] ( 3, 3 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp1 [V15,T18] ( 3, 3 ) ref -> esi class-hnd exact single-def "dup spill" <System.Delegate[]>
-; V16 tmp2 [V16,T19] ( 3, 3 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V17 tmp3 [V17,T20] ( 3, 3 ) ref -> ebx class-hnd exact single-def "dup spill" <System.Delegate[]>
-; V18 tmp4 [V18,T22] ( 2, 2 ) ref -> eax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Action>+; V14 tmp0 [V14,T18] ( 3, 3 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V15 tmp1 [V15,T19] ( 3, 3 ) ref -> esi class-hnd exact single-def "dup spill" <System.Delegate[]>
+; V16 tmp2 [V16,T20] ( 3, 3 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp3 [V17,T21] ( 3, 3 ) ref -> ebx class-hnd exact single-def "dup spill" <System.Delegate[]>
+; V18 tmp4 [V18,T23] ( 2, 2 ) ref -> eax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Action> ;* V19 tmp5 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Object]>
; V20 tmp6 [V20,T05] ( 3, 24 ) ref -> ecx class-hnd "Inline stloc first use temp" <System.Delegate[]>
; V21 tmp7 [V21,T03] ( 4, 32 ) int -> edi "Inline stloc first use temp"
@@ -37,15 +37,16 @@
; V25 tmp11 [V25,T10] ( 4, 12.50) ref -> [ebp-0x38] spill-single-def "field V08._list (fldOffset=0x0)" P-INDEP
; V26 tmp12 [V26,T12] ( 2, 6 ) ref -> eax "field V08._current (fldOffset=0x4)" P-INDEP
; V27 tmp13 [V27,T04] ( 6, 20.50) int -> [ebp-0x28] "field V08._index (fldOffset=0x8)" P-INDEP-; V28 tmp14 [V28,T16] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V08._version (fldOffset=0xc)" P-INDEP
-; V29 tmp15 [V29,T28] ( 3, 1.50) ref -> ebx single-def "field V19._list (fldOffset=0x0)" P-INDEP+; V28 tmp14 [V28,T17] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V08._version (fldOffset=0xc)" P-INDEP
+; V29 tmp15 [V29,T29] ( 3, 1.50) ref -> ebx single-def "field V19._list (fldOffset=0x0)" P-INDEP ;* V30 tmp16 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._current (fldOffset=0x4)" P-INDEP-;* V31 tmp17 [V31,T30] ( 0, 0 ) int -> zero-ref "field V19._index (fldOffset=0x8)" P-INDEP
-; V32 tmp18 [V32,T29] ( 2, 1 ) int -> edi "field V19._version (fldOffset=0xc)" P-INDEP+;* V31 tmp17 [V31,T31] ( 0, 0 ) int -> zero-ref "field V19._index (fldOffset=0x8)" P-INDEP
+; V32 tmp18 [V32,T30] ( 2, 1 ) int -> edi "field V19._version (fldOffset=0xc)" P-INDEP ; V33 tmp19 [V33,T06] ( 3, 24 ) ref -> eax "arr expr"
; V34 EHSlots [V34 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V35 cse0 [V35,T11] ( 2, 8 ) int -> eax "CSE - moderate"
-; V36 cse1 [V36,T08] ( 3, 20 ) int -> [ebp-0x30] spill-single-def "CSE - moderate"+; V35 cse0 [V35,T14] ( 2, 8 ) int -> eax "CSE - moderate"
+; V36 cse1 [V36,T11] ( 2, 8 ) int -> eax "CSE - moderate"
+; V37 cse2 [V37,T08] ( 3, 20 ) int -> [ebp-0x30] spill-single-def "CSE - moderate" ;
; Lcl frame size = 44
@@ -276,7 +277,8 @@ G_M37569_IG15: ; bbWeight=8, gcVars=00000400 {V25}, gcrefRegs=00000040 {e
mov edi, dword ptr [ebp-0x2C]
;; size=6 bbWeight=8 PerfScore 16.00
G_M37569_IG16: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz- cmp edi, dword ptr [ebx+0x0C]+ mov eax, dword ptr [ebx+0x0C]
+ cmp edi, eax jne SHORT G_M37569_IG23
mov eax, dword ptr [ebx+0x08]
cmp ecx, eax
@@ -289,7 +291,7 @@ G_M37569_IG16: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
inc ecx
mov dword ptr [ebp-0x28], ecx
jmp G_M37569_IG08- ;; size=33 bbWeight=4 PerfScore 74.00+ ;; size=35 bbWeight=4 PerfScore 71.00 G_M37569_IG17: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ebx]
; GC ptr vars -{V25}
@@ -335,6 +337,6 @@ G_M37569_IG23: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 457, prolog size 16, PerfScore 530.00, instruction count 155, allocated bytes for code 457 (MethodHash=9db16d3e) for method System.Threading.Tasks.Task:GetDelegatesFromContinuationObject(System.Object):System.Delegate[] (FullOpts)+; Total bytes of code 459, prolog size 16, PerfScore 527.00, instruction count 156, allocated bytes for code 459 (MethodHash=9db16d3e) for method System.Threading.Tasks.Task:GetDelegatesFromContinuationObject(System.Object):System.Delegate[] (FullOpts) ; ============================================================
@@ -9,26 +9,27 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T08] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl>
-; V01 arg1 [V01,T07] ( 3, 4 ) ref -> esi class-hnd single-def <ubyte[]>+; V00 this [V00,T09] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl>
+; V01 arg1 [V01,T08] ( 3, 4 ) ref -> esi class-hnd single-def <ubyte[]> ; V02 loc0 [V02 ] ( 3, 7 ) int -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Diagnostics.Tracing.FieldMetadata>-; V05 tmp0 [V05,T09] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>+; V05 tmp0 [V05,T10] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>> ;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Diagnostics.Tracing.FieldMetadata]>-;* V07 tmp2 [V07,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V07 tmp2 [V07,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V09 tmp4 [V09,T02] ( 4, 17 ) ref -> edi single-def "field V03._list (fldOffset=0x0)" P-INDEP-; V10 tmp5 [V10,T04] ( 2, 6 ) ref -> ecx "field V03._current (fldOffset=0x4)" P-INDEP+; V10 tmp5 [V10,T05] ( 2, 6 ) ref -> ecx "field V03._current (fldOffset=0x4)" P-INDEP ; V11 tmp6 [V11,T00] ( 6, 21 ) int -> [ebp-0x28] "field V03._index (fldOffset=0x8)" P-INDEP-; V12 tmp7 [V12,T05] ( 2, 9 ) int -> ebx "field V03._version (fldOffset=0xc)" P-INDEP
-; V13 tmp8 [V13,T10] ( 3, 3 ) ref -> edi single-def "field V06._list (fldOffset=0x0)" P-INDEP+; V12 tmp7 [V12,T06] ( 2, 9 ) int -> ebx "field V03._version (fldOffset=0xc)" P-INDEP
+; V13 tmp8 [V13,T11] ( 3, 3 ) ref -> edi single-def "field V06._list (fldOffset=0x0)" P-INDEP ;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._current (fldOffset=0x4)" P-INDEP-;* V15 tmp10 [V15,T12] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
-; V16 tmp11 [V16,T11] ( 2, 2 ) int -> ebx "field V06._version (fldOffset=0xc)" P-INDEP+;* V15 tmp10 [V15,T13] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
+; V16 tmp11 [V16,T12] ( 2, 2 ) int -> ebx "field V06._version (fldOffset=0xc)" P-INDEP ; V17 tmp12 [V17,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V18 EHSlots [V18 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V19 cse0 [V19,T03] ( 2, 8 ) int -> ecx "CSE - moderate"+; V19 cse0 [V19,T04] ( 2, 8 ) int -> ecx "CSE - moderate"
+; V20 cse1 [V20,T03] ( 2, 16 ) int -> ecx "CSE - aggressive" ;
; Lcl frame size = 28
@@ -66,9 +67,10 @@ G_M38703_IG04: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=
mov edx, dword ptr [ebp-0x28]
;; size=15 bbWeight=2 PerfScore 17.00
G_M38703_IG05: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [edi+0x0C]+ mov ecx, dword ptr [edi+0x0C]
+ cmp ebx, ecx jne SHORT G_M38703_IG10- ;; size=5 bbWeight=8 PerfScore 32.00+ ;; size=7 bbWeight=8 PerfScore 26.00 G_M38703_IG06: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx
@@ -102,6 +104,6 @@ G_M38703_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 98, prolog size 14, PerfScore 138.25, instruction count 41, allocated bytes for code 98 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)+; Total bytes of code 100, prolog size 14, PerfScore 132.25, instruction count 42, allocated bytes for code 100 (MethodHash=726d68d0) for method System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts) ; ============================================================
@@ -8,34 +8,33 @@
; 8 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T05] ( 14, 10 ) ref -> [ebp-0x28] this class-hnd EH-live single-def <System.IO.Packaging.PackagePart>+; V00 this [V00,T06] ( 14, 10 ) ref -> [ebp-0x28] this class-hnd EH-live single-def <System.IO.Packaging.PackagePart> ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.IO.Stream]>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.IO.Stream>-; V03 tmp0 [V03,T09] ( 2, 2 ) ref -> esi class-hnd single-def "Inlining Arg" <<unknown class>>+; V03 tmp0 [V03,T10] ( 2, 2 ) ref -> esi class-hnd single-def "Inlining Arg" <<unknown class>> ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.Stream]>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.IO.FileStream>-; V06 tmp3 [V06,T04] ( 4, 10.24) ref -> [ebp-0x2C] class-hnd spill-single-def "dup spill" <System.IO.Strategies.FileStreamStrategy>+; V06 tmp3 [V06,T05] ( 4, 10.24) ref -> [ebp-0x2C] class-hnd spill-single-def "dup spill" <System.IO.Strategies.FileStreamStrategy> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref -;* V08 tmp5 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V08 tmp5 [V08,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V10 tmp7 [V10,T07] ( 6, 40.67) ref -> edx class-hnd single-def "Inlining Arg" <<unknown class>>
-; V11 tmp8 [V11,T13] ( 3, 8.34) int -> eax single-def "Inline stloc first use temp"
-; V12 tmp9 [V12,T02] ( 5, 12.51) ref -> esi single-def "field V01._list (fldOffset=0x0)" P-INDEP
-; V13 tmp10 [V13,T03] ( 6, 9.33) ref -> [ebp-0x30] spill-single-def "field V01._current (fldOffset=0x4)" P-INDEP+; V10 tmp7 [V10,T08] ( 6, 40.67) ref -> edx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp8 [V11,T14] ( 3, 8.34) int -> eax single-def "Inline stloc first use temp"
+; V12 tmp9 [V12,T04] ( 4, 11.84) ref -> esi single-def "field V01._list (fldOffset=0x0)" P-INDEP
+; V13 tmp10 [V13,T02] ( 6, 9.33) ref -> [ebp-0x30] spill-single-def "field V01._current (fldOffset=0x4)" P-INDEP ; V14 tmp11 [V14,T00] ( 6, 17.82) int -> ebx "field V01._index (fldOffset=0x8)" P-INDEP-; V15 tmp12 [V15,T08] ( 3, 5.17) int -> [ebp-0x24] spill-single-def "field V01._version (fldOffset=0xc)" P-INDEP
-; V16 tmp13 [V16,T10] ( 3, 1.50) ref -> esi single-def "field V04._list (fldOffset=0x0)" P-INDEP+; V15 tmp12 [V15,T09] ( 2, 4.50) int -> [ebp-0x24] spill-single-def "field V01._version (fldOffset=0xc)" P-INDEP
+; V16 tmp13 [V16,T11] ( 3, 1.50) ref -> esi single-def "field V04._list (fldOffset=0x0)" P-INDEP ;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._current (fldOffset=0x4)" P-INDEP-;* V18 tmp15 [V18,T15] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x8)" P-INDEP
-; V19 tmp16 [V19,T14] ( 2, 1 ) int -> edi single-def "field V04._version (fldOffset=0xc)" P-INDEP+;* V18 tmp15 [V18,T16] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x8)" P-INDEP
+; V19 tmp16 [V19,T15] ( 2, 1 ) int -> edi single-def "field V04._version (fldOffset=0xc)" P-INDEP ; V20 tmp17 [V20,T01] ( 3, 19.97) ref -> edx "arr expr"-; V21 tmp18 [V21,T12] ( 2, 1.34) ref -> edx single-def "argument with side effect"+; V21 tmp18 [V21,T13] ( 2, 1.34) ref -> edx single-def "argument with side effect" ; V22 EHSlots [V22 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"-; V23 cse0 [V23,T11] ( 3, 1.50) ref -> esi "CSE - conservative"
-; TEMP_02 ref -> [ebp-0x34]
-; TEMP_01 int -> [ebp-0x38]+; V23 cse0 [V23,T03] ( 2, 8.01) int -> edx "CSE - moderate"
+; V24 cse1 [V24,T12] ( 3, 1.50) ref -> esi "CSE - conservative" ;-; Lcl frame size = 44+; Lcl frame size = 36
G_M35060_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -43,34 +42,35 @@ G_M35060_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx- sub esp, 44
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [ebp-0x34], ymm4+ sub esp, 36 xor eax, eax+ mov dword ptr [ebp-0x20], eax
+ mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax mov dword ptr [ebp-0x14], eax
mov gword ptr [ebp-0x28], ecx
; GC ptr vars +{V00}- ;; size=26 bbWeight=1 PerfScore 9.08
-G_M35060_IG02: ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref+ ;; size=26 bbWeight=1 PerfScore 9.75
+G_M35060_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[ecx]
cmp byte ptr [ecx+0x1C], 0- jne G_M35060_IG23+ jne G_M35060_IG22 ;; size=10 bbWeight=1 PerfScore 4.00
G_M35060_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
mov esi, gword ptr [ecx+0x10]
; gcrRegs +[esi]
test esi, esi- je G_M35060_IG17+ je G_M35060_IG16 cmp byte ptr [ecx+0x1D], 0- jne G_M35060_IG15+ jne SHORT G_M35060_IG14 mov edi, dword ptr [esi+0x0C]
xor ebx, ebx
mov dword ptr [ebp-0x24], edi
jmp SHORT G_M35060_IG09- ;; size=31 bbWeight=0.50 PerfScore 6.25
-G_M35060_IG04: ; bbWeight=2, gcVars=00000028 {V00 V13}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz+ ;; size=27 bbWeight=0.50 PerfScore 6.25
+G_M35060_IG04: ; bbWeight=2, gcVars=00000044 {V00 V13}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[ecx] +[eax]- ; GC ptr vars +{V03 V13}+ ; GC ptr vars +{V13} cmp dword ptr [eax], 0xD1FFAB1E
jne SHORT G_M35060_IG08
;; size=8 bbWeight=2 PerfScore 8.00
@@ -83,23 +83,19 @@ G_M35060_IG05: ; bbWeight=1.28, gcrefRegs=00000041 {eax esi}, byrefRegs=0
je SHORT G_M35060_IG07
mov ecx, edx
; gcrRegs +[ecx]- mov gword ptr [ebp-0x34], ecx mov edx, 1
; gcrRegs -[edx]- mov ecx, gword ptr [ebp-0x2C]
- mov ecx, dword ptr [ecx]
- ; gcrRegs -[ecx]
- mov ecx, dword ptr [ecx+0x34]
- mov dword ptr [ebp-0x38], ecx
- mov ecx, gword ptr [ebp-0x34]
- ; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x38]
- ; GC ptr vars -{V03 V06}+ mov edi, gword ptr [ebp-0x2C]
+ ; gcrRegs +[edi]
+ mov edi, dword ptr [edi]
+ ; gcrRegs -[edi]
+ mov edi, dword ptr [edi+0x34]
+ ; GC ptr vars -{V06} call [edi+0x10]<unknown method>
; gcrRegs -[eax ecx]
mov eax, gword ptr [ebp-0x30]
; gcrRegs +[eax]- ;; size=43 bbWeight=1.28 PerfScore 22.72+ ;; size=31 bbWeight=1.28 PerfScore 17.60 G_M35060_IG06: ; bbWeight=1.28, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, eax
; gcrRegs +[ecx]
@@ -109,8 +105,8 @@ G_M35060_IG06: ; bbWeight=1.28, gcrefRegs=00000041 {eax esi}, byrefRegs=0
mov edi, dword ptr [ebp-0x24]
jmp SHORT G_M35060_IG09
;; size=12 bbWeight=1.28 PerfScore 5.44-G_M35060_IG07: ; bbWeight=0.64, gcVars=00000028 {V00 V13}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V03 V13}+G_M35060_IG07: ; bbWeight=0.64, gcVars=00000044 {V00 V13}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V13} mov eax, gword ptr [ebp-0x30]
; gcrRegs +[eax]
jmp SHORT G_M35060_IG06
@@ -121,19 +117,20 @@ G_M35060_IG08: ; bbWeight=0.72, gcrefRegs=00000041 {eax esi}, byrefRegs=0
mov eax, dword ptr [eax]
; gcrRegs -[eax]
mov eax, dword ptr [eax+0x34]- ; GC ptr vars -{V03 V13}+ ; GC ptr vars -{V13} call [eax+0x0C]System.IO.Stream:Close():this
; gcrRegs -[ecx]
mov edi, dword ptr [ebp-0x24]
;; size=13 bbWeight=0.72 PerfScore 5.94
G_M35060_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, dword ptr [esi+0x0C]- jne SHORT G_M35060_IG14+ jne SHORT G_M35060_IG13 ;; size=5 bbWeight=4 PerfScore 16.00
G_M35060_IG10: ; bbWeight=4.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [esi+0x08]
- jae SHORT G_M35060_IG15
- ;; size=5 bbWeight=4.01 PerfScore 16.02+ mov edx, dword ptr [esi+0x08]
+ cmp ebx, edx
+ jae SHORT G_M35060_IG14
+ ;; size=7 bbWeight=4.01 PerfScore 13.02 G_M35060_IG11: ; bbWeight=3.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
@@ -155,14 +152,7 @@ G_M35060_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M35060_IG14: ; bbWeight=0.67, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi]
- mov edi, dword ptr [ebp-0x24]
- cmp edi, dword ptr [esi+0x0C]
- jne SHORT G_M35060_IG13
- ;; size=8 bbWeight=0.67 PerfScore 3.35
-G_M35060_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[esi]+G_M35060_IG14: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x28]
; gcrRegs +[ecx]
mov edx, gword ptr [ecx+0x10]
@@ -172,9 +162,9 @@ G_M35060_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
xor esi, esi
mov dword ptr [edx+0x08], esi
test eax, eax- jle SHORT G_M35060_IG17+ jle SHORT G_M35060_IG16 ;; size=21 bbWeight=4 PerfScore 42.00-G_M35060_IG16: ; bbWeight=0.34, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref+G_M35060_IG15: ; bbWeight=0.34, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx]
mov edx, gword ptr [edx+0x04]
push eax
@@ -185,23 +175,23 @@ G_M35060_IG16: ; bbWeight=0.34, gcrefRegs=00000004 {edx}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[ecx]
;; size=14 bbWeight=0.34 PerfScore 2.18-G_M35060_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M35060_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref xor eax, eax
; gcrRegs +[eax]
mov ecx, gword ptr [ebp-0x28]
; gcrRegs +[ecx]
mov gword ptr [ecx+0x10], eax
;; size=8 bbWeight=0.50 PerfScore 1.12-G_M35060_IG18: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref+G_M35060_IG17: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax]
mov gword ptr [ecx+0x14], eax
;; size=3 bbWeight=0.50 PerfScore 0.50-G_M35060_IG19: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz+G_M35060_IG18: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz mov gword ptr [ecx+0x08], eax
mov byte ptr [ecx+0x1C], 1- jmp SHORT G_M35060_IG23+ jmp SHORT G_M35060_IG22 ;; size=9 bbWeight=0.50 PerfScore 2.00-G_M35060_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M35060_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx]
xor eax, eax
; gcrRegs +[eax]
@@ -209,17 +199,17 @@ G_M35060_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[ecx]
mov gword ptr [ecx+0x10], eax
;; size=8 bbWeight=0 PerfScore 0.00-G_M35060_IG21: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref+G_M35060_IG20: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax]
mov gword ptr [ecx+0x14], eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M35060_IG22: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref+G_M35060_IG21: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref mov gword ptr [ecx+0x08], eax
mov byte ptr [ecx+0x1C], 1
pop eax
jmp eax
;; size=10 bbWeight=0 PerfScore 0.00-G_M35060_IG23: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc+G_M35060_IG22: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc ; gcrRegs -[ecx]
; GC ptr vars -{V00}
lea esp, [ebp-0x0C]
@@ -230,9 +220,9 @@ G_M35060_IG23: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
ret
;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 280, prolog size 26, PerfScore 187.49, instruction count 101, allocated bytes for code 280 (MethodHash=c698770b) for method System.IO.Packaging.PackagePart:Close():this (FullOpts)+; Total bytes of code 258, prolog size 26, PerfScore 176.68, instruction count 96, allocated bytes for code 258 (MethodHash=c698770b) for method System.IO.Packaging.PackagePart:Close():this (FullOpts)...
@@ -8,30 +8,31 @@
; 2 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T06] ( 7, 6.50) ref -> esi this class-hnd single-def <Microsoft.Build.Evaluation.ProjectCollection>
-; V01 arg1 [V01,T08] ( 4, 5 ) ref -> edi class-hnd single-def <System.String>
-; V02 loc0 [V02,T13] ( 2, 2 ) ubyte -> [ebp-0x24] spill-single-def
-; V03 loc1 [V03,T15] ( 5, 1.50) ref -> [ebp-0x30] class-hnd EH-live spill-single-def <System.IDisposable>+; V00 this [V00,T07] ( 7, 6.50) ref -> esi this class-hnd single-def <Microsoft.Build.Evaluation.ProjectCollection>
+; V01 arg1 [V01,T09] ( 4, 5 ) ref -> edi class-hnd single-def <System.String>
+; V02 loc0 [V02,T14] ( 2, 2 ) ubyte -> [ebp-0x24] spill-single-def
+; V03 loc1 [V03,T16] ( 5, 1.50) ref -> [ebp-0x30] class-hnd EH-live spill-single-def <System.IDisposable> ;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.Build.Evaluation.Project]>-; V05 tmp0 [V05,T10] ( 3, 6 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V06 tmp1 [V06,T11] ( 3, 5 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.Evaluation.ProjectCollectionChangedEventArgs>+; V05 tmp0 [V05,T11] ( 3, 6 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V06 tmp1 [V06,T12] ( 3, 5 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.Evaluation.ProjectCollectionChangedEventArgs> ;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Build.Evaluation.Project]>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>-;* V09 tmp4 [V09,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V09 tmp4 [V09,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V11 tmp6 [V11,T09] ( 4, 6 ) ref -> edi class-hnd exact single-def "dup spill" <<unknown class>>+; V11 tmp6 [V11,T10] ( 4, 6 ) ref -> edi class-hnd exact single-def "dup spill" <<unknown class>> ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref single-def-; V13 tmp8 [V13,T01] ( 5, 17.01) ref -> [ebp-0x38] spill-single-def "field V04._list (fldOffset=0x0)" P-INDEP+; V13 tmp8 [V13,T02] ( 4, 16.34) ref -> [ebp-0x38] spill-single-def "field V04._list (fldOffset=0x0)" P-INDEP ; V14 tmp9 [V14,T05] ( 2, 5.33) ref -> ebx "field V04._current (fldOffset=0x4)" P-INDEP
; V15 tmp10 [V15,T00] ( 6, 18.32) int -> [ebp-0x28] "field V04._index (fldOffset=0x8)" P-INDEP-; V16 tmp11 [V16,T04] ( 3, 9.67) int -> [ebp-0x2C] spill-single-def "field V04._version (fldOffset=0xc)" P-INDEP
-; V17 tmp12 [V17,T12] ( 3, 3 ) ref -> eax single-def "field V07._list (fldOffset=0x0)" P-INDEP+; V16 tmp11 [V16,T06] ( 2, 9 ) int -> [ebp-0x2C] spill-single-def "field V04._version (fldOffset=0xc)" P-INDEP
+; V17 tmp12 [V17,T13] ( 3, 3 ) ref -> eax single-def "field V07._list (fldOffset=0x0)" P-INDEP ;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._current (fldOffset=0x4)" P-INDEP-;* V19 tmp14 [V19,T16] ( 0, 0 ) int -> zero-ref single-def "field V07._index (fldOffset=0x8)" P-INDEP
-; V20 tmp15 [V20,T14] ( 2, 2 ) int -> edx single-def "field V07._version (fldOffset=0xc)" P-INDEP
-; V21 tmp16 [V21,T02] ( 3, 19.97) ref -> ebx "arr expr"
-; V22 tmp17 [V22,T03] ( 3, 12 ) ref -> ebx "argument with side effect"+;* V19 tmp14 [V19,T17] ( 0, 0 ) int -> zero-ref single-def "field V07._index (fldOffset=0x8)" P-INDEP
+; V20 tmp15 [V20,T15] ( 2, 2 ) int -> edx single-def "field V07._version (fldOffset=0xc)" P-INDEP
+; V21 tmp16 [V21,T01] ( 3, 19.97) ref -> ebx "arr expr"
+; V22 tmp17 [V22,T04] ( 3, 12 ) ref -> ebx "argument with side effect" ; V23 EHSlots [V23 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"+; V24 cse0 [V24,T03] ( 2, 8.01) int -> ebx "CSE - moderate" ;
; Lcl frame size = 44
@@ -61,7 +62,7 @@ G_M12469_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov gword ptr [ebp-0x30], eax
; GC ptr vars +{V03}
;; size=14 bbWeight=1 PerfScore 9.00-G_M12469_IG03: ; bbWeight=1, gcVars=00008000 {V03}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M12469_IG03: ; bbWeight=1, gcVars=00010000 {V03}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax]
mov ecx, gword ptr [esi+0x1C]
; gcrRegs +[ecx]
@@ -89,10 +90,9 @@ G_M12469_IG03: ; bbWeight=1, gcVars=00008000 {V03}, gcrefRegs=000000C0 {e
; GC ptr vars +{V13}
xor ecx, ecx
mov dword ptr [ebp-0x2C], edx- mov ebx, dword ptr [ebp-0x24] jmp SHORT G_M12469_IG05- ;; size=59 bbWeight=1 PerfScore 25.00
-G_M12469_IG04: ; bbWeight=2, gcVars=00008002 {V03 V13}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref+ ;; size=56 bbWeight=1 PerfScore 24.00
+G_M12469_IG04: ; bbWeight=2, gcVars=00010004 {V03 V13}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax] +[ebx]
; GC ptr vars -{V05}
mov ebx, gword ptr [ebx+0x04]
@@ -109,16 +109,16 @@ G_M12469_IG04: ; bbWeight=2, gcVars=00008002 {V03 V13}, gcrefRegs=000000C
; gcrRegs +[eax]
mov ecx, dword ptr [ebp-0x28]
mov edx, dword ptr [ebp-0x2C]- mov ebx, dword ptr [ebp-0x24]
- ;; size=27 bbWeight=2 PerfScore 27.00+ ;; size=24 bbWeight=2 PerfScore 25.00 G_M12469_IG05: ; bbWeight=8, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
cmp edx, dword ptr [eax+0x0C]- jne SHORT G_M12469_IG10+ jne SHORT G_M12469_IG09 ;; size=5 bbWeight=8 PerfScore 32.00
G_M12469_IG06: ; bbWeight=4.01, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ecx, dword ptr [eax+0x08]
- jae SHORT G_M12469_IG11
- ;; size=5 bbWeight=4.01 PerfScore 16.02+ mov ebx, dword ptr [eax+0x08]
+ cmp ecx, ebx
+ jae SHORT G_M12469_IG10
+ ;; size=7 bbWeight=4.01 PerfScore 13.02 G_M12469_IG07: ; bbWeight=3.33, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ebx, gword ptr [eax+0x04]
; gcrRegs +[ebx]
@@ -129,7 +129,7 @@ G_M12469_IG07: ; bbWeight=3.33, gcrefRegs=000000C1 {eax esi edi}, byrefRe
mov dword ptr [ebp-0x28], ecx
jmp SHORT G_M12469_IG04
;; size=18 bbWeight=3.33 PerfScore 37.45-G_M12469_IG08: ; bbWeight=0, gcVars=00008000 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+G_M12469_IG08: ; bbWeight=0, gcVars=00010000 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax ebx esi edi]
; GC ptr vars -{V13}
call CORINFO_HELP_RNGCHKFAIL
@@ -138,45 +138,37 @@ G_M12469_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M12469_IG10: ; bbWeight=0.67, gcVars=00008002 {V03 V13}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[eax esi]
- ; GC ptr vars +{V01 V13}
- mov edx, dword ptr [ebp-0x2C]
- cmp edx, dword ptr [eax+0x0C]
- jne SHORT G_M12469_IG09
- ;; size=8 bbWeight=0.67 PerfScore 3.35
-G_M12469_IG11: ; bbWeight=1, gcVars=00008000 {V03}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars -{V01 V13}+G_M12469_IG10: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi] mov eax, gword ptr [ebp-0x30]
; gcrRegs +[eax]
test eax, eax- je SHORT G_M12469_IG15+ je SHORT G_M12469_IG14 ;; size=7 bbWeight=1 PerfScore 2.25-G_M12469_IG12: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz+G_M12469_IG11: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz mov ecx, eax
; gcrRegs +[ecx]
; GC ptr vars -{V03}
call [<unknown method>]
; gcrRegs -[eax ecx]- jmp SHORT G_M12469_IG15+ jmp SHORT G_M12469_IG14 ;; size=10 bbWeight=0.50 PerfScore 2.62-G_M12469_IG13: ; bbWeight=0, gcVars=00008000 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M12469_IG12: ; bbWeight=0, gcVars=00010000 {V03}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[esi]- ; GC ptr vars +{V03 V15}+ ; GC ptr vars +{V03 V16} cmp gword ptr [ebp-0x30], 0- je SHORT G_M12469_IG14+ je SHORT G_M12469_IG13 mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]- ; GC ptr vars -{V03 V15}+ ; GC ptr vars -{V03 V16} call [<unknown method>]
; gcrRegs -[ecx]
;; size=15 bbWeight=0 PerfScore 0.00-G_M12469_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M12469_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M12469_IG15: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz+G_M12469_IG14: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi]
mov ecx, 0xD1FFAB1E ; Microsoft.Build.Evaluation.ProjectCollectionChangedEventArgs
call CORINFO_HELP_NEWSFAST
@@ -185,9 +177,9 @@ G_M12469_IG15: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edi, gword ptr [esi+0x2C]
; gcrRegs +[edi]
test edi, edi- je SHORT G_M12469_IG17+ je SHORT G_M12469_IG16 ;; size=24 bbWeight=1 PerfScore 5.50-G_M12469_IG16: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref+G_M12469_IG15: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref push eax
mov edx, esi
; gcrRegs +[edx]
@@ -196,10 +188,10 @@ G_M12469_IG16: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe
call [edi+0x0C]<unknown method>
; gcrRegs -[eax ecx edx esi edi]
;; size=9 bbWeight=0.50 PerfScore 3.12-G_M12469_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov eax, ebx
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M12469_IG18: ; bbWeight=1, epilog, nogc, extend+G_M12469_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [ebp-0x24]
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M12469_IG17: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -208,9 +200,9 @@ G_M12469_IG18: ; bbWeight=1, epilog, nogc, extend
ret
;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 253, prolog size 23, PerfScore 176.33, instruction count 91, allocated bytes for code 253 (MethodHash=7ae6cf4a) for method Microsoft.Build.Evaluation.ProjectCollection:RemoveGlobalProperty(System.String):ubyte:this (FullOpts)+; Total bytes of code 242, prolog size 23, PerfScore 167.72, instruction count 87, allocated bytes for code 242 (MethodHash=7ae6cf4a) for method Microsoft.Build.Evaluation.ProjectCollection:RemoveGlobalProperty(System.String):ubyte:this (FullOpts) ; ============================================================
*************** EH table for Microsoft.Build.Evaluation.ProjectCollection:RemoveGlobalProperty(System.String):ubyte:this
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M12469_IG03..G_M12469_IG11) handled by [G_M12469_IG13..G_M12469_IG15) (fault)+EH#0: try [G_M12469_IG03..G_M12469_IG10) handled by [G_M12469_IG12..G_M12469_IG14) (fault)
@@ -9,31 +9,32 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor>-; V01 arg1 [V01,T03] ( 8, 12.83) ref -> esi class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
-; V02 loc0 [V02,T15] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>+; V01 arg1 [V01,T04] ( 8, 12.83) ref -> esi class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
+; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op-; V04 loc2 [V04,T12] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>+; V04 loc2 [V04,T13] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
-; V08 tmp0 [V08,T11] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1"+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
+; V08 tmp0 [V08,T12] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>-; V10 tmp2 [V10,T07] ( 2, 4 ) ubyte -> ecx "Inlining Arg"+; V10 tmp2 [V10,T08] ( 2, 4 ) ubyte -> ecx "Inlining Arg" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>-;* V12 tmp4 [V12,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V14 tmp6 [V14,T08] ( 2, 3.83) ref -> edi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
-; V15 tmp7 [V15,T02] ( 5, 12.51) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
-; V16 tmp8 [V16,T04] ( 2, 6.66) ref -> edx "field V05._current (fldOffset=0x4)" P-INDEP+; V14 tmp6 [V14,T09] ( 2, 3.83) ref -> edi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
+; V15 tmp7 [V15,T03] ( 4, 11.84) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V16 tmp8 [V16,T05] ( 2, 6.66) ref -> edx "field V05._current (fldOffset=0x4)" P-INDEP ; V17 tmp9 [V17,T00] ( 6, 17.82) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP-; V18 tmp10 [V18,T06] ( 3, 5.17) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
-; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> ebx single-def "field V11._list (fldOffset=0x0)" P-INDEP+; V18 tmp10 [V18,T07] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> ebx single-def "field V11._list (fldOffset=0x0)" P-INDEP ;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x4)" P-INDEP-;* V21 tmp13 [V21,T16] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
-; V22 tmp14 [V22,T14] ( 2, 1 ) int -> eax "field V11._version (fldOffset=0xc)" P-INDEP+;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
+; V22 tmp14 [V22,T15] ( 2, 1 ) int -> eax "field V11._version (fldOffset=0xc)" P-INDEP ; V23 tmp15 [V23,T01] ( 3, 19.97) ref -> edx "arr expr"
; V24 EHSlots [V24 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V25 cse0 [V25,T09] ( 4, 3 ) ref -> ebx "CSE - moderate"+; V25 cse0 [V25,T02] ( 2, 8.01) int -> edx "CSE - aggressive"
+; V26 cse1 [V26,T10] ( 4, 3 ) ref -> ebx "CSE - moderate" ;
; Lcl frame size = 36
@@ -57,7 +58,7 @@ G_M53769_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
xor edx, edx
mov dword ptr [ebp-0x24], edx
;; size=8 bbWeight=1 PerfScore 2.25-G_M53769_IG03: ; bbWeight=1, gcVars=00008000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne SHORT G_M53769_IG10
lea edx, [ebp-0x24]
@@ -77,12 +78,12 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=0.50 PerfScore 1.75-G_M53769_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref+G_M53769_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ebx, gword ptr [esi+0x04]
; gcrRegs +[ebx]
test ebx, ebx- je G_M53769_IG16
- ;; size=11 bbWeight=1 PerfScore 3.25+ je SHORT G_M53769_IG15
+ ;; size=7 bbWeight=1 PerfScore 3.25 G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, ebx
; gcrRegs +[edx]
@@ -90,7 +91,7 @@ G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax- je SHORT G_M53769_IG15+ je SHORT G_M53769_IG14 mov ebx, eax
mov eax, dword ptr [ebx+0x0C]
; gcrRegs -[eax]
@@ -99,17 +100,18 @@ G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
;; size=26 bbWeight=0.50 PerfScore 3.12
G_M53769_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, dword ptr [ebx+0x0C]- jne SHORT G_M53769_IG11+ jne SHORT G_M53769_IG13 ;; size=5 bbWeight=4 PerfScore 16.00
G_M53769_IG08: ; bbWeight=4.01, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ecx, dword ptr [ebx+0x08]
- jae SHORT G_M53769_IG12
- ;; size=5 bbWeight=4.01 PerfScore 16.02+ mov edx, dword ptr [ebx+0x08]
+ cmp ecx, edx
+ jae SHORT G_M53769_IG11
+ ;; size=7 bbWeight=4.01 PerfScore 13.02 G_M53769_IG09: ; bbWeight=3.33, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae SHORT G_M53769_IG13+ jae SHORT G_M53769_IG12 mov edx, gword ptr [edx+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x28], ecx
@@ -127,28 +129,22 @@ G_M53769_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [System.Threading.Monitor:ThrowLockTakenException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M53769_IG11: ; bbWeight=0.67, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi]
- mov eax, dword ptr [ebp-0x2C]
- cmp eax, dword ptr [ebx+0x0C]
- jne SHORT G_M53769_IG14
- ;; size=8 bbWeight=0.67 PerfScore 3.35
-G_M53769_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx]+G_M53769_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi] xor ecx, ecx
; gcrRegs +[ecx]
mov gword ptr [esi+0x04], ecx- jmp SHORT G_M53769_IG16+ jmp SHORT G_M53769_IG15 ;; size=7 bbWeight=4 PerfScore 13.00-G_M53769_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx esi]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00-G_M53769_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG14: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ebx esi edi]
mov edx, ebx
; gcrRegs +[edx]
@@ -160,36 +156,36 @@ G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
mov ecx, esi
call [System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)]
; gcrRegs -[ecx edx ebx edi]- jmp SHORT G_M53769_IG12+ jmp SHORT G_M53769_IG11 ;; size=24 bbWeight=0.50 PerfScore 5.00-G_M53769_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi]
cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG20+ je SHORT G_M53769_IG19 ;; size=6 bbWeight=1 PerfScore 3.00-G_M53769_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
; GC ptr vars -{V02}
call <unknown method>
; gcrRegs -[ecx]- jmp SHORT G_M53769_IG20+ jmp SHORT G_M53769_IG19 ;; size=10 bbWeight=0.50 PerfScore 2.00-G_M53769_IG18: ; bbWeight=0, gcVars=00008000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V02 V15}+G_M53769_IG17: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V02 V16} cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG19+ je SHORT G_M53769_IG18 mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]- ; GC ptr vars -{V02 V15}+ ; GC ptr vars -{V02 V16} call <unknown method>
; gcrRegs -[ecx]
;; size=14 bbWeight=0 PerfScore 0.00-G_M53769_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M53769_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M53769_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -198,9 +194,9 @@ G_M53769_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 248, prolog size 14, PerfScore 145.51, instruction count 88, allocated bytes for code 248 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)+; Total bytes of code 238, prolog size 14, PerfScore 139.15, instruction count 86, allocated bytes for code 238 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts) ; ============================================================
*************** EH table for System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo)
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M53769_IG03..G_M53769_IG16) handled by [G_M53769_IG18..G_M53769_IG20) (fault)+EH#0: try [G_M53769_IG03..G_M53769_IG15) handled by [G_M53769_IG17..G_M53769_IG19) (fault)
@@ -123,7 +123,7 @@
;* V112 tmp97 [V112,T58] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V113 tmp98 [V113,T03] ( 3, 19.68) ref -> esi class-hnd exact "Inlining Arg" <System.String>
; V114 tmp99 [V114,T10] ( 5, 12 ) int -> esi "Inlining Arg"-; V115 tmp100 [V115,T17] ( 3, 8 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>+; V115 tmp100 [V115,T17] ( 3, 8 ) ref -> edx class-hnd exact "Inlining Arg" <System.String> ;* V116 tmp101 [V116 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V117 tmp102 [V117 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.Emit.RuntimeMethodBuilder>
; V118 tmp103 [V118,T49] ( 3, 3 ) ref -> [ebp-0x7C] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
@@ -212,7 +212,7 @@ G_M15401_IG02: ; bbWeight=1, gcVars=000000000000000000000200 {V00}, gcref
setne cl
movzx ecx, cl
mov dword ptr [ebp-0x10], ecx- jmp G_M15401_IG22+ jmp G_M15401_IG17 ;; size=50 bbWeight=1 PerfScore 10.50
G_M15401_IG03: ; bbWeight=2.00, gcVars=000000000000000000004200 {V00 V08}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx]
@@ -240,12 +240,12 @@ G_M15401_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
mov dword ptr [ebp-0x20], ecx
mov byte ptr [ebp-0x1C], 0
cmp byte ptr [ebp-0x1C], 0- jne G_M15401_IG15+ jne G_M15401_IG20 mov esi, gword ptr [ebp-0x58]
; gcrRegs +[esi]
; byrRegs -[esi]
test esi, esi- je G_M15401_IG16+ je G_M15401_IG21 mov ecx, dword ptr [ebp-0x20]
cmp ecx, dword ptr [ebp-0x14]
ja G_M15401_IG48
@@ -269,7 +269,7 @@ G_M15401_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
G_M15401_IG05: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov eax, dword ptr [ebp-0x30]
cmp dword ptr [esi+0x04], eax- ja G_M15401_IG16+ ja G_M15401_IG21 ;; size=12 bbWeight=2 PerfScore 10.00
G_M15401_IG06: ; bbWeight=2.00, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
lea edx, bword ptr [esi+0x08]
@@ -308,7 +308,7 @@ G_M15401_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
;; size=46 bbWeight=2 PerfScore 25.00
G_M15401_IG08: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
cmp dword ptr [ebp-0x34], 2- jb G_M15401_IG18+ jb G_M15401_IG25 ;; size=10 bbWeight=2 PerfScore 6.00
G_M15401_IG09: ; bbWeight=2.00, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov edx, 0xD1FFAB1E
@@ -346,10 +346,10 @@ G_M15401_IG10: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=57 bbWeight=2 PerfScore 32.50-G_M15401_IG11: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz+G_M15401_IG11: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref cmp dword ptr [ebp-0x38], 0- je SHORT G_M15401_IG19
- ;; size=6 bbWeight=2 PerfScore 6.00+ je G_M15401_IG26
+ ;; size=10 bbWeight=2 PerfScore 6.00 G_M15401_IG12: ; bbWeight=2.00, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
mov edx, 0xD1FFAB1E
; byrRegs +[edx]
@@ -373,7 +373,7 @@ G_M15401_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov bword ptr [ebp-0x74], eax
; GC ptr vars +{V73}
test ebx, ebx- jge SHORT G_M15401_IG20+ jge SHORT G_M15401_IG15 mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -381,51 +381,14 @@ G_M15401_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [<unknown method>]
; gcrRegs -[ecx edx]
; byrRegs -[eax]- jmp SHORT G_M15401_IG17
- ;; size=28 bbWeight=2 PerfScore 17.50
-G_M15401_IG15: ; bbWeight=1, gcVars=000000000000000000004200 {V00 V08}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
- ; GC ptr vars -{V73}
- mov esi, gword ptr [ebp-0x58]
- ; gcrRegs +[esi]
- ;; size=3 bbWeight=1 PerfScore 1.00
-G_M15401_IG16: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- lea ecx, [ebp-0x28]
- mov edx, esi
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[edx]
- jmp G_M15401_IG07
- ;; size=16 bbWeight=0.00 PerfScore 0.02
-G_M15401_IG17: ; bbWeight=2, gcVars=000000000000000000044200 {V00 V08 V73}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V73} mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]- jmp SHORT G_M15401_IG20
- ;; size=18 bbWeight=2 PerfScore 11.00
-G_M15401_IG18: ; bbWeight=0.01, gcVars=000000000000000000004200 {V00 V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V73}
- lea ecx, [ebp-0x28]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[edx]
- jmp G_M15401_IG10
- ;; size=19 bbWeight=0.01 PerfScore 0.03
-G_M15401_IG19: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- lea ecx, [ebp-0x28]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[edx]
- jmp SHORT G_M15401_IG13
- ;; size=16 bbWeight=0.01 PerfScore 0.03
-G_M15401_IG20: ; bbWeight=2, gcVars=000000000000000000044200 {V00 V08 V73}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V73}+ ;; size=42 bbWeight=2 PerfScore 20.50
+G_M15401_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov eax, bword ptr [ebp-0x74]
; byrRegs +[eax]
push ebx
@@ -444,9 +407,9 @@ G_M15401_IG20: ; bbWeight=2, gcVars=000000000000000000044200 {V00 V08 V73
vmovdqu xmmword ptr [ebp-0x28], xmm0
vmovdqu xmmword ptr [ebp-0x20], xmm0
test edx, edx- je SHORT G_M15401_IG22+ je SHORT G_M15401_IG17 ;; size=33 bbWeight=2 PerfScore 17.67-G_M15401_IG21: ; bbWeight=1.94, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref+G_M15401_IG16: ; bbWeight=1.94, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax]
push 0
mov ecx, gword ptr [D1FFAB1EH] ; static handle
@@ -455,7 +418,7 @@ G_M15401_IG21: ; bbWeight=1.94, gcrefRegs=0000004C {edx ebx esi}, byrefRe
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=1.94 PerfScore 17.48-G_M15401_IG22: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref+G_M15401_IG17: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi]
mov edx, gword ptr [ebp-0x50]
; gcrRegs +[edx]
@@ -472,14 +435,14 @@ G_M15401_IG22: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
test eax, eax
jne G_M15401_IG03
;; size=26 bbWeight=8 PerfScore 94.00-G_M15401_IG23: ; bbWeight=1, gcVars=000000000000000000000200 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M15401_IG18: ; bbWeight=1, gcVars=000000000000000000000200 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax]
; GC ptr vars -{V08}
mov esi, dword ptr [ebp-0x10]
test esi, esi- jne SHORT G_M15401_IG25
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M15401_IG24: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref+ jne G_M15401_IG33
+ ;; size=11 bbWeight=1 PerfScore 2.25
+G_M15401_IG19: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
mov edx, dword ptr [edi+0x04]
@@ -505,17 +468,146 @@ G_M15401_IG24: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
mov edi, gword ptr [ebp-0x5C]
; gcrRegs +[edi]
mov gword ptr [ebp+0x10], edi- ;; size=59 bbWeight=0.50 PerfScore 10.00
-G_M15401_IG25: ; bbWeight=1, gcVars=000000000000000000000200 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edi]
- ; GC ptr vars -{V09}+ jmp G_M15401_IG33
+ ;; size=64 bbWeight=0.50 PerfScore 11.00
+G_M15401_IG20: ; bbWeight=1, gcVars=000000000000000000004200 {V00 V08}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ebx edi]
+ ; GC ptr vars -{V09} +{V08}
+ mov esi, gword ptr [ebp-0x58]
+ ; gcrRegs +[esi]
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M15401_IG21: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ lea ecx, [ebp-0x28]
+ mov edx, esi
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[edx]
+ jmp G_M15401_IG07
+ ;; size=16 bbWeight=0.00 PerfScore 0.02
+G_M15401_IG22: ; bbWeight=0.50, gcVars=000000000000000000008200 {V00 V12}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[esi] +[ebx edi]
+ ; GC ptr vars -{V08} +{V12 V15}
+ xor ecx, ecx
+ mov edx, gword ptr [ebp+0x0C]
+ ; gcrRegs +[edx]
+ cmp dword ptr [edx+0x04], 0
+ jle G_M15401_IG31
+ ;; size=15 bbWeight=0.50 PerfScore 2.62
+G_M15401_IG23: ; bbWeight=4, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz
+ mov esi, gword ptr [edx+4*ecx+0x08]
+ ; gcrRegs +[esi]
+ test esi, esi
+ je SHORT G_M15401_IG30
+ ;; size=8 bbWeight=4 PerfScore 13.00
+G_M15401_IG24: ; bbWeight=1.84, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M15401_IG27
+ ;; size=2 bbWeight=1.84 PerfScore 3.68
+G_M15401_IG25: ; bbWeight=0.01, gcVars=000000000000000000004200 {V00 V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx ebx edi]
+ ; GC ptr vars -{V12 V15} +{V08}
+ lea ecx, [ebp-0x28]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[edx]
+ jmp G_M15401_IG10
+ ;; size=19 bbWeight=0.01 PerfScore 0.03
+G_M15401_IG26: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ lea ecx, [ebp-0x28]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[edx]
+ jmp G_M15401_IG13
+ ;; size=19 bbWeight=0.01 PerfScore 0.03
+G_M15401_IG27: ; bbWeight=1.84, gcVars=000000000000000000008200 {V00 V12}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[edx ebx edi]
+ ; GC ptr vars -{V08} +{V12 V15}
+ cmp dword ptr [esi+0x04], 0
+ je SHORT G_M15401_IG30
+ ;; size=6 bbWeight=1.84 PerfScore 7.35
+G_M15401_IG28: ; bbWeight=2, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi]
+ cmp dword ptr [ebp-0x10], 0
+ jne G_M15401_IG43
+ mov esi, 2
+ ;; size=15 bbWeight=2 PerfScore 6.50
+G_M15401_IG29: ; bbWeight=2, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref
+ add esi, ecx
+ mov gword ptr [ebp+0x0C], edx
+ mov dword ptr [ebp-0x2C], ecx
+ mov edx, gword ptr [edx+4*ecx+0x08]
+ mov eax, edi
+ ; gcrRegs +[eax]
+ cmp byte ptr [eax], al
+ test esi, esi
+ jl G_M15401_IG54...
@@ -8,9 +8,9 @@
; 4 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T14] ( 5, 5 ) ref -> esi this class-hnd single-def <Microsoft.Extensions.Caching.Memory.MemoryCache>
-; V01 RetBuf [V01,T15] ( 4, 4 ) byref -> [ebp-0x5C] single-def
-; V02 loc0 [V02,T32] ( 4, 1.50) ref -> [ebp-0x60] class-hnd EH-live spill-single-def <<unknown class>>+; V00 this [V00,T15] ( 5, 5 ) ref -> esi this class-hnd single-def <Microsoft.Extensions.Caching.Memory.MemoryCache>
+; V01 RetBuf [V01,T16] ( 4, 4 ) byref -> [ebp-0x60] single-def
+; V02 loc0 [V02,T33] ( 4, 1.50) ref -> [ebp-0x64] class-hnd EH-live spill-single-def <<unknown class>> ; V03 loc1 [V03 ] ( 5, 4 ) ubyte -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V04 loc2 [V04 ] ( 0, 0 ) long -> zero-ref
;* V05 loc3 [V05 ] ( 0, 0 ) long -> zero-ref
@@ -19,57 +19,58 @@
;* V08 loc6 [V08 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>
;* V09 loc7 [V09 ] ( 0, 0 ) struct (16) zero-ref <System.ValueTuple`2[long,long]>
;* V10 loc8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[long,long]>-; V11 tmp1 [V11,T28] ( 2, 4 ) ubyte -> ecx "Inlining Arg"
-; V12 tmp2 [V12,T27] ( 2, 4 ) ref -> esi class-hnd single-def "Inlining Arg" <<unknown class>>+; V11 tmp1 [V11,T29] ( 2, 4 ) ubyte -> ecx "Inlining Arg"
+; V12 tmp2 [V12,T28] ( 2, 4 ) ref -> esi class-hnd single-def "Inlining Arg" <<unknown class>> ;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[Microsoft.Extensions.Caching.Memory.MemoryCache+Stats]]>
;* V14 tmp4 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>-; V16 tmp6 [V16,T12] ( 5, 8 ) ref -> [ebp-0x64] class-hnd "Inline return value spill temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>
-; V17 tmp7 [V17,T06] ( 5, 10.66) int -> eax "Inline stloc first use temp"+; V16 tmp6 [V16,T13] ( 5, 8 ) ref -> [ebp-0x68] class-hnd "Inline return value spill temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>
+; V17 tmp7 [V17,T07] ( 5, 10.66) int -> ebx "Inline stloc first use temp" ;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>-; V19 tmp9 [V19,T26] ( 3, 4 ) ref -> eax class-hnd "Inline stloc first use temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>+; V19 tmp9 [V19,T27] ( 3, 4 ) ref -> ebx class-hnd "Inline stloc first use temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats> ;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>-; V22 tmp12 [V22,T35] ( 3, 0 ) ref -> [ebp-0x68] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>+; V22 tmp12 [V22,T36] ( 3, 0 ) ref -> ebx class-hnd "updating class info" <System.ComAwareWeakReference> ;* V23 tmp13 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V25 tmp15 [V25,T36] ( 2, 0 ) ref -> eax class-hnd "dup spill" <System.Object>
-; V26 tmp16 [V26,T34] ( 4, 0 ) ref -> eax
-; V27 tmp17 [V27,T04] ( 3, 12 ) byref -> eax "Inlining Arg"
-; V28 tmp18 [V28,T05] ( 3, 12 ) byref -> edx "Inlining Arg"
-;* V29 tmp19 [V29,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+; V25 tmp15 [V25,T37] ( 2, 0 ) ref -> eax class-hnd "dup spill" <System.Object>
+; V26 tmp16 [V26,T35] ( 4, 0 ) ref -> eax
+; V27 tmp17 [V27,T05] ( 3, 12 ) byref -> ebx "Inlining Arg"
+; V28 tmp18 [V28,T06] ( 3, 12 ) byref -> ecx "Inlining Arg"
+;* V29 tmp19 [V29,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V30 tmp20 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V31 tmp21 [V31,T01] ( 5, 17.01) ref -> esi single-def "field V06._list (fldOffset=0x0)" P-INDEP
-; V32 tmp22 [V32,T03] ( 3, 8.66) ref -> [ebp-0x6C] spill-single-def "field V06._current (fldOffset=0x4)" P-INDEP+; V31 tmp21 [V31,T02] ( 4, 16.34) ref -> [ebp-0x6C] spill-single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V32 tmp22 [V32,T03] ( 3, 8.66) ref -> [ebp-0x70] spill-single-def "field V06._current (fldOffset=0x4)" P-INDEP ; V33 tmp23 [V33,T00] ( 6, 18.32) int -> edi "field V06._index (fldOffset=0x8)" P-INDEP-; V34 tmp24 [V34,T07] ( 3, 9.67) int -> ebx single-def "field V06._version (fldOffset=0xc)" P-INDEP+; V34 tmp24 [V34,T12] ( 2, 9 ) int -> [ebp-0x28] spill-single-def "field V06._version (fldOffset=0xc)" P-INDEP ;* V35 tmp25 [V35 ] ( 0, 0 ) long -> zero-ref single-def "field V09.Item1 (fldOffset=0x0)" P-INDEP
;* V36 tmp26 [V36 ] ( 0, 0 ) long -> zero-ref single-def "field V09.Item2 (fldOffset=0x8)" P-INDEP-; V37 tmp27 [V37,T20] ( 3, 6 ) long -> [ebp-0x2C] do-not-enreg[F] single-def "field V10.Item1 (fldOffset=0x0)" P-INDEP
-; V38 tmp28 [V38,T21] ( 3, 6 ) long -> [ebp-0x34] do-not-enreg[F] single-def "field V10.Item2 (fldOffset=0x8)" P-INDEP
-; V39 tmp29 [V39,T29] ( 3, 3 ) ref -> [ebp-0x70] spill-single-def "field V13._list (fldOffset=0x0)" P-INDEP+; V37 tmp27 [V37,T21] ( 3, 6 ) long -> [ebp-0x30] do-not-enreg[F] single-def "field V10.Item1 (fldOffset=0x0)" P-INDEP
+; V38 tmp28 [V38,T22] ( 3, 6 ) long -> [ebp-0x38] do-not-enreg[F] single-def "field V10.Item2 (fldOffset=0x8)" P-INDEP
+; V39 tmp29 [V39,T30] ( 3, 3 ) ref -> [ebp-0x74] spill-single-def "field V13._list (fldOffset=0x0)" P-INDEP ;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x4)" P-INDEP-;* V41 tmp31 [V41,T33] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP
-; V42 tmp32 [V42,T31] ( 2, 2 ) int -> [ebp-0x38] spill-single-def "field V13._version (fldOffset=0xc)" P-INDEP
-; V43 tmp33 [V43,T02] ( 3, 19.97) ref -> eax "arr expr"+;* V41 tmp31 [V41,T34] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP
+; V42 tmp32 [V42,T32] ( 2, 2 ) int -> [ebp-0x3C] spill-single-def "field V13._version (fldOffset=0xc)" P-INDEP
+; V43 tmp33 [V43,T01] ( 3, 19.97) ref -> ebx "arr expr" ; V44 EHSlots [V44 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"-; V45 cse0 [V45,T30] ( 3, 3 ) ref -> ecx "CSE - conservative"
-; V46 rat0 [V46,T08] ( 4, 9 ) int -> [ebp-0x3C] "field V04.lo (fldOffset=0x0)" P-INDEP
-; V47 rat1 [V47,T09] ( 4, 9 ) int -> [ebp-0x40] "field V04.hi (fldOffset=0x4)" P-INDEP
-; V48 rat2 [V48,T10] ( 4, 9 ) int -> [ebp-0x44] "field V05.lo (fldOffset=0x0)" P-INDEP
-; V49 rat3 [V49,T11] ( 4, 9 ) int -> [ebp-0x48] "field V05.hi (fldOffset=0x4)" P-INDEP
-; V50 rat4 [V50,T16] ( 3, 6 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
-; V51 rat5 [V51,T17] ( 3, 6 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V52 rat6 [V52 ] ( 1, 4 ) long -> [ebp-0x50] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V53 rat7 [V53,T22] ( 2, 6 ) int -> eax "field V52.lo (fldOffset=0x0)" P-INDEP
-; V54 rat8 [V54,T23] ( 2, 6 ) int -> edx "field V52.hi (fldOffset=0x4)" P-INDEP
-; V55 rat9 [V55 ] ( 1, 4 ) long -> [ebp-0x58] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V56 rat10 [V56,T24] ( 2, 6 ) int -> eax "field V55.lo (fldOffset=0x0)" P-INDEP
-; V57 rat11 [V57,T25] ( 2, 6 ) int -> edx "field V55.hi (fldOffset=0x4)" P-INDEP
-; V58 rat12 [V58,T18] ( 3, 6 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
-; V59 rat13 [V59,T19] ( 3, 6 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"+; V45 cse0 [V45,T04] ( 2, 8.01) int -> ebx "CSE - moderate"
+; V46 cse1 [V46,T31] ( 3, 3 ) ref -> ecx "CSE - conservative"
+; V47 rat0 [V47,T08] ( 4, 9 ) int -> [ebp-0x40] "field V04.lo (fldOffset=0x0)" P-INDEP
+; V48 rat1 [V48,T09] ( 4, 9 ) int -> [ebp-0x44] "field V04.hi (fldOffset=0x4)" P-INDEP
+; V49 rat2 [V49,T10] ( 4, 9 ) int -> [ebp-0x48] "field V05.lo (fldOffset=0x0)" P-INDEP
+; V50 rat3 [V50,T11] ( 4, 9 ) int -> [ebp-0x4C] "field V05.hi (fldOffset=0x4)" P-INDEP
+; V51 rat4 [V51,T17] ( 3, 6 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V52 rat5 [V52,T18] ( 3, 6 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V53 rat6 [V53 ] ( 1, 4 ) long -> [ebp-0x54] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V54 rat7 [V54,T23] ( 2, 6 ) int -> eax "field V53.lo (fldOffset=0x0)" P-INDEP
+; V55 rat8 [V55,T24] ( 2, 6 ) int -> edx "field V53.hi (fldOffset=0x4)" P-INDEP
+; V56 rat9 [V56 ] ( 1, 4 ) long -> [ebp-0x5C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V57 rat10 [V57,T25] ( 2, 6 ) int -> eax "field V56.lo (fldOffset=0x0)" P-INDEP
+; V58 rat11 [V58,T26] ( 2, 6 ) int -> edx "field V56.hi (fldOffset=0x4)" P-INDEP
+; V59 rat12 [V59,T19] ( 3, 6 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V60 rat13 [V60,T20] ( 3, 6 ) byref -> edi "ReplaceWithLclVar is creating a new local variable" ;-; Lcl frame size = 100+; Lcl frame size = 104
G_M42359_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -77,23 +78,23 @@ G_M42359_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx- sub esp, 100+ sub esp, 104 vxorps xmm4, xmm4, xmm4
vmovdqu xmmword ptr [ebp-0x24], xmm4
xor eax, eax
mov dword ptr [ebp-0x14], eax- mov bword ptr [ebp-0x5C], edx+ mov bword ptr [ebp-0x60], edx ; GC ptr vars +{V01}
mov esi, ecx
; gcrRegs +[esi]
;; size=28 bbWeight=1 PerfScore 9.33-G_M42359_IG02: ; bbWeight=1, gcVars=0000000000008000 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref+G_M42359_IG02: ; bbWeight=1, gcVars=0000000000010000 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref mov ecx, gword ptr [esi+0x0C]
; gcrRegs +[ecx]- mov gword ptr [ebp-0x60], ecx+ mov gword ptr [ebp-0x64], ecx ; GC ptr vars +{V02}
;; size=6 bbWeight=1 PerfScore 3.00-G_M42359_IG03: ; bbWeight=1, gcVars=0000000100008000 {V01 V02}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M42359_IG03: ; bbWeight=1, gcVars=0000000200010000 {V01 V02}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne G_M42359_IG13
lea edx, [ebp-0x24]
@@ -119,224 +120,223 @@ G_M42359_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [eax]
mov eax, dword ptr [eax+0x04]
; byrRegs -[eax]- mov dword ptr [ebp-0x3C], ebx
- mov dword ptr [ebp-0x40], eax+ mov dword ptr [ebp-0x40], ebx
+ mov dword ptr [ebp-0x44], eax add ecx, 12
; gcrRegs -[ecx]
; byrRegs +[ecx]
mov edx, dword ptr [ecx]
mov ecx, dword ptr [ecx+0x04]
; byrRegs -[ecx]- mov dword ptr [ebp-0x44], edx
- mov dword ptr [ebp-0x48], ecx+ mov dword ptr [ebp-0x48], edx
+ mov dword ptr [ebp-0x4C], ecx mov esi, gword ptr [esi+0x0C]- mov gword ptr [ebp-0x70], esi+ mov gword ptr [ebp-0x74], esi ; GC ptr vars +{V39}
mov esi, dword ptr [esi+0x0C]
; gcrRegs -[esi]- mov dword ptr [ebp-0x38], esi
- mov esi, gword ptr [ebp-0x70]+ mov dword ptr [ebp-0x3C], esi
+ mov esi, gword ptr [ebp-0x74] ; gcrRegs +[esi]+ mov gword ptr [ebp-0x6C], esi
+ ; GC ptr vars +{V31} xor edi, edi- mov ebx, dword ptr [ebp-0x38]
- ;; size=51 bbWeight=1 PerfScore 23.00
-G_M42359_IG06: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref+ mov ebx, dword ptr [ebp-0x3C]
+ mov dword ptr [ebp-0x28], ebx
+ ;; size=57 bbWeight=1 PerfScore 25.00
+G_M42359_IG06: ; bbWeight=8, gcVars=0000000200010004 {V01 V02 V31}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V39}
cmp ebx, dword ptr [esi+0x0C]- jne G_M42359_IG16+ jne G_M42359_IG18 ;; size=9 bbWeight=8 PerfScore 32.00
G_M42359_IG07: ; bbWeight=4.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref- cmp edi, dword ptr [esi+0x08]+ mov ebx, dword ptr [esi+0x08]
+ cmp edi, ebx
+ jae G_M42359_IG16
+ ;; size=11 bbWeight=4.01 PerfScore 13.02
+G_M42359_IG08: ; bbWeight=3.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ebx, gword ptr [esi+0x04]
+ ; gcrRegs +[ebx]
+ cmp edi, dword ptr [ebx+0x04] jae G_M42359_IG17- ;; size=9 bbWeight=4.01 PerfScore 16.02
-G_M42359_IG08: ; bbWeight=3.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [esi+0x04]
- ; gcrRegs +[eax]
- cmp edi, dword ptr [eax+0x04]
- jae G_M42359_IG18
- mov eax, gword ptr [eax+4*edi+0x08]
- mov gword ptr [ebp-0x6C], eax+ mov ebx, gword ptr [ebx+4*edi+0x08]
+ mov gword ptr [ebp-0x70], ebx ; GC ptr vars +{V32}
inc edi- mov eax, dword ptr [eax+0x04]
- ; gcrRegs -[eax]
- and eax, -2
- je SHORT G_M42359_IG12
- ;; size=28 bbWeight=3.33 PerfScore 41.61
-G_M42359_IG09: ; bbWeight=2, gcVars=0000000100008008 {V01 V02 V32}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- test al, 2+ mov ebx, dword ptr [ebx+0x04]
+ ; gcrRegs -[ebx]
+ and ebx, -2
+ je G_M42359_IG12
+ ;; size=32 bbWeight=3.33 PerfScore 41.61
+G_M42359_IG09: ; bbWeight=2, gcVars=000000020001000C {V01 V02 V31 V32}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ test bl, 2 jne G_M42359_IG14- mov ecx, eax+ mov ecx, ebx call <unknown method>
; gcrRegs +[eax]- ;; size=15 bbWeight=2 PerfScore 5.00
-G_M42359_IG10: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- mov ecx, eax
- ; gcrRegs +[ecx]
- ;; size=2 bbWeight=2 PerfScore 0.50
-G_M42359_IG11: ; bbWeight=2, gcVars=0000000100008000 {V01 V02}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz+ mov ebx, eax
+ ; gcrRegs +[ebx]
+ ;; size=18 bbWeight=2 PerfScore 5.50
+G_M42359_IG10: ; bbWeight=2, gcVars=0000000200010004 {V01 V02 V31}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax]
; GC ptr vars -{V32}- test ecx, ecx
- mov gword ptr [ebp-0x64], ecx+ test ebx, ebx
+ mov gword ptr [ebp-0x68], ebx ; GC ptr vars +{V16}- je SHORT G_M42359_IG06
- mov eax, gword ptr [ebp-0x64]
- ; gcrRegs +[eax]
- add eax, 4
- ; gcrRegs -[eax]
- ; byrRegs +[eax]
- test eax, eax
- je G_M42359_IG20+ je SHORT G_M42359_IG11
+ mov ebx, gword ptr [ebp-0x68]...
@@ -106,7 +106,7 @@ G_M40104_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], ecx- jbe G_M40104_IG21+ jbe G_M40104_IG34 ;; size=18 bbWeight=1 PerfScore 9.00
G_M40104_IG03: ; bbWeight=0.47, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
mov word ptr [edx+2*ecx+0x08], 60
@@ -137,7 +137,7 @@ G_M40104_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=000000C0 {esi
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], ecx- jbe G_M40104_IG25+ jbe G_M40104_IG35 ;; size=15 bbWeight=1 PerfScore 8.00
G_M40104_IG07: ; bbWeight=0.47, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
mov word ptr [edx+2*ecx+0x08], 62
@@ -163,11 +163,11 @@ G_M40104_IG09: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov bword ptr [ebp-0x2C], ecx
; GC ptr vars +{V48}
test ebx, ebx- jle G_M40104_IG26+ jle G_M40104_IG32 ;; size=32 bbWeight=1 PerfScore 8.50
G_M40104_IG10: ; bbWeight=4, gcVars=00000080 {V48}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
cmp edx, 192- jl G_M40104_IG20+ jl G_M40104_IG33 ;; size=12 bbWeight=4 PerfScore 5.00
G_M40104_IG11: ; bbWeight=1.47, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov gword ptr [ebp-0x24], edi
@@ -231,49 +231,23 @@ G_M40104_IG17: ; bbWeight=4.00, gcrefRegs=00000040 {esi}, byrefRegs=00000
;; size=17 bbWeight=4.00 PerfScore 13.00
G_M40104_IG18: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test eax, eax- jge SHORT G_M40104_IG23+ jge SHORT G_M40104_IG20 ;; size=4 bbWeight=4 PerfScore 5.00-G_M40104_IG19: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz+G_M40104_IG19: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]- jmp SHORT G_M40104_IG22
- ;; size=18 bbWeight=2 PerfScore 11.00
-G_M40104_IG20: ; bbWeight=0.53, gcVars=00000080 {V48}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[edi]
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x24], edi
- ; GC ptr vars +{V00}
- mov dword ptr [ebp-0x18], edx
- mov edi, edx
- ; gcrRegs -[edi]
- mov edx, dword ptr [ebp-0x18]
- jmp G_M40104_IG12
- ;; size=16 bbWeight=0.53 PerfScore 2.78
-G_M40104_IG21: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[edi]
- ; GC ptr vars -{V00 V48}
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, 60
- call [<unknown method>]
- ; gcrRegs -[ecx]
- jmp G_M40104_IG04
- ;; size=18 bbWeight=0.03 PerfScore 0.19
-G_M40104_IG22: ; bbWeight=2, gcVars=00000480 {V00 V48}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edi]
- ; GC ptr vars +{V00 V48} mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]- ;; size=16 bbWeight=2 PerfScore 7.00
-G_M40104_IG23: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref+ ;; size=32 bbWeight=2 PerfScore 14.00
+G_M40104_IG20: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz push dword ptr [ebp-0x20]
mov ecx, esi
; gcrRegs +[ecx]
@@ -289,51 +263,41 @@ G_M40104_IG23: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edi, eax
test edx, edx
mov eax, edi- mov edi, gword ptr [ebp-0x24]
- ; gcrRegs +[edi]
- jg G_M40104_IG10
- ;; size=39 bbWeight=4 PerfScore 46.00
-G_M40104_IG24: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00 V48}
- jmp SHORT G_M40104_IG26
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M40104_IG25: ; bbWeight=0.03, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, 62
- call [<unknown method>]
- ; gcrRegs -[ecx]
- jmp G_M40104_IG08
- ;; size=18 bbWeight=0.03 PerfScore 0.19
-G_M40104_IG26: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz+ jg SHORT G_M40104_IG31
+ ;; size=32 bbWeight=4 PerfScore 42.00
+G_M40104_IG21: ; bbWeight=1, gcVars=00000400 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V48} mov ecx, dword ptr [esi+0x0C]
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], ecx- jbe SHORT G_M40104_IG36
- ;; size=11 bbWeight=1 PerfScore 8.00
-G_M40104_IG27: ; bbWeight=0.47, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref+ jbe G_M40104_IG36
+ ;; size=15 bbWeight=1 PerfScore 8.00
+G_M40104_IG22: ; bbWeight=0.47, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref mov word ptr [edx+2*ecx+0x08], 60
inc dword ptr [esi+0x0C]
;; size=10 bbWeight=0.47 PerfScore 1.86-G_M40104_IG28: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz+G_M40104_IG23: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[edx]
mov ecx, dword ptr [esi+0x0C]
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], ecx- jbe SHORT G_M40104_IG37
- ;; size=11 bbWeight=1 PerfScore 8.00
-G_M40104_IG29: ; bbWeight=0.47, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref+ jbe G_M40104_IG37
+ ;; size=15 bbWeight=1 PerfScore 8.00
+G_M40104_IG24: ; bbWeight=0.47, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref mov word ptr [edx+2*ecx+0x08], 47
inc dword ptr [esi+0x0C]
;; size=10 bbWeight=0.47 PerfScore 1.86-G_M40104_IG30: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz+G_M40104_IG25: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx]+ mov edi, gword ptr [ebp-0x24]
+ ; gcrRegs +[edi] test edi, edi- je SHORT G_M40104_IG32
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M40104_IG31: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref+ je SHORT G_M40104_IG27
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M40104_IG26: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00} push dword ptr [edi+0x04]
lea edx, bword ptr [edi+0x08]
; byrRegs +[edx]
@@ -343,24 +307,24 @@ G_M40104_IG31: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[ecx edi]
; byrRegs -[edx]
;; size=14 bbWeight=0.50 PerfScore 2.87-G_M40104_IG32: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz+G_M40104_IG27: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [esi+0x0C]
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], ecx- jbe SHORT G_M40104_IG38
- ;; size=11 bbWeight=1 PerfScore 8.00
-G_M40104_IG33: ; bbWeight=0.47, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref+ jbe G_M40104_IG38
+ ;; size=15 bbWeight=1 PerfScore 8.00
+G_M40104_IG28: ; bbWeight=0.47, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref mov word ptr [edx+2*ecx+0x08], 62
inc dword ptr [esi+0x0C]
;; size=10 bbWeight=0.47 PerfScore 1.86-G_M40104_IG34: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M40104_IG29: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx esi]
cmp dword ptr [ebp-0x34], 0xD1FFAB1E- je SHORT G_M40104_IG35+ je SHORT G_M40104_IG30 call CORINFO_HELP_FAIL_FAST
;; size=14 bbWeight=1 PerfScore 4.00-G_M40104_IG35: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M40104_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -368,32 +332,74 @@ G_M40104_IG35: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop ebp
ret 8
;; size=10 bbWeight=1 PerfScore 4.50-G_M40104_IG36: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi edi]+G_M40104_IG31: ; bbWeight=2, gcVars=00000480 {V00 V48}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[esi]
+ ; GC ptr vars +{V00 V48}
+ mov edi, gword ptr [ebp-0x24]
+ ; gcrRegs +[edi]
+ jmp G_M40104_IG10
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M40104_IG32: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00 V48}
+ mov gword ptr [ebp-0x24], edi
+ ; GC ptr vars +{V00}
+ jmp G_M40104_IG21
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M40104_IG33: ; bbWeight=0.53, gcVars=00000080 {V48}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00} +{V48}
+ mov gword ptr [ebp-0x24], edi
+ ; GC ptr vars +{V00}
+ mov dword ptr [ebp-0x18], edx
+ mov edi, edx
+ ; gcrRegs -[edi]
+ mov edx, dword ptr [ebp-0x18]
+ jmp G_M40104_IG12
+ ;; size=16 bbWeight=0.53 PerfScore 2.78
+G_M40104_IG34: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[edi]
+ ; GC ptr vars -{V00 V48} mov ecx, esi
; gcrRegs +[ecx]
mov edx, 60
call [<unknown method>]
; gcrRegs -[ecx]- jmp SHORT G_M40104_IG28
- ;; size=15 bbWeight=0.03 PerfScore 0.19
-G_M40104_IG37: ; bbWeight=0.03, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz+ jmp G_M40104_IG04
+ ;; size=18 bbWeight=0.03 PerfScore 0.19
+G_M40104_IG35: ; bbWeight=0.03, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov edx, 62
+ call [<unknown method>]
+ ; gcrRegs -[ecx]
+ jmp G_M40104_IG08
+ ;; size=18 bbWeight=0.03 PerfScore 0.19
+G_M40104_IG36: ; bbWeight=0.03, gcVars=00000400 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
+ ; GC ptr vars +{V00}
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov edx, 60
+ call [<unknown method>]
+ ; gcrRegs -[ecx]
+ jmp G_M40104_IG23
+ ;; size=18 bbWeight=0.03 PerfScore 0.19
+G_M40104_IG37: ; bbWeight=0.03, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, esi
...
@@ -8,38 +8,39 @@
; 3 inlinees with PGO data; 12 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T15] ( 3, 6 ) ref -> [ebp-0x28] class-hnd single-def <System.Speech.Internal.Synthesis.VoiceSynthesis>
-; V01 loc0 [V01,T07] ( 8, 21 ) ref -> [ebp-0x2C] must-init class-hnd exact EH-live single-def <System.Collections.Generic.List`1[System.Speech.Synthesis.InstalledVoice]>
-; V02 loc1 [V02,T21] ( 2, 1 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Speech.Internal.ObjectTokens.ObjectTokenCategory>+; V00 arg0 [V00,T16] ( 3, 6 ) ref -> [ebp-0x2C] class-hnd single-def <System.Speech.Internal.Synthesis.VoiceSynthesis>
+; V01 loc0 [V01,T08] ( 8, 21 ) ref -> [ebp-0x30] must-init class-hnd exact EH-live single-def <System.Collections.Generic.List`1[System.Speech.Synthesis.InstalledVoice]>
+; V02 loc1 [V02,T22] ( 2, 1 ) ref -> [ebp-0x34] class-hnd exact EH-live spill-single-def <System.Speech.Internal.ObjectTokens.ObjectTokenCategory> ;* V03 loc2 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Speech.Internal.ObjectTokens.ObjectToken]>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Speech.Internal.ObjectTokens.ObjectToken>-; V05 tmp0 [V05,T16] ( 3, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Speech.Synthesis.InstalledVoice]>
-; V06 tmp1 [V06,T05] ( 3, 24 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "NewObj constructor temp" <System.Speech.Synthesis.VoiceInfo>+; V05 tmp0 [V05,T17] ( 3, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Speech.Synthesis.InstalledVoice]>
+; V06 tmp1 [V06,T04] ( 3, 24 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Speech.Synthesis.VoiceInfo> ; V07 tmp2 [V07,T01] ( 6, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Speech.Synthesis.InstalledVoice>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Speech.Internal.ObjectTokens.ObjectTokenCategory>-; V09 tmp4 [V09,T18] ( 3, 3 ) ref -> edi class-hnd single-def "Inline stloc first use temp" <System.Speech.Internal.ObjectTokens.RegistryDataKey>
-; V10 tmp5 [V10,T12] ( 6, 12 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Speech.Internal.ObjectTokens.ObjectTokenCategory>
-; V11 tmp6 [V11,T17] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <<unknown class>>+; V09 tmp4 [V09,T19] ( 3, 3 ) ref -> edi class-hnd single-def "Inline stloc first use temp" <System.Speech.Internal.ObjectTokens.RegistryDataKey>
+; V10 tmp5 [V10,T13] ( 6, 12 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Speech.Internal.ObjectTokens.ObjectTokenCategory>
+; V11 tmp6 [V11,T18] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <<unknown class>> ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Speech.Internal.ObjectTokens.ObjectToken]>
;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Speech.Internal.ObjectTokens.RegistryDataKey>-; V14 tmp9 [V14,T09] ( 2, 16 ) ref -> edx class-hnd "dup spill" <System.Speech.Internal.ObjectTokens.RegistryDataKey>
-; V15 tmp10 [V15,T08] ( 4, 16 ) ref -> edx
-; V16 tmp11 [V16,T06] ( 3, 24 ) ref -> eax class-hnd "dup spill" <System.Speech.Internal.ObjectTokens.RegistryDataKey>+; V14 tmp9 [V14,T10] ( 2, 16 ) ref -> edx class-hnd "dup spill" <System.Speech.Internal.ObjectTokens.RegistryDataKey>
+; V15 tmp10 [V15,T09] ( 4, 16 ) ref -> edx
+; V16 tmp11 [V16,T05] ( 3, 24 ) ref -> eax class-hnd "dup spill" <System.Speech.Internal.ObjectTokens.RegistryDataKey> ;* V17 tmp12 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Speech.Internal.ObjectTokens.RegistryDataKey>-; V18 tmp13 [V18,T14] ( 3, 10.96) ref -> [ebp-0x38] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V19 tmp14 [V19,T10] ( 4, 13.91) int -> esi "Inline stloc first use temp"
-;* V20 tmp15 [V20,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+; V18 tmp13 [V18,T14] ( 3, 10.96) ref -> ecx class-hnd "Inline stloc first use temp" <<unknown class>>
+; V19 tmp14 [V19,T11] ( 4, 13.91) int -> esi "Inline stloc first use temp"
+;* V20 tmp15 [V20,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V22 tmp17 [V22,T04] ( 5, 25 ) ref -> edi single-def "field V03._list (fldOffset=0x0)" P-INDEP+; V22 tmp17 [V22,T07] ( 4, 22.77) ref -> edi single-def "field V03._list (fldOffset=0x0)" P-INDEP ; V23 tmp18 [V23,T03] ( 6, 25.77) ref -> [ebp-0x3C] "field V03._current (fldOffset=0x4)" P-INDEP
; V24 tmp19 [V24,T00] ( 6, 32.07) int -> [ebp-0x24] "field V03._index (fldOffset=0x8)" P-INDEP-; V25 tmp20 [V25,T13] ( 3, 11.23) int -> ebx single-def "field V03._version (fldOffset=0xc)" P-INDEP
-; V26 tmp21 [V26,T19] ( 3, 3 ) ref -> edi single-def "field V12._list (fldOffset=0x0)" P-INDEP+; V25 tmp20 [V25,T15] ( 2, 9 ) int -> [ebp-0x28] spill-single-def "field V03._version (fldOffset=0xc)" P-INDEP
+; V26 tmp21 [V26,T20] ( 3, 3 ) ref -> edi single-def "field V12._list (fldOffset=0x0)" P-INDEP ;* V27 tmp22 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._current (fldOffset=0x4)" P-INDEP-;* V28 tmp23 [V28,T22] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x8)" P-INDEP
-; V29 tmp24 [V29,T20] ( 2, 2 ) int -> ebx single-def "field V12._version (fldOffset=0xc)" P-INDEP+;* V28 tmp23 [V28,T23] ( 0, 0 ) int -> zero-ref single-def "field V12._index (fldOffset=0x8)" P-INDEP
+; V29 tmp24 [V29,T21] ( 2, 2 ) int -> ebx single-def "field V12._version (fldOffset=0xc)" P-INDEP ; V30 tmp25 [V30,T02] ( 3, 34.60) ref -> edx "arr expr"
; V31 EHSlots [V31 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"+; V32 cse0 [V32,T06] ( 2, 16 ) int -> edx "CSE - moderate" ;
; Lcl frame size = 48
@@ -51,14 +52,10 @@ G_M39843_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push ebx
sub esp, 48
vxorps xmm4, xmm4, xmm4- vmovdqu xmmword ptr [ebp-0x2C], xmm4
- xor eax, eax
- mov dword ptr [ebp-0x1C], eax
- mov dword ptr [ebp-0x18], eax
- mov dword ptr [ebp-0x14], eax+ vmovdqu ymmword ptr [ebp-0x30], ymm4 mov esi, ecx
; gcrRegs +[esi]- ;; size=31 bbWeight=1 PerfScore 10.33+ ;; size=20 bbWeight=1 PerfScore 7.08 G_M39843_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Speech.Synthesis.InstalledVoice]
call CORINFO_HELP_NEWSFAST
@@ -76,7 +73,7 @@ G_M39843_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call CORINFO_HELP_ASSIGN_REF_ECX
; gcrRegs -[ecx]
; byrRegs -[edx]- mov gword ptr [ebp-0x2C], edi+ mov gword ptr [ebp-0x30], edi ; GC ptr vars +{V01}
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
@@ -97,10 +94,10 @@ G_M39843_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; byrRegs -[edx]
movzx ecx, byte ptr [edi+0x0C]
mov byte ptr [eax+0x0C], cl- mov gword ptr [ebp-0x30], eax+ mov gword ptr [ebp-0x34], eax ; GC ptr vars +{V02}
;; size=100 bbWeight=1 PerfScore 21.00-G_M39843_IG03: ; bbWeight=1, gcVars=00200080 {V01 V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref+G_M39843_IG03: ; bbWeight=1, gcVars=00400100 {V01 V02}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[edi]
push 0
; gcr arg push 0
@@ -115,11 +112,13 @@ G_M39843_IG03: ; bbWeight=1, gcVars=00200080 {V01 V02}, gcrefRegs=0000004
; gcrRegs +[edi]
mov ebx, dword ptr [edi+0x0C]
xor ecx, ecx+ mov dword ptr [ebp-0x28], ebx jmp G_M39843_IG08- ;; size=24 bbWeight=1 PerfScore 9.00+ ;; size=27 bbWeight=1 PerfScore 10.00 G_M39843_IG04: ; bbWeight=4, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
mov ecx, dword ptr [ebp-0x24]+ mov ebx, dword ptr [ebp-0x28] je G_M39843_IG08
mov edx, gword ptr [eax+0x14]
; gcrRegs +[edx]
@@ -145,17 +144,17 @@ G_M39843_IG04: ; bbWeight=4, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
mov eax, ecx
mov ecx, dword ptr [ebp-0x24]
; gcrRegs -[ecx]- ;; size=55 bbWeight=4 PerfScore 60.00+ ;; size=58 bbWeight=4 PerfScore 64.00 G_M39843_IG05: ; bbWeight=4, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, byref, isz
test edx, edx
mov gword ptr [ebp-0x3C], eax
; GC ptr vars +{V23}- je G_M39843_IG08+ je SHORT G_M39843_IG08 mov dword ptr [ebp-0x24], ecx
mov ecx, 0xD1FFAB1E ; System.Speech.Synthesis.VoiceInfo
call CORINFO_HELP_NEWSFAST
; gcrRegs -[edx]- mov gword ptr [ebp-0x34], eax+ mov gword ptr [ebp-0x38], eax ; GC ptr vars +{V06}
mov ecx, eax
; gcrRegs +[ecx]
@@ -169,70 +168,64 @@ G_M39843_IG05: ; bbWeight=4, gcrefRegs=000000C5 {eax edx esi edi}, byrefR
; gcrRegs +[eax]
lea edx, bword ptr [eax+0x08]
; byrRegs +[edx]- mov gword ptr [ebp-0x28], esi+ mov gword ptr [ebp-0x2C], esi ; GC ptr vars +{V00}
call CORINFO_HELP_ASSIGN_REF_ESI
; gcrRegs -[esi]
; byrRegs -[edx]
lea edx, bword ptr [eax+0x04]
; byrRegs +[edx]- mov ecx, gword ptr [ebp-0x34]+ mov ecx, gword ptr [ebp-0x38] ; gcrRegs +[ecx]
; GC ptr vars -{V06}
call CORINFO_HELP_ASSIGN_REF_ECX
; gcrRegs -[ecx]
; byrRegs -[edx]
mov byte ptr [eax+0x0C], 1- mov edx, gword ptr [ebp-0x2C]+ mov edx, gword ptr [ebp-0x30] ; gcrRegs +[edx]
inc dword ptr [edx+0x0C]
mov ecx, gword ptr [edx+0x04]
; gcrRegs +[ecx]- mov gword ptr [ebp-0x38], ecx
- ; GC ptr vars +{V18} mov esi, dword ptr [edx+0x08]
cmp dword ptr [ecx+0x04], esi
jbe SHORT G_M39843_IG07- ;; size=94 bbWeight=4 PerfScore 120.00
-G_M39843_IG06: ; bbWeight=2.96, gcVars=0020C080 {V00 V01 V02 V18}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx edx]
- lea edx, [esi+0x01]
- mov ecx, gword ptr [ebp-0x2C]
- ; gcrRegs +[ecx]
- mov dword ptr [ecx+0x08], edx+ ;; size=87 bbWeight=4 PerfScore 116.00
+G_M39843_IG06: ; bbWeight=2.96, gcrefRegs=00000087 {eax ecx edx edi}, byrefRegs=00000000 {}, byref, isz
+ lea ebx, [esi+0x01]
+ mov dword ptr [edx+0x08], ebx push eax
; gcr arg push 0- mov ecx, gword ptr [ebp-0x38] mov edx, esi- ; GC ptr vars -{V18}+ ; gcrRegs -[edx] call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[eax ecx]
; gcr arg pop 1
mov ecx, dword ptr [ebp-0x24]- mov esi, gword ptr [ebp-0x28]+ mov ebx, dword ptr [ebp-0x28]
+ mov esi, gword ptr [ebp-0x2C] ; gcrRegs +[esi]
jmp SHORT G_M39843_IG08- ;; size=28 bbWeight=2.96 PerfScore 28.83
-G_M39843_IG07: ; bbWeight=1.04, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi] +[eax]
- mov edx, gword ptr [ebp-0x2C]
- ; gcrRegs +[edx]+ ;; size=25 bbWeight=2.96 PerfScore 25.87
+G_M39843_IG07: ; bbWeight=1.04, gcrefRegs=00000085 {eax edx edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi] +[eax edx] mov ecx, edx
; gcrRegs +[ecx]
mov edx, eax
call [<unknown method>]
; gcrRegs -[eax ecx edx]
mov ecx, dword ptr [ebp-0x24]- mov esi, gword ptr [ebp-0x28]+ mov esi, gword ptr [ebp-0x2C] ; gcrRegs +[esi]- ;; size=19 bbWeight=1.04 PerfScore 6.78
-G_M39843_IG08: ; bbWeight=8, gcVars=00200080 {V01 V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+ ;; size=16 bbWeight=1.04 PerfScore 5.74
+G_M39843_IG08: ; bbWeight=8, gcVars=00400100 {V01 V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; GC ptr vars -{V00}
cmp ebx, dword ptr [edi+0x0C]- jne SHORT G_M39843_IG12
- cmp ecx, dword ptr [edi+0x08]
- jae SHORT G_M39843_IG13
- ;; size=10 bbWeight=8 PerfScore 64.00+ jne SHORT G_M39843_IG11
+ mov edx, dword ptr [edi+0x08]
+ cmp ecx, edx
+ jae SHORT G_M39843_IG12
+ ;; size=12 bbWeight=8 PerfScore 58.00 G_M39843_IG09: ; bbWeight=5.77, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [edi+0x04]
; gcrRegs +[edx]
@@ -252,38 +245,32 @@ G_M39843_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M39843_IG12: ; bbWeight=2.23, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edi]
- cmp ebx, dword ptr [edi+0x0C]
- jne SHORT G_M39843_IG11
- ;; size=5 bbWeight=2.23 PerfScore 8.93
-G_M39843_IG13: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]+G_M39843_IG12: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov dword ptr [ebp-0x1C], 0
mov dword ptr [ebp-0x18], 252- push G_M39843_IG14
- jmp SHORT G_M39843_IG15+ push G_M39843_IG13
+ jmp SHORT G_M39843_IG14 ;; size=21 bbWeight=8 PerfScore 40.00-G_M39843_IG14: ; bbWeight=1, gcVars=00000080 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M39843_IG13: ; bbWeight=1, gcVars=00000100 {V01}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz ; GC ptr vars -{V02}
mov dword ptr [ebp-0x18], 0- jmp SHORT G_M39843_IG16...
@@ -8,28 +8,29 @@
; 3 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T08] ( 4, 4 ) ref -> edi this class-hnd single-def <Xunit.AggregateMessageSink>
-; V01 arg1 [V01,T06] ( 3, 5.33) ref -> esi class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
-; V02 arg2 [V02,T11] ( 1, 3.33) ref -> ebx class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]>
-; V03 loc0 [V03,T05] ( 4, 8.66) ubyte -> [ebp-0x24]
-; V04 loc1 [V04,T14] ( 4, 1.50) ref -> [ebp-0x34] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>+; V00 this [V00,T09] ( 4, 4 ) ref -> edi this class-hnd single-def <Xunit.AggregateMessageSink>
+; V01 arg1 [V01,T07] ( 3, 5.33) ref -> esi class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
+; V02 arg2 [V02,T12] ( 1, 3.33) ref -> ebx class-hnd single-def <System.Collections.Generic.HashSet`1[System.String]>
+; V03 loc0 [V03,T06] ( 4, 8.66) ubyte -> [ebp-0x24]
+; V04 loc1 [V04,T15] ( 4, 1.50) ref -> [ebp-0x34] class-hnd EH-live spill-single-def <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]> ; V05 loc2 [V05 ] ( 5, 4 ) ubyte -> [ebp-0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V06 loc3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>-; V07 tmp0 [V07,T10] ( 2, 4 ) ubyte -> ecx "Inlining Arg"
-; V08 tmp1 [V08,T09] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>+; V07 tmp0 [V07,T11] ( 2, 4 ) ubyte -> ecx "Inlining Arg"
+; V08 tmp1 [V08,T10] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Xunit.IMessageSinkWithTypes]>-;* V10 tmp3 [V10,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V10 tmp3 [V10,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Xunit.IMessageSinkWithTypes]>-; V12 tmp5 [V12,T01] ( 5, 17.01) ref -> edi single-def "field V06._list (fldOffset=0x0)" P-INDEP
-; V13 tmp6 [V13,T03] ( 2, 6.66) ref -> edx "field V06._current (fldOffset=0x4)" P-INDEP+; V12 tmp5 [V12,T02] ( 4, 16.34) ref -> edi single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V13 tmp6 [V13,T04] ( 2, 6.66) ref -> edx "field V06._current (fldOffset=0x4)" P-INDEP ; V14 tmp7 [V14,T00] ( 6, 18.32) int -> [ebp-0x2C] "field V06._index (fldOffset=0x8)" P-INDEP-; V15 tmp8 [V15,T04] ( 3, 9.67) int -> [ebp-0x30] spill-single-def "field V06._version (fldOffset=0xc)" P-INDEP
-; V16 tmp9 [V16,T12] ( 3, 3 ) ref -> edi single-def "field V09._list (fldOffset=0x0)" P-INDEP+; V15 tmp8 [V15,T05] ( 2, 9 ) int -> [ebp-0x30] spill-single-def "field V06._version (fldOffset=0xc)" P-INDEP
+; V16 tmp9 [V16,T13] ( 3, 3 ) ref -> edi single-def "field V09._list (fldOffset=0x0)" P-INDEP ;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x4)" P-INDEP-;* V18 tmp11 [V18,T15] ( 0, 0 ) int -> zero-ref single-def "field V09._index (fldOffset=0x8)" P-INDEP
-; V19 tmp12 [V19,T13] ( 2, 2 ) int -> eax single-def "field V09._version (fldOffset=0xc)" P-INDEP
-; V20 tmp13 [V20,T02] ( 3, 19.97) ref -> edx "arr expr"+;* V18 tmp11 [V18,T16] ( 0, 0 ) int -> zero-ref single-def "field V09._index (fldOffset=0x8)" P-INDEP
+; V19 tmp12 [V19,T14] ( 2, 2 ) int -> eax single-def "field V09._version (fldOffset=0xc)" P-INDEP
+; V20 tmp13 [V20,T01] ( 3, 19.97) ref -> edx "arr expr" ; V21 EHSlots [V21 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"+; V22 cse0 [V22,T03] ( 2, 8.01) int -> edx "CSE - aggressive" ;
; Lcl frame size = 40
@@ -59,7 +60,7 @@ G_M52679_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
mov gword ptr [ebp-0x34], ecx
; GC ptr vars +{V04}
;; size=13 bbWeight=1 PerfScore 4.00-G_M52679_IG03: ; bbWeight=1, gcVars=00004000 {V04}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M52679_IG03: ; bbWeight=1, gcVars=00008000 {V04}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x28], 0
jne SHORT G_M52679_IG09
lea edx, [ebp-0x28]
@@ -85,17 +86,18 @@ G_M52679_IG05: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
;; size=11 bbWeight=1 PerfScore 5.25
G_M52679_IG06: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, dword ptr [edi+0x0C]- jne SHORT G_M52679_IG10+ jne SHORT G_M52679_IG11 ;; size=5 bbWeight=8 PerfScore 32.00
G_M52679_IG07: ; bbWeight=4.01, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ecx, dword ptr [edi+0x08]
- jae SHORT G_M52679_IG14
- ;; size=5 bbWeight=4.01 PerfScore 16.02+ mov edx, dword ptr [edi+0x08]
+ cmp ecx, edx
+ jae SHORT G_M52679_IG12
+ ;; size=7 bbWeight=4.01 PerfScore 13.02 G_M52679_IG08: ; bbWeight=3.33, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [edi+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae SHORT G_M52679_IG12+ jae SHORT G_M52679_IG10 mov edx, gword ptr [edx+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x2C], ecx
@@ -117,53 +119,43 @@ G_M52679_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [System.Threading.Monitor:ThrowLockTakenException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M52679_IG10: ; bbWeight=0.67, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[edi]
- mov eax, dword ptr [ebp-0x30]
- cmp eax, dword ptr [edi+0x0C]
- jne SHORT G_M52679_IG13
- ;; size=8 bbWeight=0.67 PerfScore 3.35
-G_M52679_IG11: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- jmp SHORT G_M52679_IG14
- ;; size=2 bbWeight=4 PerfScore 8.00
-G_M52679_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M52679_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00-G_M52679_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M52679_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M52679_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M52679_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [ebp-0x28], 0- je SHORT G_M52679_IG18+ je SHORT G_M52679_IG16 ;; size=6 bbWeight=1 PerfScore 3.00-G_M52679_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M52679_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x34]
; gcrRegs +[ecx]
; GC ptr vars -{V04}
call <unknown method>
; gcrRegs -[ecx]- jmp SHORT G_M52679_IG18+ jmp SHORT G_M52679_IG16 ;; size=10 bbWeight=0.50 PerfScore 2.00-G_M52679_IG16: ; bbWeight=0, gcVars=00004000 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V04 V14}+G_M52679_IG14: ; bbWeight=0, gcVars=00008000 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V04 V15} cmp byte ptr [ebp-0x28], 0- je SHORT G_M52679_IG17+ je SHORT G_M52679_IG15 mov ecx, gword ptr [ebp-0x34]
; gcrRegs +[ecx]- ; GC ptr vars -{V04 V14}+ ; GC ptr vars -{V04 V15} call <unknown method>
; gcrRegs -[ecx]
;; size=14 bbWeight=0 PerfScore 0.00-G_M52679_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M52679_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M52679_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M52679_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov eax, dword ptr [ebp-0x24]
;; size=3 bbWeight=1 PerfScore 1.00-G_M52679_IG19: ; bbWeight=1, epilog, nogc, extend+G_M52679_IG17: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -172,9 +164,9 @@ G_M52679_IG19: ; bbWeight=1, epilog, nogc, extend
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 224, prolog size 26, PerfScore 168.12, instruction count 78, allocated bytes for code 224 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier0-FullOpts)+; Total bytes of code 216, prolog size 26, PerfScore 153.76, instruction count 75, allocated bytes for code 216 (MethodHash=39853238) for method Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier0-FullOpts) ; ============================================================
*************** EH table for Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M52679_IG03..G_M52679_IG14) handled by [G_M52679_IG16..G_M52679_IG18) (fault)+EH#0: try [G_M52679_IG03..G_M52679_IG12) handled by [G_M52679_IG14..G_M52679_IG16) (fault)
@@ -8,7 +8,7 @@
; 4 inlinees with PGO data; 12 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T06] ( 8, 35 ) ref -> esi this class-hnd single-def <System.IO.TempAclDirectory>+; V00 this [V00,T05] ( 8, 35 ) ref -> esi this class-hnd single-def <System.IO.TempAclDirectory> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.IO.DirectoryInfo>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.IO.DirectoryInfo]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.IO.DirectoryInfo>
@@ -16,33 +16,35 @@
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.IO.FileInfo>
; V06 tmp0 [V06,T00] ( 6, 96 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <System.IO.DirectoryInfo>
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>-; V08 tmp2 [V08,T18] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>+; V08 tmp2 [V08,T20] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>> ;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.DirectoryInfo]>-;* V10 tmp4 [V10,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V10 tmp4 [V10,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V12 tmp6 [V12,T08] ( 2, 32 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>+; V12 tmp6 [V12,T06] ( 2, 32 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>> ;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.FileInfo]>-;* V14 tmp8 [V14,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V14 tmp8 [V14,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V16 tmp10 [V16,T07] ( 5, 25 ) ref -> edi single-def "field V02._list (fldOffset=0x0)" P-INDEP
-; V17 tmp11 [V17,T10] ( 2, 10.42) ref -> edx "field V02._current (fldOffset=0x4)" P-INDEP+; V16 tmp10 [V16,T11] ( 4, 23.42) ref -> edi single-def "field V02._list (fldOffset=0x0)" P-INDEP
+; V17 tmp11 [V17,T12] ( 2, 10.42) ref -> edx "field V02._current (fldOffset=0x4)" P-INDEP ; V18 tmp12 [V18,T02] ( 6, 34.68) int -> [ebp-0x24] "field V02._index (fldOffset=0x8)" P-INDEP-; V19 tmp13 [V19,T16] ( 3, 10.58) int -> ebx single-def "field V02._version (fldOffset=0xc)" P-INDEP
-; V20 tmp14 [V20,T03] ( 5, 32 ) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP
-; V21 tmp15 [V21,T11] ( 2, 10.42) ref -> edx "field V04._current (fldOffset=0x4)" P-INDEP+; V19 tmp13 [V19,T18] ( 2, 9 ) int -> ebx single-def "field V02._version (fldOffset=0xc)" P-INDEP
+; V20 tmp14 [V20,T07] ( 4, 30.42) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP
+; V21 tmp15 [V21,T13] ( 2, 10.42) ref -> edx "field V04._current (fldOffset=0x4)" P-INDEP ; V22 tmp16 [V22,T01] ( 6, 41.68) int -> [ebp-0x28] "field V04._index (fldOffset=0x8)" P-INDEP-; V23 tmp17 [V23,T12] ( 3, 17.58) int -> ebx single-def "field V04._version (fldOffset=0xc)" P-INDEP
-; V24 tmp18 [V24,T19] ( 3, 3 ) ref -> edi single-def "field V09._list (fldOffset=0x0)" P-INDEP+; V23 tmp17 [V23,T14] ( 2, 16 ) int -> ebx single-def "field V04._version (fldOffset=0xc)" P-INDEP
+; V24 tmp18 [V24,T21] ( 3, 3 ) ref -> edi single-def "field V09._list (fldOffset=0x0)" P-INDEP ;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x4)" P-INDEP-;* V26 tmp20 [V26,T21] ( 0, 0 ) int -> zero-ref single-def "field V09._index (fldOffset=0x8)" P-INDEP
-; V27 tmp21 [V27,T20] ( 2, 2 ) int -> ebx single-def "field V09._version (fldOffset=0xc)" P-INDEP
-; V28 tmp22 [V28,T09] ( 3, 24 ) ref -> edi single-def "field V13._list (fldOffset=0x0)" P-INDEP+;* V26 tmp20 [V26,T23] ( 0, 0 ) int -> zero-ref single-def "field V09._index (fldOffset=0x8)" P-INDEP
+; V27 tmp21 [V27,T22] ( 2, 2 ) int -> ebx single-def "field V09._version (fldOffset=0xc)" P-INDEP
+; V28 tmp22 [V28,T08] ( 3, 24 ) ref -> edi single-def "field V13._list (fldOffset=0x0)" P-INDEP ;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x4)" P-INDEP-;* V30 tmp24 [V30,T17] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP
-; V31 tmp25 [V31,T13] ( 2, 16 ) int -> ebx single-def "field V13._version (fldOffset=0xc)" P-INDEP
-; V32 tmp26 [V32,T04] ( 3, 38.52) ref -> edx "arr expr"
-; V33 tmp27 [V33,T05] ( 3, 38.52) ref -> edx "arr expr"+;* V30 tmp24 [V30,T19] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP
+; V31 tmp25 [V31,T15] ( 2, 16 ) int -> ebx single-def "field V13._version (fldOffset=0xc)" P-INDEP
+; V32 tmp26 [V32,T03] ( 3, 38.52) ref -> edx "arr expr"
+; V33 tmp27 [V33,T04] ( 3, 38.52) ref -> edx "arr expr" ; V34 EHSlots [V34 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"+; V35 cse0 [V35,T09] ( 2, 16 ) int -> edx "CSE - moderate"
+; V36 cse1 [V36,T10] ( 2, 16 ) int -> edx "CSE - moderate" ;
; Lcl frame size = 28
@@ -78,10 +80,11 @@ G_M40197_IG03: ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=
;; size=11 bbWeight=4 PerfScore 17.00
G_M40197_IG04: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp ebx, dword ptr [edi+0x0C]- jne SHORT G_M40197_IG08
- cmp ecx, dword ptr [edi+0x08]
- jae SHORT G_M40197_IG09
- ;; size=10 bbWeight=8 PerfScore 64.00+ jne SHORT G_M40197_IG07
+ mov edx, dword ptr [edi+0x08]
+ cmp ecx, edx
+ jae SHORT G_M40197_IG08
+ ;; size=12 bbWeight=8 PerfScore 58.00 G_M40197_IG05: ; bbWeight=6.42, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [edi+0x04]
; gcrRegs +[edx]
@@ -100,20 +103,15 @@ G_M40197_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M40197_IG08: ; bbWeight=1.58, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi edi]
- cmp ebx, dword ptr [edi+0x0C]
- jne SHORT G_M40197_IG07
- ;; size=5 bbWeight=1.58 PerfScore 6.32
-G_M40197_IG09: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]+G_M40197_IG08: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi] mov edi, gword ptr [esi+0x0C]
; gcrRegs +[edi]
mov ebx, dword ptr [edi+0x0C]
xor ecx, ecx- jmp SHORT G_M40197_IG11+ jmp SHORT G_M40197_IG10 ;; size=10 bbWeight=8 PerfScore 50.00-G_M40197_IG10: ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref+G_M40197_IG09: ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref ; gcrRegs +[edx]
mov ecx, esi
; gcrRegs +[ecx]
@@ -121,13 +119,14 @@ G_M40197_IG10: ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=
; gcrRegs -[ecx edx]
mov ecx, dword ptr [ebp-0x28]
;; size=11 bbWeight=4 PerfScore 17.00-G_M40197_IG11: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz+G_M40197_IG10: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp ebx, dword ptr [edi+0x0C]- jne SHORT G_M40197_IG13
- cmp ecx, dword ptr [edi+0x08]
- jae SHORT G_M40197_IG14
- ;; size=10 bbWeight=8 PerfScore 64.00
-G_M40197_IG12: ; bbWeight=6.42, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz+ jne SHORT G_M40197_IG07
+ mov edx, dword ptr [edi+0x08]
+ cmp ecx, edx
+ jae SHORT G_M40197_IG12
+ ;; size=12 bbWeight=8 PerfScore 58.00
+G_M40197_IG11: ; bbWeight=6.42, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov edx, gword ptr [edi+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]
@@ -135,15 +134,10 @@ G_M40197_IG12: ; bbWeight=6.42, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
mov edx, gword ptr [edx+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x28], ecx- jmp SHORT G_M40197_IG10+ jmp SHORT G_M40197_IG09 ;; size=18 bbWeight=6.42 PerfScore 72.22-G_M40197_IG13: ; bbWeight=1.58, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edx]
- cmp ebx, dword ptr [edi+0x0C]
- jne SHORT G_M40197_IG07
- ;; size=5 bbWeight=1.58 PerfScore 6.32
-G_M40197_IG14: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]+G_M40197_IG12: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edx edi] mov ecx, 0xD1FFAB1E ; System.IO.DirectoryInfo
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -168,13 +162,13 @@ G_M40197_IG14: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx]
mov byte ptr [edi+0x18], 0
mov dword ptr [edi+0x14], -1- jmp SHORT G_M40197_IG16+ jmp SHORT G_M40197_IG14 ;; size=60 bbWeight=8 PerfScore 156.00-G_M40197_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M40197_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[edi]
call CORINFO_HELP_ENDCATCH
;; size=5 bbWeight=0 PerfScore 0.00-G_M40197_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M40197_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -183,9 +177,9 @@ G_M40197_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret
;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 218, prolog size 23, PerfScore 543.83, instruction count 77, allocated bytes for code 218 (MethodHash=f82462fa) for method System.IO.TempAclDirectory:DeleteDirectory():this (Tier0-FullOpts)+; Total bytes of code 212, prolog size 23, PerfScore 519.19, instruction count 75, allocated bytes for code 212 (MethodHash=f82462fa) for method System.IO.TempAclDirectory:DeleteDirectory():this (Tier0-FullOpts) ; ============================================================
*************** EH table for System.IO.TempAclDirectory:DeleteDirectory():this
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M40197_IG02..G_M40197_IG15) handled by [G_M40197_IG15..G_M40197_IG16) (class: 1000012)+EH#0: try [G_M40197_IG02..G_M40197_IG13) handled by [G_M40197_IG13..G_M40197_IG14) (class: 1000012)
@@ -209,11 +209,11 @@ G_M6409_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000
;; size=17 bbWeight=1 PerfScore 5.50
G_M6409_IG06: ; bbWeight=4, gcVars=0000000000010000 {V05}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp edx, dword ptr [eax+0x08]- jae G_M6409_IG63+ jae G_M6409_IG60 mov edi, gword ptr [eax+0x04]
; gcrRegs +[edi]
cmp edx, dword ptr [edi+0x04]- jae G_M6409_IG59+ jae G_M6409_IG56 mov edi, gword ptr [edi+4*edx+0x08]
mov dword ptr [ebp-0x18], edx
cmp ecx, edx
@@ -222,7 +222,7 @@ G_M6409_IG06: ; bbWeight=4, gcVars=0000000000010000 {V05}, gcrefRegs=0000
G_M6409_IG07: ; bbWeight=2.00, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x1C], ecx
cmp ecx, dword ptr [eax+0x08]- jae G_M6409_IG63+ jae G_M6409_IG60 mov ebx, gword ptr [eax+0x04]
; gcrRegs +[ebx]
push edi
@@ -271,11 +271,11 @@ G_M6409_IG09: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
;; size=53 bbWeight=2 PerfScore 35.00
G_M6409_IG10: ; bbWeight=16, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
cmp ecx, edi- jae G_M6409_IG63+ jae G_M6409_IG60 mov edx, gword ptr [eax+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae G_M6409_IG59+ jae G_M6409_IG56 mov edx, gword ptr [edx+4*ecx+0x08]
lea edx, bword ptr [edx+0x0C]
; gcrRegs -[edx]
@@ -302,7 +302,7 @@ G_M6409_IG12: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=000000
; gcrRegs -[esi] +[eax]
mov ebx, ecx
mov edi, edx- jmp G_M6409_IG55+ jmp G_M6409_IG52 ;; size=9 bbWeight=0.50 PerfScore 1.25
G_M6409_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] +[esi edi]
@@ -317,7 +317,7 @@ G_M6409_IG14: ; bbWeight=1, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=0
; gcrRegs -[edi]
mov eax, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode
cmp dword ptr [ecx], eax- jne G_M6409_IG62+ jne G_M6409_IG59 ;; size=13 bbWeight=1 PerfScore 4.25
G_M6409_IG15: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
@@ -344,7 +344,7 @@ G_M6409_IG16: ; bbWeight=8, gcVars=0000000000010000 {V05}, gcrefRegs=0000
; GC ptr vars -{V00}
mov ebx, dword ptr [ebp-0x1C]
dec ebx- jmp G_M6409_IG54+ jmp G_M6409_IG51 ;; size=9 bbWeight=8 PerfScore 26.00
G_M6409_IG17: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edi]
@@ -354,7 +354,7 @@ G_M6409_IG17: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
;; size=7 bbWeight=16 PerfScore 24.00
G_M6409_IG18: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp eax, 12- jne G_M6409_IG31+ jne G_M6409_IG49 ;; size=9 bbWeight=8 PerfScore 10.00
G_M6409_IG19: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ebx, dword ptr [edi+0x18]
@@ -373,7 +373,7 @@ G_M6409_IG20: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov dword ptr [ebp-0x14], edi
mov ebx, ecx
mov edi, dword ptr [ebp-0x18]- jmp G_M6409_IG54+ jmp G_M6409_IG51 ;; size=22 bbWeight=8 PerfScore 44.00
G_M6409_IG21: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edi]
@@ -381,10 +381,10 @@ G_M6409_IG21: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
mov eax, gword ptr [ebp-0x40]
; gcrRegs +[eax]
cmp ecx, dword ptr [eax+0x08]- jae G_M6409_IG63+ jae G_M6409_IG60 mov eax, gword ptr [eax+0x04]
cmp ecx, dword ptr [eax+0x04]- jae G_M6409_IG59+ jae G_M6409_IG56 mov dword ptr [ebp-0x1C], ecx
mov eax, gword ptr [eax+4*ecx+0x08]
mov gword ptr [ebp-0x44], eax
@@ -413,7 +413,7 @@ G_M6409_IG21: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
G_M6409_IG22: ; bbWeight=8, gcVars=0000000000010010 {V05 V13}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
test bl, 64- je G_M6409_IG37+ je G_M6409_IG34 cmp byte ptr [edi+0x1E], 9
je SHORT G_M6409_IG23
mov edi, gword ptr [edi+0x08]
@@ -423,7 +423,7 @@ G_M6409_IG22: ; bbWeight=8, gcVars=0000000000010010 {V05 V13}, gcrefRegs=
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx edx edi]- jmp G_M6409_IG52+ jmp G_M6409_IG44 ;; size=34 bbWeight=8 PerfScore 116.00
G_M6409_IG23: ; bbWeight=8.00, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[edi]
@@ -438,13 +438,13 @@ G_M6409_IG23: ; bbWeight=8.00, gcrefRegs=000000C1 {eax esi edi}, byrefReg
; gcrRegs -[ecx ebx]
mov gword ptr [ebp-0x30], eax
test eax, eax- je G_M6409_IG60+ je G_M6409_IG57 lea ebx, bword ptr [eax+0x08]
; byrRegs +[ebx]
mov eax, dword ptr [eax+0x04]
; gcrRegs -[eax]
;; size=41 bbWeight=8.00 PerfScore 114.00-G_M6409_IG24: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz+G_M6409_IG24: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref mov bword ptr [ebp-0x24], ebx
mov dword ptr [ebp-0x20], eax
xor edx, edx
@@ -460,12 +460,12 @@ G_M6409_IG24: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
mov edi, gword ptr [ebx+0x08]
; gcrRegs +[edi]
cmp byte ptr [ebp-0x28], 0- jne G_M6409_IG30+ jne G_M6409_IG33 test edi, edi- je G_M6409_IG30+ je G_M6409_IG33 mov ecx, dword ptr [ebp-0x2C]
cmp ecx, dword ptr [ebp-0x20]- ja G_M6409_IG64+ ja G_M6409_IG61 mov edx, bword ptr [ebp-0x24]
; byrRegs +[edx]
lea eax, bword ptr [edx+2*ecx]
@@ -477,7 +477,7 @@ G_M6409_IG24: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
sub edx, ecx
mov dword ptr [ebp-0x38], edx
test edx, edx- jge SHORT G_M6409_IG29+ jge G_M6409_IG32 mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -487,12 +487,12 @@ G_M6409_IG24: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
; byrRegs -[eax]
mov eax, bword ptr [ebp-0x48]
; byrRegs +[eax]- ;; size=104 bbWeight=8 PerfScore 252.00
-G_M6409_IG25: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000001 {eax}, byref, isz+ ;; size=108 bbWeight=8 PerfScore 252.00
+G_M6409_IG25: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000001 {eax}, byref mov edx, dword ptr [ebp-0x38]
cmp dword ptr [edi+0x04], edx- ja SHORT G_M6409_IG30
- ;; size=8 bbWeight=8 PerfScore 40.00+ ja G_M6409_IG33
+ ;; size=12 bbWeight=8 PerfScore 40.00 G_M6409_IG26: ; bbWeight=7.98, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000001 {eax}, byref
lea edx, bword ptr [edi+0x08]
; byrRegs +[edx]
@@ -512,7 +512,7 @@ G_M6409_IG27: ; bbWeight=8.00, gcrefRegs=00000048 {ebx esi}, byrefRegs=00
; gcrRegs -[edi]
mov edi, dword ptr [ebp-0x2C]
cmp edi, dword ptr [ebp-0x20]- ja G_M6409_IG64+ ja G_M6409_IG61 ;; size=12 bbWeight=8.00 PerfScore 32.01
G_M6409_IG28: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, bword ptr [ebp-0x24]
@@ -520,7 +520,7 @@ G_M6409_IG28: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000
mov bword ptr [ebp-0x4C], eax
; GC ptr vars +{V59}
test edi, edi- jge SHORT G_M6409_IG34+ jge SHORT G_M6409_IG29 mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -528,53 +528,20 @@ G_M6409_IG28: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[ecx edx]
; byrRegs -[eax]- jmp SHORT G_M6409_IG33
- ;; size=28 bbWeight=8 PerfScore 70.00
-G_M6409_IG29: ; bbWeight=4, gcVars=0000000020010010 {V05 V13 V44}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[edi]
- ; GC ptr vars -{V59} +{V29 V44}
- mov eax, bword ptr [ebp-0x48]
- ; byrRegs +[eax]
- jmp SHORT G_M6409_IG25
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M6409_IG30: ; bbWeight=0.02, gcVars=0000000000010010 {V05 V13}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; byrRegs -[eax]
- ; GC ptr vars -{V29 V44}
- lea ecx, [ebp-0x34]
- mov edx, edi
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[edx edi]
- jmp SHORT G_M6409_IG27
- ;; size=13 bbWeight=0.02 PerfScore 0.09
-G_M6409_IG31: ; bbWeight=16, gcVars=0000000000010000 {V05}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ebx]
- ; GC ptr vars -{V13}
- cmp ebx, 23
- mov dword ptr [ebp-0x1C], ecx
- mov edi, dword ptr [ebp-0x18]
- je G_M6409_IG16
- ;; size=15 bbWeight=16 PerfScore 52.00
-G_M6409_IG32: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- jmp G_M6409_IG53
- ;; size=5 bbWeight=2 PerfScore 4.00
-G_M6409_IG33: ; bbWeight=8, gcVars=0000000002010010 {V05 V13 V59}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[ebx]
- ; GC ptr vars +{V04 V13 V59} mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]- ;; size=16 bbWeight=8 PerfScore 28.00
-G_M6409_IG34: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz+ ;; size=42 bbWeight=8 PerfScore 82.00
+G_M6409_IG29: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz mov eax, bword ptr [ebp-0x4C]
; byrRegs +[eax]
push edi
push eax
; byr arg push 1- ; GC ptr vars -{V04 V59}+ ; GC ptr vars -{V59} call <unknown method>
; gcrRegs +[eax]
; byrRegs -[eax]
@@ -587,9 +554,9 @@ G_M6409_IG34: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000
vmovdqu xmmword ptr [ebp-0x34], xmm0
vmovdqu xmmword ptr [ebp-0x2C], xmm0
test edx, edx
...
@@ -209,11 +209,11 @@ G_M6409_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000
;; size=17 bbWeight=1 PerfScore 5.50
G_M6409_IG06: ; bbWeight=4, gcVars=0000000000010000 {V05}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp edx, dword ptr [eax+0x08]- jae G_M6409_IG63+ jae G_M6409_IG60 mov edi, gword ptr [eax+0x04]
; gcrRegs +[edi]
cmp edx, dword ptr [edi+0x04]- jae G_M6409_IG59+ jae G_M6409_IG56 mov edi, gword ptr [edi+4*edx+0x08]
mov dword ptr [ebp-0x18], edx
cmp ecx, edx
@@ -222,7 +222,7 @@ G_M6409_IG06: ; bbWeight=4, gcVars=0000000000010000 {V05}, gcrefRegs=0000
G_M6409_IG07: ; bbWeight=2.00, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x1C], ecx
cmp ecx, dword ptr [eax+0x08]- jae G_M6409_IG63+ jae G_M6409_IG60 mov ebx, gword ptr [eax+0x04]
; gcrRegs +[ebx]
push edi
@@ -271,11 +271,11 @@ G_M6409_IG09: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
;; size=53 bbWeight=2 PerfScore 35.00
G_M6409_IG10: ; bbWeight=16, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
cmp ecx, edi- jae G_M6409_IG63+ jae G_M6409_IG60 mov edx, gword ptr [eax+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae G_M6409_IG59+ jae G_M6409_IG56 mov edx, gword ptr [edx+4*ecx+0x08]
lea edx, bword ptr [edx+0x0C]
; gcrRegs -[edx]
@@ -302,7 +302,7 @@ G_M6409_IG12: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=000000
; gcrRegs -[esi] +[eax]
mov ebx, ecx
mov edi, edx- jmp G_M6409_IG55+ jmp G_M6409_IG52 ;; size=9 bbWeight=0.50 PerfScore 1.25
G_M6409_IG13: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] +[esi edi]
@@ -317,7 +317,7 @@ G_M6409_IG14: ; bbWeight=1, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=0
; gcrRegs -[edi]
mov eax, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode
cmp dword ptr [ecx], eax- jne G_M6409_IG62+ jne G_M6409_IG59 ;; size=13 bbWeight=1 PerfScore 4.25
G_M6409_IG15: ; bbWeight=2, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
@@ -344,7 +344,7 @@ G_M6409_IG16: ; bbWeight=8, gcVars=0000000000010000 {V05}, gcrefRegs=0000
; GC ptr vars -{V00}
mov ebx, dword ptr [ebp-0x1C]
dec ebx- jmp G_M6409_IG54+ jmp G_M6409_IG51 ;; size=9 bbWeight=8 PerfScore 26.00
G_M6409_IG17: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edi]
@@ -354,7 +354,7 @@ G_M6409_IG17: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
;; size=7 bbWeight=16 PerfScore 24.00
G_M6409_IG18: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp eax, 12- jne G_M6409_IG31+ jne G_M6409_IG49 ;; size=9 bbWeight=8 PerfScore 10.00
G_M6409_IG19: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ebx, dword ptr [edi+0x18]
@@ -373,7 +373,7 @@ G_M6409_IG20: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov dword ptr [ebp-0x14], edi
mov ebx, ecx
mov edi, dword ptr [ebp-0x18]- jmp G_M6409_IG54+ jmp G_M6409_IG51 ;; size=22 bbWeight=8 PerfScore 44.00
G_M6409_IG21: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edi]
@@ -381,10 +381,10 @@ G_M6409_IG21: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
mov eax, gword ptr [ebp-0x40]
; gcrRegs +[eax]
cmp ecx, dword ptr [eax+0x08]- jae G_M6409_IG63+ jae G_M6409_IG60 mov eax, gword ptr [eax+0x04]
cmp ecx, dword ptr [eax+0x04]- jae G_M6409_IG59+ jae G_M6409_IG56 mov dword ptr [ebp-0x1C], ecx
mov eax, gword ptr [eax+4*ecx+0x08]
mov gword ptr [ebp-0x44], eax
@@ -413,7 +413,7 @@ G_M6409_IG21: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
G_M6409_IG22: ; bbWeight=8, gcVars=0000000000010010 {V05 V13}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
test bl, 64- je G_M6409_IG37+ je G_M6409_IG34 cmp byte ptr [edi+0x1E], 9
je SHORT G_M6409_IG23
mov edi, gword ptr [edi+0x08]
@@ -423,7 +423,7 @@ G_M6409_IG22: ; bbWeight=8, gcVars=0000000000010010 {V05 V13}, gcrefRegs=
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx edx edi]- jmp G_M6409_IG52+ jmp G_M6409_IG44 ;; size=34 bbWeight=8 PerfScore 116.00
G_M6409_IG23: ; bbWeight=8.00, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[edi]
@@ -438,13 +438,13 @@ G_M6409_IG23: ; bbWeight=8.00, gcrefRegs=000000C1 {eax esi edi}, byrefReg
; gcrRegs -[ecx ebx]
mov gword ptr [ebp-0x30], eax
test eax, eax- je G_M6409_IG60+ je G_M6409_IG57 lea ebx, bword ptr [eax+0x08]
; byrRegs +[ebx]
mov eax, dword ptr [eax+0x04]
; gcrRegs -[eax]
;; size=41 bbWeight=8.00 PerfScore 114.00-G_M6409_IG24: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz+G_M6409_IG24: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref mov bword ptr [ebp-0x24], ebx
mov dword ptr [ebp-0x20], eax
xor edx, edx
@@ -460,12 +460,12 @@ G_M6409_IG24: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
mov edi, gword ptr [ebx+0x08]
; gcrRegs +[edi]
cmp byte ptr [ebp-0x28], 0- jne G_M6409_IG30+ jne G_M6409_IG33 test edi, edi- je G_M6409_IG30+ je G_M6409_IG33 mov ecx, dword ptr [ebp-0x2C]
cmp ecx, dword ptr [ebp-0x20]- ja G_M6409_IG64+ ja G_M6409_IG61 mov edx, bword ptr [ebp-0x24]
; byrRegs +[edx]
lea eax, bword ptr [edx+2*ecx]
@@ -477,7 +477,7 @@ G_M6409_IG24: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
sub edx, ecx
mov dword ptr [ebp-0x38], edx
test edx, edx- jge SHORT G_M6409_IG29+ jge G_M6409_IG32 mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -487,12 +487,12 @@ G_M6409_IG24: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
; byrRegs -[eax]
mov eax, bword ptr [ebp-0x48]
; byrRegs +[eax]- ;; size=104 bbWeight=8 PerfScore 252.00
-G_M6409_IG25: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000001 {eax}, byref, isz+ ;; size=108 bbWeight=8 PerfScore 252.00
+G_M6409_IG25: ; bbWeight=8, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000001 {eax}, byref mov edx, dword ptr [ebp-0x38]
cmp dword ptr [edi+0x04], edx- ja SHORT G_M6409_IG30
- ;; size=8 bbWeight=8 PerfScore 40.00+ ja G_M6409_IG33
+ ;; size=12 bbWeight=8 PerfScore 40.00 G_M6409_IG26: ; bbWeight=7.98, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000001 {eax}, byref
lea edx, bword ptr [edi+0x08]
; byrRegs +[edx]
@@ -512,7 +512,7 @@ G_M6409_IG27: ; bbWeight=8.00, gcrefRegs=00000048 {ebx esi}, byrefRegs=00
; gcrRegs -[edi]
mov edi, dword ptr [ebp-0x2C]
cmp edi, dword ptr [ebp-0x20]- ja G_M6409_IG64+ ja G_M6409_IG61 ;; size=12 bbWeight=8.00 PerfScore 32.01
G_M6409_IG28: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, bword ptr [ebp-0x24]
@@ -520,7 +520,7 @@ G_M6409_IG28: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000
mov bword ptr [ebp-0x4C], eax
; GC ptr vars +{V59}
test edi, edi- jge SHORT G_M6409_IG34+ jge SHORT G_M6409_IG29 mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -528,53 +528,20 @@ G_M6409_IG28: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[ecx edx]
; byrRegs -[eax]- jmp SHORT G_M6409_IG33
- ;; size=28 bbWeight=8 PerfScore 70.00
-G_M6409_IG29: ; bbWeight=4, gcVars=0000000020010010 {V05 V13 V44}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[edi]
- ; GC ptr vars -{V59} +{V29 V44}
- mov eax, bword ptr [ebp-0x48]
- ; byrRegs +[eax]
- jmp SHORT G_M6409_IG25
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M6409_IG30: ; bbWeight=0.02, gcVars=0000000000010010 {V05 V13}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; byrRegs -[eax]
- ; GC ptr vars -{V29 V44}
- lea ecx, [ebp-0x34]
- mov edx, edi
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[edx edi]
- jmp SHORT G_M6409_IG27
- ;; size=13 bbWeight=0.02 PerfScore 0.09
-G_M6409_IG31: ; bbWeight=16, gcVars=0000000000010000 {V05}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ebx]
- ; GC ptr vars -{V13}
- cmp ebx, 23
- mov dword ptr [ebp-0x1C], ecx
- mov edi, dword ptr [ebp-0x18]
- je G_M6409_IG16
- ;; size=15 bbWeight=16 PerfScore 52.00
-G_M6409_IG32: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- jmp G_M6409_IG53
- ;; size=5 bbWeight=2 PerfScore 4.00
-G_M6409_IG33: ; bbWeight=8, gcVars=0000000002010010 {V05 V13 V59}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[ebx]
- ; GC ptr vars +{V04 V13 V59} mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]- ;; size=16 bbWeight=8 PerfScore 28.00
-G_M6409_IG34: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz+ ;; size=42 bbWeight=8 PerfScore 82.00
+G_M6409_IG29: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz mov eax, bword ptr [ebp-0x4C]
; byrRegs +[eax]
push edi
push eax
; byr arg push 1- ; GC ptr vars -{V04 V59}+ ; GC ptr vars -{V59} call <unknown method>
; gcrRegs +[eax]
; byrRegs -[eax]
@@ -587,9 +554,9 @@ G_M6409_IG34: ; bbWeight=8, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000
vmovdqu xmmword ptr [ebp-0x34], xmm0
vmovdqu xmmword ptr [ebp-0x2C], xmm0
test edx, edx
...
@@ -154,7 +154,7 @@ G_M28690_IG03: ; bbWeight=1, gcVars=0000000000040100 {V05 V11}, gcrefRegs
mov edx, gword ptr [ecx+0x24]
; gcrRegs +[edx]
test dword ptr [edx+0x1C], 0xD1FFAB1E- je G_M28690_IG28+ je G_M28690_IG27 mov byte ptr [ecx+0x30], bl
test bl, bl
je SHORT G_M28690_IG05
@@ -207,9 +207,9 @@ G_M28690_IG08: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
; byrRegs -[edx]
mov bword ptr [ebp-0x54], 0xD1FFAB1E
test esi, esi- jl G_M28690_IG24+ jl G_M28690_IG22 ;; size=26 bbWeight=1 PerfScore 4.75-G_M28690_IG09: ; bbWeight=1.00, gcVars=0000000001040040 {V05 V06 V66}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M28690_IG09: ; bbWeight=1.00, gcVars=0000000001040040 {V05 V06 V66}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars +{V24 V66}
mov edx, esi
mov ecx, 0xD1FFAB1E ; ushort[]
@@ -239,24 +239,24 @@ G_M28690_IG09: ; bbWeight=1.00, gcVars=0000000001040040 {V05 V06 V66}, gc
mov bword ptr [ebp-0x50], eax
; GC ptr vars +{V56}
test ebx, ebx- jle SHORT G_M28690_IG15
- ;; size=52 bbWeight=1.00 PerfScore 18.00
-G_M28690_IG10: ; bbWeight=4, gcVars=0000000000040050 {V05 V06 V56}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz+ jle G_M28690_IG20
+ ;; size=56 bbWeight=1.00 PerfScore 18.00
+G_M28690_IG10: ; bbWeight=4, gcVars=0000000000040050 {V05 V06 V56}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; byrRegs -[eax]
; GC ptr vars -{V31}
cmp ebx, edi- jg SHORT G_M28690_IG16
- ;; size=4 bbWeight=4 PerfScore 5.00+ jg G_M28690_IG21
+ ;; size=8 bbWeight=4 PerfScore 5.00 G_M28690_IG11: ; bbWeight=1.47, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov edx, ebx
;; size=2 bbWeight=1.47 PerfScore 0.37-G_M28690_IG12: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M28690_IG12: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref cmp edx, ebx
ja G_M28690_IG23
mov dword ptr [ebp-0x24], edx
test edx, edx- jge SHORT G_M28690_IG14
- ;; size=15 bbWeight=4 PerfScore 14.00+ jge G_M28690_IG19
+ ;; size=19 bbWeight=4 PerfScore 14.00 G_M28690_IG13: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
@@ -264,25 +264,15 @@ G_M28690_IG13: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]- jmp G_M28690_IG25
- ;; size=21 bbWeight=2 PerfScore 11.00
-G_M28690_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+ mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx] mov dword ptr [ebp+0x10], edi- jmp SHORT G_M28690_IG17
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M28690_IG15: ; bbWeight=0.50, gcVars=0000000000040040 {V05 V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V56}
- mov dword ptr [ebp+0x10], edi
- jmp SHORT G_M28690_IG20
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M28690_IG16: ; bbWeight=0.53, gcVars=0000000000040050 {V05 V06 V56}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V04 V56}
- mov dword ptr [ebp+0x10], edi
- mov edx, edi
- mov edi, dword ptr [ebp+0x10]
- jmp SHORT G_M28690_IG12
- ;; size=10 bbWeight=0.53 PerfScore 2.25
-G_M28690_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+ ;; size=35 bbWeight=2 PerfScore 16.00
+G_M28690_IG14: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, bword ptr [ebp-0x50]
; byrRegs +[eax]
mov ecx, eax
@@ -299,13 +289,13 @@ G_M28690_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; byrRegs -[eax]
mov edi, bword ptr [ebp-0x50]
; byrRegs +[edi]- mov eax, dword ptr [ebp-0x24]
- lea edi, bword ptr [edi+2*eax]
- sub ebx, eax
- jns SHORT G_M28690_IG19+ mov ecx, dword ptr [ebp-0x24]
+ lea edi, bword ptr [edi+2*ecx]
+ sub ebx, ecx
+ jns SHORT G_M28690_IG16 ;; size=34 bbWeight=4 PerfScore 49.00-G_M28690_IG18: ; bbWeight=2, gcVars=0000000000040040 {V05 V06}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref
- ; GC ptr vars -{V04 V56}+G_M28690_IG15: ; bbWeight=2, gcVars=0000000000040040 {V05 V06}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref
+ ; GC ptr vars -{V56} mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -313,13 +303,13 @@ G_M28690_IG18: ; bbWeight=2, gcVars=0000000000040040 {V05 V06}, gcrefRegs
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=2 PerfScore 7.00-G_M28690_IG19: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz+G_M28690_IG16: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz test ebx, ebx
mov bword ptr [ebp-0x50], edi
; GC ptr vars +{V56}- jg SHORT G_M28690_IG21+ jg SHORT G_M28690_IG18 ;; size=7 bbWeight=4 PerfScore 9.00-G_M28690_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M28690_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; byrRegs -[edi]
; GC ptr vars -{V56}
mov ecx, gword ptr [ebp-0x38]
@@ -327,7 +317,7 @@ G_M28690_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov edx, gword ptr [ecx+0x24]
; gcrRegs +[edx]
test dword ptr [edx+0x1C], 0xD1FFAB1E- je SHORT G_M28690_IG22+ je G_M28690_IG24 push 1
mov edx, 1
; gcrRegs -[edx]
@@ -365,23 +355,31 @@ G_M28690_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; GC ptr vars -{V55}
call [<unknown method>]
; gcrRegs -[ecx]- jmp SHORT G_M28690_IG26
- ;; size=96 bbWeight=1 PerfScore 59.25
-G_M28690_IG21: ; bbWeight=2, gcVars=0000000000040050 {V05 V06 V56}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+ jmp SHORT G_M28690_IG25
+ ;; size=100 bbWeight=1 PerfScore 59.25
+G_M28690_IG18: ; bbWeight=2, gcVars=0000000000040050 {V05 V06 V56}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars +{V04 V56}
mov edi, dword ptr [ebp+0x10]
jmp G_M28690_IG10
;; size=8 bbWeight=2 PerfScore 6.00+G_M28690_IG19: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov dword ptr [ebp+0x10], edi
+ jmp G_M28690_IG14
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M28690_IG20: ; bbWeight=0.50, gcVars=0000000000040040 {V05 V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V04 V56}
+ mov dword ptr [ebp+0x10], edi
+ jmp SHORT G_M28690_IG17
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M28690_IG21: ; bbWeight=0.53, gcVars=0000000000040050 {V05 V06 V56}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars +{V04 V56}
+ mov dword ptr [ebp+0x10], edi
+ mov edx, edi
+ mov edi, dword ptr [ebp+0x10]
+ jmp G_M28690_IG12
+ ;; size=13 bbWeight=0.53 PerfScore 2.25 G_M28690_IG22: ; bbWeight=0, gcVars=0000000000040040 {V05 V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V04 V56}- call [System.IO.StreamWriter:ThrowAsyncIOInProgress()]
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M28690_IG23: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M28690_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 381
mov edx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -393,19 +391,15 @@ G_M28690_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs -[eax edx]
int3
;; size=26 bbWeight=0 PerfScore 0.00-G_M28690_IG25: ; bbWeight=2, gcVars=0000000000040050 {V05 V06 V56}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars +{V04 V56}
- mov ecx, 0xD1FFAB1E
- ; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx]
- mov dword ptr [ebp+0x10], edi
- jmp G_M28690_IG17
- ;; size=24 bbWeight=2 PerfScore 13.00
-G_M28690_IG26: ; bbWeight=1, gcVars=0000000000040040 {V05 V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V04 V56}+G_M28690_IG23: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M28690_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ call [System.IO.StreamWriter:ThrowAsyncIOInProgress()]
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M28690_IG25: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x38]
; gcrRegs +[ecx]
mov edx, 1
@@ -416,9 +410,9 @@ G_M28690_IG26: ; bbWeight=1, gcVars=0000000000040040 {V05 V06}, gcrefRegs
; GC ptr vars -{V06}
call <unknown method>
; gcrRegs -[ecx]- jmp SHORT G_M28690_IG29+ jmp SHORT G_M28690_IG28 ;; size=24 bbWeight=1 PerfScore 8.25-G_M28690_IG27: ; bbWeight=0, gcVars=0000000000040040 {V05 V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+G_M28690_IG26: ; bbWeight=0, gcVars=0000000000040040 {V05 V06}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars +{V06}
mov ecx, gword ptr [ebp-0x38]
; gcrRegs +[ecx]
@@ -433,11 +427,11 @@ G_M28690_IG27: ; bbWeight=0, gcVars=0000000000040040 {V05 V06}, gcrefRegs
pop eax
jmp eax
;; size=25 bbWeight=0 PerfScore 0.00-G_M28690_IG28: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M28690_IG27: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.IO.StreamWriter:ThrowAsyncIOInProgress()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M28690_IG29: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M28690_IG28: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x34]
; gcrRegs +[ecx]
mov byte ptr [ecx+0x1F], 0
@@ -447,9 +441,9 @@ G_M28690_IG29: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; GC ptr vars -{V05}
call <unknown method>
; gcrRegs -[ecx]- jmp SHORT G_M28690_IG31+ jmp SHORT G_M28690_IG30 ;; size=25 bbWeight=1 PerfScore 7.25-G_M28690_IG30: ; bbWeight=0, gcVars=0000000000040000 {V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref+G_M28690_IG29: ; bbWeight=0, gcVars=0000000000040000 {V05}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars +{V05}
mov ecx, gword ptr [ebp-0x34]
; gcrRegs +[ecx]
@@ -463,7 +457,7 @@ G_M28690_IG30: ; bbWeight=0, gcVars=0000000000040000 {V05}, gcrefRegs=000
pop eax
jmp eax
;; size=26 bbWeight=0 PerfScore 0.00-G_M28690_IG31: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M28690_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc...
@@ -8,34 +8,33 @@
; 8 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T05] ( 14, 10 ) ref -> [ebp-0x28] this class-hnd EH-live single-def <System.IO.Packaging.PackagePart>+; V00 this [V00,T06] ( 14, 10 ) ref -> [ebp-0x28] this class-hnd EH-live single-def <System.IO.Packaging.PackagePart> ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.IO.Stream]>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.IO.Stream>-; V03 tmp0 [V03,T09] ( 2, 2 ) ref -> esi class-hnd single-def "Inlining Arg" <<unknown class>>+; V03 tmp0 [V03,T10] ( 2, 2 ) ref -> esi class-hnd single-def "Inlining Arg" <<unknown class>> ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.IO.Stream]>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.IO.FileStream>-; V06 tmp3 [V06,T04] ( 4, 10.24) ref -> [ebp-0x2C] class-hnd spill-single-def "dup spill" <System.IO.Strategies.FileStreamStrategy>+; V06 tmp3 [V06,T05] ( 4, 10.24) ref -> [ebp-0x2C] class-hnd spill-single-def "dup spill" <System.IO.Strategies.FileStreamStrategy> ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref -;* V08 tmp5 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V08 tmp5 [V08,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V10 tmp7 [V10,T07] ( 6, 40.67) ref -> edx class-hnd single-def "Inlining Arg" <<unknown class>>
-; V11 tmp8 [V11,T13] ( 3, 8.34) int -> eax single-def "Inline stloc first use temp"
-; V12 tmp9 [V12,T02] ( 5, 12.51) ref -> esi single-def "field V01._list (fldOffset=0x0)" P-INDEP
-; V13 tmp10 [V13,T03] ( 6, 9.33) ref -> [ebp-0x30] spill-single-def "field V01._current (fldOffset=0x4)" P-INDEP+; V10 tmp7 [V10,T08] ( 6, 40.67) ref -> edx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V11 tmp8 [V11,T14] ( 3, 8.34) int -> eax single-def "Inline stloc first use temp"
+; V12 tmp9 [V12,T04] ( 4, 11.84) ref -> esi single-def "field V01._list (fldOffset=0x0)" P-INDEP
+; V13 tmp10 [V13,T02] ( 6, 9.33) ref -> [ebp-0x30] spill-single-def "field V01._current (fldOffset=0x4)" P-INDEP ; V14 tmp11 [V14,T00] ( 6, 17.82) int -> ebx "field V01._index (fldOffset=0x8)" P-INDEP-; V15 tmp12 [V15,T08] ( 3, 5.17) int -> [ebp-0x24] spill-single-def "field V01._version (fldOffset=0xc)" P-INDEP
-; V16 tmp13 [V16,T10] ( 3, 1.50) ref -> esi single-def "field V04._list (fldOffset=0x0)" P-INDEP+; V15 tmp12 [V15,T09] ( 2, 4.50) int -> [ebp-0x24] spill-single-def "field V01._version (fldOffset=0xc)" P-INDEP
+; V16 tmp13 [V16,T11] ( 3, 1.50) ref -> esi single-def "field V04._list (fldOffset=0x0)" P-INDEP ;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._current (fldOffset=0x4)" P-INDEP-;* V18 tmp15 [V18,T15] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x8)" P-INDEP
-; V19 tmp16 [V19,T14] ( 2, 1 ) int -> edi single-def "field V04._version (fldOffset=0xc)" P-INDEP+;* V18 tmp15 [V18,T16] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x8)" P-INDEP
+; V19 tmp16 [V19,T15] ( 2, 1 ) int -> edi single-def "field V04._version (fldOffset=0xc)" P-INDEP ; V20 tmp17 [V20,T01] ( 3, 19.97) ref -> edx "arr expr"-; V21 tmp18 [V21,T12] ( 2, 1.34) ref -> edx single-def "argument with side effect"+; V21 tmp18 [V21,T13] ( 2, 1.34) ref -> edx single-def "argument with side effect" ; V22 EHSlots [V22 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"-; V23 cse0 [V23,T11] ( 3, 1.50) ref -> esi "CSE - conservative"
-; TEMP_02 ref -> [ebp-0x34]
-; TEMP_01 int -> [ebp-0x38]+; V23 cse0 [V23,T03] ( 2, 8.01) int -> edx "CSE - moderate"
+; V24 cse1 [V24,T12] ( 3, 1.50) ref -> esi "CSE - conservative" ;-; Lcl frame size = 44+; Lcl frame size = 36
G_M35060_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -43,34 +42,35 @@ G_M35060_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx- sub esp, 44
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [ebp-0x34], ymm4+ sub esp, 36 xor eax, eax+ mov dword ptr [ebp-0x20], eax
+ mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax mov dword ptr [ebp-0x14], eax
mov gword ptr [ebp-0x28], ecx
; GC ptr vars +{V00}- ;; size=26 bbWeight=1 PerfScore 9.08
-G_M35060_IG02: ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref+ ;; size=26 bbWeight=1 PerfScore 9.75
+G_M35060_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[ecx]
cmp byte ptr [ecx+0x1C], 0- jne G_M35060_IG23+ jne G_M35060_IG22 ;; size=10 bbWeight=1 PerfScore 4.00
G_M35060_IG03: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
mov esi, gword ptr [ecx+0x10]
; gcrRegs +[esi]
test esi, esi- je G_M35060_IG17+ je G_M35060_IG16 cmp byte ptr [ecx+0x1D], 0- jne G_M35060_IG15+ jne SHORT G_M35060_IG14 mov edi, dword ptr [esi+0x0C]
xor ebx, ebx
mov dword ptr [ebp-0x24], edi
jmp SHORT G_M35060_IG09- ;; size=31 bbWeight=0.50 PerfScore 6.25
-G_M35060_IG04: ; bbWeight=2, gcVars=00000028 {V00 V13}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz+ ;; size=27 bbWeight=0.50 PerfScore 6.25
+G_M35060_IG04: ; bbWeight=2, gcVars=00000044 {V00 V13}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[ecx] +[eax]- ; GC ptr vars +{V03 V13}+ ; GC ptr vars +{V13} cmp dword ptr [eax], 0xD1FFAB1E
jne SHORT G_M35060_IG08
;; size=8 bbWeight=2 PerfScore 8.00
@@ -83,23 +83,19 @@ G_M35060_IG05: ; bbWeight=1.28, gcrefRegs=00000041 {eax esi}, byrefRegs=0
je SHORT G_M35060_IG07
mov ecx, edx
; gcrRegs +[ecx]- mov gword ptr [ebp-0x34], ecx mov edx, 1
; gcrRegs -[edx]- mov ecx, gword ptr [ebp-0x2C]
- mov ecx, dword ptr [ecx]
- ; gcrRegs -[ecx]
- mov ecx, dword ptr [ecx+0x34]
- mov dword ptr [ebp-0x38], ecx
- mov ecx, gword ptr [ebp-0x34]
- ; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x38]
- ; GC ptr vars -{V03 V06}+ mov edi, gword ptr [ebp-0x2C]
+ ; gcrRegs +[edi]
+ mov edi, dword ptr [edi]
+ ; gcrRegs -[edi]
+ mov edi, dword ptr [edi+0x34]
+ ; GC ptr vars -{V06} call [edi+0x10]<unknown method>
; gcrRegs -[eax ecx]
mov eax, gword ptr [ebp-0x30]
; gcrRegs +[eax]- ;; size=43 bbWeight=1.28 PerfScore 22.72+ ;; size=31 bbWeight=1.28 PerfScore 17.60 G_M35060_IG06: ; bbWeight=1.28, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, eax
; gcrRegs +[ecx]
@@ -109,8 +105,8 @@ G_M35060_IG06: ; bbWeight=1.28, gcrefRegs=00000041 {eax esi}, byrefRegs=0
mov edi, dword ptr [ebp-0x24]
jmp SHORT G_M35060_IG09
;; size=12 bbWeight=1.28 PerfScore 5.44-G_M35060_IG07: ; bbWeight=0.64, gcVars=00000028 {V00 V13}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V03 V13}+G_M35060_IG07: ; bbWeight=0.64, gcVars=00000044 {V00 V13}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V13} mov eax, gword ptr [ebp-0x30]
; gcrRegs +[eax]
jmp SHORT G_M35060_IG06
@@ -121,19 +117,20 @@ G_M35060_IG08: ; bbWeight=0.72, gcrefRegs=00000041 {eax esi}, byrefRegs=0
mov eax, dword ptr [eax]
; gcrRegs -[eax]
mov eax, dword ptr [eax+0x34]- ; GC ptr vars -{V03 V13}+ ; GC ptr vars -{V13} call [eax+0x0C]System.IO.Stream:Close():this
; gcrRegs -[ecx]
mov edi, dword ptr [ebp-0x24]
;; size=13 bbWeight=0.72 PerfScore 5.94
G_M35060_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, dword ptr [esi+0x0C]- jne SHORT G_M35060_IG14+ jne SHORT G_M35060_IG13 ;; size=5 bbWeight=4 PerfScore 16.00
G_M35060_IG10: ; bbWeight=4.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [esi+0x08]
- jae SHORT G_M35060_IG15
- ;; size=5 bbWeight=4.01 PerfScore 16.02+ mov edx, dword ptr [esi+0x08]
+ cmp ebx, edx
+ jae SHORT G_M35060_IG14
+ ;; size=7 bbWeight=4.01 PerfScore 13.02 G_M35060_IG11: ; bbWeight=3.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
@@ -155,14 +152,7 @@ G_M35060_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M35060_IG14: ; bbWeight=0.67, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi]
- mov edi, dword ptr [ebp-0x24]
- cmp edi, dword ptr [esi+0x0C]
- jne SHORT G_M35060_IG13
- ;; size=8 bbWeight=0.67 PerfScore 3.35
-G_M35060_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[esi]+G_M35060_IG14: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x28]
; gcrRegs +[ecx]
mov edx, gword ptr [ecx+0x10]
@@ -172,9 +162,9 @@ G_M35060_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
xor esi, esi
mov dword ptr [edx+0x08], esi
test eax, eax- jle SHORT G_M35060_IG17+ jle SHORT G_M35060_IG16 ;; size=21 bbWeight=4 PerfScore 42.00-G_M35060_IG16: ; bbWeight=0.34, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref+G_M35060_IG15: ; bbWeight=0.34, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx]
mov edx, gword ptr [edx+0x04]
push eax
@@ -185,23 +175,23 @@ G_M35060_IG16: ; bbWeight=0.34, gcrefRegs=00000004 {edx}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[ecx]
;; size=14 bbWeight=0.34 PerfScore 2.18-G_M35060_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M35060_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref xor eax, eax
; gcrRegs +[eax]
mov ecx, gword ptr [ebp-0x28]
; gcrRegs +[ecx]
mov gword ptr [ecx+0x10], eax
;; size=8 bbWeight=0.50 PerfScore 1.12-G_M35060_IG18: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref+G_M35060_IG17: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax]
mov gword ptr [ecx+0x14], eax
;; size=3 bbWeight=0.50 PerfScore 0.50-G_M35060_IG19: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz+G_M35060_IG18: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz mov gword ptr [ecx+0x08], eax
mov byte ptr [ecx+0x1C], 1- jmp SHORT G_M35060_IG23+ jmp SHORT G_M35060_IG22 ;; size=9 bbWeight=0.50 PerfScore 2.00-G_M35060_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M35060_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx]
xor eax, eax
; gcrRegs +[eax]
@@ -209,17 +199,17 @@ G_M35060_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[ecx]
mov gword ptr [ecx+0x10], eax
;; size=8 bbWeight=0 PerfScore 0.00-G_M35060_IG21: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref+G_M35060_IG20: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax]
mov gword ptr [ecx+0x14], eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M35060_IG22: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref+G_M35060_IG21: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref mov gword ptr [ecx+0x08], eax
mov byte ptr [ecx+0x1C], 1
pop eax
jmp eax
;; size=10 bbWeight=0 PerfScore 0.00-G_M35060_IG23: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc+G_M35060_IG22: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc ; gcrRegs -[ecx]
; GC ptr vars -{V00}
lea esp, [ebp-0x0C]
@@ -230,9 +220,9 @@ G_M35060_IG23: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
ret
;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 280, prolog size 26, PerfScore 187.49, instruction count 101, allocated bytes for code 280 (MethodHash=c698770b) for method System.IO.Packaging.PackagePart:Close():this (FullOpts)+; Total bytes of code 258, prolog size 26, PerfScore 176.68, instruction count 96, allocated bytes for code 258 (MethodHash=c698770b) for method System.IO.Packaging.PackagePart:Close():this (FullOpts)...
@@ -9,31 +9,32 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor>-; V01 arg1 [V01,T03] ( 8, 12.83) ref -> esi class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
-; V02 loc0 [V02,T15] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>+; V01 arg1 [V01,T04] ( 8, 12.83) ref -> esi class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
+; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op-; V04 loc2 [V04,T12] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>+; V04 loc2 [V04,T13] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
-; V08 tmp0 [V08,T11] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1"+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
+; V08 tmp0 [V08,T12] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>-; V10 tmp2 [V10,T07] ( 2, 4 ) ubyte -> ecx "Inlining Arg"+; V10 tmp2 [V10,T08] ( 2, 4 ) ubyte -> ecx "Inlining Arg" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>-;* V12 tmp4 [V12,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V14 tmp6 [V14,T08] ( 2, 3.83) ref -> edi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
-; V15 tmp7 [V15,T02] ( 5, 12.51) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
-; V16 tmp8 [V16,T04] ( 2, 6.66) ref -> edx "field V05._current (fldOffset=0x4)" P-INDEP+; V14 tmp6 [V14,T09] ( 2, 3.83) ref -> edi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
+; V15 tmp7 [V15,T03] ( 4, 11.84) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V16 tmp8 [V16,T05] ( 2, 6.66) ref -> edx "field V05._current (fldOffset=0x4)" P-INDEP ; V17 tmp9 [V17,T00] ( 6, 17.82) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP-; V18 tmp10 [V18,T06] ( 3, 5.17) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
-; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> ebx single-def "field V11._list (fldOffset=0x0)" P-INDEP+; V18 tmp10 [V18,T07] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> ebx single-def "field V11._list (fldOffset=0x0)" P-INDEP ;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x4)" P-INDEP-;* V21 tmp13 [V21,T16] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
-; V22 tmp14 [V22,T14] ( 2, 1 ) int -> eax "field V11._version (fldOffset=0xc)" P-INDEP+;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
+; V22 tmp14 [V22,T15] ( 2, 1 ) int -> eax "field V11._version (fldOffset=0xc)" P-INDEP ; V23 tmp15 [V23,T01] ( 3, 19.97) ref -> edx "arr expr"
; V24 EHSlots [V24 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V25 cse0 [V25,T09] ( 4, 3 ) ref -> ebx "CSE - moderate"+; V25 cse0 [V25,T02] ( 2, 8.01) int -> edx "CSE - aggressive"
+; V26 cse1 [V26,T10] ( 4, 3 ) ref -> ebx "CSE - moderate" ;
; Lcl frame size = 36
@@ -57,7 +58,7 @@ G_M53769_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
xor edx, edx
mov dword ptr [ebp-0x24], edx
;; size=8 bbWeight=1 PerfScore 2.25-G_M53769_IG03: ; bbWeight=1, gcVars=00008000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne SHORT G_M53769_IG10
lea edx, [ebp-0x24]
@@ -77,12 +78,12 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=0.50 PerfScore 1.75-G_M53769_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref+G_M53769_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ebx, gword ptr [esi+0x04]
; gcrRegs +[ebx]
test ebx, ebx- je G_M53769_IG16
- ;; size=11 bbWeight=1 PerfScore 3.25+ je SHORT G_M53769_IG15
+ ;; size=7 bbWeight=1 PerfScore 3.25 G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, ebx
; gcrRegs +[edx]
@@ -90,7 +91,7 @@ G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax- je SHORT G_M53769_IG15+ je SHORT G_M53769_IG14 mov ebx, eax
mov eax, dword ptr [ebx+0x0C]
; gcrRegs -[eax]
@@ -99,17 +100,18 @@ G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
;; size=26 bbWeight=0.50 PerfScore 3.12
G_M53769_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, dword ptr [ebx+0x0C]- jne SHORT G_M53769_IG11+ jne SHORT G_M53769_IG13 ;; size=5 bbWeight=4 PerfScore 16.00
G_M53769_IG08: ; bbWeight=4.01, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ecx, dword ptr [ebx+0x08]
- jae SHORT G_M53769_IG12
- ;; size=5 bbWeight=4.01 PerfScore 16.02+ mov edx, dword ptr [ebx+0x08]
+ cmp ecx, edx
+ jae SHORT G_M53769_IG11
+ ;; size=7 bbWeight=4.01 PerfScore 13.02 G_M53769_IG09: ; bbWeight=3.33, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae SHORT G_M53769_IG13+ jae SHORT G_M53769_IG12 mov edx, gword ptr [edx+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x28], ecx
@@ -127,28 +129,22 @@ G_M53769_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [System.Threading.Monitor:ThrowLockTakenException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M53769_IG11: ; bbWeight=0.67, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi]
- mov eax, dword ptr [ebp-0x2C]
- cmp eax, dword ptr [ebx+0x0C]
- jne SHORT G_M53769_IG14
- ;; size=8 bbWeight=0.67 PerfScore 3.35
-G_M53769_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx]+G_M53769_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi] xor ecx, ecx
; gcrRegs +[ecx]
mov gword ptr [esi+0x04], ecx- jmp SHORT G_M53769_IG16+ jmp SHORT G_M53769_IG15 ;; size=7 bbWeight=4 PerfScore 13.00-G_M53769_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx esi]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00-G_M53769_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG14: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ebx esi edi]
mov edx, ebx
; gcrRegs +[edx]
@@ -160,36 +156,36 @@ G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
mov ecx, esi
call [System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)]
; gcrRegs -[ecx edx ebx edi]- jmp SHORT G_M53769_IG12+ jmp SHORT G_M53769_IG11 ;; size=24 bbWeight=0.50 PerfScore 5.00-G_M53769_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi]
cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG20+ je SHORT G_M53769_IG19 ;; size=6 bbWeight=1 PerfScore 3.00-G_M53769_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
; GC ptr vars -{V02}
call <unknown method>
; gcrRegs -[ecx]- jmp SHORT G_M53769_IG20+ jmp SHORT G_M53769_IG19 ;; size=10 bbWeight=0.50 PerfScore 2.00-G_M53769_IG18: ; bbWeight=0, gcVars=00008000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V02 V15}+G_M53769_IG17: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V02 V16} cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG19+ je SHORT G_M53769_IG18 mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]- ; GC ptr vars -{V02 V15}+ ; GC ptr vars -{V02 V16} call <unknown method>
; gcrRegs -[ecx]
;; size=14 bbWeight=0 PerfScore 0.00-G_M53769_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M53769_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M53769_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -198,9 +194,9 @@ G_M53769_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 248, prolog size 14, PerfScore 145.51, instruction count 88, allocated bytes for code 248 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)+; Total bytes of code 238, prolog size 14, PerfScore 139.15, instruction count 86, allocated bytes for code 238 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts) ; ============================================================
*************** EH table for System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo)
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M53769_IG03..G_M53769_IG16) handled by [G_M53769_IG18..G_M53769_IG20) (fault)+EH#0: try [G_M53769_IG03..G_M53769_IG15) handled by [G_M53769_IG17..G_M53769_IG19) (fault)
@@ -9,31 +9,32 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor>-; V01 arg1 [V01,T03] ( 8, 12.83) ref -> esi class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
-; V02 loc0 [V02,T15] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>+; V01 arg1 [V01,T04] ( 8, 12.83) ref -> esi class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
+; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op-; V04 loc2 [V04,T12] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>+; V04 loc2 [V04,T13] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
-; V08 tmp0 [V08,T11] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1"+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
+; V08 tmp0 [V08,T12] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>-; V10 tmp2 [V10,T07] ( 2, 4 ) ubyte -> ecx "Inlining Arg"+; V10 tmp2 [V10,T08] ( 2, 4 ) ubyte -> ecx "Inlining Arg" ;* V11 tmp3 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>-;* V12 tmp4 [V12,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V12 tmp4 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V14 tmp6 [V14,T08] ( 2, 3.83) ref -> edi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
-; V15 tmp7 [V15,T02] ( 5, 12.51) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
-; V16 tmp8 [V16,T04] ( 2, 6.66) ref -> edx "field V05._current (fldOffset=0x4)" P-INDEP+; V14 tmp6 [V14,T09] ( 2, 3.83) ref -> edi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
+; V15 tmp7 [V15,T03] ( 4, 11.84) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
+; V16 tmp8 [V16,T05] ( 2, 6.66) ref -> edx "field V05._current (fldOffset=0x4)" P-INDEP ; V17 tmp9 [V17,T00] ( 6, 17.82) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP-; V18 tmp10 [V18,T06] ( 3, 5.17) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
-; V19 tmp11 [V19,T13] ( 3, 1.50) ref -> ebx single-def "field V11._list (fldOffset=0x0)" P-INDEP+; V18 tmp10 [V18,T07] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V19 tmp11 [V19,T14] ( 3, 1.50) ref -> ebx single-def "field V11._list (fldOffset=0x0)" P-INDEP ;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x4)" P-INDEP-;* V21 tmp13 [V21,T16] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
-; V22 tmp14 [V22,T14] ( 2, 1 ) int -> eax "field V11._version (fldOffset=0xc)" P-INDEP+;* V21 tmp13 [V21,T17] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP
+; V22 tmp14 [V22,T15] ( 2, 1 ) int -> eax "field V11._version (fldOffset=0xc)" P-INDEP ; V23 tmp15 [V23,T01] ( 3, 19.97) ref -> edx "arr expr"
; V24 EHSlots [V24 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V25 cse0 [V25,T09] ( 4, 3 ) ref -> ebx "CSE - moderate"+; V25 cse0 [V25,T02] ( 2, 8.01) int -> edx "CSE - aggressive"
+; V26 cse1 [V26,T10] ( 4, 3 ) ref -> ebx "CSE - moderate" ;
; Lcl frame size = 36
@@ -57,7 +58,7 @@ G_M53769_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
xor edx, edx
mov dword ptr [ebp-0x24], edx
;; size=8 bbWeight=1 PerfScore 2.25-G_M53769_IG03: ; bbWeight=1, gcVars=00008000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne SHORT G_M53769_IG10
lea edx, [ebp-0x24]
@@ -77,12 +78,12 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=0.50 PerfScore 1.75-G_M53769_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref+G_M53769_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ebx, gword ptr [esi+0x04]
; gcrRegs +[ebx]
test ebx, ebx- je G_M53769_IG16
- ;; size=11 bbWeight=1 PerfScore 3.25+ je SHORT G_M53769_IG15
+ ;; size=7 bbWeight=1 PerfScore 3.25 G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, ebx
; gcrRegs +[edx]
@@ -90,7 +91,7 @@ G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax- je SHORT G_M53769_IG15+ je SHORT G_M53769_IG14 mov ebx, eax
mov eax, dword ptr [ebx+0x0C]
; gcrRegs -[eax]
@@ -99,17 +100,18 @@ G_M53769_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
;; size=26 bbWeight=0.50 PerfScore 3.12
G_M53769_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, dword ptr [ebx+0x0C]- jne SHORT G_M53769_IG11+ jne SHORT G_M53769_IG13 ;; size=5 bbWeight=4 PerfScore 16.00
G_M53769_IG08: ; bbWeight=4.01, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ecx, dword ptr [ebx+0x08]
- jae SHORT G_M53769_IG12
- ;; size=5 bbWeight=4.01 PerfScore 16.02+ mov edx, dword ptr [ebx+0x08]
+ cmp ecx, edx
+ jae SHORT G_M53769_IG11
+ ;; size=7 bbWeight=4.01 PerfScore 13.02 G_M53769_IG09: ; bbWeight=3.33, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae SHORT G_M53769_IG13+ jae SHORT G_M53769_IG12 mov edx, gword ptr [edx+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x28], ecx
@@ -127,28 +129,22 @@ G_M53769_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [System.Threading.Monitor:ThrowLockTakenException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M53769_IG11: ; bbWeight=0.67, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi]
- mov eax, dword ptr [ebp-0x2C]
- cmp eax, dword ptr [ebx+0x0C]
- jne SHORT G_M53769_IG14
- ;; size=8 bbWeight=0.67 PerfScore 3.35
-G_M53769_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx]+G_M53769_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[esi] xor ecx, ecx
; gcrRegs +[ecx]
mov gword ptr [esi+0x04], ecx- jmp SHORT G_M53769_IG16+ jmp SHORT G_M53769_IG15 ;; size=7 bbWeight=4 PerfScore 13.00-G_M53769_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx esi]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00-G_M53769_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG14: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ebx esi edi]
mov edx, ebx
; gcrRegs +[edx]
@@ -160,36 +156,36 @@ G_M53769_IG15: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
mov ecx, esi
call [System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)]
; gcrRegs -[ecx edx ebx edi]- jmp SHORT G_M53769_IG12+ jmp SHORT G_M53769_IG11 ;; size=24 bbWeight=0.50 PerfScore 5.00-G_M53769_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi]
cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG20+ je SHORT G_M53769_IG19 ;; size=6 bbWeight=1 PerfScore 3.00-G_M53769_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
; GC ptr vars -{V02}
call <unknown method>
; gcrRegs -[ecx]- jmp SHORT G_M53769_IG20+ jmp SHORT G_M53769_IG19 ;; size=10 bbWeight=0.50 PerfScore 2.00-G_M53769_IG18: ; bbWeight=0, gcVars=00008000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V02 V15}+G_M53769_IG17: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V02 V16} cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG19+ je SHORT G_M53769_IG18 mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]- ; GC ptr vars -{V02 V15}+ ; GC ptr vars -{V02 V16} call <unknown method>
; gcrRegs -[ecx]
;; size=14 bbWeight=0 PerfScore 0.00-G_M53769_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M53769_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M53769_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -198,9 +194,9 @@ G_M53769_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 248, prolog size 14, PerfScore 145.51, instruction count 88, allocated bytes for code 248 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)+; Total bytes of code 238, prolog size 14, PerfScore 139.15, instruction count 86, allocated bytes for code 238 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts) ; ============================================================
*************** EH table for System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo)
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M53769_IG03..G_M53769_IG16) handled by [G_M53769_IG18..G_M53769_IG20) (fault)+EH#0: try [G_M53769_IG03..G_M53769_IG15) handled by [G_M53769_IG17..G_M53769_IG19) (fault)
@@ -93,10 +93,10 @@
;* V82 tmp74 [V82 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP
; V83 tmp75 [V83 ] ( 3, 48 ) ref -> [ebp-0x94] do-not-enreg[X] addr-exposed "field V33._bits (fldOffset=0x0)" P-DEP
; V84 tmp76 [V84 ] ( 3, 48 ) int -> [ebp-0x90] do-not-enreg[X] addr-exposed "field V33._sign (fldOffset=0x4)" P-DEP-; V85 tmp77 [V85,T37] ( 3, 16 ) byref -> edi "field V35._reference (fldOffset=0x0)" P-INDEP
-; V86 tmp78 [V86,T41] ( 3, 16 ) int -> [ebp-0xB0] "field V35._length (fldOffset=0x4)" P-INDEP
-; V87 tmp79 [V87,T38] ( 3, 16 ) byref -> registers "field V38._reference (fldOffset=0x0)" P-INDEP
-; V88 tmp80 [V88,T42] ( 3, 16 ) int -> registers "field V38._length (fldOffset=0x4)" P-INDEP+; V85 tmp77 [V85,T37] ( 3, 20.33) byref -> edi "field V35._reference (fldOffset=0x0)" P-INDEP
+; V86 tmp78 [V86,T39] ( 3, 20.33) int -> [ebp-0xB0] "field V35._length (fldOffset=0x4)" P-INDEP
+; V87 tmp79 [V87,T41] ( 3, 16 ) byref -> [ebp-0xD0] "field V38._reference (fldOffset=0x0)" P-INDEP
+; V88 tmp80 [V88,T43] ( 3, 16 ) int -> ecx "field V38._length (fldOffset=0x4)" P-INDEP ; V89 tmp81 [V89 ] ( 3, 24 ) ref -> [ebp-0x9C] do-not-enreg[X] addr-exposed "field V40._bits (fldOffset=0x0)" P-DEP
; V90 tmp82 [V90 ] ( 3, 24 ) int -> [ebp-0x98] do-not-enreg[X] addr-exposed "field V40._sign (fldOffset=0x4)" P-DEP
; V91 tmp83 [V91,T25] ( 4, 24.67) ref -> ebx "field V41._bits (fldOffset=0x0)" P-INDEP
@@ -109,10 +109,10 @@
;* V98 tmp90 [V98 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x4)" P-INDEP
; V99 tmp91 [V99 ] ( 3, 48 ) ref -> [ebp-0xA4] do-not-enreg[X] addr-exposed "field V46._bits (fldOffset=0x0)" P-DEP
; V100 tmp92 [V100 ] ( 3, 48 ) int -> [ebp-0xA0] do-not-enreg[X] addr-exposed "field V46._sign (fldOffset=0x4)" P-DEP-; V101 tmp93 [V101,T39] ( 3, 16 ) byref -> edi "field V48._reference (fldOffset=0x0)" P-INDEP
-; V102 tmp94 [V102,T43] ( 3, 16 ) int -> [ebp-0xB4] "field V48._length (fldOffset=0x4)" P-INDEP
-; V103 tmp95 [V103,T40] ( 3, 16 ) byref -> registers "field V51._reference (fldOffset=0x0)" P-INDEP
-; V104 tmp96 [V104,T44] ( 3, 16 ) int -> registers "field V51._length (fldOffset=0x4)" P-INDEP+; V101 tmp93 [V101,T38] ( 3, 20.33) byref -> edi "field V48._reference (fldOffset=0x0)" P-INDEP
+; V102 tmp94 [V102,T40] ( 3, 20.33) int -> [ebp-0xB4] "field V48._length (fldOffset=0x4)" P-INDEP
+; V103 tmp95 [V103,T42] ( 3, 16 ) byref -> [ebp-0xD4] "field V51._reference (fldOffset=0x0)" P-INDEP
+; V104 tmp96 [V104,T44] ( 3, 16 ) int -> ecx "field V51._length (fldOffset=0x4)" P-INDEP ; V105 tmp97 [V105,T22] ( 3, 28 ) ubyte -> [ebp-0xB8] spill-single-def "V04.[000..001)"
; V106 tmp98 [V106,T19] ( 2, 32 ) ubyte -> ebx "V11.[000..001)"
; V107 tmp99 [V107,T17] ( 2, 32 ) ref -> eax "V11.[004..008)"
@@ -130,7 +130,7 @@
; V119 tmp111 [V119,T06] ( 3, 48 ) ref -> edx "arr expr"
; V120 tmp112 [V120,T07] ( 3, 48 ) byref -> edx "BlockOp address local"
; V121 tmp113 [V121,T48] ( 2, 0 ) ref -> edi "argument with side effect"-; V122 tmp114 [V122,T49] ( 2, 0 ) ref -> [ebp-0xD0] spill-single-def "argument with side effect"+; V122 tmp114 [V122,T49] ( 2, 0 ) ref -> [ebp-0xD8] spill-single-def "argument with side effect" ; V123 cse0 [V123,T09] ( 3, 48 ) int -> eax "CSE - moderate"
; V124 rat0 [V124 ] ( 1, 16 ) long -> [ebp-0xC0] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V125 rat1 [V125,T33] ( 2, 24 ) int -> eax "field V124.lo (fldOffset=0x0)" P-INDEP
@@ -139,7 +139,7 @@
; V128 rat4 [V128,T35] ( 2, 24 ) int -> eax "field V127.lo (fldOffset=0x0)" P-INDEP
; V129 rat5 [V129,T36] ( 2, 24 ) int -> edx "field V127.hi (fldOffset=0x4)" P-INDEP
;-; Lcl frame size = 196+; Lcl frame size = 204
G_M36344_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -147,7 +147,7 @@ G_M36344_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx- sub esp, 196+ sub esp, 204 vzeroupper
vxorps xmm4, xmm4, xmm4
vmovdqu32 zmmword ptr [ebp-0xA4], zmm4
@@ -170,7 +170,7 @@ G_M36344_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs -[eax]
xor esi, esi
cmp dword ptr [ebx+0x04], 0- jle G_M36344_IG27+ jle G_M36344_IG28 ;; size=33 bbWeight=1 PerfScore 9.50
G_M36344_IG03: ; bbWeight=4, gcVars=0000200000000000 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, esi
@@ -180,7 +180,7 @@ G_M36344_IG03: ; bbWeight=4, gcVars=0000200000000000 {V00}, gcrefRegs=000
mov ecx, gword ptr [ebp-0x10]
; gcrRegs +[ecx]
cmp esi, dword ptr [ecx+0x04]- jae G_M36344_IG28+ jae G_M36344_IG29 mov ecx, gword ptr [ebp-0x10]
mov dword ptr [ebp-0x14], esi
lea edx, [esi+2*esi]
@@ -247,7 +247,7 @@ G_M36344_IG07: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=0000000
shr eax, 16
movzx eax, al
cmp ecx, eax- jne G_M36344_IG29+ jne G_M36344_IG30 mov ecx, dword ptr [ebp-0x50]
mov edx, dword ptr [ebp-0x4C]
mov edi, dword ptr [ebp-0x48]
@@ -277,7 +277,7 @@ G_M36344_IG07: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=0000000
movzx ecx, byte ptr [ebp-0x40]
sub ecx, ebx
test ecx, ecx- jle G_M36344_IG16+ jle G_M36344_IG19 ;; size=158 bbWeight=16 PerfScore 688.00
G_M36344_IG08: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ebx, gword ptr [ebp-0x78]
@@ -286,7 +286,7 @@ G_M36344_IG08: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov edx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae G_M36344_IG28+ jae G_M36344_IG29 lea edx, bword ptr [edx+8*ecx+0x08]
; gcrRegs -[edx]
; byrRegs +[edx]
@@ -295,7 +295,7 @@ G_M36344_IG08: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov edx, dword ptr [edx+0x04]
; byrRegs -[edx]
test ebx, ebx- jne SHORT G_M36344_IG10+ jne SHORT G_M36344_IG12 test ecx, ecx
jne SHORT G_M36344_IG09
xor ecx, ecx
@@ -314,52 +314,75 @@ G_M36344_IG08: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; byrRegs +[esi]
movsd
movsd - jmp SHORT G_M36344_IG15
- ;; size=84 bbWeight=8 PerfScore 250.00
-G_M36344_IG09: ; bbWeight=3.67, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz+ jmp G_M36344_IG18
+ ;; size=87 bbWeight=8 PerfScore 250.00
+G_M36344_IG09: ; bbWeight=8.00, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx]
; byrRegs -[esi edi]
xor edi, edi
; byrRegs +[edi]
xor ebx, ebx+ ;; size=4 bbWeight=8.00 PerfScore 4.00
+G_M36344_IG10: ; bbWeight=8.00, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, byref, isz
+ test ecx, ecx
+ jne SHORT G_M36344_IG16
+ ;; size=4 bbWeight=8.00 PerfScore 10.00
+G_M36344_IG11: ; bbWeight=3.67, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
+ ; gcrRegs -[ecx]
+ xor ecx, ecx
+ ; byrRegs +[ecx]
+ mov bword ptr [ebp-0xD0], ecx
+ ; GC ptr vars +{V87}
+ xor ecx, ecx
+ ; byrRegs -[ecx] mov dword ptr [ebp-0xB0], ebx- jmp SHORT G_M36344_IG11
- ;; size=12 bbWeight=3.67 PerfScore 12.83
-G_M36344_IG10: ; bbWeight=4.33, gcrefRegs=0000000A {ecx ebx}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[ebx]
- ; byrRegs -[edi]+ mov ebx, bword ptr [ebp-0xD0]
+ ; byrRegs +[ebx]
+ jmp SHORT G_M36344_IG17
+ ;; size=24 bbWeight=3.67 PerfScore 20.17
+G_M36344_IG12: ; bbWeight=4.33, gcrefRegs=0000000A {ecx ebx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[ecx ebx]
+ ; byrRegs -[ebx edi]
+ ; GC ptr vars -{V87} lea edi, bword ptr [ebx+0x08]
; byrRegs +[edi]
mov ebx, dword ptr [ebx+0x04]
; gcrRegs -[ebx]
mov dword ptr [ebp-0xB0], ebx- ;; size=12 bbWeight=4.33 PerfScore 15.17
-G_M36344_IG11: ; bbWeight=8.00, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, byref, isz
- test ecx, ecx
- jne SHORT G_M36344_IG13
- ;; size=4 bbWeight=8.00 PerfScore 10.00
-G_M36344_IG12: ; bbWeight=3.67, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz+ jmp SHORT G_M36344_IG10
+ ;; size=14 bbWeight=4.33 PerfScore 23.83
+G_M36344_IG13: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx]- xor ecx, ecx
- ; byrRegs +[ecx]
- xor ebx, ebx
- mov esi, ecx
- ; byrRegs +[esi]
- mov ecx, ebx
- ; byrRegs -[ecx]
- mov ebx, esi
- ; byrRegs +[ebx]
- jmp SHORT G_M36344_IG14
- ;; size=12 bbWeight=3.67 PerfScore 11.92
-G_M36344_IG13: ; bbWeight=4.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, byref+ ; byrRegs -[edi]
+ push dword ptr [ebp-0x74]
+ push gword ptr [ebp-0x78]
+ ; gcr arg push 1
+ lea ecx, [ebp-0x3C]
+ call [<unknown method>]
+ ; gcr arg pop 1
+ ;; size=15 bbWeight=8 PerfScore 44.00
+G_M36344_IG14: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ test eax, eax
+ jne G_M36344_IG30
+ mov esi, dword ptr [ebp-0x34]
+ inc esi
+ cmp esi, 28
+ mov eax, dword ptr [ebp-0xB8]
+ jle G_M36344_IG04
+ ;; size=27 bbWeight=16 PerfScore 76.00
+G_M36344_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jmp G_M36344_IG27
+ ;; size=5 bbWeight=4 PerfScore 8.00
+G_M36344_IG16: ; bbWeight=4.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, byref ; gcrRegs +[ecx]- ; byrRegs -[ebx esi]+ ; byrRegs +[edi]
+ mov dword ptr [ebp-0xB0], ebx lea ebx, bword ptr [ecx+0x08]
; byrRegs +[ebx]
mov ecx, dword ptr [ecx+0x04]
; gcrRegs -[ecx]- ;; size=6 bbWeight=4.33 PerfScore 10.83
-G_M36344_IG14: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref+ ;; size=12 bbWeight=4.33 PerfScore 15.17
+G_M36344_IG17: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref push dword ptr [ebp-0xB0]
push edi
; byr arg push 1
@@ -373,18 +396,18 @@ G_M36344_IG14: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000088 {e
; byrRegs -[ebx edi]
; gcr arg pop 2
;; size=24 bbWeight=8 PerfScore 70.00-G_M36344_IG15: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M36344_IG18: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz push dword ptr [ebp-0x88]
push gword ptr [ebp-0x8C]
; gcr arg push 1
lea ecx, [ebp-0x3C]
call [<unknown method>]
; gcr arg pop 1- jmp G_M36344_IG25
- ;; size=26 bbWeight=8 PerfScore 60.00
-G_M36344_IG16: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+ jmp SHORT G_M36344_IG14
+ ;; size=23 bbWeight=8 PerfScore 60.00
+G_M36344_IG19: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz test ecx, ecx- jge G_M36344_IG24+ jge SHORT G_M36344_IG13 mov ebx, gword ptr [ebp-0x3C]
; gcrRegs +[ebx]
mov eax, dword ptr [ebp-0x38]
@@ -393,7 +416,7 @@ G_M36344_IG16: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov edi, ecx
neg edi
cmp edi, dword ptr [edx+0x04]- jae G_M36344_IG28+ jae G_M36344_IG29 neg ecx
lea edx, bword ptr [edx+8*ecx+0x08]
; gcrRegs -[edx]
@@ -403,9 +426,9 @@ G_M36344_IG16: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
...
@@ -8,9 +8,9 @@
; 4 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T14] ( 5, 5 ) ref -> esi this class-hnd single-def <Microsoft.Extensions.Caching.Memory.MemoryCache>
-; V01 RetBuf [V01,T15] ( 4, 4 ) byref -> [ebp-0x5C] single-def
-; V02 loc0 [V02,T32] ( 4, 1.50) ref -> [ebp-0x60] class-hnd EH-live spill-single-def <<unknown class>>+; V00 this [V00,T15] ( 5, 5 ) ref -> esi this class-hnd single-def <Microsoft.Extensions.Caching.Memory.MemoryCache>
+; V01 RetBuf [V01,T16] ( 4, 4 ) byref -> [ebp-0x60] single-def
+; V02 loc0 [V02,T33] ( 4, 1.50) ref -> [ebp-0x64] class-hnd EH-live spill-single-def <<unknown class>> ; V03 loc1 [V03 ] ( 5, 4 ) ubyte -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V04 loc2 [V04 ] ( 0, 0 ) long -> zero-ref
;* V05 loc3 [V05 ] ( 0, 0 ) long -> zero-ref
@@ -19,57 +19,58 @@
;* V08 loc6 [V08 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>
;* V09 loc7 [V09 ] ( 0, 0 ) struct (16) zero-ref <System.ValueTuple`2[long,long]>
;* V10 loc8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[long,long]>-; V11 tmp1 [V11,T28] ( 2, 4 ) ubyte -> ecx "Inlining Arg"
-; V12 tmp2 [V12,T27] ( 2, 4 ) ref -> esi class-hnd single-def "Inlining Arg" <<unknown class>>+; V11 tmp1 [V11,T29] ( 2, 4 ) ubyte -> ecx "Inlining Arg"
+; V12 tmp2 [V12,T28] ( 2, 4 ) ref -> esi class-hnd single-def "Inlining Arg" <<unknown class>> ;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.WeakReference`1[Microsoft.Extensions.Caching.Memory.MemoryCache+Stats]]>
;* V14 tmp4 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>-; V16 tmp6 [V16,T12] ( 5, 8 ) ref -> [ebp-0x64] class-hnd "Inline return value spill temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>
-; V17 tmp7 [V17,T06] ( 5, 10.66) int -> eax "Inline stloc first use temp"+; V16 tmp6 [V16,T13] ( 5, 8 ) ref -> [ebp-0x68] class-hnd "Inline return value spill temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>
+; V17 tmp7 [V17,T07] ( 5, 10.66) int -> ebx "Inline stloc first use temp" ;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>-; V19 tmp9 [V19,T26] ( 3, 4 ) ref -> eax class-hnd "Inline stloc first use temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>+; V19 tmp9 [V19,T27] ( 3, 4 ) ref -> ebx class-hnd "Inline stloc first use temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats> ;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.Extensions.Caching.Memory.MemoryCache+Stats>-; V22 tmp12 [V22,T35] ( 3, 0 ) ref -> [ebp-0x68] class-hnd spill-single-def "updating class info" <System.ComAwareWeakReference>+; V22 tmp12 [V22,T36] ( 3, 0 ) ref -> ebx class-hnd "updating class info" <System.ComAwareWeakReference> ;* V23 tmp13 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"-; V25 tmp15 [V25,T36] ( 2, 0 ) ref -> eax class-hnd "dup spill" <System.Object>
-; V26 tmp16 [V26,T34] ( 4, 0 ) ref -> eax
-; V27 tmp17 [V27,T04] ( 3, 12 ) byref -> eax "Inlining Arg"
-; V28 tmp18 [V28,T05] ( 3, 12 ) byref -> edx "Inlining Arg"
-;* V29 tmp19 [V29,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+; V25 tmp15 [V25,T37] ( 2, 0 ) ref -> eax class-hnd "dup spill" <System.Object>
+; V26 tmp16 [V26,T35] ( 4, 0 ) ref -> eax
+; V27 tmp17 [V27,T05] ( 3, 12 ) byref -> ebx "Inlining Arg"
+; V28 tmp18 [V28,T06] ( 3, 12 ) byref -> ecx "Inlining Arg"
+;* V29 tmp19 [V29,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V30 tmp20 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-; V31 tmp21 [V31,T01] ( 5, 17.01) ref -> esi single-def "field V06._list (fldOffset=0x0)" P-INDEP
-; V32 tmp22 [V32,T03] ( 3, 8.66) ref -> [ebp-0x6C] spill-single-def "field V06._current (fldOffset=0x4)" P-INDEP+; V31 tmp21 [V31,T02] ( 4, 16.34) ref -> [ebp-0x6C] spill-single-def "field V06._list (fldOffset=0x0)" P-INDEP
+; V32 tmp22 [V32,T03] ( 3, 8.66) ref -> [ebp-0x70] spill-single-def "field V06._current (fldOffset=0x4)" P-INDEP ; V33 tmp23 [V33,T00] ( 6, 18.32) int -> edi "field V06._index (fldOffset=0x8)" P-INDEP-; V34 tmp24 [V34,T07] ( 3, 9.67) int -> ebx single-def "field V06._version (fldOffset=0xc)" P-INDEP+; V34 tmp24 [V34,T12] ( 2, 9 ) int -> [ebp-0x28] spill-single-def "field V06._version (fldOffset=0xc)" P-INDEP ;* V35 tmp25 [V35 ] ( 0, 0 ) long -> zero-ref single-def "field V09.Item1 (fldOffset=0x0)" P-INDEP
;* V36 tmp26 [V36 ] ( 0, 0 ) long -> zero-ref single-def "field V09.Item2 (fldOffset=0x8)" P-INDEP-; V37 tmp27 [V37,T20] ( 3, 6 ) long -> [ebp-0x2C] do-not-enreg[F] single-def "field V10.Item1 (fldOffset=0x0)" P-INDEP
-; V38 tmp28 [V38,T21] ( 3, 6 ) long -> [ebp-0x34] do-not-enreg[F] single-def "field V10.Item2 (fldOffset=0x8)" P-INDEP
-; V39 tmp29 [V39,T29] ( 3, 3 ) ref -> [ebp-0x70] spill-single-def "field V13._list (fldOffset=0x0)" P-INDEP+; V37 tmp27 [V37,T21] ( 3, 6 ) long -> [ebp-0x30] do-not-enreg[F] single-def "field V10.Item1 (fldOffset=0x0)" P-INDEP
+; V38 tmp28 [V38,T22] ( 3, 6 ) long -> [ebp-0x38] do-not-enreg[F] single-def "field V10.Item2 (fldOffset=0x8)" P-INDEP
+; V39 tmp29 [V39,T30] ( 3, 3 ) ref -> [ebp-0x74] spill-single-def "field V13._list (fldOffset=0x0)" P-INDEP ;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._current (fldOffset=0x4)" P-INDEP-;* V41 tmp31 [V41,T33] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP
-; V42 tmp32 [V42,T31] ( 2, 2 ) int -> [ebp-0x38] spill-single-def "field V13._version (fldOffset=0xc)" P-INDEP
-; V43 tmp33 [V43,T02] ( 3, 19.97) ref -> eax "arr expr"+;* V41 tmp31 [V41,T34] ( 0, 0 ) int -> zero-ref single-def "field V13._index (fldOffset=0x8)" P-INDEP
+; V42 tmp32 [V42,T32] ( 2, 2 ) int -> [ebp-0x3C] spill-single-def "field V13._version (fldOffset=0xc)" P-INDEP
+; V43 tmp33 [V43,T01] ( 3, 19.97) ref -> ebx "arr expr" ; V44 EHSlots [V44 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"-; V45 cse0 [V45,T30] ( 3, 3 ) ref -> ecx "CSE - conservative"
-; V46 rat0 [V46,T08] ( 4, 9 ) int -> [ebp-0x3C] "field V04.lo (fldOffset=0x0)" P-INDEP
-; V47 rat1 [V47,T09] ( 4, 9 ) int -> [ebp-0x40] "field V04.hi (fldOffset=0x4)" P-INDEP
-; V48 rat2 [V48,T10] ( 4, 9 ) int -> [ebp-0x44] "field V05.lo (fldOffset=0x0)" P-INDEP
-; V49 rat3 [V49,T11] ( 4, 9 ) int -> [ebp-0x48] "field V05.hi (fldOffset=0x4)" P-INDEP
-; V50 rat4 [V50,T16] ( 3, 6 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
-; V51 rat5 [V51,T17] ( 3, 6 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; V52 rat6 [V52 ] ( 1, 4 ) long -> [ebp-0x50] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V53 rat7 [V53,T22] ( 2, 6 ) int -> eax "field V52.lo (fldOffset=0x0)" P-INDEP
-; V54 rat8 [V54,T23] ( 2, 6 ) int -> edx "field V52.hi (fldOffset=0x4)" P-INDEP
-; V55 rat9 [V55 ] ( 1, 4 ) long -> [ebp-0x58] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V56 rat10 [V56,T24] ( 2, 6 ) int -> eax "field V55.lo (fldOffset=0x0)" P-INDEP
-; V57 rat11 [V57,T25] ( 2, 6 ) int -> edx "field V55.hi (fldOffset=0x4)" P-INDEP
-; V58 rat12 [V58,T18] ( 3, 6 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
-; V59 rat13 [V59,T19] ( 3, 6 ) byref -> edi "ReplaceWithLclVar is creating a new local variable"+; V45 cse0 [V45,T04] ( 2, 8.01) int -> ebx "CSE - moderate"
+; V46 cse1 [V46,T31] ( 3, 3 ) ref -> ecx "CSE - conservative"
+; V47 rat0 [V47,T08] ( 4, 9 ) int -> [ebp-0x40] "field V04.lo (fldOffset=0x0)" P-INDEP
+; V48 rat1 [V48,T09] ( 4, 9 ) int -> [ebp-0x44] "field V04.hi (fldOffset=0x4)" P-INDEP
+; V49 rat2 [V49,T10] ( 4, 9 ) int -> [ebp-0x48] "field V05.lo (fldOffset=0x0)" P-INDEP
+; V50 rat3 [V50,T11] ( 4, 9 ) int -> [ebp-0x4C] "field V05.hi (fldOffset=0x4)" P-INDEP
+; V51 rat4 [V51,T17] ( 3, 6 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V52 rat5 [V52,T18] ( 3, 6 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
+; V53 rat6 [V53 ] ( 1, 4 ) long -> [ebp-0x54] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V54 rat7 [V54,T23] ( 2, 6 ) int -> eax "field V53.lo (fldOffset=0x0)" P-INDEP
+; V55 rat8 [V55,T24] ( 2, 6 ) int -> edx "field V53.hi (fldOffset=0x4)" P-INDEP
+; V56 rat9 [V56 ] ( 1, 4 ) long -> [ebp-0x5C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V57 rat10 [V57,T25] ( 2, 6 ) int -> eax "field V56.lo (fldOffset=0x0)" P-INDEP
+; V58 rat11 [V58,T26] ( 2, 6 ) int -> edx "field V56.hi (fldOffset=0x4)" P-INDEP
+; V59 rat12 [V59,T19] ( 3, 6 ) byref -> eax "ReplaceWithLclVar is creating a new local variable"
+; V60 rat13 [V60,T20] ( 3, 6 ) byref -> edi "ReplaceWithLclVar is creating a new local variable" ;-; Lcl frame size = 100+; Lcl frame size = 104
G_M42359_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -77,23 +78,23 @@ G_M42359_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx- sub esp, 100+ sub esp, 104 vxorps xmm4, xmm4, xmm4
vmovdqu xmmword ptr [ebp-0x24], xmm4
xor eax, eax
mov dword ptr [ebp-0x14], eax- mov bword ptr [ebp-0x5C], edx+ mov bword ptr [ebp-0x60], edx ; GC ptr vars +{V01}
mov esi, ecx
; gcrRegs +[esi]
;; size=28 bbWeight=1 PerfScore 9.33-G_M42359_IG02: ; bbWeight=1, gcVars=0000000000008000 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref+G_M42359_IG02: ; bbWeight=1, gcVars=0000000000010000 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref mov ecx, gword ptr [esi+0x0C]
; gcrRegs +[ecx]- mov gword ptr [ebp-0x60], ecx+ mov gword ptr [ebp-0x64], ecx ; GC ptr vars +{V02}
;; size=6 bbWeight=1 PerfScore 3.00-G_M42359_IG03: ; bbWeight=1, gcVars=0000000100008000 {V01 V02}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M42359_IG03: ; bbWeight=1, gcVars=0000000200010000 {V01 V02}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne G_M42359_IG13
lea edx, [ebp-0x24]
@@ -119,224 +120,223 @@ G_M42359_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [eax]
mov eax, dword ptr [eax+0x04]
; byrRegs -[eax]- mov dword ptr [ebp-0x3C], ebx
- mov dword ptr [ebp-0x40], eax+ mov dword ptr [ebp-0x40], ebx
+ mov dword ptr [ebp-0x44], eax add ecx, 12
; gcrRegs -[ecx]
; byrRegs +[ecx]
mov edx, dword ptr [ecx]
mov ecx, dword ptr [ecx+0x04]
; byrRegs -[ecx]- mov dword ptr [ebp-0x44], edx
- mov dword ptr [ebp-0x48], ecx+ mov dword ptr [ebp-0x48], edx
+ mov dword ptr [ebp-0x4C], ecx mov esi, gword ptr [esi+0x0C]- mov gword ptr [ebp-0x70], esi+ mov gword ptr [ebp-0x74], esi ; GC ptr vars +{V39}
mov esi, dword ptr [esi+0x0C]
; gcrRegs -[esi]- mov dword ptr [ebp-0x38], esi
- mov esi, gword ptr [ebp-0x70]+ mov dword ptr [ebp-0x3C], esi
+ mov esi, gword ptr [ebp-0x74] ; gcrRegs +[esi]+ mov gword ptr [ebp-0x6C], esi
+ ; GC ptr vars +{V31} xor edi, edi- mov ebx, dword ptr [ebp-0x38]
- ;; size=51 bbWeight=1 PerfScore 23.00
-G_M42359_IG06: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref+ mov ebx, dword ptr [ebp-0x3C]
+ mov dword ptr [ebp-0x28], ebx
+ ;; size=57 bbWeight=1 PerfScore 25.00
+G_M42359_IG06: ; bbWeight=8, gcVars=0000000200010004 {V01 V02 V31}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V39}
cmp ebx, dword ptr [esi+0x0C]- jne G_M42359_IG16+ jne G_M42359_IG18 ;; size=9 bbWeight=8 PerfScore 32.00
G_M42359_IG07: ; bbWeight=4.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref- cmp edi, dword ptr [esi+0x08]+ mov ebx, dword ptr [esi+0x08]
+ cmp edi, ebx
+ jae G_M42359_IG16
+ ;; size=11 bbWeight=4.01 PerfScore 13.02
+G_M42359_IG08: ; bbWeight=3.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ebx, gword ptr [esi+0x04]
+ ; gcrRegs +[ebx]
+ cmp edi, dword ptr [ebx+0x04] jae G_M42359_IG17- ;; size=9 bbWeight=4.01 PerfScore 16.02
-G_M42359_IG08: ; bbWeight=3.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov eax, gword ptr [esi+0x04]
- ; gcrRegs +[eax]
- cmp edi, dword ptr [eax+0x04]
- jae G_M42359_IG18
- mov eax, gword ptr [eax+4*edi+0x08]
- mov gword ptr [ebp-0x6C], eax+ mov ebx, gword ptr [ebx+4*edi+0x08]
+ mov gword ptr [ebp-0x70], ebx ; GC ptr vars +{V32}
inc edi- mov eax, dword ptr [eax+0x04]
- ; gcrRegs -[eax]
- and eax, -2
- je SHORT G_M42359_IG12
- ;; size=28 bbWeight=3.33 PerfScore 41.61
-G_M42359_IG09: ; bbWeight=2, gcVars=0000000100008008 {V01 V02 V32}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- test al, 2+ mov ebx, dword ptr [ebx+0x04]
+ ; gcrRegs -[ebx]
+ and ebx, -2
+ je G_M42359_IG12
+ ;; size=32 bbWeight=3.33 PerfScore 41.61
+G_M42359_IG09: ; bbWeight=2, gcVars=000000020001000C {V01 V02 V31 V32}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ test bl, 2 jne G_M42359_IG14- mov ecx, eax+ mov ecx, ebx call <unknown method>
; gcrRegs +[eax]- ;; size=15 bbWeight=2 PerfScore 5.00
-G_M42359_IG10: ; bbWeight=2, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- mov ecx, eax
- ; gcrRegs +[ecx]
- ;; size=2 bbWeight=2 PerfScore 0.50
-G_M42359_IG11: ; bbWeight=2, gcVars=0000000100008000 {V01 V02}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz+ mov ebx, eax
+ ; gcrRegs +[ebx]
+ ;; size=18 bbWeight=2 PerfScore 5.50
+G_M42359_IG10: ; bbWeight=2, gcVars=0000000200010004 {V01 V02 V31}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax]
; GC ptr vars -{V32}- test ecx, ecx
- mov gword ptr [ebp-0x64], ecx+ test ebx, ebx
+ mov gword ptr [ebp-0x68], ebx ; GC ptr vars +{V16}- je SHORT G_M42359_IG06
- mov eax, gword ptr [ebp-0x64]
- ; gcrRegs +[eax]
- add eax, 4
- ; gcrRegs -[eax]
- ; byrRegs +[eax]
- test eax, eax
- je G_M42359_IG20+ je SHORT G_M42359_IG11
+ mov ebx, gword ptr [ebp-0x68]...
@@ -106,7 +106,7 @@ G_M40104_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], ecx- jbe G_M40104_IG21+ jbe G_M40104_IG34 ;; size=18 bbWeight=1 PerfScore 9.00
G_M40104_IG03: ; bbWeight=0.47, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
mov word ptr [edx+2*ecx+0x08], 60
@@ -137,7 +137,7 @@ G_M40104_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=000000C0 {esi
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], ecx- jbe G_M40104_IG25+ jbe G_M40104_IG35 ;; size=15 bbWeight=1 PerfScore 8.00
G_M40104_IG07: ; bbWeight=0.47, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
mov word ptr [edx+2*ecx+0x08], 62
@@ -163,11 +163,11 @@ G_M40104_IG09: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov bword ptr [ebp-0x2C], ecx
; GC ptr vars +{V48}
test ebx, ebx- jle G_M40104_IG26+ jle G_M40104_IG32 ;; size=32 bbWeight=1 PerfScore 8.50
G_M40104_IG10: ; bbWeight=4, gcVars=00000080 {V48}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
cmp edx, 192- jl G_M40104_IG20+ jl G_M40104_IG33 ;; size=12 bbWeight=4 PerfScore 5.00
G_M40104_IG11: ; bbWeight=1.47, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov gword ptr [ebp-0x24], edi
@@ -231,49 +231,23 @@ G_M40104_IG17: ; bbWeight=4.00, gcrefRegs=00000040 {esi}, byrefRegs=00000
;; size=17 bbWeight=4.00 PerfScore 13.00
G_M40104_IG18: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test eax, eax- jge SHORT G_M40104_IG23+ jge SHORT G_M40104_IG20 ;; size=4 bbWeight=4 PerfScore 5.00-G_M40104_IG19: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz+G_M40104_IG19: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]- jmp SHORT G_M40104_IG22
- ;; size=18 bbWeight=2 PerfScore 11.00
-G_M40104_IG20: ; bbWeight=0.53, gcVars=00000080 {V48}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[edi]
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x24], edi
- ; GC ptr vars +{V00}
- mov dword ptr [ebp-0x18], edx
- mov edi, edx
- ; gcrRegs -[edi]
- mov edx, dword ptr [ebp-0x18]
- jmp G_M40104_IG12
- ;; size=16 bbWeight=0.53 PerfScore 2.78
-G_M40104_IG21: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[edi]
- ; GC ptr vars -{V00 V48}
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, 60
- call [<unknown method>]
- ; gcrRegs -[ecx]
- jmp G_M40104_IG04
- ;; size=18 bbWeight=0.03 PerfScore 0.19
-G_M40104_IG22: ; bbWeight=2, gcVars=00000480 {V00 V48}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edi]
- ; GC ptr vars +{V00 V48} mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]- ;; size=16 bbWeight=2 PerfScore 7.00
-G_M40104_IG23: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref+ ;; size=32 bbWeight=2 PerfScore 14.00
+G_M40104_IG20: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz push dword ptr [ebp-0x20]
mov ecx, esi
; gcrRegs +[ecx]
@@ -289,51 +263,41 @@ G_M40104_IG23: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edi, eax
test edx, edx
mov eax, edi- mov edi, gword ptr [ebp-0x24]
- ; gcrRegs +[edi]
- jg G_M40104_IG10
- ;; size=39 bbWeight=4 PerfScore 46.00
-G_M40104_IG24: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00 V48}
- jmp SHORT G_M40104_IG26
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M40104_IG25: ; bbWeight=0.03, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, 62
- call [<unknown method>]
- ; gcrRegs -[ecx]
- jmp G_M40104_IG08
- ;; size=18 bbWeight=0.03 PerfScore 0.19
-G_M40104_IG26: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz+ jg SHORT G_M40104_IG31
+ ;; size=32 bbWeight=4 PerfScore 42.00
+G_M40104_IG21: ; bbWeight=1, gcVars=00000400 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V48} mov ecx, dword ptr [esi+0x0C]
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], ecx- jbe SHORT G_M40104_IG36
- ;; size=11 bbWeight=1 PerfScore 8.00
-G_M40104_IG27: ; bbWeight=0.47, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref+ jbe G_M40104_IG36
+ ;; size=15 bbWeight=1 PerfScore 8.00
+G_M40104_IG22: ; bbWeight=0.47, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref mov word ptr [edx+2*ecx+0x08], 60
inc dword ptr [esi+0x0C]
;; size=10 bbWeight=0.47 PerfScore 1.86-G_M40104_IG28: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz+G_M40104_IG23: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[edx]
mov ecx, dword ptr [esi+0x0C]
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], ecx- jbe SHORT G_M40104_IG37
- ;; size=11 bbWeight=1 PerfScore 8.00
-G_M40104_IG29: ; bbWeight=0.47, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref+ jbe G_M40104_IG37
+ ;; size=15 bbWeight=1 PerfScore 8.00
+G_M40104_IG24: ; bbWeight=0.47, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref mov word ptr [edx+2*ecx+0x08], 47
inc dword ptr [esi+0x0C]
;; size=10 bbWeight=0.47 PerfScore 1.86-G_M40104_IG30: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz+G_M40104_IG25: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx]+ mov edi, gword ptr [ebp-0x24]
+ ; gcrRegs +[edi] test edi, edi- je SHORT G_M40104_IG32
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M40104_IG31: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref+ je SHORT G_M40104_IG27
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M40104_IG26: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00} push dword ptr [edi+0x04]
lea edx, bword ptr [edi+0x08]
; byrRegs +[edx]
@@ -343,24 +307,24 @@ G_M40104_IG31: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[ecx edi]
; byrRegs -[edx]
;; size=14 bbWeight=0.50 PerfScore 2.87-G_M40104_IG32: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz+G_M40104_IG27: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [esi+0x0C]
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], ecx- jbe SHORT G_M40104_IG38
- ;; size=11 bbWeight=1 PerfScore 8.00
-G_M40104_IG33: ; bbWeight=0.47, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref+ jbe G_M40104_IG38
+ ;; size=15 bbWeight=1 PerfScore 8.00
+G_M40104_IG28: ; bbWeight=0.47, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref mov word ptr [edx+2*ecx+0x08], 62
inc dword ptr [esi+0x0C]
;; size=10 bbWeight=0.47 PerfScore 1.86-G_M40104_IG34: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M40104_IG29: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edx esi]
cmp dword ptr [ebp-0x34], 0xD1FFAB1E- je SHORT G_M40104_IG35+ je SHORT G_M40104_IG30 call CORINFO_HELP_FAIL_FAST
;; size=14 bbWeight=1 PerfScore 4.00-G_M40104_IG35: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M40104_IG30: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -368,32 +332,74 @@ G_M40104_IG35: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop ebp
ret 8
;; size=10 bbWeight=1 PerfScore 4.50-G_M40104_IG36: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi edi]+G_M40104_IG31: ; bbWeight=2, gcVars=00000480 {V00 V48}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[esi]
+ ; GC ptr vars +{V00 V48}
+ mov edi, gword ptr [ebp-0x24]
+ ; gcrRegs +[edi]
+ jmp G_M40104_IG10
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M40104_IG32: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00 V48}
+ mov gword ptr [ebp-0x24], edi
+ ; GC ptr vars +{V00}
+ jmp G_M40104_IG21
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M40104_IG33: ; bbWeight=0.53, gcVars=00000080 {V48}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V00} +{V48}
+ mov gword ptr [ebp-0x24], edi
+ ; GC ptr vars +{V00}
+ mov dword ptr [ebp-0x18], edx
+ mov edi, edx
+ ; gcrRegs -[edi]
+ mov edx, dword ptr [ebp-0x18]
+ jmp G_M40104_IG12
+ ;; size=16 bbWeight=0.53 PerfScore 2.78
+G_M40104_IG34: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[edi]
+ ; GC ptr vars -{V00 V48} mov ecx, esi
; gcrRegs +[ecx]
mov edx, 60
call [<unknown method>]
; gcrRegs -[ecx]- jmp SHORT G_M40104_IG28
- ;; size=15 bbWeight=0.03 PerfScore 0.19
-G_M40104_IG37: ; bbWeight=0.03, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz+ jmp G_M40104_IG04
+ ;; size=18 bbWeight=0.03 PerfScore 0.19
+G_M40104_IG35: ; bbWeight=0.03, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov edx, 62
+ call [<unknown method>]
+ ; gcrRegs -[ecx]
+ jmp G_M40104_IG08
+ ;; size=18 bbWeight=0.03 PerfScore 0.19
+G_M40104_IG36: ; bbWeight=0.03, gcVars=00000400 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
+ ; GC ptr vars +{V00}
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov edx, 60
+ call [<unknown method>]
+ ; gcrRegs -[ecx]
+ jmp G_M40104_IG23
+ ;; size=18 bbWeight=0.03 PerfScore 0.19
+G_M40104_IG37: ; bbWeight=0.03, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, esi
...
@@ -8,58 +8,58 @@
; 0 inlinees with PGO data; 13 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T23] ( 6, 6 ) ref -> [ebp-0x50] this class-hnd single-def <SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree>
-; V01 arg1 [V01,T42] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[int]>
-; V02 loc0 [V02,T21] ( 3, 11 ) int -> [ebp-0x24] spill-single-def
-; V03 loc1 [V03,T08] ( 5, 45 ) byref -> [ebp-0x54] spill-single-def
-; V04 loc2 [V04,T06] ( 8, 83 ) byref -> [ebp-0x58] spill-single-def
-; V05 loc3 [V05,T17] ( 8, 18.50) int -> [ebp-0x28] spill-single-def
-; V06 loc4 [V06,T34] ( 4, 4 ) int -> [ebp-0x2C] spill-single-def
-; V07 loc5 [V07,T31] ( 2, 5 ) int -> [ebp-0x30] spill-single-def
-; V08 loc6 [V08,T04] ( 9,110 ) int -> esi +; V00 this [V00,T21] ( 6, 6 ) ref -> [ebp-0x4C] this class-hnd single-def <SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree>
+; V01 arg1 [V01,T41] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[int]>
+; V02 loc0 [V02,T18] ( 3, 11 ) int -> [ebp-0x24] spill-single-def
+; V03 loc1 [V03,T08] ( 5, 45 ) byref -> [ebp-0x50] spill-single-def
+; V04 loc2 [V04,T06] ( 8, 76 ) byref -> [ebp-0x54] spill-single-def
+; V05 loc3 [V05,T20] ( 8, 8 ) int -> [ebp-0x28] spill-single-def
+; V06 loc4 [V06,T31] ( 4, 4 ) int -> [ebp-0x2C] spill-single-def
+; V07 loc5 [V07,T43] ( 2, 1.50) int -> [ebp-0x30] spill-single-def
+; V08 loc6 [V08,T04] ( 9,103 ) int -> esi ; V09 loc7 [V09,T02] ( 10,188.50) int -> edx -; V10 loc8 [V10,T11] ( 3, 36 ) int -> registers
-; V11 loc9 [V11,T38] ( 5, 2 ) ref -> [ebp-0x5C] class-hnd EH-live spill-single-def <<unknown class>>
-; V12 loc10 [V12,T20] ( 6, 11 ) byref -> [ebp-0x60] spill-single-def+; V10 loc8 [V10,T11] ( 3, 32.50) int -> registers
+; V11 loc9 [V11,T37] ( 5, 2 ) ref -> [ebp-0x58] class-hnd EH-live spill-single-def <<unknown class>>
+; V12 loc10 [V12,T17] ( 6, 11 ) byref -> [ebp-0x5C] spill-single-def ; V13 loc11 [V13 ] ( 4, 3 ) struct (12) [ebp-0x3C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Memory`1[int]>-; V14 loc12 [V14,T13] ( 12, 30 ) int -> edi
-; V15 loc13 [V15,T22] ( 5, 10 ) int -> [ebp-0x40] +; V14 loc12 [V14,T12] ( 12, 30 ) int -> edi
+; V15 loc13 [V15,T19] ( 5, 10 ) int -> ecx ;* V16 loc14 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 loc15 [V17 ] ( 0, 0 ) int -> zero-ref -; V18 loc16 [V18,T12] ( 7, 32 ) int -> ebx +; V18 loc16 [V18,T13] ( 7, 25 ) int -> ebx ; V19 loc17 [V19,T09] ( 5, 40 ) int -> eax
; V20 loc18 [V20,T10] ( 3, 40 ) int -> esi
;* V21 tmp0 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]>-; V22 tmp1 [V22,T28] ( 3, 6 ) ref -> edi single-def "LDVIRTFTN this pointer"
-; V23 tmp2 [V23,T36] ( 2, 4 ) int -> eax "VirtualCall through function pointer"+; V22 tmp1 [V22,T26] ( 3, 6 ) ref -> edi single-def "LDVIRTFTN this pointer"
+; V23 tmp2 [V23,T33] ( 2, 4 ) int -> eax "VirtualCall through function pointer" ;* V24 tmp3 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]>-; V25 tmp4 [V25,T16] ( 3, 24 ) int -> ecx "Span.get_Item index"
-; V26 tmp5 [V26,T19] ( 3, 12 ) byref -> ecx "dup spill"
-; V27 tmp6 [V27,T25] ( 2, 8 ) byref -> [ebp-0x64] spill-single-def "impSpillLclRefs"
-; V28 tmp7 [V28,T26] ( 2, 8 ) byref -> ecx "impSpillLclRefs"
-; V29 tmp8 [V29,T18] ( 2, 16 ) int -> edx "dup spill"+; V25 tmp4 [V25,T14] ( 3, 24 ) int -> ecx "Span.get_Item index"
+; V26 tmp5 [V26,T16] ( 3, 12 ) byref -> ecx "dup spill"
+; V27 tmp6 [V27,T23] ( 2, 8 ) byref -> [ebp-0x60] spill-single-def "impSpillLclRefs"
+; V28 tmp7 [V28,T24] ( 2, 8 ) byref -> ebx "impSpillLclRefs"
+; V29 tmp8 [V29,T15] ( 2, 16 ) int -> edx "dup spill" ; V30 tmp9 [V30,T00] ( 3,192 ) byref -> ecx "dup spill"
; V31 tmp10 [V31,T03] ( 2,128 ) int -> edx "dup spill"
; V32 tmp11 [V32,T01] ( 3,192 ) byref -> ecx "dup spill"-; V33 tmp12 [V33,T14] ( 3, 24 ) byref -> eax single-def "dup spill"
-; V34 tmp13 [V34,T15] ( 3, 24 ) byref -> edx single-def "dup spill"+; V33 tmp12 [V33,T34] ( 3, 3 ) byref -> eax single-def "dup spill"
+; V34 tmp13 [V34,T35] ( 3, 3 ) byref -> edx single-def "dup spill" ; V35 tmp14 [V35,T05] ( 3, 96 ) int -> esi "impSpillLclRefs"
;* V36 tmp15 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]>-; V37 tmp16 [V37,T27] ( 4, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <int[]>+; V37 tmp16 [V37,T25] ( 4, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <int[]> ;* V38 tmp17 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V39 tmp18 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V40 tmp19 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[int]>-; V41 tmp20 [V41,T33] ( 6, 4 ) byref -> registers "Inline stloc first use temp"
-; V42 tmp21 [V42,T32] ( 7, 4.50) int -> registers "Inline stloc first use temp"
-; V43 tmp22 [V43,T30] ( 9, 5.50) ref -> [ebp-0x68] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>+; V41 tmp20 [V41,T30] ( 6, 4 ) byref -> registers "Inline stloc first use temp"
+; V42 tmp21 [V42,T29] ( 7, 4.50) int -> registers "Inline stloc first use temp"
+; V43 tmp22 [V43,T28] ( 9, 5.50) ref -> [ebp-0x64] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V44 tmp23 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>-; V46 tmp25 [V46 ] ( 3, 1.50) struct ( 8) [ebp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
-; V47 tmp26 [V47,T39] ( 4, 2 ) int -> ecx single-def "Inline stloc first use temp"
-; V48 tmp27 [V48,T43] ( 3, 1.50) int -> edi single-def "Inline stloc first use temp"+; V46 tmp25 [V46 ] ( 3, 1.50) struct ( 8) [ebp-0x44] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
+; V47 tmp26 [V47,T38] ( 4, 2 ) int -> ecx single-def "Inline stloc first use temp"
+; V48 tmp27 [V48,T42] ( 3, 1.50) int -> edi single-def "Inline stloc first use temp" ;* V49 tmp28 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <int[]>
;* V50 tmp29 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <int[]>-; V51 tmp30 [V51,T41] ( 2, 2 ) byref -> edx single-def "Inlining Arg"+; V51 tmp30 [V51,T40] ( 2, 2 ) byref -> edx single-def "Inlining Arg" ;* V52 tmp31 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V53 tmp32 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V54 tmp33 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -75,7 +75,7 @@
;* V64 tmp43 [V64 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
;* V65 tmp44 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP
;* V66 tmp45 [V66 ] ( 0, 0 ) int -> zero-ref single-def "field V36._length (fldOffset=0x4)" P-INDEP-; V67 tmp46 [V67,T40] ( 3, 2 ) byref -> registers "field V38._reference (fldOffset=0x0)" P-INDEP+; V67 tmp46 [V67,T39] ( 3, 2 ) byref -> registers "field V38._reference (fldOffset=0x0)" P-INDEP ;* V68 tmp47 [V68 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP
;* V69 tmp48 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp49 [V70 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP
@@ -83,21 +83,21 @@
;* V72 tmp51 [V72 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x4)" P-INDEP
;* V73 tmp52 [V73 ] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp53 [V74 ] ( 0, 0 ) int -> zero-ref single-def "field V44._length (fldOffset=0x4)" P-INDEP-; V75 tmp54 [V75 ] ( 2, 1 ) byref -> [ebp-0x48] do-not-enreg[X] addr-exposed "field V46._reference (fldOffset=0x0)" P-DEP
-; V76 tmp55 [V76 ] ( 2, 1 ) int -> [ebp-0x44] do-not-enreg[X] addr-exposed "field V46._length (fldOffset=0x4)" P-DEP+; V75 tmp54 [V75 ] ( 2, 1 ) byref -> [ebp-0x44] do-not-enreg[X] addr-exposed "field V46._reference (fldOffset=0x0)" P-DEP
+; V76 tmp55 [V76 ] ( 2, 1 ) int -> [ebp-0x40] do-not-enreg[X] addr-exposed "field V46._length (fldOffset=0x4)" P-DEP ; V77 tmp56 [V77,T44] ( 2, 1 ) byref -> eax single-def "field V54._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp57 [V78 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x4)" P-INDEP
;* V79 tmp58 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V57._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp59 [V80 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x4)" P-INDEP-; V81 tmp60 [V81,T24] ( 5, 8 ) byref -> [ebp-0x6C] spill-single-def "V01.[000..004)"
-; V82 tmp61 [V82,T29] ( 3, 6 ) int -> [ebp-0x4C] spill-single-def "V01.[004..008)"
-; V83 tmp62 [V83,T35] ( 2, 4 ) ref -> edi single-def "argument with side effect"+; V81 tmp60 [V81,T22] ( 5, 8 ) byref -> [ebp-0x68] spill-single-def "V01.[000..004)"
+; V82 tmp61 [V82,T27] ( 3, 6 ) int -> [ebp-0x48] spill-single-def "V01.[004..008)"
+; V83 tmp62 [V83,T32] ( 2, 4 ) ref -> edi single-def "argument with side effect" ; V84 EHSlots [V84 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"-; V85 cse0 [V85,T37] ( 3, 3 ) ref -> [ebp-0x70] spill-single-def "CSE - conservative"+; V85 cse0 [V85,T36] ( 3, 3 ) ref -> [ebp-0x6C] spill-single-def "CSE - conservative" ; V86 cse1 [V86,T07] ( 4, 49 ) int -> eax "CSE - moderate"-; TEMP_01 int -> [ebp-0x74]+; TEMP_01 int -> [ebp-0x70] ;-; Lcl frame size = 104+; Lcl frame size = 100
G_M27110_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -105,35 +105,34 @@ G_M27110_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx- sub esp, 104+ sub esp, 100 vxorps xmm4, xmm4, xmm4- vmovdqu ymmword ptr [ebp-0x48], ymm4
- vmovdqu xmmword ptr [ebp-0x28], xmm4+ vmovdqu ymmword ptr [ebp-0x44], ymm4
+ vmovdqu xmmword ptr [ebp-0x24], xmm4 xor eax, eax- mov dword ptr [ebp-0x18], eax mov dword ptr [ebp-0x14], eax
mov esi, ecx
; gcrRegs +[esi]- ;; size=33 bbWeight=1 PerfScore 11.33+ ;; size=30 bbWeight=1 PerfScore 10.33 G_M27110_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, bword ptr [ebp+0x08]
; byrRegs +[edi]- mov bword ptr [ebp-0x6C], edi+ mov bword ptr [ebp-0x68], edi ; GC ptr vars +{V81}
mov ebx, dword ptr [ebp+0x0C]- mov dword ptr [ebp-0x4C], ebx+ mov dword ptr [ebp-0x48], ebx mov eax, dword ptr [esi+0x30]
mov dword ptr [ebp-0x24], eax- mov bword ptr [ebp-0x54], edi+ mov bword ptr [ebp-0x50], edi ; GC ptr vars +{V03}
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]- mov gword ptr [ebp-0x70], ecx+ mov gword ptr [ebp-0x6C], ecx ; GC ptr vars +{V85}
test ecx, ecx
jne SHORT G_M27110_IG04
;; size=31 bbWeight=1 PerfScore 12.25-G_M27110_IG03: ; bbWeight=0.50, gcVars=0000002001000100 {V03 V81 V85}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M27110_IG03: ; bbWeight=0.50, gcVars=0000001000400100 {V03 V81 V85}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[ecx]
; byrRegs -[edi]
xor ecx, ecx
@@ -152,13 +151,13 @@ G_M27110_IG04: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=0
;; size=8 bbWeight=0.50 PerfScore 1.38
G_M27110_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, byref
; byrRegs -[ebx]- mov bword ptr [ebp-0x58], ecx+ mov bword ptr [ebp-0x54], ecx ; GC ptr vars +{V04}- mov gword ptr [ebp-0x50], esi+ mov gword ptr [ebp-0x4C], esi ; GC ptr vars +{V00}
mov ebx, dword ptr [esi+0x1C]
mov dword ptr [ebp-0x28], ebx- mov esi, dword ptr [ebp-0x4C]+ mov esi, dword ptr [ebp-0x48] ; gcrRegs -[esi]
sar esi, 1
mov dword ptr [ebp-0x2C], esi
@@ -166,7 +165,7 @@ G_M27110_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002
sar esi, 1
mov dword ptr [ebp-0x30], esi
xor esi, esi- mov edi, gword ptr [ebp-0x70]+ mov edi, gword ptr [ebp-0x6C] ; gcrRegs +[edi]
push ebx
mov ecx, edi
@@ -176,7 +175,7 @@ G_M27110_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002
; GC ptr vars -{V85}
call [<unknown method>]
; gcrRegs -[ecx edi]- mov edi, gword ptr [ebp-0x50]+ mov edi, gword ptr [ebp-0x4C] ; gcrRegs +[edi]
mov edi, gword ptr [edi+0x08]
push 0xD1FFAB1E
@@ -192,10 +191,10 @@ G_M27110_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000002
mov edx, dword ptr [ebp-0x2C]
call eax
; gcrRegs -[ecx edi] +[eax]- mov gword ptr [ebp-0x5C], eax+ mov gword ptr [ebp-0x58], eax ; GC ptr vars +{V11}
;; size=77 bbWeight=1 PerfScore 26.75-G_M27110_IG06: ; bbWeight=1, gcVars=0000004001000140 {V03 V04 V11 V81}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref+G_M27110_IG06: ; bbWeight=1, gcVars=0000002000400140 {V03 V04 V11 V81}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref lea edx, [ebp-0x3C]
mov ecx, eax
; gcrRegs +[ecx]
@@ -206,12 +205,12 @@ G_M27110_IG06: ; bbWeight=1, gcVars=0000004001000140 {V03 V04 V11 V81}, g
xor eax, eax
mov ecx, gword ptr [ebp-0x3C]
; gcrRegs +[ecx]- mov gword ptr [ebp-0x68], ecx+ mov gword ptr [ebp-0x64], ecx ; GC ptr vars +{V43}
test ecx, ecx
je G_M27110_IG12
;; size=29 bbWeight=1 PerfScore 7.50-G_M27110_IG07: ; bbWeight=0.50, gcVars=0000004041000140 {V03 V04 V11 V43 V81}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M27110_IG07: ; bbWeight=0.50, gcVars=0000002010400140 {V03 V04 V11 V43 V81}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz ; byrRegs -[edi]
mov edx, dword ptr [ecx]
test dword ptr [edx], 0xD1FFAB1E
@@ -232,7 +231,7 @@ G_M27110_IG07: ; bbWeight=0.50, gcVars=0000004041000140 {V03 V04 V11 V43
; gcrRegs -[eax ecx edx]
;; size=42 bbWeight=0.50 PerfScore 6.12
G_M27110_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz- mov edi, gword ptr [ebp-0x68]+ mov edi, gword ptr [ebp-0x64] ; gcrRegs +[edi]
lea edx, bword ptr [edi+0x08]
; byrRegs +[edx]
@@ -261,38 +260,38 @@ G_M27110_IG09: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000
; gcrRegs -[eax ecx edx]
;; size=32 bbWeight=0.50 PerfScore 3.12
...
@@ -10,30 +10,31 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Net.Http.Headers.HeaderDescriptor>
; V01 arg1 [V01,T03] ( 8, 13.50) ref -> esi class-hnd single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>-; V02 loc0 [V02,T15] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>+; V02 loc0 [V02,T16] ( 3, 0.50) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo> ; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op-; V04 loc2 [V04,T12] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>+; V04 loc2 [V04,T13] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.String]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>-; V07 loc5 [V07,T10] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
-; V08 tmp0 [V08,T11] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1"+; V07 loc5 [V07,T11] ( 5, 2.50) ref -> edx class-hnd exact <System.String>
+; V08 tmp0 [V08,T12] ( 2, 2 ) ref -> edx single-def "CASTCLASS eval op1" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.String]>-;* V11 tmp3 [V11,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V11 tmp3 [V11,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
; V13 tmp5 [V13,T08] ( 2, 4.50) ref -> edi single-def "field V00._descriptor (fldOffset=0x0)" P-INDEP
; V14 tmp6 [V14,T02] ( 4, 12.50) ref -> ebx single-def "field V05._list (fldOffset=0x0)" P-INDEP
; V15 tmp7 [V15,T04] ( 2, 8 ) ref -> edx "field V05._current (fldOffset=0x4)" P-INDEP
; V16 tmp8 [V16,T00] ( 6, 20.50) int -> [ebp-0x28] "field V05._index (fldOffset=0x8)" P-INDEP-; V17 tmp9 [V17,T06] ( 3, 8.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
-; V18 tmp10 [V18,T13] ( 3, 1.50) ref -> ebx single-def "field V10._list (fldOffset=0x0)" P-INDEP+; V17 tmp9 [V17,T09] ( 2, 4.50) int -> [ebp-0x2C] spill-single-def "field V05._version (fldOffset=0xc)" P-INDEP
+; V18 tmp10 [V18,T14] ( 3, 1.50) ref -> ebx single-def "field V10._list (fldOffset=0x0)" P-INDEP ;* V19 tmp11 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._current (fldOffset=0x4)" P-INDEP-;* V20 tmp12 [V20,T16] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
-; V21 tmp13 [V21,T14] ( 2, 1 ) int -> eax "field V10._version (fldOffset=0xc)" P-INDEP+;* V20 tmp12 [V20,T17] ( 0, 0 ) int -> zero-ref "field V10._index (fldOffset=0x8)" P-INDEP
+; V21 tmp13 [V21,T15] ( 2, 1 ) int -> eax "field V10._version (fldOffset=0xc)" P-INDEP ; V22 tmp14 [V22,T01] ( 3, 24 ) ref -> edx "arr expr"
; V23 EHSlots [V23 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V24 cse0 [V24,T05] ( 3, 12 ) int -> edx "CSE - aggressive"
-; V25 cse1 [V25,T09] ( 4, 3 ) ref -> ebx "CSE - moderate"+; V24 cse0 [V24,T07] ( 2, 8 ) int -> edx "CSE - aggressive"
+; V25 cse1 [V25,T05] ( 2, 8 ) int -> edx "CSE - aggressive"
+; V26 cse2 [V26,T10] ( 4, 3 ) ref -> ebx "CSE - moderate" ;
; Lcl frame size = 36
@@ -57,7 +58,7 @@ G_M53769_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
xor edx, edx
mov dword ptr [ebp-0x24], edx
;; size=8 bbWeight=1 PerfScore 2.25-G_M53769_IG03: ; bbWeight=1, gcVars=00008000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M53769_IG03: ; bbWeight=1, gcVars=00010000 {V02}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz cmp byte ptr [ebp-0x24], 0
jne SHORT G_M53769_IG06
lea edx, [ebp-0x24]
@@ -70,8 +71,8 @@ G_M53769_IG03: ; bbWeight=1, gcVars=00008000 {V02}, gcrefRegs=000000C0 {e
mov ebx, gword ptr [esi+0x04]
; gcrRegs +[ebx]
test ebx, ebx- je G_M53769_IG12
- ;; size=37 bbWeight=1 PerfScore 12.00+ je SHORT G_M53769_IG11
+ ;; size=33 bbWeight=1 PerfScore 12.00 G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, ebx
; gcrRegs +[edx]
@@ -79,7 +80,7 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax- je SHORT G_M53769_IG11+ je SHORT G_M53769_IG10 mov ebx, eax
mov eax, dword ptr [ebx+0x0C]
; gcrRegs -[eax]
@@ -89,13 +90,14 @@ G_M53769_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
G_M53769_IG05: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebx+0x0C]
cmp eax, edx- jne SHORT G_M53769_IG07
- cmp ecx, dword ptr [ebx+0x08]
- jae SHORT G_M53769_IG08+ jne SHORT G_M53769_IG09
+ mov edx, dword ptr [ebx+0x08]
+ cmp ecx, edx
+ jae SHORT G_M53769_IG07 mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
cmp ecx, dword ptr [edx+0x04]- jae SHORT G_M53769_IG09+ jae SHORT G_M53769_IG08 mov edx, gword ptr [edx+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x28], ecx
@@ -107,7 +109,7 @@ G_M53769_IG05: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
mov eax, dword ptr [ebp-0x2C]
mov ecx, dword ptr [ebp-0x28]
jmp SHORT G_M53769_IG05- ;; size=45 bbWeight=4 PerfScore 99.00+ ;; size=47 bbWeight=4 PerfScore 96.00 G_M53769_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi edi]
call [System.Threading.Monitor:ThrowLockTakenException()]
@@ -115,24 +117,20 @@ G_M53769_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=7 bbWeight=0 PerfScore 0.00
G_M53769_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]- cmp dword ptr [ebp-0x2C], edx
- jne SHORT G_M53769_IG10
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M53769_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz xor ecx, ecx
; gcrRegs +[ecx]
mov gword ptr [esi+0x04], ecx- jmp SHORT G_M53769_IG12+ jmp SHORT G_M53769_IG11 ;; size=7 bbWeight=4 PerfScore 13.00-G_M53769_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx esi]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00-G_M53769_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00-G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ebx esi edi]
mov edx, ebx
; gcrRegs +[edx]
@@ -144,36 +142,36 @@ G_M53769_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
mov ecx, esi
call [System.Net.Http.Headers.HttpHeaders:ParseSingleRawHeaderValue(System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo,System.Net.Http.Headers.HeaderDescriptor,System.String)]
; gcrRegs -[ecx edx ebx edi]- jmp SHORT G_M53769_IG08+ jmp SHORT G_M53769_IG07 ;; size=24 bbWeight=0.50 PerfScore 5.00-G_M53769_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi]
cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG16+ je SHORT G_M53769_IG15 ;; size=6 bbWeight=1 PerfScore 3.00-G_M53769_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz+G_M53769_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
; GC ptr vars -{V02}
call <unknown method>
; gcrRegs -[ecx]- jmp SHORT G_M53769_IG16+ jmp SHORT G_M53769_IG15 ;; size=10 bbWeight=0.50 PerfScore 2.00-G_M53769_IG14: ; bbWeight=0, gcVars=00008000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars +{V02 V15}+G_M53769_IG13: ; bbWeight=0, gcVars=00010000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V02 V16} cmp byte ptr [ebp-0x24], 0- je SHORT G_M53769_IG15+ je SHORT G_M53769_IG14 mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]- ; GC ptr vars -{V02 V15}+ ; GC ptr vars -{V02 V16} call <unknown method>
; gcrRegs -[ecx]
;; size=14 bbWeight=0 PerfScore 0.00-G_M53769_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref+G_M53769_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref pop eax
jmp eax
;; size=3 bbWeight=0 PerfScore 0.00-G_M53769_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc+G_M53769_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -182,9 +180,9 @@ G_M53769_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 233, prolog size 14, PerfScore 162.88, instruction count 84, allocated bytes for code 233 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)+; Total bytes of code 226, prolog size 14, PerfScore 147.88, instruction count 83, allocated bytes for code 226 (MethodHash=4a3e2df6) for method System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts) ; ============================================================
*************** EH table for System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo)
1 EH table entries, 1 total EH entries reported to VM-EH#0: try [G_M53769_IG03..G_M53769_IG12) handled by [G_M53769_IG14..G_M53769_IG16) (fault)+EH#0: try [G_M53769_IG03..G_M53769_IG11) handled by [G_M53769_IG13..G_M53769_IG15) (fault)
@@ -8,45 +8,46 @@
; 0 inlinees with PGO data; 7 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T11] ( 4, 3.50) ref -> [ebp-0x34] this class-hnd single-def <System.Net.Http.Headers.HttpHeaders>+; V00 this [V00,T12] ( 4, 3.50) ref -> [ebp-0x34] this class-hnd single-def <System.Net.Http.Headers.HttpHeaders> ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Net.Http.Headers.HeaderDescriptor>
; V02 arg2 [V02,T05] ( 8, 9.50) ref -> esi class-hnd single-def <System.Object>
; V03 loc0 [V03 ] ( 5, 3 ) ref -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>-; V04 loc1 [V04,T13] ( 6, 3 ) ref -> [ebp-0x38] class-hnd single-def <System.Object>
-; V05 loc2 [V05,T16] ( 4, 2 ) ubyte -> [ebp-0x28]
-; V06 loc3 [V06,T10] ( 5, 5.50) ref -> [ebp-0x3C] class-hnd spill-single-def <System.Collections.IEqualityComparer>+; V04 loc1 [V04,T14] ( 6, 3 ) ref -> [ebp-0x38] class-hnd single-def <System.Object>
+; V05 loc2 [V05,T17] ( 4, 2 ) ubyte -> [ebp-0x28]
+; V06 loc3 [V06,T11] ( 5, 5.50) ref -> [ebp-0x3C] class-hnd spill-single-def <System.Collections.IEqualityComparer> ; V07 loc4 [V07,T02] ( 10, 15.50) ref -> [ebp-0x40] class-hnd spill-single-def <<unknown class>>
;* V08 loc5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Object]>
;* V09 loc6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object>
;* V10 loc7 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 tmp0 [V11,T06] ( 3, 10 ) ref -> edx class-hnd "spilling QMark2" <<unknown class>>-;* V12 tmp1 [V12,T22] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V13 tmp2 [V13,T15] ( 4, 2 ) ref -> ecx class-hnd "Inline return value spill temp" <System.Net.Http.Headers.HttpHeaderParser>+;* V12 tmp1 [V12,T23] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V13 tmp2 [V13,T16] ( 4, 2 ) ref -> ecx class-hnd "Inline return value spill temp" <System.Net.Http.Headers.HttpHeaderParser> ;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref single-def "CASTCLASS eval op1"-; V15 tmp4 [V15,T09] ( 7, 5.50) ref -> ecx class-hnd "spilling QMark2" <System.Net.Http.Headers.KnownHeader>+; V15 tmp4 [V15,T10] ( 7, 5.50) ref -> ecx class-hnd "spilling QMark2" <System.Net.Http.Headers.KnownHeader> ;* V16 tmp5 [V16 ] ( 0, 0 ) ref -> zero-ref single-def-; V17 tmp6 [V17,T19] ( 3, 1.50) ubyte -> eax "Inline return value spill temp"+; V17 tmp6 [V17,T20] ( 3, 1.50) ubyte -> eax "Inline return value spill temp" ;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Object]>-; V19 tmp8 [V19,T08] ( 3, 6 ) ubyte -> eax "Inline return value spill temp"
-; V20 tmp9 [V20,T20] ( 3, 1.50) ubyte -> ebx "Inline return value spill temp"
-; V21 tmp10 [V21,T21] ( 3, 1.50) int -> eax "Inline stloc first use temp"+; V19 tmp8 [V19,T09] ( 3, 6 ) ubyte -> eax "Inline return value spill temp"
+; V20 tmp9 [V20,T21] ( 3, 1.50) ubyte -> ebx "Inline return value spill temp"
+; V21 tmp10 [V21,T22] ( 3, 1.50) int -> eax "Inline stloc first use temp" ;* V22 tmp11 [V22,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V23 tmp12 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>-;* V24 tmp13 [V24,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V25 tmp14 [V25,T14] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
-; V26 tmp15 [V26,T17] ( 3, 2 ) ref -> [ebp+0x08] single-def "field V01._descriptor (fldOffset=0x0)" P-INDEP
-;* V27 tmp16 [V27,T25] ( 0, 0 ) ref -> zero-ref single-def "field V08._list (fldOffset=0x0)" P-INDEP+;* V24 tmp13 [V24,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V25 tmp14 [V25,T15] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo>
+; V26 tmp15 [V26,T18] ( 3, 2 ) ref -> [ebp+0x08] single-def "field V01._descriptor (fldOffset=0x0)" P-INDEP
+;* V27 tmp16 [V27,T26] ( 0, 0 ) ref -> zero-ref single-def "field V08._list (fldOffset=0x0)" P-INDEP ; V28 tmp17 [V28,T03] ( 5, 10.50) ref -> registers "field V08._current (fldOffset=0x4)" P-INDEP
; V29 tmp18 [V29,T00] ( 6, 20.50) int -> [ebp-0x2C] "field V08._index (fldOffset=0x8)" P-INDEP-; V30 tmp19 [V30,T12] ( 2, 4.50) int -> [ebp-0x30] spill-single-def "field V08._version (fldOffset=0xc)" P-INDEP
-; V31 tmp20 [V31,T23] ( 2, 1 ) ref -> ecx single-def "field V18._list (fldOffset=0x0)" P-INDEP+; V30 tmp19 [V30,T13] ( 2, 4.50) int -> [ebp-0x30] spill-single-def "field V08._version (fldOffset=0xc)" P-INDEP
+; V31 tmp20 [V31,T24] ( 2, 1 ) ref -> ecx single-def "field V18._list (fldOffset=0x0)" P-INDEP ;* V32 tmp21 [V32 ] ( 0, 0 ) ref -> zero-ref single-def "field V18._current (fldOffset=0x4)" P-INDEP-;* V33 tmp22 [V33,T27] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
-; V34 tmp23 [V34,T24] ( 2, 1 ) int -> edx "field V18._version (fldOffset=0xc)" P-INDEP+;* V33 tmp22 [V33,T28] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP
+; V34 tmp23 [V34,T25] ( 2, 1 ) int -> edx "field V18._version (fldOffset=0xc)" P-INDEP ; V35 tmp24 [V35,T01] ( 3, 24 ) ref -> edi "arr expr"-; V36 tmp25 [V36,T18] ( 2, 2 ) ref -> ecx "argument with side effect"+; V36 tmp25 [V36,T19] ( 2, 2 ) ref -> ecx "argument with side effect" ; V37 EHSlots [V37 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V38 cse0 [V38,T04] ( 2, 8 ) int -> edi "CSE - moderate"+; V38 cse0 [V38,T08] ( 2, 8 ) int -> edi "CSE - moderate"
+; V39 cse1 [V39,T04] ( 2, 8 ) int -> edi "CSE - moderate" ;
; Lcl frame size = 52
@@ -106,9 +107,9 @@ G_M29806_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25-G_M29806_IG06: ; bbWeight=0.50, gcVars=00002000 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M29806_IG06: ; bbWeight=0.50, gcVars=00004000 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[ebx esi edi]- ; GC ptr vars +{V04 V13}+ ; GC ptr vars +{V04} xor eax, eax
mov dword ptr [ebp-0x28], eax
mov gword ptr [ebp+0x08], ebx
@@ -146,7 +147,6 @@ G_M29806_IG10: ; bbWeight=0.50, gcrefRegs=000000C2 {ecx esi edi}, byrefRe
mov edx, gword ptr [ebp-0x38]
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>- ; GC ptr vars -{V13} call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx]
mov gword ptr [ebp-0x40], eax
@@ -172,7 +172,7 @@ G_M29806_IG10: ; bbWeight=0.50, gcrefRegs=000000C2 {ecx esi edi}, byrefRe
;; size=61 bbWeight=0.50 PerfScore 12.75
G_M29806_IG11: ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ebx, dword ptr [ebp-0x28]- jmp G_M29806_IG28+ jmp G_M29806_IG27 ;; size=8 bbWeight=0.25 PerfScore 0.75
G_M29806_IG12: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[eax esi]
@@ -189,29 +189,31 @@ G_M29806_IG12: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe
G_M29806_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
test eax, eax
mov ebx, dword ptr [ebp-0x28]- je G_M29806_IG28+ je G_M29806_IG27 mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
xor edx, edx
; gcrRegs +[edx]
mov gword ptr [ecx+0x08], edx
mov ebx, 1- jmp G_M29806_IG28+ jmp G_M29806_IG27 ;; size=29 bbWeight=0.50 PerfScore 3.38-G_M29806_IG14: ; bbWeight=0.50, gcVars=00000404 {V06 V07}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M29806_IG14: ; bbWeight=0.50, gcVars=00000804 {V06 V07}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[ecx edx] +[eax ebx esi]- ; GC ptr vars +{V02 V06 V07}+ ; GC ptr vars +{V02 V06 V07 V11} mov ecx, eax
; gcrRegs +[ecx]
mov edx, dword ptr [ecx+0x0C]
xor ecx, ecx
; gcrRegs -[ecx]
mov dword ptr [ebp-0x30], edx- jmp SHORT G_M29806_IG22
- ;; size=12 bbWeight=0.50 PerfScore 2.75
-G_M29806_IG15: ; bbWeight=2, gcVars=00000C04 {V00 V06 V07}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+ mov gword ptr [ebp-0x34], edi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M29806_IG21
+ ;; size=15 bbWeight=0.50 PerfScore 3.25
+G_M29806_IG15: ; bbWeight=2, gcVars=00001804 {V00 V06 V07}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax]- ; GC ptr vars -{V02} +{V00 V11}+ ; GC ptr vars -{V02 V11} mov edx, edi
; gcrRegs +[edx]
test edx, edx
@@ -242,12 +244,10 @@ G_M29806_IG18: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
; gcrRegs +[eax]
mov ecx, dword ptr [ebp-0x2C]
mov edx, dword ptr [ebp-0x30]- mov edi, gword ptr [ebp-0x34]
- ; gcrRegs +[edi]
- jmp SHORT G_M29806_IG22
- ;; size=14 bbWeight=0.50 PerfScore 3.00+ jmp SHORT G_M29806_IG21
+ ;; size=11 bbWeight=0.50 PerfScore 2.50 G_M29806_IG19: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref- ; gcrRegs -[eax]+ ; gcrRegs -[eax] +[edi] mov ecx, esi
; gcrRegs +[ecx]
mov edx, edi
@@ -260,52 +260,42 @@ G_M29806_IG19: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
;; size=12 bbWeight=2 PerfScore 15.00
G_M29806_IG20: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax- jne SHORT G_M29806_IG24
- ;; size=4 bbWeight=2 PerfScore 2.50
-G_M29806_IG21: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edi] mov eax, gword ptr [ebp-0x40]
; gcrRegs +[eax]
mov ecx, dword ptr [ebp-0x2C]
mov edx, dword ptr [ebp-0x30]
mov ebx, gword ptr [ebp-0x3C]
; gcrRegs +[ebx]- mov edi, gword ptr [ebp-0x34]
- ; gcrRegs +[edi]
- ;; size=15 bbWeight=1 PerfScore 5.00
-G_M29806_IG22: ; bbWeight=4, gcVars=00000404 {V06 V07}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00 V11}
- cmp edx, dword ptr [eax+0x0C]
- jne G_M29806_IG32
- mov gword ptr [ebp-0x34], edi
- ; GC ptr vars +{V00}
- mov edi, dword ptr [eax+0x08]+ jne SHORT G_M29806_IG23
+ ;; size=16 bbWeight=2 PerfScore 10.50
+G_M29806_IG21: ; bbWeight=4, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edi]+ mov edi, dword ptr [eax+0x0C]
+ cmp edx, edi
+ jne G_M29806_IG31
+ mov edi, dword ptr [eax+0x08] cmp ecx, edi- jae SHORT G_M29806_IG23+ jae SHORT G_M29806_IG22 mov edi, gword ptr [eax+0x04]
; gcrRegs +[edi]
cmp ecx, dword ptr [edi+0x04]- jae G_M29806_IG31+ jae SHORT G_M29806_IG30 mov edi, gword ptr [edi+4*ecx+0x08]
inc ecx
mov dword ptr [ebp-0x2C], ecx
jmp SHORT G_M29806_IG15- ;; size=41 bbWeight=4 PerfScore 78.00
-G_M29806_IG23: ; bbWeight=2, gcVars=00000804 {V00 V07}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz+ ;; size=36 bbWeight=4 PerfScore 71.00
+G_M29806_IG22: ; bbWeight=2, gcVars=00001004 {V00 V07}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[ebx esi edi]
; GC ptr vars -{V06}
mov ebx, dword ptr [ebp-0x28]
mov edi, gword ptr [ebp-0x34]
; gcrRegs +[edi]- jmp SHORT G_M29806_IG27+ jmp SHORT G_M29806_IG26 ;; size=8 bbWeight=2 PerfScore 8.00-G_M29806_IG24: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]+G_M29806_IG23: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz mov esi, edi
; gcrRegs +[esi]- mov eax, gword ptr [ebp-0x40]
- ; gcrRegs +[eax] mov edi, gword ptr [ebp-0x34]
mov ecx, gword ptr [eax+0x04]
; gcrRegs +[ecx]
@@ -318,39 +308,39 @@ G_M29806_IG24: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[eax ecx edx esi]
test eax, eax- jl SHORT G_M29806_IG25+ jl SHORT G_M29806_IG24 mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx]
mov edx, eax
call [System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this]
; gcrRegs -[ecx]
mov ebx, 1- jmp SHORT G_M29806_IG26
- ;; size=51 bbWeight=0.50 PerfScore 9.62
-G_M29806_IG25: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref+ jmp SHORT G_M29806_IG25
+ ;; size=48 bbWeight=0.50 PerfScore 9.12
+G_M29806_IG24: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref xor ebx, ebx
;; size=2 bbWeight=0.50 PerfScore 0.12-G_M29806_IG26: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref+G_M29806_IG25: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref mov eax, gword ptr [ebp-0x40]
; gcrRegs +[eax]
;; size=3 bbWeight=0.50 PerfScore 0.50-G_M29806_IG27: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz+G_M29806_IG26: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [eax+0x08], 0- jne SHORT G_M29806_IG28+ jne SHORT G_M29806_IG27 mov ecx, gword ptr [ebp-0x24]
...
@@ -8,29 +8,30 @@
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;-; V00 arg0 [V00,T11] ( 5, 5 ) ref -> edi class-hnd single-def <System.Management.Automation.PSModuleInfo>
-; V01 arg1 [V01,T00] ( 11, 32 ) ref -> esi class-hnd single-def <System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]>+; V00 arg0 [V00,T12] ( 5, 5 ) ref -> edi class-hnd single-def <System.Management.Automation.PSModuleInfo>
+; V01 arg1 [V01,T00] ( 10, 28 ) ref -> esi class-hnd single-def <System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.PSModuleInfo]>
;* V03 tmp0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.PSModuleInfo]>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>-;* V06 tmp3 [V06,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"+;* V06 tmp3 [V06,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]>-; V08 tmp5 [V08,T07] ( 3, 8.50) ref -> edx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V09 tmp6 [V09,T05] ( 4, 9 ) int -> eax single-def "Inline stloc first use temp"
-;* V10 tmp7 [V10,T14] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP
-; V11 tmp8 [V11,T04] ( 2, 6 ) ref -> edx "field V02._current (fldOffset=0x4)" P-INDEP+; V08 tmp5 [V08,T08] ( 3, 8.50) ref -> ecx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V09 tmp6 [V09,T06] ( 4, 9 ) int -> edx single-def "Inline stloc first use temp"
+;* V10 tmp7 [V10,T15] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T05] ( 2, 6 ) ref -> edx "field V02._current (fldOffset=0x4)" P-INDEP ; V12 tmp9 [V12,T01] ( 6, 21 ) int -> [ebp-0x24] "field V02._index (fldOffset=0x8)" P-INDEP-; V13 tmp10 [V13,T06] ( 2, 9 ) int -> ebx single-def "field V02._version (fldOffset=0xc)" P-INDEP
-; V14 tmp11 [V14,T12] ( 2, 2 ) ref -> ecx single-def "field V04._list (fldOffset=0x0)" P-INDEP+; V13 tmp10 [V13,T07] ( 2, 9 ) int -> ebx single-def "field V02._version (fldOffset=0xc)" P-INDEP
+; V14 tmp11 [V14,T13] ( 2, 2 ) ref -> ecx single-def "field V04._list (fldOffset=0x0)" P-INDEP ;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._current (fldOffset=0x4)" P-INDEP-;* V16 tmp13 [V16,T15] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x8)" P-INDEP
-; V17 tmp14 [V17,T13] ( 2, 2 ) int -> ebx single-def "field V04._version (fldOffset=0xc)" P-INDEP+;* V16 tmp13 [V16,T16] ( 0, 0 ) int -> zero-ref single-def "field V04._index (fldOffset=0x8)" P-INDEP
+; V17 tmp14 [V17,T14] ( 2, 2 ) int -> ebx single-def "field V04._version (fldOffset=0xc)" P-INDEP ; V18 tmp15 [V18,T02] ( 3, 24 ) ref -> edx "arr expr"-; V19 tmp16 [V19,T08] ( 2, 8 ) ref -> edx "argument with side effect"
-; V20 tmp17 [V20,T09] ( 2, 8 ) ref -> eax "argument with side effect"+; V19 tmp16 [V19,T09] ( 2, 8 ) ref -> edx "argument with side effect"
+; V20 tmp17 [V20,T10] ( 2, 8 ) ref -> eax "argument with side effect" ; V21 EHSlots [V21 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"-; V22 cse0 [V22,T03] ( 3, 12 ) int -> eax "CSE - moderate"+; V22 cse0 [V22,T04] ( 3, 12 ) int -> edx "CSE - moderate"
+; V23 cse1 [V23,T03] ( 3, 20 ) int -> eax "CSE - aggressive" ;
; Lcl frame size = 24
@@ -76,12 +77,13 @@ G_M24725_IG03: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=
jne SHORT G_M24725_IG09
;; size=27 bbWeight=2 PerfScore 27.50
G_M24725_IG04: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [esi+0x0C]+ mov eax, dword ptr [esi+0x0C]
+ cmp ebx, eax jne SHORT G_M24725_IG11- ;; size=5 bbWeight=8 PerfScore 32.00+ ;; size=7 bbWeight=8 PerfScore 26.00 G_M24725_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- mov eax, dword ptr [esi+0x08]
- cmp ecx, eax+ mov edx, dword ptr [esi+0x08]
+ cmp ecx, edx jae SHORT G_M24725_IG06
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
@@ -94,20 +96,20 @@ G_M24725_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
;; size=25 bbWeight=4 PerfScore 58.00
G_M24725_IG06: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]- inc dword ptr [esi+0x0C]
- mov edx, gword ptr [esi+0x04]
- ; gcrRegs +[edx]
- cmp dword ptr [edx+0x04], eax+ inc eax
+ mov dword ptr [esi+0x0C], eax
+ mov ecx, gword ptr [esi+0x04]
+ ; gcrRegs +[ecx]
+ cmp dword ptr [ecx+0x04], edx jbe SHORT G_M24725_IG08- ;; size=11 bbWeight=4 PerfScore 36.00
-G_M24725_IG07: ; bbWeight=0.50, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- lea ecx, [eax+0x01]
- mov dword ptr [esi+0x08], ecx
- lea edx, bword ptr [edx+4*eax+0x08]
- ; gcrRegs -[edx]+ ;; size=12 bbWeight=4 PerfScore 29.00
+G_M24725_IG07: ; bbWeight=0.50, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ lea eax, [edx+0x01]
+ mov dword ptr [esi+0x08], eax
+ lea edx, bword ptr [ecx+4*edx+0x08] ; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EDI- ; gcrRegs -[esi edi]+ ; gcrRegs -[ecx esi edi] ; byrRegs -[edx]
jmp SHORT G_M24725_IG09
;; size=17 bbWeight=0.50 PerfScore 2.75
@@ -136,6 +138,6 @@ G_M24725_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 151, prolog size 23, PerfScore 175.25, instruction count 60, allocated bytes for code 151 (MethodHash=b52a9f6a) for method System.Management.Automation.PSModuleInfo:AddModuleToList(System.Management.Automation.PSModuleInfo,System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]) (FullOpts)+; Total bytes of code 154, prolog size 23, PerfScore 162.25, instruction count 62, allocated bytes for code 154 (MethodHash=b52a9f6a) for method System.Management.Automation.PSModuleInfo:AddModuleToList(System.Management.Automation.PSModuleInfo,System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]) (FullOpts) ; ============================================================
@@ -8,57 +8,57 @@
; 0 inlinees with PGO data; 27 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T17] ( 5, 4 ) ref -> edi this class-hnd single-def <System.Management.Automation.SessionStateInternal>+; V00 this [V00,T19] ( 5, 4 ) ref -> edi this class-hnd single-def <System.Management.Automation.SessionStateInternal> ; V01 arg1 [V01,T06] ( 10, 10 ) ref -> esi class-hnd single-def <System.Management.Automation.PSSnapinQualifiedName>
; V02 loc0 [V02,T05] ( 8, 17 ) ref -> ebx class-hnd exact single-def <System.Collections.ObjectModel.Collection`1[System.Management.Automation.ProviderInfo]>-; V03 loc1 [V03,T29] ( 4, 2 ) ref -> edi ld-addr-op class-hnd <System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]>+; V03 loc1 [V03,T31] ( 4, 2 ) ref -> edi ld-addr-op class-hnd <System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]> ;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.ProviderInfo]>
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Management.Automation.ProviderInfo>-; V06 loc4 [V06,T24] ( 2, 4 ) ref -> [ebp-0x2C] class-hnd spill-single-def <System.Management.Automation.ProviderInfo>
-; V07 tmp0 [V07,T18] ( 3, 6 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.Collection`1[System.Management.Automation.ProviderInfo]>
-; V08 tmp1 [V08,T19] ( 3, 6 ) ref -> eax class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]]>+; V06 loc4 [V06,T26] ( 2, 4 ) ref -> [ebp-0x2C] class-hnd spill-single-def <System.Management.Automation.ProviderInfo>
+; V07 tmp0 [V07,T20] ( 3, 6 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.Collection`1[System.Management.Automation.ProviderInfo]>
+; V08 tmp1 [V08,T21] ( 3, 6 ) ref -> eax class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]]> ;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>-; V12 tmp5 [V12,T28] ( 3, 3 ) ref -> eax class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]]>
-; V13 tmp6 [V13,T44] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String>
-; V14 tmp7 [V14,T45] ( 2, 0 ) ref -> edi class-hnd exact single-def "impAppendStmt" <System.String>
-; V15 tmp8 [V15,T42] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V16 tmp9 [V16,T46] ( 2, 0 ) ref -> esi class-hnd exact single-def "impAppendStmt" <System.String>
-; V17 tmp10 [V17,T43] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp11 [V18,T20] ( 3, 6 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]>
-;* V19 tmp12 [V19,T35] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp13 [V20,T25] ( 2, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.String>
-; V21 tmp14 [V21,T30] ( 3, 2.50) byref -> eax single-def "Inline stloc first use temp"
-;* V22 tmp15 [V22,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V23 tmp16 [V23,T31] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.String>
-; V24 tmp17 [V24,T32] ( 3, 1.50) byref -> eax single-def "Inline stloc first use temp"
-;* V25 tmp18 [V25,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V26 tmp19 [V26,T23] ( 3, 5 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.String>+; V12 tmp5 [V12,T30] ( 3, 3 ) ref -> eax class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]]>
+; V13 tmp6 [V13,T46] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String>
+; V14 tmp7 [V14,T47] ( 2, 0 ) ref -> edi class-hnd exact single-def "impAppendStmt" <System.String>
+; V15 tmp8 [V15,T44] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V16 tmp9 [V16,T48] ( 2, 0 ) ref -> esi class-hnd exact single-def "impAppendStmt" <System.String>
+; V17 tmp10 [V17,T45] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp11 [V18,T22] ( 3, 6 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]>
+;* V19 tmp12 [V19,T37] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V20 tmp13 [V20,T27] ( 2, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.String>
+; V21 tmp14 [V21,T32] ( 3, 2.50) byref -> eax single-def "Inline stloc first use temp"
+;* V22 tmp15 [V22,T40] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V23 tmp16 [V23,T33] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.String>
+; V24 tmp17 [V24,T34] ( 3, 1.50) byref -> eax single-def "Inline stloc first use temp"
+;* V25 tmp18 [V25,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V26 tmp19 [V26,T25] ( 3, 5 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.String> ;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]>
;* V28 tmp21 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.ProviderInfo]>-; V29 tmp22 [V29,T21] ( 3, 6 ) ref -> [ebp-0x30] class-hnd "Inline stloc first use temp" <System.String>+; V29 tmp22 [V29,T23] ( 3, 6 ) ref -> [ebp-0x30] class-hnd "Inline stloc first use temp" <System.String> ;* V30 tmp23 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Management.Automation.PSSnapInInfo>-; V31 tmp24 [V31,T26] ( 2, 4 ) int -> edx "Inline stloc first use temp"+; V31 tmp24 [V31,T28] ( 2, 4 ) int -> edx "Inline stloc first use temp" ;* V32 tmp25 [V32,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]>
;* V34 tmp27 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]>
;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Management.Automation.ProviderInfo]>-; V36 tmp29 [V36,T27] ( 2, 4 ) int -> edx "Inline stloc first use temp"+; V36 tmp29 [V36,T29] ( 2, 4 ) int -> edx "Inline stloc first use temp" ;* V37 tmp30 [V37,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Management.Automation.ProviderInfo]>
; V39 tmp32 [V39,T01] ( 8, 25 ) ref -> edi "field V04._list (fldOffset=0x0)" P-INDEP
; V40 tmp33 [V40,T02] ( 6, 16 ) ref -> [ebp-0x34] "field V04._current (fldOffset=0x4)" P-INDEP
; V41 tmp34 [V41,T00] ( 12, 41 ) int -> [ebp-0x24] "field V04._index (fldOffset=0x8)" P-INDEP
; V42 tmp35 [V42,T09] ( 4, 9 ) int -> [ebp-0x28] "field V04._version (fldOffset=0xc)" P-INDEP-; V43 tmp36 [V43,T33] ( 3, 1.50) ref -> edi single-def "field V28._list (fldOffset=0x0)" P-INDEP+; V43 tmp36 [V43,T35] ( 3, 1.50) ref -> edi single-def "field V28._list (fldOffset=0x0)" P-INDEP ;* V44 tmp37 [V44 ] ( 0, 0 ) ref -> zero-ref single-def "field V28._current (fldOffset=0x4)" P-INDEP-;* V45 tmp38 [V45,T40] ( 0, 0 ) int -> zero-ref single-def "field V28._index (fldOffset=0x8)" P-INDEP
-; V46 tmp39 [V46,T36] ( 2, 1 ) int -> eax single-def "field V28._version (fldOffset=0xc)" P-INDEP
-; V47 tmp40 [V47,T34] ( 3, 1.50) ref -> edi single-def "field V35._list (fldOffset=0x0)" P-INDEP+;* V45 tmp38 [V45,T42] ( 0, 0 ) int -> zero-ref single-def "field V28._index (fldOffset=0x8)" P-INDEP
+; V46 tmp39 [V46,T38] ( 2, 1 ) int -> eax single-def "field V28._version (fldOffset=0xc)" P-INDEP
+; V47 tmp40 [V47,T36] ( 3, 1.50) ref -> edi single-def "field V35._list (fldOffset=0x0)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) ref -> zero-ref single-def "field V35._current (fldOffset=0x4)" P-INDEP-;* V49 tmp42 [V49,T41] ( 0, 0 ) int -> zero-ref single-def "field V35._index (fldOffset=0x8)" P-INDEP
-; V50 tmp43 [V50,T37] ( 2, 1 ) int -> eax single-def "field V35._version (fldOffset=0xc)" P-INDEP+;* V49 tmp42 [V49,T43] ( 0, 0 ) int -> zero-ref single-def "field V35._index (fldOffset=0x8)" P-INDEP
+; V50 tmp43 [V50,T39] ( 2, 1 ) int -> eax single-def "field V35._version (fldOffset=0xc)" P-INDEP ; V51 tmp44 [V51,T03] ( 3, 24 ) ref -> ecx "arr expr"
; V52 tmp45 [V52,T10] ( 2, 8 ) ref -> eax "argument with side effect"
; V53 tmp46 [V53,T11] ( 2, 8 ) ref -> ecx "argument with side effect"
@@ -66,11 +66,13 @@
; V55 tmp48 [V55,T13] ( 2, 8 ) ref -> ecx "argument with side effect"
; V56 tmp49 [V56,T04] ( 3, 24 ) ref -> ecx "arr expr"
; V57 tmp50 [V57,T14] ( 2, 8 ) ref -> ecx "argument with side effect"-; V58 tmp51 [V58,T47] ( 2, 0 ) ref -> ebx single-def "argument with side effect"+; V58 tmp51 [V58,T49] ( 2, 0 ) ref -> ebx single-def "argument with side effect" ; V59 EHSlots [V59 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"-; V60 cse0 [V60,T07] ( 2, 8 ) int -> ecx "CSE - moderate"
-; V61 cse1 [V61,T08] ( 2, 8 ) int -> ecx "CSE - moderate"
-; V62 cse2 [V62,T22] ( 3, 6 ) ref -> eax "CSE - conservative"+; V60 cse0 [V60,T17] ( 2, 8 ) int -> ecx "CSE - moderate"
+; V61 cse1 [V61,T07] ( 2, 8 ) int -> ecx "CSE - moderate"
+; V62 cse2 [V62,T18] ( 2, 8 ) int -> ecx "CSE - moderate"
+; V63 cse3 [V63,T08] ( 2, 8 ) int -> ecx "CSE - moderate"
+; V64 cse4 [V64,T24] ( 3, 6 ) ref -> eax "CSE - conservative" ;
; Lcl frame size = 40
@@ -182,7 +184,7 @@ G_M50722_IG07: ; bbWeight=2, gcrefRegs=000000CA {ecx ebx esi edi}, byrefR
mov eax, gword ptr [eax+0x04]
mov gword ptr [ebp-0x30], eax
;; size=21 bbWeight=2 PerfScore 17.00-G_M50722_IG08: ; bbWeight=2, gcVars=0000000000200004 {V29 V40}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz+G_M50722_IG08: ; bbWeight=2, gcVars=0000000000800004 {V29 V40}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax ecx]
mov eax, gword ptr [esi+0x08]
; gcrRegs +[eax]
@@ -231,22 +233,23 @@ G_M50722_IG09: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
mov eax, dword ptr [ebp-0x28]
mov edx, dword ptr [ebp-0x24]
;; size=46 bbWeight=2 PerfScore 39.00-G_M50722_IG10: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz+G_M50722_IG10: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, dword ptr [edi+0x0C] mov dword ptr [ebp-0x28], eax- cmp eax, dword ptr [edi+0x0C]+ cmp eax, ecx jne G_M50722_IG21
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx- jae SHORT G_M50722_IG15+ jae G_M50722_IG15 mov ecx, gword ptr [edi+0x04]
; gcrRegs +[ecx]
cmp edx, dword ptr [ecx+0x04]- jae SHORT G_M50722_IG17+ jae G_M50722_IG17 mov ecx, gword ptr [ecx+4*edx+0x08]
inc edx
mov dword ptr [ebp-0x24], edx
jmp G_M50722_IG07- ;; size=40 bbWeight=4 PerfScore 78.00+ ;; size=50 bbWeight=4 PerfScore 75.00 G_M50722_IG11: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
mov eax, dword ptr [ebp-0x28]
@@ -284,8 +287,9 @@ G_M50722_IG13: ; bbWeight=2, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=
mov eax, dword ptr [ebp-0x28]
;; size=46 bbWeight=2 PerfScore 39.00
G_M50722_IG14: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz+ mov ecx, dword ptr [edi+0x0C] mov dword ptr [ebp-0x28], eax- cmp eax, dword ptr [edi+0x0C]+ cmp eax, ecx jne G_M50722_IG21
mov ecx, dword ptr [edi+0x08]
cmp esi, ecx
@@ -299,7 +303,7 @@ G_M50722_IG14: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000
; gcrRegs +[edx]
inc esi
jmp SHORT G_M50722_IG13- ;; size=36 bbWeight=4 PerfScore 75.00+ ;; size=38 bbWeight=4 PerfScore 72.00 G_M50722_IG15: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx edx edi]
mov eax, ebx
@@ -388,6 +392,6 @@ G_M50722_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 600, prolog size 23, PerfScore 358.00, instruction count 185, allocated bytes for code 600 (MethodHash=b95339dd) for method System.Management.Automation.SessionStateInternal:GetProvider(System.Management.Automation.PSSnapinQualifiedName):System.Collections.ObjectModel.Collection`1[System.Management.Automation.ProviderInfo]:this (FullOpts)+; Total bytes of code 612, prolog size 23, PerfScore 352.00, instruction count 187, allocated bytes for code 612 (MethodHash=b95339dd) for method System.Management.Automation.SessionStateInternal:GetProvider(System.Management.Automation.PSSnapinQualifiedName):System.Collections.ObjectModel.Collection`1[System.Management.Automation.ProviderInfo]:this (FullOpts) ; ============================================================
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;-; V00 this [V00,T06] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
-; V01 arg1 [V01,T07] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>+; V00 this [V00,T07] ( 3, 4 ) ref -> esi this class-hnd single-def <System.Linq.Expressions.Compiler.LambdaCompiler>
+; V01 arg1 [V01,T08] ( 4, 3.50) ref -> edx class-hnd single-def <System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack>
;* V04 tmp0 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]>
@@ -18,14 +18,15 @@
; V07 tmp3 [V07,T02] ( 4, 12.50) ref -> edi single-def "field V02._list (fldOffset=0x0)" P-INDEP
; V08 tmp4 [V08,T03] ( 3, 8 ) ref -> eax "field V02._current (fldOffset=0x4)" P-INDEP
; V09 tmp5 [V09,T00] ( 6, 20.50) int -> [ebp-0x24] "field V02._index (fldOffset=0x8)" P-INDEP-; V10 tmp6 [V10,T08] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
-; V11 tmp7 [V11,T09] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP+; V10 tmp6 [V10,T09] ( 2, 4.50) int -> ebx "field V02._version (fldOffset=0xc)" P-INDEP
+; V11 tmp7 [V11,T10] ( 3, 1.50) ref -> edi single-def "field V04._list (fldOffset=0x0)" P-INDEP ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._current (fldOffset=0x4)" P-INDEP-;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T10] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP+;* V13 tmp9 [V13,T12] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
+; V14 tmp10 [V14,T11] ( 2, 1 ) int -> ebx "field V04._version (fldOffset=0xc)" P-INDEP ; V15 tmp11 [V15,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V16 EHSlots [V16 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"-; V17 cse0 [V17,T04] ( 2, 8 ) int -> ecx "CSE - aggressive"+; V17 cse0 [V17,T06] ( 2, 8 ) int -> ecx "CSE - aggressive"
+; V18 cse1 [V18,T04] ( 2, 8 ) int -> ecx "CSE - aggressive" ;
; Lcl frame size = 24
@@ -65,7 +66,8 @@ G_M37225_IG04: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
mov edx, dword ptr [ebp-0x24]
;; size=11 bbWeight=2 PerfScore 12.50
G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz- cmp ebx, dword ptr [edi+0x0C]+ mov ecx, dword ptr [edi+0x0C]
+ cmp ebx, ecx jne SHORT G_M37225_IG08
mov ecx, dword ptr [edi+0x08]
cmp edx, ecx
@@ -79,7 +81,7 @@ G_M37225_IG05: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
inc edx
mov dword ptr [ebp-0x24], edx
jmp SHORT G_M37225_IG04- ;; size=30 bbWeight=4 PerfScore 74.00+ ;; size=32 bbWeight=4 PerfScore 71.00 G_M37225_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax ecx esi edi]
lea esp, [ebp-0x0C]
@@ -97,6 +99,6 @@ G_M37225_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 14, PerfScore 110.00, instruction count 40, allocated bytes for code 90 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)+; Total bytes of code 92, prolog size 14, PerfScore 107.00, instruction count 41, allocated bytes for code 92 (MethodHash=abe96e96) for method System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts) ; ============================================================
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.windows.x86.checked.mch | 118 | 38 | 75 | 5 | -384 | +156 |
benchmarks.run_pgo.windows.x86.checked.mch | 86 | 30 | 52 | 4 | -226 | +116 |
benchmarks.run_tiered.windows.x86.checked.mch | 114 | 36 | 73 | 5 | -372 | +152 |
coreclr_tests.run.windows.x86.checked.mch | 125 | 53 | 66 | 6 | -461 | +667 |
libraries.crossgen2.windows.x86.checked.mch | 33 | 19 | 13 | 1 | -124 | +33 |
libraries.pmi.windows.x86.checked.mch | 257 | 154 | 93 | 10 | -1,545 | +424 |
libraries_tests.run.windows.x86.Release.mch | 38 | 24 | 12 | 2 | -206 | +134 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 311 | 195 | 103 | 13 | -1,853 | +1,174 |
realworld.run.windows.x86.checked.mch | 109 | 41 | 65 | 3 | -216 | +151 |
1,191 | 590 | 552 | 49 | -5,387 | +3,007 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.windows.x86.checked.mch | 38,797 | 6 | 38,791 | 96 (0.25%) | 98 (0.25%) |
benchmarks.run_pgo.windows.x86.checked.mch | 84,005 | 41,585 | 42,420 | 1,426 (1.67%) | 1,428 (1.67%) |
benchmarks.run_tiered.windows.x86.checked.mch | 73,543 | 45,417 | 28,126 | 84 (0.11%) | 86 (0.12%) |
coreclr_tests.run.windows.x86.checked.mch | 406,465 | 186,921 | 219,544 | 148 (0.04%) | 157 (0.04%) |
libraries.crossgen2.windows.x86.checked.mch | 272,991 | 15 | 272,976 | 32 (0.01%) | 34 (0.01%) |
libraries.pmi.windows.x86.checked.mch | 320,484 | 6 | 320,478 | 90 (0.03%) | 97 (0.03%) |
libraries_tests.run.windows.x86.Release.mch | 49,264 | 31,248 | 18,016 | 360 (0.73%) | 362 (0.73%) |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 341,672 | 22,425 | 319,247 | 2,388 (0.69%) | 2,396 (0.70%) |
realworld.run.windows.x86.checked.mch | 37,833 | 3 | 37,830 | 23 (0.06%) | 27 (0.07%) |
1,625,054 | 327,626 | 1,297,428 | 4,647 (0.29%) | 4,685 (0.29%) |
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: 11308587 (overridden on cmd)
Total bytes of diff: 11308359 (overridden on cmd)
Total bytes of delta: -228 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
4 : 25686.dasm (0.05 % of base)
4 : 1300.dasm (0.19 % of base)
4 : 26176.dasm (0.19 % of base)
3 : 20891.dasm (0.44 % of base)
3 : 5872.dasm (0.44 % of base)
2 : 28080.dasm (0.59 % of base)
2 : 7432.dasm (0.50 % of base)
2 : 8546.dasm (1.82 % of base)
2 : 8567.dasm (1.82 % of base)
2 : 30404.dasm (1.04 % of base)
2 : 34494.dasm (1.35 % of base)
2 : 7169.dasm (1.35 % of base)
2 : 8432.dasm (0.33 % of base)
2 : 8486.dasm (1.82 % of base)
2 : 17113.dasm (1.59 % of base)
2 : 17729.dasm (1.82 % of base)
2 : 17980.dasm (1.82 % of base)
2 : 18056.dasm (1.82 % of base)
2 : 18628.dasm (0.50 % of base)
2 : 23174.dasm (1.56 % of base)
Top file improvements (bytes):
-69 : 24602.dasm (-3.56 % of base)
-69 : 2586.dasm (-3.56 % of base)
-45 : 2536.dasm (-1.13 % of base)
-45 : 24560.dasm (-1.13 % of base)
-8 : 31597.dasm (-0.10 % of base)
-8 : 31360.dasm (-0.10 % of base)
-7 : 10788.dasm (-3.00 % of base)
-7 : 1301.dasm (-1.36 % of base)
-7 : 26177.dasm (-1.36 % of base)
-7 : 21268.dasm (-3.00 % of base)
-6 : 10495.dasm (-0.48 % of base)
-6 : 14971.dasm (-0.62 % of base)
-6 : 560.dasm (-0.62 % of base)
-6 : 19325.dasm (-0.48 % of base)
-6 : 20393.dasm (-0.55 % of base)
-6 : 5398.dasm (-0.55 % of base)
-5 : 6279.dasm (-1.43 % of base)
-5 : 14469.dasm (-0.68 % of base)
-5 : 23425.dasm (-0.39 % of base)
-5 : 880.dasm (-0.60 % of base)
61 total files with Code Size differences (25 improved, 36 regressed), 5 unchanged.
Top method regressions (bytes):
4 (0.05 % of base) : 25686.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
4 (0.19 % of base) : 1300.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
4 (0.19 % of base) : 26176.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
3 (0.44 % of base) : 20891.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
3 (0.44 % of base) : 5872.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
2 (1.02 % of base) : 24114.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
2 (1.02 % of base) : 23481.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
2 (1.35 % of base) : 34494.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharLinearScan[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (FullOpts)
2 (1.35 % of base) : 7169.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharLinearScan[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (FullOpts)
2 (0.39 % of base) : 6972.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteObjectWithNullsWithoutConditionalSerialization(System.Type,Sigil.Local,System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.Reflection.MemberInfo]]):this (FullOpts)
2 (1.04 % of base) : 30404.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
2 (0.59 % of base) : 28080.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (FullOpts)
2 (0.90 % of base) : 24352.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (FullOpts)
2 (0.90 % of base) : 23576.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (FullOpts)
2 (0.33 % of base) : 8432.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:CreateProperties(System.Type,int):System.Collections.Generic.IList`1[Newtonsoft.Json.Serialization.JsonProperty]:this (FullOpts)
2 (1.82 % of base) : 18056.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.82 % of base) : 8613.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.82 % of base) : 8567.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.82 % of base) : 17980.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.82 % of base) : 8546.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
Top method improvements (bytes):
-69 (-3.56 % of base) : 24602.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (FullOpts)
-69 (-3.56 % of base) : 2586.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (FullOpts)
-45 (-1.13 % of base) : 2536.dasm - ProtoBuf.Meta.MetaType:NormalizeProtoMember(System.Reflection.MemberInfo,int,ubyte,ubyte,System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap],int,ubyte,byref,System.Reflection.MemberInfo):ProtoBuf.ProtoMemberAttribute (FullOpts)
-45 (-1.13 % of base) : 24560.dasm - ProtoBuf.Meta.MetaType:NormalizeProtoMember(System.Reflection.MemberInfo,int,ubyte,ubyte,System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap],int,ubyte,byref,System.Reflection.MemberInfo):ProtoBuf.ProtoMemberAttribute (FullOpts)
-8 (-0.10 % of base) : 31597.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
-8 (-0.10 % of base) : 31360.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
-7 (-3.00 % of base) : 10788.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-7 (-3.00 % of base) : 21268.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-7 (-1.36 % of base) : 1301.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
-7 (-1.36 % of base) : 26177.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
-6 (-0.48 % of base) : 10495.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:SetIfMembersHaveConflict(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]):this (FullOpts)
-6 (-0.48 % of base) : 19325.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:SetIfMembersHaveConflict(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]):this (FullOpts)
-6 (-0.62 % of base) : 14971.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
-6 (-0.62 % of base) : 560.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
-6 (-0.55 % of base) : 20393.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
-6 (-0.55 % of base) : 5398.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
-5 (-0.68 % of base) : 14469.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-5 (-0.68 % of base) : 59.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-5 (-0.39 % of base) : 23425.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
-5 (-0.60 % of base) : 880.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (FullOpts)
Top method regressions (percentages):
2 (2.22 % of base) : 18031.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
2 (2.22 % of base) : 3607.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
2 (2.06 % of base) : 8271.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
2 (1.82 % of base) : 18056.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.82 % of base) : 8613.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.82 % of base) : 8567.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.82 % of base) : 17980.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.82 % of base) : 8546.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.82 % of base) : 17910.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.82 % of base) : 8486.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.82 % of base) : 17729.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (FullOpts)
2 (1.59 % of base) : 17113.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)
2 (1.59 % of base) : 7779.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (FullOpts)
2 (1.56 % of base) : 23174.dasm - System.Formats.Tar.TarReader:Dispose():this (FullOpts)
2 (1.35 % of base) : 34494.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharLinearScan[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (FullOpts)
2 (1.35 % of base) : 7169.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharLinearScan[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (FullOpts)
2 (1.04 % of base) : 30404.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
2 (1.02 % of base) : 24114.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
2 (1.02 % of base) : 23481.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
2 (0.90 % of base) : 24352.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (FullOpts)
Top method improvements (percentages):
-69 (-3.56 % of base) : 24602.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (FullOpts)
-69 (-3.56 % of base) : 2586.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (FullOpts)
-7 (-3.00 % of base) : 10788.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-7 (-3.00 % of base) : 21268.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-5 (-1.43 % of base) : 6279.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
-5 (-1.43 % of base) : 21538.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
-7 (-1.36 % of base) : 1301.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
-7 (-1.36 % of base) : 26177.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
-45 (-1.13 % of base) : 24560.dasm - ProtoBuf.Meta.MetaType:NormalizeProtoMember(System.Reflection.MemberInfo,int,ubyte,ubyte,System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap],int,ubyte,byref,System.Reflection.MemberInfo):ProtoBuf.ProtoMemberAttribute (FullOpts)
-45 (-1.13 % of base) : 2536.dasm - ProtoBuf.Meta.MetaType:NormalizeProtoMember(System.Reflection.MemberInfo,int,ubyte,ubyte,System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap],int,ubyte,byref,System.Reflection.MemberInfo):ProtoBuf.ProtoMemberAttribute (FullOpts)
-5 (-0.68 % of base) : 14469.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-5 (-0.68 % of base) : 59.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-6 (-0.62 % of base) : 14971.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
-6 (-0.62 % of base) : 560.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
-5 (-0.62 % of base) : 18125.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (FullOpts)
-5 (-0.60 % of base) : 880.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (FullOpts)
-6 (-0.55 % of base) : 20393.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
-6 (-0.55 % of base) : 5398.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
-3 (-0.53 % of base) : 1576.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
-3 (-0.53 % of base) : 20019.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
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: 33240977 (overridden on cmd)
Total bytes of diff: 33240867 (overridden on cmd)
Total bytes of delta: -110 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
5 : 3115.dasm (0.91 % of base)
5 : 61427.dasm (0.09 % of base)
4 : 48900.dasm (0.19 % of base)
4 : 9835.dasm (0.19 % of base)
3 : 79290.dasm (0.44 % of base)
3 : 14662.dasm (0.44 % of base)
2 : 12934.dasm (2.06 % of base)
2 : 27764.dasm (1.82 % of base)
2 : 36353.dasm (0.89 % of base)
2 : 50404.dasm (0.39 % of base)
2 : 52896.dasm (1.82 % of base)
2 : 58119.dasm (0.58 % of base)
2 : 78531.dasm (0.02 % of base)
2 : 27553.dasm (1.82 % of base)
2 : 27823.dasm (1.82 % of base)
2 : 3727.dasm (2.22 % of base)
2 : 44457.dasm (0.90 % of base)
2 : 52343.dasm (0.33 % of base)
2 : 62985.dasm (1.02 % of base)
2 : 6507.dasm (0.89 % of base)
Top file improvements (bytes):
-69 : 8386.dasm (-3.56 % of base)
-45 : 8304.dasm (-1.12 % of base)
-7 : 48901.dasm (-1.28 % of base)
-7 : 9839.dasm (-1.03 % of base)
-6 : 22266.dasm (-0.54 % of base)
-6 : 34780.dasm (-0.54 % of base)
-6 : 1607.dasm (-0.57 % of base)
-6 : 31176.dasm (-0.57 % of base)
-6 : 35743.dasm (-0.51 % of base)
-6 : 42814.dasm (-0.55 % of base)
-5 : 37628.dasm (-0.60 % of base)
-5 : 49152.dasm (-0.18 % of base)
-5 : 67344.dasm (-0.46 % of base)
-5 : 69665.dasm (-0.60 % of base)
-5 : 153.dasm (-0.64 % of base)
-5 : 29766.dasm (-0.64 % of base)
-4 : 19778.dasm (-0.25 % of base)
-4 : 33920.dasm (-0.25 % of base)
-3 : 23509.dasm (-0.53 % of base)
-3 : 8602.dasm (-0.15 % of base)
56 total files with Code Size differences (22 improved, 34 regressed), 4 unchanged.
Top method regressions (bytes):
5 (0.09 % of base) : 61427.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier0-FullOpts)
5 (0.91 % of base) : 3115.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (Tier0-FullOpts)
4 (0.19 % of base) : 48900.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
4 (0.19 % of base) : 9835.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
3 (0.44 % of base) : 79290.dasm - System.Threading.TimerQueue:TimerThread() (Tier0-FullOpts)
3 (0.44 % of base) : 14662.dasm - System.Threading.TimerQueue:TimerThread() (Tier0-FullOpts)
2 (1.02 % of base) : 62985.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
2 (0.39 % of base) : 50404.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteObjectWithNullsWithoutConditionalSerialization(System.Type,Sigil.Local,System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.Reflection.MemberInfo]]):this (Tier0-FullOpts)
2 (0.39 % of base) : 71164.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteObjectWithNullsWithoutConditionalSerialization(System.Type,Sigil.Local,System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.Reflection.MemberInfo]]):this (Tier0-FullOpts)
2 (0.58 % of base) : 58119.dasm - Microsoft.CodeAnalysis.PEModule:ExtractStringValuesFromAttributes(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.PEModule+AttributeInfo]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.String]:this (Tier0-FullOpts)
2 (0.33 % of base) : 61491.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier0-FullOpts)
2 (0.90 % of base) : 44457.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (Tier0-FullOpts)
2 (0.90 % of base) : 36493.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (Tier0-FullOpts)
2 (0.68 % of base) : 12592.dasm - Microsoft.Extensions.Logging.LoggerRuleSelector:Select(Microsoft.Extensions.Logging.LoggerFilterOptions,System.Type,System.String,byref,byref) (Tier0-FullOpts)
2 (0.33 % of base) : 52343.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:CreateProperties(System.Type,int):System.Collections.Generic.IList`1[Newtonsoft.Json.Serialization.JsonProperty]:this (Tier0-FullOpts)
2 (1.82 % of base) : 52896.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 27823.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 27764.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 52766.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 27662.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
Top method improvements (bytes):
-69 (-3.56 % of base) : 8386.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (Tier0-FullOpts)
-45 (-1.12 % of base) : 8304.dasm - ProtoBuf.Meta.MetaType:NormalizeProtoMember(System.Reflection.MemberInfo,int,ubyte,ubyte,System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap],int,ubyte,byref,System.Reflection.MemberInfo):ProtoBuf.ProtoMemberAttribute (Tier0-FullOpts)
-7 (-1.28 % of base) : 48901.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-7 (-1.03 % of base) : 9839.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-6 (-0.51 % of base) : 35743.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:SetIfMembersHaveConflict(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]):this (Tier0-FullOpts)
-6 (-0.55 % of base) : 42814.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:SetIfMembersHaveConflict(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]):this (Tier0-FullOpts)
-6 (-0.57 % of base) : 1607.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
-6 (-0.57 % of base) : 31176.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
-6 (-0.54 % of base) : 22266.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (Tier0-FullOpts)
-6 (-0.54 % of base) : 34780.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (Tier0-FullOpts)
-5 (-0.64 % of base) : 153.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-5 (-0.64 % of base) : 29766.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-5 (-0.46 % of base) : 67344.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
-5 (-0.18 % of base) : 49152.dasm - System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier0-FullOpts)
-5 (-0.60 % of base) : 37628.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
-5 (-0.60 % of base) : 69665.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
-4 (-0.25 % of base) : 19778.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Collections.Generic.IEnumerable`1[System.Diagnostics.ActivityLink],System.DateTimeOffset,ubyte,int):System.Diagnostics.Activity:this (Tier0-FullOpts)
-4 (-0.25 % of base) : 33920.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Collections.Generic.IEnumerable`1[System.Diagnostics.ActivityLink],System.DateTimeOffset,ubyte,int):System.Diagnostics.Activity:this (Tier0-FullOpts)
-3 (-0.15 % of base) : 8602.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (Tier0-FullOpts)
-3 (-0.53 % of base) : 23509.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
Top method regressions (percentages):
2 (2.22 % of base) : 3727.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts)
2 (2.22 % of base) : 52831.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts)
2 (2.06 % of base) : 12934.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (Tier0-FullOpts)
2 (1.82 % of base) : 52896.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 27823.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 27764.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 52766.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 27662.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 52706.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 27553.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 52458.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.59 % of base) : 13561.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier0-FullOpts)
2 (1.59 % of base) : 35960.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier0-FullOpts)
2 (1.02 % of base) : 62985.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
5 (0.91 % of base) : 3115.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (Tier0-FullOpts)
2 (0.90 % of base) : 44457.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (Tier0-FullOpts)
2 (0.90 % of base) : 36493.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (Tier0-FullOpts)
2 (0.89 % of base) : 36353.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:DetermineIsCompatibleWithCurrentOptions():this (Tier0-FullOpts)
2 (0.89 % of base) : 6507.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:DetermineIsCompatibleWithCurrentOptions():this (Tier0-FullOpts)
2 (0.81 % of base) : 35956.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetTypeInfo(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (Tier0-FullOpts)
Top method improvements (percentages):
-69 (-3.56 % of base) : 8386.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (Tier0-FullOpts)
-7 (-1.28 % of base) : 48901.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-45 (-1.12 % of base) : 8304.dasm - ProtoBuf.Meta.MetaType:NormalizeProtoMember(System.Reflection.MemberInfo,int,ubyte,ubyte,System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap],int,ubyte,byref,System.Reflection.MemberInfo):ProtoBuf.ProtoMemberAttribute (Tier0-FullOpts)
-7 (-1.03 % of base) : 9839.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-5 (-0.64 % of base) : 153.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-5 (-0.64 % of base) : 29766.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-5 (-0.60 % of base) : 37628.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
-5 (-0.60 % of base) : 69665.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
-6 (-0.57 % of base) : 1607.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
-6 (-0.57 % of base) : 31176.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
-6 (-0.55 % of base) : 42814.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:SetIfMembersHaveConflict(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]):this (Tier0-FullOpts)
-6 (-0.54 % of base) : 22266.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (Tier0-FullOpts)
-6 (-0.54 % of base) : 34780.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (Tier0-FullOpts)
-3 (-0.54 % of base) : 36715.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
-3 (-0.53 % of base) : 23509.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (Tier0-FullOpts)
-6 (-0.51 % of base) : 35743.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:SetIfMembersHaveConflict(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]):this (Tier0-FullOpts)
-5 (-0.46 % of base) : 67344.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
-2 (-0.37 % of base) : 68011.dasm - System.IO.BinaryReader:Read():int:this (Tier0-FullOpts)
-4 (-0.25 % of base) : 19778.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Collections.Generic.IEnumerable`1[System.Diagnostics.ActivityLink],System.DateTimeOffset,ubyte,int):System.Diagnostics.Activity:this (Tier0-FullOpts)
-4 (-0.25 % of base) : 33920.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Collections.Generic.IEnumerable`1[System.Diagnostics.ActivityLink],System.DateTimeOffset,ubyte,int):System.Diagnostics.Activity:this (Tier0-FullOpts)
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: 14131622 (overridden on cmd)
Total bytes of diff: 14131402 (overridden on cmd)
Total bytes of delta: -220 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
4 : 20392.dasm (0.19 % of base)
4 : 47737.dasm (0.05 % of base)
4 : 8734.dasm (0.19 % of base)
3 : 14723.dasm (0.44 % of base)
3 : 27377.dasm (0.44 % of base)
2 : 15048.dasm (0.67 % of base)
2 : 21208.dasm (0.07 % of base)
2 : 24247.dasm (1.82 % of base)
2 : 24519.dasm (2.22 % of base)
2 : 24564.dasm (1.82 % of base)
2 : 49400.dasm (1.82 % of base)
2 : 49442.dasm (1.82 % of base)
2 : 54908.dasm (0.16 % of base)
2 : 8232.dasm (1.35 % of base)
2 : 22692.dasm (2.06 % of base)
2 : 23704.dasm (0.33 % of base)
2 : 23858.dasm (1.82 % of base)
2 : 24380.dasm (1.82 % of base)
2 : 27440.dasm (0.12 % of base)
2 : 28171.dasm (1.59 % of base)
Top file improvements (bytes):
-69 : 16099.dasm (-3.56 % of base)
-69 : 36154.dasm (-3.56 % of base)
-45 : 16035.dasm (-1.13 % of base)
-45 : 36111.dasm (-1.13 % of base)
-8 : 56129.dasm (-0.10 % of base)
-7 : 20402.dasm (-1.36 % of base)
-7 : 52641.dasm (-2.83 % of base)
-7 : 37677.dasm (-2.83 % of base)
-7 : 8738.dasm (-1.36 % of base)
-6 : 11193.dasm (-0.55 % of base)
-6 : 1451.dasm (-0.62 % of base)
-6 : 26862.dasm (-0.55 % of base)
-6 : 35532.dasm (-0.53 % of base)
-6 : 18771.dasm (-0.62 % of base)
-6 : 49709.dasm (-0.53 % of base)
-5 : 33176.dasm (-1.30 % of base)
-5 : 34027.dasm (-0.60 % of base)
-5 : 8943.dasm (-0.60 % of base)
-5 : 133.dasm (-0.68 % of base)
-5 : 52281.dasm (-0.39 % of base)
59 total files with Code Size differences (24 improved, 35 regressed), 5 unchanged.
Top method regressions (bytes):
4 (0.05 % of base) : 47737.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
4 (0.19 % of base) : 20392.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
4 (0.19 % of base) : 8734.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
3 (0.44 % of base) : 14723.dasm - System.Threading.TimerQueue:TimerThread() (Tier0-FullOpts)
3 (0.44 % of base) : 27377.dasm - System.Threading.TimerQueue:TimerThread() (Tier0-FullOpts)
2 (1.02 % of base) : 46505.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
2 (1.02 % of base) : 64327.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
2 (1.35 % of base) : 8232.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharLinearScan[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0-FullOpts)
2 (1.35 % of base) : 41437.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharLinearScan[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0-FullOpts)
2 (1.04 % of base) : 62667.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (Tier0-FullOpts)
2 (0.90 % of base) : 46517.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (Tier0-FullOpts)
2 (0.90 % of base) : 51295.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (Tier0-FullOpts)
2 (0.33 % of base) : 23704.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:CreateProperties(System.Type,int):System.Collections.Generic.IList`1[Newtonsoft.Json.Serialization.JsonProperty]:this (Tier0-FullOpts)
2 (1.82 % of base) : 24564.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 49442.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 49400.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 24380.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 24247.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 49349.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 23858.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
Top method improvements (bytes):
-69 (-3.56 % of base) : 16099.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (Tier0-FullOpts)
-69 (-3.56 % of base) : 36154.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (Tier0-FullOpts)
-45 (-1.13 % of base) : 16035.dasm - ProtoBuf.Meta.MetaType:NormalizeProtoMember(System.Reflection.MemberInfo,int,ubyte,ubyte,System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap],int,ubyte,byref,System.Reflection.MemberInfo):ProtoBuf.ProtoMemberAttribute (Tier0-FullOpts)
-45 (-1.13 % of base) : 36111.dasm - ProtoBuf.Meta.MetaType:NormalizeProtoMember(System.Reflection.MemberInfo,int,ubyte,ubyte,System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap],int,ubyte,byref,System.Reflection.MemberInfo):ProtoBuf.ProtoMemberAttribute (Tier0-FullOpts)
-8 (-0.10 % of base) : 56129.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
-7 (-2.83 % of base) : 52641.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier0-FullOpts)
-7 (-2.83 % of base) : 37677.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier0-FullOpts)
-7 (-1.36 % of base) : 20402.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-7 (-1.36 % of base) : 8738.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-6 (-0.53 % of base) : 35532.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:SetIfMembersHaveConflict(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]):this (Tier0-FullOpts)
-6 (-0.53 % of base) : 49709.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:SetIfMembersHaveConflict(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]):this (Tier0-FullOpts)
-6 (-0.62 % of base) : 1451.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
-6 (-0.62 % of base) : 18771.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
-6 (-0.55 % of base) : 11193.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (Tier0-FullOpts)
-6 (-0.55 % of base) : 26862.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (Tier0-FullOpts)
-5 (-0.68 % of base) : 133.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-5 (-0.68 % of base) : 17497.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-5 (-0.39 % of base) : 52281.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (Tier0-FullOpts)
-5 (-0.60 % of base) : 34027.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
-5 (-0.60 % of base) : 8943.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
Top method regressions (percentages):
2 (2.22 % of base) : 24519.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts)
2 (2.22 % of base) : 16911.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (Tier0-FullOpts)
2 (2.06 % of base) : 22692.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (Tier0-FullOpts)
2 (1.82 % of base) : 24564.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 49442.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 49400.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 24380.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 24247.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 49349.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerialized(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 23858.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.82 % of base) : 49283.dasm - Newtonsoft.Json.Serialization.JsonContract:InvokeOnSerializing(System.Object,System.Runtime.Serialization.StreamingContext):this (Tier0-FullOpts)
2 (1.59 % of base) : 28171.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier0-FullOpts)
2 (1.59 % of base) : 48636.dasm - System.Text.Json.JsonSerializerOptions:GetConverterFromList(System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier0-FullOpts)
2 (1.56 % of base) : 45960.dasm - System.Formats.Tar.TarReader:Dispose():this (Tier0-FullOpts)
2 (1.35 % of base) : 8232.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharLinearScan[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0-FullOpts)
2 (1.35 % of base) : 41437.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharLinearScan[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0-FullOpts)
2 (1.04 % of base) : 62667.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (Tier0-FullOpts)
2 (1.02 % of base) : 46505.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
2 (1.02 % of base) : 64327.dasm - (dynamicClass):WriteArrayOfintToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
2 (0.90 % of base) : 46517.dasm - Microsoft.Extensions.Configuration.ConfigurationBuilder:Build():Microsoft.Extensions.Configuration.IConfigurationRoot:this (Tier0-FullOpts)
Top method improvements (percentages):
-69 (-3.56 % of base) : 16099.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (Tier0-FullOpts)
-69 (-3.56 % of base) : 36154.dasm - ProtoBuf.Meta.MetaType:ValidateReservations():this (Tier0-FullOpts)
-7 (-2.83 % of base) : 52641.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier0-FullOpts)
-7 (-2.83 % of base) : 37677.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (Tier0-FullOpts)
-7 (-1.36 % of base) : 20402.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-7 (-1.36 % of base) : 8738.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (Tier0-FullOpts)
-5 (-1.30 % of base) : 33176.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (Tier0-FullOpts)
-5 (-1.30 % of base) : 15615.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (Tier0-FullOpts)
-45 (-1.13 % of base) : 16035.dasm - ProtoBuf.Meta.MetaType:NormalizeProtoMember(System.Reflection.MemberInfo,int,ubyte,ubyte,System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap],int,ubyte,byref,System.Reflection.MemberInfo):ProtoBuf.ProtoMemberAttribute (Tier0-FullOpts)
-45 (-1.13 % of base) : 36111.dasm - ProtoBuf.Meta.MetaType:NormalizeProtoMember(System.Reflection.MemberInfo,int,ubyte,ubyte,System.Collections.Generic.List`1[ProtoBuf.Meta.AttributeMap],int,ubyte,byref,System.Reflection.MemberInfo):ProtoBuf.ProtoMemberAttribute (Tier0-FullOpts)
-5 (-0.68 % of base) : 133.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-5 (-0.68 % of base) : 17497.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier0-FullOpts)
-6 (-0.62 % of base) : 1451.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
-6 (-0.62 % of base) : 18771.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Tier0-FullOpts)
-5 (-0.60 % of base) : 34027.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
-5 (-0.60 % of base) : 8943.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
-6 (-0.55 % of base) : 11193.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (Tier0-FullOpts)
-6 (-0.55 % of base) : 26862.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (Tier0-FullOpts)
-6 (-0.53 % of base) : 35532.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:SetIfMembersHaveConflict(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]):this (Tier0-FullOpts)
-6 (-0.53 % of base) : 49709.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:SetIfMembersHaveConflict(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember]):this (Tier0-FullOpts)
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: 215366523 (overridden on cmd)
Total bytes of diff: 215366729 (overridden on cmd)
Total bytes of delta: 206 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
80 : 355556.dasm (2.41 % of base)
80 : 216078.dasm (2.41 % of base)
37 : 244385.dasm (2.22 % of base)
27 : 367841.dasm (2.41 % of base)
19 : 354728.dasm (1.43 % of base)
19 : 311355.dasm (1.43 % of base)
19 : 3819.dasm (1.43 % of base)
19 : 575.dasm (1.43 % of base)
16 : 306998.dasm (3.02 % of base)
13 : 319115.dasm (1.31 % of base)
13 : 371023.dasm (0.98 % of base)
13 : 402493.dasm (1.31 % of base)
13 : 405203.dasm (1.31 % of base)
13 : 355870.dasm (1.31 % of base)
13 : 357896.dasm (0.98 % of base)
13 : 376183.dasm (1.31 % of base)
13 : 377744.dasm (1.31 % of base)
13 : 405912.dasm (1.31 % of base)
13 : 360387.dasm (1.31 % of base)
13 : 347022.dasm (1.31 % of base)
Top file improvements (bytes):
-40 : 307978.dasm (-1.43 % of base)
-29 : 308123.dasm (-2.37 % of base)
-23 : 241263.dasm (-17.97 % of base)
-23 : 288662.dasm (-2.67 % of base)
-23 : 371794.dasm (-17.97 % of base)
-22 : 307929.dasm (-0.21 % of base)
-20 : 308787.dasm (-0.90 % of base)
-20 : 308559.dasm (-0.63 % of base)
-19 : 405537.dasm (-1.57 % of base)
-18 : 308376.dasm (-0.90 % of base)
-16 : 406525.dasm (-0.68 % of base)
-12 : 308535.dasm (-0.81 % of base)
-12 : 287191.dasm (-0.18 % of base)
-11 : 288398.dasm (-0.37 % of base)
-8 : 308702.dasm (-1.03 % of base)
-8 : 240308.dasm (-1.08 % of base)
-8 : 311275.dasm (-0.92 % of base)
-8 : 215987.dasm (-0.62 % of base)
-8 : 354872.dasm (-0.92 % of base)
-6 : 308651.dasm (-0.75 % of base)
65 total files with Code Size differences (31 improved, 34 regressed), 6 unchanged.
Top method regressions (bytes):
80 (2.41 % of base) : 216078.dasm - GetInterfaceMapWithStaticVirtualsAndConstraints.Program:TestEntryPoint() (FullOpts)
80 (2.41 % of base) : 355556.dasm - GetInterfaceMapWithStaticVirtualsAndConstraints.Program:TestEntryPoint() (Tier0-FullOpts)
37 (2.22 % of base) : 244385.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
27 (2.41 % of base) : 367841.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
19 (1.43 % of base) : 3819.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (FullOpts)
19 (1.43 % of base) : 575.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (FullOpts)
19 (1.43 % of base) : 354728.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (Tier0-FullOpts)
19 (1.43 % of base) : 311355.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (Tier0-FullOpts)
16 (3.02 % of base) : 306998.dasm - Program:ManipulateListOfInt():ubyte (FullOpts)
13 (1.31 % of base) : 319115.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (0.98 % of base) : 371023.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 402493.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 405203.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 355870.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (0.98 % of base) : 357896.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 376183.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 377744.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 405912.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 360387.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 347022.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
Top method improvements (bytes):
-40 (-1.43 % of base) : 307978.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:PerformDepthFirstPass(Microsoft.Build.Construction.ProjectRootElement):this (FullOpts)
-29 (-2.37 % of base) : 308123.dasm - Microsoft.Build.Execution.ProjectInstance:CreateItemsSnapshot(System.Collections.Generic.ICollection`1[Microsoft.Build.Evaluation.ProjectItem],int,ubyte):System.Collections.Generic.Dictionary`2[Microsoft.Build.Evaluation.ProjectItem,Microsoft.Build.Execution.ProjectItemInstance]:this (FullOpts)
-23 (-2.67 % of base) : 288662.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
-23 (-17.97 % of base) : 241263.dasm - Program:M49() (FullOpts)
-23 (-17.97 % of base) : 371794.dasm - Program:M49() (Tier0-FullOpts)
-22 (-0.21 % of base) : 307929.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Evaluate():this (FullOpts)
-20 (-0.63 % of base) : 308559.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)
-20 (-0.90 % of base) : 308787.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
-19 (-1.57 % of base) : 405537.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)
-18 (-0.90 % of base) : 308376.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
-16 (-0.68 % of base) : 406525.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
-12 (-0.18 % of base) : 287191.dasm - ILCompiler.Program:RunSingleCompilation(System.Collections.Generic.Dictionary`2[System.String,System.String],ILCompiler.InstructionSetSupport,System.String,System.Collections.Generic.Dictionary`2[System.String,System.String],System.Collections.Generic.HashSet`1[Internal.TypeSystem.ModuleDesc],ILCompiler.ReadyToRunCompilerContext,ILCompiler.Logger):this (FullOpts)
-12 (-0.81 % of base) : 308535.dasm - Microsoft.Build.BackEnd.TargetBuilder+<PushTargets>d__26:MoveNext():this (FullOpts)
-11 (-0.37 % of base) : 288398.dasm - ILCompiler.DependencyAnalysis.ReadyToRunObjectWriter:EmitPortableExecutable():this (FullOpts)
-8 (-1.03 % of base) : 308702.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
-8 (-0.62 % of base) : 215987.dasm - StackFrame:Validate(System.String,StackFrame[]) (FullOpts)
-8 (-1.08 % of base) : 240308.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-8 (-0.92 % of base) : 311275.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
-8 (-0.92 % of base) : 354872.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
-6 (-0.75 % of base) : 308651.dasm - Microsoft.Build.BackEnd.SchedulingPlan:WritePlan(int,Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext):this (FullOpts)
Top method regressions (percentages):
16 (3.02 % of base) : 306998.dasm - Program:ManipulateListOfInt():ubyte (FullOpts)
27 (2.41 % of base) : 367841.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Tier1)
80 (2.41 % of base) : 216078.dasm - GetInterfaceMapWithStaticVirtualsAndConstraints.Program:TestEntryPoint() (FullOpts)
80 (2.41 % of base) : 355556.dasm - GetInterfaceMapWithStaticVirtualsAndConstraints.Program:TestEntryPoint() (Tier0-FullOpts)
37 (2.22 % of base) : 244385.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
19 (1.43 % of base) : 3819.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (FullOpts)
19 (1.43 % of base) : 575.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (FullOpts)
19 (1.43 % of base) : 311355.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (Tier0-FullOpts)
19 (1.43 % of base) : 354728.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (Tier0-FullOpts)
13 (1.31 % of base) : 319115.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 402493.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 405203.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 355870.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 376183.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 377744.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 405912.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 360387.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 347022.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 359116.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
13 (1.31 % of base) : 359940.dasm - System.IO.BinaryReader:ReadString():System.String:this (Instrumented Tier1)
Top method improvements (percentages):
-23 (-17.97 % of base) : 241263.dasm - Program:M49() (FullOpts)
-23 (-17.97 % of base) : 371794.dasm - Program:M49() (Tier0-FullOpts)
-23 (-2.67 % of base) : 288662.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
-29 (-2.37 % of base) : 308123.dasm - Microsoft.Build.Execution.ProjectInstance:CreateItemsSnapshot(System.Collections.Generic.ICollection`1[Microsoft.Build.Evaluation.ProjectItem],int,ubyte):System.Collections.Generic.Dictionary`2[Microsoft.Build.Evaluation.ProjectItem,Microsoft.Build.Execution.ProjectItemInstance]:this (FullOpts)
-19 (-1.57 % of base) : 405537.dasm - System.Text.RegularExpressions.RegexNode:<ReduceAlternation>g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (Tier0-FullOpts)
-40 (-1.43 % of base) : 307978.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:PerformDepthFirstPass(Microsoft.Build.Construction.ProjectRootElement):this (FullOpts)
-8 (-1.08 % of base) : 240308.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-8 (-1.03 % of base) : 308702.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:ShutdownComponent():this (FullOpts)
-3 (-1.01 % of base) : 238200.dasm - Mutate:TestEntryPoint():int (FullOpts)
-4 (-0.99 % of base) : 170236.dasm - System.Runtime.InteropServices.ComEventsSink:FromRuntimeCallableWrapper(System.Object,System.Guid,ubyte):System.Runtime.InteropServices.ComEventsSink (FullOpts)
-8 (-0.92 % of base) : 311275.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
-8 (-0.92 % of base) : 354872.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
-20 (-0.90 % of base) : 308787.dasm - R2RTest.Buckets:WriteToStream(System.IO.StreamWriter,ubyte):this (FullOpts)
-18 (-0.90 % of base) : 308376.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
-12 (-0.81 % of base) : 308535.dasm - Microsoft.Build.BackEnd.TargetBuilder+<PushTargets>d__26:MoveNext():this (FullOpts)
-6 (-0.75 % of base) : 308651.dasm - Microsoft.Build.BackEnd.SchedulingPlan:WritePlan(int,Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext):this (FullOpts)
-16 (-0.68 % of base) : 406525.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (Instrumented Tier1)
-5 (-0.68 % of base) : 243589.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-5 (-0.68 % of base) : 288740.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-5 (-0.68 % of base) : 308275.dasm - Microsoft.Build.BackEnd.Scheduler:DumpConfigurations():this (FullOpts)
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: 36012344 (overridden on cmd)
Total bytes of diff: 36012253 (overridden on cmd)
Total bytes of delta: -91 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
8 : 22498.dasm (0.15 % of base)
4 : 16821.dasm (0.22 % of base)
3 : 23434.dasm (0.43 % of base)
2 : 20871.dasm (0.41 % of base)
2 : 22492.dasm (0.42 % of base)
2 : 22979.dasm (0.30 % of base)
2 : 112854.dasm (0.02 % of base)
2 : 16827.dasm (0.44 % of base)
2 : 21006.dasm (0.11 % of base)
2 : 23076.dasm (2.04 % of base)
2 : 6676.dasm (0.17 % of base)
1 : 17650.dasm (0.19 % of base)
1 : 20793.dasm (0.21 % of base)
Top file improvements (bytes):
-13 : 23518.dasm (-1.62 % of base)
-11 : 12390.dasm (-2.46 % of base)
-11 : 72634.dasm (-0.89 % of base)
-9 : 230068.dasm (-1.77 % of base)
-9 : 231222.dasm (-0.19 % of base)
-9 : 231291.dasm (-0.20 % of base)
-7 : 206338.dasm (-0.53 % of base)
-7 : 251755.dasm (-0.89 % of base)
-6 : 22297.dasm (-1.00 % of base)
-6 : 230073.dasm (-1.05 % of base)
-5 : 17652.dasm (-0.69 % of base)
-5 : 22364.dasm (-1.19 % of base)
-4 : 16966.dasm (-0.40 % of base)
-4 : 113490.dasm (-0.12 % of base)
-4 : 260275.dasm (-0.32 % of base)
-4 : 262891.dasm (-0.32 % of base)
-4 : 202288.dasm (-0.81 % of base)
-4 : 23517.dasm (-1.61 % of base)
-2 : 22885.dasm (-0.75 % of base)
32 total files with Code Size differences (19 improved, 13 regressed), 1 unchanged.
Top method regressions (bytes):
8 (0.15 % of base) : 22498.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
4 (0.22 % of base) : 16821.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
3 (0.43 % of base) : 23434.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
2 (0.42 % of base) : 22492.dasm - System.Diagnostics.Tracing.EventSource:EnsureDescriptorsInitialized():this (FullOpts)
2 (2.04 % of base) : 23076.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
2 (0.11 % of base) : 21006.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
2 (0.41 % of base) : 20871.dasm - System.Runtime.InteropServices.PosixSignalRegistration:HandlerRoutine(int):int (FullOpts)
2 (0.44 % of base) : 16827.dasm - System.Threading.Tasks.Task:GetDelegatesFromContinuationObject(System.Object):System.Delegate[] (FullOpts)
2 (0.17 % of base) : 6676.dasm - System.Threading.Tasks.Task+WhenAllPromise:Invoke(System.Threading.Tasks.Task):this (FullOpts)
2 (0.30 % of base) : 22979.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
2 (0.02 % of base) : 112854.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
1 (0.19 % of base) : 17650.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
1 (0.21 % of base) : 20793.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
Top method improvements (bytes):
-13 (-1.62 % of base) : 23518.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
-11 (-0.89 % of base) : 72634.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:ResolveConversion(System.Type,System.Type,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],ubyte,byref):System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method] (FullOpts)
-11 (-2.46 % of base) : 12390.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
-9 (-0.19 % of base) : 231222.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
-9 (-0.20 % of base) : 231291.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
-9 (-1.77 % of base) : 230068.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-7 (-0.53 % of base) : 206338.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
-7 (-0.89 % of base) : 251755.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
-6 (-1.00 % of base) : 22297.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
-6 (-1.05 % of base) : 230073.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-5 (-0.69 % of base) : 17652.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-5 (-1.19 % of base) : 22364.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
-4 (-0.32 % of base) : 260275.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
-4 (-0.32 % of base) : 262891.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
-4 (-1.61 % of base) : 23517.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
-4 (-0.81 % of base) : 202288.dasm - System.Speech.Internal.Synthesis.SsmlParser:ParseAudio(System.Xml.XmlReader,System.Speech.Internal.Synthesis.ISsmlParser,int,System.Speech.Internal.Synthesis.SsmlParser+SsmlAttributes,ubyte) (FullOpts)
-4 (-0.40 % of base) : 16966.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
-4 (-0.12 % of base) : 113490.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
-2 (-0.75 % of base) : 22885.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)
Top method regressions (percentages):
2 (2.04 % of base) : 23076.dasm - System.Diagnostics.Tracing.TraceLoggingMetadataCollector+Impl:Encode(ubyte[]):int:this (FullOpts)
2 (0.44 % of base) : 16827.dasm - System.Threading.Tasks.Task:GetDelegatesFromContinuationObject(System.Object):System.Delegate[] (FullOpts)
3 (0.43 % of base) : 23434.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
2 (0.42 % of base) : 22492.dasm - System.Diagnostics.Tracing.EventSource:EnsureDescriptorsInitialized():this (FullOpts)
2 (0.41 % of base) : 20871.dasm - System.Runtime.InteropServices.PosixSignalRegistration:HandlerRoutine(int):int (FullOpts)
2 (0.30 % of base) : 22979.dasm - System.Threading.Tasks.TaskExceptionHolder:AddFaultException(System.Object):this (FullOpts)
4 (0.22 % of base) : 16821.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
1 (0.21 % of base) : 20793.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
1 (0.19 % of base) : 17650.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
2 (0.17 % of base) : 6676.dasm - System.Threading.Tasks.Task+WhenAllPromise:Invoke(System.Threading.Tasks.Task):this (FullOpts)
8 (0.15 % of base) : 22498.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
2 (0.11 % of base) : 21006.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
2 (0.02 % of base) : 112854.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
Top method improvements (percentages):
-11 (-2.46 % of base) : 12390.dasm - System.Diagnostics.Tracing.EventSource:GetSources():System.Collections.Generic.IEnumerable`1[System.Diagnostics.Tracing.EventSource] (FullOpts)
-9 (-1.77 % of base) : 230068.dasm - System.Xml.Linq.Extensions+<GetDescendantNodes>d__22`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-13 (-1.62 % of base) : 23518.dasm - System.Diagnostics.Tracing.CounterGroup:PollForValues() (FullOpts)
-4 (-1.61 % of base) : 23517.dasm - System.Diagnostics.Tracing.CounterGroup:ResetCounters():this (FullOpts)
-5 (-1.19 % of base) : 22364.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
-6 (-1.05 % of base) : 230073.dasm - System.Xml.Linq.Extensions+<GetDescendants>d__23`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-6 (-1.00 % of base) : 22297.dasm - System.Buffers.SharedArrayPoolPartitions+Partition:Trim(int,int,int,int):this (FullOpts)
-11 (-0.89 % of base) : 72634.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:ResolveConversion(System.Type,System.Type,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],ubyte,byref):System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method] (FullOpts)
-7 (-0.89 % of base) : 251755.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
-4 (-0.81 % of base) : 202288.dasm - System.Speech.Internal.Synthesis.SsmlParser:ParseAudio(System.Xml.XmlReader,System.Speech.Internal.Synthesis.ISsmlParser,int,System.Speech.Internal.Synthesis.SsmlParser+SsmlAttributes,ubyte) (FullOpts)
-2 (-0.75 % of base) : 22885.dasm - System.Globalization.CalendarData:EnumCalendarInfoCallback(uint,int) (FullOpts)
-5 (-0.69 % of base) : 17652.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-7 (-0.53 % of base) : 206338.dasm - System.Data.ProviderBase.DbConnectionPool:TryGetConnection(System.Data.Common.DbConnection,uint,ubyte,ubyte,System.Data.Common.DbConnectionOptions,byref):ubyte:this (FullOpts)
-4 (-0.40 % of base) : 16966.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
-4 (-0.32 % of base) : 262891.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
-4 (-0.32 % of base) : 260275.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (FullOpts)
-9 (-0.20 % of base) : 231291.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (FullOpts)
-9 (-0.19 % of base) : 231222.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.__Canon]:MoveNext():this (FullOpts)
-4 (-0.12 % of base) : 113490.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
32 total methods with Code Size differences (19 improved, 13 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: 51340369 (overridden on cmd)
Total bytes of diff: 51339248 (overridden on cmd)
Total bytes of delta: -1121 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
40 : 201033.dasm (1.40 % of base)
37 : 175323.dasm (2.24 % of base)
29 : 277684.dasm (4.90 % of base)
26 : 196392.dasm (0.55 % of base)
20 : 296438.dasm (4.30 % of base)
19 : 287556.dasm (1.43 % of base)
19 : 196464.dasm (1.13 % of base)
12 : 167573.dasm (1.43 % of base)
12 : 254154.dasm (1.66 % of base)
10 : 299541.dasm (1.79 % of base)
7 : 252083.dasm (0.46 % of base)
7 : 208062.dasm (0.44 % of base)
6 : 110850.dasm (0.80 % of base)
6 : 149336.dasm (0.80 % of base)
6 : 155663.dasm (0.34 % of base)
6 : 290233.dasm (1.92 % of base)
6 : 181557.dasm (1.50 % of base)
6 : 289341.dasm (1.92 % of base)
5 : 208069.dasm (0.22 % of base)
3 : 177444.dasm (0.06 % of base)
Top file improvements (bytes):
-98 : 298992.dasm (-2.68 % of base)
-35 : 68534.dasm (-1.98 % of base)
-32 : 320572.dasm (-0.51 % of base)
-29 : 203245.dasm (-2.30 % of base)
-28 : 301086.dasm (-2.20 % of base)
-28 : 294513.dasm (-1.05 % of base)
-27 : 203467.dasm (-1.35 % of base)
-25 : 207977.dasm (-1.83 % of base)
-24 : 84473.dasm (-1.21 % of base)
-23 : 180406.dasm (-2.61 % of base)
-23 : 289105.dasm (-2.70 % of base)
-22 : 207585.dasm (-0.66 % of base)
-22 : 237902.dasm (-7.86 % of base)
-22 : 72396.dasm (-0.80 % of base)
-21 : 233682.dasm (-2.42 % of base)
-20 : 271055.dasm (-1.02 % of base)
-19 : 289103.dasm (-1.42 % of base)
-18 : 203825.dasm (-0.91 % of base)
-18 : 307365.dasm (-0.89 % of base)
-18 : 127201.dasm (-0.35 % of base)
71 total files with Code Size differences (38 improved, 33 regressed), 10 unchanged.
Top method regressions (bytes):
40 (1.40 % of base) : 201033.dasm - Microsoft.Build.Construction.SolutionFile:ParseSolution():this (FullOpts)
37 (2.24 % of base) : 175323.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
29 (4.90 % of base) : 277684.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
26 (0.55 % of base) : 196392.dasm - R2RDump.Extensions:WriteTo(ILCompiler.Reflection.ReadyToRun.DebugInfo,System.IO.TextWriter,R2RDump.DumpModel) (FullOpts)
20 (4.30 % of base) : 296438.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:Sum():System.ValueTuple`2[long,long]:this (FullOpts)
19 (1.13 % of base) : 196464.dasm - R2RDump.TextDumper:DumpDisasm(ILCompiler.Reflection.ReadyToRun.RuntimeFunction,int):this (FullOpts)
19 (1.43 % of base) : 287556.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (FullOpts)
12 (1.66 % of base) : 254154.dasm - System.Net.Mail.SmtpClient:GetFileMailWriter(System.String):System.Net.Mail.MailWriter:this (FullOpts)
12 (1.43 % of base) : 167573.dasm - System.Xml.XmlWellFormedWriter:GeneratePrefix():System.String:this (FullOpts)
10 (1.79 % of base) : 299541.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (FullOpts)
7 (0.44 % of base) : 208062.dasm - R2RTest.BuildFolder:WriteJitStatistics(System.IO.TextWriter,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.String]][],System.Collections.Generic.IEnumerable`1[R2RTest.CompilerRunner]) (FullOpts)
7 (0.46 % of base) : 252083.dasm - System.Net.Http.Http2Connection:ProcessSettingsFrame(System.Net.Http.Http2Connection+FrameHeader,ubyte):this (FullOpts)
6 (1.50 % of base) : 181557.dasm - Internal.TypeSystem.Ecma.MutableModule+Cache:ResetEmitter():this (FullOpts)
6 (0.34 % of base) : 155663.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:FinalizeCustomAttributeTableRows():this (FullOpts)
6 (0.80 % of base) : 110850.dasm - Microsoft.CodeAnalysis.PEModule:GetMemberNotNullAttributeValues(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[System.String]:this (FullOpts)
6 (0.80 % of base) : 149336.dasm - Microsoft.CodeAnalysis.PEModule:GetMemberNotNullAttributeValues(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[System.String]:this (FullOpts)
6 (1.92 % of base) : 289341.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1[System.__Canon,System.Nullable`1[int]]:AddExceptions(System.Collections.Generic.List`1[System.Exception]):this (FullOpts)
6 (1.92 % of base) : 290233.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1[System.__Canon]:AddExceptions(System.Collections.Generic.List`1[System.Exception]):this (FullOpts)
5 (0.22 % of base) : 208069.dasm - R2RTest.BuildFolderSet:Compile():ubyte:this (FullOpts)
3 (1.07 % of base) : 188319.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
Top method improvements (bytes):
-98 (-2.68 % of base) : 298992.dasm - Microsoft.Extensions.Options.DataAnnotationValidateOptions`1[System.__Canon]:TryValidateOptions(System.Object,System.String,System.Collections.Generic.List`1[System.ComponentModel.DataAnnotations.ValidationResult],byref,byref):ubyte (FullOpts)
-35 (-1.98 % of base) : 68534.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
-32 (-0.51 % of base) : 320572.dasm - TestRunner:DoWorkStress():int:this (FullOpts)
-29 (-2.30 % of base) : 203245.dasm - Microsoft.Build.Execution.ProjectInstance:CreateItemsSnapshot(System.Collections.Generic.ICollection`1[Microsoft.Build.Evaluation.ProjectItem],int,ubyte):System.Collections.Generic.Dictionary`2[Microsoft.Build.Evaluation.ProjectItem,Microsoft.Build.Execution.ProjectItemInstance]:this (FullOpts)
-28 (-2.20 % of base) : 301086.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
-28 (-1.05 % of base) : 294513.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
-27 (-1.35 % of base) : 203467.dasm - Microsoft.Build.BackEnd.PropertyParser:GetTableWithEscaping(Microsoft.Build.BackEnd.TaskLoggingHelper,System.String,System.String,System.String[],byref):ubyte (FullOpts)
-25 (-1.83 % of base) : 207977.dasm - Microsoft.Build.BackEnd.NodeProviderOutOfProcBase+NodeContext+<WaitForExitAsync>d__27:MoveNext():this (FullOpts)
-24 (-1.21 % of base) : 84473.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.StackScheduler:FilterValidStackLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.CodeGen.StackScheduler+LocalDefUseInfo]):System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.CodeGen.StackScheduler+LocalDefUseInfo] (FullOpts)
-23 (-2.61 % of base) : 180406.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
-23 (-2.70 % of base) : 289105.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[ubyte]:ConsumeReservedMessagesGreedyBounded():this (FullOpts)
-22 (-0.66 % of base) : 207585.dasm - Microsoft.Build.BackEnd.TargetEntry+<ExecuteTarget>d__44:MoveNext():this (FullOpts)
-22 (-0.80 % of base) : 72396.dasm - System.Data.DataTable:ReadXmlSchema(System.Xml.XmlReader,ubyte):this (FullOpts)
-22 (-7.86 % of base) : 237902.dasm - System.IO.Packaging.PackagePart:Close():this (FullOpts)
-21 (-2.42 % of base) : 233682.dasm - System.DirectoryServices.AccountManagement.SAMStoreCtx:UpdateGroupMembership(System.DirectoryServices.AccountManagement.Principal,System.DirectoryServices.DirectoryEntry,System.DirectoryServices.AccountManagement.NetCred,int) (FullOpts)
-20 (-1.02 % of base) : 271055.dasm - System.Number:<NumberToBigInteger>g__DivideAndConquer|11_1(byref,byref,byref):int (FullOpts)
-19 (-1.42 % of base) : 289103.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[ubyte]:RetrievePostponedItemsGreedyBounded(ubyte):this (FullOpts)
-18 (-0.91 % of base) : 203825.dasm - Microsoft.Build.BackEnd.Scheduler:DumpSchedulerState():this (FullOpts)
-18 (-0.35 % of base) : 127201.dasm - Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:ParseProviderEvents(System.Func`2[Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData,int],ubyte):this (FullOpts)
-18 (-0.89 % of base) : 307365.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[System.__Canon,System.Nullable`1[int]]:MoveNext():this (FullOpts)
Top method regressions (percentages):
29 (4.90 % of base) : 277684.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
20 (4.30 % of base) : 296438.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:Sum():System.ValueTuple`2[long,long]:this (FullOpts)
37 (2.24 % of base) : 175323.dasm - System.Xml.Xsl.IlGen.XmlILModule:DefineMethod(System.String,System.Type,System.Type[],System.String[],int):System.Reflection.MethodInfo:this (FullOpts)
6 (1.92 % of base) : 289341.dasm - System.Threading.Tasks.Dataflow.BroadcastBlock`1+BroadcastingSourceCore`1[System.__Canon,System.Nullable`1[int]]:AddExceptions(System.Collections.Generic.List`1[System.Exception]):this (FullOpts)
6 (1.92 % of base) : 290233.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1[System.__Canon]:AddExceptions(System.Collections.Generic.List`1[System.Exception]):this (FullOpts)
10 (1.79 % of base) : 299541.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (FullOpts)
2 (1.74 % of base) : 237253.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
12 (1.66 % of base) : 254154.dasm - System.Net.Mail.SmtpClient:GetFileMailWriter(System.String):System.Net.Mail.MailWriter:this (FullOpts)
2 (1.55 % of base) : 249980.dasm - System.Net.HttpListenerResponse:FreePinnedHeaders(System.Collections.Generic.List`1[System.Runtime.InteropServices.GCHandle]) (FullOpts)
6 (1.50 % of base) : 181557.dasm - Internal.TypeSystem.Ecma.MutableModule+Cache:ResetEmitter():this (FullOpts)
12 (1.43 % of base) : 167573.dasm - System.Xml.XmlWellFormedWriter:GeneratePrefix():System.String:this (FullOpts)
19 (1.43 % of base) : 287556.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (FullOpts)
40 (1.40 % of base) : 201033.dasm - Microsoft.Build.Construction.SolutionFile:ParseSolution():this (FullOpts)
2 (1.33 % of base) : 269518.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeEncMapTable(System.Reflection.Metadata.BlobBuilder):this (FullOpts)
2 (1.28 % of base) : 298836.dasm - Microsoft.Extensions.Logging.LoggerFactory:Dispose():this (FullOpts)
19 (1.13 % of base) : 196464.dasm - R2RDump.TextDumper:DumpDisasm(ILCompiler.Reflection.ReadyToRun.RuntimeFunction,int):this (FullOpts)
2 (1.09 % of base) : 205828.dasm - Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
3 (1.07 % of base) : 188319.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
2 (1.04 % of base) : 147006.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
2 (1.04 % of base) : 108422.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
Top method improvements (percentages):
-22 (-7.86 % of base) : 237902.dasm - System.IO.Packaging.PackagePart:Close():this (FullOpts)
-11 (-4.35 % of base) : 201875.dasm - Microsoft.Build.Evaluation.ProjectCollection:RemoveGlobalProperty(System.String):ubyte:this (FullOpts)
-10 (-4.03 % of base) : 253217.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-12 (-3.97 % of base) : 282284.dasm - System.Speech.Internal.Synthesis.VoiceSynthesis:RemoveLexicon(System.Uri):this (FullOpts)
-6 (-3.82 % of base) : 290083.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[ubyte](System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[ubyte],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
-8 (-3.57 % of base) : 295280.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
-13 (-3.37 % of base) : 193866.dasm - Newtonsoft.Json.Linq.JsonPath.ArrayMultipleIndexFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
-8 (-2.89 % of base) : 206758.dasm - Microsoft.Build.Evaluation.ProjectCollection+LoadedProjectCollection:GetMatchingProjectIfAny(System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],System.String):Microsoft.Build.Evaluation.Project:this (FullOpts)
-15 (-2.80 % of base) : 288205.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ubyte]:CreateNewCapturingTransition(int,int,int):System.ValueTuple`2[int,System.Text.RegularExpressions.Symbolic.DerivativeEffect[]][]:this (FullOpts)
-23 (-2.70 % of base) : 289105.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[ubyte]:ConsumeReservedMessagesGreedyBounded():this (FullOpts)
-98 (-2.68 % of base) : 298992.dasm - Microsoft.Extensions.Options.DataAnnotationValidateOptions`1[System.__Canon]:TryValidateOptions(System.Object,System.String,System.Collections.Generic.List`1[System.ComponentModel.DataAnnotations.ValidationResult],byref,byref):ubyte (FullOpts)
-23 (-2.61 % of base) : 180406.dasm - ILCompiler.PEWriter.SectionBuilder:SerializeRelocationSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (FullOpts)
-8 (-2.50 % of base) : 282283.dasm - System.Speech.Internal.Synthesis.VoiceSynthesis:AddLexicon(System.Uri,System.String):this (FullOpts)
-8 (-2.43 % of base) : 205009.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_RegisteredLoggerTypeNames():System.Collections.Generic.ICollection`1[System.String]:this (FullOpts)
-21 (-2.42 % of base) : 233682.dasm - System.DirectoryServices.AccountManagement.SAMStoreCtx:UpdateGroupMembership(System.DirectoryServices.AccountManagement.Principal,System.DirectoryServices.DirectoryEntry,System.DirectoryServices.AccountManagement.NetCred,int) (FullOpts)
-6 (-2.40 % of base) : 201855.dasm - Microsoft.Build.Evaluation.ProjectCollection:RemoveAllToolsets():this (FullOpts)
-29 (-2.30 % of base) : 203245.dasm - Microsoft.Build.Execution.ProjectInstance:CreateItemsSnapshot(System.Collections.Generic.ICollection`1[Microsoft.Build.Evaluation.ProjectItem],int,ubyte):System.Collections.Generic.Dictionary`2[Microsoft.Build.Evaluation.ProjectItem,Microsoft.Build.Execution.ProjectItemInstance]:this (FullOpts)
-28 (-2.20 % of base) : 301086.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
-5 (-2.15 % of base) : 281262.dasm - System.Speech.Recognition.RecognizerBase:set_PauseRecognizerOnRecognition(ubyte):this (FullOpts)
-6 (-2.02 % of base) : 196437.dasm - R2RDump.R2RDiff:GetImports(ILCompiler.Reflection.ReadyToRun.ReadyToRunReader):System.Collections.Generic.Dictionary`2[System.String,ILCompiler.Reflection.ReadyToRun.ReadyToRunImportSection+ImportSectionEntry] (FullOpts)
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: 14894587 (overridden on cmd)
Total bytes of diff: 14894515 (overridden on cmd)
Total bytes of delta: -72 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
59 : 38309.dasm (1.32 % of base)
19 : 3975.dasm (1.43 % of base)
19 : 486.dasm (1.43 % of base)
12 : 24525.dasm (1.80 % of base)
9 : 6452.dasm (0.38 % of base)
4 : 10414.dasm (0.73 % of base)
2 : 31711.dasm (0.25 % of base)
2 : 4068.dasm (0.07 % of base)
2 : 32166.dasm (0.30 % of base)
2 : 33794.dasm (0.77 % of base)
2 : 41123.dasm (0.30 % of base)
2 : 594.dasm (0.07 % of base)
Top file improvements (bytes):
-28 : 2279.dasm (-1.05 % of base)
-28 : 14262.dasm (-1.05 % of base)
-21 : 43021.dasm (-4.65 % of base)
-14 : 18859.dasm (-1.42 % of base)
-14 : 5181.dasm (-1.42 % of base)
-13 : 9753.dasm (-1.92 % of base)
-11 : 10948.dasm (-1.36 % of base)
-8 : 13907.dasm (-3.57 % of base)
-8 : 4654.dasm (-0.92 % of base)
-8 : 1138.dasm (-0.92 % of base)
-6 : 21402.dasm (-2.75 % of base)
-6 : 19427.dasm (-0.40 % of base)
-5 : 24533.dasm (-0.71 % of base)
-5 : 4100.dasm (-0.59 % of base)
-5 : 1874.dasm (-2.24 % of base)
-5 : 620.dasm (-0.59 % of base)
-4 : 15124.dasm (-0.31 % of base)
-3 : 33356.dasm (-0.12 % of base)
-3 : 4005.dasm (-0.28 % of base)
-3 : 574.dasm (-0.28 % of base)
36 total files with Code Size differences (24 improved, 12 regressed), 2 unchanged.
Top method regressions (bytes):
59 (1.32 % of base) : 38309.dasm - System.Numerics.Tests.IsEvenTest:RunIsEvenTests() (Tier0-FullOpts)
19 (1.43 % of base) : 3975.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (Tier0-FullOpts)
19 (1.43 % of base) : 486.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (Tier0-FullOpts)
12 (1.80 % of base) : 24525.dasm - System.IO.Tests.WriteTests:WriteLine_Span_WritesExpectedData(int,int,int,ubyte):this (Tier0-FullOpts)
9 (0.38 % of base) : 6452.dasm - Microsoft.Extensions.Configuration.ConfigurationProviderJsonTest:SectionToJson(System.Text.StringBuilder,Microsoft.Extensions.Configuration.Test.ConfigurationProviderTestBase+TestSection,ubyte):this (Tier0-FullOpts)
4 (0.73 % of base) : 10414.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (Tier0-FullOpts)
2 (0.30 % of base) : 32166.dasm - System.Reflection.Metadata.Ecma335.ControlFlowBuilder:SerializeExceptionTable(System.Reflection.Metadata.BlobBuilder):this (Tier0-FullOpts)
2 (0.77 % of base) : 33794.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier0-FullOpts)
2 (0.25 % of base) : 31711.dasm - System.Reflection.Metadata.Ecma335.NamespaceCache:MergeDuplicateNamespaces(System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder],byref) (Tier0-FullOpts)
2 (0.30 % of base) : 41123.dasm - System.Security.Cryptography.Pkcs.Pkcs12SafeBag:EncodeTo(System.Formats.Asn1.AsnWriter):this (Tier0-FullOpts)
2 (0.07 % of base) : 4068.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier0-FullOpts)
2 (0.07 % of base) : 594.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier0-FullOpts)
Top method improvements (bytes):
-28 (-1.05 % of base) : 2279.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (Tier0-FullOpts)
-28 (-1.05 % of base) : 14262.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (Tier0-FullOpts)
-21 (-4.65 % of base) : 43021.dasm - System.Speech.Internal.Synthesis.VoiceSynthesis:BuildInstalledVoices(System.Speech.Internal.Synthesis.VoiceSynthesis):System.Collections.Generic.List`1[System.Speech.Synthesis.InstalledVoice] (Tier0-FullOpts)
-14 (-1.42 % of base) : 18859.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (Tier0-FullOpts)
-14 (-1.42 % of base) : 5181.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (Tier0-FullOpts)
-13 (-1.92 % of base) : 9753.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-11 (-1.36 % of base) : 10948.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
-8 (-0.92 % of base) : 4654.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
-8 (-0.92 % of base) : 1138.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
-8 (-3.57 % of base) : 13907.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier0-FullOpts)
-6 (-2.75 % of base) : 21402.dasm - System.IO.TempAclDirectory:DeleteDirectory():this (Tier0-FullOpts)
-6 (-0.40 % of base) : 19427.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Instrumented Tier1)
-5 (-0.71 % of base) : 24533.dasm - System.IO.Tests.WriteTests:Write_Span_WritesExpectedData(int,int,int,ubyte):this (Tier0-FullOpts)
-5 (-0.59 % of base) : 4100.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
-5 (-0.59 % of base) : 620.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
-5 (-2.24 % of base) : 1874.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier0-FullOpts)
-4 (-0.31 % of base) : 15124.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (Tier0-FullOpts)
-3 (-0.11 % of base) : 14541.dasm - System.Configuration.BaseConfigurationRecord:Init(System.Configuration.Internal.IInternalConfigRoot,System.Configuration.BaseConfigurationRecord,System.String,System.String):this (Tier0-FullOpts)
-3 (-0.28 % of base) : 4005.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
-3 (-0.28 % of base) : 574.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
Top method regressions (percentages):
12 (1.80 % of base) : 24525.dasm - System.IO.Tests.WriteTests:WriteLine_Span_WritesExpectedData(int,int,int,ubyte):this (Tier0-FullOpts)
19 (1.43 % of base) : 3975.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (Tier0-FullOpts)
19 (1.43 % of base) : 486.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (Tier0-FullOpts)
59 (1.32 % of base) : 38309.dasm - System.Numerics.Tests.IsEvenTest:RunIsEvenTests() (Tier0-FullOpts)
2 (0.77 % of base) : 33794.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier0-FullOpts)
4 (0.73 % of base) : 10414.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (Tier0-FullOpts)
9 (0.38 % of base) : 6452.dasm - Microsoft.Extensions.Configuration.ConfigurationProviderJsonTest:SectionToJson(System.Text.StringBuilder,Microsoft.Extensions.Configuration.Test.ConfigurationProviderTestBase+TestSection,ubyte):this (Tier0-FullOpts)
2 (0.30 % of base) : 41123.dasm - System.Security.Cryptography.Pkcs.Pkcs12SafeBag:EncodeTo(System.Formats.Asn1.AsnWriter):this (Tier0-FullOpts)
2 (0.30 % of base) : 32166.dasm - System.Reflection.Metadata.Ecma335.ControlFlowBuilder:SerializeExceptionTable(System.Reflection.Metadata.BlobBuilder):this (Tier0-FullOpts)
2 (0.25 % of base) : 31711.dasm - System.Reflection.Metadata.Ecma335.NamespaceCache:MergeDuplicateNamespaces(System.Collections.Generic.Dictionary`2[System.Reflection.Metadata.NamespaceDefinitionHandle,System.Reflection.Metadata.Ecma335.NamespaceCache+NamespaceDataBuilder],byref) (Tier0-FullOpts)
2 (0.07 % of base) : 4068.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier0-FullOpts)
2 (0.07 % of base) : 594.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:<FindFixedDistanceSets>g__TryFindRawFixedSets|2_0(System.Text.RegularExpressions.RegexNode,System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],byref,ubyte):ubyte (Tier0-FullOpts)
Top method improvements (percentages):
-21 (-4.65 % of base) : 43021.dasm - System.Speech.Internal.Synthesis.VoiceSynthesis:BuildInstalledVoices(System.Speech.Internal.Synthesis.VoiceSynthesis):System.Collections.Generic.List`1[System.Speech.Synthesis.InstalledVoice] (Tier0-FullOpts)
-8 (-3.57 % of base) : 13907.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier0-FullOpts)
-6 (-2.75 % of base) : 21402.dasm - System.IO.TempAclDirectory:DeleteDirectory():this (Tier0-FullOpts)
-5 (-2.24 % of base) : 1874.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier0-FullOpts)
-13 (-1.92 % of base) : 9753.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-14 (-1.42 % of base) : 18859.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (Tier0-FullOpts)
-14 (-1.42 % of base) : 5181.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<RunTestAsync>d__11:MoveNext():this (Tier0-FullOpts)
-11 (-1.36 % of base) : 10948.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Tier1)
-28 (-1.05 % of base) : 2279.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (Tier0-FullOpts)
-28 (-1.05 % of base) : 14262.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (Tier0-FullOpts)
-8 (-0.92 % of base) : 4654.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
-8 (-0.92 % of base) : 1138.dasm - System.Diagnostics.Tracing.EventListener:Validate() (Instrumented Tier1)
-5 (-0.71 % of base) : 24533.dasm - System.IO.Tests.WriteTests:Write_Span_WritesExpectedData(int,int,int,ubyte):this (Tier0-FullOpts)
-5 (-0.59 % of base) : 4100.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
-5 (-0.59 % of base) : 620.dasm - System.Text.RegularExpressions.RegexWriter:EmitCode():System.Text.RegularExpressions.RegexInterpreterCode:this (Tier0-FullOpts)
-6 (-0.40 % of base) : 19427.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (Instrumented Tier1)
-3 (-0.39 % of base) : 31687.dasm - System.Reflection.Metadata.Ecma335.NamespaceCache:PopulateNamespaceTable():this (Tier0-FullOpts)
-4 (-0.31 % of base) : 15124.dasm - System.Configuration.BaseConfigurationRecord:Evaluate(System.Configuration.FactoryRecord,System.Configuration.SectionRecord,System.Object,ubyte,ubyte,byref,byref):ubyte:this (Tier0-FullOpts)
-3 (-0.28 % of base) : 4005.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
-3 (-0.28 % of base) : 574.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (Instrumented Tier1)
36 total methods with Code Size differences (24 improved, 12 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: 109493031 (overridden on cmd)
Total bytes of diff: 109492352 (overridden on cmd)
Total bytes of delta: -679 (-0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
76 : 237805.dasm (9.10 % of base)
61 : 247920.dasm (7.04 % of base)
61 : 247858.dasm (6.52 % of base)
61 : 247861.dasm (7.02 % of base)
60 : 248858.dasm (4.90 % of base)
60 : 236664.dasm (4.47 % of base)
60 : 241230.dasm (4.70 % of base)
57 : 228072.dasm (1.33 % of base)
40 : 237764.dasm (3.25 % of base)
38 : 171674.dasm (2.39 % of base)
32 : 247903.dasm (3.41 % of base)
29 : 247959.dasm (3.36 % of base)
29 : 250530.dasm (4.90 % of base)
24 : 171527.dasm (2.33 % of base)
21 : 75757.dasm (1.50 % of base)
21 : 75750.dasm (1.42 % of base)
20 : 44648.dasm (4.30 % of base)
19 : 331981.dasm (1.38 % of base)
19 : 18479.dasm (1.43 % of base)
19 : 234.dasm (1.43 % of base)
Top file improvements (bytes):
-93 : 74915.dasm (-2.67 % of base)
-92 : 71967.dasm (-2.64 % of base)
-33 : 196887.dasm (-0.65 % of base)
-32 : 187976.dasm (-2.87 % of base)
-30 : 152359.dasm (-1.42 % of base)
-29 : 76149.dasm (-1.79 % of base)
-28 : 110240.dasm (-2.25 % of base)
-28 : 807.dasm (-1.05 % of base)
-28 : 109227.dasm (-2.25 % of base)
-28 : 19016.dasm (-1.05 % of base)
-27 : 335034.dasm (-3.19 % of base)
-23 : 340435.dasm (-0.96 % of base)
-23 : 142885.dasm (-1.11 % of base)
-22 : 154295.dasm (-7.86 % of base)
-20 : 227635.dasm (-1.02 % of base)
-19 : 335031.dasm (-1.42 % of base)
-18 : 333094.dasm (-0.95 % of base)
-18 : 121241.dasm (-0.51 % of base)
-18 : 188576.dasm (-0.42 % of base)
-17 : 148763.dasm (-0.88 % of base)
73 total files with Code Size differences (38 improved, 35 regressed), 13 unchanged.
Top method regressions (bytes):
76 (9.10 % of base) : 237805.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
61 (7.02 % of base) : 247861.dasm - System.Tests.DecimalTests:BigInteger_Ceiling() (FullOpts)
61 (7.04 % of base) : 247920.dasm - System.Tests.DecimalTests:BigInteger_Floor() (FullOpts)
61 (6.52 % of base) : 247858.dasm - System.Tests.DecimalTests:BigInteger_Truncate() (FullOpts)
60 (4.90 % of base) : 248858.dasm - System.Tests.DecimalTests+BigIntegerAdd:Test() (FullOpts)
60 (4.70 % of base) : 241230.dasm - System.Tests.DecimalTests+BigIntegerDiv:Test() (FullOpts)
60 (4.47 % of base) : 236664.dasm - System.Tests.DecimalTests+BigIntegerMul:Test() (FullOpts)
57 (1.33 % of base) : 228072.dasm - System.Numerics.Tests.IsEvenTest:RunIsEvenTests() (FullOpts)
40 (3.25 % of base) : 237764.dasm - System.Tests.DecimalTests+BigIntegerMod:Test() (FullOpts)
38 (2.39 % of base) : 171674.dasm - System.SpanTests.ReadOnlySpanTests:SequenceCompareToNoMatch_string() (FullOpts)
32 (3.41 % of base) : 247903.dasm - System.Tests.DecimalTests:BigInteger_Round() (FullOpts)
29 (4.90 % of base) : 250530.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
29 (3.36 % of base) : 247959.dasm - System.Tests.DecimalTests:BigInteger_RoundAwayFromZero() (FullOpts)
24 (2.33 % of base) : 171527.dasm - System.SpanTests.ReadOnlySpanTests:SequenceCompareToWithSingleMismatch_String() (FullOpts)
21 (1.50 % of base) : 75757.dasm - Microsoft.VisualBasic.FileIO.Tests.FileSystemTests:GetDirectories_Directory():this (FullOpts)
21 (1.42 % of base) : 75750.dasm - Microsoft.VisualBasic.FileIO.Tests.FileSystemTests:GetDirectories_Directory_SearchOption():this (FullOpts)
20 (4.30 % of base) : 44648.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:Sum():System.ValueTuple`2[long,long]:this (FullOpts)
19 (1.38 % of base) : 331981.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (FullOpts)
19 (1.43 % of base) : 18479.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (FullOpts)
19 (1.43 % of base) : 234.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (FullOpts)
Top method improvements (bytes):
-93 (-2.67 % of base) : 74915.dasm - Microsoft.Extensions.Options.DataAnnotationValidateOptions`1[System.__Canon]:TryValidateOptions(System.Object,System.String,System.Collections.Generic.List`1[System.ComponentModel.DataAnnotations.ValidationResult],byref,byref):ubyte (FullOpts)
-92 (-2.64 % of base) : 71967.dasm - Microsoft.Extensions.Options.DataAnnotationValidateOptions`1[System.__Canon]:TryValidateOptions(System.Object,System.String,System.Collections.Generic.List`1[System.ComponentModel.DataAnnotations.ValidationResult],byref,byref):ubyte (FullOpts)
-33 (-0.65 % of base) : 196887.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateLiteralMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
-32 (-2.87 % of base) : 187976.dasm - System.Net.WebSockets.Client.Tests.LoopbackHelper+<WebSocketHandshakeAsync>d__0:MoveNext():this (FullOpts)
-30 (-1.42 % of base) : 152359.dasm - System.IO.Tests.RandomAccess_NoBuffering+<ReadAsyncUsingMultipleBuffers>d__3:MoveNext():this (FullOpts)
-29 (-1.79 % of base) : 76149.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
-28 (-2.25 % of base) : 110240.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
-28 (-2.25 % of base) : 109227.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
-28 (-1.05 % of base) : 807.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
-28 (-1.05 % of base) : 19016.dasm - Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14:MoveNext():this (FullOpts)
-27 (-3.19 % of base) : 335034.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[int]:ConsumeReservedMessagesGreedyBounded():this (FullOpts)
-23 (-1.11 % of base) : 142885.dasm - System.Formats.Tar.Tests.TarReader_Tests+<TarReader_LeaveOpen_True_Async>d__1:MoveNext():this (FullOpts)
-23 (-0.96 % of base) : 340435.dasm - System.Threading.Tests.EtwTests+<>c:<WaitHandleWaitEventTest>b__1_0():this (FullOpts)
-22 (-7.86 % of base) : 154295.dasm - System.IO.Packaging.PackagePart:Close():this (FullOpts)
-20 (-1.02 % of base) : 227635.dasm - System.Number:<NumberToBigInteger>g__DivideAndConquer|11_1(byref,byref,byref):int (FullOpts)
-19 (-1.42 % of base) : 335031.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[int]:RetrievePostponedItemsGreedyBounded(ubyte):this (FullOpts)
-18 (-0.51 % of base) : 121241.dasm - System.Diagnostics.Tests.ActivitySourceTests+<>c:<TestActivityCreationProperties>b__9_0():this (FullOpts)
-18 (-0.42 % of base) : 188576.dasm - System.Net.WebSockets.Tests.WebSocketDeflateTests+<Duplex>d__13:MoveNext():this (FullOpts)
-18 (-0.95 % of base) : 333094.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2+<Heartbeat>d__23[System.__Canon,int]:MoveNext():this (FullOpts)
-17 (-0.88 % of base) : 148763.dasm - System.IO.Compression.Tests.ZipFileTestBase+<CreateFromDir>d__25:MoveNext():this (FullOpts)
Top method regressions (percentages):
76 (9.10 % of base) : 237805.dasm - System.Tests.DecimalTests+BigIntegerCompare:Test() (FullOpts)
61 (7.04 % of base) : 247920.dasm - System.Tests.DecimalTests:BigInteger_Floor() (FullOpts)
61 (7.02 % of base) : 247861.dasm - System.Tests.DecimalTests:BigInteger_Ceiling() (FullOpts)
61 (6.52 % of base) : 247858.dasm - System.Tests.DecimalTests:BigInteger_Truncate() (FullOpts)
60 (4.90 % of base) : 248858.dasm - System.Tests.DecimalTests+BigIntegerAdd:Test() (FullOpts)
29 (4.90 % of base) : 250530.dasm - System.Security.Cryptography.XmlKeyHelper:WriteCryptoBinary(System.String,System.ReadOnlySpan`1[ubyte],System.Text.StringBuilder) (FullOpts)
60 (4.70 % of base) : 241230.dasm - System.Tests.DecimalTests+BigIntegerDiv:Test() (FullOpts)
60 (4.47 % of base) : 236664.dasm - System.Tests.DecimalTests+BigIntegerMul:Test() (FullOpts)
20 (4.30 % of base) : 44648.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:Sum():System.ValueTuple`2[long,long]:this (FullOpts)
32 (3.41 % of base) : 247903.dasm - System.Tests.DecimalTests:BigInteger_Round() (FullOpts)
29 (3.36 % of base) : 247959.dasm - System.Tests.DecimalTests:BigInteger_RoundAwayFromZero() (FullOpts)
40 (3.25 % of base) : 237764.dasm - System.Tests.DecimalTests+BigIntegerMod:Test() (FullOpts)
38 (2.39 % of base) : 171674.dasm - System.SpanTests.ReadOnlySpanTests:SequenceCompareToNoMatch_string() (FullOpts)
24 (2.33 % of base) : 171527.dasm - System.SpanTests.ReadOnlySpanTests:SequenceCompareToWithSingleMismatch_String() (FullOpts)
13 (2.03 % of base) : 70394.dasm - Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
10 (1.84 % of base) : 79493.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (FullOpts)
10 (1.84 % of base) : 121297.dasm - Microsoft.Win32.RegistryKey:GetSubKeyNames():System.String[]:this (FullOpts)
12 (1.80 % of base) : 157593.dasm - System.IO.Tests.WriteTests:WriteLine_Span_WritesExpectedData(int,int,int,ubyte):this (FullOpts)
12 (1.76 % of base) : 292884.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteLargeArrayOfStrings(System.Text.Json.Utf8JsonWriter,int) (FullOpts)
2 (1.74 % of base) : 148827.dasm - System.IO.Compression.ZipGenericExtraField:WriteAllBlocks(System.Collections.Generic.List`1[System.IO.Compression.ZipGenericExtraField],System.IO.Stream) (FullOpts)
Top method improvements (percentages):
-22 (-7.86 % of base) : 154295.dasm - System.IO.Packaging.PackagePart:Close():this (FullOpts)
-10 (-4.03 % of base) : 177769.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-10 (-4.03 % of base) : 32562.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-10 (-3.97 % of base) : 175166.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-6 (-3.82 % of base) : 334506.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[int](System.Threading.Tasks.Dataflow.ITargetBlock`1[int],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.Threading.Tasks.Dataflow.ISourceBlock`1[int],System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
-8 (-3.57 % of base) : 18753.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
-8 (-3.57 % of base) : 488.dasm - Xunit.AggregateMessageSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (FullOpts)
-27 (-3.19 % of base) : 335034.dasm - System.Threading.Tasks.Dataflow.BatchBlock`1+BatchBlockTargetCore[int]:ConsumeReservedMessagesGreedyBounded():this (FullOpts)
-32 (-2.87 % of base) : 187976.dasm - System.Net.WebSockets.Client.Tests.LoopbackHelper+<WebSocketHandshakeAsync>d__0:MoveNext():this (FullOpts)
-6 (-2.75 % of base) : 149309.dasm - System.IO.TempAclDirectory:DeleteDirectory():this (FullOpts)
-15 (-2.72 % of base) : 304969.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:CreateNewCapturingTransition(int,int,int):System.ValueTuple`2[int,System.Text.RegularExpressions.Symbolic.DerivativeEffect[]][]:this (FullOpts)
-93 (-2.67 % of base) : 74915.dasm - Microsoft.Extensions.Options.DataAnnotationValidateOptions`1[System.__Canon]:TryValidateOptions(System.Object,System.String,System.Collections.Generic.List`1[System.ComponentModel.DataAnnotations.ValidationResult],byref,byref):ubyte (FullOpts)
-92 (-2.64 % of base) : 71967.dasm - Microsoft.Extensions.Options.DataAnnotationValidateOptions`1[System.__Canon]:TryValidateOptions(System.Object,System.String,System.Collections.Generic.List`1[System.ComponentModel.DataAnnotations.ValidationResult],byref,byref):ubyte (FullOpts)
-8 (-2.37 % of base) : 267130.dasm - System.Speech.Internal.Synthesis.VoiceSynthesis:AddLexicon(System.Uri,System.String):this (FullOpts)
-7 (-2.33 % of base) : 335571.dasm - System.Threading.Tasks.Dataflow.Internal.SourceCore`1[int]:AddExceptions(System.Collections.Generic.List`1[System.Exception]):this (FullOpts)
-28 (-2.25 % of base) : 110240.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
-28 (-2.25 % of base) : 109227.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts)
-8 (-1.97 % of base) : 259008.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_NonNullOrEmptyPassword_MemberData>d__19:MoveNext():ubyte:this (FullOpts)
-8 (-1.92 % of base) : 255977.dasm - System.Security.Cryptography.X509Certificates.Tests.PfxIterationCountTests+<GetCertsWith_IterationCountNotExceedingDefaultLimit_AndNullOrEmptyPassword_MemberData>d__17:MoveNext():ubyte:this (FullOpts)
-8 (-1.89 % of base) : 179228.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
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: 11827284 (overridden on cmd)
Total bytes of diff: 11827219 (overridden on cmd)
Total bytes of delta: -65 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
12 : 35171.dasm (2.00 % of base)
4 : 33659.dasm (0.15 % of base)
4 : 36450.dasm (0.62 % of base)
4 : 37365.dasm (0.49 % of base)
4 : 16742.dasm (0.19 % of base)
4 : 37363.dasm (0.42 % of base)
4 : 35982.dasm (0.17 % of base)
4 : 37399.dasm (0.57 % of base)
3 : 15094.dasm (0.44 % of base)
3 : 37334.dasm (1.99 % of base)
2 : 16077.dasm (1.56 % of base)
2 : 19041.dasm (0.67 % of base)
2 : 33240.dasm (0.77 % of base)
2 : 34219.dasm (1.32 % of base)
2 : 34348.dasm (0.34 % of base)
2 : 36298.dasm (0.98 % of base)
2 : 37229.dasm (0.60 % of base)
2 : 34360.dasm (0.60 % of base)
2 : 35820.dasm (0.93 % of base)
2 : 37342.dasm (0.83 % of base)
Top file improvements (bytes):
-26 : 15706.dasm (-3.81 % of base)
-12 : 26802.dasm (-1.65 % of base)
-11 : 18357.dasm (-2.32 % of base)
-10 : 35530.dasm (-0.30 % of base)
-9 : 37202.dasm (-0.04 % of base)
-8 : 19702.dasm (-0.66 % of base)
-8 : 34182.dasm (-1.88 % of base)
-7 : 16839.dasm (-1.36 % of base)
-7 : 19042.dasm (-3.00 % of base)
-6 : 35379.dasm (-0.71 % of base)
-6 : 2131.dasm (-0.62 % of base)
-6 : 36520.dasm (-0.27 % of base)
-6 : 561.dasm (-0.62 % of base)
-6 : 37300.dasm (-0.20 % of base)
-5 : 1645.dasm (-0.68 % of base)
-5 : 36533.dasm (-0.36 % of base)
-5 : 37838.dasm (-0.43 % of base)
-5 : 16707.dasm (-1.30 % of base)
-5 : 19219.dasm (-1.21 % of base)
-5 : 34188.dasm (-0.89 % of base)
65 total files with Code Size differences (28 improved, 37 regressed), 3 unchanged.
Top method regressions (bytes):
12 (2.00 % of base) : 35171.dasm - System.Management.Automation.SessionStateInternal:GetProvider(System.Management.Automation.PSSnapinQualifiedName):System.Collections.ObjectModel.Collection`1[System.Management.Automation.ProviderInfo]:this (FullOpts)
4 (0.17 % of base) : 35982.dasm - System.Management.Automation.Adapter:FindBestMethodImpl(System.Management.Automation.MethodInformation[],System.Management.Automation.PSMethodInvocationConstraints,ubyte,System.Object[],byref,byref,byref):System.Management.Automation.MethodInformation (FullOpts)
4 (0.62 % of base) : 36450.dasm - System.Management.Automation.CommandSearcher:MoveNext():ubyte:this (FullOpts)
4 (0.57 % of base) : 37399.dasm - System.Management.Automation.Internal.PipelineProcessor:DisposeCommands():this (FullOpts)
4 (0.49 % of base) : 37365.dasm - System.Management.Automation.PSModuleInfo:get_ExportedAliases():System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.AliasInfo]:this (FullOpts)
4 (0.42 % of base) : 37363.dasm - System.Management.Automation.PSModuleInfo:get_ExportedFunctions():System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.FunctionInfo]:this (FullOpts)
4 (0.15 % of base) : 33659.dasm - System.Management.Automation.Runspaces.PSSnapInHelpers:AnalyzePSSnapInAssembly(System.Reflection.Assembly,System.String,System.Management.Automation.PSSnapInInfo,System.Management.Automation.PSModuleInfo,byref,byref,byref,byref) (FullOpts)
4 (0.19 % of base) : 16742.dasm - System.Threading.Tasks.Task:WaitAllCore(System.Threading.Tasks.Task[],int,System.Threading.CancellationToken):ubyte (FullOpts)
3 (1.99 % of base) : 37334.dasm - System.Management.Automation.PSModuleInfo:AddModuleToList(System.Management.Automation.PSModuleInfo,System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]) (FullOpts)
3 (0.44 % of base) : 15094.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
2 (1.04 % of base) : 33011.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
2 (0.71 % of base) : 34350.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadAppliesToSectionFromObjectModel(System.Collections.Generic.List`1[System.String],System.Collections.Generic.List`1[System.Management.Automation.DisplayEntry]):Microsoft.PowerShell.Commands.Internal.Format.AppliesTo (FullOpts)
2 (0.71 % of base) : 34361.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadComplexControlEntryDefinitionFromObjectModel(System.Management.Automation.CustomControlEntry,int,System.String):Microsoft.PowerShell.Commands.Internal.Format.ComplexControlEntryDefinition:this (FullOpts)
2 (0.60 % of base) : 34360.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadCustomControlFromObjectModel(System.Management.Automation.CustomControl,int,System.String):Microsoft.PowerShell.Commands.Internal.Format.ComplexControlBody:this (FullOpts)
2 (0.85 % of base) : 34304.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadHeadersSectionFromObjectModel(Microsoft.PowerShell.Commands.Internal.Format.TableControlBody,System.Collections.Generic.List`1[System.Management.Automation.TableControlColumnHeader]) (FullOpts)
2 (0.34 % of base) : 34348.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadListControlEntriesFromObjectModel(Microsoft.PowerShell.Commands.Internal.Format.ListControlBody,System.Collections.Generic.List`1[System.Management.Automation.ListControlEntry],int,System.String):this (FullOpts)
2 (0.33 % of base) : 37232.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetListOfFilesFromData(System.Collections.Hashtable,System.String,System.String,int,System.String,System.String,ubyte,byref):ubyte:this (FullOpts)
2 (0.60 % of base) : 37229.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetListOfWildcardsFromData(System.Collections.Hashtable,System.String,System.String,int,byref):ubyte:this (FullOpts)
2 (0.36 % of base) : 37356.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:SetDeclaredDscResources(System.Collections.Generic.List`1[System.Management.Automation.WildcardPattern],System.Management.Automation.PSModuleInfo) (FullOpts)
2 (1.56 % of base) : 16077.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadSubIfd(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
Top method improvements (bytes):
-26 (-3.81 % of base) : 15706.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)
-12 (-1.65 % of base) : 26802.dasm - Microsoft.CodeAnalysis.PEModule:GetMemberNotNullWhenAttributeValues(System.Reflection.Metadata.EntityHandle):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[System.String]]:this (FullOpts)
-11 (-2.32 % of base) : 18357.dasm - System.Net.Http.Headers.HttpHeaders:RemoveParsedValue(System.Net.Http.Headers.HeaderDescriptor,System.Object):ubyte:this (FullOpts)
-10 (-0.30 % of base) : 35530.dasm - System.Management.Automation.ScriptBlock:InvokeWithPipeImpl(int,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ScriptBlock],System.Collections.Generic.List`1[System.Management.Automation.PSVariable],int,System.Object,System.Object,System.Object,System.Management.Automation.Internal.Pipe,System.Management.Automation.InvocationInfo,System.Object[]):this (FullOpts)
-9 (-0.04 % of base) : 37202.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:LoadModuleManifest(System.String,System.Management.Automation.ExternalScriptInfo,System.Collections.Hashtable,System.Collections.Hashtable,int,System.Version,System.Version,System.Version,System.Nullable`1[System.Guid],byref,byref):System.Management.Automation.PSModuleInfo:this (FullOpts)
-8 (-0.66 % of base) : 19702.dasm - Microsoft.CodeAnalysis.RuleSetProcessor:ReadRuleSet(System.Xml.Linq.XElement,System.String):Microsoft.CodeAnalysis.RuleSet (FullOpts)
-8 (-1.88 % of base) : 34182.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
-7 (-3.00 % of base) : 19042.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-7 (-1.36 % of base) : 16839.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
-6 (-0.20 % of base) : 37300.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:LoadBinaryModule(System.Management.Automation.PSModuleInfo,System.String,System.String,System.Reflection.Assembly,System.String,System.Management.Automation.SessionState,Microsoft.PowerShell.Commands.ModuleCmdletBase+ImportModuleOptions,int,System.String,byref,System.String,ubyte):System.Management.Automation.PSModuleInfo:this (FullOpts)
-6 (-0.71 % of base) : 35379.dasm - System.Management.Automation.Language.Parser:ParamBlockRule():System.Management.Automation.Language.ParamBlockAst:this (FullOpts)
-6 (-0.27 % of base) : 36520.dasm - System.Management.Automation.LocationGlobber:ExpandMshGlobPath(System.String,ubyte,System.Management.Automation.PSDriveInfo,System.Management.Automation.Provider.ContainerCmdletProvider,System.Management.Automation.CmdletProviderContext):System.Collections.ObjectModel.Collection`1[System.String]:this (FullOpts)
-6 (-0.62 % of base) : 2131.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
-6 (-0.62 % of base) : 561.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
-5 (-1.21 % of base) : 19219.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
-5 (-0.89 % of base) : 34188.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:Update(System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost):this (FullOpts)
-5 (-0.43 % of base) : 37838.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase+<GetModuleForRootedPaths>d__95:MoveNext():ubyte:this (FullOpts)
-5 (-0.68 % of base) : 1645.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-5 (-0.68 % of base) : 59.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-5 (-0.36 % of base) : 36533.dasm - System.Management.Automation.Internal.ModuleUtils+<GetDefaultAvailableModuleFiles>d__9:MoveNext():ubyte:this (FullOpts)
Top method regressions (percentages):
2 (2.22 % of base) : 34103.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitWriteBack(System.Collections.Generic.List`1[System.Linq.Expressions.Compiler.LambdaCompiler+WriteBack]):this (FullOpts)
12 (2.00 % of base) : 35171.dasm - System.Management.Automation.SessionStateInternal:GetProvider(System.Management.Automation.PSSnapinQualifiedName):System.Collections.ObjectModel.Collection`1[System.Management.Automation.ProviderInfo]:this (FullOpts)
3 (1.99 % of base) : 37334.dasm - System.Management.Automation.PSModuleInfo:AddModuleToList(System.Management.Automation.PSModuleInfo,System.Collections.Generic.List`1[System.Management.Automation.PSModuleInfo]) (FullOpts)
2 (1.80 % of base) : 37286.dasm - System.Management.Automation.ModuleIntrinsics:PatternContainsWildcard(System.Collections.Generic.List`1[System.Management.Automation.WildcardPattern]):ubyte (FullOpts)
2 (1.67 % of base) : 37819.dasm - System.Management.Automation.CmdletParameterBinderController:AtLeastOneUnboundValidParameterSetTakesPipelineInput(uint):ubyte:this (FullOpts)
2 (1.56 % of base) : 16077.dasm - SixLabors.ImageSharp.Metadata.Profiles.Exif.BaseExifReader:ReadSubIfd(System.Collections.Generic.List`1[SixLabors.ImageSharp.Metadata.Profiles.Exif.IExifValue]):this (FullOpts)
2 (1.32 % of base) : 34219.dasm - System.Management.Automation.SessionStateInternal:ProviderExists(System.Management.Automation.ProviderInfo):System.Management.Automation.ProviderInfo:this (FullOpts)
2 (1.22 % of base) : 35583.dasm - System.Management.Automation.Language.VariableAnalysis+Block:VisitDepthFirstOrder(System.Management.Automation.Language.VariableAnalysis+Block,System.Collections.Generic.List`1[System.Management.Automation.Language.VariableAnalysis+Block]) (FullOpts)
2 (1.04 % of base) : 33011.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodImplTableRows():this (FullOpts)
2 (0.98 % of base) : 36298.dasm - System.Management.Automation.Runspaces.LocalRunspace:<DoCloseHelper>b__54_0():System.Collections.Generic.List`1[System.Management.Automation.RemoteRunspace]:this (FullOpts)
2 (0.93 % of base) : 35820.dasm - System.Management.Automation.Interpreter.InstructionList:BuildRuntimeLabels():System.Management.Automation.Interpreter.RuntimeLabel[]:this (FullOpts)
2 (0.85 % of base) : 34304.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadHeadersSectionFromObjectModel(Microsoft.PowerShell.Commands.Internal.Format.TableControlBody,System.Collections.Generic.List`1[System.Management.Automation.TableControlColumnHeader]) (FullOpts)
2 (0.83 % of base) : 37342.dasm - System.Management.Automation.PSModuleInfo:get_CompiledExports():System.Collections.Generic.List`1[System.Management.Automation.CmdletInfo]:this (FullOpts)
2 (0.77 % of base) : 33240.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeStandAloneSigTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
2 (0.77 % of base) : 33249.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeSpecTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
2 (0.71 % of base) : 36134.dasm - System.Linq.Expressions.Compiler.LabelInfo:Define(System.Linq.Expressions.Compiler.LabelScopeInfo):this (FullOpts)
2 (0.71 % of base) : 37364.dasm - System.Management.Automation.PSModuleInfo:get_ExportedVariables():System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.PSVariable]:this (FullOpts)
2 (0.71 % of base) : 34350.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadAppliesToSectionFromObjectModel(System.Collections.Generic.List`1[System.String],System.Collections.Generic.List`1[System.Management.Automation.DisplayEntry]):Microsoft.PowerShell.Commands.Internal.Format.AppliesTo (FullOpts)
2 (0.71 % of base) : 34361.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadComplexControlEntryDefinitionFromObjectModel(System.Management.Automation.CustomControlEntry,int,System.String):Microsoft.PowerShell.Commands.Internal.Format.ComplexControlEntryDefinition:this (FullOpts)
2 (0.67 % of base) : 19041.dasm - System.Net.Http.Headers.HttpHeaders:ContainsParsedValue(System.Net.Http.Headers.HeaderDescriptor,System.Object):ubyte:this (FullOpts)
Top method improvements (percentages):
-26 (-3.81 % of base) : 15706.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:BuildLength(System.ReadOnlySpan`1[int]):this (FullOpts)
-7 (-3.00 % of base) : 19042.dasm - System.Net.Http.Headers.HttpHeaders:ParseRawHeaderValues(System.Net.Http.Headers.HeaderDescriptor,System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo) (FullOpts)
-11 (-2.32 % of base) : 18357.dasm - System.Net.Http.Headers.HttpHeaders:RemoveParsedValue(System.Net.Http.Headers.HeaderDescriptor,System.Object):ubyte:this (FullOpts)
-8 (-1.88 % of base) : 34182.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberAdded(System.String) (FullOpts)
-12 (-1.65 % of base) : 26802.dasm - Microsoft.CodeAnalysis.PEModule:GetMemberNotNullWhenAttributeValues(System.Reflection.Metadata.EntityHandle):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[System.String]]:this (FullOpts)
-4 (-1.61 % of base) : 34214.dasm - System.Management.Automation.Language.PSGetMemberBinder:TypeTableMemberPossiblyUpdated(System.String) (FullOpts)
-5 (-1.43 % of base) : 6545.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
-7 (-1.36 % of base) : 16839.dasm - System.Threading.Tasks.Task:WaitAllBlockingCore(System.Collections.Generic.List`1[System.Threading.Tasks.Task],int,System.Threading.CancellationToken):ubyte (FullOpts)
-5 (-1.30 % of base) : 16707.dasm - System.Threading.Tasks.Task:AddExceptionsFromChildren(System.Threading.Tasks.Task+ContingentProperties):this (FullOpts)
-5 (-1.21 % of base) : 19219.dasm - Microsoft.ML.Data.SimpleFileHandle:Dispose():this (FullOpts)
-4 (-1.05 % of base) : 37393.dasm - System.Management.Automation.Internal.PipelineProcessor:Clean():this (FullOpts)
-3 (-1.03 % of base) : 37106.dasm - System.Management.Automation.CommandProcessor:DoBegin():this (FullOpts)
-5 (-0.89 % of base) : 34188.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseManager:Update(System.Management.Automation.AuthorizationManager,System.Management.Automation.Host.PSHost):this (FullOpts)
-6 (-0.71 % of base) : 35379.dasm - System.Management.Automation.Language.Parser:ParamBlockRule():System.Management.Automation.Language.ParamBlockAst:this (FullOpts)
-4 (-0.69 % of base) : 34362.dasm - Microsoft.PowerShell.Commands.Internal.Format.TypeInfoDataBaseLoader:LoadFormatTokenFromObjectModel(System.Management.Automation.CustomItemBase,int,System.String):Microsoft.PowerShell.Commands.Internal.Format.FormatToken:this (FullOpts)
-5 (-0.68 % of base) : 1645.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-5 (-0.68 % of base) : 59.dasm - System.Diagnostics.Tracing.EventListener:Validate() (FullOpts)
-8 (-0.66 % of base) : 19702.dasm - Microsoft.CodeAnalysis.RuleSetProcessor:ReadRuleSet(System.Xml.Linq.XElement,System.String):Microsoft.CodeAnalysis.RuleSet (FullOpts)
-6 (-0.62 % of base) : 2131.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)
-6 (-0.62 % of base) : 561.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(uint,int,byref,byref):uint (FullOpts)