Diffs are based on 2,238,225 contexts (827,812 MinOpts, 1,410,413 FullOpts).
MISSED contexts: base: 74,052 (3.20%), diff: 74,053 (3.20%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.arm.checked.mch | 15,304,692 | +962 |
benchmarks.run_pgo.linux.arm.checked.mch | 60,239,130 | -2,152 |
benchmarks.run_tiered.linux.arm.checked.mch | 22,645,104 | +672 |
coreclr_tests.run.linux.arm.checked.mch | 321,777,660 | -18,494 |
libraries.crossgen2.linux.arm.checked.mch | 35,174,904 | -1,196 |
libraries.pmi.linux.arm.checked.mch | 49,554,486 | -2,374 |
libraries_tests.run.linux.arm.Release.mch | 241,721,946 | -37,822 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 93,043,072 | -12,090 |
realworld.run.linux.arm.checked.mch | 13,613,084 | -444 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.arm.checked.mch | 14,915,436 | +962 |
benchmarks.run_pgo.linux.arm.checked.mch | 49,441,528 | -2,152 |
benchmarks.run_tiered.linux.arm.checked.mch | 13,537,948 | +672 |
coreclr_tests.run.linux.arm.checked.mch | 109,047,526 | -18,494 |
libraries.crossgen2.linux.arm.checked.mch | 35,173,674 | -1,196 |
libraries.pmi.linux.arm.checked.mch | 49,447,982 | -2,374 |
libraries_tests.run.linux.arm.Release.mch | 119,719,002 | -37,822 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 82,959,252 | -12,090 |
realworld.run.linux.arm.checked.mch | 13,163,138 | -444 |
@@ -61,11 +61,8 @@ G_M65029_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b
G_M65029_IG03: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
ldr r2, [r0+0x04]
cmp r2, 0
- beq SHORT G_M65029_IG04
- cmp r1, 0
- beq SHORT G_M65029_IG08
- b SHORT G_M65029_IG07
- ;; size=12 bbWeight=0.50 PerfScore 3.00
+ bne SHORT G_M65029_IG07
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M65029_IG04: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
cmp r1, 0
@@ -83,21 +80,20 @@ G_M65029_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M65029_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp r1, 0
+ beq SHORT G_M65029_IG08
ldr r3, [r1+0x04]
cmp r3, 0
- beq SHORT G_M65029_IG08
- adds r0, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- b SHORT G_M65029_IG09
+ bne SHORT G_M65029_IG09
;; size=10 bbWeight=0.50 PerfScore 2.50
G_M65029_IG08: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r1] +[r0]
- ; byrRegs -[r0]
+ ; gcrRegs -[r1]
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M65029_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref
- ; gcrRegs -[r0] +[r1]
+G_M65029_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r1]
+ adds r0, 8
+ ; gcrRegs -[r0]
; byrRegs +[r0]
adds r1, 8
; gcrRegs -[r1]
@@ -115,12 +111,12 @@ G_M65029_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1},
blx lr // <unknown method>
; gcrRegs +[r0]
; byrRegs -[r0 r2]
- ;; size=22 bbWeight=0.50 PerfScore 4.00
+ ;; size=24 bbWeight=0.50 PerfScore 4.50
G_M65029_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 80, prolog size 6, PerfScore 17.50, instruction count 31, allocated bytes for code 80 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 76, prolog size 6, PerfScore 16.50, instruction count 29, allocated bytes for code 76 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -132,7 +128,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 80 (0x000050)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -80,11 +80,8 @@ G_M49441_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b
G_M49441_IG03: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
ldr r2, [r0+0x04]
cmp r2, 0
- beq SHORT G_M49441_IG04
- cmp r1, 0
- beq SHORT G_M49441_IG07
- b SHORT G_M49441_IG06
- ;; size=12 bbWeight=0.50 PerfScore 3.00
+ bne SHORT G_M49441_IG06
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M49441_IG04: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r1
@@ -94,31 +91,30 @@ G_M49441_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M49441_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp r1, 0
+ beq SHORT G_M49441_IG07
ldr r3, [r1+0x04]
cmp r3, 0
- beq SHORT G_M49441_IG07
+ bne SHORT G_M49441_IG08
+ ;; size=10 bbWeight=0.50 PerfScore 2.50
+G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r1]
+ pop {r3,r4,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M49441_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r1]
add lr, r1, 8
; byrRegs +[lr]
mov r12, lr
; byrRegs +[r12]
mov r4, r3
- b SHORT G_M49441_IG08
- ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r1]
- ; byrRegs -[r12 lr]
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M49441_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=5000 {r12 lr}, gcvars, byref, isz
- ; gcrRegs +[r1]
- ; byrRegs +[r12 lr]
cmp r4, 0
ble SHORT G_M49441_IG09
ldrh r12, [r12]
; byrRegs -[r12]
cmp r12, 47
beq SHORT G_M49441_IG04
- ;; size=14 bbWeight=0.50 PerfScore 2.50
+ ;; size=22 bbWeight=0.50 PerfScore 4.00
G_M49441_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=4000 {lr}, byref
; gcrRegs -[r1]
adds r0, 8
@@ -139,7 +135,7 @@ G_M49441_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 88, prolog size 8, PerfScore 18.50, instruction count 33, allocated bytes for code 88 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 17.50, instruction count 31, allocated bytes for code 84 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -151,7 +147,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
+ Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
---- 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,T00] ( 30, 13.50) ref -> r4 this class-hnd single-def <System.Xml.XmlBinaryReader>
-; V01 loc0 [V01,T05] ( 7, 3.50) int -> r9
-; V02 loc1 [V02,T19] ( 4, 2 ) int -> r7
+; V01 loc0 [V01,T05] ( 7, 3.50) int -> r7
+; V02 loc1 [V02,T19] ( 4, 2 ) int -> r6
; V03 OutArgs [V03 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <System.String>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V07 tmp4 [V07,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp5 [V08,T02] ( 8, 8 ) ref -> r5 class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
-; V09 tmp6 [V09,T22] ( 3, 1.50) ubyte -> r7 "Inline return value spill temp"
-; V10 tmp7 [V10,T20] ( 4, 2 ) int -> r6 "Inline stloc first use temp"
+; V09 tmp6 [V09,T22] ( 3, 1.50) ubyte -> r6 "Inline return value spill temp"
+; V10 tmp7 [V10,T20] ( 4, 2 ) int -> r0 "Inline stloc first use temp"
; V11 tmp8 [V11,T06] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
; V13 tmp10 [V13,T07] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
@@ -27,7 +27,7 @@
; V16 tmp13 [V16,T01] ( 9, 9 ) ref -> r5 class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V18 tmp15 [V18,T23] ( 3, 1.50) ubyte -> r6 "Inline return value spill temp"
-; V19 tmp16 [V19,T21] ( 4, 2 ) int -> r8 "Inline stloc first use temp"
+; V19 tmp16 [V19,T21] ( 4, 2 ) int -> r6 "Inline stloc first use temp"
;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
; V21 tmp18 [V21,T09] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
; V22 tmp19 [V22,T10] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
@@ -38,7 +38,7 @@
; V27 tmp24 [V27,T26] ( 2, 0 ) ref -> r2 single-def "argument with side effect"
; V28 tmp25 [V28,T12] ( 3, 3 ) ref -> r0 single-def "arr expr"
; V29 tmp26 [V29,T16] ( 3, 3 ) int -> r3 "index expr"
-; V30 tmp27 [V30,T13] ( 3, 3 ) ref -> r0 single-def "arr expr"
+; V30 tmp27 [V30,T13] ( 3, 3 ) ref -> r3 single-def "arr expr"
; V31 tmp28 [V31,T27] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V32 tmp29 [V32,T28] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V33 tmp30 [V33,T29] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
@@ -47,15 +47,15 @@
; V36 tmp33 [V36,T17] ( 3, 3 ) int -> r3 "index expr"
; V37 tmp34 [V37,T15] ( 3, 3 ) ref -> r0 single-def "arr expr"
; V38 tmp35 [V38,T31] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V39 cse0 [V39,T04] ( 11, 5.50) int -> r8 multi-def "CSE - aggressive"
+; V39 cse0 [V39,T04] ( 11, 5.50) int -> r6 multi-def "CSE - aggressive"
; V40 cse1 [V40,T03] ( 13, 6.50) ref -> r0 multi-def "CSE - aggressive"
-; V41 rat0 [V41,T18] ( 3, 3 ) int -> r7 "ReplaceWithLclVar is creating a new local variable"
+; V41 rat0 [V41,T18] ( 3, 3 ) int -> r5 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 8
G_M45055_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
- add r11, sp, 32
+ push {r2,r3,r4,r5,r6,r7,r11,lr}
+ add r11, sp, 24
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
@@ -87,17 +87,9 @@ G_M45055_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
G_M45055_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldrb r0, [r4+0x7A]
cmp r0, 0
- bne SHORT G_M45055_IG06
- ldr r5, [r4+0x04]
- ; gcrRegs +[r5]
- ldr r6, [r5+0x2C]
- ldr r0, [r5+0x28]
- cmp r6, r0
- bge SHORT G_M45055_IG09
- b SHORT G_M45055_IG08
- ;; size=20 bbWeight=0.50 PerfScore 4.50
+ beq SHORT G_M45055_IG08
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M45055_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -106,25 +98,31 @@ G_M45055_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M45055_IG07: ; bbWeight=0.50, epilog, nogc, extend
add sp, 8
- pop {r4,r5,r6,r7,r8,r9,r11,lr}
+ pop {r4,r5,r6,r7,r11,lr}
bx r3 // System.Xml.XmlDictionaryReader:ReadElementContentAsInt():int:this
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M45055_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0] +[r5]
- ldr r0, [r5+0x10]
- ; gcrRegs +[r0]
- ldr r3, [r0+0x04]
- cmp r6, r3
- bhs G_M45055_IG24
- adds r0, 8
+G_M45055_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
- ; byrRegs +[r0]
- ldrb r7, [r0+r6]
+ ldr r5, [r4+0x04]
+ ; gcrRegs +[r5]
+ ldr r0, [r5+0x2C]
+ ldr r3, [r5+0x28]
+ cmp r0, r3
+ bge SHORT G_M45055_IG09
+ ldr r3, [r5+0x10]
+ ; gcrRegs +[r3]
+ ldr r2, [r3+0x04]
+ cmp r0, r2
+ bhs G_M45055_IG24
+ adds r3, 8
+ ; gcrRegs -[r3]
+ ; byrRegs +[r3]
+ ldrb r6, [r3+r0]
b SHORT G_M45055_IG11
- ;; size=16 bbWeight=0.50 PerfScore 3.50
+ ;; size=26 bbWeight=0.50 PerfScore 6.00
G_M45055_IG09: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r0]
+ ; byrRegs -[r3]
mov r0, r5
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -154,17 +152,17 @@ G_M45055_IG10: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
- ldrb r7, [r0+r3]
+ ldrb r6, [r0+r3]
;; size=16 bbWeight=0.50 PerfScore 3.50
G_M45055_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5]
; byrRegs -[r0]
- cmp r7, 129
+ cmp r6, 129
beq SHORT G_M45055_IG12
- cmp r7, 131
+ cmp r6, 131
beq SHORT G_M45055_IG14
- subs r7, 137
- cmp r7, 4
+ sub r5, r6, 137
+ cmp r5, 4
bhi G_M45055_IG21
movw r0, LOW ADDRESS J_M45055_DS00
movt r0, HIGH ADDRESS J_M45055_DS00
@@ -175,20 +173,20 @@ G_M45055_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
DD G_M45055_IG19
DD G_M45055_IG21
DD G_M45055_IG20
- ldr pc, [r0+4*r7]
- ;; size=28 bbWeight=0.50 PerfScore 5.00
+ ldr pc, [r0+4*r5]
+ ;; size=30 bbWeight=0.50 PerfScore 5.00
G_M45055_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x04]
; gcrRegs +[r0]
ldr r3, [r0+0x2C]
- add r8, r3, 1
- str r8, [r0+0x2C]
- mov r9, 0
+ adds r6, r3, 1
+ str r6, [r0+0x2C]
+ movs r7, 0
ldr r0, [r4+0x60]
; gcrRegs -[r0]
cmp r0, 0
beq G_M45055_IG26
- ;; size=24 bbWeight=0.50 PerfScore 4.00
+ ;; size=18 bbWeight=0.50 PerfScore 4.00
G_M45055_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x60]
subs r0, r0, 1
@@ -217,41 +215,41 @@ G_M45055_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r0, [r4+0x04]
; gcrRegs +[r0]
ldr r3, [r0+0x2C]
- add r8, r3, 1
- str r8, [r0+0x2C]
- mov r9, 1
+ adds r6, r3, 1
+ str r6, [r0+0x2C]
+ movs r7, 1
ldr r0, [r4+0x60]
; gcrRegs -[r0]
cmp r0, 0
beq G_M45055_IG27
b SHORT G_M45055_IG13
- ;; size=26 bbWeight=0.50 PerfScore 4.50
+ ;; size=20 bbWeight=0.50 PerfScore 4.50
G_M45055_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x04]
; gcrRegs +[r0]
mov r3, r0
; gcrRegs +[r3]
ldr r2, [r3+0x2C]
- add r8, r2, 1
- str r8, [r3+0x2C]
+ adds r6, r2, 1
+ str r6, [r3+0x2C]
mov r5, r0
; gcrRegs +[r5]
ldr r0, [r5+0x28]
; gcrRegs -[r0]
- cmp r8, r0
+ cmp r6, r0
bge SHORT G_M45055_IG16
ldr r0, [r5+0x10]
; gcrRegs +[r0]
ldr r3, [r0+0x04]
; gcrRegs -[r3]
- cmp r8, r3
+ cmp r6, r3
bhs SHORT G_M45055_IG24
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
- ldrb r6, [r0+r8]
+ ldrb r6, [r0+r6]
b SHORT G_M45055_IG18
- ;; size=38 bbWeight=0.50 PerfScore 8.00
+ ;; size=32 bbWeight=0.50 PerfScore 8.00
G_M45055_IG16: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
mov r0, r5
@@ -290,12 +288,12 @@ G_M45055_IG18: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
ldr r0, [r5+0x2C]
adds r0, r0, 1
str r0, [r5+0x2C]
- sxtb r9, r6
+ sxtb r7, r6
ldr r0, [r4+0x60]
cmp r0, 0
beq G_M45055_IG28
b SHORT G_M45055_IG13
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=18 bbWeight=0.50 PerfScore 4.00
G_M45055_IG19: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5]
ldr r0, [r4+0x04]
@@ -303,8 +301,8 @@ G_M45055_IG19: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
mov r3, r0
; gcrRegs +[r3]
ldr r2, [r3+0x2C]
- add r8, r2, 1
- str r8, [r3+0x2C]
+ adds r6, r2, 1
+ str r6, [r3+0x2C]
ldrsb r3, [r0]
...
@@ -37,78 +37,82 @@ G_M44751_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byre
adds r1, r0, r1
mov lr, 0
cmp r0, r1
- bhs SHORT G_M44751_IG13
+ bhs SHORT G_M44751_IG05
;; size=12 bbWeight=1 PerfScore 5.00
G_M44751_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
add r12, r0, 2
ldrh r0, [r0]
cmp r0, 128
- bge SHORT G_M44751_IG05
+ bge SHORT G_M44751_IG06
;; size=10 bbWeight=4 PerfScore 16.00
G_M44751_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
movs r4, 1
- b SHORT G_M44751_IG08
+ b SHORT G_M44751_IG09
;; size=4 bbWeight=2 PerfScore 4.00
-G_M44751_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
- cmp r0, 0x800
- bge SHORT G_M44751_IG06
- movs r4, 2
- b SHORT G_M44751_IG08
- ;; size=10 bbWeight=2 PerfScore 8.00
+G_M44751_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ mov r12, r0
+ b SHORT G_M44751_IG14
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M44751_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ cmp r0, 0x800
+ bge SHORT G_M44751_IG07
+ movs r4, 2
+ b SHORT G_M44751_IG09
+ ;; size=10 bbWeight=2 PerfScore 8.00
+G_M44751_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
sub r0, r0, 0xd800
movw r4, 0xd1ff
cmp r0, r4
- bhi SHORT G_M44751_IG07
+ bhi SHORT G_M44751_IG08
cmp r12, r1
- bhs SHORT G_M44751_IG07
+ bhs SHORT G_M44751_IG08
ldrh r0, [r12]
sub r0, r0, 0xdc00
movw r4, 0xd1ff
cmp r0, r4
- bhi SHORT G_M44751_IG07
+ bhi SHORT G_M44751_IG08
movs r4, 4
add r12, r12, 2
- b SHORT G_M44751_IG08
+ b SHORT G_M44751_IG09
;; size=40 bbWeight=2 PerfScore 28.00
-G_M44751_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
movs r4, 3
;; size=2 bbWeight=2 PerfScore 2.00
-G_M44751_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+G_M44751_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
add r0, lr, r4
cmp r0, r2
- bgt SHORT G_M44751_IG10
+ bgt SHORT G_M44751_IG11
mov lr, r0
cmp r12, r1
- mov r0, r12
- blo SHORT G_M44751_IG03
+ blo SHORT G_M44751_IG10
+ b SHORT G_M44751_IG14
;; size=16 bbWeight=4 PerfScore 28.00
-G_M44751_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
- b SHORT G_M44751_IG13
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M44751_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+G_M44751_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ mov r0, r12
+ b SHORT G_M44751_IG03
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M44751_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
cmp r4, 4
- blt SHORT G_M44751_IG11
+ blt SHORT G_M44751_IG12
movs r0, 2
- b SHORT G_M44751_IG12
+ b SHORT G_M44751_IG13
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M44751_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M44751_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
lsls r0, r0, 1
sub r12, r12, r0
- mov r0, r12
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M44751_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
- str r0, [r3]
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M44751_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ str r12, [r3]
mov r0, lr
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M44751_IG14: ; bbWeight=1, epilog, nogc, extend
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M44751_IG15: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 130, prolog size 8, PerfScore 100.50, instruction count 51, allocated bytes for code 130 (MethodHash=6d775130) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 104.50, instruction count 53, allocated bytes for code 136 (MethodHash=6d775130) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +124,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -16,7 +16,7 @@
;
; Lcl frame size = 0
-G_M26551_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M26551_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r11,lr}
add r11, sp, 16
mov r4, r0
@@ -39,17 +39,17 @@ G_M26551_IG03: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movt r0, HIGH ADDRESS J_M26551_DS00
J_M26551_DS00 LABEL DWORD
- DD G_M26551_IG05
DD G_M26551_IG07
DD G_M26551_IG05
- DD G_M26551_IG05
- DD G_M26551_IG05
+ DD G_M26551_IG07
+ DD G_M26551_IG07
+ DD G_M26551_IG07
ldr pc, [r0+4*r7]
;; size=24 bbWeight=8 PerfScore 72.00
G_M26551_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
subs r0, 15
cmp r0, 1
- bls SHORT G_M26551_IG05
+ bls SHORT G_M26551_IG07
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r5+0x4C]
@@ -58,18 +58,9 @@ G_M26551_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs -[r0]
cmp r0, 0
bne SHORT G_M26551_IG03
- ;; size=18 bbWeight=4 PerfScore 36.00
+ b SHORT G_M26551_IG09
+ ;; size=20 bbWeight=4 PerfScore 40.00
G_M26551_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r6+0x14]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M26551_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,lr}
- bx r3 // <unknown method>
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M26551_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r5+0x4C]
@@ -80,18 +71,32 @@ G_M26551_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4},
; gcrRegs +[r0]
ldr r3, [r6+0x14]
;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M26551_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r4,r5,r6,r7,r11,lr}
+ bx r3 // <unknown method>
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M26551_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r6+0x14]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M26551_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,lr}
bx r3 // <unknown method>
;; size=6 bbWeight=0.50 PerfScore 1.00
-RWD00 dd G_M26551_IG05
+G_M26551_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0]
+ b SHORT G_M26551_IG07
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+RWD00 dd G_M26551_IG07
+ dd G_M26551_IG05
+ dd G_M26551_IG07
+ dd G_M26551_IG07
dd G_M26551_IG07
- dd G_M26551_IG05
- dd G_M26551_IG05
- dd G_M26551_IG05
-; Total bytes of code 84, prolog size 8, PerfScore 119.00, instruction count 35, allocated bytes for code 84 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 123.50, instruction count 37, allocated bytes for code 88 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +108,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,95 +9,90 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 12, 8.50) byref -> r0 this single-def
-; V01 loc0 [V01,T01] ( 7, 4.50) ubyte -> r4
+; V01 loc0 [V01,T01] ( 7, 4.50) ubyte -> r3
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T11] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V04 tmp2 [V04,T07] ( 3, 1.50) int -> r3
; V05 tmp3 [V05,T08] ( 3, 1.50) int -> r3
;* V06 tmp4 [V06,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp5 [V07,T06] ( 2, 2 ) byref -> r3 single-def "Inlining Arg"
+; V07 tmp5 [V07,T06] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
;* V08 tmp6 [V08,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V10 tmp8 [V10,T12] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V11 cse0 [V11,T05] ( 5, 2.50) int -> r3 "CSE - aggressive"
-; V12 cse1 [V12,T02] ( 8, 4 ) ref -> r6 multi-def "CSE - aggressive"
-; V13 cse2 [V13,T04] ( 5, 3.50) ref -> r3 multi-def "CSE - aggressive"
-; V14 cse3 [V14,T03] ( 6, 4 ) ref -> r5 "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 5, 2.50) int -> r1 "CSE - aggressive"
+; V12 cse1 [V12,T02] ( 8, 4 ) ref -> lr multi-def "CSE - aggressive"
+; V13 cse2 [V13,T04] ( 5, 3.50) ref -> r1 multi-def "CSE - aggressive"
+; V14 cse3 [V14,T03] ( 6, 4 ) ref -> r2 "CSE - aggressive"
;
; Lcl frame size = 4
G_M35532_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr}
- add r11, sp, 16
+ push {r3,r4,r11,lr}
+ add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
G_M35532_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- movs r4, 1
- ldr r5, [r0]
- ; gcrRegs +[r5]
- cmp r5, 0
+ movs r3, 1
+ ldr r2, [r0]
+ ; gcrRegs +[r2]
+ cmp r2, 0
beq SHORT G_M35532_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M35532_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- ldr r3, [r0+0x08]
- ; gcrRegs +[r3]
- cmp r3, 0
+G_M35532_IG03: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ ldr r1, [r0+0x08]
+ ; gcrRegs +[r1]
+ cmp r1, 0
bne SHORT G_M35532_IG04
- ldr r6, [r0+0x04]
- ; gcrRegs +[r6]
- cmp r6, 0
+ ldr lr, [r0+0x04]
+ ; gcrRegs +[lr]
+ cmp lr, 0
bne SHORT G_M35532_IG04
- movs r4, 0
- ;; size=14 bbWeight=0.50 PerfScore 3.50
-G_M35532_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- ; gcrRegs -[r3 r6]
- ldr r3, [r0+0x08]
- ; gcrRegs +[r3]
- cmp r3, 0
+ movs r3, 0
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M35532_IG04: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ ; gcrRegs -[r1 lr]
+ ldr r1, [r0+0x08]
+ ; gcrRegs +[r1]
+ cmp r1, 0
beq SHORT G_M35532_IG06
;; size=6 bbWeight=1 PerfScore 3.00
-G_M35532_IG05: ; bbWeight=0.50, gcrefRegs=0028 {r3 r5}, byrefRegs=0001 {r0}, byref, isz
- ldr r6, [r0+0x04]
- ; gcrRegs +[r6]
- cmp r6, 0
+G_M35532_IG05: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0001 {r0}, byref, isz
+ ldr lr, [r0+0x04]
+ ; gcrRegs +[lr]
+ cmp lr, 0
beq SHORT G_M35532_IG06
- ldr r3, [r3+0x04]
- ; gcrRegs -[r3]
- ldr r2, [r6+0x04]
- cmp r3, r2
+ ldr r1, [r1+0x04]
+ ; gcrRegs -[r1]
+ ldr lr, [lr+0x04]
+ ; gcrRegs -[lr]
+ cmp r1, lr
bne SHORT G_M35532_IG06
- movs r4, 0
+ movs r3, 0
b SHORT G_M35532_IG07
- ;; size=18 bbWeight=0.50 PerfScore 4.50
-G_M35532_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- ; gcrRegs -[r6]
- cmp r4, 0
+ ;; size=24 bbWeight=0.50 PerfScore 4.50
+G_M35532_IG06: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ cmp r3, 0
bne SHORT G_M35532_IG18
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M35532_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- add r3, r0, 12
- ; byrRegs +[r3]
- ldr r3, [r3+0x20]
- ; byrRegs -[r3]
- cmp r3, 1
+G_M35532_IG07: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ add r1, r0, 12
+ ; byrRegs +[r1]
+ ldr r1, [r1+0x20]
+ ; byrRegs -[r1]
+ cmp r1, 1
beq SHORT G_M35532_IG08
- cmp r3, 3
+ cmp r1, 3
beq SHORT G_M35532_IG08
- cmp r3, 2
+ cmp r1, 2
beq SHORT G_M35532_IG08
- cmp r3, 4
- beq SHORT G_M35532_IG08
- ldr r3, [r0+0x2C]
- cmp r3, 5
- bne SHORT G_M35532_IG18
- b SHORT G_M35532_IG13
- ;; size=30 bbWeight=0.50 PerfScore 7.00
-G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- cmp r5, 0
+ cmp r1, 4
+ bne SHORT G_M35532_IG13
+ ;; size=22 bbWeight=0.50 PerfScore 5.00
+G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ cmp r2, 0
beq SHORT G_M35532_IG11
- ldr r3, [r5+0x04]
+ ldr r3, [r2+0x04]
ldr r2, [r0+0x14]
- ; gcrRegs +[r2]
ldr r2, [r2+0x04]
; gcrRegs -[r2]
cmp r3, r2
@@ -106,7 +101,6 @@ G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0},
b SHORT G_M35532_IG10
;; size=18 bbWeight=0.50 PerfScore 4.50
G_M35532_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
- ; gcrRegs -[r5]
movs r3, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35532_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
@@ -116,26 +110,30 @@ G_M35532_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b
movs r3, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35532_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- uxtb r4, r3
+ uxtb r3, r3
b SHORT G_M35532_IG18
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M35532_IG13: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- ; gcrRegs +[r5]
- ldr r6, [r0+0x04]
- ; gcrRegs +[r6]
- cmp r6, 0
+G_M35532_IG13: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ ; gcrRegs +[r2]
+ ldr r1, [r0+0x2C]
+ cmp r1, 5
+ bne SHORT G_M35532_IG18
+ ldr lr, [r0+0x04]
+ ; gcrRegs +[lr]
+ cmp lr, 0
beq SHORT G_M35532_IG18
- cmp r5, 0
+ cmp r2, 0
beq SHORT G_M35532_IG16
- ldr r3, [r5+0x04]
- ldr r2, [r6+0x04]
+ ldr r3, [r2+0x04]
+ ldr r2, [lr+0x04]
+ ; gcrRegs -[r2]
cmp r3, r2
bne SHORT G_M35532_IG14
movs r3, 0
b SHORT G_M35532_IG15
- ;; size=22 bbWeight=0.50 PerfScore 5.50
+ ;; size=34 bbWeight=0.50 PerfScore 7.00
G_M35532_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
- ; gcrRegs -[r5-r6]
+ ; gcrRegs -[lr]
movs r3, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35532_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
@@ -145,10 +143,10 @@ G_M35532_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b
movs r3, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35532_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
- uxtb r4, r3
+ uxtb r3, r3
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35532_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- cmp r4, 0
+ cmp r3, 0
bne SHORT G_M35532_IG20
adds r0, 12
movw r3, 0xd1ff
@@ -157,7 +155,7 @@ G_M35532_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
;; size=16 bbWeight=1 PerfScore 6.00
G_M35532_IG19: ; bbWeight=1, epilog, nogc, extend
add sp, 4
- pop {r4,r5,r6,r11,lr}
+ pop {r4,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 3.00
@@ -196,7 +194,7 @@ G_M35532_IG20: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=62 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 8, PerfScore 48.50, instruction count 100, allocated bytes for code 232 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
+; Total bytes of code 246, prolog size 8, PerfScore 48.00, instruction count 99, allocated bytes for code 246 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
; ============================================================
Unwind Info:
@@ -208,18 +206,18 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 116 (0x00074) Actual length = 232 (0x0000e8)
+ Function Length : 123 (0x0007b) Actual length = 246 (0x0000f6)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 3 (0x03)
---- Unwind codes ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
FF end
---- Epilog start at index 3 ----
01 add sp, sp, #4 ; opsize 16
- A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
...
@@ -39,29 +39,21 @@ G_M52491_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0009 {r0 r3},
; gcrRegs +[r0 r3]
uxtb r2, r1
cmp r2, 0
- beq SHORT G_M52491_IG07
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M52491_IG06: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r3]
- b SHORT G_M52491_IG08
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M52491_IG07: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r3]
+ bne SHORT G_M52491_IG06
ldr r3, [r3+0x30]
; gcrRegs -[r3]
and r3, r3, 7
cmp r3, 6
- beq SHORT G_M52491_IG08
- b SHORT G_M52491_IG03
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M52491_IG08: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ bne SHORT G_M52491_IG03
+ ;; size=16 bbWeight=1 PerfScore 7.00
+G_M52491_IG06: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
ldr r0, [r0+0x10]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M52491_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M52491_IG07: ; bbWeight=0, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 6, PerfScore 13.00, instruction count 18, allocated bytes for code 44 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 40, prolog size 6, PerfScore 12.00, instruction count 16, allocated bytes for code 40 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
@@ -73,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 20 (0x00014) Actual length = 40 (0x000028)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -39,29 +39,21 @@ G_M57887_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0009 {r0 r3},
; gcrRegs +[r0 r3]
uxtb r2, r1
cmp r2, 0
- beq SHORT G_M57887_IG07
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M57887_IG06: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r3]
- b SHORT G_M57887_IG08
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG07: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r3]
+ bne SHORT G_M57887_IG06
ldr r3, [r3+0x30]
; gcrRegs -[r3]
and r3, r3, 7
cmp r3, 6
- beq SHORT G_M57887_IG08
- b SHORT G_M57887_IG03
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M57887_IG08: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ bne SHORT G_M57887_IG03
+ ;; size=16 bbWeight=1 PerfScore 7.00
+G_M57887_IG06: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
ldr r0, [r0+0x0C]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG07: ; bbWeight=0, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 6, PerfScore 13.00, instruction count 18, allocated bytes for code 44 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 40, prolog size 6, PerfScore 12.00, instruction count 16, allocated bytes for code 40 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
@@ -73,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 20 (0x00014) Actual length = 40 (0x000028)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -39,29 +39,21 @@ G_M52491_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0009 {r0 r3},
; gcrRegs +[r0 r3]
uxtb r2, r1
cmp r2, 0
- beq SHORT G_M52491_IG07
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M52491_IG06: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r3]
- b SHORT G_M52491_IG08
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M52491_IG07: ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r3]
+ bne SHORT G_M52491_IG06
ldr r3, [r3+0x30]
; gcrRegs -[r3]
and r3, r3, 7
cmp r3, 6
- beq SHORT G_M52491_IG08
- b SHORT G_M52491_IG03
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M52491_IG08: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ bne SHORT G_M52491_IG03
+ ;; size=16 bbWeight=1 PerfScore 7.00
+G_M52491_IG06: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
ldr r0, [r0+0x10]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M52491_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M52491_IG07: ; bbWeight=0, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 6, PerfScore 13.00, instruction count 18, allocated bytes for code 44 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 40, prolog size 6, PerfScore 12.00, instruction count 16, allocated bytes for code 40 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
@@ -73,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 20 (0x00014) Actual length = 40 (0x000028)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -5,22 +5,22 @@
; optimized using Dynamic PGO
; r11 based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2280
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2280
; 5 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 6, 3 ) ref -> r7 this class-hnd single-def <System.Text.Encoding>
; V01 arg1 [V01,T02] ( 7, 5 ) int -> r6 single-def
-; V02 arg2 [V02,T00] ( 9, 6.00) int -> r4 single-def
+; V02 arg2 [V02,T00] ( 11, 6.00) int -> r4 single-def
; V03 arg3 [V03,T01] ( 7, 5.00) int -> r5 single-def
; V04 arg4 [V04,T06] ( 5, 2.00) int -> r9 single-def
-; V05 arg5 [V05,T04] ( 4, 3.00) ref -> r8 class-hnd single-def <System.Text.DecoderNLS>
-; V06 loc0 [V06,T07] ( 3, 2.00) int -> r10
-; V07 loc1 [V07 ] ( 5, 3.00) int -> [sp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op
+; V05 arg5 [V05,T05] ( 4, 3.00) ref -> r8 class-hnd single-def <System.Text.DecoderNLS>
+; V06 loc0 [V06,T07] ( 4, 2.00) int -> r10
+; V07 loc1 [V07 ] ( 6, 3.00) int -> [sp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op
; V08 OutArgs [V08 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T08] ( 2, 0.00) int -> r0
; V10 tmp2 [V10,T09] ( 2, 0.00) int -> r0
-; V11 tmp3 [V11,T05] ( 4, 3 ) int -> r0 "guarded devirt return temp"
+; V11 tmp3 [V11,T04] ( 5, 3 ) int -> r0 "guarded devirt return temp"
;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -52,146 +52,36 @@ G_M57765_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=26 bbWeight=1 PerfScore 9.00
G_M57765_IG02: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
cmp r8, 0
- bne SHORT G_M57765_IG04
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M57765_IG03: ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M57765_IG04: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+ beq G_M57765_IG20
cmp r4, 0
- bge SHORT G_M57765_IG06
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M57765_IG05: ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M57765_IG06: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+ blt G_M57765_IG21
+ ;; size=14 bbWeight=1 PerfScore 4.00
+G_M57765_IG03: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
- bne SHORT G_M57765_IG10
+ beq SHORT G_M57765_IG10
;; size=4 bbWeight=1 PerfScore 2.00
-G_M57765_IG07: ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
- cmp r4, 0
- beq SHORT G_M57765_IG08
- movs r0, 0
- b SHORT G_M57765_IG09
- ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG08: ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
- movs r0, 1
- ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG09: ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
- uxtb r0, r0
- cmp r0, 0
- beq SHORT G_M57765_IG24
- ;; size=6 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG10: ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M57765_IG04: ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
cmp r9, 0
- bge SHORT G_M57765_IG12
- ;; size=6 bbWeight=1.00 PerfScore 2.00
-G_M57765_IG11: ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M57765_IG12: ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+ blt G_M57765_IG22
+ ;; size=8 bbWeight=1.00 PerfScore 2.00
+G_M57765_IG05: ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
cmp r5, 0
- bne SHORT G_M57765_IG16
+ beq SHORT G_M57765_IG13
;; size=4 bbWeight=1.00 PerfScore 2.00
-G_M57765_IG13: ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
- cmp r9, 0
- beq SHORT G_M57765_IG14
- movs r0, 0
- b SHORT G_M57765_IG15
- ;; size=10 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG14: ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
- movs r0, 1
- ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG15: ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
- uxtb r0, r0
- cmp r0, 0
- beq SHORT G_M57765_IG25
- ;; size=6 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG16: ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M57765_IG06: ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
mov r10, 0
movs r0, 0
str r0, [sp+0x1C] // [V07 loc1]
ldr r0, [r8+0x18]
cmp r0, 0
- beq SHORT G_M57765_IG19
+ bne SHORT G_M57765_IG18
;; size=16 bbWeight=1.00 PerfScore 6.00
-G_M57765_IG17: ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
- str r9, [sp] // [V08 OutArgs]
- ldr r0, [sp+0x1C] // [V07 loc1]
- str r0, [sp+0x04] // [V08 OutArgs+0x04]
- str r10, [sp+0x08] // [V08 OutArgs+0x08]
- str r8, [sp+0x0C] // [V08 OutArgs+0x0c]
- mov r0, r7
- ; gcrRegs +[r0]
- mov r1, r6
- mov r2, r4
- mov r3, r5
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr lr, [lr]
- blx lr // System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this
- ; gcrRegs -[r0 r7-r8]
- ;; size=38 bbWeight=0 PerfScore 0.00
-G_M57765_IG18: ; bbWeight=0, epilog, nogc, extend
- add sp, 36
- pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M57765_IG19: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r7-r8]
+G_M57765_IG07: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
ldr r0, [r7]
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M57765_IG23
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M57765_IG20: ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
- str r9, [sp] // [V08 OutArgs]
- add r0, sp, 28 // [V07 loc1]
- str r0, [sp+0x04] // [V08 OutArgs+0x04]
- mov r0, r7
- ; gcrRegs +[r0]
- mov r1, r6
- mov r2, r4
- mov r3, r5
- ldr lr, [r7]
- ldr lr, [lr+0x48]
- ldr lr, [lr+0x14]
- blx lr // <unknown method>
- ; gcrRegs -[r0]
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M57765_IG21: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
- mov r10, r0
- ldr r1, [sp+0x1C] // [V07 loc1]
- cmp r1, r4
bne SHORT G_M57765_IG17
- str r4, [r8+0x10]
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M57765_IG22: ; bbWeight=1, epilog, nogc, extend
- add sp, 36
- pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M57765_IG23: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
add r0, sp, 24 // [V23 tmp15]
str r0, [sp] // [V08 OutArgs]
add r0, sp, 20 // [V24 tmp16]
@@ -213,9 +103,50 @@ G_M57765_IG23: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8},
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DIV
- b SHORT G_M57765_IG21
- ;; size=54 bbWeight=1 PerfScore 22.00
-G_M57765_IG24: ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+ mov r10, r0
+ ldr r1, [sp+0x1C] // [V07 loc1]
+ cmp r1, r4
+ bne SHORT G_M57765_IG18
+ ;; size=74 bbWeight=1 PerfScore 30.00
+G_M57765_IG08: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r7]
+ str r4, [r8+0x10]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M57765_IG09: ; bbWeight=1, epilog, nogc, extend
+ add sp, 36
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M57765_IG10: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r7]
+ cmp r4, 0
+ beq SHORT G_M57765_IG11
+ movs r0, 0
+ b SHORT G_M57765_IG12
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG11: ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
+ movs r0, 1
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG12: ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+ uxtb r0, r0
+ cmp r0, 0
+ beq SHORT G_M57765_IG23
+ b SHORT G_M57765_IG04
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG13: ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+ cmp r9, 0
+ beq SHORT G_M57765_IG14
+ movs r0, 0
+ b SHORT G_M57765_IG15
+ ;; size=10 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG14: ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
+ movs r0, 1
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG15: ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+ uxtb r0, r0
+ cmp r0, 0
+ bne SHORT G_M57765_IG06
+ ;; size=6 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG16: ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
@@ -224,9 +155,50 @@ G_M57765_IG24: ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, b
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- b SHORT G_M57765_IG10
+ b SHORT G_M57765_IG06
;; size=30 bbWeight=0 PerfScore 0.00
...
@@ -7,7 +7,7 @@
; 5 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 8 ) ref -> r4 this class-hnd single-def <System.Xml.Serialization.CodeGenerator>
+; V00 this [V00,T00] ( 10, 8 ) ref -> r4 this class-hnd single-def <System.Xml.Serialization.CodeGenerator>
; V01 arg1 [V01,T06] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Type>
; V02 arg2 [V02,T03] ( 6, 4.50) ref -> r5 class-hnd single-def <System.String>
; V03 arg3 [V03,T04] ( 4, 4 ) ref -> r6 class-hnd single-def <System.Type[]>
@@ -15,19 +15,19 @@
; V05 arg5 [V05,T14] ( 1, 1 ) int -> [sp+0x44] single-def
; V06 OutArgs [V06 ] ( 1, 1 ) struct (24) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T12] ( 3, 1.50) int -> r9 "guarded devirt return temp"
-; V08 tmp2 [V08,T05] ( 5, 5 ) ref -> r0 single-def "guarded devirt arg temp"
+; V08 tmp2 [V08,T05] ( 7, 5 ) ref -> r0 single-def "guarded devirt arg temp"
;* V09 tmp3 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.Emit.RuntimeMethodBuilder>
; V10 tmp4 [V10,T02] ( 4, 8 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Reflection.Emit.TypeBuilder>
;* V11 tmp5 [V11,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V12 tmp6 [V12,T01] ( 9, 9 ) ref -> r7 class-hnd single-def "Inlining Arg" <System.Reflection.Emit.MethodBuilder>
-; V13 tmp7 [V13,T11] ( 3, 1.50) ref -> r1 "guarded devirt return temp"
+; V13 tmp7 [V13,T10] ( 4, 2 ) ref -> r1 "guarded devirt return temp"
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.Emit.RuntimeMethodBuilder>
-; V15 tmp9 [V15,T10] ( 2, 2 ) ref -> r1 class-hnd single-def "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
-; V16 tmp10 [V16,T09] ( 4, 2 ) ref -> r1
+; V15 tmp9 [V15,T11] ( 2, 2 ) ref -> r1 class-hnd single-def "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
+; V16 tmp10 [V16,T09] ( 4, 2.50) ref -> r1
; V17 tmp11 [V17,T07] ( 4, 4 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.RuntimeILGenerator>
; V19 tmp13 [V19,T16] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V20 cse0 [V20,T08] ( 3, 3 ) int -> r8 "CSE - aggressive"
+; V20 cse0 [V20,T08] ( 4, 3 ) int -> r8 "CSE - aggressive"
; TEMP_01 ref -> [r11-0x1C]
;
; Lcl frame size = 32
@@ -51,47 +51,27 @@ G_M17396_IG02: ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000
; gcrRegs +[r0]
ldrsb r2, [r0]
cmp r5, 0
- beq SHORT G_M17396_IG04
+ beq SHORT G_M17396_IG15
;; size=10 bbWeight=1 PerfScore 4.00
G_M17396_IG03: ; bbWeight=0.50, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r2, [r5+0x04]
cmp r2, 0
- bne SHORT G_M17396_IG05
+ beq SHORT G_M17396_IG15
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M17396_IG04: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0-r1 r4 r6]
- movw r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_STRCNS
- ; gcrRegs +[r0]
- mov r1, r0
- ; gcrRegs +[r1]
- mov r0, r5
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)
- ; gcrRegs -[r0-r1 r5]
- bkpt
- ;; size=40 bbWeight=0 PerfScore 0.00
-G_M17396_IG05: ; bbWeight=1, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r0-r1 r4-r6]
+G_M17396_IG04: ; bbWeight=1, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref
str r1, [sp]
movs r1, 0
; gcrRegs -[r1]
str r1, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M17396_IG06: ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M17396_IG05: ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref
str r1, [sp+0x08]
str r6, [sp+0x0C]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M17396_IG07: ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M17396_IG06: ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref
str r1, [sp+0x10]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M17396_IG08: ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG07: ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
str r1, [sp+0x14]
mov r1, r5
; gcrRegs +[r1]
@@ -119,9 +99,9 @@ G_M17396_IG08: ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000
movw r8, 0xd1ff
movt r8, 0xd1ff
cmp r0, r8
- bne SHORT G_M17396_IG11
+ bne SHORT G_M17396_IG16
;; size=56 bbWeight=1 PerfScore 20.00
-G_M17396_IG09: ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG08: ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r7
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -139,7 +119,7 @@ G_M17396_IG09: ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
ldr r1, [r7+0x1C]
; gcrRegs +[r1]
cmp r1, 0
- bne SHORT G_M17396_IG10
+ bne SHORT G_M17396_IG09
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -169,25 +149,8 @@ G_M17396_IG09: ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
mov r1, r9
; gcrRegs +[r1]
;; size=90 bbWeight=0.50 PerfScore 16.00
-G_M17396_IG10: ; bbWeight=0.50, gcrefRegs=0052 {r1 r4 r6}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG09: ; bbWeight=1, gcrefRegs=0052 {r1 r4 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9]
- b SHORT G_M17396_IG12
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M17396_IG11: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r1] +[r7]
- mov r0, r7
- ; gcrRegs +[r0]
- movs r1, 64
- ldr r3, [r7]
- ldr r3, [r3+0x44]
- ldr r3, [r3+0x04]
- blx r3 // <unknown method>
- ; gcrRegs -[r7]
- mov r1, r0
- ; gcrRegs +[r1]
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M17396_IG12: ; bbWeight=1, gcrefRegs=0052 {r1 r4 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
add r0, r4, 12
; byrRegs +[r0]
movw r12, 0xd1ff
@@ -199,23 +162,23 @@ G_M17396_IG12: ; bbWeight=1, gcrefRegs=0052 {r1 r4 r6}, byrefRegs=0000 {}
; gcrRegs +[r0]
ldr r3, [r0]
cmp r3, r8
- bne SHORT G_M17396_IG18
+ bne SHORT G_M17396_IG17
;; size=22 bbWeight=1 PerfScore 8.00
-G_M17396_IG13: ; bbWeight=0.50, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0000 {}, byref
+G_M17396_IG10: ; bbWeight=0.50, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0000 {}, byref
ldr r9, [r0+0x4C]
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17396_IG14: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG11: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
and r3, r9, 16
cmp r3, 16
- beq SHORT G_M17396_IG15
+ beq SHORT G_M17396_IG12
movs r3, 0
- b SHORT G_M17396_IG16
+ b SHORT G_M17396_IG13
;; size=12 bbWeight=1 PerfScore 5.00
-G_M17396_IG15: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
+G_M17396_IG12: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
movs r3, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M17396_IG16: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
+G_M17396_IG13: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
mov r1, r6
@@ -226,23 +189,67 @@ G_M17396_IG16: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, b
movt lr, 0xd1ff
ldr r12, [lr]
;; size=18 bbWeight=1 PerfScore 6.00
-G_M17396_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M17396_IG14: ; bbWeight=1, epilog, nogc, extend
add sp, 32
pop {r4,r5,r6,r7,r8,r9,r11,lr}
bx r12 // <unknown method>
;; size=8 bbWeight=1 PerfScore 3.00
-G_M17396_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r1-r2]
+G_M17396_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0-r2 r4 r6] +[r5]
+ movw r0, 0xd1ff
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_STRCNS
+ ; gcrRegs +[r0]
+ mov r1, r0
+ ; gcrRegs +[r1]
+ mov r0, r5
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)
+ ; gcrRegs -[r0-r1 r5]
+ bkpt
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M17396_IG16: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4 r6-r7]
+ mov r0, r7
+ ; gcrRegs +[r0]
+ movs r1, 64
+ ldr r3, [r7]
+ ldr r3, [r3+0x44]
+ ldr r3, [r3+0x04]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r7]
+ mov r1, r0
+ ; gcrRegs +[r1]
+ add r0, r4, 12
+ ; gcrRegs -[r0]
+ ; byrRegs +[r0]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0]
+ ldr r0, [r4+0x08]
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ cmp r3, r8
+ beq SHORT G_M17396_IG10
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M17396_IG17: ; bbWeight=0, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0000 {}, byref, isz
ldr r3, [r0]
ldr r3, [r3+0x34]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
; gcrRegs -[r0]
mov r9, r0
- b SHORT G_M17396_IG14
+ b SHORT G_M17396_IG11
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 14, PerfScore 79.50, instruction count 124, allocated bytes for code 328 (MethodHash=d7c6bc0b) for method System.Xml.Serialization.CodeGenerator:BeginMethod(System.Type,System.String,System.Type[],System.String[],int):this (Tier1)
+; Total bytes of code 348, prolog size 14, PerfScore 79.00, instruction count 131, allocated bytes for code 348 (MethodHash=d7c6bc0b) for method System.Xml.Serialization.CodeGenerator:BeginMethod(System.Type,System.String,System.Type[],System.String[],int):this (Tier1)
; ============================================================
Unwind Info:
@@ -254,7 +261,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 164 (0x000a4) Actual length = 328 (0x000148)
+ Function Length : 174 (0x000ae) Actual length = 348 (0x00015c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -5,11 +5,11 @@
; optimized using Dynamic PGO
; r11 based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 50208
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 50208
; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 6, 5.88) byref -> [sp+0x24] this single-def
+; V00 this [V00,T00] ( 7, 5.88) byref -> [sp+0x24] this single-def
; V01 arg1 [V01,T01] ( 9, 4.56) int -> r8 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 loc1 [V03,T02] ( 6, 3.75) int -> r0
@@ -17,7 +17,7 @@
; V05 tmp1 [V05,T09] ( 2, 0.02) int -> r0
;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref
;* V07 tmp3 [V07 ] ( 0, 0 ) byref -> zero-ref single-def
-; V08 tmp4 [V08,T08] ( 3, 2 ) int -> r4
+; V08 tmp4 [V08,T08] ( 3, 2 ) int -> r6
; V09 tmp5 [V09,T10] ( 2, 0.25) int -> r0
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -27,7 +27,7 @@
; V15 PInvokeFrame [V15 ] ( 6, 3.35) struct (36) [sp+0x00] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V16 cse0 [V16,T07] ( 3, 2.00) int -> r3 "CSE - aggressive"
; V17 cse1 [V17,T05] ( 3, 2.62) int -> r3 "CSE - aggressive"
-; V18 cse2 [V18,T04] ( 3, 3 ) int -> r0 "CSE - aggressive"
+; V18 cse2 [V18,T04] ( 5, 3 ) int -> r4 "CSE - aggressive"
; V19 cse3 [V19,T06] ( 6, 2.55) int -> r0 "CSE - aggressive"
;
; Lcl frame size = 44
@@ -46,73 +46,107 @@ G_M55570_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byre
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_INIT_PINVOKE_FRAME
cmp r8, -1
- bge SHORT G_M55570_IG04
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M55570_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M55570_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
+ blt G_M55570_IG33
+ ;; size=20 bbWeight=1 PerfScore 6.00
+G_M55570_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
cmp r8, 0
- blt SHORT G_M55570_IG08
+ bge SHORT G_M55570_IG25
;; size=6 bbWeight=1 PerfScore 2.00
-G_M55570_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
- cmp r8, 10
- bge SHORT G_M55570_IG06
- movs r0, 0
- b SHORT G_M55570_IG07
- ;; size=10 bbWeight=0.01 PerfScore 0.04
-G_M55570_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref
- movs r0, 1
- ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M55570_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
- uxtb r0, r0
- cmp r0, 0
- beq G_M55570_IG33
- ;; size=8 bbWeight=0.01 PerfScore 0.03
-G_M55570_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
+G_M55570_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
str r7, [sp+0x24]
; GC ptr vars +{V00}
ldr r0, [r7]
cmp r0, 10
- blt SHORT G_M55570_IG16
+ bge SHORT G_M55570_IG15
;; size=8 bbWeight=1 PerfScore 4.00
-G_M55570_IG09: ; bbWeight=0.15, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M55570_IG05: ; bbWeight=0.88, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[r7]
- cmp r0, r8
- blt SHORT G_M55570_IG10
- cmp r8, 0
- bge SHORT G_M55570_IG12
- ;; size=10 bbWeight=0.15 PerfScore 0.60
-G_M55570_IG10: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sub r1, r0, 10
- ands r1, r1, 1
- cmp r1, 0
- bne SHORT G_M55570_IG16
- ;; size=12 bbWeight=0.15 PerfScore 0.60
-G_M55570_IG11: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r0, r8
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // <unknown method>
+ ldr r7, [sp+0x24] // [V00 this]
+ ; byrRegs +[r7]
+ ldr r3, [r7]
+ cmp r3, 30
+ bgt SHORT G_M55570_IG07
+ ;; size=18 bbWeight=0.88 PerfScore 6.13
+G_M55570_IG06: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r7]
+ and r3, r3, 31
+ movs r2, 1
+ lsl r3, r2, r3
+ cmp r3, r0
blt SHORT G_M55570_IG14
- ;; size=4 bbWeight=0.12 PerfScore 0.25
-G_M55570_IG12: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r8, 0
- blt SHORT G_M55570_IG14
- ;; size=6 bbWeight=0.12 PerfScore 0.23
-G_M55570_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movs r0, 1
+ ;; size=14 bbWeight=0.87 PerfScore 4.37
+G_M55570_IG07: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp r0, 0x400
+ bge G_M55570_IG31
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ;; size=16 bbWeight=0.88 PerfScore 3.50
+G_M55570_IG08: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ blx r3 // <unknown method>
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
- blx r3 // <unknown method>
- b SHORT G_M55570_IG21
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M55570_IG14: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
+ bne SHORT G_M55570_IG13
+ ;; size=16 bbWeight=0.88 PerfScore 5.25
+G_M55570_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldr r7, [sp+0x24] // [V00 this]
+ ; byrRegs +[r7]
+ ldr r4, [r7]
+ mvn r0, 0x80000000
+ cmp r4, r0
+ beq G_M55570_IG32
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M55570_IG10: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, gcvars, byref
+ ; GC ptr vars -{V00}
+ adds r6, r4, 1
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M55570_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref
+ str r6, [r7]
+ ldr r0, [sp+0x08] // [V15 PInvokeFrame+0x08]
+ ; byrRegs +[r0]
+ str r0, [r5+0x0C]
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M55570_IG12: ; bbWeight=1, epilog, nogc, extend
+ add sp, 44
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M55570_IG13: ; bbWeight=0.44, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[r0 r7]
+ ; GC ptr vars +{V00}
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_POLL_GC
+ b SHORT G_M55570_IG09
+ ;; size=12 bbWeight=0.44 PerfScore 1.75
+G_M55570_IG14: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov r0, r3
+ b SHORT G_M55570_IG07
+ ;; size=4 bbWeight=0.25 PerfScore 0.51
+G_M55570_IG15: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp r0, r8
+ blt SHORT G_M55570_IG16
+ cmp r8, 0
+ bge SHORT G_M55570_IG18
+ ;; size=10 bbWeight=0.15 PerfScore 0.60
+G_M55570_IG16: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ sub r1, r0, 10
+ ands r1, r1, 1
+ cmp r1, 0
+ bne SHORT G_M55570_IG05
+ ;; size=12 bbWeight=0.15 PerfScore 0.60
+G_M55570_IG17: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp r0, r8
+ blt SHORT G_M55570_IG19
+ ;; size=4 bbWeight=0.12 PerfScore 0.25
+G_M55570_IG18: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp r8, 0
+ bge SHORT G_M55570_IG29
+ ;; size=6 bbWeight=0.12 PerfScore 0.23
+G_M55570_IG19: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
subs r0, 10
movs r1, 2
movw r3, 0xd1ff
@@ -123,127 +157,78 @@ G_M55570_IG14: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_MOD
cmp r0, 4
- bne SHORT G_M55570_IG28
+ beq SHORT G_M55570_IG28
;; size=30 bbWeight=0.12 PerfScore 1.37
-G_M55570_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movs r0, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- b SHORT G_M55570_IG21
- ;; size=16 bbWeight=0.01 PerfScore 0.06
-G_M55570_IG16: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ldr r7, [sp+0x24] // [V00 this]
- ; byrRegs +[r7]
- ldr r3, [r7]
- cmp r3, 30
- bgt SHORT G_M55570_IG19
- ;; size=18 bbWeight=0.88 PerfScore 6.13
-G_M55570_IG17: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r7]
- and r3, r3, 31
- movs r2, 1
- lsl r3, r2, r3
- cmp r3, r0
- bge SHORT G_M55570_IG19
- ;; size=14 bbWeight=0.87 PerfScore 4.37
-G_M55570_IG18: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov r0, r3
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M55570_IG19: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r0, 0x400
- blt SHORT G_M55570_IG26
- ;; size=6 bbWeight=0.88 PerfScore 1.75
-G_M55570_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M55570_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r7, [sp+0x24] // [V00 this]
- ; byrRegs +[r7]
- ldr r0, [r7]
- mvn r1, 0x80000000
- cmp r0, r1
- bne SHORT G_M55570_IG25
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M55570_IG22: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, gcvars, byref
...
@@ -61,11 +61,8 @@ G_M65029_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b
G_M65029_IG03: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
ldr r2, [r0+0x04]
cmp r2, 0
- beq SHORT G_M65029_IG04
- cmp r1, 0
- beq SHORT G_M65029_IG08
- b SHORT G_M65029_IG07
- ;; size=12 bbWeight=0.50 PerfScore 3.00
+ bne SHORT G_M65029_IG07
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M65029_IG04: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
cmp r1, 0
@@ -83,21 +80,20 @@ G_M65029_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M65029_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp r1, 0
+ beq SHORT G_M65029_IG08
ldr r3, [r1+0x04]
cmp r3, 0
- beq SHORT G_M65029_IG08
- adds r0, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- b SHORT G_M65029_IG09
+ bne SHORT G_M65029_IG09
;; size=10 bbWeight=0.50 PerfScore 2.50
G_M65029_IG08: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r1] +[r0]
- ; byrRegs -[r0]
+ ; gcrRegs -[r1]
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M65029_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref
- ; gcrRegs -[r0] +[r1]
+G_M65029_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r1]
+ adds r0, 8
+ ; gcrRegs -[r0]
; byrRegs +[r0]
adds r1, 8
; gcrRegs -[r1]
@@ -115,12 +111,12 @@ G_M65029_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1},
blx lr // <unknown method>
; gcrRegs +[r0]
; byrRegs -[r0 r2]
- ;; size=22 bbWeight=0.50 PerfScore 4.00
+ ;; size=24 bbWeight=0.50 PerfScore 4.50
G_M65029_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 80, prolog size 6, PerfScore 17.50, instruction count 31, allocated bytes for code 80 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (Tier1)
+; Total bytes of code 76, prolog size 6, PerfScore 16.50, instruction count 29, allocated bytes for code 76 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -132,7 +128,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 80 (0x000050)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -80,11 +80,8 @@ G_M49441_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b
G_M49441_IG03: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
ldr r2, [r0+0x04]
cmp r2, 0
- beq SHORT G_M49441_IG04
- cmp r1, 0
- beq SHORT G_M49441_IG07
- b SHORT G_M49441_IG06
- ;; size=12 bbWeight=0.50 PerfScore 3.00
+ bne SHORT G_M49441_IG06
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M49441_IG04: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r1
@@ -94,31 +91,30 @@ G_M49441_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M49441_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp r1, 0
+ beq SHORT G_M49441_IG07
ldr r3, [r1+0x04]
cmp r3, 0
- beq SHORT G_M49441_IG07
+ bne SHORT G_M49441_IG08
+ ;; size=10 bbWeight=0.50 PerfScore 2.50
+G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r1]
+ pop {r3,r4,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M49441_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r1]
add lr, r1, 8
; byrRegs +[lr]
mov r12, lr
; byrRegs +[r12]
mov r4, r3
- b SHORT G_M49441_IG08
- ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r1]
- ; byrRegs -[r12 lr]
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M49441_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=5000 {r12 lr}, gcvars, byref, isz
- ; gcrRegs +[r1]
- ; byrRegs +[r12 lr]
cmp r4, 0
ble SHORT G_M49441_IG09
ldrh r12, [r12]
; byrRegs -[r12]
cmp r12, 47
beq SHORT G_M49441_IG04
- ;; size=14 bbWeight=0.50 PerfScore 2.50
+ ;; size=22 bbWeight=0.50 PerfScore 4.00
G_M49441_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=4000 {lr}, byref
; gcrRegs -[r1]
adds r0, 8
@@ -139,7 +135,7 @@ G_M49441_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 88, prolog size 8, PerfScore 18.50, instruction count 33, allocated bytes for code 88 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 17.50, instruction count 31, allocated bytes for code 84 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -151,7 +147,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
+ Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet
1+Node[System.Canon],System.Collections.Generic.SortedSet`1+Node[System.Canon]):ubyte:this (Tier1)@@ -45,11 +45,8 @@ G_M938_IG05: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byr
ldrb r0, [r0+0x10]
; gcrRegs -[r0]
cmp r0, 1
- bne SHORT G_M938_IG06
- cmp r3, 0
- bne SHORT G_M938_IG12
- b SHORT G_M938_IG10
- ;; size=12 bbWeight=0.50 PerfScore 3.00
+ beq SHORT G_M938_IG10
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M938_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r3, 0
bne SHORT G_M938_IG08
@@ -64,9 +61,11 @@ G_M938_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre
G_M938_IG09: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M938_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M938_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp r3, 0
+ bne SHORT G_M938_IG12
movs r0, 2
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M938_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
@@ -77,7 +76,7 @@ G_M938_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 64, prolog size 6, PerfScore 19.00, instruction count 27, allocated bytes for code 64 (MethodHash=eeeffc55) for method System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (Tier1)
+; Total bytes of code 62, prolog size 6, PerfScore 18.50, instruction count 26, allocated bytes for code 62 (MethodHash=eeeffc55) for method System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -89,7 +88,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 64 (0x000040)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -16,7 +16,7 @@
;
; Lcl frame size = 0
-G_M26551_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M26551_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r11,lr}
add r11, sp, 16
mov r4, r0
@@ -39,17 +39,17 @@ G_M26551_IG03: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movt r0, HIGH ADDRESS J_M26551_DS00
J_M26551_DS00 LABEL DWORD
- DD G_M26551_IG05
DD G_M26551_IG07
DD G_M26551_IG05
- DD G_M26551_IG05
- DD G_M26551_IG05
+ DD G_M26551_IG07
+ DD G_M26551_IG07
+ DD G_M26551_IG07
ldr pc, [r0+4*r7]
;; size=24 bbWeight=8 PerfScore 72.00
G_M26551_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
subs r0, 15
cmp r0, 1
- bls SHORT G_M26551_IG05
+ bls SHORT G_M26551_IG07
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r5+0x4C]
@@ -58,18 +58,9 @@ G_M26551_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs -[r0]
cmp r0, 0
bne SHORT G_M26551_IG03
- ;; size=18 bbWeight=4 PerfScore 36.00
+ b SHORT G_M26551_IG09
+ ;; size=20 bbWeight=4 PerfScore 40.00
G_M26551_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r6+0x14]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M26551_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,lr}
- bx r3 // <unknown method>
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M26551_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r5+0x4C]
@@ -80,18 +71,32 @@ G_M26551_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4},
; gcrRegs +[r0]
ldr r3, [r6+0x14]
;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M26551_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r4,r5,r6,r7,r11,lr}
+ bx r3 // <unknown method>
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M26551_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r6+0x14]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M26551_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,lr}
bx r3 // <unknown method>
;; size=6 bbWeight=0.50 PerfScore 1.00
-RWD00 dd G_M26551_IG05
+G_M26551_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0]
+ b SHORT G_M26551_IG07
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+RWD00 dd G_M26551_IG07
+ dd G_M26551_IG05
+ dd G_M26551_IG07
+ dd G_M26551_IG07
dd G_M26551_IG07
- dd G_M26551_IG05
- dd G_M26551_IG05
- dd G_M26551_IG05
-; Total bytes of code 84, prolog size 8, PerfScore 119.00, instruction count 35, allocated bytes for code 84 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (Tier0-FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 123.50, instruction count 37, allocated bytes for code 88 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +108,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,95 +9,90 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 12, 8.50) byref -> r0 this single-def
-; V01 loc0 [V01,T01] ( 7, 4.50) ubyte -> r4
+; V01 loc0 [V01,T01] ( 7, 4.50) ubyte -> r3
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T11] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V04 tmp2 [V04,T07] ( 3, 1.50) int -> r3
; V05 tmp3 [V05,T08] ( 3, 1.50) int -> r3
;* V06 tmp4 [V06,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp5 [V07,T06] ( 2, 2 ) byref -> r3 single-def "Inlining Arg"
+; V07 tmp5 [V07,T06] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
;* V08 tmp6 [V08,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V10 tmp8 [V10,T12] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V11 cse0 [V11,T05] ( 5, 2.50) int -> r3 "CSE - aggressive"
-; V12 cse1 [V12,T02] ( 8, 4 ) ref -> r6 multi-def "CSE - aggressive"
-; V13 cse2 [V13,T04] ( 5, 3.50) ref -> r3 multi-def "CSE - aggressive"
-; V14 cse3 [V14,T03] ( 6, 4 ) ref -> r5 "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 5, 2.50) int -> r1 "CSE - aggressive"
+; V12 cse1 [V12,T02] ( 8, 4 ) ref -> lr multi-def "CSE - aggressive"
+; V13 cse2 [V13,T04] ( 5, 3.50) ref -> r1 multi-def "CSE - aggressive"
+; V14 cse3 [V14,T03] ( 6, 4 ) ref -> r2 "CSE - aggressive"
;
; Lcl frame size = 4
G_M35532_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr}
- add r11, sp, 16
+ push {r3,r4,r11,lr}
+ add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
G_M35532_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- movs r4, 1
- ldr r5, [r0]
- ; gcrRegs +[r5]
- cmp r5, 0
+ movs r3, 1
+ ldr r2, [r0]
+ ; gcrRegs +[r2]
+ cmp r2, 0
beq SHORT G_M35532_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M35532_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- ldr r3, [r0+0x08]
- ; gcrRegs +[r3]
- cmp r3, 0
+G_M35532_IG03: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ ldr r1, [r0+0x08]
+ ; gcrRegs +[r1]
+ cmp r1, 0
bne SHORT G_M35532_IG04
- ldr r6, [r0+0x04]
- ; gcrRegs +[r6]
- cmp r6, 0
+ ldr lr, [r0+0x04]
+ ; gcrRegs +[lr]
+ cmp lr, 0
bne SHORT G_M35532_IG04
- movs r4, 0
- ;; size=14 bbWeight=0.50 PerfScore 3.50
-G_M35532_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- ; gcrRegs -[r3 r6]
- ldr r3, [r0+0x08]
- ; gcrRegs +[r3]
- cmp r3, 0
+ movs r3, 0
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M35532_IG04: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ ; gcrRegs -[r1 lr]
+ ldr r1, [r0+0x08]
+ ; gcrRegs +[r1]
+ cmp r1, 0
beq SHORT G_M35532_IG06
;; size=6 bbWeight=1 PerfScore 3.00
-G_M35532_IG05: ; bbWeight=0.50, gcrefRegs=0028 {r3 r5}, byrefRegs=0001 {r0}, byref, isz
- ldr r6, [r0+0x04]
- ; gcrRegs +[r6]
- cmp r6, 0
+G_M35532_IG05: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0001 {r0}, byref, isz
+ ldr lr, [r0+0x04]
+ ; gcrRegs +[lr]
+ cmp lr, 0
beq SHORT G_M35532_IG06
- ldr r3, [r3+0x04]
- ; gcrRegs -[r3]
- ldr r2, [r6+0x04]
- cmp r3, r2
+ ldr r1, [r1+0x04]
+ ; gcrRegs -[r1]
+ ldr lr, [lr+0x04]
+ ; gcrRegs -[lr]
+ cmp r1, lr
bne SHORT G_M35532_IG06
- movs r4, 0
+ movs r3, 0
b SHORT G_M35532_IG07
- ;; size=18 bbWeight=0.50 PerfScore 4.50
-G_M35532_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- ; gcrRegs -[r6]
- cmp r4, 0
+ ;; size=24 bbWeight=0.50 PerfScore 4.50
+G_M35532_IG06: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ cmp r3, 0
bne SHORT G_M35532_IG18
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M35532_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- add r3, r0, 12
- ; byrRegs +[r3]
- ldr r3, [r3+0x20]
- ; byrRegs -[r3]
- cmp r3, 1
+G_M35532_IG07: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ add r1, r0, 12
+ ; byrRegs +[r1]
+ ldr r1, [r1+0x20]
+ ; byrRegs -[r1]
+ cmp r1, 1
beq SHORT G_M35532_IG08
- cmp r3, 3
+ cmp r1, 3
beq SHORT G_M35532_IG08
- cmp r3, 2
+ cmp r1, 2
beq SHORT G_M35532_IG08
- cmp r3, 4
- beq SHORT G_M35532_IG08
- ldr r3, [r0+0x2C]
- cmp r3, 5
- bne SHORT G_M35532_IG18
- b SHORT G_M35532_IG13
- ;; size=30 bbWeight=0.50 PerfScore 7.00
-G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- cmp r5, 0
+ cmp r1, 4
+ bne SHORT G_M35532_IG13
+ ;; size=22 bbWeight=0.50 PerfScore 5.00
+G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ cmp r2, 0
beq SHORT G_M35532_IG11
- ldr r3, [r5+0x04]
+ ldr r3, [r2+0x04]
ldr r2, [r0+0x14]
- ; gcrRegs +[r2]
ldr r2, [r2+0x04]
; gcrRegs -[r2]
cmp r3, r2
@@ -106,7 +101,6 @@ G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0},
b SHORT G_M35532_IG10
;; size=18 bbWeight=0.50 PerfScore 4.50
G_M35532_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
- ; gcrRegs -[r5]
movs r3, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35532_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
@@ -116,26 +110,30 @@ G_M35532_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b
movs r3, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35532_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- uxtb r4, r3
+ uxtb r3, r3
b SHORT G_M35532_IG18
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M35532_IG13: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
- ; gcrRegs +[r5]
- ldr r6, [r0+0x04]
- ; gcrRegs +[r6]
- cmp r6, 0
+G_M35532_IG13: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+ ; gcrRegs +[r2]
+ ldr r1, [r0+0x2C]
+ cmp r1, 5
+ bne SHORT G_M35532_IG18
+ ldr lr, [r0+0x04]
+ ; gcrRegs +[lr]
+ cmp lr, 0
beq SHORT G_M35532_IG18
- cmp r5, 0
+ cmp r2, 0
beq SHORT G_M35532_IG16
- ldr r3, [r5+0x04]
- ldr r2, [r6+0x04]
+ ldr r3, [r2+0x04]
+ ldr r2, [lr+0x04]
+ ; gcrRegs -[r2]
cmp r3, r2
bne SHORT G_M35532_IG14
movs r3, 0
b SHORT G_M35532_IG15
- ;; size=22 bbWeight=0.50 PerfScore 5.50
+ ;; size=34 bbWeight=0.50 PerfScore 7.00
G_M35532_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
- ; gcrRegs -[r5-r6]
+ ; gcrRegs -[lr]
movs r3, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35532_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
@@ -145,10 +143,10 @@ G_M35532_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b
movs r3, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35532_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
- uxtb r4, r3
+ uxtb r3, r3
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35532_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- cmp r4, 0
+ cmp r3, 0
bne SHORT G_M35532_IG20
adds r0, 12
movw r3, 0xd1ff
@@ -157,7 +155,7 @@ G_M35532_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
;; size=16 bbWeight=1 PerfScore 6.00
G_M35532_IG19: ; bbWeight=1, epilog, nogc, extend
add sp, 4
- pop {r4,r5,r6,r11,lr}
+ pop {r4,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 3.00
@@ -196,7 +194,7 @@ G_M35532_IG20: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=62 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 8, PerfScore 48.50, instruction count 100, allocated bytes for code 232 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (Tier1)
+; Total bytes of code 246, prolog size 8, PerfScore 48.00, instruction count 99, allocated bytes for code 246 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (Tier1)
; ============================================================
Unwind Info:
@@ -208,18 +206,18 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 116 (0x00074) Actual length = 232 (0x0000e8)
+ Function Length : 123 (0x0007b) Actual length = 246 (0x0000f6)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 3 (0x03)
---- Unwind codes ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
FF end
---- Epilog start at index 3 ----
01 add sp, sp, #4 ; opsize 16
- A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
...
@@ -11,24 +11,23 @@
; V00 this [V00,T02] ( 3, 2.50) ref -> r0 this class-hnd single-def <System.Xml.Serialization.XmlSerializationWriter>
; V01 arg1 [V01,T03] ( 3, 2.50) ref -> r1 class-hnd single-def <System.String>
; V02 arg2 [V02,T04] ( 3, 2.50) ref -> r2 class-hnd single-def <System.String>
-; V03 arg3 [V03,T00] ( 5, 4 ) ref -> r4 class-hnd single-def <System.String>
+; V03 arg3 [V03,T01] ( 5, 4 ) ref -> r4 class-hnd single-def <System.String>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp3 [V07,T01] ( 5, 5 ) ref -> r5 class-hnd single-def "Inlining Arg" <System.Xml.XmlWriter>
+; V07 tmp3 [V07,T00] ( 6, 6 ) ref -> r5 class-hnd single-def "Inlining Arg" <System.Xml.XmlWriter>
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlWriter>
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V14 cse0 [V14,T05] ( 3, 1.50) int -> r7 "CSE - moderate"
-; V15 cse1 [V15,T06] ( 3, 1.50) int -> r6 "CSE - moderate"
+; V14 cse0 [V14,T05] ( 3, 1.50) int -> r6 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M11953_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
+ push {r3,r4,r5,r6,r11,lr}
add r11, sp, 16
mov r4, r3
; gcrRegs +[r4]
@@ -47,9 +46,9 @@ G_M11953_IG03: ; bbWeight=0.50, gcrefRegs=0017 {r0 r1 r2 r4}, byrefRegs=0
mov r2, r1
movs r1, 0
; gcrRegs -[r1]
- ldr r6, [r5]
- ldr r7, [r6+0x30]
- ldr lr, [r7+0x04]
+ ldr lr, [r5]
+ ldr r6, [lr+0x30]
+ ldr lr, [r6+0x04]
blx lr // <unknown method>
; gcrRegs -[r0 r2-r3]
ldr r0, [r4+0x04]
@@ -59,50 +58,56 @@ G_M11953_IG03: ; bbWeight=0.50, gcrefRegs=0017 {r0 r1 r2 r4}, byrefRegs=0
; gcrRegs +[r0]
mov r1, r4
; gcrRegs +[r1]
- ldr r3, [r6+0x34]
+ ldr r3, [r5]
+ ldr r3, [r3+0x34]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
; gcrRegs -[r0-r1 r4]
- ;; size=36 bbWeight=0.50 PerfScore 8.50
+ ;; size=42 bbWeight=0.50 PerfScore 9.00
G_M11953_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
mov r0, r5
; gcrRegs +[r0]
- ldr r3, [r7+0x08]
+ ldr r3, [r6+0x08]
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M11953_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,lr}
+ add sp, 4
+ pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M11953_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r0 r5]
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 64, prolog size 8, PerfScore 16.00, instruction count 27, allocated bytes for code 64 (MethodHash=0412d14e) for method System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 17.00, instruction count 29, allocated bytes for code 72 (MethodHash=0412d14e) for method System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 64 (0x000040)
+ Function Length : 36 (0x00024) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Epilog Start Index : 3 (0x03)
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ FF end
+ ---- Epilog start at index 3 ----
+ 01 add sp, sp, #4 ; opsize 16
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
@@ -11,16 +11,14 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> r4 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 4, 3.50) ref -> r6 class-hnd single-def <System.Type>
-; V03 arg3 [V03,T01] ( 7, 4.25) ref -> r5 class-hnd single-def <System.Object>
-;* V04 loc0 [V04,T09] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
+; V03 arg3 [V03,T01] ( 6, 4 ) ref -> r5 class-hnd single-def <System.Object>
+;* V04 loc0 [V04,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T03] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp2 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp3 [V08,T10] ( 0, 0 ) int -> zero-ref
-; V09 tmp4 [V09,T08] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
-; V10 tmp5 [V10,T05] ( 3, 1.50) ref -> lr class-hnd "Inline return value spill temp" <<unknown class>>
-; V11 cse0 [V11,T06] ( 3, 1.50) int -> r1 "CSE - moderate"
-; V12 cse1 [V12,T04] ( 4, 1.75) int -> r0 "CSE - moderate"
+;* V07 tmp2 [V07,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp3 [V08,T08] ( 0, 0 ) int -> zero-ref
+; V09 tmp4 [V09,T06] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
+; V10 tmp5 [V10,T04] ( 3, 1.50) ref -> lr class-hnd "Inline return value spill temp" <<unknown class>>
;
; Lcl frame size = 4
@@ -35,34 +33,32 @@ G_M32564_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r5]
;; size=14 bbWeight=1 PerfScore 5.00
G_M32564_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r6, r1
- bne SHORT G_M32564_IG07
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r6, r0
+ bne SHORT G_M32564_IG04
;; size=12 bbWeight=1 PerfScore 4.00
G_M32564_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r5, 0
- beq SHORT G_M32564_IG07
- ldr r1, [r5]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M32564_IG07
- cmp r1, r0
- beq SHORT G_M32564_IG05
- ;; size=22 bbWeight=0.50 PerfScore 4.50
-G_M32564_IG04: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ beq SHORT G_M32564_IG04
+ ldr r0, [r5]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r0, r2
+ beq SHORT G_M32564_IG06
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M32564_IG04: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ldrb r0, [r4+0x08]
+ movs r2, 0
+ strb r2, [r4+0x08]
+ cmp r0, 0
+ beq SHORT G_M32564_IG08
+ ;; size=10 bbWeight=0.50 PerfScore 2.50
+G_M32564_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M32564_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r4 r6]
- mov r1, r5
- ; gcrRegs +[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ; gcr arg pop 0
- ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M32564_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
ldrb r0, [r5+0x04]
movw r2, 0xd1ff
movt r2, 0xd1ff
@@ -73,31 +69,21 @@ G_M32564_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
movt r3, 0xd1ff
ldr r3, [r3]
;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M32564_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG07: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M32564_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M32564_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r2] +[r4 r6]
- ldrb r0, [r4+0x08]
- movs r1, 0
- strb r1, [r4+0x08]
- cmp r0, 0
- beq SHORT G_M32564_IG09
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M32564_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32564_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r0, [r4]
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M32564_IG11
+ beq SHORT G_M32564_IG10
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M32564_IG10: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M32564_IG09: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
mov r0, r1
mov r1, r4
; gcrRegs +[r1]
@@ -108,7 +94,7 @@ G_M32564_IG10: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
;; size=16 bbWeight=0.25 PerfScore 1.50
-G_M32564_IG11: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M32564_IG10: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -124,14 +110,14 @@ G_M32564_IG11: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs +[r0]
ldr r12, [lr+0x0C]
;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M32564_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG11: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r12 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 172, prolog size 14, PerfScore 32.75, instruction count 62, allocated bytes for code 172 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
+; Total bytes of code 154, prolog size 14, PerfScore 30.50, instruction count 55, allocated bytes for code 154 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
; ============================================================
Unwind Info:
@@ -143,16 +129,16 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 86 (0x00056) Actual length = 172 (0x0000ac)
+ Function Length : 77 (0x0004d) Actual length = 154 (0x00009a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
- Epilog Start Index : 3 (0x03)
+ Epilog Start Index : 0 (0x00)
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Epilog Start Index : 3 (0x03)
---- Scope 2
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
@@ -11,17 +11,15 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> r4 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 4, 3.50) ref -> r6 class-hnd single-def <System.Type>
-; V03 arg3 [V03,T01] ( 7, 4.25) ref -> r5 class-hnd single-def <System.Object>
-;* V04 loc0 [V04,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
+; V03 arg3 [V03,T01] ( 6, 4 ) ref -> r5 class-hnd single-def <System.Object>
+;* V04 loc0 [V04,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T04] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp3 [V08,T11] ( 0, 0 ) int -> zero-ref
+;* V07 tmp2 [V07,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp3 [V08,T09] ( 0, 0 ) int -> zero-ref
; V09 tmp4 [V09,T03] ( 3, 3 ) ref -> r4 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V10 tmp5 [V10,T09] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
-; V11 tmp6 [V11,T06] ( 3, 1.50) ref -> lr class-hnd "Inline return value spill temp" <<unknown class>>
-; V12 cse0 [V12,T07] ( 3, 1.50) int -> r1 "CSE - moderate"
-; V13 cse1 [V13,T05] ( 4, 1.75) int -> r0 "CSE - moderate"
+; V10 tmp5 [V10,T07] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
+; V11 tmp6 [V11,T05] ( 3, 1.50) ref -> lr class-hnd "Inline return value spill temp" <<unknown class>>
;
; Lcl frame size = 4
@@ -36,34 +34,33 @@ G_M59248_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r5]
;; size=14 bbWeight=1 PerfScore 5.00
G_M59248_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r6, r1
- bne SHORT G_M59248_IG07
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r6, r0
+ bne SHORT G_M59248_IG04
;; size=12 bbWeight=1 PerfScore 4.00
G_M59248_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r5, 0
- beq SHORT G_M59248_IG07
- ldr r1, [r5]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M59248_IG07
- cmp r1, r0
- beq SHORT G_M59248_IG05
- ;; size=22 bbWeight=0.50 PerfScore 4.50
-G_M59248_IG04: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4 r6]
- mov r1, r5
- ; gcrRegs +[r1]
+ beq SHORT G_M59248_IG04
+ ldr r0, [r5]
movw r3, 0xd1ff
movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ; gcr arg pop 0
- ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M59248_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ cmp r0, r3
+ beq SHORT G_M59248_IG06
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M59248_IG04: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ldrb r0, [r4+0x08]
+ movs r3, 0
+ strb r3, [r4+0x08]
+ cmp r0, 0
+ beq SHORT G_M59248_IG08
+ movs r0, 0
+ ;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M59248_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M59248_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r4 r6]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -85,29 +82,18 @@ G_M59248_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
mov r0, r4
; gcrRegs +[r0]
;; size=38 bbWeight=0.50 PerfScore 6.50
-G_M59248_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M59248_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59248_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M59248_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r5-r6]
- ldrb r0, [r4+0x08]
- movs r1, 0
- strb r1, [r4+0x08]
- cmp r0, 0
- beq SHORT G_M59248_IG09
- movs r0, 0
- ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M59248_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59248_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r0, [r4]
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M59248_IG11
+ beq SHORT G_M59248_IG10
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M59248_IG10: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M59248_IG09: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
mov r0, r1
mov r1, r4
; gcrRegs +[r1]
@@ -118,7 +104,7 @@ G_M59248_IG10: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
;; size=16 bbWeight=0.25 PerfScore 1.50
-G_M59248_IG11: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M59248_IG10: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -134,14 +120,14 @@ G_M59248_IG11: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs +[r0]
ldr r12, [lr+0x0C]
;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M59248_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M59248_IG11: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r12 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 184, prolog size 14, PerfScore 34.75, instruction count 66, allocated bytes for code 184 (MethodHash=45f7188f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
+; Total bytes of code 166, prolog size 14, PerfScore 32.50, instruction count 59, allocated bytes for code 166 (MethodHash=45f7188f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -153,7 +139,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 92 (0x0005c) Actual length = 184 (0x0000b8)
+ Function Length : 83 (0x00053) Actual length = 166 (0x0000a6)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -13,7 +13,7 @@
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 5, 5 ) ref -> r4 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T01] ( 4, 4 ) ref -> r4 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V07 loc7 [V07,T04] ( 4, 4 ) ref -> r0 class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 6, 6 ) ref -> r0 class-hnd exact single-def <<unknown class>>
@@ -21,72 +21,71 @@
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref single-def
-; V13 tmp4 [V13,T11] ( 2, 2 ) int -> r3
+;* V13 tmp4 [V13,T10] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref single-def
-;* V16 tmp7 [V16,T30] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T12] ( 2, 2 ) int -> r3 single-def
+;* V16 tmp7 [V16,T29] ( 0, 0 ) int -> zero-ref
+;* V17 tmp8 [V17,T11] ( 0, 0 ) int -> zero-ref single-def
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref single-def
-; V19 tmp10 [V19,T13] ( 2, 2 ) int -> r2
-; V20 tmp11 [V20,T14] ( 2, 2 ) int -> r3 single-def
+;* V19 tmp10 [V19,T12] ( 0, 0 ) int -> zero-ref
+;* V20 tmp11 [V20,T13] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref single-def
-; V22 tmp13 [V22,T15] ( 2, 2 ) int -> r0
-; V23 tmp14 [V23,T16] ( 2, 2 ) int -> r0 single-def
+;* V22 tmp13 [V22,T14] ( 0, 0 ) int -> zero-ref
+;* V23 tmp14 [V23,T15] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref single-def
-;* V25 tmp16 [V25,T31] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T17] ( 2, 2 ) int -> r0 single-def
+;* V25 tmp16 [V25,T30] ( 0, 0 ) int -> zero-ref
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29,T16] ( 0, 0 ) int -> zero-ref single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref single-def
-;* V32 tmp23 [V32,T32] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32,T31] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref single-def
-;* V34 tmp25 [V34,T33] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V34 tmp25 [V34,T32] ( 0, 0 ) int -> zero-ref
+;* V35 tmp26 [V35,T17] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref single-def
-;* V37 tmp28 [V37,T20] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V37 tmp28 [V37,T18] ( 0, 0 ) int -> zero-ref
+;* V38 tmp29 [V38,T19] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref single-def
-;* V40 tmp31 [V40,T34] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V40 tmp31 [V40,T33] ( 0, 0 ) int -> zero-ref
+;* V41 tmp32 [V41,T20] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref single-def
-;* V43 tmp34 [V43,T23] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T35] ( 0, 0 ) int -> zero-ref single-def
+;* V43 tmp34 [V43,T21] ( 0, 0 ) int -> zero-ref
+;* V44 tmp35 [V44,T34] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref single-def
-;* V46 tmp37 [V46,T36] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T24] ( 2, 2 ) int -> r0 single-def
+;* V46 tmp37 [V46,T35] ( 0, 0 ) int -> zero-ref
+;* V47 tmp38 [V47,T22] ( 0, 0 ) int -> zero-ref single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref single-def
-;* V49 tmp40 [V49,T37] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T25] ( 2, 2 ) int -> r0 single-def
+;* V49 tmp40 [V49,T36] ( 0, 0 ) int -> zero-ref
+;* V50 tmp41 [V50,T23] ( 0, 0 ) int -> zero-ref single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref single-def
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref single-def
-;* V53 tmp44 [V53,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T38] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56,T37] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref single-def
-;* V58 tmp49 [V58,T39] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T27] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp49 [V58,T38] ( 0, 0 ) int -> zero-ref
+;* V59 tmp50 [V59,T24] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref single-def
-;* V61 tmp52 [V61,T28] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T29] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp52 [V61,T25] ( 0, 0 ) int -> zero-ref
+;* V62 tmp53 [V62,T26] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref single-def
-;* V64 tmp55 [V64,T40] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T41] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp55 [V64,T39] ( 0, 0 ) int -> zero-ref
+;* V65 tmp56 [V65,T40] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref single-def
-;* V67 tmp58 [V67,T42] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T43] ( 0, 0 ) int -> zero-ref single-def
+;* V67 tmp58 [V67,T41] ( 0, 0 ) int -> zero-ref
+; V68 tmp59 [V68,T27] ( 2, 2 ) int -> r3 single-def
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref single-def
-;* V70 tmp61 [V70,T44] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T05] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V72 cse1 [V72,T08] ( 2, 2 ) int -> r0 "CSE - moderate"
+; V70 tmp61 [V70,T28] ( 2, 2 ) int -> r0
+;* V71 cse0 [V71,T05] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V72 cse1 [V72,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
;* V73 cse2 [V73,T09] ( 0, 0 ) int -> zero-ref "CSE - conservative"
-; V74 cse3 [V74,T02] ( 2, 2 ) int -> r2 "CSE - moderate"
-; V75 cse4 [V75,T06] ( 2, 2 ) int -> r3 "CSE - conservative"
+; V74 cse3 [V74,T02] ( 2, 2 ) int -> r3 "CSE - moderate"
+;* V75 cse4 [V75,T06] ( 0, 0 ) int -> zero-ref "CSE - conservative"
; V76 cse5 [V76,T07] ( 2, 2 ) int -> r0 "CSE - conservative"
-; V77 cse6 [V77,T10] ( 2, 2 ) int -> r0 "CSE - moderate"
-; V78 cse7 [V78,T03] ( 4, 4 ) int -> r3 "CSE - aggressive"
+; V77 cse6 [V77,T03] ( 4, 4 ) int -> r3 "CSE - aggressive"
;
; Lcl frame size = 4
@@ -142,23 +141,16 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r3, 0
strb r3, [r4+0x08]
strb r2, [r4+0x09]
- ldr r3, [r4+0x04]
- adds r3, 17
- ldr r2, [r0+0x0C]
- adds r3, r3, r2
+ ldr r3, [r0+0x0C]
ldr r0, [r0+0x08]
; gcrRegs -[r0]
adds r0, r3, r0
- adds r0, r0, 3
- subs r0, r0, 5
- adds r0, r0, 3
- subs r0, r0, 5
- ;; size=136 bbWeight=1 PerfScore 51.00
+ ;; size=122 bbWeight=1 PerfScore 44.00
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 148, prolog size 8, PerfScore 54.00, instruction count 54, allocated bytes for code 148 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 134, prolog size 8, PerfScore 47.00, instruction count 47, allocated bytes for code 134 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -170,7 +162,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 67 (0x00043) Actual length = 134 (0x000086)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -8,83 +8,82 @@
; 0 inlinees with PGO data; 29 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> lr
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 5, 5 ) ref -> r4 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 5, 5 ) ref -> r4 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T03] ( 4, 4 ) ref -> r0 class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 6, 6 ) ref -> r0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T04] ( 4, 4 ) ref -> r0 class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 6, 6 ) ref -> r0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T09] ( 2, 2 ) int -> r3 single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp11 [V20,T10] ( 2, 2 ) int -> r3 single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T11] ( 2, 2 ) int -> r0 single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T12] ( 2, 2 ) int -> r0 single-def
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-;* V32 tmp23 [V32,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T16] ( 2, 2 ) int -> r0 single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T17] ( 2, 2 ) int -> r0 single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T06] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V72 cse1 [V72,T04] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V73 cse2 [V73,T07] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V74 cse3 [V74,T08] ( 2, 2 ) int -> r2 "CSE - aggressive"
-; V75 cse4 [V75,T05] ( 2, 2 ) int -> r3 "CSE - aggressive"
-; V76 cse5 [V76,T02] ( 4, 4 ) int -> r3 "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> lr "CSE - aggressive"
+; V72 cse1 [V72,T05] ( 4, 4 ) int -> r2 "CSE - aggressive"
+; V73 cse2 [V73,T06] ( 4, 4 ) int -> r1 "CSE - aggressive"
+; V74 cse3 [V74,T07] ( 4, 4 ) int -> r0 "CSE - aggressive"
+; V75 cse4 [V75,T03] ( 5, 5 ) int -> r3 "CSE - aggressive"
;
; Lcl frame size = 4
@@ -135,28 +134,36 @@ G_M37173_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
strb r2, [r3+0x04]
movs r2, 1
strb r2, [r3+0x05]
- mvn r3, 12
- str r3, [r4+0x04]
- movs r3, 0
- strb r3, [r4+0x08]
+ mvn r2, 12
+ str r2, [r4+0x04]
+ movs r2, 0
+ strb r2, [r4+0x08]
+ movs r2, 1
strb r2, [r4+0x09]
- ldr r3, [r4+0x04]
- adds r3, 17
- ldr r2, [r0+0x0C]
- adds r3, r3, r2
+ ldr r2, [r4+0x04]
+ ldr r1, [r0+0x0C]
+ add lr, r2, r1
ldr r0, [r0+0x08]
; gcrRegs -[r0]
+ add lr, r0
+ add lr, lr, 17
+ ldr r3, [r3]
+ add lr, r3
+ add r3, lr, r2
+ adds r3, r3, r1
+ add lr, r3, 10
+ add lr, r0
+ add lr, r2
+ add r3, lr, r1
adds r0, r3, r0
- adds r0, r0, 3
- subs r0, r0, 5
- adds r0, r0, 3
- subs r0, r0, 5
- ;; size=136 bbWeight=1 PerfScore 51.00
+ add lr, r0, 17
+ mov r0, lr
+ ;; size=164 bbWeight=1 PerfScore 59.00
G_M37173_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 148, prolog size 8, PerfScore 54.00, instruction count 54, allocated bytes for code 148 (MethodHash=49726eca) for method testout1:Sub_Funclet_223():int (FullOpts)
+; Total bytes of code 176, prolog size 8, PerfScore 62.00, instruction count 62, allocated bytes for code 176 (MethodHash=49726eca) for method testout1:Sub_Funclet_223():int (FullOpts)
; ============================================================
Unwind Info:
@@ -168,7 +175,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -10,78 +10,76 @@
;
;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc2 [V02,T02] ( 4, 4 ) ref -> r4 class-hnd exact single-def <testout1>
+; V02 loc2 [V02,T02] ( 5, 5 ) ref -> r4 class-hnd exact single-def <testout1>
; V03 loc3 [V03,T01] ( 6, 6 ) ref -> r0 class-hnd exact single-def <<unknown class>>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
; V06 tmp2 [V06,T00] ( 4, 8 ) ref -> r0 class-hnd exact single-def "dup spill" <<unknown class>>
-;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref single-def
+;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref
-;* V10 tmp6 [V10,T10] ( 0, 0 ) int -> zero-ref single-def
+;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref
-;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref single-def
+;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref
-;* V16 tmp12 [V16,T12] ( 0, 0 ) int -> zero-ref single-def
+;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref
-;* V19 tmp15 [V19,T13] ( 0, 0 ) int -> zero-ref single-def
+; V19 tmp15 [V19,T07] ( 2, 2 ) int -> lr single-def
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref
-;* V25 tmp21 [V25,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref
-;* V28 tmp24 [V28,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref
-;* V31 tmp27 [V31,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref
-;* V34 tmp30 [V34,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref
-;* V37 tmp33 [V37,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref
-;* V40 tmp36 [V40,T24] ( 0, 0 ) int -> zero-ref single-def
+; V40 tmp36 [V40,T08] ( 2, 2 ) int -> r3 single-def
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref
-;* V43 tmp39 [V43,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V43 tmp39 [V43 ] ( 0, 0 ) int -> zero-ref
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref
-;* V46 tmp42 [V46,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp45 [V49 ] ( 0, 0 ) int -> zero-ref
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp48 [V52,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp50 [V54 ] ( 0, 0 ) int -> zero-ref
-;* V55 tmp51 [V55,T20] ( 0, 0 ) int -> zero-ref single-def
+; V55 tmp51 [V55,T09] ( 2, 2 ) int -> r3 single-def
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref
-;* V58 tmp54 [V58,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref
-;* V61 tmp57 [V61,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp57 [V61 ] ( 0, 0 ) int -> zero-ref
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp59 [V63 ] ( 0, 0 ) int -> zero-ref
-; V64 tmp60 [V64,T22] ( 2, 2 ) int -> r3 single-def
+;* V64 tmp60 [V64 ] ( 0, 0 ) int -> zero-ref
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp62 [V66 ] ( 0, 0 ) int -> zero-ref
-;* V67 cse0 [V67,T07] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-;* V68 cse1 [V68,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V69 cse2 [V69,T05] ( 2, 2 ) int -> r3 "CSE - aggressive"
-;* V70 cse3 [V70,T06] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V71 cse4 [V71,T08] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V72 cse5 [V72,T03] ( 4, 4 ) int -> r3 "CSE - aggressive"
-; V73 cse6 [V73,T09] ( 2, 2 ) int -> r0 "CSE - aggressive"
+; V67 cse0 [V67,T10] ( 2, 2 ) int -> r3 "CSE - aggressive"
+; V68 cse1 [V68,T04] ( 4, 4 ) int -> r2 "CSE - aggressive"
+; V69 cse2 [V69,T05] ( 4, 4 ) int -> r1 "CSE - aggressive"
+; V70 cse3 [V70,T06] ( 4, 4 ) int -> r0 "CSE - aggressive"
+; V71 cse4 [V71,T03] ( 5, 5 ) int -> r3 "CSE - aggressive"
;
; Lcl frame size = 4
@@ -132,21 +130,35 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
strb r2, [r3+0x04]
movs r2, 1
strb r2, [r3+0x05]
- mvn r3, 12
- str r3, [r4+0x04]
- movs r3, 0
- strb r3, [r4+0x08]
+ mvn r2, 12
+ str r2, [r4+0x04]
+ movs r2, 0
+ strb r2, [r4+0x08]
+ movs r2, 1
strb r2, [r4+0x09]
- ldr r3, [r0+0x0C]
+ ldr r2, [r4+0x04]
+ ldr r1, [r0+0x0C]
+ add lr, r2, r1
ldr r0, [r0+0x08]
; gcrRegs -[r0]
+ add lr, r0
+ add lr, lr, 17
+ ldr r3, [r3]
+ add r3, lr
+ adds r3, r3, r2
+ adds r3, r3, r1
+ adds r3, 10
+ adds r3, r3, r0
+ adds r3, r3, r2
+ adds r3, r3, r1
adds r0, r3, r0
- ;; size=122 bbWeight=1 PerfScore 44.00
+ adds r0, 17
+ ;; size=154 bbWeight=1 PerfScore 58.00
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 134, prolog size 8, PerfScore 47.00, instruction count 47, allocated bytes for code 134 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 166, prolog size 8, PerfScore 61.00, instruction count 61, allocated bytes for code 166 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -158,7 +170,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 67 (0x00043) Actual length = 134 (0x000086)
+ Function Length : 83 (0x00053) Actual length = 166 (0x0000a6)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -8,83 +8,82 @@
; 0 inlinees with PGO data; 25 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> lr
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 4, 4 ) ref -> r4 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 5, 5 ) ref -> r4 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T03] ( 4, 4 ) ref -> r0 class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 6, 6 ) ref -> r0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T04] ( 4, 4 ) ref -> r0 class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 6, 6 ) ref -> r0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 tmp5 [V14,T09] ( 0, 0 ) int -> zero-ref single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-;* V17 tmp8 [V17,T10] ( 0, 0 ) int -> zero-ref single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-;* V20 tmp11 [V20,T11] ( 0, 0 ) int -> zero-ref single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-;* V23 tmp14 [V23,T12] ( 0, 0 ) int -> zero-ref single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-;* V32 tmp23 [V32,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp38 [V47,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp41 [V50,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-; V68 tmp59 [V68,T21] ( 2, 2 ) int -> r3 single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-;* V71 cse0 [V71,T07] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-;* V72 cse1 [V72,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T05] ( 2, 2 ) int -> r3 "CSE - aggressive"
-;* V74 cse3 [V74,T06] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V75 cse4 [V75,T08] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V76 cse5 [V76,T02] ( 4, 4 ) int -> r3 "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> lr "CSE - aggressive"
+; V72 cse1 [V72,T05] ( 4, 4 ) int -> r2 "CSE - aggressive"
+; V73 cse2 [V73,T06] ( 4, 4 ) int -> r1 "CSE - aggressive"
+; V74 cse3 [V74,T07] ( 4, 4 ) int -> r0 "CSE - aggressive"
+; V75 cse4 [V75,T03] ( 5, 5 ) int -> r3 "CSE - aggressive"
;
; Lcl frame size = 4
@@ -135,21 +134,36 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
strb r2, [r3+0x04]
movs r2, 1
strb r2, [r3+0x05]
- mvn r3, 12
- str r3, [r4+0x04]
- movs r3, 0
- strb r3, [r4+0x08]
+ mvn r2, 12
+ str r2, [r4+0x04]
+ movs r2, 0
+ strb r2, [r4+0x08]
+ movs r2, 1
strb r2, [r4+0x09]
- ldr r3, [r0+0x0C]
+ ldr r2, [r4+0x04]
+ ldr r1, [r0+0x0C]
+ add lr, r2, r1
ldr r0, [r0+0x08]
; gcrRegs -[r0]
+ add lr, r0
+ add lr, lr, 17
+ ldr r3, [r3]
+ add lr, r3
+ add r3, lr, r2
+ adds r3, r3, r1
+ add lr, r3, 10
+ add lr, r0
+ add lr, r2
+ add r3, lr, r1
adds r0, r3, r0
- ;; size=122 bbWeight=1 PerfScore 44.00
+ add lr, r0, 17
+ mov r0, lr
+ ;; size=164 bbWeight=1 PerfScore 59.00
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 134, prolog size 8, PerfScore 47.00, instruction count 47, allocated bytes for code 134 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 176, prolog size 8, PerfScore 62.00, instruction count 62, allocated bytes for code 176 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -161,7 +175,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 67 (0x00043) Actual length = 134 (0x000086)
+ Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -28,51 +28,50 @@
;* V16 tmp13 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp14 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V18 tmp15 [V18,T07] ( 2, 2 ) int -> r6 "Inlining Arg"
-; V19 tmp16 [V19,T04] ( 2, 2 ) byref -> r3 single-def "Inlining Arg"
+; V19 tmp16 [V19,T04] ( 2, 2 ) byref -> r2 single-def "Inlining Arg"
;* V20 tmp17 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp19 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V23 tmp20 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V24 tmp21 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp22 [V25,T08] ( 2, 2 ) int -> r2 "Inlining Arg"
+; V25 tmp22 [V25,T08] ( 2, 2 ) int -> r7 "Inlining Arg"
; V26 tmp23 [V26,T05] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
;* V27 tmp24 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp25 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V29 tmp26 [V29,T12] ( 2, 1 ) byref -> r0 "field V04._reference (fldOffset=0x0)" P-INDEP
; V30 tmp27 [V30,T18] ( 2, 1 ) int -> r5 "field V04._length (fldOffset=0x4)" P-INDEP
-; V31 tmp28 [V31,T13] ( 2, 1 ) byref -> r3 "field V05._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp29 [V32,T19] ( 2, 1 ) int -> r6 "field V05._length (fldOffset=0x4)" P-INDEP
+; V31 tmp28 [V31,T13] ( 2, 1 ) byref -> r2 "field V05._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp29 [V32,T19] ( 2, 1 ) int -> r3 "field V05._length (fldOffset=0x4)" P-INDEP
;* V33 tmp30 [V33 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP
; V35 tmp32 [V35,T14] ( 2, 1 ) byref -> r0 single-def "field V10._reference (fldOffset=0x0)" P-INDEP
; V36 tmp33 [V36,T20] ( 2, 1 ) int -> r5 "field V10._length (fldOffset=0x4)" P-INDEP
;* V37 tmp34 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp35 [V38 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP
-; V39 tmp36 [V39,T15] ( 2, 1 ) byref -> r3 single-def "field V16._reference (fldOffset=0x0)" P-INDEP
-; V40 tmp37 [V40,T21] ( 2, 1 ) int -> r6 "field V16._length (fldOffset=0x4)" P-INDEP
+; V39 tmp36 [V39,T15] ( 2, 1 ) byref -> r2 single-def "field V16._reference (fldOffset=0x0)" P-INDEP
+; V40 tmp37 [V40,T21] ( 2, 1 ) int -> r3 "field V16._length (fldOffset=0x4)" P-INDEP
;* V41 tmp38 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V42 tmp39 [V42 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP
; V43 tmp40 [V43,T16] ( 2, 1 ) byref -> r1 "field V22._reference (fldOffset=0x0)" P-INDEP
-; V44 tmp41 [V44,T22] ( 2, 1 ) int -> r2 "field V22._length (fldOffset=0x4)" P-INDEP
+; V44 tmp41 [V44,T22] ( 2, 1 ) int -> r7 "field V22._length (fldOffset=0x4)" P-INDEP
; V45 tmp42 [V45,T17] ( 2, 1 ) byref -> r1 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-; V46 tmp43 [V46,T23] ( 2, 1 ) int -> r2 "field V23._length (fldOffset=0x4)" P-INDEP
+; V46 tmp43 [V46,T23] ( 2, 1 ) int -> r7 "field V23._length (fldOffset=0x4)" P-INDEP
;* V47 tmp44 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp45 [V48 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
; V49 cse0 [V49,T09] ( 3, 1.50) int -> r5 "CSE - moderate"
; V50 cse1 [V50,T10] ( 3, 1.50) int -> r6 "CSE - moderate"
-; V51 cse2 [V51,T11] ( 3, 1.50) int -> r2 "CSE - moderate"
+; V51 cse2 [V51,T11] ( 3, 1.50) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M4343_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r11,lr}
- sub sp, 12
+ push {r2,r3,r4,r5,r6,r7,r11,lr}
add r11, sp, 24
mov r3, r1
; gcrRegs +[r3]
mov r1, r2
; gcrRegs +[r1]
- ;; size=14 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M4343_IG02: ; bbWeight=1, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
cmp r0, 0
@@ -81,11 +80,8 @@ G_M4343_IG02: ; bbWeight=1, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {},
G_M4343_IG03: ; bbWeight=0.50, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {}, byref, isz
ldr r5, [r0+0x04]
cmp r5, 0
- beq SHORT G_M4343_IG04
- cmp r3, 0
- beq SHORT G_M4343_IG07
- b SHORT G_M4343_IG06
- ;; size=12 bbWeight=0.50 PerfScore 3.00
+ bne SHORT G_M4343_IG06
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M4343_IG04: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r3
@@ -99,18 +95,16 @@ G_M4343_IG04: ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {},
; gcrRegs -[r1]
;; size=16 bbWeight=0.50 PerfScore 3.00
G_M4343_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M4343_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r1 r3]
+ cmp r3, 0
+ beq SHORT G_M4343_IG07
ldr r6, [r3+0x04]
cmp r6, 0
- beq SHORT G_M4343_IG07
- cmp r1, 0
- beq SHORT G_M4343_IG10
- b SHORT G_M4343_IG09
- ;; size=12 bbWeight=0.50 PerfScore 3.00
+ bne SHORT G_M4343_IG09
+ ;; size=10 bbWeight=0.50 PerfScore 2.50
G_M4343_IG07: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref
; gcrRegs -[r3]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -121,22 +115,18 @@ G_M4343_IG07: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {},
; gcrRegs -[r1]
;; size=14 bbWeight=0.50 PerfScore 2.50
G_M4343_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M4343_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r1 r3]
- ldr r2, [r1+0x04]
- cmp r2, 0
+ cmp r1, 0
beq SHORT G_M4343_IG10
- adds r0, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- b SHORT G_M4343_IG12
+ ldr r7, [r1+0x04]
+ cmp r7, 0
+ bne SHORT G_M4343_IG12
;; size=10 bbWeight=0.50 PerfScore 2.50
G_M4343_IG10: ; bbWeight=0.50, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r1] +[r0]
- ; byrRegs -[r0]
+ ; gcrRegs -[r1]
mov r1, r3
; gcrRegs +[r1]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -148,26 +138,24 @@ G_M4343_IG10: ; bbWeight=0.50, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {},
; gcrRegs -[r1]
;; size=16 bbWeight=0.50 PerfScore 3.00
G_M4343_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M4343_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref
- ; gcrRegs -[r0] +[r1 r3]
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M4343_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r1 r3]
+ adds r0, 8
+ ; gcrRegs -[r0]
; byrRegs +[r0]
- adds r3, 8
+ add r2, r3, 8
+ ; byrRegs +[r2]
+ mov r3, r6
; gcrRegs -[r3]
- ; byrRegs +[r3]
adds r1, 8
; gcrRegs -[r1]
; byrRegs +[r1]
str r1, [sp]
- str r2, [sp+0x04]
+ str r7, [sp+0x04]
mov r1, r5
; byrRegs -[r1]
- mov r2, r3
- ; byrRegs +[r2]
- mov r3, r6
- ; byrRegs -[r3]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -175,13 +163,12 @@ G_M4343_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}
blx lr // <unknown method>
; gcrRegs +[r0]
; byrRegs -[r0 r2]
- ;; size=30 bbWeight=0.50 PerfScore 6.00
+ ;; size=32 bbWeight=0.50 PerfScore 6.00
G_M4343_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ pop {r2,r3,r4,r5,r6,r7,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 152, prolog size 10, PerfScore 34.00, instruction count 61, allocated bytes for code 152 (MethodHash=bb15ef08) for method System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 29.00, instruction count 52, allocated bytes for code 136 (MethodHash=bb15ef08) for method System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -193,7 +180,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 76 (0x0004c) Actual length = 152 (0x000098)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -213,7 +200,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16
- A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
+ A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32
+ FF end
FF end
@@ -37,22 +37,22 @@
;* V25 tmp21 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V26 tmp22 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V27 tmp23 [V27,T11] ( 2, 2 ) int -> r6 "Inlining Arg"
-; V28 tmp24 [V28,T07] ( 2, 2 ) byref -> lr single-def "Inlining Arg"
+; V28 tmp24 [V28,T07] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
;* V29 tmp25 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp26 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp27 [V31 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V32 tmp28 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp29 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp30 [V34,T12] ( 2, 2 ) int -> r12 "Inlining Arg"
+; V34 tmp30 [V34,T12] ( 2, 2 ) int -> r7 "Inlining Arg"
; V35 tmp31 [V35,T08] ( 2, 2 ) byref -> r2 single-def "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp33 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V38 tmp34 [V38,T04] ( 6, 7 ) ref -> r0 "Single return block return value"
; V39 tmp35 [V39,T17] ( 2, 1 ) byref -> r0 "field V05._reference (fldOffset=0x0)" P-INDEP
; V40 tmp36 [V40,T25] ( 2, 1 ) int -> r5 "field V05._length (fldOffset=0x4)" P-INDEP
-; V41 tmp37 [V41,T18] ( 2, 1 ) byref -> [sp+0x14] spill-single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+; V41 tmp37 [V41,T18] ( 2, 1 ) byref -> r12 "field V06._reference (fldOffset=0x0)" P-INDEP
; V42 tmp38 [V42,T26] ( 2, 1 ) int -> r3 "field V06._length (fldOffset=0x4)" P-INDEP
-; V43 tmp39 [V43,T19] ( 2, 1 ) byref -> lr "field V07._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp39 [V43,T19] ( 2, 1 ) byref -> r1 "field V07._reference (fldOffset=0x0)" P-INDEP
; V44 tmp40 [V44,T27] ( 2, 1 ) int -> r6 "field V07._length (fldOffset=0x4)" P-INDEP
;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP
@@ -64,26 +64,26 @@
; V52 tmp48 [V52,T29] ( 2, 1 ) int -> r3 "field V19._length (fldOffset=0x4)" P-INDEP
;* V53 tmp49 [V53 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP
;* V54 tmp50 [V54 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x4)" P-INDEP
-; V55 tmp51 [V55,T22] ( 2, 1 ) byref -> lr single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp51 [V55,T22] ( 2, 1 ) byref -> r1 single-def "field V25._reference (fldOffset=0x0)" P-INDEP
; V56 tmp52 [V56,T30] ( 2, 1 ) int -> r6 "field V25._length (fldOffset=0x4)" P-INDEP
;* V57 tmp53 [V57 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP
; V59 tmp55 [V59,T23] ( 2, 1 ) byref -> r2 "field V31._reference (fldOffset=0x0)" P-INDEP
-; V60 tmp56 [V60,T31] ( 2, 1 ) int -> r12 "field V31._length (fldOffset=0x4)" P-INDEP
+; V60 tmp56 [V60,T31] ( 2, 1 ) int -> r7 "field V31._length (fldOffset=0x4)" P-INDEP
; V61 tmp57 [V61,T24] ( 2, 1 ) byref -> r2 single-def "field V32._reference (fldOffset=0x0)" P-INDEP
-; V62 tmp58 [V62,T32] ( 2, 1 ) int -> r12 "field V32._length (fldOffset=0x4)" P-INDEP
+; V62 tmp58 [V62,T32] ( 2, 1 ) int -> r7 "field V32._length (fldOffset=0x4)" P-INDEP
;* V63 tmp59 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp60 [V64 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP
; V65 cse0 [V65,T13] ( 3, 1.50) int -> r5 "CSE - moderate"
; V66 cse1 [V66,T14] ( 3, 1.50) int -> r3 "CSE - moderate"
; V67 cse2 [V67,T15] ( 3, 1.50) int -> r6 "CSE - moderate"
-; V68 cse3 [V68,T16] ( 3, 1.50) int -> r12 "CSE - moderate"
+; V68 cse3 [V68,T16] ( 3, 1.50) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 20
G_M48965_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r10,r11,lr}
- sub sp, 24
+ push {r4,r5,r6,r7,r10,r11,lr}
+ sub sp, 20
add r11, sp, 40
mov lr, r2
; gcrRegs +[lr]
@@ -98,11 +98,8 @@ G_M48965_IG02: ; bbWeight=1, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000
G_M48965_IG03: ; bbWeight=0.50, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000 {}, byref, isz
ldr r5, [r0+0x04]
cmp r5, 0
- beq SHORT G_M48965_IG04
- cmp r1, 0
- beq SHORT G_M48965_IG06
- b SHORT G_M48965_IG05
- ;; size=12 bbWeight=0.50 PerfScore 3.00
+ bne SHORT G_M48965_IG05
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M48965_IG04: ; bbWeight=0.50, gcrefRegs=4006 {r1 r2 lr}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
mov r0, r1
@@ -118,13 +115,12 @@ G_M48965_IG04: ; bbWeight=0.50, gcrefRegs=4006 {r1 r2 lr}, byrefRegs=0000
;; size=20 bbWeight=0.50 PerfScore 4.00
G_M48965_IG05: ; bbWeight=0.50, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1-r2 lr]
+ cmp r1, 0
+ beq SHORT G_M48965_IG06
ldr r3, [r1+0x04]
cmp r3, 0
- beq SHORT G_M48965_IG06
- cmp lr, 0
- beq SHORT G_M48965_IG08
- b SHORT G_M48965_IG07
- ;; size=14 bbWeight=0.50 PerfScore 3.00
+ bne SHORT G_M48965_IG07
+ ;; size=10 bbWeight=0.50 PerfScore 2.50
G_M48965_IG06: ; bbWeight=0.50, gcrefRegs=4005 {r0 r2 lr}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
mov r1, lr
@@ -139,13 +135,12 @@ G_M48965_IG06: ; bbWeight=0.50, gcrefRegs=4005 {r0 r2 lr}, byrefRegs=0000
;; size=18 bbWeight=0.50 PerfScore 3.50
G_M48965_IG07: ; bbWeight=0.50, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1-r2 lr]
+ cmp lr, 0
+ beq SHORT G_M48965_IG08
ldr r6, [lr+0x04]
cmp r6, 0
- beq SHORT G_M48965_IG08
- cmp r2, 0
- beq SHORT G_M48965_IG10
- b SHORT G_M48965_IG09
- ;; size=14 bbWeight=0.50 PerfScore 3.00
+ bne SHORT G_M48965_IG09
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
G_M48965_IG08: ; bbWeight=0.50, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[lr]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -158,17 +153,14 @@ G_M48965_IG08: ; bbWeight=0.50, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000
;; size=16 bbWeight=0.50 PerfScore 3.00
G_M48965_IG09: ; bbWeight=0.50, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1-r2 lr]
- ldr r12, [r2+0x04]
- cmp r12, 0
+ cmp r2, 0
beq SHORT G_M48965_IG10
- adds r0, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- b SHORT G_M48965_IG11
- ;; size=14 bbWeight=0.50 PerfScore 2.50
+ ldr r7, [r2+0x04]
+ cmp r7, 0
+ bne SHORT G_M48965_IG11
+ ;; size=10 bbWeight=0.50 PerfScore 2.50
G_M48965_IG10: ; bbWeight=0.50, gcrefRegs=4003 {r0 r1 lr}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r2] +[r0]
- ; byrRegs -[r0]
+ ; gcrRegs -[r2]
mov r2, lr
; gcrRegs +[r2]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -179,43 +171,42 @@ G_M48965_IG10: ; bbWeight=0.50, gcrefRegs=4003 {r0 r1 lr}, byrefRegs=0000
; gcrRegs -[r1-r2 lr]
b SHORT G_M48965_IG12
;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M48965_IG11: ; bbWeight=0.50, gcrefRegs=4006 {r1 r2 lr}, byrefRegs=0001 {r0}, byref
- ; gcrRegs -[r0] +[r1-r2 lr]
+G_M48965_IG11: ; bbWeight=0.50, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1-r2 lr]
+ adds r0, 8
+ ; gcrRegs -[r0]
; byrRegs +[r0]
adds r1, 8
; gcrRegs -[r1]
; byrRegs +[r1]
- str r1, [sp+0x14] // [V41 tmp37]
- ; GC ptr vars +{V41}
- add lr, lr, 8
- ; gcrRegs -[lr]
- ; byrRegs +[lr]
+ mov r12, r1
+ ; byrRegs +[r12]
+ add r1, lr, 8
adds r2, 8
; gcrRegs -[r2]
; byrRegs +[r2]
- str lr, [sp] // [V04 OutArgs]
- str r6, [sp+0x04] // [V04 OutArgs+0x04]
- str r2, [sp+0x08] // [V04 OutArgs+0x08]
- str r12, [sp+0x0C] // [V04 OutArgs+0x0c]
+ str r1, [sp]
+ str r6, [sp+0x04]
+ str r2, [sp+0x08]
+ str r7, [sp+0x0C]
mov r1, r5
; byrRegs -[r1]
- ldr r2, [sp+0x14] // [V41 tmp37]
+ mov r2, r12
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr lr, [r4]
- ; byrRegs -[lr]
- ; GC ptr vars -{V41}
+ ; gcrRegs -[lr]
blx lr // <unknown method>
; gcrRegs +[r0]
- ; byrRegs -[r0 r2]
- ;; size=42 bbWeight=0.50 PerfScore 7.50
+ ; byrRegs -[r0 r2 r12]
+ ;; size=40 bbWeight=0.50 PerfScore 8.00
G_M48965_IG12: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 24
- pop {r4,r5,r6,r10,r11,pc}
+ add sp, 20
+ pop {r4,r5,r6,r7,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 192, prolog size 10, PerfScore 42.00, instruction count 75, allocated bytes for code 192 (MethodHash=a8d740ba) for method System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
+; Total bytes of code 176, prolog size 10, PerfScore 40.00, instruction count 71, allocated bytes for code 176 (MethodHash=a8d740ba) for method System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -227,11 +218,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 96 (0x00060) Actual length = 192 (0x0000c0)
+ Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 06 add sp, sp, #24 ; opsize 16
- AC 70 pop {r4,r5,r6,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
@@ -76,21 +76,18 @@ G_M18319_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
mov r9, 0
ldr r10, [r0+0x04]
cmp r10, 0
- ldr r6, [sp+0x0C] // [V00 arg0]
- ; gcrRegs +[r6]
- ble SHORT G_M18319_IG09
+ ble SHORT G_M18319_IG05
add r4, r0, 8
; byrRegs +[r4]
- str r4, [sp+0x04] // [V12 cse0]
+ str r4, [sp+0x04]
; GC ptr vars +{V12}
- str r6, [sp+0x0C] // [V00 arg0]
- ;; size=110 bbWeight=1 PerfScore 41.00
+ ;; size=106 bbWeight=1 PerfScore 39.00
G_M18319_IG03: ; bbWeight=4, gcVars=00000280 {V00 V12}, gcrefRegs=01A0 {r5 r7 r8}, byrefRegs=0010 {r4}, gcvars, byref, isz
- ; gcrRegs -[r0 r6]
+ ; gcrRegs -[r0]
lsl r0, r9, 2
ldr lr, [r4+r0]
; gcrRegs +[lr]
- str lr, [sp+0x08] // [V06 loc4]
+ str lr, [sp+0x08]
; GC ptr vars +{V06}
mov r0, r7
; gcrRegs +[r0]
@@ -108,7 +105,7 @@ G_M18319_IG03: ; bbWeight=4, gcVars=00000280 {V00 V12}, gcrefRegs=01A0 {r
blx r12 // <unknown method>
; gcrRegs -[r0-r2 lr]
cmp r0, 0
- beq SHORT G_M18319_IG07
+ beq SHORT G_M18319_IG04
movw r1, LOW RELOC 0xD1FFAB1E
movt r1, HIGH RELOC 0xD1FFAB1E
add r1, pc
@@ -135,7 +132,7 @@ G_M18319_IG03: ; bbWeight=4, gcVars=00000280 {V00 V12}, gcrefRegs=01A0 {r
blx r3 // <unknown method>
; gcrRegs -[r0-r2]
cmp r0, 0
- beq SHORT G_M18319_IG06
+ beq SHORT G_M18319_IG04
movw r1, LOW RELOC 0xD1FFAB1E
movt r1, HIGH RELOC 0xD1FFAB1E
add r1, pc
@@ -162,47 +159,24 @@ G_M18319_IG03: ; bbWeight=4, gcVars=00000280 {V00 V12}, gcrefRegs=01A0 {r
blx r3 // <unknown method>
; gcrRegs -[r0-r2]
cmp r0, 0
- beq SHORT G_M18319_IG05
+ beq SHORT G_M18319_IG04
add r9, r9, 1
cmp r10, r9
ldr r4, [sp+0x04] // [V12 cse0]
; byrRegs +[r4]
bgt SHORT G_M18319_IG03
- ;; size=160 bbWeight=4 PerfScore 244.00
-G_M18319_IG04: ; bbWeight=0.50, gcVars=00000080 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r7-r8]
+ b SHORT G_M18319_IG05
+ ;; size=162 bbWeight=4 PerfScore 248.00
+G_M18319_IG04: ; bbWeight=0.50, gcVars=00000082 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r5 r7-r8]
; byrRegs -[r4]
- ; GC ptr vars -{V06 V12}
- ldr r6, [sp+0x0C] // [V00 arg0]
- ; gcrRegs +[r6]
- b SHORT G_M18319_IG09
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M18319_IG05: ; bbWeight=2, gcVars=00000082 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r5-r6]
- ; GC ptr vars +{V01 V06}
- ldr r6, [sp+0x0C] // [V00 arg0]
- ; gcrRegs +[r6]
- b SHORT G_M18319_IG08
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M18319_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r6]
- ldr r6, [sp+0x0C] // [V00 arg0]
- ; gcrRegs +[r6]
- b SHORT G_M18319_IG08
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M18319_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6]
- ldr r6, [sp+0x0C] // [V00 arg0]
- ; gcrRegs +[r6]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M18319_IG08: ; bbWeight=0.50, gcVars=00000002 {V06}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V00 V01}
+ ; GC ptr vars -{V12}
ldr r5, [sp+0x08] // [V06 loc4]
; gcrRegs +[r5]
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M18319_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
+G_M18319_IG05: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V06}
- mov r0, r6
+ ldr r0, [sp+0x0C] // [V00 arg0]
; gcrRegs +[r0]
mov r1, r5
; gcrRegs +[r1]
@@ -210,15 +184,16 @@ G_M18319_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6},
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
+ ; GC ptr vars -{V00}
blx r3 // <unknown method>
- ; gcrRegs -[r1 r5-r6]
+ ; gcrRegs -[r1 r5]
;; size=18 bbWeight=1 PerfScore 7.00
-G_M18319_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M18319_IG06: ; 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
-; Total bytes of code 324, prolog size 10, PerfScore 310.50, instruction count 124, allocated bytes for code 324 (MethodHash=e6ecb870) for method System.ComponentModel.Design.RuntimeLicenseContext:CaseInsensitiveManifestResourceStreamLookup(System.Reflection.Assembly,System.String):System.IO.Stream (FullOpts)
+; Total bytes of code 308, prolog size 10, PerfScore 301.50, instruction count 116, allocated bytes for code 308 (MethodHash=e6ecb870) for method System.ComponentModel.Design.RuntimeLicenseContext:CaseInsensitiveManifestResourceStreamLookup(System.Reflection.Assembly,System.String):System.IO.Stream (FullOpts)
; ============================================================
Unwind Info:
@@ -230,7 +205,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 162 (0x000a2) Actual length = 324 (0x000144)
+ Function Length : 154 (0x0009a) Actual length = 308 (0x000134)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -84,7 +84,7 @@ G_M20448_IG03: ; bbWeight=0.50, gcrefRegs=0460 {r5 r6 r10}, byrefRegs=000
ldr r0, [r0]
ldr r0, [r5+r0]
cmp r0, 0
- bne G_M20448_IG12
+ bne G_M20448_IG11
ldr r3, [r6+0x0C]
; gcrRegs +[r3]
str r3, [sp+0x04] // [V28 tmp19]
@@ -119,7 +119,7 @@ G_M20448_IG03: ; bbWeight=0.50, gcrefRegs=0460 {r5 r6 r10}, byrefRegs=000
blx lr // Microsoft.CodeAnalysis.VisualBasic.BoundNodeFinder:ContainsNode(Microsoft.CodeAnalysis.VisualBasic.BoundNode,Microsoft.CodeAnalysis.VisualBasic.BoundNode,int,ubyte):ubyte
; gcrRegs -[r0-r1 r10]
cmp r0, 0
- beq G_M20448_IG12
+ beq G_M20448_IG10
movs r7, 1
ldr r2, [r6+0x14]
; gcrRegs +[r2]
@@ -154,8 +154,9 @@ G_M20448_IG03: ; bbWeight=0.50, gcrefRegs=0460 {r5 r6 r10}, byrefRegs=000
ldr r3, [r4]
blx r3 // <unknown method>
cmp r0, 0
- beq SHORT G_M20448_IG12
- ;; size=180 bbWeight=0.50 PerfScore 33.50
+ str r8, [sp+0x34] // [V03 loc1]
+ beq SHORT G_M20448_IG14
+ ;; size=184 bbWeight=0.50 PerfScore 34.00
G_M20448_IG04: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
mov r1, r10
add r0, sp, 44 // [V04 loc2]
@@ -196,7 +197,7 @@ G_M20448_IG06: ; bbWeight=4, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}
ldr r3, [r5+r9]
; gcrRegs +[r3]
cmp r3, r8
- beq SHORT G_M20448_IG11
+ beq SHORT G_M20448_IG13
str r3, [sp+0x0C] // [V13 tmp4]
; GC ptr vars +{V13}
ldr r2, [sp+0x10] // [V37 cse4]
@@ -264,7 +265,7 @@ G_M20448_IG08: ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
ldr r1, [r4+0x08]
; gcrRegs +[r1]
cmp r1, 0
- bne SHORT G_M20448_IG11
+ bne SHORT G_M20448_IG13
;; size=6 bbWeight=2 PerfScore 6.00
G_M20448_IG09: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r1 r4]
@@ -278,21 +279,33 @@ G_M20448_IG09: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6},
blx r3 // <unknown method>
cmp r0, 0
bne SHORT G_M20448_IG04
- ;; size=22 bbWeight=4 PerfScore 36.00
-G_M20448_IG10: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r8, [sp+0x34] // [V03 loc1]
- b SHORT G_M20448_IG12
+ b SHORT G_M20448_IG14
+ ;; size=24 bbWeight=4 PerfScore 40.00
+G_M20448_IG10: ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ str r8, [sp+0x34] // [V03 loc1]
+ b SHORT G_M20448_IG14
+ ;; size=6 bbWeight=0.25 PerfScore 0.50
+G_M20448_IG11: ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ str r8, [sp+0x34] // [V03 loc1]
+ b SHORT G_M20448_IG14
+ ;; size=6 bbWeight=0.25 PerfScore 0.50
+G_M20448_IG12: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ str r8, [sp+0x34] // [V03 loc1]
+ b SHORT G_M20448_IG14
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M20448_IG11: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
- mov r8, 0
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M20448_IG12: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG13: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ movs r4, 0
+ mov r8, r4
+ str r8, [sp+0x34] // [V03 loc1]
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M20448_IG14: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r7, 0
- beq SHORT G_M20448_IG14
+ beq SHORT G_M20448_IG16
;; size=4 bbWeight=1 PerfScore 2.00
-G_M20448_IG13: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG15: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [sp+0x34] // [V03 loc1]
cmp r8, 0
- beq SHORT G_M20448_IG14
+ beq G_M20448_IG24
mov r0, r5
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -302,8 +315,9 @@ G_M20448_IG13: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}
ldr r3, [r4]
blx r3 // <unknown method>
; gcrRegs -[r0]
- ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M20448_IG14: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ str r8, [sp+0x34] // [V03 loc1]
+ ;; size=34 bbWeight=0.50 PerfScore 5.50
+G_M20448_IG16: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r2, [r6+0x14]
; gcrRegs +[r2]
ldr r2, [r2+0x28]
@@ -337,9 +351,9 @@ G_M20448_IG14: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
ldr r3, [r4]
blx r3 // <unknown method>
cmp r0, 0
- beq SHORT G_M20448_IG16
+ beq SHORT G_M20448_IG18
;; size=86 bbWeight=1 PerfScore 32.00
-G_M20448_IG15: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG17: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
mov r1, r10
add r0, sp, 32 // [V07 loc5]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -367,15 +381,16 @@ G_M20448_IG15: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
ldr r3, [r4]
blx r3 // <unknown method>
cmp r0, 0
- bne SHORT G_M20448_IG15
+ bne SHORT G_M20448_IG17
;; size=64 bbWeight=4 PerfScore 100.00
-G_M20448_IG16: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG18: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r7, 0
- beq SHORT G_M20448_IG18
+ beq SHORT G_M20448_IG20
;; size=4 bbWeight=1 PerfScore 2.00
-G_M20448_IG17: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG19: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [sp+0x34] // [V03 loc1]
cmp r8, 0
- beq SHORT G_M20448_IG18
+ beq SHORT G_M20448_IG20
mov r0, r5
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -385,8 +400,8 @@ G_M20448_IG17: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}
ldr r3, [r4]
blx r3 // <unknown method>
; gcrRegs -[r0]
- ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M20448_IG18: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+ ;; size=28 bbWeight=0.50 PerfScore 5.00
+G_M20448_IG20: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r1, [r6+0x10]
; gcrRegs +[r1]
mov r0, r5
@@ -399,9 +414,9 @@ G_M20448_IG18: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r1 r6]
cmp r7, 0
- beq SHORT G_M20448_IG20
+ beq SHORT G_M20448_IG22
;; size=24 bbWeight=1 PerfScore 10.00
-G_M20448_IG19: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG21: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
movw r0, LOW RELOC 0xD1FFAB1E
movt r0, HIGH RELOC 0xD1FFAB1E
@@ -409,7 +424,7 @@ G_M20448_IG19: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
ldr r0, [r0]
ldr r0, [r5+r0]
cmp r0, 2
- beq SHORT G_M20448_IG20
+ beq SHORT G_M20448_IG22
movw r0, LOW RELOC 0xD1FFAB1E
movt r0, HIGH RELOC 0xD1FFAB1E
add r0, pc
@@ -417,30 +432,39 @@ G_M20448_IG19: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
movs r3, 1
strb r3, [r5+r0]
;; size=34 bbWeight=0.50 PerfScore 6.50
-G_M20448_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M20448_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r5]
movs r0, 0
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M20448_IG21: ; bbWeight=1, epilog, nogc, extend
+G_M20448_IG23: ; bbWeight=1, epilog, nogc, extend
add sp, 60
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
+G_M20448_IG24: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0] +[r5-r6]
+ str r8, [sp+0x34] // [V03 loc1]
+ b SHORT G_M20448_IG16
+ ;; size=6 bbWeight=0.25 PerfScore 0.50
-; Total bytes of code 732, prolog size 24, PerfScore 503.50, instruction count 275, allocated bytes for code 732 (MethodHash=b55db01f) for method Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+LocalState]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
+; Total bytes of code 774, prolog size 24, PerfScore 512.00, instruction count 288, allocated bytes for code 774 (MethodHash=b55db01f) for method Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+LocalState]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 0
+ Epilog Count : 1
F bit : 0
- E bit : 1
+ E bit : 0
X bit : 0
Vers : 0
- Function Length : 366 (0x0016e) Actual length = 732 (0x0002dc)
- --- One epilog, unwind codes at 0
+ Function Length : 387 (0x00183) Actual length = 774 (0x000306)
+ ---- Epilog scopes ----
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Condition : 14 (0xe) (always)
+ Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
0F add sp, sp, #60 ; opsize 16
@@ -17,21 +17,21 @@
;
; Lcl frame size = 4
-G_M12753_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12753_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,r4,r11,lr}
add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
G_M12753_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M12753_IG04
+ beq SHORT G_M12753_IG06
;; size=4 bbWeight=1 PerfScore 2.00
G_M12753_IG03: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
ldrb r3, [r0+0x0A]
cmp r3, 117
- beq SHORT G_M12753_IG06
+ beq SHORT G_M12753_IG04
cmp r3, 188
- bne SHORT G_M12753_IG04
+ bne SHORT G_M12753_IG06
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -41,16 +41,9 @@ G_M12753_IG03: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre
ldr r0, [r0+0x10]
cmp r0, 0
bne SHORT G_M12753_IG03
- ;; size=30 bbWeight=4 PerfScore 52.00
-G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- movs r0, 0
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M12753_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
+ b SHORT G_M12753_IG08
+ ;; size=32 bbWeight=4 PerfScore 56.00
+G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -59,11 +52,23 @@ G_M12753_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0},
; gcr arg pop 0
ldr r0, [r0+0x10]
;; size=16 bbWeight=0.50 PerfScore 3.00
+G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M12753_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0]
+ movs r0, 0
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M12753_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M12753_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0]
+ b SHORT G_M12753_IG06
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 68, prolog size 8, PerfScore 60.50, instruction count 26, allocated bytes for code 68 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 65.00, instruction count 28, allocated bytes for code 72 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
; ============================================================
Unwind Info:
@@ -75,7 +80,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 68 (0x000044)
+ Function Length : 36 (0x00024) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,13 +9,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 12, 11 ) struct (52) [sp+0xC8] do-not-enreg[SF] ld-addr-op single-def <System.Security.Cryptography.ECCurve>
-; V01 loc0 [V01,T05] ( 4, 3 ) ref -> r3 class-hnd <<unknown class>>
-; V02 loc1 [V02,T02] ( 6, 4 ) ref -> [sp+0x80] class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
+; V00 arg0 [V00,T00] ( 12, 11 ) struct (52) [sp+0xC0] do-not-enreg[SF] ld-addr-op single-def <System.Security.Cryptography.ECCurve>
+; V01 loc0 [V01,T05] ( 4, 3 ) ref -> r6 class-hnd <<unknown class>>
+; V02 loc1 [V02,T02] ( 6, 4 ) ref -> [sp+0x7C] class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
; V03 loc2 [V03,T23] ( 2, 0 ) ref -> r6 class-hnd single-def <System.Exception>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (76) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T21] ( 3, 0 ) ref -> r5 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V06 tmp2 [V06,T24] ( 2, 0 ) ref -> r6 class-hnd single-def "impImportAndPushBox" <<unknown class>>
+; V05 tmp1 [V05,T21] ( 3, 0 ) ref -> r6 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V06 tmp2 [V06,T24] ( 2, 0 ) ref -> r7 class-hnd single-def "impImportAndPushBox" <<unknown class>>
; V07 tmp3 [V07,T22] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V08 tmp4 [V08,T25] ( 2, 0 ) ref -> r5 class-hnd single-def "finalizable newobj spill" <<unknown class>>
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref
@@ -26,19 +26,19 @@
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
-; V17 tmp13 [V17,T13] ( 2, 2 ) int -> r0
+; V17 tmp13 [V17,T13] ( 2, 2 ) int -> r7
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
-; V19 tmp15 [V19,T14] ( 2, 2 ) int -> r1
+; V19 tmp15 [V19,T14] ( 2, 2 ) int -> r8
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
-; V21 tmp17 [V21,T15] ( 2, 2 ) int -> [sp+0x9C] spill-single-def
+; V21 tmp17 [V21,T15] ( 2, 2 ) int -> [sp+0x94] spill-single-def
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref single-def
-; V23 tmp19 [V23,T16] ( 2, 2 ) int -> [sp+0x98] spill-single-def
+; V23 tmp19 [V23,T16] ( 2, 2 ) int -> [sp+0x90] spill-single-def
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref single-def
-; V25 tmp21 [V25,T17] ( 2, 2 ) int -> [sp+0x94] spill-single-def
+; V25 tmp21 [V25,T17] ( 2, 2 ) int -> [sp+0x8C] spill-single-def
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref single-def
-; V27 tmp23 [V27,T18] ( 2, 2 ) int -> [sp+0x90] spill-single-def
+; V27 tmp23 [V27,T18] ( 2, 2 ) int -> [sp+0x88] spill-single-def
;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref single-def
-; V29 tmp25 [V29,T19] ( 2, 2 ) int -> [sp+0x8C] spill-single-def
+; V29 tmp25 [V29,T19] ( 2, 2 ) int -> [sp+0x84] spill-single-def
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -62,27 +62,27 @@
;* V50 tmp46 [V50 ] ( 0, 0 ) ref -> zero-ref single-def
;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp48 [V52 ] ( 0, 0 ) ref -> zero-ref single-def
-; V53 tmp49 [V53,T12] ( 3, 2 ) int -> [sp+0x88]
+; V53 tmp49 [V53,T12] ( 3, 2 ) int -> [sp+0x80]
;* V54 tmp50 [V54,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V55 tmp51 [V55,T03] ( 2, 4 ) ref -> r0 single-def "Single return block return value"
-; V56 PInvokeFrame [V56 ] ( 3, 3 ) struct (44) [sp+0x54] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V57 tmp53 [V57,T06] ( 3, 3 ) ref -> r5 single-def "V00.[000..004)"
-; V58 tmp54 [V58,T07] ( 3, 3 ) ref -> r6 single-def "V00.[004..008)"
-; V59 tmp55 [V59,T08] ( 3, 3 ) ref -> r7 single-def "V00.[008..012)"
-; V60 tmp56 [V60,T09] ( 3, 3 ) ref -> r8 single-def "V00.[012..016)"
-; V61 tmp57 [V61,T04] ( 4, 3.50) ref -> r9 single-def "V00.[016..020)"
-; V62 tmp58 [V62,T01] ( 7, 4.50) int -> [sp+0x84] spill-single-def "V00.[032..036)"
-; V63 tmp59 [V63,T10] ( 3, 3 ) ref -> lr single-def "V00.[036..040)"
-; V64 tmp60 [V64,T11] ( 3, 3 ) ref -> r12 single-def "V00.[040..044)"
+; V56 PInvokeFrame [V56 ] ( 3, 3 ) struct (44) [sp+0x50] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V57 tmp53 [V57,T06] ( 3, 3 ) ref -> r0 single-def "V00.[000..004)"
+; V58 tmp54 [V58,T07] ( 3, 3 ) ref -> r1 single-def "V00.[004..008)"
+; V59 tmp55 [V59,T08] ( 3, 3 ) ref -> r2 single-def "V00.[008..012)"
+; V60 tmp56 [V60,T09] ( 3, 3 ) ref -> r3 single-def "V00.[012..016)"
+; V61 tmp57 [V61,T04] ( 4, 3.50) ref -> lr single-def "V00.[016..020)"
+; V62 tmp58 [V62,T01] ( 7, 4.50) int -> r5 "V00.[032..036)"
+; V63 tmp59 [V63,T10] ( 3, 3 ) ref -> r12 single-def "V00.[036..040)"
+; V64 tmp60 [V64,T11] ( 3, 3 ) ref -> r4 single-def "V00.[040..044)"
; V65 tmp61 [V65,T26] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
;
-; Lcl frame size = 164
+; Lcl frame size = 156
G_M7764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 164
- add r11, sp, 192
+ sub sp, 156
+ add r11, sp, 184
;; size=12 bbWeight=1 PerfScore 4.00
G_M7764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r4, LOW RELOC 0xD1FFAB1E
@@ -91,116 +91,116 @@ G_M7764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r3, [r4]
blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
; byrRegs +[r0]
- ldr r5, [sp+0xC8]
- ; gcrRegs +[r5]
- ldr r6, [sp+0xCC]
- ; gcrRegs +[r6]
- ldr r7, [sp+0xD0]
- ; gcrRegs +[r7]
- ldr r8, [sp+0xD4]
- ; gcrRegs +[r8]
- ldr r9, [sp+0xD8]
- ; gcrRegs +[r9]
- ldr r4, [sp+0xE8]
- str r4, [sp+0x84]
- ldr lr, [sp+0xEC]
- ; gcrRegs +[lr]
- ldr r12, [sp+0xF0]
- ; gcrRegs +[r12]
- cmp r4, 1
- beq SHORT G_M7764_IG04
- ;; size=44 bbWeight=1 PerfScore 16.00
-G_M7764_IG03: ; bbWeight=0.50, gcrefRegs=53E0 {r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [sp+0xC0]
+ ; gcrRegs +[r0]
; byrRegs -[r0]
- cmp r4, 3
- beq SHORT G_M7764_IG04
- cmp r4, 2
- beq SHORT G_M7764_IG04
- cmp r4, 4
- bne SHORT G_M7764_IG16
- b SHORT G_M7764_IG05
- ;; size=14 bbWeight=0.50 PerfScore 3.50
-G_M7764_IG04: ; bbWeight=0.50, gcrefRegs=53E0 {r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0xE0]
+ ldr r1, [sp+0xC4]
+ ; gcrRegs +[r1]
+ ldr r2, [sp+0xC8]
+ ; gcrRegs +[r2]
+ ldr r3, [sp+0xCC]
; gcrRegs +[r3]
+ ldr lr, [sp+0xD0]
+ ; gcrRegs +[lr]
+ ldr r5, [sp+0xE0]
+ ldr r12, [sp+0xE4]
+ ; gcrRegs +[r12]
+ ldr r4, [sp+0xE8]
+ ; gcrRegs +[r4]
+ cmp r5, 1
+ beq SHORT G_M7764_IG04
+ ;; size=38 bbWeight=1 PerfScore 15.00
+G_M7764_IG03: ; bbWeight=0.50, gcrefRegs=501F {r0 r1 r2 r3 r4 r12 lr}, byrefRegs=0000 {}, byref, isz
+ cmp r5, 3
+ beq SHORT G_M7764_IG04
+ cmp r5, 2
+ bne SHORT G_M7764_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M7764_IG04: ; bbWeight=0.50, gcrefRegs=501F {r0 r1 r2 r3 r4 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ldr r6, [sp+0xD8]
+ ; gcrRegs +[r6]
b SHORT G_M7764_IG06
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG05: ; bbWeight=0.50, gcrefRegs=53E0 {r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- ldr r3, [sp+0xDC]
- ; gcrRegs +[r3]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M7764_IG06: ; bbWeight=1, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r3+0x04]
- ldr r1, [r5+0x04]
- ldr r2, [r6+0x04]
- str r2, [sp+0x9C] // [V21 tmp17]
- ldr r2, [lr+0x04]
- str r2, [sp+0x98] // [V23 tmp19]
- ldr r2, [r12+0x04]
- str r2, [sp+0x94] // [V25 tmp21]
- ldr r2, [r7+0x04]
- str r2, [sp+0x90] // [V27 tmp23]
- ldr r2, [r8+0x04]
- str r2, [sp+0x8C] // [V29 tmp25]
- cmp r9, 0
- beq SHORT G_M7764_IG08
- ;; size=36 bbWeight=1 PerfScore 14.00
-G_M7764_IG07: ; bbWeight=0.50, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
- ldr r2, [r9+0x04]
- str r2, [sp+0x88] // [V53 tmp49]
- b SHORT G_M7764_IG09
+G_M7764_IG05: ; bbWeight=0.50, gcrefRegs=501F {r0 r1 r2 r3 r4 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6]
+ cmp r5, 4
+ bne G_M7764_IG16
+ ldr r6, [sp+0xD4]
+ ; gcrRegs +[r6]
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M7764_IG08: ; bbWeight=0.50, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref
- movs r2, 0
- str r2, [sp+0x88] // [V53 tmp49]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG09: ; bbWeight=1, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref
- movs r2, 0
- str r2, [sp] // [V04 OutArgs]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M7764_IG10: ; bbWeight=1, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref
- str r2, [sp+0x04] // [V04 OutArgs+0x04]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M7764_IG11: ; bbWeight=1, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
- str r2, [sp+0x08] // [V04 OutArgs+0x08]
- str r3, [sp+0x0C] // [V04 OutArgs+0x0c]
- str r0, [sp+0x10] // [V04 OutArgs+0x10]
- str r5, [sp+0x14] // [V04 OutArgs+0x14]
- str r1, [sp+0x18] // [V04 OutArgs+0x18]
- str r6, [sp+0x1C] // [V04 OutArgs+0x1c]
- ldr r2, [sp+0x9C] // [V21 tmp17]
- str r2, [sp+0x20] // [V04 OutArgs+0x20]
- str lr, [sp+0x24] // [V04 OutArgs+0x24]
- ldr r2, [sp+0x98] // [V23 tmp19]
- str r2, [sp+0x28] // [V04 OutArgs+0x28]
- str r12, [sp+0x2C] // [V04 OutArgs+0x2c]
- ldr r2, [sp+0x94] // [V25 tmp21]
- str r2, [sp+0x30] // [V04 OutArgs+0x30]
- str r7, [sp+0x34] // [V04 OutArgs+0x34]
- ldr r2, [sp+0x90] // [V27 tmp23]
- str r2, [sp+0x38] // [V04 OutArgs+0x38]
- str r8, [sp+0x3C] // [V04 OutArgs+0x3c]
- ldr r2, [sp+0x8C] // [V29 tmp25]
- str r2, [sp+0x40] // [V04 OutArgs+0x40]
- str r9, [sp+0x44] // [V04 OutArgs+0x44]
- ldr r2, [sp+0x88] // [V53 tmp49]
- str r2, [sp+0x48] // [V04 OutArgs+0x48]
- mov r0, r4
+G_M7764_IG06: ; bbWeight=1, gcrefRegs=505F {r0 r1 r2 r3 r4 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ldr r7, [r6+0x04]
+ ldr r8, [r0+0x04]
+ ldr r9, [r1+0x04]
+ str r9, [sp+0x94] // [V21 tmp17]
+ ldr r9, [r12+0x04]
+ str r9, [sp+0x90] // [V23 tmp19]
+ ldr r9, [r4+0x04]
+ str r9, [sp+0x8C] // [V25 tmp21]
+ ldr r9, [r2+0x04]
+ str r9, [sp+0x88] // [V27 tmp23]
+ ldr r9, [r3+0x04]
+ str r9, [sp+0x84] // [V29 tmp25]
+ cmp lr, 0
+ beq SHORT G_M7764_IG08
+ ;; size=52 bbWeight=1 PerfScore 14.00
+G_M7764_IG07: ; bbWeight=0.50, gcrefRegs=505F {r0 r1 r2 r3 r4 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ldr r9, [lr+0x04]
+ str r9, [sp+0x80] // [V53 tmp49]
+ b SHORT G_M7764_IG09
+ ;; size=10 bbWeight=0.50 PerfScore 1.50
+G_M7764_IG08: ; bbWeight=0.50, gcrefRegs=505F {r0 r1 r2 r3 r4 r6 r12 lr}, byrefRegs=0000 {}, byref
+ mov r9, 0
+ str r9, [sp+0x80] // [V53 tmp49]
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M7764_IG09: ; bbWeight=1, gcrefRegs=505F {r0 r1 r2 r3 r4 r6 r12 lr}, byrefRegs=0000 {}, byref
+ mov r9, 0
+ str r9, [sp] // [V04 OutArgs]
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M7764_IG10: ; bbWeight=1, gcrefRegs=505F {r0 r1 r2 r3 r4 r6 r12 lr}, byrefRegs=0000 {}, byref
+ str r9, [sp+0x04] // [V04 OutArgs+0x04]
...
@@ -12,7 +12,7 @@
; V01 arg1 [V01,T01] ( 5, 5 ) struct (20) [sp+0x44] do-not-enreg[S] single-def <System.Diagnostics.ActivityContext>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Diagnostics.ActivityContext>
-; V04 tmp2 [V04,T08] ( 3, 2 ) ubyte -> r8 "Inline return value spill temp"
+; V04 tmp2 [V04,T08] ( 3, 2 ) ubyte -> lr "Inline return value spill temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Diagnostics.ActivitySpanId>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Diagnostics.ActivityContext>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Diagnostics.ActivitySpanId>
@@ -54,13 +54,13 @@
; V43 tmp41 [V43,T13] ( 2, 1.50) int -> r5 "V03.[004..008)"
; V44 tmp42 [V44,T14] ( 2, 1.50) ubyte -> r6 "V03.[008..009)"
; V45 tmp43 [V45,T03] ( 6, 3.38) ref -> r7 single-def "V03.[012..016)"
-; V46 tmp44 [V46,T02] ( 6, 3.88) ref -> r8 single-def "V03.[016..020)"
-; V47 tmp45 [V47,T04] ( 6, 3.38) ref -> r9 single-def "V06.[000..004)"
-; V48 tmp46 [V48,T15] ( 2, 1.50) int -> r10 "V06.[004..008)"
-; V49 tmp47 [V49,T16] ( 2, 1.50) ubyte -> [sp+0x04] spill-single-def "V06.[008..009)"
-; V50 tmp48 [V50,T07] ( 5, 2.88) ref -> [sp+0x00] spill-single-def "V06.[012..016)"
-; V51 tmp49 [V51,T05] ( 5, 3.38) ref -> r12 single-def "V06.[016..020)"
-; V52 cse0 [V52,T12] ( 4, 1.88) int -> r8 "CSE - moderate"
+; V46 tmp44 [V46,T02] ( 6, 3.88) ref -> r2 single-def "V03.[016..020)"
+; V47 tmp45 [V47,T04] ( 6, 3.38) ref -> r8 single-def "V06.[000..004)"
+; V48 tmp46 [V48,T15] ( 2, 1.50) int -> r9 "V06.[004..008)"
+; V49 tmp47 [V49,T16] ( 2, 1.50) ubyte -> r10 "V06.[008..009)"
+; V50 tmp48 [V50,T07] ( 5, 2.88) ref -> [sp+0x04] spill-single-def "V06.[012..016)"
+; V51 tmp49 [V51,T05] ( 5, 3.38) ref -> r1 single-def "V06.[016..020)"
+; V52 cse0 [V52,T12] ( 4, 1.88) int -> r5 "CSE - moderate"
;
; Lcl frame size = 12
@@ -77,186 +77,191 @@ G_M40484_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldrb r6, [sp+0x38]
ldr r7, [sp+0x3C]
; gcrRegs +[r7]
- ldr r8, [sp+0x40]
+ ldr r2, [sp+0x40]
+ ; gcrRegs +[r2]
+ ldr r8, [sp+0x44]
; gcrRegs +[r8]
- ldr r9, [sp+0x44]
- ; gcrRegs +[r9]
- ldr r10, [sp+0x48]
- ldrb r3, [sp+0x4C]
- str r3, [sp+0x04] // [V49 tmp47]
- ldr lr, [sp+0x50] // [V01 arg1+0x0c]
- ; gcrRegs +[lr]
- str lr, [sp] // [V50 tmp48]
+ ldr r9, [sp+0x48]
+ ldrb r10, [sp+0x4C]
+ ldr r3, [sp+0x50]
+ ; gcrRegs +[r3]
+ str r3, [sp+0x04] // [V50 tmp48]
; GC ptr vars +{V50}
- ldr r12, [sp+0x54] // [V01 arg1+0x10]
- ; gcrRegs +[r12]
- cmp r8, r12
- beq SHORT G_M40484_IG06
- ;; size=44 bbWeight=1 PerfScore 14.00
-G_M40484_IG03: ; bbWeight=0.44, gcVars=00000080 {V50}, gcrefRegs=5390 {r4 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp r8, 0
- beq SHORT G_M40484_IG23
- ;; size=6 bbWeight=0.44 PerfScore 0.88
-G_M40484_IG04: ; bbWeight=0.44, gcrefRegs=5390 {r4 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M40484_IG21
- ;; size=2 bbWeight=0.44 PerfScore 0.44
-G_M40484_IG05: ; bbWeight=0.50, gcrefRegs=1390 {r4 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[lr]
- add r0, r8, 8
+ ldr r1, [sp+0x54] // [V01 arg1+0x10]
+ ; gcrRegs +[r1]
+ cmp r2, r1
+ beq SHORT G_M40484_IG05
+ ;; size=34 bbWeight=1 PerfScore 13.00
+G_M40484_IG03: ; bbWeight=0.44, gcVars=00000080 {V50}, gcrefRegs=0196 {r1 r2 r4 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r3]
+ cmp r2, 0
+ beq SHORT G_M40484_IG22
+ b SHORT G_M40484_IG20
+ ;; size=6 bbWeight=0.44 PerfScore 1.31
+G_M40484_IG04: ; bbWeight=0.50, gcrefRegs=0196 {r1 r2 r4 r7 r8}, byrefRegs=0000 {}, byref, isz
+ add r0, r2, 8
; byrRegs +[r0]
- add r1, r12, 8
+ adds r1, 8
+ ; gcrRegs -[r1]
; byrRegs +[r1]
- ldr r2, [r8+0x04]
+ ldr r2, [r2+0x04]
+ ; gcrRegs -[r2]
lsls r2, r2, 1
- movw r12, 0xd1ff
- ; gcrRegs -[r12]
- movt r12, 0xd1ff
- ldr r12, [r12]
- blx r12 // <unknown method>
- ; gcrRegs -[r8]
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ blx lr // <unknown method>
; byrRegs -[r0-r1]
cmp r0, 0
- ldr lr, [sp] // [V50 tmp48]
- ; gcrRegs +[lr]
- beq SHORT G_M40484_IG23
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M40484_IG06: ; bbWeight=0.50, gcrefRegs=4290 {r4 r7 r9 lr}, byrefRegs=0000 {}, byref, isz
- cmp r7, lr
- beq SHORT G_M40484_IG11
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M40484_IG07: ; bbWeight=0.44, gcrefRegs=4290 {r4 r7 r9 lr}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M40484_IG22
+ ;; size=28 bbWeight=0.50 PerfScore 5.00
+G_M40484_IG05: ; bbWeight=0.50, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [sp+0x04] // [V50 tmp48]
+ ; gcrRegs +[r3]
+ cmp r7, r3
+ beq SHORT G_M40484_IG10
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M40484_IG06: ; bbWeight=0.44, gcrefRegs=0198 {r3 r4 r7 r8}, byrefRegs=0000 {}, byref, isz
cmp r7, 0
- beq SHORT G_M40484_IG23
+ beq SHORT G_M40484_IG22
;; size=4 bbWeight=0.44 PerfScore 0.88
-G_M40484_IG08: ; bbWeight=0.44, gcrefRegs=4290 {r4 r7 r9 lr}, byrefRegs=0000 {}, byref, isz
- cmp lr, 0
- beq SHORT G_M40484_IG23
- ;; size=6 bbWeight=0.44 PerfScore 0.88
-G_M40484_IG09: ; bbWeight=0.44, gcrefRegs=4290 {r4 r7 r9 lr}, byrefRegs=0000 {}, byref, isz
+G_M40484_IG07: ; bbWeight=0.44, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r3]
+ ldr r3, [sp+0x04] // [V50 tmp48]
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M40484_IG22
+ ;; size=6 bbWeight=0.44 PerfScore 1.31
+G_M40484_IG08: ; bbWeight=0.44, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r3]
ldr r1, [r7+0x04]
- ldr r2, [lr+0x04]
+ ldr r3, [sp+0x04] // [V50 tmp48]
+ ; gcrRegs +[r3]
+ ldr r2, [r3+0x04]
cmp r1, r2
- bne SHORT G_M40484_IG23
- ;; size=10 bbWeight=0.44 PerfScore 1.75
-G_M40484_IG10: ; bbWeight=0.50, gcrefRegs=4290 {r4 r7 r9 lr}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M40484_IG22
+ ;; size=10 bbWeight=0.44 PerfScore 2.19
+G_M40484_IG09: ; bbWeight=0.50, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r3]
add r0, r7, 8
; byrRegs +[r0]
- add r1, lr, 8
+ ldr r3, [sp+0x04] // [V50 tmp48]
+ ; gcrRegs +[r3]
+ add r1, r3, 8
; byrRegs +[r1]
ldr r2, [r7+0x04]
lsls r2, r2, 1
- movw lr, 0xd1ff
- ; gcrRegs -[lr]
- movt lr, 0xd1ff
- ldr lr, [lr]
+ movw r3, 0xd1ff
+ ; gcrRegs -[r3]
+ movt r3, 0xd1ff
+ ldr r3, [r3]
; GC ptr vars -{V50}
- blx lr // <unknown method>
+ blx r3 // <unknown method>
; gcrRegs -[r7]
; byrRegs -[r0-r1]
cmp r0, 0
- beq SHORT G_M40484_IG23
- ;; size=30 bbWeight=0.50 PerfScore 5.00
-G_M40484_IG11: ; bbWeight=0.50, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
- cmp r5, r10
- bne SHORT G_M40484_IG23
- cmp r4, r9
- beq SHORT G_M40484_IG18
+ beq SHORT G_M40484_IG22
+ ;; size=30 bbWeight=0.50 PerfScore 5.50
+G_M40484_IG10: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
+ cmp r5, r9
+ bne SHORT G_M40484_IG22
+ cmp r4, r8
+ beq SHORT G_M40484_IG17
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M40484_IG12: ; bbWeight=0.44, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
+G_M40484_IG11: ; bbWeight=0.44, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
- beq SHORT G_M40484_IG23
+ beq SHORT G_M40484_IG22
;; size=4 bbWeight=0.44 PerfScore 0.88
-G_M40484_IG13: ; bbWeight=0.44, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
- cmp r9, 0
- beq SHORT G_M40484_IG23
+G_M40484_IG12: ; bbWeight=0.44, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
+ cmp r8, 0
+ beq SHORT G_M40484_IG22
;; size=6 bbWeight=0.44 PerfScore 0.88
-G_M40484_IG14: ; bbWeight=0.44, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
- ldr r8, [r4+0x04]
- ldr r0, [r9+0x04]
- cmp r8, r0
- bne SHORT G_M40484_IG23
- ;; size=12 bbWeight=0.44 PerfScore 1.75
-G_M40484_IG15: ; bbWeight=0.50, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
+G_M40484_IG13: ; bbWeight=0.44, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
+ ldr r5, [r4+0x04]
+ ldr r0, [r8+0x04]
+ cmp r5, r0
+ bne SHORT G_M40484_IG22
+ ;; size=10 bbWeight=0.44 PerfScore 1.75
+G_M40484_IG14: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
movs r0, 1
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- ldr r2, [r2]
- blx r2 // System.Diagnostics.Debug:Assert(ubyte)
- ldr r0, [r9+0x04]
- cmp r0, r8
- beq SHORT G_M40484_IG16
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Diagnostics.Debug:Assert(ubyte)
+ ldr r0, [r8+0x04]
+ cmp r0, r5
+ beq SHORT G_M40484_IG15
movs r0, 0
- b SHORT G_M40484_IG17
+ b SHORT G_M40484_IG16
;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M40484_IG16: ; bbWeight=0.50, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref
+G_M40484_IG15: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M40484_IG17: ; bbWeight=0.50, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
+G_M40484_IG16: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Diagnostics.Debug:Assert(ubyte)
add r0, r4, 8
; byrRegs +[r0]
- add r1, r9, 8
+ add r1, r8, 8
; byrRegs +[r1]
...
@@ -13,14 +13,14 @@
; V02 loc0 [V02 ] ( 2, 1 ) struct (16) [sp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op double-align <System.DateTimeOffset>
; V03 loc1 [V03,T02] ( 7, 4.50) int -> r0 single-def
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op double-align <System.Nullable`1[System.DateTime]>
-; V05 loc3 [V05,T10] ( 4, 1.75) ref -> r7 class-hnd single-def <<unknown class>>
+; V05 loc3 [V05,T10] ( 3, 1.50) ref -> r0 class-hnd single-def <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T06] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <System.DateTimeOffset>
+; V07 tmp1 [V07,T06] ( 3, 2.50) ref -> r3 class-hnd "spilling QMark2" <System.DateTimeOffset>
; V08 tmp2 [V08,T03] ( 4, 3.50) ref -> r4 single-def "inline UNBOX clone1"
; V09 tmp3 [V09,T09] ( 2, 2 ) struct (16) [sp+0x00] do-not-enreg[SF] ld-addr-op double-align "NewObj constructor temp" <System.Nullable`1[System.DateTime]>
; V10 tmp4 [V10,T05] ( 3, 3 ) ref -> r7 class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-; V11 tmp5 [V11,T14] ( 2, 0 ) ref -> r5 class-hnd single-def "non-inline candidate call" <<unknown class>>
-; V12 tmp6 [V12,T13] ( 3, 0 ) ref -> r7 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V11 tmp5 [V11,T13] ( 2, 0 ) ref -> r5 class-hnd single-def "non-inline candidate call" <<unknown class>>
+; V12 tmp6 [V12,T12] ( 3, 0 ) ref -> r7 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
; V13 tmp7 [V13,T08] ( 3, 2 ) ref -> r1 single-def "CASTCLASS eval op1"
; V14 tmp8 [V14,T11] ( 3, 1 ) int -> r3 "fgMakeTemp is creating a new local variable"
; V15 tmp9 [V15,T04] ( 4, 3.50) ref -> r2 class-hnd single-def "spilling QMark2" <System.String>
@@ -28,10 +28,9 @@
;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V18 tmp12 [V18 ] ( 0, 0 ) long -> zero-ref "field V16._dateData (fldOffset=0x0)" P-INDEP
;* V19 tmp13 [V19 ] ( 0, 0 ) ubyte -> zero-ref "V09.[000..001)"
-; V20 tmp14 [V20,T15] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V21 tmp15 [V21,T16] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V20 tmp14 [V20,T14] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V21 tmp15 [V21,T15] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V22 cse0 [V22,T07] ( 7, 2.50) int -> r6 multi-def "CSE - aggressive"
-; V23 cse1 [V23,T12] ( 3, 1 ) int -> r0 "CSE - conservative"
;
; Lcl frame size = 32
@@ -62,9 +61,9 @@ G_M49315_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by
;; size=18 bbWeight=1 PerfScore 7.00
G_M49315_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
cmp r0, 0
- beq SHORT G_M49315_IG11
+ beq SHORT G_M49315_IG10
cmp r0, 9
- bne G_M49315_IG19
+ bne G_M49315_IG16
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -84,7 +83,7 @@ G_M49315_IG04: ; bbWeight=0.25, gcrefRegs=0016 {r1 r2 r4}, byrefRegs=0020
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M49315_IG20
+ bne G_M49315_IG17
;; size=16 bbWeight=0.25 PerfScore 1.25
G_M49315_IG05: ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0020 {r5}, byref
; gcrRegs -[r1]
@@ -107,79 +106,46 @@ G_M49315_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4},
; gcrRegs +[r4]
; byrRegs +[r5]
cmp r0, 11
- beq SHORT G_M49315_IG11
+ beq SHORT G_M49315_IG10
cmp r0, 14
- beq SHORT G_M49315_IG11
+ beq SHORT G_M49315_IG10
cmp r0, 16
- bne SHORT G_M49315_IG19
+ bne SHORT G_M49315_IG16
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
ldr r6, [r3+0x34]
ldr r3, [r6+0x04]
blx r3 // <unknown method>
- mov r7, r0
- ; gcrRegs +[r7]
- mov r0, r7
- cmp r0, 0
- beq SHORT G_M49315_IG15
- ;; size=30 bbWeight=0.50 PerfScore 7.50
-G_M49315_IG08: ; bbWeight=0.25, gcrefRegs=0091 {r0 r4 r7}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [r0]
- ; gcrRegs -[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r0, r3
- bne SHORT G_M49315_IG15
- ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M49315_IG09: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, byref, isz
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r0, r3
- beq SHORT G_M49315_IG14
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M49315_IG10: ; bbWeight=0.25, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, byref, isz
- b SHORT G_M49315_IG13
- ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M49315_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
- ; gcrRegs -[r4 r7]
- movs r0, 0
- str r0, [r5]
- str r0, [r5+0x04]
- str r0, [r5+0x08]
- str r0, [r5+0x0C]
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M49315_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 32
- pop {r4,r5,r6,r7,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M49315_IG13: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, gcvars, byref
- ; gcrRegs +[r4 r7]
- mov r1, r7
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
+ mov r3, r0
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq SHORT G_M49315_IG12
+ ;; size=28 bbWeight=0.50 PerfScore 7.00
+G_M49315_IG08: ; bbWeight=0.25, gcrefRegs=0019 {r0 r3 r4}, byrefRegs=0020 {r5}, byref, isz
ldr r3, [r3]
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ;; size=22 bbWeight=0.25 PerfScore 1.75
-G_M49315_IG14: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, byref
- ldr r0, [r7+0x04]
- str r0, [sp+0x10]
- ldr r0, [r7+0x08]
- str r0, [sp+0x14]
- ldr r0, [r7+0x0C]
- str r0, [sp+0x18]
- ldr r0, [r7+0x10]
- str r0, [sp+0x1C]
+ ; gcrRegs -[r3]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M49315_IG12
+ ;; size=14 bbWeight=0.25 PerfScore 1.25
+G_M49315_IG09: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz
+ ldr r3, [r0+0x04]
+ str r3, [sp+0x10]
+ ldr r3, [r0+0x08]
+ str r3, [sp+0x14]
+ ldr r3, [r0+0x0C]
+ str r3, [sp+0x18]
+ ldr r3, [r0+0x10]
+ str r3, [sp+0x1C]
movw r0, 0xd1ff
+ ; gcrRegs -[r0]
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWFAST
- ; gcrRegs -[r7] +[r0]
+ ; gcrRegs +[r0]
mov r7, r0
; gcrRegs +[r7]
adds r1, r7, 4
@@ -202,8 +168,22 @@ G_M49315_IG14: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r0 r2 r7]
- ;; size=74 bbWeight=0.50 PerfScore 14.00
-G_M49315_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ b SHORT G_M49315_IG12
+ ;; size=76 bbWeight=0.50 PerfScore 14.50
+G_M49315_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
+ ; gcrRegs -[r4]
+ movs r0, 0
+ str r0, [r5]
+ str r0, [r5+0x04]
+ str r0, [r5+0x08]
+ str r0, [r5+0x0C]
+ ;; size=10 bbWeight=0.50 PerfScore 2.50
+G_M49315_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ add sp, 32
+ pop {r4,r5,r6,r7,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M49315_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
+ ; gcrRegs +[r4]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r6+0x04]
@@ -216,9 +196,9 @@ G_M49315_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5},
; gcrRegs -[r0]
movt r0, 0xd1ff
cmp r1, r0
- beq SHORT G_M49315_IG17
+ beq SHORT G_M49315_IG14
;; size=22 bbWeight=0.50 PerfScore 4.50
-G_M49315_IG16: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
+G_M49315_IG13: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
mov r1, r4
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -229,27 +209,27 @@ G_M49315_IG16: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5},
blx r3 // CORINFO_HELP_UNBOX
; gcrRegs -[r1]
;; size=22 bbWeight=0.25 PerfScore 1.75
-G_M49315_IG17: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
- ldr r1, [r4+0x04]
- str r1, [sp+0x08]
- ldr r1, [r4+0x08]
- str r1, [sp+0x0C]
- ldr r1, [sp]
- str r1, [r5]
- ldr r1, [sp+0x04]
- str r1, [r5+0x04]
- ldr r1, [sp+0x08]
- str r1, [r5+0x08]
- ldr r1, [sp+0x0C]
- str r1, [r5+0x0C]
- movs r1, 1
- strb r1, [r5]
+G_M49315_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
+ ldr r0, [r4+0x04]
+ str r0, [sp+0x08]
+ ldr r0, [r4+0x08]
+ str r0, [sp+0x0C]
+ ldr r0, [sp]
+ str r0, [r5]
+ ldr r0, [sp+0x04]
+ str r0, [r5+0x04]
+ ldr r0, [sp+0x08]
+ str r0, [r5+0x08]
+ ldr r0, [sp+0x0C]
+ str r0, [r5+0x0C]
+ movs r0, 1
+ strb r0, [r5]
;; size=28 bbWeight=0.50 PerfScore 7.00
-G_M49315_IG18: ; bbWeight=0.50, epilog, nogc, extend
+G_M49315_IG15: ; bbWeight=0.50, epilog, nogc, extend
add sp, 32
pop {r4,r5,r6,r7,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M49315_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M49315_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[r5]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -304,7 +284,7 @@ G_M49315_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
blx r3 // CORINFO_HELP_THROW
; gcrRegs -[r0]
;; size=112 bbWeight=0 PerfScore 0.00
-G_M49315_IG20: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+G_M49315_IG17: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
; gcrRegs +[r1]
mov r0, r3
movw r3, 0xd1ff
...
@@ -13,11 +13,11 @@
; V02 loc0 [V02,T09] ( 7, 4.25) ref -> r5 class-hnd exact <System.ComponentModel.LookupBindingPropertiesAttribute>
;# 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 "spilling QMark2" <System.ComponentModel.LookupBindingPropertiesAttribute>
-; V05 tmp2 [V05,T03] ( 5, 4.75) ref -> r6 class-hnd exact single-def "impAppendStmt" <System.String>
-; V06 tmp3 [V06,T04] ( 5, 4.75) ref -> r8 class-hnd exact single-def "impAppendStmt" <System.String>
-; V07 tmp4 [V07,T05] ( 5, 4.75) ref -> r10 class-hnd exact single-def "impAppendStmt" <System.String>
+; V05 tmp2 [V05,T03] ( 5, 4.75) ref -> r2 class-hnd exact single-def "impAppendStmt" <System.String>
+; V06 tmp3 [V06,T04] ( 5, 4.75) ref -> r2 class-hnd exact single-def "impAppendStmt" <System.String>
+; V07 tmp4 [V07,T05] ( 5, 4.75) ref -> r2 class-hnd exact single-def "impAppendStmt" <System.String>
; V08 tmp5 [V08,T02] ( 6, 4.98) ref -> r2 class-hnd exact single-def "impAppendStmt" <System.String>
-; V09 tmp6 [V09,T06] ( 5, 4.75) ref -> r7 class-hnd exact single-def "Inlining Arg" <System.String>
+; V09 tmp6 [V09,T06] ( 5, 4.75) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String>
; V10 tmp7 [V10,T18] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
; V11 tmp8 [V11,T11] ( 2, 2 ) byref -> r0 single-def "impAppendStmt"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -25,17 +25,17 @@
;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp14 [V17,T07] ( 5, 4.75) ref -> r9 class-hnd exact single-def "Inlining Arg" <System.String>
+; V17 tmp14 [V17,T07] ( 5, 4.75) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String>
; V18 tmp15 [V18,T19] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
-; V19 tmp16 [V19,T12] ( 2, 2 ) byref -> r0 single-def "impAppendStmt"
+; V19 tmp16 [V19,T12] ( 2, 2 ) byref -> r3 single-def "impAppendStmt"
;* V20 tmp17 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp19 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp21 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp22 [V25,T08] ( 5, 4.75) ref -> r3 class-hnd exact single-def "Inlining Arg" <System.String>
+; V25 tmp22 [V25,T08] ( 5, 4.75) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String>
; V26 tmp23 [V26,T20] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
-; V27 tmp24 [V27,T13] ( 2, 2 ) byref -> r0 single-def "impAppendStmt"
+; V27 tmp24 [V27,T13] ( 2, 2 ) byref -> r3 single-def "impAppendStmt"
;* V28 tmp25 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp26 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp27 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -49,15 +49,15 @@
;* V38 tmp35 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp36 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp37 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 cse0 [V41,T14] ( 3, 1.38) int -> r2 "CSE - moderate"
-; V42 cse1 [V42,T15] ( 3, 1.38) int -> r2 "CSE - moderate"
-; V43 cse2 [V43,T16] ( 3, 1.38) int -> r2 "CSE - moderate"
+; V41 cse0 [V41,T14] ( 3, 1.38) int -> r3 "CSE - moderate"
+; V42 cse1 [V42,T15] ( 3, 1.38) int -> r0 "CSE - moderate"
+; V43 cse2 [V43,T16] ( 3, 1.38) int -> r0 "CSE - moderate"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M3330_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
- add r11, sp, 32
+ push {r4,r5,r11,lr}
+ add r11, sp, 8
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
@@ -66,7 +66,7 @@ G_M3330_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, by
mov r5, r1
; gcrRegs +[r5]
cmp r5, 0
- beq SHORT G_M3330_IG24
+ beq SHORT G_M3330_IG21
;; size=6 bbWeight=1 PerfScore 3.00
G_M3330_IG03: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
@@ -74,104 +74,99 @@ G_M3330_IG03: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {},
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r0, r2
- bne SHORT G_M3330_IG24
+ bne SHORT G_M3330_IG21
;; size=14 bbWeight=0.25 PerfScore 1.25
G_M3330_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r5+0x04]
- ; gcrRegs +[r6]
- ldr r7, [r4+0x04]
- ; gcrRegs +[r7]
- cmp r6, r7
- beq SHORT G_M3330_IG08
+ ldr r2, [r5+0x04]
+ ; gcrRegs +[r2]
+ ldr r1, [r4+0x04]
+ ; gcrRegs +[r1]
+ cmp r2, r1
+ beq SHORT G_M3330_IG07
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M3330_IG05: ; bbWeight=0.44, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- cmp r6, 0
- beq SHORT G_M3330_IG24
- ;; size=4 bbWeight=0.44 PerfScore 0.88
-G_M3330_IG06: ; bbWeight=0.44, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M3330_IG22
- ;; size=2 bbWeight=0.44 PerfScore 0.44
-G_M3330_IG07: ; bbWeight=0.50, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- add r0, r6, 8
+G_M3330_IG05: ; bbWeight=0.44, gcrefRegs=0036 {r1 r2 r4 r5}, byrefRegs=0000 {}, byref, isz
+ cmp r2, 0
+ beq SHORT G_M3330_IG21
+ b SHORT G_M3330_IG19
+ ;; size=6 bbWeight=0.44 PerfScore 1.31
+G_M3330_IG06: ; bbWeight=0.50, gcrefRegs=0036 {r1 r2 r4 r5}, byrefRegs=0000 {}, byref, isz
+ add r0, r2, 8
; byrRegs +[r0]
- lsls r2, r2, 1
- add r1, r7, 8
+ lsls r2, r3, 1
+ ; gcrRegs -[r2]
+ adds r1, 8
+ ; gcrRegs -[r1]
; byrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r6-r7]
; byrRegs -[r0-r1]
cmp r0, 0
- beq SHORT G_M3330_IG24
- ;; size=26 bbWeight=0.50 PerfScore 4.50
-G_M3330_IG08: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r8, [r5+0x08]
- ; gcrRegs +[r8]
- ldr r9, [r4+0x08]
- ; gcrRegs +[r9]
- cmp r8, r9
- beq SHORT G_M3330_IG11
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M3330_IG09: ; bbWeight=0.44, gcrefRegs=0330 {r4 r5 r8 r9}, byrefRegs=0000 {}, byref, isz
- cmp r8, 0
- beq SHORT G_M3330_IG24
- ;; size=6 bbWeight=0.44 PerfScore 0.88
-G_M3330_IG10: ; bbWeight=0.44, gcrefRegs=0330 {r4 r5 r8 r9}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M3330_IG29
- ;; size=2 bbWeight=0.44 PerfScore 0.44
-G_M3330_IG11: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r8-r9]
- ldr r10, [r5+0x0C]
- ; gcrRegs +[r10]
- ldr r3, [r4+0x0C]
- ; gcrRegs +[r3]
- cmp r10, r3
- beq SHORT G_M3330_IG14
- ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M3330_IG12: ; bbWeight=0.44, gcrefRegs=0438 {r3 r4 r5 r10}, byrefRegs=0000 {}, byref, isz
- cmp r10, 0
- beq SHORT G_M3330_IG24
- ;; size=6 bbWeight=0.44 PerfScore 0.88
-G_M3330_IG13: ; bbWeight=0.44, gcrefRegs=0438 {r3 r4 r5 r10}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M3330_IG21
+ ;; size=24 bbWeight=0.50 PerfScore 4.50
+G_M3330_IG07: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ldr r2, [r5+0x08]
+ ; gcrRegs +[r2]
+ ldr r1, [r4+0x08]
+ ; gcrRegs +[r1]
+ cmp r2, r1
+ beq SHORT G_M3330_IG09
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M3330_IG08: ; bbWeight=0.44, gcrefRegs=0036 {r1 r2 r4 r5}, byrefRegs=0000 {}, byref, isz
+ cmp r2, 0
+ beq SHORT G_M3330_IG21
b SHORT G_M3330_IG26
- ;; size=2 bbWeight=0.44 PerfScore 0.44
-G_M3330_IG14: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r3 r10]
+ ;; size=6 bbWeight=0.44 PerfScore 1.31
+G_M3330_IG09: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r1-r2]
+ ldr r2, [r5+0x0C]
+ ; gcrRegs +[r2]
+ ldr r1, [r4+0x0C]
+ ; gcrRegs +[r1]
+ cmp r2, r1
+ beq SHORT G_M3330_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M3330_IG10: ; bbWeight=0.44, gcrefRegs=0036 {r1 r2 r4 r5}, byrefRegs=0000 {}, byref, isz
+ cmp r2, 0
+ beq SHORT G_M3330_IG21
+ b SHORT G_M3330_IG23
+ ;; size=6 bbWeight=0.44 PerfScore 1.31
+G_M3330_IG11: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r1-r2]
ldr r2, [r5+0x10]
; gcrRegs +[r2]
ldr r1, [r4+0x10]
; gcrRegs +[r1]
cmp r2, r1
- bne SHORT G_M3330_IG16
+ bne SHORT G_M3330_IG13
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M3330_IG15: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3330_IG12: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1-r2 r4-r5]
movs r0, 1
- b SHORT G_M3330_IG21
+ b SHORT G_M3330_IG18
;; size=4 bbWeight=0.06 PerfScore 0.13
-G_M3330_IG16: ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M3330_IG13: ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1-r2]
cmp r2, 0
- beq SHORT G_M3330_IG19
+ beq SHORT G_M3330_IG16
;; size=4 bbWeight=0.44 PerfScore 0.88
-G_M3330_IG17: ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M3330_IG14: ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
cmp r1, 0
- beq SHORT G_M3330_IG19
+ beq SHORT G_M3330_IG16
;; size=4 bbWeight=0.44 PerfScore 0.88
-G_M3330_IG18: ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M3330_IG15: ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
ldr r0, [r2+0x04]
ldr r3, [r1+0x04]
cmp r0, r3
- beq SHORT G_M3330_IG20
+ beq SHORT G_M3330_IG17
;; size=8 bbWeight=0.44 PerfScore 1.75
-G_M3330_IG19: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3330_IG16: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1-r2]
movs r0, 0
- b SHORT G_M3330_IG21
+ b SHORT G_M3330_IG18
;; size=4 bbWeight=0.13 PerfScore 0.26
-G_M3330_IG20: ; bbWeight=0.31, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref
+G_M3330_IG17: ; bbWeight=0.31, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref
; gcrRegs +[r1-r2]
add r0, r2, 8
; byrRegs +[r0]
@@ -187,84 +182,91 @@ G_M3330_IG20: ; bbWeight=0.31, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {},
blx r3 // <unknown method>
; byrRegs -[r0-r1]
;; size=22 bbWeight=0.31 PerfScore 2.45
-G_M3330_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
+G_M3330_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r4,r5,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3330_IG22: ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4-r7]
- cmp r7, 0
- beq SHORT G_M3330_IG24
+G_M3330_IG19: ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=0036 {r1 r2 r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r1-r2 r4-r5]
+ cmp r1, 0
...
@@ -10,54 +10,35 @@
;
; V00 arg0 [V00,T00] ( 5, 3.97) ref -> r4 class-hnd single-def <System.String>
; V01 OutArgs [V01 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 3 ) ref -> r5 class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[System.String]>
+; V02 tmp1 [V02,T02] ( 3, 3 ) ref -> r4 class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[System.String]>
;* V03 tmp2 [V03,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp3 [V04,T01] ( 4, 3.99) ref -> r5 class-hnd single-def "Inlining Arg" <ushort[]>
+; V04 tmp3 [V04,T01] ( 4, 3.99) ref -> r1 class-hnd single-def "Inlining Arg" <ushort[]>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V07 tmp6 [V07 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V08 tmp7 [V08 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP
-; V09 tmp8 [V09,T03] ( 3, 1 ) byref -> r1 "field V06._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp9 [V10,T04] ( 3, 1 ) int -> r2 "field V06._length (fldOffset=0x4)" P-INDEP
+; V09 tmp8 [V09,T03] ( 3, 1 ) byref -> registers "field V06._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp9 [V10,T04] ( 3, 1 ) int -> registers "field V06._length (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M40468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
+ push {r4,r11,lr}
+ sub sp, 12
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M40468_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
- beq SHORT G_M40468_IG07
+ beq SHORT G_M40468_IG04
;; size=4 bbWeight=1 PerfScore 2.00
G_M40468_IG03: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x04]
cmp r0, 0
- beq SHORT G_M40468_IG07
+ bne SHORT G_M40468_IG06
;; size=6 bbWeight=0.47 PerfScore 1.41
-G_M40468_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M40468_IG13
- ;; size=18 bbWeight=0.50 PerfScore 3.00
-G_M40468_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r5, [r0]
- ; gcrRegs +[r5]
- cmp r5, 0
- bne SHORT G_M40468_IG10
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M40468_IG06: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5]
- b SHORT G_M40468_IG09
- ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M40468_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40468_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -65,8 +46,8 @@ G_M40468_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWSFAST
; gcrRegs +[r0]
- mov r5, r0
- ; gcrRegs +[r5]
+ mov r4, r0
+ ; gcrRegs +[r4]
movw r0, 0xd1ff
; gcrRegs -[r0]
movt r0, 0xd1ff
@@ -81,35 +62,62 @@ G_M40468_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
adds r1, r1, 4
; gcrRegs -[r1]
; byrRegs +[r1]
- adds r0, r5, 4
+ adds r0, r4, 4
; byrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_BYREF
- mov r0, r5
+ mov r0, r4
; gcrRegs +[r0]
; byrRegs -[r0]
;; size=66 bbWeight=0.50 PerfScore 10.50
-G_M40468_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M40468_IG09: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0 r5] +[r4]
+G_M40468_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M40468_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0]
; byrRegs -[r1]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ ldr r1, [r1]
+ and r1, r1, 1
+ cmp r1, 1
+ bne SHORT G_M40468_IG12
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
+G_M40468_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ ldr r1, [r1]
+ ; gcrRegs +[r1]
+ cmp r1, 0
+ bne SHORT G_M40468_IG09
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M40468_IG08: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r1]
movs r1, 0
movs r2, 0
- b SHORT G_M40468_IG11
- ;; size=6 bbWeight=0.00 PerfScore 0.00
-G_M40468_IG10: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r5]
- add r1, r5, 8
+ mov r0, r2
+ mov r2, r1
+ ; byrRegs +[r2]
+ b SHORT G_M40468_IG10
+ ;; size=10 bbWeight=0.00 PerfScore 0.01
+G_M40468_IG09: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r1]
+ ; byrRegs -[r2]
+ add r2, r1, 8
+ ; byrRegs +[r2]
+ ldr r1, [r1+0x04]
+ ; gcrRegs -[r1]
+ mov r0, r1
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M40468_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0004 {r2}, byref
+ movs r1, 1
+ str r1, [sp]
+ mov r1, r2
; byrRegs +[r1]
- ldr r2, [r5+0x04]
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M40468_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref
- ; gcrRegs -[r5]
- movs r0, 1
- str r0, [sp]
+ mov r2, r0
+ ; byrRegs -[r2]
mov r0, r4
; gcrRegs +[r0]
mvn r3, 0x80000000
@@ -119,11 +127,12 @@ G_M40468_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1},
blx lr // <unknown method>
; gcrRegs -[r4]
; byrRegs -[r1]
- ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M40468_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M40468_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=0.50 PerfScore 5.00
+G_M40468_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M40468_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -131,10 +140,10 @@ G_M40468_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b SHORT G_M40468_IG05
+ b SHORT G_M40468_IG07
;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 186, prolog size 8, PerfScore 28.41, instruction count 63, allocated bytes for code 186 (MethodHash=807561eb) for method Microsoft.Build.Graph.ProjectInterpretation:SplitPropertyNames(System.String):System.Collections.Generic.IReadOnlyCollection`1[System.String] (FullOpts)
+; Total bytes of code 200, prolog size 10, PerfScore 31.91, instruction count 70, allocated bytes for code 200 (MethodHash=807561eb) for method Microsoft.Build.Graph.ProjectInterpretation:SplitPropertyNames(System.String):System.Collections.Generic.IReadOnlyCollection`1[System.String] (FullOpts)
; ============================================================
Unwind Info:
@@ -146,7 +155,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 93 (0x0005d) Actual length = 186 (0x0000ba)
+ Function Length : 100 (0x00064) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -158,7 +167,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
@@ -13,7 +13,7 @@
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V05 loc3 [V05,T02] ( 4, 2.50) ref -> r0 class-hnd <System.String>
+; V05 loc3 [V05,T02] ( 4, 2.50) ref -> registers class-hnd <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V08 tmp2 [V08,T03] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
@@ -29,44 +29,44 @@ G_M24419_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M24419_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0-r1]
cmp r0, 0
- beq SHORT G_M24419_IG06
+ beq SHORT G_M24419_IG05
;; size=4 bbWeight=1 PerfScore 2.00
G_M24419_IG03: ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
ldr r2, [r0+0x04]
cmp r2, 1
- bne SHORT G_M24419_IG06
+ bne SHORT G_M24419_IG05
;; size=6 bbWeight=0.25 PerfScore 0.75
G_M24419_IG04: ; bbWeight=0.12, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
ldrh r2, [r0+0x08]
cmp r2, 95
- bne SHORT G_M24419_IG06
+ beq SHORT G_M24419_IG08
;; size=6 bbWeight=0.12 PerfScore 0.38
-G_M24419_IG05: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- mov r0, r1
- ; gcrRegs +[r0]
- b SHORT G_M24419_IG11
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M24419_IG06: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG05: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
cmp r1, 0
beq SHORT G_M24419_IG10
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M24419_IG07: ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG06: ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
ldr r2, [r1+0x04]
cmp r2, 1
bne SHORT G_M24419_IG10
;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M24419_IG08: ; bbWeight=0.12, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG07: ; bbWeight=0.12, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
ldrh r2, [r1+0x08]
cmp r2, 95
- bne SHORT G_M24419_IG10
- ;; size=6 bbWeight=0.12 PerfScore 0.38
-G_M24419_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r1]
+ beq SHORT G_M24419_IG09
+ b SHORT G_M24419_IG10
+ ;; size=8 bbWeight=0.12 PerfScore 0.50
+G_M24419_IG08: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
b SHORT G_M24419_IG11
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref
+G_M24419_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r1] +[r0]
+ mov r1, r0
; gcrRegs +[r1]
+ b SHORT G_M24419_IG11
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref
mov r2, r1
; gcrRegs +[r2]
movw r1, 0xd1ff
@@ -77,12 +77,19 @@ G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r2]
- ;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M24419_IG11: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ mov r1, r0
+ ; gcrRegs +[r1]
+ ;; size=24 bbWeight=0.50 PerfScore 4.00
+G_M24419_IG11: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ mov r0, r1
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M24419_IG12: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 70, prolog size 6, PerfScore 13.25, instruction count 29, allocated bytes for code 70 (MethodHash=b70da09c) for method Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 76, prolog size 6, PerfScore 14.88, instruction count 32, allocated bytes for code 76 (MethodHash=b70da09c) for method Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -94,7 +101,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 70 (0x000046)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -9,13 +9,13 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 12, 11 ) struct (52) [sp+0xC0] do-not-enreg[SF] ld-addr-op single-def <System.Security.Cryptography.ECCurve>
-; V01 loc0 [V01,T06] ( 4, 3 ) ref -> r2 class-hnd <<unknown class>>
-; V02 loc1 [V02,T03] ( 6, 4 ) ref -> [sp+0x74] class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
+; V01 loc0 [V01,T06] ( 4, 3 ) ref -> r7 class-hnd <<unknown class>>
+; V02 loc1 [V02,T03] ( 6, 4 ) ref -> [sp+0x78] class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
; V03 loc2 [V03,T24] ( 2, 0 ) ref -> r5 class-hnd single-def <<unknown class>>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (76) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T22] ( 3, 0 ) ref -> r4 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V06 tmp2 [V06,T25] ( 2, 0 ) ref -> r5 class-hnd exact single-def "impImportAndPushBox" <<unknown class>>
-; V07 tmp3 [V07,T23] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T22] ( 3, 0 ) ref -> r5 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V06 tmp2 [V06,T25] ( 2, 0 ) ref -> r6 class-hnd exact single-def "impImportAndPushBox" <<unknown class>>
+; V07 tmp3 [V07,T23] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref
@@ -24,7 +24,7 @@
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp12 [V16,T14] ( 2, 2 ) int -> r0
+; V16 tmp12 [V16,T14] ( 2, 2 ) int -> r8
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref single-def
; V18 tmp14 [V18,T15] ( 2, 2 ) int -> [sp+0x94] spill-single-def
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -64,15 +64,15 @@
;* V53 tmp49 [V53,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V54 tmp50 [V54,T04] ( 2, 4 ) ref -> r0 single-def "Single return block return value"
; V55 FramesRoot [V55,T01] ( 5, 5 ) int -> r5 "Pinvoke FrameListRoot"
-; V56 PInvokeFrame [V56 ] ( 6, 6 ) struct (36) [sp+0x50] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V57 tmp53 [V57,T07] ( 3, 3 ) ref -> r4 single-def "V00.[000..004)"
-; V58 tmp54 [V58,T08] ( 3, 3 ) ref -> r6 single-def "V00.[004..008)"
-; V59 tmp55 [V59,T09] ( 3, 3 ) ref -> r7 single-def "V00.[008..012)"
-; V60 tmp56 [V60,T10] ( 3, 3 ) ref -> r8 single-def "V00.[012..016)"
-; V61 tmp57 [V61,T05] ( 4, 3.50) ref -> r9 single-def "V00.[016..020)"
-; V62 tmp58 [V62,T02] ( 7, 4.50) int -> [sp+0x78] spill-single-def "V00.[032..036)"
+; V56 PInvokeFrame [V56 ] ( 6, 6 ) struct (36) [sp+0x54] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V57 tmp53 [V57,T07] ( 3, 3 ) ref -> r0 single-def "V00.[000..004)"
+; V58 tmp54 [V58,T08] ( 3, 3 ) ref -> r1 single-def "V00.[004..008)"
+; V59 tmp55 [V59,T09] ( 3, 3 ) ref -> r2 single-def "V00.[008..012)"
+; V60 tmp56 [V60,T10] ( 3, 3 ) ref -> r3 single-def "V00.[012..016)"
+; V61 tmp57 [V61,T05] ( 4, 3.50) ref -> lr single-def "V00.[016..020)"
+; V62 tmp58 [V62,T02] ( 7, 4.50) int -> r4 "V00.[032..036)"
; V63 tmp59 [V63,T11] ( 3, 3 ) ref -> r12 single-def "V00.[036..040)"
-; V64 tmp60 [V64,T12] ( 3, 3 ) ref -> r3 single-def "V00.[040..044)"
+; V64 tmp60 [V64,T12] ( 3, 3 ) ref -> r6 single-def "V00.[040..044)"
; V65 tmp61 [V65,T26] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V66 tmp62 [V66,T27] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
;
@@ -85,120 +85,121 @@ G_M7764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add r11, sp, 184
;; size=12 bbWeight=1 PerfScore 4.00
G_M7764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add r4, sp, 84
+ add r4, sp, 88
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_INIT_PINVOKE_FRAME
- ldr r4, [sp+0xC0]
- ; gcrRegs +[r4]
- ldr r6, [sp+0xC4]
- ; gcrRegs +[r6]
- ldr r7, [sp+0xC8]
- ; gcrRegs +[r7]
- ldr r8, [sp+0xCC]
- ; gcrRegs +[r8]
- ldr r9, [sp+0xD0]
- ; gcrRegs +[r9]
- ldr lr, [sp+0xE0]
- str lr, [sp+0x78]
+ ldr r0, [sp+0xC0]
+ ; gcrRegs +[r0]
+ ldr r1, [sp+0xC4]
+ ; gcrRegs +[r1]
+ ldr r2, [sp+0xC8]
+ ; gcrRegs +[r2]
+ ldr r3, [sp+0xCC]
+ ; gcrRegs +[r3]
+ ldr lr, [sp+0xD0]
+ ; gcrRegs +[lr]
+ ldr r4, [sp+0xE0]
ldr r12, [sp+0xE4]
; gcrRegs +[r12]
- ldr r3, [sp+0xE8]
- ; gcrRegs +[r3]
- cmp lr, 1
+ ldr r6, [sp+0xE8]
+ ; gcrRegs +[r6]
+ cmp r4, 1
beq SHORT G_M7764_IG04
- ;; size=46 bbWeight=1 PerfScore 15.00
-G_M7764_IG03: ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- cmp lr, 3
+ ;; size=36 bbWeight=1 PerfScore 14.00
+G_M7764_IG03: ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+ cmp r4, 3
beq SHORT G_M7764_IG04
- cmp lr, 2
- beq SHORT G_M7764_IG04
- cmp lr, 4
- bne SHORT G_M7764_IG18
- b SHORT G_M7764_IG05
- ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M7764_IG04: ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- ldr r2, [sp+0xD8]
- ; gcrRegs +[r2]
+ cmp r4, 2
+ bne SHORT G_M7764_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M7764_IG04: ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ldr r7, [sp+0xD8]
+ ; gcrRegs +[r7]
b SHORT G_M7764_IG06
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG05: ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r2]
- ldr r2, [sp+0xD4]
- ; gcrRegs +[r2]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M7764_IG06: ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r2+0x04]
- ldr r1, [r4+0x04]
- str r1, [sp+0x94] // [V18 tmp14]
- ldr r1, [r6+0x04]
- str r1, [sp+0x90] // [V20 tmp16]
- ldr r1, [r12+0x04]
- str r1, [sp+0x8C] // [V22 tmp18]
- ldr r1, [r3+0x04]
- str r1, [sp+0x88] // [V24 tmp20]
- ldr r1, [r7+0x04]
- str r1, [sp+0x84] // [V26 tmp22]
- ldr r1, [r8+0x04]
- str r1, [sp+0x80] // [V28 tmp24]
- cmp r9, 0
- beq SHORT G_M7764_IG08
- ;; size=36 bbWeight=1 PerfScore 15.00
-G_M7764_IG07: ; bbWeight=0.50, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r9+0x04]
- str r1, [sp+0x7C] // [V52 tmp48]
- b SHORT G_M7764_IG09
+G_M7764_IG05: ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r7]
+ cmp r4, 4
+ bne G_M7764_IG18
+ ldr r7, [sp+0xD4]
+ ; gcrRegs +[r7]
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M7764_IG08: ; bbWeight=0.50, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
- movs r1, 0
- str r1, [sp+0x7C] // [V52 tmp48]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG09: ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
- movs r1, 0
- str r1, [sp] // [V04 OutArgs]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M7764_IG10: ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
- str r1, [sp+0x04] // [V04 OutArgs+0x04]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M7764_IG11: ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- str r1, [sp+0x08] // [V04 OutArgs+0x08]
- str r2, [sp+0x0C] // [V04 OutArgs+0x0c]
- str r0, [sp+0x10] // [V04 OutArgs+0x10]
- str r4, [sp+0x14] // [V04 OutArgs+0x14]
- ldr r1, [sp+0x94] // [V18 tmp14]
- str r1, [sp+0x18] // [V04 OutArgs+0x18]
- str r6, [sp+0x1C] // [V04 OutArgs+0x1c]
- ldr r1, [sp+0x90] // [V20 tmp16]
- str r1, [sp+0x20] // [V04 OutArgs+0x20]
+G_M7764_IG06: ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [r7+0x04]
+ ldr r9, [r0+0x04]
+ str r9, [sp+0x94] // [V18 tmp14]
+ ldr r9, [r1+0x04]
+ str r9, [sp+0x90] // [V20 tmp16]
+ ldr r9, [r12+0x04]
+ str r9, [sp+0x8C] // [V22 tmp18]
+ ldr r9, [r6+0x04]
+ str r9, [sp+0x88] // [V24 tmp20]
+ ldr r9, [r2+0x04]
+ str r9, [sp+0x84] // [V26 tmp22]
+ ldr r9, [r3+0x04]
+ str r9, [sp+0x80] // [V28 tmp24]
+ cmp lr, 0
+ beq SHORT G_M7764_IG08
+ ;; size=58 bbWeight=1 PerfScore 15.00
+G_M7764_IG07: ; bbWeight=0.50, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ldr r9, [lr+0x04]
+ str r9, [sp+0x7C] // [V52 tmp48]
+ b SHORT G_M7764_IG09
+ ;; size=10 bbWeight=0.50 PerfScore 1.50
+G_M7764_IG08: ; bbWeight=0.50, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+ mov r9, 0
+ str r9, [sp+0x7C] // [V52 tmp48]
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M7764_IG09: ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+ mov r9, 0
+ str r9, [sp] // [V04 OutArgs]
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M7764_IG10: ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+ str r9, [sp+0x04] // [V04 OutArgs+0x04]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M7764_IG11: ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+ str r9, [sp+0x08] // [V04 OutArgs+0x08]
+ str r7, [sp+0x0C] // [V04 OutArgs+0x0c]
+ str r8, [sp+0x10] // [V04 OutArgs+0x10]
+ str r0, [sp+0x14] // [V04 OutArgs+0x14]
+ ldr r9, [sp+0x94] // [V18 tmp14]
+ str r9, [sp+0x18] // [V04 OutArgs+0x18]
+ str r1, [sp+0x1C] // [V04 OutArgs+0x1c]
+ ldr r9, [sp+0x90] // [V20 tmp16]
+ str r9, [sp+0x20] // [V04 OutArgs+0x20]
str r12, [sp+0x24] // [V04 OutArgs+0x24]
- ldr r1, [sp+0x8C] // [V22 tmp18]
- str r1, [sp+0x28] // [V04 OutArgs+0x28]
- str r3, [sp+0x2C] // [V04 OutArgs+0x2c]
- ldr r1, [sp+0x88] // [V24 tmp20]
- str r1, [sp+0x30] // [V04 OutArgs+0x30]
- str r7, [sp+0x34] // [V04 OutArgs+0x34]
- ldr r1, [sp+0x84] // [V26 tmp22]
- str r1, [sp+0x38] // [V04 OutArgs+0x38]
- str r8, [sp+0x3C] // [V04 OutArgs+0x3c]
- ldr r1, [sp+0x80] // [V28 tmp24]
- str r1, [sp+0x40] // [V04 OutArgs+0x40]
- str r9, [sp+0x44] // [V04 OutArgs+0x44]
- ldr r1, [sp+0x7C] // [V52 tmp48]
- str r1, [sp+0x48] // [V04 OutArgs+0x48]
- mov r0, lr
+ ldr r9, [sp+0x8C] // [V22 tmp18]
+ str r9, [sp+0x28] // [V04 OutArgs+0x28]
+ str r6, [sp+0x2C] // [V04 OutArgs+0x2c]
+ ldr r9, [sp+0x88] // [V24 tmp20]
+ str r9, [sp+0x30] // [V04 OutArgs+0x30]
+ str r2, [sp+0x34] // [V04 OutArgs+0x34]
+ ldr r9, [sp+0x84] // [V26 tmp22]
+ str r9, [sp+0x38] // [V04 OutArgs+0x38]
+ str r3, [sp+0x3C] // [V04 OutArgs+0x3c]
+ ldr r9, [sp+0x80] // [V28 tmp24]
+ str r9, [sp+0x40] // [V04 OutArgs+0x40]
+ str lr, [sp+0x44] // [V04 OutArgs+0x44]
+ ldr r9, [sp+0x7C] // [V52 tmp48]
+ str r9, [sp+0x48] // [V04 OutArgs+0x48]
+ mov r0, r4
+ ; gcrRegs -[r0]
movs r1, 0
+ ; gcrRegs -[r1]
movs r2, 0
; gcrRegs -[r2]
...
@@ -11,12 +11,12 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> r4 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 5, 4 ) ref -> r6 class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent>
-; V03 arg3 [V03,T01] ( 7, 4.25) ref -> r5 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T01] ( 6, 4 ) ref -> r5 class-hnd single-def <System.Object>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T11] ( 0, 0 ) int -> zero-ref
+;* V05 tmp1 [V05,T10] ( 0, 0 ) int -> zero-ref
; V06 tmp2 [V06,T04] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp3 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4 [V08,T12] ( 0, 0 ) int -> zero-ref
+;* V07 tmp3 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4 [V08,T11] ( 0, 0 ) int -> zero-ref
;* V09 tmp5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
; V10 tmp6 [V10,T03] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -25,15 +25,14 @@
;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Nullable`1[int]>
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V17 tmp13 [V17,T09] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
+; V17 tmp13 [V17,T08] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
; V18 tmp14 [V18,T05] ( 3, 1.50) ref -> lr class-hnd "Inline return value spill temp" <<unknown class>>
;* V19 tmp15 [V19 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V09.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp16 [V20,T10] ( 2, 1 ) int -> r0 single-def "field V09.value (fldOffset=0x4)" P-INDEP
+; V20 tmp16 [V20,T09] ( 2, 1 ) int -> r0 single-def "field V09.value (fldOffset=0x4)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V13.hasValue (fldOffset=0x0)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref single-def "field V13.value (fldOffset=0x4)" P-INDEP
;* V23 tmp19 [V23 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.hasValue (fldOffset=0x0)" P-INDEP
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref single-def "field V14.value (fldOffset=0x4)" P-INDEP
-; V25 cse0 [V25,T07] ( 3, 1.50) int -> r1 "CSE - moderate"
;
; Lcl frame size = 4
@@ -49,49 +48,33 @@ G_M10879_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=14 bbWeight=1 PerfScore 5.00
G_M10879_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
- beq SHORT G_M10879_IG09
+ beq SHORT G_M10879_IG07
;; size=4 bbWeight=1 PerfScore 2.00
G_M10879_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r6]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M10879_IG09
- cmp r5, 0
- beq SHORT G_M10879_IG09
- ldr r1, [r5]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M10879_IG09
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- beq SHORT G_M10879_IG05
- ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M10879_IG04: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4 r6]
- mov r1, r5
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
+ ldr r0, [r6]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M10879_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ cmp r0, r3
+ bne SHORT G_M10879_IG07
+ cmp r5, 0
+ beq SHORT G_M10879_IG07
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M10879_IG07
ldr r0, [r5+0x04]
cmp r0, 1
- bne SHORT G_M10879_IG06
+ bne SHORT G_M10879_IG04
movs r4, 0
- b SHORT G_M10879_IG07
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M10879_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]
+ ; gcrRegs -[r4]
+ b SHORT G_M10879_IG05
+ ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M10879_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5-r6]
movs r4, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10879_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -100,29 +83,29 @@ G_M10879_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[r0]
str r4, [r0+0x04]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M10879_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10879_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4-r6]
ldrb r0, [r4+0x08]
movs r1, 0
strb r1, [r4+0x08]
cmp r0, 0
- beq SHORT G_M10879_IG11
+ beq SHORT G_M10879_IG09
movs r0, 0
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M10879_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10879_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r0, [r4]
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M10879_IG13
+ beq SHORT G_M10879_IG11
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M10879_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M10879_IG10: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
mov r0, r1
mov r1, r4
; gcrRegs +[r1]
@@ -131,7 +114,7 @@ G_M10879_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[r1] +[r0]
;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M10879_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M10879_IG11: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -150,11 +133,11 @@ G_M10879_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
blx lr // <unknown method>
; gcrRegs -[r1-r6]
;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M10879_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 194, prolog size 8, PerfScore 35.25, instruction count 69, allocated bytes for code 194 (MethodHash=cf9bd580) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 162, prolog size 8, PerfScore 31.75, instruction count 59, allocated bytes for code 162 (MethodHash=cf9bd580) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -166,7 +149,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 194 (0x0000c2)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -11,18 +11,17 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> r4 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 5, 4 ) ref -> r6 class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent>
-; V03 arg3 [V03,T01] ( 7, 4.25) ref -> r5 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T01] ( 6, 4 ) ref -> r5 class-hnd single-def <System.Object>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T11] ( 0, 0 ) int -> zero-ref
+;* V05 tmp1 [V05,T10] ( 0, 0 ) int -> zero-ref
; V06 tmp2 [V06,T04] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp3 [V07,T09] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4 [V08,T12] ( 0, 0 ) int -> zero-ref
+;* V07 tmp3 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4 [V08,T11] ( 0, 0 ) int -> zero-ref
; V09 tmp5 [V09,T03] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
; V10 tmp6 [V10,T07] ( 3, 1.50) int -> r4 "Inline return value spill temp"
; V11 tmp7 [V11,T05] ( 2, 2 ) int -> r0 "Inlining Arg"
-; V12 tmp8 [V12,T10] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
+; V12 tmp8 [V12,T09] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
; V13 tmp9 [V13,T06] ( 3, 1.50) ref -> lr class-hnd "Inline return value spill temp" <<unknown class>>
-; V14 cse0 [V14,T08] ( 3, 1.50) int -> r1 "CSE - moderate"
;
; Lcl frame size = 4
@@ -38,50 +37,33 @@ G_M35982_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=14 bbWeight=1 PerfScore 5.00
G_M35982_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
- beq SHORT G_M35982_IG09
+ beq SHORT G_M35982_IG07
;; size=4 bbWeight=1 PerfScore 2.00
G_M35982_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r6]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M35982_IG09
- cmp r5, 0
- beq SHORT G_M35982_IG09
- ldr r1, [r5]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M35982_IG09
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- beq SHORT G_M35982_IG05
- ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M35982_IG04: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4 r6]
- mov r1, r5
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
+ ldr r0, [r6]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ; gcr arg pop 0
- ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M35982_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ cmp r0, r3
+ bne SHORT G_M35982_IG07
+ cmp r5, 0
+ beq SHORT G_M35982_IG07
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M35982_IG07
ldr r0, [r5+0x04]
cmp r0, 2
- bne SHORT G_M35982_IG06
+ bne SHORT G_M35982_IG04
movs r4, 0
- b SHORT G_M35982_IG07
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M35982_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]
+ ; gcrRegs -[r4]
+ b SHORT G_M35982_IG05
+ ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M35982_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5-r6]
movs r4, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35982_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -91,29 +73,29 @@ G_M35982_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcr arg pop 0
str r4, [r0+0x04]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M35982_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35982_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4-r6]
ldrb r0, [r4+0x08]
movs r1, 0
strb r1, [r4+0x08]
cmp r0, 0
- beq SHORT G_M35982_IG11
+ beq SHORT G_M35982_IG09
movs r0, 0
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M35982_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35982_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r0, [r4]
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M35982_IG13
+ beq SHORT G_M35982_IG11
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M35982_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M35982_IG10: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
mov r0, r1
mov r1, r4
; gcrRegs +[r1]
@@ -123,7 +105,7 @@ G_M35982_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M35982_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M35982_IG11: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -139,14 +121,14 @@ G_M35982_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs +[r0]
ldr r12, [lr+0x0C]
;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M35982_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG12: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r12 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 196, prolog size 14, PerfScore 35.75, instruction count 70, allocated bytes for code 196 (MethodHash=28fa7371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 164, prolog size 14, PerfScore 32.25, instruction count 60, allocated bytes for code 164 (MethodHash=28fa7371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -158,7 +140,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 98 (0x00062) Actual length = 196 (0x0000c4)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -11,18 +11,17 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> r4 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 5, 4 ) ref -> r6 class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent>
-; V03 arg3 [V03,T01] ( 7, 4.25) ref -> r5 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T01] ( 6, 4 ) ref -> r5 class-hnd single-def <System.Object>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T11] ( 0, 0 ) int -> zero-ref
+;* V05 tmp1 [V05,T10] ( 0, 0 ) int -> zero-ref
; V06 tmp2 [V06,T04] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp3 [V07,T09] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4 [V08,T12] ( 0, 0 ) int -> zero-ref
+;* V07 tmp3 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4 [V08,T11] ( 0, 0 ) int -> zero-ref
; V09 tmp5 [V09,T03] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
; V10 tmp6 [V10,T07] ( 3, 1.50) int -> r4 "Inline return value spill temp"
; V11 tmp7 [V11,T05] ( 2, 2 ) int -> r0 "Inlining Arg"
-; V12 tmp8 [V12,T10] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
+; V12 tmp8 [V12,T09] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
; V13 tmp9 [V13,T06] ( 3, 1.50) ref -> lr class-hnd "Inline return value spill temp" <<unknown class>>
-; V14 cse0 [V14,T08] ( 3, 1.50) int -> r1 "CSE - moderate"
;
; Lcl frame size = 4
@@ -38,50 +37,33 @@ G_M51272_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=14 bbWeight=1 PerfScore 5.00
G_M51272_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
- beq SHORT G_M51272_IG09
+ beq SHORT G_M51272_IG07
;; size=4 bbWeight=1 PerfScore 2.00
G_M51272_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r6]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M51272_IG09
- cmp r5, 0
- beq SHORT G_M51272_IG09
- ldr r1, [r5]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M51272_IG09
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- beq SHORT G_M51272_IG05
- ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M51272_IG04: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4 r6]
- mov r1, r5
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
+ ldr r0, [r6]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ; gcr arg pop 0
- ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M51272_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ cmp r0, r3
+ bne SHORT G_M51272_IG07
+ cmp r5, 0
+ beq SHORT G_M51272_IG07
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M51272_IG07
ldr r0, [r5+0x04]
cmp r0, 1
- bne SHORT G_M51272_IG06
+ bne SHORT G_M51272_IG04
movs r4, 0
- b SHORT G_M51272_IG07
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M51272_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]
+ ; gcrRegs -[r4]
+ b SHORT G_M51272_IG05
+ ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M51272_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5-r6]
movs r4, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51272_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -91,29 +73,29 @@ G_M51272_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcr arg pop 0
str r4, [r0+0x04]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M51272_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51272_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4-r6]
ldrb r0, [r4+0x08]
movs r1, 0
strb r1, [r4+0x08]
cmp r0, 0
- beq SHORT G_M51272_IG11
+ beq SHORT G_M51272_IG09
movs r0, 0
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M51272_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51272_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r0, [r4]
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M51272_IG13
+ beq SHORT G_M51272_IG11
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M51272_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M51272_IG10: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
mov r0, r1
mov r1, r4
; gcrRegs +[r1]
@@ -123,7 +105,7 @@ G_M51272_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M51272_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M51272_IG11: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -139,14 +121,14 @@ G_M51272_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs +[r0]
ldr r12, [lr+0x0C]
;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M51272_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG12: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r12 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 196, prolog size 14, PerfScore 35.75, instruction count 70, allocated bytes for code 196 (MethodHash=814537b7) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 164, prolog size 14, PerfScore 32.25, instruction count 60, allocated bytes for code 164 (MethodHash=814537b7) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -158,7 +140,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 98 (0x00062) Actual length = 196 (0x0000c4)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,10 +9,10 @@
; 4 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 5 ) byref -> r4 this single-def
+; V00 this [V00,T01] ( 9, 5 ) byref -> r4 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 6 ) int -> r0 "Span.get_Item index"
-; V03 tmp2 [V03,T02] ( 3, 6 ) byref -> r3 "Span.get_Item ptrToSpan"
+; V02 tmp1 [V02,T03] ( 3, 6 ) int -> r5 "Span.get_Item index"
+; V03 tmp2 [V03,T02] ( 3, 6 ) byref -> r0 "Span.get_Item ptrToSpan"
; V04 tmp3 [V04,T06] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
; V05 tmp4 [V05,T00] ( 4, 8 ) ushort -> r0 "Inlining Arg"
;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -34,59 +34,65 @@
;* V22 tmp21 [V22 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP
; V23 tmp22 [V23,T05] ( 2, 2 ) byref -> r3 "field V12._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
-; V25 cse0 [V25,T04] ( 3, 3 ) int -> r0 "CSE - aggressive"
+; V25 cse0 [V25,T04] ( 5, 3 ) int -> r5 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M7781_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
+ push {r4,r5,r11,lr}
add r11, sp, 8
mov r4, r0
; byrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M7781_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- ldr r0, [r4+0x10]
- ldr r3, [r4+0x24]
- cmp r0, r3
- bge SHORT G_M7781_IG05
- add r3, r4, 32
- ; byrRegs +[r3]
- ldr r2, [r3+0x04]
- cmp r0, r2
- bhs SHORT G_M7781_IG06
- ldr r3, [r3]
- lsls r0, r0, 1
- ldrh r0, [r3+r0]
+ ldr r5, [r4+0x10]
+ ldr r0, [r4+0x24]
+ cmp r5, r0
+ bge SHORT G_M7781_IG06
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M7781_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ add r0, r4, 32
+ ; byrRegs +[r0]
+ ldr r3, [r0+0x04]
+ cmp r5, r3
+ bhs SHORT G_M7781_IG07
+ ldr r0, [r0]
+ lsls r3, r5, 1
+ ldrh r0, [r0+r3]
+ ; byrRegs -[r0]
cmp r0, 256
blo SHORT G_M7781_IG04
movw r3, 0xd1ff
- ; byrRegs -[r3]
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M7781_IG05
- ;; size=46 bbWeight=1 PerfScore 19.00
-G_M7781_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- ldr r3, [r4+0x10]
- adds r3, r3, 1
- str r3, [r4+0x10]
- b SHORT G_M7781_IG02
- ;; size=8 bbWeight=0 PerfScore 0.00
+ bne SHORT G_M7781_IG05
+ b SHORT G_M7781_IG06
+ ;; size=40 bbWeight=1 PerfScore 16.00
G_M7781_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldrb r0, [r3+r0]
ands r0, r0, 128
cmp r0, 0
- bne SHORT G_M7781_IG03
+ beq SHORT G_M7781_IG06
;; size=18 bbWeight=1 PerfScore 6.00
-G_M7781_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M7781_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ ldr r3, [r4+0x10]
+ adds r3, r3, 1
+ str r3, [r4+0x10]
+ ldr r5, [r4+0x10]
+ ldr r3, [r4+0x24]
+ cmp r5, r3
+ blt SHORT G_M7781_IG03
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M7781_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r4]
- pop {r3,r4,r11,pc}
+ pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M7781_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M7781_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
@@ -94,7 +100,7 @@ G_M7781_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 98, prolog size 10, PerfScore 29.00, instruction count 37, allocated bytes for code 98 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 106, prolog size 10, PerfScore 30.00, instruction count 41, allocated bytes for code 106 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
; ============================================================
Unwind Info:
@@ -106,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 49 (0x00031) Actual length = 98 (0x000062)
+ Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -114,7 +120,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end
FF end
@@ -11,11 +11,11 @@
; V00 this [V00,T02] ( 3, 2.50) ref -> r0 this class-hnd single-def <System.Xml.Serialization.XmlSerializationWriter>
; V01 arg1 [V01,T03] ( 3, 2.50) ref -> r1 class-hnd single-def <System.String>
; V02 arg2 [V02,T04] ( 3, 2.50) ref -> r2 class-hnd single-def <System.String>
-; V03 arg3 [V03,T00] ( 5, 4 ) ref -> r4 class-hnd single-def <System.String>
+; V03 arg3 [V03,T00] ( 5, 3.95) ref -> r4 class-hnd single-def <System.String>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp3 [V07,T01] ( 5, 4.91) ref -> r5 class-hnd single-def "Inlining Arg" <System.Xml.XmlWriter>
+; V07 tmp3 [V07,T01] ( 6, 5.71) ref -> r5 class-hnd single-def "Inlining Arg" <System.Xml.XmlWriter>
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlWriter>
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
@@ -24,13 +24,12 @@
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V16 cse0 [V16,T06] ( 3, 1.46) int -> r7 "CSE - moderate"
-; V17 cse1 [V17,T05] ( 3, 1.50) int -> r6 "CSE - moderate"
+; V16 cse0 [V16,T05] ( 3, 1.46) int -> r6 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M11953_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
+ push {r3,r4,r5,r6,r11,lr}
add r11, sp, 16
mov r4, r3
; gcrRegs +[r4]
@@ -38,7 +37,7 @@ G_M11953_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
G_M11953_IG02: ; bbWeight=1, gcrefRegs=0017 {r0 r1 r2 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0-r2]
cmp r4, 0
- beq SHORT G_M11953_IG06
+ beq SHORT G_M11953_IG07
;; size=4 bbWeight=1 PerfScore 2.00
G_M11953_IG03: ; bbWeight=0.50, gcrefRegs=0017 {r0 r1 r2 r4}, byrefRegs=0000 {}, byref, isz
ldr r5, [r0+0x04]
@@ -49,62 +48,70 @@ G_M11953_IG03: ; bbWeight=0.50, gcrefRegs=0017 {r0 r1 r2 r4}, byrefRegs=0
mov r2, r1
movs r1, 0
; gcrRegs -[r1]
- ldr r6, [r5]
- ldr r7, [r6+0x30]
- ldr lr, [r7+0x04]
+ ldr lr, [r5]
+ ldr r6, [lr+0x30]
+ ldr lr, [r6+0x04]
blx lr // <unknown method>
; gcrRegs -[r0 r2-r3]
ldr r0, [r4+0x04]
cmp r0, 0
- beq SHORT G_M11953_IG04
+ beq SHORT G_M11953_IG05
+ ;; size=30 bbWeight=0.50 PerfScore 6.00
+G_M11953_IG04: ; bbWeight=0.45, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
mov r0, r5
; gcrRegs +[r0]
mov r1, r4
; gcrRegs +[r1]
- ldr r3, [r6+0x34]
+ ldr r3, [r5]
+ ldr r3, [r3+0x34]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
; gcrRegs -[r0-r1 r4]
- ;; size=36 bbWeight=0.50 PerfScore 8.50
-G_M11953_IG04: ; bbWeight=0.46, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=0.45 PerfScore 2.69
+G_M11953_IG05: ; bbWeight=0.46, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
mov r0, r5
; gcrRegs +[r0]
- ldr r3, [r7+0x08]
+ ldr r3, [r6+0x08]
;; size=4 bbWeight=0.46 PerfScore 0.91
-G_M11953_IG05: ; bbWeight=0.46, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,lr}
+G_M11953_IG06: ; bbWeight=0.46, epilog, nogc, extend
+ add sp, 4
+ pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
- ;; size=6 bbWeight=0.46 PerfScore 0.91
-G_M11953_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=8 bbWeight=0.46 PerfScore 1.37
+G_M11953_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r0 r5]
- pop {r4,r5,r6,r7,r11,pc}
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 64, prolog size 8, PerfScore 15.83, instruction count 27, allocated bytes for code 64 (MethodHash=0412d14e) for method System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 16.47, instruction count 29, allocated bytes for code 72 (MethodHash=0412d14e) for method System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 64 (0x000040)
+ Function Length : 36 (0x00024) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Epilog Start Index : 3 (0x03)
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ FF end
+ ---- Epilog start at index 3 ----
+ 01 add sp, sp, #4 ; opsize 16
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
@@ -13,9 +13,9 @@
; V01 arg1 [V01,T01] ( 5, 11.89) int -> r1 single-def
; V02 arg2 [V02,T04] ( 3, 2.16) ubyte -> r2 single-def
; V03 loc0 [V03,T02] ( 8, 12.71) int -> r3
-; V04 loc1 [V04,T00] ( 20, 43.69) int -> r4
+; V04 loc1 [V04,T00] ( 20, 43.69) int -> lr
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T10] ( 3, 0.00) byref -> r2 single-def "dup spill"
+; V06 tmp1 [V06,T10] ( 3, 0.00) byref -> lr single-def "dup spill"
; V07 tmp2 [V07,T09] ( 3, 0.05) int -> r2 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V09 tmp4 [V09,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -24,141 +24,140 @@
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP
; V13 tmp8 [V13,T05] ( 2, 4 ) int -> r3 "Cast away GC"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M4398_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M4398_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
ldr r3, [r0+0x0C]
; byrRegs +[r3]
- movs r4, 0
+ mov lr, 0
b SHORT G_M4398_IG04
- ;; size=6 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 3.00
G_M4398_IG03: ; bbWeight=7.73, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs -[r3]
- adds r4, r4, 1
- ;; size=2 bbWeight=7.73 PerfScore 7.73
+ add lr, lr, 1
+ ;; size=4 bbWeight=7.73 PerfScore 7.73
G_M4398_IG04: ; bbWeight=8.73, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- cmp r4, r1
+ cmp lr, r1
bge SHORT G_M4398_IG06
;; size=4 bbWeight=8.73 PerfScore 17.47
G_M4398_IG05: ; bbWeight=8.57, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- ldrb lr, [r3+r4]
- cmp lr, 0
+ ldrb r12, [r3+lr]
+ cmp r12, 0
bne SHORT G_M4398_IG03
;; size=10 bbWeight=8.57 PerfScore 25.71
G_M4398_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- cmp r4, r1
- bne SHORT G_M4398_IG12
+ cmp lr, r1
+ bne SHORT G_M4398_IG11
;; size=4 bbWeight=1 PerfScore 2.00
G_M4398_IG07: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
ldrb r1, [r3+r1]
cmp r1, 0
beq SHORT G_M4398_IG08
- mov lr, 0
+ mov r12, 0
b SHORT G_M4398_IG09
;; size=12 bbWeight=0.16 PerfScore 0.81
G_M4398_IG08: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
- mov lr, 1
+ mov r12, 1
;; size=4 bbWeight=0.16 PerfScore 0.16
G_M4398_IG09: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
uxtb r2, r2
- orrs r2, lr, r2
+ orrs r2, r12, r2
cmp r2, 0
- bne SHORT G_M4398_IG12
+ bne SHORT G_M4398_IG11
cmp r1, 53
- blt SHORT G_M4398_IG12
- ;; size=14 bbWeight=0.16 PerfScore 0.97
-G_M4398_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- b SHORT G_M4398_IG21
- ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M4398_IG11: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
- subs r4, r4, 1
- ;; size=2 bbWeight=0.97 PerfScore 0.97
+ blt SHORT G_M4398_IG11
+ b SHORT G_M4398_IG19
+ ;; size=16 bbWeight=0.16 PerfScore 1.13
+G_M4398_IG10: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ add lr, lr, -1
+ ;; size=4 bbWeight=0.97 PerfScore 0.97
+G_M4398_IG11: ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ cmp lr, 0
+ ble SHORT G_M4398_IG13
+ ;; size=6 bbWeight=1.96 PerfScore 3.93
G_M4398_IG12: ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- cmp r4, 0
- ble SHORT G_M4398_IG14
- ;; size=4 bbWeight=1.96 PerfScore 3.93
-G_M4398_IG13: ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- adds r2, r3, r4
+ add r2, r3, lr
ldrb r2, [r2-0x01]
cmp r2, 48
- beq SHORT G_M4398_IG11
- ;; size=10 bbWeight=1.96 PerfScore 7.84
-G_M4398_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- cmp r4, 0
- bne SHORT G_M4398_IG18
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M4398_IG15: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ beq SHORT G_M4398_IG10
+ ;; size=12 bbWeight=1.96 PerfScore 7.84
+G_M4398_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ cmp lr, 0
+ bne SHORT G_M4398_IG17
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M4398_IG14: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
ldrb r2, [r0+0x0A]
cmp r2, 3
- beq SHORT G_M4398_IG17
+ beq SHORT G_M4398_IG16
;; size=6 bbWeight=0.02 PerfScore 0.05
-G_M4398_IG16: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+G_M4398_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
movs r2, 0
strb r2, [r0+0x08]
;; size=4 bbWeight=0.01 PerfScore 0.02
-G_M4398_IG17: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+G_M4398_IG16: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
movs r2, 0
str r2, [r0+0x04]
;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M4398_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+G_M4398_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
movs r2, 0
- strb r2, [r3+r4]
- str r4, [r0]
+ strb r2, [r3+lr]
+ str lr, [r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; byrRegs -[r0]
; gcr arg pop 0
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M4398_IG19: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
+ ;; size=22 bbWeight=1 PerfScore 7.00
+G_M4398_IG18: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M4398_IG20: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref
+G_M4398_IG19: ; bbWeight=0.01, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
; byrRegs +[r0]
- subs r4, r4, 1
- ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M4398_IG21: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- cmp r4, 0
- ble SHORT G_M4398_IG23
- ;; size=4 bbWeight=0.01 PerfScore 0.02
-G_M4398_IG22: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- adds r2, r3, r4
+ cmp lr, 0
+ ble SHORT G_M4398_IG21
+ ;; size=6 bbWeight=0.01 PerfScore 0.02
+G_M4398_IG20: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ add r2, r3, lr
ldrb r2, [r2-0x01]
cmp r2, 57
- beq SHORT G_M4398_IG20
- ;; size=10 bbWeight=0.01 PerfScore 0.05
-G_M4398_IG23: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- cmp r4, 0
- ble SHORT G_M4398_IG25
- ;; size=4 bbWeight=0.01 PerfScore 0.02
-G_M4398_IG24: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- adds r2, r3, r4
+ beq SHORT G_M4398_IG23
+ ;; size=12 bbWeight=0.01 PerfScore 0.05
+G_M4398_IG21: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ cmp lr, 0
+ ble SHORT G_M4398_IG24
+ ;; size=6 bbWeight=0.01 PerfScore 0.02
+G_M4398_IG22: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ add r2, r3, lr
subs r2, r2, 1
ldrb r1, [r2]
adds r1, r1, 1
strb r1, [r2]
- b SHORT G_M4398_IG14
- ;; size=12 bbWeight=0.01 PerfScore 0.05
-G_M4398_IG25: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
- adds r2, r0, 4
- ; byrRegs +[r2]
- ldr r1, [r2]
- adds r1, r1, 1
- str r1, [r2]
+ b SHORT G_M4398_IG13
+ ;; size=14 bbWeight=0.01 PerfScore 0.05
+G_M4398_IG23: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ add lr, lr, -1
+ b SHORT G_M4398_IG19
+ ;; size=6 bbWeight=0.00 PerfScore 0.00
+G_M4398_IG24: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ add lr, r0, 4
+ ; byrRegs +[lr]
+ ldr r2, [lr]
+ adds r2, r2, 1
+ str r2, [lr]
movs r2, 49
- ; byrRegs -[r2]
strb r2, [r3]
- movs r4, 1
- b SHORT G_M4398_IG18
- ;; size=16 bbWeight=0.00 PerfScore 0.01
+ mov lr, 1
+ ; byrRegs -[lr]
+ b SHORT G_M4398_IG17
+ ;; size=24 bbWeight=0.00 PerfScore 0.01
-; Total bytes of code 170, prolog size 8, PerfScore 82.86, instruction count 73, allocated bytes for code 170 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (Tier1)
+; Total bytes of code 204, prolog size 6, PerfScore 83.02, instruction count 74, allocated bytes for code 204 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (Tier1)
; ============================================================
Unwind Info:
@@ -170,7 +169,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
+ Function Length : 102 (0x00066) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -178,7 +177,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
@@ -11,12 +11,12 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> r4 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 5, 4 ) ref -> r6 class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent>
-; V03 arg3 [V03,T01] ( 7, 4.25) ref -> r5 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T01] ( 6, 4 ) ref -> r5 class-hnd single-def <System.Object>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T11] ( 0, 0 ) int -> zero-ref
+;* V05 tmp1 [V05,T10] ( 0, 0 ) int -> zero-ref
; V06 tmp2 [V06,T04] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp3 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4 [V08,T12] ( 0, 0 ) int -> zero-ref
+;* V07 tmp3 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4 [V08,T11] ( 0, 0 ) int -> zero-ref
;* V09 tmp5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
; V10 tmp6 [V10,T03] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -25,15 +25,14 @@
;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Nullable`1[int]>
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V17 tmp13 [V17,T09] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
+; V17 tmp13 [V17,T08] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
; V18 tmp14 [V18,T05] ( 3, 1.50) ref -> lr class-hnd "Inline return value spill temp" <<unknown class>>
;* V19 tmp15 [V19 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V09.hasValue (fldOffset=0x0)" P-INDEP
-; V20 tmp16 [V20,T10] ( 2, 1 ) int -> r0 single-def "field V09.value (fldOffset=0x4)" P-INDEP
+; V20 tmp16 [V20,T09] ( 2, 1 ) int -> r0 single-def "field V09.value (fldOffset=0x4)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V13.hasValue (fldOffset=0x0)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref single-def "field V13.value (fldOffset=0x4)" P-INDEP
;* V23 tmp19 [V23 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.hasValue (fldOffset=0x0)" P-INDEP
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref single-def "field V14.value (fldOffset=0x4)" P-INDEP
-; V25 cse0 [V25,T07] ( 3, 1.50) int -> r1 "CSE - moderate"
;
; Lcl frame size = 4
@@ -49,49 +48,33 @@ G_M10879_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=14 bbWeight=1 PerfScore 5.00
G_M10879_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
- beq SHORT G_M10879_IG09
+ beq SHORT G_M10879_IG07
;; size=4 bbWeight=1 PerfScore 2.00
G_M10879_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r6]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M10879_IG09
- cmp r5, 0
- beq SHORT G_M10879_IG09
- ldr r1, [r5]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M10879_IG09
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- beq SHORT G_M10879_IG05
- ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M10879_IG04: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4 r6]
- mov r1, r5
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
+ ldr r0, [r6]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M10879_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ cmp r0, r3
+ bne SHORT G_M10879_IG07
+ cmp r5, 0
+ beq SHORT G_M10879_IG07
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M10879_IG07
ldr r0, [r5+0x04]
cmp r0, 1
- bne SHORT G_M10879_IG06
+ bne SHORT G_M10879_IG04
movs r4, 0
- b SHORT G_M10879_IG07
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M10879_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]
+ ; gcrRegs -[r4]
+ b SHORT G_M10879_IG05
+ ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M10879_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5-r6]
movs r4, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10879_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -100,29 +83,29 @@ G_M10879_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[r0]
str r4, [r0+0x04]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M10879_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10879_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4-r6]
ldrb r0, [r4+0x08]
movs r1, 0
strb r1, [r4+0x08]
cmp r0, 0
- beq SHORT G_M10879_IG11
+ beq SHORT G_M10879_IG09
movs r0, 0
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M10879_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10879_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r0, [r4]
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M10879_IG13
+ beq SHORT G_M10879_IG11
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M10879_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M10879_IG10: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
mov r0, r1
mov r1, r4
; gcrRegs +[r1]
@@ -131,7 +114,7 @@ G_M10879_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[r1] +[r0]
;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M10879_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M10879_IG11: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -150,11 +133,11 @@ G_M10879_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
blx lr // <unknown method>
; gcrRegs -[r1-r6]
;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M10879_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 194, prolog size 8, PerfScore 35.25, instruction count 69, allocated bytes for code 194 (MethodHash=cf9bd580) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 162, prolog size 8, PerfScore 31.75, instruction count 59, allocated bytes for code 162 (MethodHash=cf9bd580) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -166,7 +149,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 194 (0x0000c2)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -11,18 +11,17 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> r4 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 5, 4 ) ref -> r6 class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent>
-; V03 arg3 [V03,T01] ( 7, 4.25) ref -> r5 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T01] ( 6, 4 ) ref -> r5 class-hnd single-def <System.Object>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T11] ( 0, 0 ) int -> zero-ref
+;* V05 tmp1 [V05,T10] ( 0, 0 ) int -> zero-ref
; V06 tmp2 [V06,T04] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp3 [V07,T09] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4 [V08,T12] ( 0, 0 ) int -> zero-ref
+;* V07 tmp3 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4 [V08,T11] ( 0, 0 ) int -> zero-ref
; V09 tmp5 [V09,T03] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
; V10 tmp6 [V10,T07] ( 3, 1.50) int -> r4 "Inline return value spill temp"
; V11 tmp7 [V11,T05] ( 2, 2 ) int -> r0 "Inlining Arg"
-; V12 tmp8 [V12,T10] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
+; V12 tmp8 [V12,T09] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
; V13 tmp9 [V13,T06] ( 3, 1.50) ref -> lr class-hnd "Inline return value spill temp" <<unknown class>>
-; V14 cse0 [V14,T08] ( 3, 1.50) int -> r1 "CSE - moderate"
;
; Lcl frame size = 4
@@ -38,50 +37,33 @@ G_M35982_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=14 bbWeight=1 PerfScore 5.00
G_M35982_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
- beq SHORT G_M35982_IG09
+ beq SHORT G_M35982_IG07
;; size=4 bbWeight=1 PerfScore 2.00
G_M35982_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r6]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M35982_IG09
- cmp r5, 0
- beq SHORT G_M35982_IG09
- ldr r1, [r5]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M35982_IG09
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- beq SHORT G_M35982_IG05
- ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M35982_IG04: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4 r6]
- mov r1, r5
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
+ ldr r0, [r6]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ; gcr arg pop 0
- ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M35982_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ cmp r0, r3
+ bne SHORT G_M35982_IG07
+ cmp r5, 0
+ beq SHORT G_M35982_IG07
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M35982_IG07
ldr r0, [r5+0x04]
cmp r0, 2
- bne SHORT G_M35982_IG06
+ bne SHORT G_M35982_IG04
movs r4, 0
- b SHORT G_M35982_IG07
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M35982_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]
+ ; gcrRegs -[r4]
+ b SHORT G_M35982_IG05
+ ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M35982_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5-r6]
movs r4, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35982_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -91,29 +73,29 @@ G_M35982_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcr arg pop 0
str r4, [r0+0x04]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M35982_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35982_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4-r6]
ldrb r0, [r4+0x08]
movs r1, 0
strb r1, [r4+0x08]
cmp r0, 0
- beq SHORT G_M35982_IG11
+ beq SHORT G_M35982_IG09
movs r0, 0
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M35982_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35982_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r0, [r4]
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M35982_IG13
+ beq SHORT G_M35982_IG11
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M35982_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M35982_IG10: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
mov r0, r1
mov r1, r4
; gcrRegs +[r1]
@@ -123,7 +105,7 @@ G_M35982_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M35982_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M35982_IG11: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -139,14 +121,14 @@ G_M35982_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs +[r0]
ldr r12, [lr+0x0C]
;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M35982_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG12: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r12 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 196, prolog size 14, PerfScore 35.75, instruction count 70, allocated bytes for code 196 (MethodHash=28fa7371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 164, prolog size 14, PerfScore 32.25, instruction count 60, allocated bytes for code 164 (MethodHash=28fa7371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -158,7 +140,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 98 (0x00062) Actual length = 196 (0x0000c4)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -11,18 +11,17 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> r4 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 5, 4 ) ref -> r6 class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent>
-; V03 arg3 [V03,T01] ( 7, 4.25) ref -> r5 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T01] ( 6, 4 ) ref -> r5 class-hnd single-def <System.Object>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T11] ( 0, 0 ) int -> zero-ref
+;* V05 tmp1 [V05,T10] ( 0, 0 ) int -> zero-ref
; V06 tmp2 [V06,T04] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp3 [V07,T09] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4 [V08,T12] ( 0, 0 ) int -> zero-ref
+;* V07 tmp3 [V07,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4 [V08,T11] ( 0, 0 ) int -> zero-ref
; V09 tmp5 [V09,T03] ( 3, 3 ) ref -> r0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
; V10 tmp6 [V10,T07] ( 3, 1.50) int -> r4 "Inline return value spill temp"
; V11 tmp7 [V11,T05] ( 2, 2 ) int -> r0 "Inlining Arg"
-; V12 tmp8 [V12,T10] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
+; V12 tmp8 [V12,T09] ( 2, 1 ) ubyte -> r0 single-def "Inline stloc first use temp"
; V13 tmp9 [V13,T06] ( 3, 1.50) ref -> lr class-hnd "Inline return value spill temp" <<unknown class>>
-; V14 cse0 [V14,T08] ( 3, 1.50) int -> r1 "CSE - moderate"
;
; Lcl frame size = 4
@@ -38,50 +37,33 @@ G_M51272_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=14 bbWeight=1 PerfScore 5.00
G_M51272_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
- beq SHORT G_M51272_IG09
+ beq SHORT G_M51272_IG07
;; size=4 bbWeight=1 PerfScore 2.00
G_M51272_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r6]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M51272_IG09
- cmp r5, 0
- beq SHORT G_M51272_IG09
- ldr r1, [r5]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- bne SHORT G_M51272_IG09
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- beq SHORT G_M51272_IG05
- ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M51272_IG04: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4 r6]
- mov r1, r5
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
+ ldr r0, [r6]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_UNBOX
- ; gcrRegs -[r1]
- ; gcr arg pop 0
- ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M51272_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ cmp r0, r3
+ bne SHORT G_M51272_IG07
+ cmp r5, 0
+ beq SHORT G_M51272_IG07
+ ldr r0, [r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M51272_IG07
ldr r0, [r5+0x04]
cmp r0, 1
- bne SHORT G_M51272_IG06
+ bne SHORT G_M51272_IG04
movs r4, 0
- b SHORT G_M51272_IG07
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M51272_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]
+ ; gcrRegs -[r4]
+ b SHORT G_M51272_IG05
+ ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M51272_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5-r6]
movs r4, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51272_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -91,29 +73,29 @@ G_M51272_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcr arg pop 0
str r4, [r0+0x04]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M51272_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51272_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4-r6]
ldrb r0, [r4+0x08]
movs r1, 0
strb r1, [r4+0x08]
cmp r0, 0
- beq SHORT G_M51272_IG11
+ beq SHORT G_M51272_IG09
movs r0, 0
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M51272_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51272_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r0, [r4]
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M51272_IG13
+ beq SHORT G_M51272_IG11
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M51272_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M51272_IG10: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
mov r0, r1
mov r1, r4
; gcrRegs +[r1]
@@ -123,7 +105,7 @@ G_M51272_IG12: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M51272_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M51272_IG11: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -139,14 +121,14 @@ G_M51272_IG13: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
; gcrRegs +[r0]
ldr r12, [lr+0x0C]
;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M51272_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG12: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r12 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 196, prolog size 14, PerfScore 35.75, instruction count 70, allocated bytes for code 196 (MethodHash=814537b7) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 164, prolog size 14, PerfScore 32.25, instruction count 60, allocated bytes for code 164 (MethodHash=814537b7) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -158,7 +140,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 98 (0x00062) Actual length = 196 (0x0000c4)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,40 +8,38 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4 ) int -> [sp+0x08] EH-live single-def
-; V01 arg0 [V01,T03] ( 4, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[int]>
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> r3 class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
-; V03 loc0 [V03,T06] ( 5, 3 ) ref -> [sp+0x04] do-not-enreg[M] class-hnd EH-live <System.Exception>
+; V00 TypeCtx [V00,T00] ( 8, 3 ) int -> [sp+0x08] EH-live single-def
+; V01 arg0 [V01,T02] ( 4, 2 ) struct ( 8) [sp+0x20] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[int]>
+; V02 arg1 [V02,T01] ( 4, 2 ) ref -> r3 class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
+; V03 loc0 [V03,T05] ( 5, 0 ) ref -> [sp+0x04] do-not-enreg[M] class-hnd EH-live <System.Exception>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1"
-; V09 tmp2 [V09,T07] ( 3, 2.50) int -> r3 "fgMakeTemp is creating a new local variable"
-; V10 tmp3 [V10,T00] ( 5, 7.50) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
-; V11 tmp4 [V11,T10] ( 2, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V12 tmp5 [V12,T11] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V13 PSPSym [V13,T09] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
-; V14 cse0 [V14,T05] ( 7, 3.50) int -> r4 multi-def "CSE - aggressive"
-; V15 cse1 [V15,T08] ( 3, 2 ) int -> r5 "CSE - moderate"
+; V08 tmp1 [V08,T06] ( 3, 0 ) ref -> r1 single-def "CASTCLASS eval op1"
+; V09 tmp2 [V09,T07] ( 3, 0 ) int -> lr "fgMakeTemp is creating a new local variable"
+; V10 tmp3 [V10,T04] ( 6, 0 ) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
+; V11 tmp4 [V11,T08] ( 2, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp5 [V12,T09] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V13 PSPSym [V13,T03] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
;
; Lcl frame size = 24
-G_M22620_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M22620_IG01: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r1,r2}
- push {r4,r5,r11,lr}
+ push {r11,lr}
sub sp, 24
- add r11, sp, 32
- add r1, sp, 48
+ add r11, sp, 24
+ add r1, sp, 40
str r1, [sp+0x14] // [V13 PSPSym]
- str r0, [r11-0x14]
+ str r0, [r11-0x0C]
str r0, [sp+0x08] // [V00 TypeCtx]
- ;; size=22 bbWeight=1 PerfScore 8.00
-G_M22620_IG02: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M22620_IG02: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
; gcrRegs +[r3]
- ldr r1, [sp+0x28]
+ ldr r1, [sp+0x20]
; byrRegs +[r1]
- ldr r2, [sp+0x2C]
+ ldr r2, [sp+0x24]
ldr r0, [r3+0x04]
; gcrRegs +[r0]
ldr r3, [r3+0x0C]
@@ -53,17 +51,16 @@ G_M22620_IG02: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre
movs r0, 0
str r0, [sp+0x04] // [V03 loc0]
; GC ptr vars +{V03}
- ;; size=14 bbWeight=1 PerfScore 7.00
-G_M22620_IG03: ; bbWeight=1, gcVars=00000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M22620_IG03: ; bbWeight=0, gcVars=00000020 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r0, [sp+0x04] // [V03 loc0]
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M22620_IG09
+ beq SHORT G_M22620_IG05
ldr r0, [sp+0x08] // [V00 TypeCtx]
; gcrRegs -[r0]
- ldr r0, [r0+0x20]
- ldr r4, [r0]
- mov r0, r4
+ ldr r1, [r0+0x20]
+ ldr r0, [r1]
ldr r1, [sp+0x04] // [V03 loc0]
; gcrRegs +[r1]
movw r3, 0xd1ff
@@ -75,36 +72,65 @@ G_M22620_IG03: ; bbWeight=1, gcVars=00000040 {V03}, gcrefRegs=0000 {}, by
; gcrRegs +[r1]
mov r0, r1
cmp r0, 0
- beq SHORT G_M22620_IG08
- ;; size=34 bbWeight=1 PerfScore 15.00
-G_M22620_IG04: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- ldr r5, [r0]
- mov r3, r4
- cmp r5, r3
- beq SHORT G_M22620_IG06
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M22620_IG05: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ beq SHORT G_M22620_IG07
+ ldr r3, [r0]
+ ldr r2, [sp+0x08] // [V00 TypeCtx]
+ ldr lr, [r2+0x20]
+ ldr lr, [lr]
+ cmp r3, lr
+ beq SHORT G_M22620_IG04
+ mov r0, lr
; gcrRegs -[r0]
- mov r0, r3
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M22620_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- cmp r5, r4
- bne SHORT G_M22620_IG08
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M22620_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=0 PerfScore 0.00
+G_M22620_IG04: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r0]
+ ldr r2, [sp+0x08] // [V00 TypeCtx]
+ ldr r1, [r2+0x20]
+ ldr r1, [r1]
+ cmp r3, r1
+ bne SHORT G_M22620_IG07
+ b SHORT G_M22620_IG06
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M22620_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0]
+ ; GC ptr vars -{V03}
+ ldr r2, [sp+0x08] // [V00 TypeCtx]
+ ldr r0, [r2+0x20]
+ ldr r0, [r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+ ; gcrRegs +[r0]
+ ; gcr arg pop 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcr arg pop 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_THROW
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ ;; size=38 bbWeight=0 PerfScore 0.00
+G_M22620_IG06: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs +[r0]
add sp, 24
- pop {r4,r5,r11,lr}
+ pop {r11,lr}
add sp, 8
bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M22620_IG08: ; bbWeight=0, gcVars=00000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M22620_IG07: ; bbWeight=0, gcVars=00000020 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
- mov r0, r4
+ ; GC ptr vars +{V03}
+ ldr r2, [sp+0x08] // [V00 TypeCtx]
+ ldr r0, [r2+0x20]
+ ldr r0, [r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
@@ -123,50 +149,29 @@ G_M22620_IG08: ; bbWeight=0, gcVars=00000040 {V03}, gcrefRegs=0000 {}, by
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_THROW
; gcrRegs -[r0]
- ; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M22620_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x08] // [V00 TypeCtx]
- ldr r0, [r0+0x20]
- ldr r4, [r0]
- mov r0, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
- ; gcrRegs +[r0]
- ; gcr arg pop 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcr arg pop 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_THROW
- ; gcrRegs -[r0]
; gcr arg pop 0
bkpt
;; size=42 bbWeight=0 PerfScore 0.00
-G_M22620_IG10: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M22620_IG08: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[r0]
- push {r4,r5,r11,lr}
+ push {r11,lr}
sub sp, 16
add r3, r11, 16
str r3, [sp+0x04]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M22620_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
- str r0, [r11-0x1C] // [V03 loc0]
+G_M22620_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
+ str r0, [r11-0x14] // [V03 loc0]
; GC ptr vars +{V03}
movw r0, LOW ADDRESS G_M22620_IG03
; gcrRegs -[r0]
movt r0, HIGH ADDRESS G_M22620_IG03
;; size=12 bbWeight=0 PerfScore 0.00
-G_M22620_IG12: ; bbWeight=0, funclet epilog, nogc, extend
+G_M22620_IG10: ; bbWeight=0, funclet epilog, nogc, extend
add sp, 16
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 212, prolog size 22, PerfScore 39.00, instruction count 80, allocated bytes for code 212 (MethodHash=0395a7a3) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 230, prolog size 22, PerfScore 0.00, instruction count 87, allocated bytes for code 230 (MethodHash=0395a7a3) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -178,7 +183,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 91 (0x0005b) Actual length = 182 (0x0000b6)
+ Function Length : 100 (0x00064) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -186,12 +191,12 @@ Unwind Info:
Epilog Start Index : 6 (0x06)
---- Unwind codes ----
06 add sp, sp, #24 ; opsize 16
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
EC 06 pop {r1,r2} ; opsize 16
FF end
---- Epilog start at index 6 ----
06 add sp, sp, #24 ; opsize 16
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
...
@@ -8,40 +8,38 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4 ) int -> [sp+0x08] EH-live single-def
-; V01 arg0 [V01,T03] ( 4, 4 ) struct ( 8) [sp+0x28] do-not-enreg[SA] multireg-arg single-def <System.Span`1[int]>
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> r3 class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
-; V03 loc0 [V03,T06] ( 5, 3 ) ref -> [sp+0x04] do-not-enreg[M] class-hnd EH-live <System.Exception>
+; V00 TypeCtx [V00,T00] ( 8, 3 ) int -> [sp+0x08] EH-live single-def
+; V01 arg0 [V01,T02] ( 4, 2 ) struct ( 8) [sp+0x20] do-not-enreg[SA] multireg-arg single-def <System.Span`1[int]>
+; V02 arg1 [V02,T01] ( 4, 2 ) ref -> r3 class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
+; V03 loc0 [V03,T05] ( 5, 0 ) ref -> [sp+0x04] do-not-enreg[M] class-hnd EH-live <System.Exception>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 3, 4.50) ref -> r1 single-def "CASTCLASS eval op1"
-; V09 tmp2 [V09,T07] ( 3, 2.50) int -> r3 "fgMakeTemp is creating a new local variable"
-; V10 tmp3 [V10,T00] ( 5, 7.50) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
-; V11 tmp4 [V11,T10] ( 2, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V12 tmp5 [V12,T11] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V13 PSPSym [V13,T09] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
-; V14 cse0 [V14,T05] ( 7, 3.50) int -> r4 multi-def "CSE - aggressive"
-; V15 cse1 [V15,T08] ( 3, 2 ) int -> r5 "CSE - moderate"
+; V08 tmp1 [V08,T06] ( 3, 0 ) ref -> r1 single-def "CASTCLASS eval op1"
+; V09 tmp2 [V09,T07] ( 3, 0 ) int -> lr "fgMakeTemp is creating a new local variable"
+; V10 tmp3 [V10,T04] ( 6, 0 ) ref -> r0 class-hnd "spilling QMark2" <System.__Canon>
+; V11 tmp4 [V11,T08] ( 2, 0 ) ref -> r0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp5 [V12,T09] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V13 PSPSym [V13,T03] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
;
; Lcl frame size = 24
-G_M57052_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M57052_IG01: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r1,r2}
- push {r4,r5,r11,lr}
+ push {r11,lr}
sub sp, 24
- add r11, sp, 32
- add r1, sp, 48
+ add r11, sp, 24
+ add r1, sp, 40
str r1, [sp+0x14] // [V13 PSPSym]
- str r0, [r11-0x14]
+ str r0, [r11-0x0C]
str r0, [sp+0x08] // [V00 TypeCtx]
- ;; size=22 bbWeight=1 PerfScore 8.00
-G_M57052_IG02: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M57052_IG02: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
; gcrRegs +[r3]
- ldr r1, [sp+0x28]
+ ldr r1, [sp+0x20]
; byrRegs +[r1]
- ldr r2, [sp+0x2C]
+ ldr r2, [sp+0x24]
ldr r0, [r3+0x04]
; gcrRegs +[r0]
ldr r3, [r3+0x0C]
@@ -53,17 +51,16 @@ G_M57052_IG02: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre
movs r0, 0
str r0, [sp+0x04] // [V03 loc0]
; GC ptr vars +{V03}
- ;; size=14 bbWeight=1 PerfScore 7.00
-G_M57052_IG03: ; bbWeight=1, gcVars=00000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M57052_IG03: ; bbWeight=0, gcVars=00000020 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr r0, [sp+0x04] // [V03 loc0]
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M57052_IG09
+ beq SHORT G_M57052_IG05
ldr r0, [sp+0x08] // [V00 TypeCtx]
; gcrRegs -[r0]
- ldr r0, [r0+0x20]
- ldr r4, [r0]
- mov r0, r4
+ ldr r1, [r0+0x20]
+ ldr r0, [r1]
ldr r1, [sp+0x04] // [V03 loc0]
; gcrRegs +[r1]
movw r3, 0xd1ff
@@ -75,36 +72,65 @@ G_M57052_IG03: ; bbWeight=1, gcVars=00000040 {V03}, gcrefRegs=0000 {}, by
; gcrRegs +[r1]
mov r0, r1
cmp r0, 0
- beq SHORT G_M57052_IG08
- ;; size=34 bbWeight=1 PerfScore 15.00
-G_M57052_IG04: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
- ldr r5, [r0]
- mov r3, r4
- cmp r5, r3
- beq SHORT G_M57052_IG06
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M57052_IG05: ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ beq SHORT G_M57052_IG07
+ ldr r3, [r0]
+ ldr r2, [sp+0x08] // [V00 TypeCtx]
+ ldr lr, [r2+0x20]
+ ldr lr, [lr]
+ cmp r3, lr
+ beq SHORT G_M57052_IG04
+ mov r0, lr
; gcrRegs -[r0]
- mov r0, r3
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M57052_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- cmp r5, r4
- bne SHORT G_M57052_IG08
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M57052_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=0 PerfScore 0.00
+G_M57052_IG04: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r0]
+ ldr r2, [sp+0x08] // [V00 TypeCtx]
+ ldr r1, [r2+0x20]
+ ldr r1, [r1]
+ cmp r3, r1
+ bne SHORT G_M57052_IG07
+ b SHORT G_M57052_IG06
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M57052_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0]
+ ; GC ptr vars -{V03}
+ ldr r2, [sp+0x08] // [V00 TypeCtx]
+ ldr r0, [r2+0x20]
+ ldr r0, [r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+ ; gcrRegs +[r0]
+ ; gcr arg pop 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcr arg pop 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_THROW
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ ;; size=38 bbWeight=0 PerfScore 0.00
+G_M57052_IG06: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs +[r0]
add sp, 24
- pop {r4,r5,r11,lr}
+ pop {r11,lr}
add sp, 8
bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M57052_IG08: ; bbWeight=0, gcVars=00000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M57052_IG07: ; bbWeight=0, gcVars=00000020 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
- mov r0, r4
+ ; GC ptr vars +{V03}
+ ldr r2, [sp+0x08] // [V00 TypeCtx]
+ ldr r0, [r2+0x20]
+ ldr r0, [r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
@@ -123,50 +149,29 @@ G_M57052_IG08: ; bbWeight=0, gcVars=00000040 {V03}, gcrefRegs=0000 {}, by
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_THROW
; gcrRegs -[r0]
- ; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M57052_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x08] // [V00 TypeCtx]
- ldr r0, [r0+0x20]
- ldr r4, [r0]
- mov r0, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
- ; gcrRegs +[r0]
- ; gcr arg pop 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcr arg pop 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_THROW
- ; gcrRegs -[r0]
; gcr arg pop 0
bkpt
;; size=42 bbWeight=0 PerfScore 0.00
-G_M57052_IG10: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M57052_IG08: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[r0]
- push {r4,r5,r11,lr}
+ push {r11,lr}
sub sp, 16
add r3, r11, 16
str r3, [sp+0x04]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M57052_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
- str r0, [r11-0x1C] // [V03 loc0]
+G_M57052_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
+ str r0, [r11-0x14] // [V03 loc0]
; GC ptr vars +{V03}
movw r0, LOW ADDRESS G_M57052_IG03
; gcrRegs -[r0]
movt r0, HIGH ADDRESS G_M57052_IG03
;; size=12 bbWeight=0 PerfScore 0.00
-G_M57052_IG12: ; bbWeight=0, funclet epilog, nogc, extend
+G_M57052_IG10: ; bbWeight=0, funclet epilog, nogc, extend
add sp, 16
- pop {r4,r5,r11,pc}
+ pop {r11,pc}
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 212, prolog size 22, PerfScore 39.00, instruction count 80, allocated bytes for code 212 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 230, prolog size 22, PerfScore 0.00, instruction count 87, allocated bytes for code 230 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -178,7 +183,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 91 (0x0005b) Actual length = 182 (0x0000b6)
+ Function Length : 100 (0x00064) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -186,12 +191,12 @@ Unwind Info:
Epilog Start Index : 6 (0x06)
---- Unwind codes ----
06 add sp, sp, #24 ; opsize 16
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
EC 06 pop {r1,r2} ; opsize 16
FF end
---- Epilog start at index 6 ----
06 add sp, sp, #24 ; opsize 16
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
...
@@ -9,13 +9,13 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 12, 11 ) struct (52) [sp+0xC0] do-not-enreg[SF] ld-addr-op single-def <System.Security.Cryptography.ECCurve>
-; V01 loc0 [V01,T06] ( 4, 3 ) ref -> r2 class-hnd <<unknown class>>
-; V02 loc1 [V02,T03] ( 6, 4 ) ref -> [sp+0x74] class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
+; V01 loc0 [V01,T06] ( 4, 3 ) ref -> r7 class-hnd <<unknown class>>
+; V02 loc1 [V02,T03] ( 6, 4 ) ref -> [sp+0x78] class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
; V03 loc2 [V03,T24] ( 2, 0 ) ref -> r5 class-hnd single-def <<unknown class>>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (76) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T22] ( 3, 0 ) ref -> r4 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V06 tmp2 [V06,T25] ( 2, 0 ) ref -> r5 class-hnd exact single-def "impImportAndPushBox" <<unknown class>>
-; V07 tmp3 [V07,T23] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T22] ( 3, 0 ) ref -> r5 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V06 tmp2 [V06,T25] ( 2, 0 ) ref -> r6 class-hnd exact single-def "impImportAndPushBox" <<unknown class>>
+; V07 tmp3 [V07,T23] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref
@@ -24,7 +24,7 @@
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
-; V16 tmp12 [V16,T14] ( 2, 2 ) int -> r0
+; V16 tmp12 [V16,T14] ( 2, 2 ) int -> r8
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref single-def
; V18 tmp14 [V18,T15] ( 2, 2 ) int -> [sp+0x94] spill-single-def
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
@@ -64,15 +64,15 @@
;* V53 tmp49 [V53,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V54 tmp50 [V54,T04] ( 2, 4 ) ref -> r0 single-def "Single return block return value"
; V55 FramesRoot [V55,T01] ( 5, 5 ) int -> r5 "Pinvoke FrameListRoot"
-; V56 PInvokeFrame [V56 ] ( 6, 6 ) struct (36) [sp+0x50] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V57 tmp53 [V57,T07] ( 3, 3 ) ref -> r4 single-def "V00.[000..004)"
-; V58 tmp54 [V58,T08] ( 3, 3 ) ref -> r6 single-def "V00.[004..008)"
-; V59 tmp55 [V59,T09] ( 3, 3 ) ref -> r7 single-def "V00.[008..012)"
-; V60 tmp56 [V60,T10] ( 3, 3 ) ref -> r8 single-def "V00.[012..016)"
-; V61 tmp57 [V61,T05] ( 4, 3.50) ref -> r9 single-def "V00.[016..020)"
-; V62 tmp58 [V62,T02] ( 7, 4.50) int -> [sp+0x78] spill-single-def "V00.[032..036)"
+; V56 PInvokeFrame [V56 ] ( 6, 6 ) struct (36) [sp+0x54] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V57 tmp53 [V57,T07] ( 3, 3 ) ref -> r0 single-def "V00.[000..004)"
+; V58 tmp54 [V58,T08] ( 3, 3 ) ref -> r1 single-def "V00.[004..008)"
+; V59 tmp55 [V59,T09] ( 3, 3 ) ref -> r2 single-def "V00.[008..012)"
+; V60 tmp56 [V60,T10] ( 3, 3 ) ref -> r3 single-def "V00.[012..016)"
+; V61 tmp57 [V61,T05] ( 4, 3.50) ref -> lr single-def "V00.[016..020)"
+; V62 tmp58 [V62,T02] ( 7, 4.50) int -> r4 "V00.[032..036)"
; V63 tmp59 [V63,T11] ( 3, 3 ) ref -> r12 single-def "V00.[036..040)"
-; V64 tmp60 [V64,T12] ( 3, 3 ) ref -> r3 single-def "V00.[040..044)"
+; V64 tmp60 [V64,T12] ( 3, 3 ) ref -> r6 single-def "V00.[040..044)"
; V65 tmp61 [V65,T26] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
; V66 tmp62 [V66,T27] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
;
@@ -85,120 +85,121 @@ G_M7764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add r11, sp, 184
;; size=12 bbWeight=1 PerfScore 4.00
G_M7764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add r4, sp, 84
+ add r4, sp, 88
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_INIT_PINVOKE_FRAME
- ldr r4, [sp+0xC0]
- ; gcrRegs +[r4]
- ldr r6, [sp+0xC4]
- ; gcrRegs +[r6]
- ldr r7, [sp+0xC8]
- ; gcrRegs +[r7]
- ldr r8, [sp+0xCC]
- ; gcrRegs +[r8]
- ldr r9, [sp+0xD0]
- ; gcrRegs +[r9]
- ldr lr, [sp+0xE0]
- str lr, [sp+0x78]
+ ldr r0, [sp+0xC0]
+ ; gcrRegs +[r0]
+ ldr r1, [sp+0xC4]
+ ; gcrRegs +[r1]
+ ldr r2, [sp+0xC8]
+ ; gcrRegs +[r2]
+ ldr r3, [sp+0xCC]
+ ; gcrRegs +[r3]
+ ldr lr, [sp+0xD0]
+ ; gcrRegs +[lr]
+ ldr r4, [sp+0xE0]
ldr r12, [sp+0xE4]
; gcrRegs +[r12]
- ldr r3, [sp+0xE8]
- ; gcrRegs +[r3]
- cmp lr, 1
+ ldr r6, [sp+0xE8]
+ ; gcrRegs +[r6]
+ cmp r4, 1
beq SHORT G_M7764_IG04
- ;; size=46 bbWeight=1 PerfScore 15.00
-G_M7764_IG03: ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- cmp lr, 3
+ ;; size=36 bbWeight=1 PerfScore 14.00
+G_M7764_IG03: ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+ cmp r4, 3
beq SHORT G_M7764_IG04
- cmp lr, 2
- beq SHORT G_M7764_IG04
- cmp lr, 4
- bne SHORT G_M7764_IG18
- b SHORT G_M7764_IG05
- ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M7764_IG04: ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- ldr r2, [sp+0xD8]
- ; gcrRegs +[r2]
+ cmp r4, 2
+ bne SHORT G_M7764_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M7764_IG04: ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ldr r7, [sp+0xD8]
+ ; gcrRegs +[r7]
b SHORT G_M7764_IG06
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG05: ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r2]
- ldr r2, [sp+0xD4]
- ; gcrRegs +[r2]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M7764_IG06: ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r2+0x04]
- ldr r1, [r4+0x04]
- str r1, [sp+0x94] // [V18 tmp14]
- ldr r1, [r6+0x04]
- str r1, [sp+0x90] // [V20 tmp16]
- ldr r1, [r12+0x04]
- str r1, [sp+0x8C] // [V22 tmp18]
- ldr r1, [r3+0x04]
- str r1, [sp+0x88] // [V24 tmp20]
- ldr r1, [r7+0x04]
- str r1, [sp+0x84] // [V26 tmp22]
- ldr r1, [r8+0x04]
- str r1, [sp+0x80] // [V28 tmp24]
- cmp r9, 0
- beq SHORT G_M7764_IG08
- ;; size=36 bbWeight=1 PerfScore 15.00
-G_M7764_IG07: ; bbWeight=0.50, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r9+0x04]
- str r1, [sp+0x7C] // [V52 tmp48]
- b SHORT G_M7764_IG09
+G_M7764_IG05: ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r7]
+ cmp r4, 4
+ bne G_M7764_IG18
+ ldr r7, [sp+0xD4]
+ ; gcrRegs +[r7]
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M7764_IG08: ; bbWeight=0.50, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
- movs r1, 0
- str r1, [sp+0x7C] // [V52 tmp48]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG09: ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
- movs r1, 0
- str r1, [sp] // [V04 OutArgs]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M7764_IG10: ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
- str r1, [sp+0x04] // [V04 OutArgs+0x04]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M7764_IG11: ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- str r1, [sp+0x08] // [V04 OutArgs+0x08]
- str r2, [sp+0x0C] // [V04 OutArgs+0x0c]
- str r0, [sp+0x10] // [V04 OutArgs+0x10]
- str r4, [sp+0x14] // [V04 OutArgs+0x14]
- ldr r1, [sp+0x94] // [V18 tmp14]
- str r1, [sp+0x18] // [V04 OutArgs+0x18]
- str r6, [sp+0x1C] // [V04 OutArgs+0x1c]
- ldr r1, [sp+0x90] // [V20 tmp16]
- str r1, [sp+0x20] // [V04 OutArgs+0x20]
+G_M7764_IG06: ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [r7+0x04]
+ ldr r9, [r0+0x04]
+ str r9, [sp+0x94] // [V18 tmp14]
+ ldr r9, [r1+0x04]
+ str r9, [sp+0x90] // [V20 tmp16]
+ ldr r9, [r12+0x04]
+ str r9, [sp+0x8C] // [V22 tmp18]
+ ldr r9, [r6+0x04]
+ str r9, [sp+0x88] // [V24 tmp20]
+ ldr r9, [r2+0x04]
+ str r9, [sp+0x84] // [V26 tmp22]
+ ldr r9, [r3+0x04]
+ str r9, [sp+0x80] // [V28 tmp24]
+ cmp lr, 0
+ beq SHORT G_M7764_IG08
+ ;; size=58 bbWeight=1 PerfScore 15.00
+G_M7764_IG07: ; bbWeight=0.50, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+ ldr r9, [lr+0x04]
+ str r9, [sp+0x7C] // [V52 tmp48]
+ b SHORT G_M7764_IG09
+ ;; size=10 bbWeight=0.50 PerfScore 1.50
+G_M7764_IG08: ; bbWeight=0.50, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+ mov r9, 0
+ str r9, [sp+0x7C] // [V52 tmp48]
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M7764_IG09: ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+ mov r9, 0
+ str r9, [sp] // [V04 OutArgs]
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M7764_IG10: ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+ str r9, [sp+0x04] // [V04 OutArgs+0x04]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M7764_IG11: ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+ str r9, [sp+0x08] // [V04 OutArgs+0x08]
+ str r7, [sp+0x0C] // [V04 OutArgs+0x0c]
+ str r8, [sp+0x10] // [V04 OutArgs+0x10]
+ str r0, [sp+0x14] // [V04 OutArgs+0x14]
+ ldr r9, [sp+0x94] // [V18 tmp14]
+ str r9, [sp+0x18] // [V04 OutArgs+0x18]
+ str r1, [sp+0x1C] // [V04 OutArgs+0x1c]
+ ldr r9, [sp+0x90] // [V20 tmp16]
+ str r9, [sp+0x20] // [V04 OutArgs+0x20]
str r12, [sp+0x24] // [V04 OutArgs+0x24]
- ldr r1, [sp+0x8C] // [V22 tmp18]
- str r1, [sp+0x28] // [V04 OutArgs+0x28]
- str r3, [sp+0x2C] // [V04 OutArgs+0x2c]
- ldr r1, [sp+0x88] // [V24 tmp20]
- str r1, [sp+0x30] // [V04 OutArgs+0x30]
- str r7, [sp+0x34] // [V04 OutArgs+0x34]
- ldr r1, [sp+0x84] // [V26 tmp22]
- str r1, [sp+0x38] // [V04 OutArgs+0x38]
- str r8, [sp+0x3C] // [V04 OutArgs+0x3c]
- ldr r1, [sp+0x80] // [V28 tmp24]
- str r1, [sp+0x40] // [V04 OutArgs+0x40]
- str r9, [sp+0x44] // [V04 OutArgs+0x44]
- ldr r1, [sp+0x7C] // [V52 tmp48]
- str r1, [sp+0x48] // [V04 OutArgs+0x48]
- mov r0, lr
+ ldr r9, [sp+0x8C] // [V22 tmp18]
+ str r9, [sp+0x28] // [V04 OutArgs+0x28]
+ str r6, [sp+0x2C] // [V04 OutArgs+0x2c]
+ ldr r9, [sp+0x88] // [V24 tmp20]
+ str r9, [sp+0x30] // [V04 OutArgs+0x30]
+ str r2, [sp+0x34] // [V04 OutArgs+0x34]
+ ldr r9, [sp+0x84] // [V26 tmp22]
+ str r9, [sp+0x38] // [V04 OutArgs+0x38]
+ str r3, [sp+0x3C] // [V04 OutArgs+0x3c]
+ ldr r9, [sp+0x80] // [V28 tmp24]
+ str r9, [sp+0x40] // [V04 OutArgs+0x40]
+ str lr, [sp+0x44] // [V04 OutArgs+0x44]
+ ldr r9, [sp+0x7C] // [V52 tmp48]
+ str r9, [sp+0x48] // [V04 OutArgs+0x48]
+ mov r0, r4
+ ; gcrRegs -[r0]
movs r1, 0
+ ; gcrRegs -[r1]
movs r2, 0
; gcrRegs -[r2]
...
@@ -11,7 +11,7 @@
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T00] ( 5, 44 ) ref -> r4 class-hnd exact "impAppendStmt" <System.String>
-; V03 tmp2 [V03,T02] ( 5, 15 ) ref -> registers class-hnd "Inline return value spill temp" <System.String>
+; V03 tmp2 [V03,T02] ( 5, 15 ) ref -> r5 class-hnd "Inline return value spill temp" <System.String>
; V04 tmp3 [V04,T01] ( 5, 32 ) ref -> r0 class-hnd exact "Inlining Arg" <System.String>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -77,11 +77,8 @@ G_M26077_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M26077_IG03: ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
ldr r1, [r4+0x04]
cmp r1, 0
- beq SHORT G_M26077_IG04
- cmp r0, 0
- beq SHORT G_M26077_IG07
- b SHORT G_M26077_IG06
- ;; size=12 bbWeight=2 PerfScore 12.00
+ bne SHORT G_M26077_IG06
+ ;; size=6 bbWeight=2 PerfScore 6.00
G_M26077_IG04: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
mov r5, r0
@@ -98,22 +95,21 @@ G_M26077_IG05: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
;; size=2 bbWeight=2 PerfScore 2.00
G_M26077_IG06: ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5] +[r0 r4]
+ cmp r0, 0
+ beq SHORT G_M26077_IG07
ldr r3, [r0+0x04]
cmp r3, 0
- beq SHORT G_M26077_IG07
- add r2, r4, 8
- ; byrRegs +[r2]
- b SHORT G_M26077_IG08
- ;; size=12 bbWeight=2 PerfScore 10.00
+ bne SHORT G_M26077_IG08
+ ;; size=10 bbWeight=2 PerfScore 10.00
G_M26077_IG07: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- ; byrRegs -[r2]
mov r5, r4
; gcrRegs +[r5]
b SHORT G_M26077_IG09
;; size=4 bbWeight=2 PerfScore 4.00
-G_M26077_IG08: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref
- ; gcrRegs -[r4-r5] +[r0]
+G_M26077_IG08: ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5] +[r0]
+ add r2, r4, 8
; byrRegs +[r2]
adds r0, 8
; gcrRegs -[r0]
@@ -127,15 +123,13 @@ G_M26077_IG08: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, by
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
- ; gcrRegs +[r0]
+ ; gcrRegs -[r4] +[r0]
; byrRegs -[r0 r2]
- mov r4, r0
- ; gcrRegs +[r4]
- mov r5, r4
+ mov r5, r0
; gcrRegs +[r5]
- ;; size=26 bbWeight=2 PerfScore 20.00
+ ;; size=28 bbWeight=2 PerfScore 20.00
G_M26077_IG09: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r4]
+ ; gcrRegs -[r0]
mov r0, r5
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -154,7 +148,7 @@ G_M26077_IG11: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 144, prolog size 8, PerfScore 252.00, instruction count 55, allocated bytes for code 144 (MethodHash=15049a22) for method ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
+; Total bytes of code 138, prolog size 8, PerfScore 246.00, instruction count 52, allocated bytes for code 138 (MethodHash=15049a22) for method ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -166,7 +160,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 72 (0x00048) Actual length = 144 (0x000090)
+ Function Length : 69 (0x00045) Actual length = 138 (0x00008a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -46,11 +46,11 @@
;* V35 tmp22 [V35 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
;* V36 tmp23 [V36 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
; V37 tmp24 [V37,T03] ( 6, 12 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V38 tmp25 [V38,T29] ( 3, 0 ) ref -> r8 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V38 tmp25 [V38,T29] ( 3, 0 ) ref -> r9 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V39 tmp26 [V39 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-; V41 tmp28 [V41,T04] ( 6, 12 ) ref -> r8 class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-; V42 tmp29 [V42,T30] ( 3, 0 ) ref -> r9 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V41 tmp28 [V41,T04] ( 6, 12 ) ref -> r9 class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+; V42 tmp29 [V42,T30] ( 3, 0 ) ref -> r8 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V43 FramesRoot [V43,T12] ( 5, 4 ) int -> r5 "Pinvoke FrameListRoot"
; V44 PInvokeFrame [V44 ] ( 6, 4.50) struct (36) [sp+0x04] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V45 tmp32 [V45 ] ( 10, 17 ) ref -> [sp+0x4C] do-not-enreg[X] addr-exposed "field V09.m_type (fldOffset=0x0)" P-DEP
@@ -109,7 +109,7 @@ G_M20848_IG03: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M20848_IG30
+ bne G_M20848_IG25
mov r0, r8
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -144,7 +144,7 @@ G_M20848_IG05: ; bbWeight=0.25, gcrefRegs=0191 {r0 r4 r7 r8}, byrefRegs=0
; GC ptr vars +{V01}
str r4, [sp+0x30] // [V03 loc0]
; GC ptr vars +{V03}
- bne G_M20848_IG31
+ bne G_M20848_IG26
;; size=20 bbWeight=0.25 PerfScore 1.75
G_M20848_IG06: ; bbWeight=0.50, gcVars=0000000000002440 {V01 V02 V03}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r4 r7]
@@ -226,20 +226,16 @@ G_M20848_IG12: ; bbWeight=0.25, gcVars=0000000000002000 {V02}, gcrefRegs=
G_M20848_IG13: ; bbWeight=0.50, gcVars=0000000000002400 {V02 V03}, gcrefRegs=01D0 {r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r6]
; GC ptr vars -{V01}
- str r8, [sp+0x3C] // [V00 arg0]
- ; GC ptr vars +{V00}
ldr r1, [r8+0x1C]
; gcrRegs +[r1]
- ldr r8, [sp+0x3C] // [V00 arg0]
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M20848_IG14: ; bbWeight=0.50, gcrefRegs=01D2 {r1 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; GC ptr vars -{V00}
mov r0, r1
; gcrRegs +[r0]
cmp r0, 0
ldr r3, [sp+0x30] // [V03 loc0]
; gcrRegs +[r3]
- beq SHORT G_M20848_IG23
+ beq SHORT G_M20848_IG20
;; size=8 bbWeight=0.50 PerfScore 2.00
G_M20848_IG15: ; bbWeight=0.25, gcVars=0000000000002000 {V02}, gcrefRegs=01D3 {r0 r1 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r3]
@@ -248,7 +244,7 @@ G_M20848_IG15: ; bbWeight=0.25, gcVars=0000000000002000 {V02}, gcrefRegs=
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M20848_IG32
+ bne G_M20848_IG27
;; size=16 bbWeight=0.25 PerfScore 1.25
G_M20848_IG16: ; bbWeight=0.50, gcrefRegs=01D1 {r0 r4 r6 r7 r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r1]
@@ -275,12 +271,12 @@ G_M20848_IG17: ; bbWeight=1, gcVars=0000000000002040 {V01 V02}, gcrefRegs
ldr r12, [r7+0x04]
str r12, [sp+0x40] // [V55 cse0]
cmp r12, 0
- ble SHORT G_M20848_IG25
+ ble SHORT G_M20848_IG22
cmp r4, 0
- beq SHORT G_M20848_IG24
+ beq SHORT G_M20848_IG21
ldr r0, [r4+0x04]
cmp r0, r12
- blt SHORT G_M20848_IG22
+ blt SHORT G_M20848_IG19
;; size=30 bbWeight=1 PerfScore 11.00
G_M20848_IG18: ; bbWeight=3.96, gcVars=0000000000002000 {V02}, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V01}
@@ -301,71 +297,49 @@ G_M20848_IG18: ; bbWeight=3.96, gcVars=0000000000002000 {V02}, gcrefRegs=
ldr r0, [sp+0x4C] // [V45 tmp32]
; gcrRegs +[r0]
cmp r0, 0
- str r8, [sp+0x3C] // [V00 arg0]
- ; GC ptr vars +{V00}
- beq G_M20848_IG33
- ldrsb r8, [r2]
- ; gcrRegs -[r8]
+ beq SHORT G_M20848_IG28
+ ldrsb r9, [r2]
str r2, [sp+0x2C] // [V11 loc8]
; GC ptr vars +{V11}
str r2, [sp+0x4C] // [V45 tmp32]
- ldr r8, [sp+0x4C] // [V45 tmp32]
- ; gcrRegs +[r8]
- cmp r8, 0
- beq G_M20848_IG34
+ ldr r9, [sp+0x4C] // [V45 tmp32]
+ ; gcrRegs +[r9]
+ cmp r9, 0
+ beq G_M20848_IG29
str r3, [sp+0x30] // [V03 loc0]
; GC ptr vars +{V03}
mov r1, r3
mov r2, r6
- mov r3, r8
- movw r8, 0xd1ff
- ; gcrRegs -[r8]
- movt r8, 0xd1ff
- ldr r8, [r8]
- blx r8 // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
+ mov r3, r9
+ movw r9, 0xd1ff
+ ; gcrRegs -[r9]
+ movt r9, 0xd1ff
+ ldr r9, [r9]
+ blx r9 // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
; gcrRegs -[r0-r3]
cmp r0, 0
- beq SHORT G_M20848_IG21
- ldr r8, [sp+0x48] // [V10 loc7]
- add r8, r8, 1
+ beq G_M20848_IG30
+ ldr r9, [sp+0x48] // [V10 loc7]
+ add r9, r9, 1
ldr lr, [sp+0x40] // [V55 cse0]
- cmp lr, r8
+ cmp lr, r9
+ mov lr, r9
ldr r3, [sp+0x30] // [V03 loc0]
; gcrRegs +[r3]
- bgt SHORT G_M20848_IG20
- ;; size=104 bbWeight=3.96 PerfScore 138.60
-G_M20848_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r3-r4 r6-r7]
- ; GC ptr vars -{V00 V02 V03 V11 V12}
- b SHORT G_M20848_IG25
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M20848_IG20: ; bbWeight=1.98, gcVars=0000000000002080 {V00 V02}, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r3-r4 r6-r7]
- ; GC ptr vars +{V00 V02}
- mov lr, r8
- ldr r8, [sp+0x3C] // [V00 arg0]
- ; gcrRegs +[r8]
- b SHORT G_M20848_IG18
- ;; size=8 bbWeight=1.98 PerfScore 5.94
-G_M20848_IG21: ; bbWeight=1.98, gcVars=0000000000002086 {V00 V02 V11 V12}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r3-r4 r6-r8]
- ; GC ptr vars +{V01 V11 V12}
- ldr r9, [sp+0x34] // [V02 arg2]
- ; gcrRegs +[r9]
- b SHORT G_M20848_IG35
- ;; size=6 bbWeight=1.98 PerfScore 3.96
-G_M20848_IG22: ; bbWeight=0.50, gcVars=0000000000002000 {V02}, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r9] +[r3-r4 r6-r8]
- ; GC ptr vars -{V00 V01 V02 V11 V12}
+ bgt SHORT G_M20848_IG18
+ b SHORT G_M20848_IG22
+ ;; size=104 bbWeight=3.96 PerfScore 142.56
+G_M20848_IG19: ; bbWeight=0.50, gcVars=0000000000002000 {V02}, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V02 V03 V11 V12}
ldr r12, [sp+0x40] // [V55 cse0]
- b SHORT G_M20848_IG24
+ b SHORT G_M20848_IG21
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M20848_IG23: ; bbWeight=0.25, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M20848_IG20: ; bbWeight=0.25, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
str r7, [sp+0x38] // [V01 arg1]
; GC ptr vars +{V01}
b SHORT G_M20848_IG17
;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M20848_IG24: ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M20848_IG21: ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; GC ptr vars -{V01} +{V02}
add r0, r7, 8
; byrRegs +[r0]
@@ -375,7 +349,7 @@ G_M20848_IG24: ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefReg
ldr r0, [r4+0x04]
; byrRegs -[r0]
cmp lr, r0
- bhs SHORT G_M20848_IG29
+ bhs SHORT G_M20848_IG24
add r0, r4, 8
; byrRegs +[r0]
str lr, [sp+0x48] // [V10 loc7]
@@ -390,75 +364,56 @@ G_M20848_IG24: ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefReg
ldr r0, [sp+0x4C] // [V45 tmp32]
; gcrRegs +[r0]
cmp r0, 0
- str r8, [sp+0x3C] // [V00 arg0]
- ; GC ptr vars +{V00}
- beq SHORT G_M20848_IG33
- ldrsb r8, [r2]
- ; gcrRegs -[r8]
+ beq SHORT G_M20848_IG28
+ ldrsb r9, [r2]
str r2, [sp+0x2C] // [V11 loc8]
; GC ptr vars +{V11}
str r2, [sp+0x4C] // [V45 tmp32]
- ldr r8, [sp+0x4C] // [V45 tmp32]
- ; gcrRegs +[r8]
- cmp r8, 0
- beq SHORT G_M20848_IG34
+ ldr r9, [sp+0x4C] // [V45 tmp32]
+ ; gcrRegs +[r9]
+ cmp r9, 0
+ beq SHORT G_M20848_IG29
str r3, [sp+0x30] // [V03 loc0]
; GC ptr vars +{V03}
mov r1, r3
mov r2, r6
- mov r3, r8
- movw r8, 0xd1ff
- ; gcrRegs -[r8]
- movt r8, 0xd1ff
- ldr r8, [r8]
- blx r8 // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
+ mov r3, r9
+ movw r9, 0xd1ff
+ ; gcrRegs -[r9]
+ movt r9, 0xd1ff
+ ldr r9, [r9]
+ blx r9 // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
; gcrRegs -[r0-r3]
cmp r0, 0
- beq SHORT G_M20848_IG28
- ldr r8, [sp+0x48] // [V10 loc7]
- add r8, r8, 1
+ beq SHORT G_M20848_IG30
+ ldr r9, [sp+0x48] // [V10 loc7]
+ add r9, r9, 1
ldr r0, [sp+0x40] // [V55 cse0]
- cmp r0, r8
+ cmp r0, r9
mov r12, r0
- mov lr, r8
+ mov lr, r9
ldr r3, [sp+0x30] // [V03 loc0]
; gcrRegs +[r3]
- bgt SHORT G_M20848_IG27
- ;; size=112 bbWeight=0.04 PerfScore 1.64
-G_M20848_IG25: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r3-r4 r6-r7]
- ; GC ptr vars -{V00 V02 V03 V11 V12}
+ bgt SHORT G_M20848_IG21
+ ;; size=108 bbWeight=0.04 PerfScore 1.60
+G_M20848_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r3-r4 r6-r8]
...
@@ -13,15 +13,15 @@
; V02 arg2 [V02,T21] ( 6, 4.50) byref -> r6 single-def
; V03 loc0 [V03,T01] ( 7, 36 ) ubyte -> r7
; V04 loc1 [V04,T09] ( 5, 16 ) ref -> r0 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
-; V05 loc2 [V05,T02] ( 7, 24 ) ref -> r8 class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V05 loc2 [V05,T02] ( 7, 24 ) ref -> r4 class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundEventAccess>
; V07 loc4 [V07,T22] ( 6, 3 ) ref -> r4 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
; V08 loc5 [V08,T31] ( 4, 1.75) ref -> r0 class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedPrimaryConstructor>
; V09 loc6 [V09,T23] ( 4, 2 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol>
-; V10 loc7 [V10,T08] ( 5, 17 ) ref -> r8 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
+; V10 loc7 [V10,T08] ( 5, 17 ) ref -> r4 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
; V11 OutArgs [V11 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V12 tmp1 [V12,T19] ( 3, 8 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V13 tmp2 [V13,T07] ( 5, 20 ) ref -> r8 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundEventAccess>
+; V13 tmp2 [V13,T07] ( 5, 20 ) ref -> r4 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundEventAccess>
; V14 tmp3 [V14,T20] ( 3, 8 ) int -> r3 "fgMakeTemp is creating a new local variable"
; V15 tmp4 [V15,T15] ( 3, 12 ) ref -> r1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
; V16 tmp5 [V16,T24] ( 3, 2 ) int -> r3 "fgMakeTemp is creating a new local variable"
@@ -34,7 +34,7 @@
; V23 tmp12 [V23,T28] ( 2, 2 ) ref -> r1 class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundLocal>
; V24 tmp13 [V24,T11] ( 3, 16 ) int -> r3 "fgMakeTemp is creating a new local variable"
; V25 tmp14 [V25,T13] ( 2, 16 ) ref -> r1 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess>
-; V26 tmp15 [V26,T14] ( 2, 16 ) ref -> r8 "CASTCLASS eval op1"
+; V26 tmp15 [V26,T14] ( 2, 16 ) ref -> r4 "CASTCLASS eval op1"
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
; V28 tmp17 [V28,T30] ( 2, 2 ) int -> r0 "Single return block return value"
; V29 tmp18 [V29,T16] ( 3, 12 ) ref -> r0 "argument with side effect"
@@ -43,7 +43,7 @@
; V32 tmp21 [V32,T29] ( 2, 2 ) ref -> r0 "argument with side effect"
; V33 tmp22 [V33,T04] ( 3, 24 ) ref -> r0 "argument with side effect"
; V34 cse0 [V34,T32] ( 3, 1.50) int -> r5 "CSE - moderate"
-; V35 rat0 [V35,T05] ( 3, 24 ) int -> r4 "ReplaceWithLclVar is creating a new local variable"
+; V35 rat0 [V35,T05] ( 3, 24 ) int -> r8 "ReplaceWithLclVar is creating a new local variable"
; V36 rat1 [V36,T06] ( 3, 24 ) int -> r9 "ReplaceWithLclVar is creating a new local variable"
; TEMP_01 ref -> [r11-0x1C]
;
@@ -80,21 +80,21 @@ G_M23887_IG04: ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6},
movt r3, 0xd1ff
cmp r0, r3
bne G_M23887_IG28
- ldr r8, [r1+0x10]
- ; gcrRegs +[r8]
- cmp r8, 0
+ ldr r4, [r1+0x10]
+ ; gcrRegs +[r4]
+ cmp r4, 0
beq G_M23887_IG22
- ;; size=40 bbWeight=4 PerfScore 48.00
-G_M23887_IG05: ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0040 {r6}, byref, isz
+ ;; size=36 bbWeight=4 PerfScore 48.00
+G_M23887_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0040 {r6}, byref, isz
; gcrRegs -[r1]
- ldr r0, [r8]
+ ldr r0, [r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
bne G_M23887_IG22
- ;; size=18 bbWeight=1 PerfScore 5.00
-G_M23887_IG06: ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0040 {r6}, byref, isz
- ldr r0, [r8+0x14]
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M23887_IG06: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0040 {r6}, byref, isz
+ ldr r0, [r4+0x14]
; gcrRegs +[r0]
ldr r3, [r0]
ldr r3, [r3+0x64]
@@ -105,11 +105,11 @@ G_M23887_IG06: ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0040 {r6},
cmp r0, 0
beq G_M23887_IG22
b SHORT G_M23887_IG14
- ;; size=20 bbWeight=4 PerfScore 32.00
+ ;; size=18 bbWeight=4 PerfScore 32.00
G_M23887_IG07: ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6}, byref, isz
- ; gcrRegs -[r8] +[r1]
- sub r4, r7, 110
- cmp r4, 7
+ ; gcrRegs -[r4] +[r1]
+ sub r8, r7, 110
+ cmp r8, 7
bhi SHORT G_M23887_IG08
movw r0, LOW ADDRESS J_M23887_DS00
movt r0, HIGH ADDRESS J_M23887_DS00
@@ -123,8 +123,8 @@ G_M23887_IG07: ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6},
DD G_M23887_IG24
DD G_M23887_IG13
DD G_M23887_IG15
- ldr pc, [r0+4*r4]
- ;; size=20 bbWeight=4 PerfScore 24.00
+ ldr pc, [r0+4*r8]
+ ;; size=22 bbWeight=4 PerfScore 24.00
G_M23887_IG08: ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6}, byref, isz
sub r9, r7, 185
cmp r9, 5
@@ -153,23 +153,23 @@ G_M23887_IG10: ; bbWeight=2, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6},
bne G_M23887_IG29
ldr r0, [r1+0x14]
; gcrRegs +[r0]
- ldr r8, [r1+0x10]
- ; gcrRegs +[r8]
+ ldr r4, [r1+0x10]
+ ; gcrRegs +[r4]
b SHORT G_M23887_IG12
- ;; size=24 bbWeight=2 PerfScore 16.00
+ ;; size=22 bbWeight=2 PerfScore 16.00
G_M23887_IG11: ; bbWeight=2, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6}, byref, isz
- ; gcrRegs -[r0 r8]
+ ; gcrRegs -[r0 r4]
ldr r0, [r1]
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r0, r2
bne G_M23887_IG30
- mov r8, r1
- ; gcrRegs +[r8]
- ldrb r0, [r8+0x18]
+ mov r4, r1
+ ; gcrRegs +[r4]
+ ldrb r0, [r4+0x18]
cmp r0, 0
beq G_M23887_IG24
- ldr r0, [r8+0x14]
+ ldr r0, [r4+0x14]
; gcrRegs +[r0]
ldr r3, [r0]
ldr r3, [r3+0x5C]
@@ -179,16 +179,16 @@ G_M23887_IG11: ; bbWeight=2, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6},
; gcr arg pop 0
cmp r0, 0
bne G_M23887_IG24
- ldr r0, [r8+0x14]
+ ldr r0, [r4+0x14]
; gcrRegs +[r0]
ldr r3, [r0]
ldr r3, [r3+0x60]
ldr r3, [r3+0x04]
blx r3 // <unknown method>
; gcr arg pop 0
- ldr r8, [r8+0x10]
- ;; size=62 bbWeight=2 PerfScore 44.00
-G_M23887_IG12: ; bbWeight=4, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0040 {r6}, byref, isz
+ ldr r4, [r4+0x10]
+ ;; size=54 bbWeight=2 PerfScore 44.00
+G_M23887_IG12: ; bbWeight=4, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0040 {r6}, byref, isz
cmp r0, 0
beq G_M23887_IG24
ldr r3, [r0]
@@ -199,7 +199,7 @@ G_M23887_IG12: ; bbWeight=4, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0040 {r
; gcr arg pop 0
cmp r0, 0
bne G_M23887_IG24
- cmp r8, 0
+ cmp r4, 0
beq G_M23887_IG24
movs r1, 0
str r1, [sp]
@@ -209,10 +209,10 @@ G_M23887_IG12: ; bbWeight=4, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0040 {r
; gcrRegs +[r1]
str r1, [sp+0x04]
; gcr arg write
- ldr r1, [r8+0x04]
+ ldr r1, [r4+0x04]
mov r0, r5
; gcrRegs +[r0]
- mov r2, r8
+ mov r2, r4
; gcrRegs +[r2]
movs r3, 21
movw lr, 0xd1ff
@@ -223,7 +223,7 @@ G_M23887_IG12: ; bbWeight=4, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0040 {r
; gcr arg pop 0
cmp r0, 0
beq SHORT G_M23887_IG24
- ldr r0, [r8+0x0C]
+ ldr r0, [r4+0x0C]
; gcrRegs +[r0]
ldr r3, [r0]
ldr r3, [r3+0x5C]
@@ -233,12 +233,12 @@ G_M23887_IG12: ; bbWeight=4, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0040 {r
; gcr arg pop 0
cmp r0, 0
bne SHORT G_M23887_IG24
- mov r1, r8
+ mov r1, r4
; gcrRegs +[r1]
b SHORT G_M23887_IG03
- ;; size=92 bbWeight=4 PerfScore 140.00
+ ;; size=86 bbWeight=4 PerfScore 140.00
G_M23887_IG13: ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6}, byref, isz
- ; gcrRegs -[r8]
+ ; gcrRegs -[r4]
ldr r0, [r1]
movw r2, 0xd1ff
movt r2, 0xd1ff
@@ -247,14 +247,14 @@ G_M23887_IG13: ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6},
ldr r1, [r1+0x14]
b SHORT G_M23887_IG03
;; size=20 bbWeight=4 PerfScore 28.00
-G_M23887_IG14: ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0040 {r6}, byref, isz
- ; gcrRegs -[r1] +[r8]
- ldr r1, [r8+0x10]
+G_M23887_IG14: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0040 {r6}, byref, isz
+ ; gcrRegs -[r1] +[r4]
+ ldr r1, [r4+0x10]
; gcrRegs +[r1]
b SHORT G_M23887_IG03
- ;; size=6 bbWeight=4 PerfScore 8.00
+ ;; size=4 bbWeight=4 PerfScore 8.00
G_M23887_IG15: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0040 {r6}, byref, isz
- ; gcrRegs -[r5 r8]
+ ; gcrRegs -[r4-r5]
ldr r0, [r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -475,7 +475,7 @@ RWD32 dd G_M23887_IG22
dd G_M23887_IG24
-; Total bytes of code 660, prolog size 18, PerfScore 452.25, instruction count 242, allocated bytes for code 660 (MethodHash=0bf2a2b0) for method Microsoft.CodeAnalysis.CSharp.Binder:IsMoveableVariable(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):ubyte:this (FullOpts)
+; Total bytes of code 636, prolog size 18, PerfScore 452.25, instruction count 242, allocated bytes for code 636 (MethodHash=0bf2a2b0) for method Microsoft.CodeAnalysis.CSharp.Binder:IsMoveableVariable(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -487,7 +487,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 330 (0x0014a) Actual length = 660 (0x000294)
+ Function Length : 318 (0x0013e) Actual length = 636 (0x00027c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -19,7 +19,7 @@
;
; Lcl frame size = 4
-G_M5512_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M5512_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,r4,r11,lr}
add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
@@ -49,7 +49,7 @@ G_M5512_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M5512_IG09
+ bne SHORT G_M5512_IG07
;; size=36 bbWeight=2 PerfScore 28.00
G_M5512_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r1, [r4+0x08]
@@ -57,13 +57,13 @@ G_M5512_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldrh r0, [r1+0x08]
movw r3, 0xd1ff
cmp r0, r3
- beq SHORT G_M5512_IG07
+ beq SHORT G_M5512_IG09
ldr r4, [r4+0x04]
;; size=14 bbWeight=2 PerfScore 12.00
G_M5512_IG05: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
cmp r4, 0
- beq SHORT G_M5512_IG07
+ beq SHORT G_M5512_IG09
;; size=4 bbWeight=8 PerfScore 16.00
G_M5512_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r1, 0xd1ff
@@ -72,22 +72,26 @@ G_M5512_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs +[r1]
cmp r4, r1
bne SHORT G_M5512_IG03
- ;; size=14 bbWeight=4 PerfScore 20.00
+ b SHORT G_M5512_IG11
+ ;; size=16 bbWeight=4 PerfScore 24.00
G_M5512_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1 r4]
- movs r0, 0
+ movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M5512_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M5512_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movs r0, 1
+ movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M5512_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M5512_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ b SHORT G_M5512_IG09
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 92, prolog size 8, PerfScore 82.00, instruction count 35, allocated bytes for code 92 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 86.50, instruction count 37, allocated bytes for code 96 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -99,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
+ Function Length : 48 (0x00030) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -37,78 +37,82 @@ G_M44751_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byre
adds r1, r0, r1
mov lr, 0
cmp r0, r1
- bhs SHORT G_M44751_IG13
+ bhs SHORT G_M44751_IG05
;; size=12 bbWeight=1 PerfScore 5.00
G_M44751_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
add r12, r0, 2
ldrh r0, [r0]
cmp r0, 128
- bge SHORT G_M44751_IG05
+ bge SHORT G_M44751_IG06
;; size=10 bbWeight=4 PerfScore 16.00
G_M44751_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
movs r4, 1
- b SHORT G_M44751_IG08
+ b SHORT G_M44751_IG09
;; size=4 bbWeight=2 PerfScore 4.00
-G_M44751_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
- cmp r0, 0x800
- bge SHORT G_M44751_IG06
- movs r4, 2
- b SHORT G_M44751_IG08
- ;; size=10 bbWeight=2 PerfScore 8.00
+G_M44751_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ mov r12, r0
+ b SHORT G_M44751_IG14
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M44751_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ cmp r0, 0x800
+ bge SHORT G_M44751_IG07
+ movs r4, 2
+ b SHORT G_M44751_IG09
+ ;; size=10 bbWeight=2 PerfScore 8.00
+G_M44751_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
sub r0, r0, 0xd800
movw r4, 0xd1ff
cmp r0, r4
- bhi SHORT G_M44751_IG07
+ bhi SHORT G_M44751_IG08
cmp r12, r1
- bhs SHORT G_M44751_IG07
+ bhs SHORT G_M44751_IG08
ldrh r0, [r12]
sub r0, r0, 0xdc00
movw r4, 0xd1ff
cmp r0, r4
- bhi SHORT G_M44751_IG07
+ bhi SHORT G_M44751_IG08
movs r4, 4
add r12, r12, 2
- b SHORT G_M44751_IG08
+ b SHORT G_M44751_IG09
;; size=40 bbWeight=2 PerfScore 28.00
-G_M44751_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
movs r4, 3
;; size=2 bbWeight=2 PerfScore 2.00
-G_M44751_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+G_M44751_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
add r0, lr, r4
cmp r0, r2
- bgt SHORT G_M44751_IG10
+ bgt SHORT G_M44751_IG11
mov lr, r0
cmp r12, r1
- mov r0, r12
- blo SHORT G_M44751_IG03
+ blo SHORT G_M44751_IG10
+ b SHORT G_M44751_IG14
;; size=16 bbWeight=4 PerfScore 28.00
-G_M44751_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
- b SHORT G_M44751_IG13
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M44751_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+G_M44751_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ mov r0, r12
+ b SHORT G_M44751_IG03
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M44751_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
cmp r4, 4
- blt SHORT G_M44751_IG11
+ blt SHORT G_M44751_IG12
movs r0, 2
- b SHORT G_M44751_IG12
+ b SHORT G_M44751_IG13
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M44751_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M44751_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
lsls r0, r0, 1
sub r12, r12, r0
- mov r0, r12
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M44751_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
- str r0, [r3]
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M44751_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ str r12, [r3]
mov r0, lr
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M44751_IG14: ; bbWeight=1, epilog, nogc, extend
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M44751_IG15: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 130, prolog size 8, PerfScore 100.50, instruction count 51, allocated bytes for code 130 (MethodHash=6d775130) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 104.50, instruction count 53, allocated bytes for code 136 (MethodHash=6d775130) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +124,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 65 (0x00041) Actual length = 130 (0x000082)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List
1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)@@ -11,15 +11,15 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer>
; V01 arg1 [V01,T06] ( 5, 7.50) ref -> r1 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]>
; V02 arg2 [V02,T05] ( 6, 7.50) ref -> r2 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]>
-; V03 loc0 [V03,T00] ( 9, 32.50) int -> r0
+; V03 loc0 [V03,T00] ( 9, 32.50) int -> lr
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V06 tmp2 [V06,T03] ( 2, 16 ) ref -> r3 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.AnalyzerConfig+Section>
+; V06 tmp2 [V06,T03] ( 2, 16 ) ref -> r12 class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.AnalyzerConfig+Section>
; V07 tmp3 [V07,T09] ( 2, 2 ) int -> r3 "Single return block return value"
-; V08 tmp4 [V08,T01] ( 3, 24 ) ref -> r3 "arr expr"
+; V08 tmp4 [V08,T01] ( 3, 24 ) ref -> r12 "arr expr"
; V09 tmp5 [V09,T02] ( 3, 24 ) ref -> r5 "arr expr"
-; V10 cse0 [V10,T07] ( 5, 9.50) int -> lr "CSE - aggressive"
-; V11 cse1 [V11,T08] ( 3, 5 ) int -> r12 "CSE - aggressive"
+; V10 cse0 [V10,T07] ( 5, 9.50) int -> r0 "CSE - aggressive"
+; V11 cse1 [V11,T08] ( 3, 5 ) int -> r3 "CSE - aggressive"
; V12 cse2 [V12,T04] ( 3, 12 ) int -> r4 "CSE - aggressive"
;
; Lcl frame size = 4
@@ -36,12 +36,12 @@ G_M39027_IG02: ; bbWeight=1, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, b
G_M39027_IG03: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
cmp r2, 0
beq SHORT G_M39027_IG11
- ldr lr, [r1+0x08]
- ldr r12, [r2+0x08]
- cmp lr, r12
+ ldr r0, [r1+0x08]
+ ldr r3, [r2+0x08]
+ cmp r0, r3
bne SHORT G_M39027_IG11
b SHORT G_M39027_IG07
- ;; size=18 bbWeight=0.50 PerfScore 3.50
+ ;; size=14 bbWeight=0.50 PerfScore 3.50
G_M39027_IG04: ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
cmp r2, 0
@@ -58,45 +58,45 @@ G_M39027_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M39027_IG07: ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1-r2]
- movs r0, 0
- cmp lr, 0
+ mov lr, 0
+ cmp r0, 0
ble SHORT G_M39027_IG09
;; size=8 bbWeight=0.50 PerfScore 1.50
G_M39027_IG08: ; bbWeight=4, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
- cmp r0, lr
+ cmp lr, r0
bhs SHORT G_M39027_IG16
- ldr r3, [r1+0x04]
- ; gcrRegs +[r3]
- ldr r4, [r3+0x04]
- cmp r0, r4
+ ldr r12, [r1+0x04]
+ ; gcrRegs +[r12]
+ ldr r4, [r12+0x04]
+ cmp lr, r4
bhs SHORT G_M39027_IG15
- adds r3, 8
- ; gcrRegs -[r3]
- ; byrRegs +[r3]
- lsls r4, r0, 2
- ldr r3, [r3+r4]
- ; gcrRegs +[r3]
- ; byrRegs -[r3]
- cmp r0, r12
+ add r12, r12, 8
+ ; gcrRegs -[r12]
+ ; byrRegs +[r12]
+ lsl r4, lr, 2
+ ldr r12, [r12+r4]
+ ; gcrRegs +[r12]
+ ; byrRegs -[r12]
+ cmp lr, r3
bhs SHORT G_M39027_IG16
ldr r5, [r2+0x04]
; gcrRegs +[r5]
ldr r6, [r5+0x04]
- cmp r0, r6
+ cmp lr, r6
bhs SHORT G_M39027_IG15
adds r5, 8
; gcrRegs -[r5]
; byrRegs +[r5]
ldr r4, [r5+r4]
; gcrRegs +[r4]
- cmp r4, r3
+ cmp r4, r12
bne SHORT G_M39027_IG11
- adds r0, r0, 1
- cmp r0, lr
+ add lr, lr, 1
+ cmp lr, r0
blt SHORT G_M39027_IG08
- ;; size=44 bbWeight=4 PerfScore 88.00
+ ;; size=56 bbWeight=4 PerfScore 88.00
G_M39027_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r1-r4]
+ ; gcrRegs -[r1-r2 r4 r12]
; byrRegs -[r5]
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
@@ -130,7 +130,7 @@ G_M39027_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 8, PerfScore 103.00, instruction count 56, allocated bytes for code 136 (MethodHash=dd5d678c) for method Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 8, PerfScore 103.00, instruction count 56, allocated bytes for code 144 (MethodHash=dd5d678c) for method Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -142,7 +142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 68 (0x00044) Actual length = 136 (0x000088)
+ Function Length : 72 (0x00048) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.linux.arm.checked.mch | 1,291 | 282 | 193 | 816 | -1,602 | +2,564 |
benchmarks.run_pgo.linux.arm.checked.mch | 7,333 | 2,435 | 971 | 3,927 | -9,002 | +6,850 |
benchmarks.run_tiered.linux.arm.checked.mch | 1,179 | 259 | 167 | 753 | -1,478 | +2,150 |
coreclr_tests.run.linux.arm.checked.mch | 19,972 | 10,165 | 1,398 | 8,409 | -29,896 | +11,402 |
libraries.crossgen2.linux.arm.checked.mch | 3,643 | 515 | 329 | 2,799 | -3,952 | +2,756 |
libraries.pmi.linux.arm.checked.mch | 9,313 | 2,189 | 1,391 | 5,733 | -11,944 | +9,570 |
libraries_tests.run.linux.arm.Release.mch | 37,731 | 11,482 | 7,030 | 19,219 | -83,530 | +45,708 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 15,523 | 3,352 | 1,437 | 10,734 | -24,928 | +12,838 |
realworld.run.linux.arm.checked.mch | 1,497 | 306 | 233 | 958 | -2,122 | +1,678 |
97,482 | 30,985 | 13,149 | 53,348 | -168,454 | +95,516 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.linux.arm.checked.mch | 46,289 | 5,344 | 40,945 | 1,203 (2.53%) | 1,203 (2.53%) |
benchmarks.run_pgo.linux.arm.checked.mch | 155,316 | 54,949 | 100,367 | 3,303 (2.08%) | 3,303 (2.08%) |
benchmarks.run_tiered.linux.arm.checked.mch | 81,830 | 45,099 | 36,731 | 1,118 (1.35%) | 1,118 (1.35%) |
coreclr_tests.run.linux.arm.checked.mch | 471,864 | 258,996 | 212,868 | 7,456 (1.56%) | 7,456 (1.56%) |
libraries.crossgen2.linux.arm.checked.mch | 193,690 | 14 | 193,676 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.linux.arm.checked.mch | 270,805 | 6 | 270,799 | 7,820 (2.81%) | 7,820 (2.81%) |
libraries_tests.run.linux.arm.Release.mch | 708,176 | 441,682 | 266,494 | 18,469 (2.54%) | 18,470 (2.54%) |
librariestestsnotieredcompilation.run.linux.arm.Release.mch | 273,853 | 21,565 | 252,288 | 33,275 (10.83%) | 33,275 (10.83%) |
realworld.run.linux.arm.checked.mch | 36,402 | 157 | 36,245 | 1,408 (3.72%) | 1,408 (3.72%) |
2,238,225 | 827,812 | 1,410,413 | 74,052 (3.20%) | 74,053 (3.20%) |
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: 15304692 (overridden on cmd)
Total bytes of diff: 15305654 (overridden on cmd)
Total bytes of delta: 962 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
120 : 21554.dasm (3.80 % of base)
106 : 44883.dasm (3.38 % of base)
100 : 42520.dasm (3.12 % of base)
86 : 18866.dasm (4.15 % of base)
60 : 5489.dasm (3.29 % of base)
58 : 11648.dasm (2.88 % of base)
56 : 8097.dasm (1.45 % of base)
54 : 17153.dasm (3.15 % of base)
54 : 18580.dasm (3.09 % of base)
52 : 46965.dasm (3.44 % of base)
48 : 8231.dasm (2.40 % of base)
44 : 18705.dasm (3.06 % of base)
42 : 543.dasm (2.15 % of base)
40 : 7990.dasm (0.58 % of base)
36 : 27725.dasm (2.76 % of base)
34 : 15862.dasm (2.56 % of base)
34 : 18842.dasm (1.77 % of base)
34 : 24749.dasm (1.83 % of base)
34 : 8513.dasm (1.85 % of base)
32 : 18450.dasm (3.33 % of base)
Top file improvements (bytes):
-58 : 1139.dasm (-0.73 % of base)
-52 : 42254.dasm (-3.85 % of base)
-42 : 7743.dasm (-1.92 % of base)
-40 : 24839.dasm (-1.91 % of base)
-34 : 32920.dasm (-2.11 % of base)
-32 : 10686.dasm (-0.30 % of base)
-32 : 45087.dasm (-0.31 % of base)
-30 : 23893.dasm (-2.18 % of base)
-30 : 16608.dasm (-3.52 % of base)
-30 : 25741.dasm (-0.66 % of base)
-28 : 15039.dasm (-2.29 % of base)
-26 : 24793.dasm (-1.16 % of base)
-26 : 6163.dasm (-1.59 % of base)
-22 : 21341.dasm (-0.51 % of base)
-22 : 25024.dasm (-1.04 % of base)
-20 : 9359.dasm (-0.46 % of base)
-20 : 16146.dasm (-1.66 % of base)
-18 : 20212.dasm (-2.13 % of base)
-16 : 10687.dasm (-0.17 % of base)
-16 : 12593.dasm (-1.43 % of base)
59 total files with Code Size differences (32 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
120 (3.80 % of base) : 21554.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
106 (3.38 % of base) : 44883.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
100 (3.12 % of base) : 42520.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
86 (4.15 % of base) : 18866.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
60 (3.29 % of base) : 5489.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
58 (2.88 % of base) : 11648.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveAsyncThenSendAsync_Task>d__10:MoveNext():this (FullOpts)
56 (1.45 % of base) : 8097.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
54 (3.15 % of base) : 17153.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
54 (3.09 % of base) : 18580.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
52 (3.44 % of base) : 46965.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
48 (2.40 % of base) : 8231.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
44 (3.06 % of base) : 18705.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
42 (2.15 % of base) : 543.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (0.58 % of base) : 7990.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
36 (2.76 % of base) : 27725.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (FullOpts)
34 (1.83 % of base) : 24749.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
34 (2.56 % of base) : 15862.dasm - System.Formats.Tar.TarHeader+<WriteDataAsync>d__114:MoveNext():this (FullOpts)
34 (1.77 % of base) : 18842.dasm - System.IO.File+<InternalReadAllBytesUnknownLengthAsync>d__93:MoveNext():this (FullOpts)
34 (1.85 % of base) : 8513.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
32 (3.33 % of base) : 18450.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
Top method improvements (bytes):
-58 (-0.73 % of base) : 1139.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-52 (-3.85 % of base) : 42254.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-42 (-1.92 % of base) : 7743.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
-40 (-1.91 % of base) : 24839.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
-34 (-2.11 % of base) : 32920.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
-32 (-0.31 % of base) : 45087.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
-32 (-0.30 % of base) : 10686.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
-30 (-0.66 % of base) : 25741.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-30 (-2.18 % of base) : 23893.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (FullOpts)
-30 (-3.52 % of base) : 16608.dasm - System.Xml.XmlBinaryReader:ReadElementContentAsInt():int:this (FullOpts)
-28 (-2.29 % of base) : 15039.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (FullOpts)
-26 (-1.16 % of base) : 24793.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-26 (-1.59 % of base) : 6163.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-22 (-0.51 % of base) : 21341.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
-22 (-1.04 % of base) : 25024.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
-20 (-0.46 % of base) : 9359.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)
-20 (-1.66 % of base) : 16146.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-18 (-2.13 % of base) : 20212.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
-16 (-0.17 % of base) : 10687.dasm - Jil.Deserialize.Methods:ParseISO8601DateThunkReader(byref,ushort[],int,int):System.DateTime (FullOpts)
-16 (-1.43 % of base) : 12593.dasm - System.Runtime.Serialization.Json.JsonReaderDelegator:ParseJsonDateInDefaultFormat(System.String):System.DateTime (FullOpts)
Top method regressions (percentages):
14 (6.03 % of base) : 14084.dasm - System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
4 (4.76 % of base) : 17450.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
6 (4.62 % of base) : 27196.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
86 (4.15 % of base) : 18866.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
120 (3.80 % of base) : 21554.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
52 (3.44 % of base) : 46965.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
106 (3.38 % of base) : 44883.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
32 (3.33 % of base) : 18450.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
2 (3.33 % of base) : 4846.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
60 (3.29 % of base) : 5489.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
54 (3.15 % of base) : 17153.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
100 (3.12 % of base) : 42520.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
54 (3.09 % of base) : 18580.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
44 (3.06 % of base) : 18705.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
58 (2.88 % of base) : 11648.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveAsyncThenSendAsync_Task>d__10:MoveNext():this (FullOpts)
36 (2.76 % of base) : 27725.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (FullOpts)
6 (2.65 % of base) : 5014.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
30 (2.57 % of base) : 3855.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (FullOpts)
34 (2.56 % of base) : 15862.dasm - System.Formats.Tar.TarHeader+<WriteDataAsync>d__114:MoveNext():this (FullOpts)
30 (2.51 % of base) : 15853.dasm - System.Formats.Tar.TarWriter+<ReadFileFromDiskAndWriteToArchiveStreamAsEntryAsync>d__17:MoveNext():this (FullOpts)
Top method improvements (percentages):
-4 (-5.00 % of base) : 17780.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-4 (-4.55 % of base) : 5449.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-52 (-3.85 % of base) : 42254.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-30 (-3.52 % of base) : 16608.dasm - System.Xml.XmlBinaryReader:ReadElementContentAsInt():int:this (FullOpts)
-2 (-3.12 % of base) : 5383.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
-6 (-2.97 % of base) : 14177.dasm - System.IO.Pipes.NamedPipeClientStream:ConnectInternal(int,System.Threading.CancellationToken,int):this (FullOpts)
-2 (-2.86 % of base) : 26060.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
-8 (-2.72 % of base) : 7506.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-2 (-2.70 % of base) : 19236.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
-6 (-2.59 % of base) : 19058.dasm - ProtoBuf.Internal.PrimaryTypeProvider:ProtoBuf.Serializers.ISerializer<System.String>.Write(byref,System.String):this (FullOpts)
-28 (-2.29 % of base) : 15039.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (FullOpts)
-30 (-2.18 % of base) : 23893.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (FullOpts)
-8 (-2.17 % of base) : 27044.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (FullOpts)
-18 (-2.13 % of base) : 20212.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
-34 (-2.11 % of base) : 32920.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
-10 (-2.02 % of base) : 9791.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (FullOpts)
-10 (-1.92 % of base) : 2617.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
-42 (-1.92 % of base) : 7743.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
-40 (-1.91 % of base) : 24839.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
-14 (-1.77 % of base) : 12269.dasm - System.Runtime.Serialization.DataContracts.DataContract:GetCollectionXmlName(System.Type,System.Type,System.Collections.Generic.HashSet`1[System.Type],byref):System.Xml.XmlQualifiedName (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: 60239130 (overridden on cmd)
Total bytes of diff: 60236978 (overridden on cmd)
Total bytes of delta: -2152 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
128 : 86739.dasm (2.76 % of base)
120 : 71295.dasm (3.80 % of base)
102 : 119310.dasm (2.90 % of base)
78 : 58713.dasm (0.96 % of base)
60 : 94068.dasm (4.67 % of base)
56 : 141263.dasm (1.75 % of base)
54 : 139202.dasm (1.64 % of base)
48 : 13036.dasm (2.38 % of base)
46 : 31040.dasm (1.01 % of base)
46 : 1525.dasm (2.56 % of base)
44 : 119100.dasm (1.77 % of base)
44 : 121367.dasm (1.77 % of base)
40 : 122362.dasm (1.56 % of base)
40 : 15668.dasm (2.14 % of base)
36 : 82937.dasm (1.94 % of base)
34 : 125359.dasm (0.80 % of base)
30 : 153829.dasm (0.92 % of base)
30 : 63861.dasm (1.40 % of base)
30 : 63883.dasm (2.50 % of base)
30 : 90231.dasm (3.09 % of base)
Top file improvements (bytes):
-114 : 37198.dasm (-1.06 % of base)
-112 : 148706.dasm (-1.06 % of base)
-98 : 37247.dasm (-2.09 % of base)
-96 : 114076.dasm (-4.15 % of base)
-86 : 153615.dasm (-1.87 % of base)
-64 : 83252.dasm (-3.00 % of base)
-58 : 114075.dasm (-3.64 % of base)
-58 : 60808.dasm (-1.03 % of base)
-58 : 6349.dasm (-0.72 % of base)
-54 : 108739.dasm (-2.16 % of base)
-54 : 69489.dasm (-2.16 % of base)
-54 : 70815.dasm (-2.16 % of base)
-54 : 76853.dasm (-2.16 % of base)
-54 : 78270.dasm (-2.16 % of base)
-54 : 79016.dasm (-2.16 % of base)
-54 : 80388.dasm (-2.16 % of base)
-54 : 94117.dasm (-2.16 % of base)
-54 : 95313.dasm (-2.16 % of base)
-54 : 104226.dasm (-2.16 % of base)
-54 : 114074.dasm (-2.16 % of base)
82 total files with Code Size differences (41 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
128 (2.76 % of base) : 86739.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:CheckValEscape(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,uint,uint,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier0-FullOpts)
120 (3.80 % of base) : 71295.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
102 (2.90 % of base) : 119310.dasm - System.Formats.Asn1.WellKnownOids:GetValue(System.ReadOnlySpan`1[ubyte]):System.String (Tier1)
78 (0.96 % of base) : 58713.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
60 (4.67 % of base) : 94068.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:GetOrCreateState_NoLock(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],uint,ubyte):System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]:this (Tier1)
56 (1.75 % of base) : 141263.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
54 (1.64 % of base) : 139202.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)
48 (2.38 % of base) : 13036.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
46 (1.01 % of base) : 31040.dasm - System.DateTimeParse:Lex(int,byref,byref,byref,byref,byref,int):ubyte (Tier1)
46 (2.56 % of base) : 1525.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier0-FullOpts)
44 (1.77 % of base) : 119100.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
44 (1.77 % of base) : 121367.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
40 (1.56 % of base) : 122362.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
40 (2.14 % of base) : 15668.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:FindLiteralFollowingLeadingLoop(System.Text.RegularExpressions.RegexNode):System.Nullable`1[System.ValueTuple`2[System.Text.RegularExpressions.RegexNode,System.ValueTuple`4[ushort,System.String,int,ushort[]]]] (Tier0-FullOpts)
36 (1.94 % of base) : 82937.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (Tier0-FullOpts)
34 (0.80 % of base) : 125359.dasm - System.DateTimeParse:Lex(int,byref,byref,byref,byref,byref,int):ubyte (Tier1)
30 (3.09 % of base) : 90231.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CanBePassedByReference(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
30 (1.40 % of base) : 63861.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier0-FullOpts)
30 (0.92 % of base) : 153829.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (Tier1)
30 (2.50 % of base) : 63883.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
Top method improvements (bytes):
-114 (-1.06 % of base) : 37198.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (Tier0-FullOpts)
-112 (-1.06 % of base) : 148706.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (Tier0-FullOpts)
-98 (-2.09 % of base) : 37247.dasm - Jil.Deserialize.Methods:SkipEncodedStringWithLeadCharThunkReader(byref,int) (Tier0-FullOpts)
-96 (-4.15 % of base) : 114076.dasm - System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]:InvokeCore(System.Threading.Tasks.Task):this (Tier1)
-86 (-1.87 % of base) : 153615.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (Tier0-FullOpts)
-64 (-3.00 % of base) : 83252.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (Tier0-FullOpts)
-58 (-1.03 % of base) : 60808.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier0-FullOpts)
-58 (-0.72 % of base) : 6349.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-58 (-3.64 % of base) : 114075.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
-54 (-2.16 % of base) : 108739.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-54 (-2.16 % of base) : 69489.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-54 (-2.16 % of base) : 70815.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-54 (-2.16 % of base) : 76853.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-54 (-2.16 % of base) : 78270.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-54 (-2.16 % of base) : 79016.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-54 (-2.16 % of base) : 80388.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-54 (-2.16 % of base) : 94117.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-54 (-2.16 % of base) : 95313.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-54 (-2.16 % of base) : 104226.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-54 (-2.16 % of base) : 114074.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method regressions (percentages):
26 (6.44 % of base) : 144810.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
20 (6.10 % of base) : 21084.dasm - System.Xml.Serialization.CodeGenerator:BeginMethod(System.Type,System.String,System.Type[],System.String[],int):this (Tier1)
24 (5.94 % of base) : 128217.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
24 (5.94 % of base) : 65193.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
24 (5.94 % of base) : 65936.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
24 (5.94 % of base) : 72877.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
24 (5.94 % of base) : 75602.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
24 (5.94 % of base) : 81229.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
24 (5.94 % of base) : 95539.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
24 (5.94 % of base) : 107749.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
24 (5.94 % of base) : 120204.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
24 (5.94 % of base) : 103843.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
22 (5.45 % of base) : 40628.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
22 (5.45 % of base) : 99404.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
22 (5.45 % of base) : 137710.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
22 (5.45 % of base) : 135389.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
22 (5.45 % of base) : 148582.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
24 (5.43 % of base) : 96252.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
26 (5.10 % of base) : 92819.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:CanUseCallOnRefTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (Tier1)
12 (5.04 % of base) : 134886.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (Tier1)
Top method improvements (percentages):
-4 (-9.09 % of base) : 23558.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 24573.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 3534.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 47965.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 8786.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 104962.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 17325.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 31393.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 38381.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 50971.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 57879.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 59559.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 70419.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 71379.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 81536.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 99297.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 129505.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 117039.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 117465.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-9.09 % of base) : 122496.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 22645104 (overridden on cmd)
Total bytes of diff: 22645776 (overridden on cmd)
Total bytes of delta: 672 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
120 : 43127.dasm (3.80 % of base)
106 : 77545.dasm (3.38 % of base)
100 : 73294.dasm (3.12 % of base)
86 : 39627.dasm (4.15 % of base)
60 : 18303.dasm (3.29 % of base)
58 : 25636.dasm (2.88 % of base)
56 : 16388.dasm (1.45 % of base)
48 : 16673.dasm (2.40 % of base)
44 : 38667.dasm (3.06 % of base)
42 : 1439.dasm (2.15 % of base)
40 : 15986.dasm (0.58 % of base)
36 : 55860.dasm (2.76 % of base)
34 : 46946.dasm (1.83 % of base)
34 : 39861.dasm (1.77 % of base)
34 : 17320.dasm (1.85 % of base)
32 : 37330.dasm (3.33 % of base)
30 : 7279.dasm (2.57 % of base)
30 : 33742.dasm (2.60 % of base)
30 : 42894.dasm (2.16 % of base)
28 : 38138.dasm (2.04 % of base)
Top file improvements (bytes):
-58 : 6129.dasm (-0.73 % of base)
-52 : 73154.dasm (-3.85 % of base)
-42 : 15280.dasm (-1.92 % of base)
-40 : 47227.dasm (-1.91 % of base)
-34 : 64167.dasm (-2.11 % of base)
-32 : 77836.dasm (-0.31 % of base)
-32 : 54769.dasm (-2.26 % of base)
-32 : 24904.dasm (-0.30 % of base)
-30 : 49297.dasm (-0.66 % of base)
-28 : 11990.dasm (-0.63 % of base)
-28 : 31113.dasm (-2.29 % of base)
-26 : 47096.dasm (-1.16 % of base)
-26 : 12505.dasm (-1.59 % of base)
-22 : 42562.dasm (-0.51 % of base)
-22 : 47590.dasm (-1.04 % of base)
-20 : 33190.dasm (-1.66 % of base)
-16 : 24940.dasm (-0.17 % of base)
-16 : 38112.dasm (-1.43 % of base)
-16 : 68045.dasm (-0.17 % of base)
-14 : 28828.dasm (-1.85 % of base)
61 total files with Code Size differences (34 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
120 (3.80 % of base) : 43127.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
106 (3.38 % of base) : 77545.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
100 (3.12 % of base) : 73294.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)
86 (4.15 % of base) : 39627.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier0-FullOpts)
60 (3.29 % of base) : 18303.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier0-FullOpts)
58 (2.88 % of base) : 25636.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveAsyncThenSendAsync_Task>d__10:MoveNext():this (Tier0-FullOpts)
56 (1.45 % of base) : 16388.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier0-FullOpts)
48 (2.40 % of base) : 16673.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
44 (3.06 % of base) : 38667.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (Tier0-FullOpts)
42 (2.15 % of base) : 1439.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier0-FullOpts)
40 (0.58 % of base) : 15986.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (Tier0-FullOpts)
36 (2.76 % of base) : 55860.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier0-FullOpts)
34 (1.83 % of base) : 46946.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (Tier0-FullOpts)
34 (1.77 % of base) : 39861.dasm - System.IO.File+<InternalReadAllBytesUnknownLengthAsync>d__93:MoveNext():this (Tier0-FullOpts)
34 (1.85 % of base) : 17320.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (Tier0-FullOpts)
32 (3.33 % of base) : 37330.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (Tier0-FullOpts)
30 (2.57 % of base) : 7279.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier0-FullOpts)
30 (2.60 % of base) : 33742.dasm - System.Formats.Tar.TarWriter+<ReadFileFromDiskAndWriteToArchiveStreamAsEntryAsync>d__17:MoveNext():this (Tier1)
30 (2.16 % of base) : 42894.dasm - System.IO.Pipes.Tests.Perf_PipeTest+<ReadWriteAsync>d__8:MoveNext():this (Tier0-FullOpts)
28 (2.04 % of base) : 38138.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsyncWithCancellationToken>d__9:MoveNext():this (Tier0-FullOpts)
Top method improvements (bytes):
-58 (-0.73 % of base) : 6129.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-52 (-3.85 % of base) : 73154.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
-42 (-1.92 % of base) : 15280.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier0-FullOpts)
-40 (-1.91 % of base) : 47227.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (Tier0-FullOpts)
-34 (-2.11 % of base) : 64167.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (Tier0-FullOpts)
-32 (-0.31 % of base) : 77836.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (Tier0-FullOpts)
-32 (-0.30 % of base) : 24904.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (Tier0-FullOpts)
-32 (-2.26 % of base) : 54769.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (Tier0-FullOpts)
-30 (-0.66 % of base) : 49297.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
-28 (-2.29 % of base) : 31113.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (Tier0-FullOpts)
-28 (-0.63 % of base) : 11990.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (Tier0-FullOpts)
-26 (-1.16 % of base) : 47096.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier0-FullOpts)
-26 (-1.59 % of base) : 12505.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
-22 (-0.51 % of base) : 42562.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
-22 (-1.04 % of base) : 47590.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier0-FullOpts)
-20 (-1.66 % of base) : 33190.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier0-FullOpts)
-16 (-0.17 % of base) : 68045.dasm - Jil.Deserialize.Methods:ParseISO8601Date(System.IO.TextReader,ushort[],int,int):System.DateTime (Tier1)
-16 (-0.17 % of base) : 24940.dasm - Jil.Deserialize.Methods:ParseISO8601DateThunkReader(byref,ushort[],int,int):System.DateTime (Tier1)
-16 (-1.43 % of base) : 38112.dasm - System.Runtime.Serialization.Json.JsonReaderDelegator:ParseJsonDateInDefaultFormat(System.String):System.DateTime (Tier1)
-14 (-0.69 % of base) : 17450.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (Tier0-FullOpts)
Top method regressions (percentages):
8 (12.50 % of base) : 41805.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
14 (6.03 % of base) : 29364.dasm - System.Security.Cryptography.ECParameters:Validate():this (Tier1)
4 (4.76 % of base) : 35269.dasm - System.Xml.XmlReader:MoveToContent():int:this (Tier0-FullOpts)
6 (4.62 % of base) : 52428.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (Tier0-FullOpts)
86 (4.15 % of base) : 39627.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier0-FullOpts)
120 (3.80 % of base) : 43127.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
106 (3.38 % of base) : 77545.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
32 (3.33 % of base) : 37330.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (Tier0-FullOpts)
2 (3.33 % of base) : 4035.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
60 (3.29 % of base) : 18303.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier0-FullOpts)
100 (3.12 % of base) : 73294.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)
44 (3.06 % of base) : 38667.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (Tier0-FullOpts)
58 (2.88 % of base) : 25636.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveAsyncThenSendAsync_Task>d__10:MoveNext():this (Tier0-FullOpts)
36 (2.76 % of base) : 55860.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier0-FullOpts)
6 (2.65 % of base) : 20752.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier0-FullOpts)
30 (2.60 % of base) : 33742.dasm - System.Formats.Tar.TarWriter+<ReadFileFromDiskAndWriteToArchiveStreamAsEntryAsync>d__17:MoveNext():this (Tier1)
30 (2.57 % of base) : 7279.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier0-FullOpts)
48 (2.40 % of base) : 16673.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
16 (2.35 % of base) : 34259.dasm - System.Threading.Tasks.ValueTaskPerfTest+<AwaitTcsAsValueTask>d__21:MoveNext():this (Tier1)
30 (2.16 % of base) : 42894.dasm - System.IO.Pipes.Tests.Perf_PipeTest+<ReadWriteAsync>d__8:MoveNext():this (Tier0-FullOpts)
Top method improvements (percentages):
-4 (-5.00 % of base) : 34605.dasm - System.IO.Path:Join(System.String,System.String):System.String (Tier1)
-4 (-4.55 % of base) : 9357.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-52 (-3.85 % of base) : 73154.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
-2 (-3.12 % of base) : 20932.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (Tier1)
-6 (-2.97 % of base) : 29556.dasm - System.IO.Pipes.NamedPipeClientStream:ConnectInternal(int,System.Threading.CancellationToken,int):this (Tier0-FullOpts)
-2 (-2.86 % of base) : 53465.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (Tier1)
-8 (-2.72 % of base) : 29248.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-28 (-2.29 % of base) : 31113.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (Tier0-FullOpts)
-32 (-2.26 % of base) : 54769.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (Tier0-FullOpts)
-8 (-2.17 % of base) : 53863.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (Tier1)
-34 (-2.11 % of base) : 64167.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (Tier0-FullOpts)
-10 (-2.02 % of base) : 20473.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (Tier0-FullOpts)
-8 (-1.99 % of base) : 5721.dasm - System.Text.Unicode.Utf8:FromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int (Tier0-FullOpts)
-10 (-1.92 % of base) : 4157.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier0-FullOpts)
-42 (-1.92 % of base) : 15280.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier0-FullOpts)
-40 (-1.91 % of base) : 47227.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (Tier0-FullOpts)
-14 (-1.85 % of base) : 28828.dasm - System.Runtime.Serialization.DataContracts.DataContract:GetCollectionXmlName(System.Type,System.Type,System.Collections.Generic.HashSet`1[System.Type],byref):System.Xml.XmlQualifiedName (Tier1)
-2 (-1.75 % of base) : 25932.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier0-FullOpts)
-12 (-1.73 % of base) : 47929.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier0-FullOpts)
-4 (-1.72 % of base) : 38210.dasm - System.Collections.IterateForEach`1[int]:Stack():int:this (Tier0-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: 321777660 (overridden on cmd)
Total bytes of diff: 321759166 (overridden on cmd)
Total bytes of delta: -18494 (-0.01 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
256 : 153429.dasm (2.64 % of base)
256 : 383307.dasm (2.64 % of base)
236 : 476153.dasm (2.38 % of base)
120 : 153049.dasm (3.80 % of base)
120 : 383179.dasm (3.80 % of base)
116 : 192579.dasm (6.71 % of base)
116 : 412019.dasm (6.71 % of base)
56 : 213675.dasm (1.15 % of base)
54 : 120353.dasm (1.10 % of base)
54 : 166334.dasm (1.10 % of base)
54 : 8274.dasm (1.10 % of base)
50 : 197804.dasm (2.94 % of base)
50 : 201664.dasm (2.94 % of base)
50 : 205352.dasm (2.95 % of base)
50 : 116096.dasm (2.95 % of base)
50 : 124180.dasm (2.94 % of base)
50 : 313772.dasm (2.95 % of base)
50 : 213624.dasm (2.93 % of base)
50 : 303224.dasm (2.93 % of base)
50 : 66116.dasm (2.95 % of base)
Top file improvements (bytes):
-78 : 200645.dasm (-2.56 % of base)
-78 : 417594.dasm (-2.56 % of base)
-70 : 463206.dasm (-1.32 % of base)
-70 : 272252.dasm (-1.32 % of base)
-64 : 141009.dasm (-2.99 % of base)
-64 : 410595.dasm (-2.83 % of base)
-52 : 272442.dasm (-1.60 % of base)
-52 : 463295.dasm (-1.59 % of base)
-50 : 185540.dasm (-9.29 % of base)
-42 : 312178.dasm (-1.52 % of base)
-40 : 295401.dasm (-2.29 % of base)
-38 : 275476.dasm (-2.41 % of base)
-38 : 311482.dasm (-1.33 % of base)
-36 : 304954.dasm (-0.75 % of base)
-36 : 307529.dasm (-0.75 % of base)
-36 : 309071.dasm (-1.33 % of base)
-36 : 382732.dasm (-7.47 % of base)
-34 : 151820.dasm (-2.11 % of base)
-34 : 167878.dasm (-3.99 % of base)
-34 : 382788.dasm (-2.11 % of base)
80 total files with Code Size differences (40 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
256 (2.64 % of base) : 383307.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
256 (2.64 % of base) : 153429.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
236 (2.38 % of base) : 476153.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
120 (3.80 % of base) : 383179.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
120 (3.80 % of base) : 153049.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
116 (6.71 % of base) : 412019.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
116 (6.71 % of base) : 192579.dasm - JitTest_array1_refany_il.Test:Main():int (Tier0-FullOpts)
56 (1.15 % of base) : 213675.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
54 (1.10 % of base) : 120353.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
54 (1.10 % of base) : 166334.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
54 (1.10 % of base) : 8274.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
50 (2.94 % of base) : 197804.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
50 (2.94 % of base) : 201664.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
50 (2.95 % of base) : 205352.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
50 (2.95 % of base) : 116096.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
50 (2.94 % of base) : 124180.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
50 (2.95 % of base) : 313772.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
50 (2.93 % of base) : 213624.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
50 (2.93 % of base) : 303224.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
50 (2.95 % of base) : 66116.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
Top method improvements (bytes):
-78 (-2.56 % of base) : 417594.dasm - Co1245GetBytes_double:runTest():ubyte:this (FullOpts)
-78 (-2.56 % of base) : 200645.dasm - Co1245GetBytes_double:runTest():ubyte:this (Tier0-FullOpts)
-70 (-1.32 % of base) : 463206.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
-70 (-1.32 % of base) : 272252.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier0-FullOpts)
-64 (-2.99 % of base) : 141009.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (Tier0-FullOpts)
-64 (-2.83 % of base) : 410595.dasm - Test_baduwinfo1:bar(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String):int (FullOpts)
-52 (-1.59 % of base) : 463295.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CalculateTypeLayout(Internal.TypeSystem.DefType,Internal.TypeSystem.Ecma.EcmaModule,byref):Internal.TypeSystem.FieldAndOffset[]:this (FullOpts)
-52 (-1.60 % of base) : 272442.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CalculateTypeLayout(Internal.TypeSystem.DefType,Internal.TypeSystem.Ecma.EcmaModule,byref):Internal.TypeSystem.FieldAndOffset[]:this (Tier0-FullOpts)
-50 (-9.29 % of base) : 185540.dasm - System.IO.TextWriter:WriteLine(System.String):this (Tier1)
-42 (-1.52 % of base) : 312178.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
-40 (-2.29 % of base) : 295401.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
-38 (-1.33 % of base) : 311482.dasm - Program:CompareDLLs(System.String,System.String):int (Tier0-FullOpts)
-38 (-2.41 % of base) : 275476.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
-36 (-1.33 % of base) : 309071.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
-36 (-7.47 % of base) : 382732.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTime():System.Nullable`1[System.DateTime]:this (FullOpts)
-36 (-0.75 % of base) : 304954.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-36 (-0.75 % of base) : 307529.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-34 (-2.11 % of base) : 382788.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
-34 (-2.11 % of base) : 151820.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (Tier0-FullOpts)
-34 (-3.99 % of base) : 167878.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,long,System.Number+HexParser`1[long]](System.ReadOnlySpan`1[ushort],int,byref):int (Tier1)
Top method regressions (percentages):
42 (31.34 % of base) : 325625.dasm - testout1:Sub_Funclet_221():int (FullOpts)
32 (23.88 % of base) : 326042.dasm - testout1:Sub_Funclet_221():int (FullOpts)
28 (18.92 % of base) : 325515.dasm - testout1:Sub_Funclet_107():int (FullOpts)
28 (18.92 % of base) : 325553.dasm - testout1:Sub_Funclet_145():int (FullOpts)
28 (18.92 % of base) : 325627.dasm - testout1:Sub_Funclet_223():int (FullOpts)
22 (14.29 % of base) : 325590.dasm - testout1:Sub_Funclet_183():int (FullOpts)
18 (12.16 % of base) : 325932.dasm - testout1:Sub_Funclet_107():int (FullOpts)
18 (12.16 % of base) : 325970.dasm - testout1:Sub_Funclet_145():int (FullOpts)
18 (12.16 % of base) : 326044.dasm - testout1:Sub_Funclet_223():int (FullOpts)
12 (8.45 % of base) : 325969.dasm - testout1:Sub_Funclet_144():int (FullOpts)
12 (8.45 % of base) : 325552.dasm - testout1:Sub_Funclet_144():int (FullOpts)
8 (8.16 % of base) : 205236.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
8 (8.16 % of base) : 115379.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
8 (8.16 % of base) : 134561.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
12 (7.79 % of base) : 326007.dasm - testout1:Sub_Funclet_183():int (FullOpts)
10 (6.94 % of base) : 325971.dasm - testout1:Sub_Funclet_146():int (FullOpts)
10 (6.94 % of base) : 325591.dasm - testout1:Sub_Funclet_184():int (FullOpts)
10 (6.94 % of base) : 326008.dasm - testout1:Sub_Funclet_184():int (FullOpts)
10 (6.94 % of base) : 326039.dasm - testout1:Sub_Funclet_218():int (FullOpts)
10 (6.94 % of base) : 326043.dasm - testout1:Sub_Funclet_222():int (FullOpts)
Top method improvements (percentages):
-18 (-10.47 % of base) : 157996.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-18 (-9.78 % of base) : 157932.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
-14 (-9.46 % of base) : 326544.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-14 (-9.46 % of base) : 326960.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-50 (-9.29 % of base) : 185540.dasm - System.IO.TextWriter:WriteLine(System.String):this (Tier1)
-36 (-7.47 % of base) : 382732.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTime():System.Nullable`1[System.DateTime]:this (FullOpts)
-18 (-6.21 % of base) : 398971.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
-18 (-6.21 % of base) : 157325.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (Tier0-FullOpts)
-12 (-5.94 % of base) : 158017.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
-2 (-5.00 % of base) : 139233.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
-2 (-5.00 % of base) : 161921.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
-2 (-5.00 % of base) : 172529.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
-2 (-5.00 % of base) : 277285.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
-2 (-5.00 % of base) : 277381.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
-2 (-5.00 % of base) : 213937.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
-2 (-5.00 % of base) : 2981.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
-2 (-5.00 % of base) : 212909.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
-2 (-5.00 % of base) : 295169.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
-2 (-5.00 % of base) : 137213.dasm - Tests_len1_2:Test_tst_31(System.String):ubyte (FullOpts)
-2 (-5.00 % of base) : 137533.dasm - Tests_len4_7:Test_tst_31(System.String):ubyte (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: 35174904 (overridden on cmd)
Total bytes of diff: 35173708 (overridden on cmd)
Total bytes of delta: -1196 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
110 : 101469.dasm (0.34 % of base)
94 : 139200.dasm (4.31 % of base)
78 : 27233.dasm (0.85 % of base)
60 : 18881.dasm (4.03 % of base)
60 : 19316.dasm (2.05 % of base)
58 : 18354.dasm (1.87 % of base)
58 : 19312.dasm (1.80 % of base)
52 : 18935.dasm (1.68 % of base)
44 : 189730.dasm (9.05 % of base)
42 : 121663.dasm (5.74 % of base)
42 : 120791.dasm (5.74 % of base)
42 : 18346.dasm (2.04 % of base)
40 : 173421.dasm (2.28 % of base)
40 : 165961.dasm (2.33 % of base)
40 : 18981.dasm (2.48 % of base)
38 : 18352.dasm (3.45 % of base)
38 : 19306.dasm (1.84 % of base)
38 : 25086.dasm (0.14 % of base)
38 : 98458.dasm (2.02 % of base)
34 : 18933.dasm (1.68 % of base)
Top file improvements (bytes):
-304 : 127173.dasm (-1.37 % of base)
-112 : 129849.dasm (-2.29 % of base)
-94 : 58890.dasm (-1.89 % of base)
-62 : 29900.dasm (-1.54 % of base)
-62 : 118149.dasm (-1.95 % of base)
-56 : 29907.dasm (-2.32 % of base)
-52 : 127875.dasm (-6.75 % of base)
-48 : 186018.dasm (-2.01 % of base)
-48 : 59477.dasm (-2.01 % of base)
-44 : 175400.dasm (-3.05 % of base)
-44 : 120344.dasm (-2.22 % of base)
-44 : 185951.dasm (-2.25 % of base)
-40 : 88530.dasm (-4.34 % of base)
-38 : 14459.dasm (-1.76 % of base)
-36 : 17578.dasm (-0.71 % of base)
-36 : 94693.dasm (-3.31 % of base)
-34 : 20591.dasm (-2.95 % of base)
-34 : 14883.dasm (-2.28 % of base)
-34 : 120532.dasm (-1.78 % of base)
-32 : 59457.dasm (-0.81 % of base)
68 total files with Code Size differences (36 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
110 (0.34 % of base) : 101469.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
94 (4.31 % of base) : 139200.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
78 (0.85 % of base) : 27233.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
60 (2.05 % of base) : 19316.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (FullOpts)
60 (4.03 % of base) : 18881.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
58 (1.87 % of base) : 18354.dasm - System.IO.BufferedStream+<ReadFromUnderlyingStreamAsync>d__48:MoveNext():this (FullOpts)
58 (1.80 % of base) : 19312.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (FullOpts)
52 (1.68 % of base) : 18935.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (FullOpts)
44 (9.05 % of base) : 189730.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)
42 (5.74 % of base) : 121663.dasm - Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+LocalState]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
42 (5.74 % of base) : 120791.dasm - Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[System.__Canon]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
42 (2.04 % of base) : 18346.dasm - System.IO.BufferedStream+<CopyToAsyncCore>d__68:MoveNext():this (FullOpts)
40 (2.28 % of base) : 173421.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (2.33 % of base) : 165961.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (2.48 % of base) : 18981.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
38 (0.14 % of base) : 25086.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
38 (2.02 % of base) : 98458.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
38 (3.45 % of base) : 18352.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
38 (1.84 % of base) : 19306.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (FullOpts)
34 (1.68 % of base) : 18933.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
Top method improvements (bytes):
-304 (-1.37 % of base) : 127173.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-112 (-2.29 % of base) : 129849.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
-94 (-1.89 % of base) : 58890.dasm - System.Data.XmlDataTreeWriter:XmlDataRowWriter(System.Data.DataRow,System.String):this (FullOpts)
-62 (-1.54 % of base) : 29900.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
-62 (-1.95 % of base) : 118149.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
-56 (-2.32 % of base) : 29907.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
-52 (-6.75 % of base) : 127875.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-48 (-2.01 % of base) : 186018.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-48 (-2.01 % of base) : 59477.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-44 (-2.22 % of base) : 120344.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
-44 (-2.25 % of base) : 185951.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this (FullOpts)
-44 (-3.05 % of base) : 175400.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-40 (-4.34 % of base) : 88530.dasm - Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter:GenerateSwitchBuckets(int,int):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter+SwitchBucket]:this (FullOpts)
-38 (-1.76 % of base) : 14459.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
-36 (-3.31 % of base) : 94693.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-36 (-0.71 % of base) : 17578.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)
-34 (-2.95 % of base) : 20591.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-34 (-1.78 % of base) : 120532.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)
-34 (-2.28 % of base) : 14883.dasm - System.Text.UTF32Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (FullOpts)
-32 (-4.61 % of base) : 84049.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
Top method regressions (percentages):
44 (9.05 % of base) : 189730.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)
4 (5.88 % of base) : 27482.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
42 (5.74 % of base) : 121663.dasm - Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+LocalState]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
42 (5.74 % of base) : 120791.dasm - Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[System.__Canon]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
4 (5.00 % of base) : 87799.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
6 (4.62 % of base) : 169176.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
12 (4.58 % of base) : 128166.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
94 (4.31 % of base) : 139200.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
60 (4.03 % of base) : 18881.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
6 (3.80 % of base) : 53248.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
38 (3.45 % of base) : 18352.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
2 (3.33 % of base) : 156381.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
30 (3.28 % of base) : 19052.dasm - System.IO.TextReader+<ReadBlockAsyncInternal>d__23:MoveNext():this (FullOpts)
32 (3.27 % of base) : 18888.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
4 (3.12 % of base) : 59266.dasm - System.Xml.XPathNodePointer:DecideXPNodeTypeForTextNodes(System.Xml.XmlNode):int:this (FullOpts)
40 (2.48 % of base) : 18981.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
4 (2.47 % of base) : 37740.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
10 (2.38 % of base) : 92849.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:DecodeCustomAttributeElementArrayOrThrow(byref,ubyte,System.__Canon,System.__Canon):Microsoft.CodeAnalysis.TypedConstant:this (FullOpts)
28 (2.37 % of base) : 18563.dasm - System.IO.File+<InternalReadAllBytesAsync>d__92:MoveNext():this (FullOpts)
40 (2.33 % of base) : 165961.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
Top method improvements (percentages):
-16 (-10.53 % of base) : 18761.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
-16 (-8.33 % of base) : 18762.dasm - System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
-52 (-6.75 % of base) : 127875.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-16 (-4.94 % of base) : 177983.dasm - System.ComponentModel.Design.RuntimeLicenseContext:CaseInsensitiveManifestResourceStreamLookup(System.Reflection.Assembly,System.String):System.IO.Stream (FullOpts)
-12 (-4.72 % of base) : 146000.dasm - System.IO.Ports.SerialPort:ReadByte():int:this (FullOpts)
-32 (-4.61 % of base) : 84049.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-4 (-4.44 % of base) : 18760.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-40 (-4.34 % of base) : 88530.dasm - Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter:GenerateSwitchBuckets(int,int):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter+SwitchBucket]:this (FullOpts)
-22 (-4.21 % of base) : 136209.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
-10 (-3.70 % of base) : 44564.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteNamedTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-36 (-3.31 % of base) : 94693.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-18 (-3.30 % of base) : 14961.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (FullOpts)
-24 (-3.26 % of base) : 114318.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:MakeEventAccessorCall(Microsoft.CodeAnalysis.VisualBasic.BoundAddRemoveHandlerStatement,Microsoft.CodeAnalysis.VisualBasic.BoundEventAccess,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
-20 (-3.23 % of base) : 153196.dasm - System.IPv6AddressHelper:IsValidStrict(uint,int,byref):ubyte (FullOpts)
-20 (-3.23 % of base) : 149871.dasm - System.IPv6AddressHelper:IsValidStrict(uint,int,byref):ubyte (FullOpts)
-20 (-3.23 % of base) : 162409.dasm - System.IPv6AddressHelper:IsValidStrict(uint,int,byref):ubyte (FullOpts)
-2 (-3.12 % of base) : 150305.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
-44 (-3.05 % of base) : 175400.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-18 (-3.02 % of base) : 84856.dasm - Microsoft.CodeAnalysis.Debugging.CustomDebugInfoReader:TryParseVisualBasicImportString(System.String,byref,byref,byref,byref):ubyte (FullOpts)
-30 (-3.01 % of base) : 50311.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (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: 49554486 (overridden on cmd)
Total bytes of diff: 49552112 (overridden on cmd)
Total bytes of delta: -2374 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
256 : 253699.dasm (2.26 % of base)
240 : 11462.dasm (2.01 % of base)
204 : 120152.dasm (13.58 % of base)
144 : 170130.dasm (3.45 % of base)
72 : 170566.dasm (1.80 % of base)
70 : 101363.dasm (4.04 % of base)
68 : 259691.dasm (2.90 % of base)
58 : 147660.dasm (2.91 % of base)
56 : 260569.dasm (0.77 % of base)
56 : 201512.dasm (2.92 % of base)
54 : 177631.dasm (2.27 % of base)
54 : 268987.dasm (2.88 % of base)
52 : 61001.dasm (1.63 % of base)
50 : 260410.dasm (3.41 % of base)
46 : 267825.dasm (9.62 % of base)
44 : 150437.dasm (0.80 % of base)
44 : 90.dasm (1.06 % of base)
44 : 147638.dasm (1.88 % of base)
42 : 221123.dasm (2.39 % of base)
42 : 171299.dasm (0.65 % of base)
Top file improvements (bytes):
-474 : 234082.dasm (-2.11 % of base)
-314 : 169906.dasm (-6.66 % of base)
-84 : 167354.dasm (-6.72 % of base)
-78 : 124402.dasm (-2.17 % of base)
-74 : 255507.dasm (-3.35 % of base)
-72 : 132916.dasm (-3.91 % of base)
-70 : 237694.dasm (-1.32 % of base)
-68 : 97385.dasm (-2.06 % of base)
-58 : 52390.dasm (-3.25 % of base)
-50 : 14072.dasm (-1.51 % of base)
-50 : 272036.dasm (-2.27 % of base)
-48 : 206702.dasm (-1.28 % of base)
-48 : 96976.dasm (-2.75 % of base)
-46 : 119486.dasm (-1.15 % of base)
-46 : 125992.dasm (-1.91 % of base)
-46 : 221493.dasm (-5.78 % of base)
-44 : 125415.dasm (-2.33 % of base)
-44 : 67778.dasm (-0.98 % of base)
-42 : 256471.dasm (-3.32 % of base)
-40 : 154388.dasm (-1.03 % of base)
72 total files with Code Size differences (37 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
256 (2.26 % of base) : 253699.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
240 (2.01 % of base) : 11462.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
204 (13.58 % of base) : 120152.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
144 (3.45 % of base) : 170130.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
72 (1.80 % of base) : 170566.dasm - System.Net.WebClient+<UploadBitsAsync>d__152:MoveNext():this (FullOpts)
70 (4.04 % of base) : 101363.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
68 (2.90 % of base) : 259691.dasm - System.Net.Http.MultipartContent+<SerializeToStreamAsyncCore>d__24:MoveNext():this (FullOpts)
58 (2.91 % of base) : 147660.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
56 (0.77 % of base) : 260569.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
56 (2.92 % of base) : 201512.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
54 (2.88 % of base) : 268987.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
54 (2.27 % of base) : 177631.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
52 (1.63 % of base) : 61001.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
50 (3.41 % of base) : 260410.dasm - System.Net.Http.Http3RequestStream+Http3ReadStream+<DisposeAsync>d__9:MoveNext():this (FullOpts)
46 (9.62 % of base) : 267825.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)
44 (1.06 % of base) : 90.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
44 (1.88 % of base) : 147638.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteDocTypeAsync>d__98:MoveNext():this (FullOpts)
44 (0.80 % of base) : 150437.dasm - System.Xml.XmlWellFormedWriter+<WriteEndAttributeAsync_SepcialAtt>d__132:MoveNext():this (FullOpts)
42 (2.39 % of base) : 221123.dasm - System.IO.Compression.BrotliStream+<FlushAsyncCore>d__14:MoveNext():this (FullOpts)
42 (0.65 % of base) : 171299.dasm - Xunit.ConsoleClient.CommandLine:Parse(System.Predicate`1[System.String]):Xunit.XunitProject:this (FullOpts)
Top method improvements (bytes):
-474 (-2.11 % of base) : 234082.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-314 (-6.66 % of base) : 169906.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
-84 (-6.72 % of base) : 167354.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
-78 (-2.17 % of base) : 124402.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
-74 (-3.35 % of base) : 255507.dasm - System.DirectoryServices.Protocols.LdapConnection:BuildAttributes(System.Collections.CollectionBase,System.Collections.ArrayList):System.DirectoryServices.Protocols.LdapMod[] (FullOpts)
-72 (-3.91 % of base) : 132916.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-70 (-1.32 % of base) : 237694.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
-68 (-2.06 % of base) : 97385.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindUsingBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
-58 (-3.25 % of base) : 52390.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-50 (-1.51 % of base) : 14072.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CalculateTypeLayout(Internal.TypeSystem.DefType,Internal.TypeSystem.Ecma.EcmaModule,byref):Internal.TypeSystem.FieldAndOffset[]:this (FullOpts)
-50 (-2.27 % of base) : 272036.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
-48 (-1.28 % of base) : 206702.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
-48 (-2.75 % of base) : 96976.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-46 (-1.15 % of base) : 119486.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:LateMakeArgumentArrayArgument(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-46 (-1.91 % of base) : 125992.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)
-46 (-5.78 % of base) : 221493.dasm - Newtonsoft.Json.JsonReader:ReadAsBytes():ubyte[]:this (FullOpts)
-44 (-0.98 % of base) : 67778.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,ubyte,ubyte,ubyte,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-44 (-2.33 % of base) : 125415.dasm - Microsoft.CodeAnalysis.VisualBasic.LambdaRewriter+Analysis:ComputeLambdaScopesAndFrameCaptures():this (FullOpts)
-42 (-3.32 % of base) : 256471.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
-40 (-1.03 % of base) : 154388.dasm - System.Xml.Schema.XmlSchemaInference:FindMatchingElement(ubyte,System.Xml.XmlReader,System.Xml.Schema.XmlSchemaComplexType,byref,System.Xml.Schema.XmlSchema,ubyte):System.Xml.Schema.XmlSchemaElement:this (FullOpts)
Top method regressions (percentages):
204 (13.58 % of base) : 120152.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
46 (9.62 % of base) : 267825.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)
6 (8.57 % of base) : 54247.dasm - Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
14 (7.53 % of base) : 204457.dasm - Microsoft.Build.Graph.ProjectInterpretation:SplitPropertyNames(System.String):System.Collections.Generic.IReadOnlyCollection`1[System.String] (FullOpts)
14 (6.03 % of base) : 269217.dasm - System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
8 (5.80 % of base) : 141735.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)
4 (5.26 % of base) : 138413.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
12 (4.96 % of base) : 234361.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
8 (4.94 % of base) : 184412.dasm - Microsoft.CSharp.CSharpModifierAttributeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
4 (4.76 % of base) : 149004.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
6 (4.62 % of base) : 189085.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
18 (4.19 % of base) : 261291.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
70 (4.04 % of base) : 101363.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
2 (3.70 % of base) : 248451.dasm - System.Data.ProviderBase.DbConnectionFactory:FindConnectionOptions(System.Data.Common.DbConnectionPoolKey):System.Data.Common.DbConnectionOptions:this (FullOpts)
10 (3.68 % of base) : 50745.dasm - Microsoft.Diagnostics.Tracing.Ctf.CtfPropertyBag:GetBoolean(System.String):ubyte:this (FullOpts)
4 (3.57 % of base) : 71342.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
144 (3.45 % of base) : 170130.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
14 (3.43 % of base) : 187579.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
14 (3.43 % of base) : 167787.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
50 (3.41 % of base) : 260410.dasm - System.Net.Http.Http3RequestStream+Http3ReadStream+<DisposeAsync>d__9:MoveNext():this (FullOpts)
Top method improvements (percentages):
-28 (-8.92 % of base) : 265255.dasm - System.Diagnostics.ActivityContext:op_Inequality(System.Diagnostics.ActivityContext,System.Diagnostics.ActivityContext):ubyte (FullOpts)
-36 (-7.47 % of base) : 221502.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTime():System.Nullable`1[System.DateTime]:this (FullOpts)
-20 (-7.35 % of base) : 243754.dasm - System.ComponentModel.LookupBindingPropertiesAttribute:Equals(System.Object):ubyte:this (FullOpts)
-20 (-7.25 % of base) : 171751.dasm - System.Xml.Linq.XDocumentType:DeepEquals(System.Xml.Linq.XNode):ubyte:this (FullOpts)
-84 (-6.72 % of base) : 167354.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
-22 (-6.71 % of base) : 265307.dasm - System.Diagnostics.ActivityLink:op_Inequality(System.Diagnostics.ActivityLink,System.Diagnostics.ActivityLink):ubyte (FullOpts)
-314 (-6.66 % of base) : 169906.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
-22 (-6.55 % of base) : 155298.dasm - System.Xml.Xsl.Xslt.XslAstAnalyzer:AddImportDependencies(System.Xml.Xsl.Xslt.Stylesheet,System.Xml.Xsl.Xslt.Template):this (FullOpts)
-18 (-6.21 % of base) : 218997.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
-32 (-5.99 % of base) : 143075.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ubyte]:<ExecuteDeclaringReferenceActions>g__executeExecutableCodeActions|2():this (FullOpts)
-16 (-5.97 % of base) : 265306.dasm - System.Diagnostics.ActivityLink:op_Equality(System.Diagnostics.ActivityLink,System.Diagnostics.ActivityLink):ubyte (FullOpts)
-12 (-5.88 % of base) : 265254.dasm - System.Diagnostics.ActivityContext:op_Equality(System.Diagnostics.ActivityContext,System.Diagnostics.ActivityContext):ubyte (FullOpts)
-38 (-5.86 % of base) : 21669.dasm - Microsoft.FSharp.Quotations.DerivedPatternsModule:DecimalPattern(Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Core.FSharpOption`1[System.Decimal] (FullOpts)
-38 (-5.81 % of base) : 221504.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (FullOpts)
-46 (-5.78 % of base) : 221493.dasm - Newtonsoft.Json.JsonReader:ReadAsBytes():ubyte[]:this (FullOpts)
-4 (-5.71 % of base) : 61786.dasm - Microsoft.CodeAnalysis.CSharp.ObjectDisplay:ContainsNewLine(System.String):ubyte (FullOpts)
-24 (-5.71 % of base) : 172094.dasm - System.Xml.Linq.XNodeReader:GetAttribute(System.String):System.String:this (FullOpts)
-14 (-5.69 % of base) : 229228.dasm - System.Reflection.TypeLoading.RoAssemblyName:Equals(System.Reflection.TypeLoading.RoAssemblyName):ubyte:this (FullOpts)
-14 (-5.69 % of base) : 235815.dasm - System.Reflection.TypeLoading.RoAssemblyName:Equals(System.Reflection.TypeLoading.RoAssemblyName):ubyte:this (FullOpts)
-8 (-5.63 % of base) : 155628.dasm - System.Xml.Xsl.XsltOld.BuilderInfo:ValueAppend(System.String,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: 241721946 (overridden on cmd)
Total bytes of diff: 241684124 (overridden on cmd)
Total bytes of delta: -37822 (-0.02 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
398 : 378252.dasm (4.11 % of base)
272 : 177949.dasm (2.76 % of base)
266 : 132551.dasm (2.72 % of base)
264 : 128933.dasm (2.71 % of base)
252 : 188721.dasm (2.93 % of base)
246 : 219388.dasm (2.47 % of base)
242 : 386018.dasm (2.42 % of base)
236 : 724900.dasm (2.68 % of base)
224 : 339418.dasm (2.11 % of base)
216 : 490714.dasm (2.25 % of base)
214 : 549299.dasm (2.05 % of base)
190 : 167165.dasm (2.00 % of base)
186 : 466688.dasm (1.94 % of base)
182 : 271855.dasm (2.13 % of base)
176 : 170109.dasm (3.31 % of base)
172 : 254275.dasm (1.83 % of base)
170 : 302735.dasm (1.68 % of base)
170 : 545417.dasm (1.70 % of base)
164 : 68951.dasm (1.82 % of base)
158 : 178204.dasm (1.43 % of base)
Top file improvements (bytes):
-366 : 191092.dasm (-1.62 % of base)
-268 : 255102.dasm (-5.72 % of base)
-212 : 115432.dasm (-2.49 % of base)
-212 : 412260.dasm (-2.49 % of base)
-212 : 418106.dasm (-2.49 % of base)
-210 : 410727.dasm (-2.49 % of base)
-210 : 218376.dasm (-2.49 % of base)
-210 : 196703.dasm (-2.49 % of base)
-210 : 298426.dasm (-2.49 % of base)
-190 : 384579.dasm (-1.92 % of base)
-182 : 565933.dasm (-1.95 % of base)
-166 : 714756.dasm (-1.58 % of base)
-152 : 109614.dasm (-10.04 % of base)
-150 : 123534.dasm (-1.52 % of base)
-144 : 655950.dasm (-3.74 % of base)
-142 : 89958.dasm (-2.40 % of base)
-138 : 222594.dasm (-1.65 % of base)
-138 : 540185.dasm (-1.65 % of base)
-126 : 361701.dasm (-1.29 % of base)
-118 : 432459.dasm (-8.37 % of base)
100 total files with Code Size differences (60 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
398 (4.11 % of base) : 378252.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
272 (2.76 % of base) : 177949.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
266 (2.72 % of base) : 132551.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
264 (2.71 % of base) : 128933.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
252 (2.93 % of base) : 188721.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
246 (2.47 % of base) : 219388.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
242 (2.42 % of base) : 386018.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
236 (2.68 % of base) : 724900.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
224 (2.11 % of base) : 339418.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
216 (2.25 % of base) : 490714.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
214 (2.05 % of base) : 549299.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
190 (2.00 % of base) : 167165.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
186 (1.94 % of base) : 466688.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
182 (2.13 % of base) : 271855.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
176 (3.31 % of base) : 170109.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
172 (1.83 % of base) : 254275.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
170 (1.68 % of base) : 302735.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
170 (1.70 % of base) : 545417.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
164 (1.82 % of base) : 68951.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
158 (1.43 % of base) : 178204.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
Top method improvements (bytes):
-366 (-1.62 % of base) : 191092.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-268 (-5.72 % of base) : 255102.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (Tier0-FullOpts)
-212 (-2.49 % of base) : 115432.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-212 (-2.49 % of base) : 412260.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-212 (-2.49 % of base) : 418106.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-210 (-2.49 % of base) : 410727.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-210 (-2.49 % of base) : 218376.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-210 (-2.49 % of base) : 196703.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-210 (-2.49 % of base) : 298426.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-190 (-1.92 % of base) : 384579.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-182 (-1.95 % of base) : 565933.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-166 (-1.58 % of base) : 714756.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-152 (-10.04 % of base) : 109614.dasm - System.Number:TryNumberToDecimal(byref,byref):ubyte (Instrumented Tier1)
-150 (-1.52 % of base) : 123534.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-144 (-3.74 % of base) : 655950.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (Tier0-FullOpts)
-142 (-2.40 % of base) : 89958.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMethodGroupInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,byref):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-138 (-1.65 % of base) : 222594.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-138 (-1.65 % of base) : 540185.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-126 (-1.29 % of base) : 361701.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-118 (-8.37 % of base) : 432459.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithArrayPropertyHavingChoice:Write3_Item(System.String,System.String,SerializationTypes.TypeWithArrayPropertyHavingChoice,ubyte,ubyte):this (Tier0-FullOpts)
Top method regressions (percentages):
34 (20.00 % of base) : 363539.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
8 (12.50 % of base) : 432035.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
132 (8.47 % of base) : 177572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:Create(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder,Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (Tier1)
8 (8.16 % of base) : 171022.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
8 (8.16 % of base) : 185560.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
38 (7.95 % of base) : 83170.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:HasImplicitConstantExpressionConversion(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Tier1)
8 (7.27 % of base) : 171064.dasm - System.Reflection.TypeNameParser:Skip():this (Tier1)
26 (6.44 % of base) : 69673.dasm - System.Text.RegularExpressions.RegexCharClass:TryGetAsciiSetChars(System.String,byref):ubyte (Tier1)
26 (6.44 % of base) : 176774.dasm - System.Text.RegularExpressions.RegexCharClass:TryGetAsciiSetChars(System.String,byref):ubyte (Tier1)
20 (6.10 % of base) : 429380.dasm - System.Xml.Serialization.CodeGenerator:BeginMethod(System.Type,System.String,System.Type[],System.String[],int):this (Tier1)
32 (5.97 % of base) : 205921.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
20 (5.92 % of base) : 526828.dasm - System.Text.Unicode.Utf8:FromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int (Tier1)
8 (5.80 % of base) : 28281.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (Tier0-FullOpts)
8 (5.63 % of base) : 171066.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
46 (5.45 % of base) : 674480.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ContextAwareSyntax:DefaultSwitchLabel(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DefaultSwitchLabelSyntax:this (Tier1)
16 (5.33 % of base) : 430780.dasm - System.Xml.Serialization.StructModel:CheckPropertyRead(System.Reflection.PropertyInfo):ubyte (Tier1)
18 (5.14 % of base) : 516041.dasm - System.DateTimeParse:ParseDigits(byref,int,byref):ubyte (Tier1)
12 (4.96 % of base) : 188510.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (Tier0-FullOpts)
26 (4.89 % of base) : 700526.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
4 (4.76 % of base) : 141274.dasm - System.Xml.XmlReader:MoveToContent():int:this (Tier0-FullOpts)
Top method improvements (percentages):
-32 (-16.49 % of base) : 290667.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
-32 (-16.33 % of base) : 293543.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
-32 (-16.33 % of base) : 297072.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
-32 (-15.24 % of base) : 289318.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.dlgate.lambda14a.lambda14a.Foo,System.Object,System.Object):System.Object (FullOpts)
-32 (-15.24 % of base) : 297941.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.executeOrder.order01a.order01a.Parent,System.Object,int,int):System.Object (FullOpts)
-40 (-14.29 % of base) : 288575.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,int,System.Object):ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.cnstrctor007.cnstrctor007.MyType1 (FullOpts)
-16 (-13.33 % of base) : 102843.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-16 (-13.33 % of base) : 97845.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-16 (-13.33 % of base) : 293292.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-16 (-13.33 % of base) : 101718.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-16 (-13.33 % of base) : 282631.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-16 (-13.33 % of base) : 282484.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-16 (-13.33 % of base) : 296137.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
-16 (-13.33 % of base) : 102564.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
-16 (-13.33 % of base) : 102548.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-16 (-13.33 % of base) : 101150.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-36 (-13.14 % of base) : 282444.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass,System.Object,System.Object) (FullOpts)
-16 (-13.11 % of base) : 282629.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
-16 (-13.11 % of base) : 102479.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
-16 (-13.11 % of base) : 288614.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (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: 93043072 (overridden on cmd)
Total bytes of diff: 93030982 (overridden on cmd)
Total bytes of delta: -12090 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
256 : 11573.dasm (2.64 % of base)
168 : 121011.dasm (3.20 % of base)
144 : 83468.dasm (3.45 % of base)
102 : 296085.dasm (2.81 % of base)
68 : 128226.dasm (1.02 % of base)
62 : 128242.dasm (2.20 % of base)
60 : 297189.dasm (1.94 % of base)
60 : 297215.dasm (1.93 % of base)
60 : 171544.dasm (2.55 % of base)
60 : 297273.dasm (1.92 % of base)
60 : 297336.dasm (1.92 % of base)
56 : 152947.dasm (3.27 % of base)
56 : 20531.dasm (1.45 % of base)
56 : 259476.dasm (2.47 % of base)
54 : 155969.dasm (3.04 % of base)
52 : 278066.dasm (2.25 % of base)
52 : 5409.dasm (6.82 % of base)
50 : 128978.dasm (2.45 % of base)
50 : 131094.dasm (2.74 % of base)
48 : 128288.dasm (2.45 % of base)
Top file improvements (bytes):
-482 : 59580.dasm (-2.15 % of base)
-314 : 90092.dasm (-6.65 % of base)
-170 : 44439.dasm (-3.31 % of base)
-144 : 277848.dasm (-3.74 % of base)
-132 : 166116.dasm (-9.10 % of base)
-122 : 166313.dasm (-8.64 % of base)
-84 : 287912.dasm (-1.98 % of base)
-84 : 179886.dasm (-6.72 % of base)
-72 : 50560.dasm (-1.39 % of base)
-58 : 12477.dasm (-3.63 % of base)
-58 : 6633.dasm (-1.57 % of base)
-54 : 2980.dasm (-1.36 % of base)
-52 : 288215.dasm (-1.72 % of base)
-50 : 263066.dasm (-1.19 % of base)
-50 : 288321.dasm (-3.72 % of base)
-50 : 152833.dasm (-2.27 % of base)
-44 : 294978.dasm (-1.50 % of base)
-42 : 33330.dasm (-3.32 % of base)
-40 : 104284.dasm (-14.29 % of base)
-38 : 8924.dasm (-0.88 % of base)
78 total files with Code Size differences (39 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
256 (2.64 % of base) : 11573.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
168 (3.20 % of base) : 121011.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
144 (3.45 % of base) : 83468.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
102 (2.81 % of base) : 296085.dasm - System.Threading.Channels.Tests.ChannelTestBase+<ReadAllAsync_DualConcurrentEnumeration_AllItemsEnumerated>d__72:MoveNext():this (FullOpts)
68 (1.02 % of base) : 128226.dasm - System.IO.Pipelines.Tests.PipelineReaderWriterFacts+<ReaderShouldNotGetUnflushedBytesWithAppend>d__17:MoveNext():this (FullOpts)
62 (2.20 % of base) : 128242.dasm - System.IO.Pipelines.Tests.PipePoolTests+<AdvanceToEndReturnsAllButOneBlockIfWritingBeforeAdvance>d__1:MoveNext():this (FullOpts)
60 (1.93 % of base) : 297215.dasm - System.Threading.RateLimiting.Test.ConcurrencyLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
60 (1.94 % of base) : 297189.dasm - System.Threading.RateLimiting.Test.FixedWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
60 (1.92 % of base) : 297273.dasm - System.Threading.RateLimiting.Test.SlidingWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__8:MoveNext():this (FullOpts)
60 (1.92 % of base) : 297336.dasm - System.Threading.RateLimiting.Test.TokenBucketRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
60 (2.55 % of base) : 171544.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
56 (3.27 % of base) : 152947.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
56 (1.45 % of base) : 20531.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
56 (2.47 % of base) : 259476.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
54 (3.04 % of base) : 155969.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
52 (6.82 % of base) : 5409.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.MetadataTypeName+Key,System.__Canon]:TryGetValue(Microsoft.CodeAnalysis.MetadataTypeName+Key,byref):ubyte:this (FullOpts)
52 (2.25 % of base) : 278066.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1322_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
50 (2.45 % of base) : 128978.dasm - System.IO.Pipelines.Tests.PipeLengthTests+<LengthIsBasedOnPreviouslyExamined>d__10:MoveNext():this (FullOpts)
50 (2.74 % of base) : 131094.dasm - System.IO.Tests.MemoryStreamTests+<DerivedMemoryStream_ReadWriteAsyncMemoryCalled_ReadWriteAsyncArrayUsed>d__8:MoveNext():this (FullOpts)
48 (2.45 % of base) : 128288.dasm - System.IO.Pipelines.Tests.PipeWriterTests+<WriteLargeDataBinary>d__9:MoveNext():this (FullOpts)
Top method improvements (bytes):
-482 (-2.15 % of base) : 59580.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-314 (-6.65 % of base) : 90092.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
-170 (-3.31 % of base) : 44439.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
-144 (-3.74 % of base) : 277848.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
-132 (-9.10 % of base) : 166116.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1:Write2_wrapper(System.Object[]):this (FullOpts)
-122 (-8.64 % of base) : 166313.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithArrayPropertyHavingChoice:Write3_Item(System.String,System.String,SerializationTypes.TypeWithArrayPropertyHavingChoice,ubyte,ubyte):this (FullOpts)
-84 (-6.72 % of base) : 179886.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
-84 (-1.98 % of base) : 287912.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5582_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-72 (-1.39 % of base) : 50560.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
-58 (-1.57 % of base) : 6633.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDefaultArgumentsAndParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],byref,byref,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
-58 (-3.63 % of base) : 12477.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-54 (-1.36 % of base) : 2980.dasm - Microsoft.VisualStudio.Composition.ComposableCatalog:AddPart(Microsoft.VisualStudio.Composition.ComposablePartDefinition):Microsoft.VisualStudio.Composition.ComposableCatalog:this (FullOpts)
-52 (-1.72 % of base) : 288215.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5854_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-50 (-2.27 % of base) : 152833.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
-50 (-1.19 % of base) : 263066.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:EscapingTestWhileWriting(ushort,System.Text.Encodings.Web.JavaScriptEncoder,ubyte):this (FullOpts)
-50 (-3.72 % of base) : 288321.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5894_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-44 (-1.50 % of base) : 294978.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33194_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-42 (-3.32 % of base) : 33330.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
-40 (-14.29 % of base) : 104284.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,int,System.Object):ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.cnstrctor007.cnstrctor007.MyType1 (FullOpts)
-38 (-0.88 % of base) : 8924.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,ubyte,ubyte,ubyte,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
Top method regressions (percentages):
46 (9.62 % of base) : 216396.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)
18 (8.49 % of base) : 68366.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
18 (8.49 % of base) : 70464.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
52 (6.82 % of base) : 5409.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.MetadataTypeName+Key,System.__Canon]:TryGetValue(Microsoft.CodeAnalysis.MetadataTypeName+Key,byref):ubyte:this (FullOpts)
14 (6.03 % of base) : 116550.dasm - System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
8 (5.80 % of base) : 11897.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)
12 (4.96 % of base) : 58056.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
4 (4.76 % of base) : 42395.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
10 (4.72 % of base) : 166715.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterEnumFlags:Write2_EnumFlags(System.Object):this (FullOpts)
10 (4.67 % of base) : 164812.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterByteEnum:Write2_ByteEnum(System.Object):this (FullOpts)
10 (4.67 % of base) : 164831.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterIntEnum:Write2_IntEnum(System.Object):this (FullOpts)
10 (4.67 % of base) : 164804.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterMyEnum:Write2_MyEnum(System.Object):this (FullOpts)
10 (4.67 % of base) : 164838.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterUIntEnum:Write2_UIntEnum(System.Object):this (FullOpts)
10 (4.63 % of base) : 164820.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterSByteEnum:Write2_SByteEnum(System.Object):this (FullOpts)
10 (4.63 % of base) : 164827.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterShortEnum:Write2_ShortEnum(System.Object):this (FullOpts)
6 (4.62 % of base) : 47220.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
10 (4.59 % of base) : 164843.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterLongEnum:Write2_LongEnum(System.Object):this (FullOpts)
10 (4.59 % of base) : 164847.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterULongEnum:Write2_ULongEnum(System.Object):this (FullOpts)
10 (4.59 % of base) : 166069.dasm - System.Xml.Serialization.XmlSerializationPrimitiveWriter:Write_char(System.Object):this (FullOpts)
4 (4.35 % of base) : 22584.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
Top method improvements (percentages):
-32 (-16.49 % of base) : 103093.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
-32 (-16.33 % of base) : 108329.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
-32 (-16.33 % of base) : 107618.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
-32 (-15.24 % of base) : 102102.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.dlgate.lambda14a.lambda14a.Foo,System.Object,System.Object):System.Object (FullOpts)
-32 (-15.24 % of base) : 112866.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.executeOrder.order01a.order01a.Parent,System.Object,int,int):System.Object (FullOpts)
-18 (-14.75 % of base) : 25141.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-40 (-14.29 % of base) : 104284.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,int,System.Object):ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.cnstrctor007.cnstrctor007.MyType1 (FullOpts)
-18 (-14.06 % of base) : 101735.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):float (FullOpts)
-18 (-13.64 % of base) : 101682.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-16 (-13.33 % of base) : 27663.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-16 (-13.33 % of base) : 102835.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-16 (-13.33 % of base) : 104409.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-16 (-13.33 % of base) : 26523.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-16 (-13.33 % of base) : 103609.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-16 (-13.33 % of base) : 108701.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
-16 (-13.33 % of base) : 27479.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
-16 (-13.33 % of base) : 107572.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-16 (-13.33 % of base) : 28984.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-16 (-13.33 % of base) : 27462.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-36 (-13.14 % of base) : 108849.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass,System.Object,System.Object) (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: 13613084 (overridden on cmd)
Total bytes of diff: 13612640 (overridden on cmd)
Total bytes of delta: -444 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
58 : 17651.dasm (5.16 % of base)
56 : 19187.dasm (1.45 % of base)
54 : 32769.dasm (1.78 % of base)
52 : 20642.dasm (3.63 % of base)
52 : 20220.dasm (4.45 % of base)
46 : 20377.dasm (3.42 % of base)
42 : 2688.dasm (1.97 % of base)
42 : 543.dasm (2.15 % of base)
40 : 19046.dasm (0.58 % of base)
34 : 22987.dasm (1.86 % of base)
26 : 20073.dasm (3.98 % of base)
26 : 26876.dasm (1.35 % of base)
24 : 25234.dasm (1.71 % of base)
24 : 18606.dasm (3.06 % of base)
22 : 17650.dasm (1.87 % of base)
22 : 23144.dasm (1.47 % of base)
22 : 20379.dasm (2.17 % of base)
22 : 20489.dasm (2.22 % of base)
20 : 12910.dasm (0.80 % of base)
20 : 31865.dasm (1.78 % of base)
Top file improvements (bytes):
-76 : 12661.dasm (-0.84 % of base)
-62 : 30474.dasm (-2.08 % of base)
-58 : 36467.dasm (-0.73 % of base)
-52 : 7086.dasm (-3.85 % of base)
-44 : 17360.dasm (-1.16 % of base)
-44 : 5777.dasm (-0.93 % of base)
-40 : 23103.dasm (-1.94 % of base)
-40 : 37082.dasm (-4.11 % of base)
-34 : 28939.dasm (-1.42 % of base)
-32 : 29330.dasm (-0.77 % of base)
-30 : 25404.dasm (-0.66 % of base)
-30 : 28469.dasm (-3.04 % of base)
-26 : 23061.dasm (-1.16 % of base)
-26 : 28847.dasm (-2.69 % of base)
-26 : 31170.dasm (-0.61 % of base)
-24 : 29920.dasm (-3.64 % of base)
-24 : 7840.dasm (-0.54 % of base)
-22 : 28879.dasm (-2.23 % of base)
-22 : 30769.dasm (-3.27 % of base)
-22 : 28025.dasm (-1.21 % of base)
64 total files with Code Size differences (34 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
58 (5.16 % of base) : 17651.dasm - Microsoft.ML.Data.VBuffer`1[System.ReadOnlyMemory`1[ushort]]:CopyTo(byref):this (FullOpts)
56 (1.45 % of base) : 19187.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
54 (1.78 % of base) : 32769.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
52 (4.45 % of base) : 20220.dasm - Microsoft.ML.Data.TextLoader+VectorPipe`1+VectorValue[float]:Get(byref):this (FullOpts)
52 (3.63 % of base) : 20642.dasm - Microsoft.ML.Transforms.LpNormNormalizingTransformer+Mapper:FillValues(Microsoft.ML.Runtime.IExceptionContext,byref,byref,float,float,float) (FullOpts)
46 (3.42 % of base) : 20377.dasm - Microsoft.ML.Data.BufferBuilder`1[float]:GetResult(byref):this (FullOpts)
42 (1.97 % of base) : 2688.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
42 (2.15 % of base) : 543.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (0.58 % of base) : 19046.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
34 (1.86 % of base) : 22987.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
26 (1.35 % of base) : 26876.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
26 (3.98 % of base) : 20073.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:Copy[System.ReadOnlyMemory`1[ushort]](System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]],byref,int) (FullOpts)
24 (1.71 % of base) : 25234.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetUserDefinedBinaryOperatorsFromInterfaces(int,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]):ubyte:this (FullOpts)
24 (3.06 % of base) : 18606.dasm - Microsoft.ML.Data.VBuffer`1[double]:Copy(double[],int,byref,int) (FullOpts)
22 (1.47 % of base) : 23144.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:LoadAndValidateAttributes(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],byref,short,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]):ubyte:this (FullOpts)
22 (2.22 % of base) : 20489.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyIntoEitherDefined[float,float](byref,byref,System.Func`3[int,float,float]) (FullOpts)
22 (1.87 % of base) : 17650.dasm - Microsoft.ML.Transforms.HashingTransformer+<>c__DisplayClass44_0`2[System.ReadOnlyMemory`1[ushort],Microsoft.ML.Transforms.HashingTransformer+HashText]:<MakeVectorHashGetter>b__0(byref):this (FullOpts)
22 (2.17 % of base) : 20379.dasm - Microsoft.ML.Transforms.ValueToKeyMappingTransformer+BoundTermMap+Base`1+<>c__DisplayClass3_0[System.ReadOnlyMemory`1[ushort]]:<GetMappingGetter>b__1(byref):this (FullOpts)
20 (0.80 % of base) : 12910.dasm - FSharp.Compiler.ParseAndCheckInputs:ProcessMetaCommand@572[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.CompilerConfig+TcConfigBuilder,System.String,ubyte,System.__Canon,FSharp.Compiler.Syntax.ParsedHashDirective):System.__Canon (FullOpts)
20 (1.78 % of base) : 31865.dasm - Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter:GenerateSwitchBuckets(int,int):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter+SwitchBucket]:this (FullOpts)
Top method improvements (bytes):
-76 (-0.84 % of base) : 12661.dasm - FSharp.Compiler.Lexer:singleQuoteString(FSharp.Compiler.IO.ByteBuffer,FSharp.Compiler.Lexhelp+LexerStringFinisher,FSharp.Compiler.Text.Range,FSharp.Compiler.ParseHelpers+LexerStringKind,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
-62 (-2.08 % of base) : 30474.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-58 (-0.73 % of base) : 36467.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-52 (-3.85 % of base) : 7086.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-44 (-0.93 % of base) : 5777.dasm - FSharp.Compiler.CompilerOptions:attempt@284(Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOptionBlock],Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Collections.FSharpList`1[System.String],System.String,System.String,System.String,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOption]):Microsoft.FSharp.Collections.FSharpList`1[System.String] (FullOpts)
-44 (-1.16 % of base) : 17360.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
-40 (-1.94 % of base) : 23103.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
-40 (-4.11 % of base) : 37082.dasm - System.RuntimeType:ValidateGenericArguments(System.Reflection.MemberInfo,System.RuntimeType[],System.Exception) (FullOpts)
-34 (-1.42 % of base) : 28939.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArrayCreationWithInitializer(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte):Microsoft.CodeAnalysis.CSharp.BoundArrayCreation:this (FullOpts)
-32 (-0.77 % of base) : 29330.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindCatchBlock(Microsoft.CodeAnalysis.CSharp.Syntax.CatchClauseSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundCatchBlock],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundCatchBlock:this (FullOpts)
-30 (-3.04 % of base) : 28469.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:CheckMethodConstraints(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (FullOpts)
-30 (-0.66 % of base) : 25404.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-26 (-1.16 % of base) : 23061.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-26 (-0.61 % of base) : 31170.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BoundUnaryOperator):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-26 (-2.69 % of base) : 28847.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
-24 (-0.54 % of base) : 7840.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
-24 (-3.64 % of base) : 29920.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsMoveableVariable(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):ubyte:this (FullOpts)
-22 (-1.21 % of base) : 28025.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:ComputeBoundDecisionDagNodes(Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag,Microsoft.CodeAnalysis.CSharp.BoundLeafDecisionDagNode):this (FullOpts)
-22 (-2.23 % of base) : 28879.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackNullableStateOfTupleElements(int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],System.Collections.Immutable.ImmutableArray`1[int],ubyte):this (FullOpts)
-22 (-1.04 % of base) : 23238.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
Top method regressions (percentages):
8 (5.88 % of base) : 34353.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)
58 (5.16 % of base) : 17651.dasm - Microsoft.ML.Data.VBuffer`1[System.ReadOnlyMemory`1[ushort]]:CopyTo(byref):this (FullOpts)
6 (4.62 % of base) : 33782.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
52 (4.45 % of base) : 20220.dasm - Microsoft.ML.Data.TextLoader+VectorPipe`1+VectorValue[float]:Get(byref):this (FullOpts)
4 (4.35 % of base) : 22485.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
26 (3.98 % of base) : 20073.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:Copy[System.ReadOnlyMemory`1[ushort]](System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]],byref,int) (FullOpts)
52 (3.63 % of base) : 20642.dasm - Microsoft.ML.Transforms.LpNormNormalizingTransformer+Mapper:FillValues(Microsoft.ML.Runtime.IExceptionContext,byref,byref,float,float,float) (FullOpts)
46 (3.42 % of base) : 20377.dasm - Microsoft.ML.Data.BufferBuilder`1[float]:GetResult(byref):this (FullOpts)
2 (3.33 % of base) : 30767.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
24 (3.06 % of base) : 18606.dasm - Microsoft.ML.Data.VBuffer`1[double]:Copy(double[],int,byref,int) (FullOpts)
6 (2.65 % of base) : 3455.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
4 (2.56 % of base) : 27985.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
2 (2.56 % of base) : 26576.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:ContainsDroppedIdentifierCharacters(System.String):ubyte (FullOpts)
22 (2.22 % of base) : 20489.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyIntoEitherDefined[float,float](byref,byref,System.Func`3[int,float,float]) (FullOpts)
22 (2.17 % of base) : 20379.dasm - Microsoft.ML.Transforms.ValueToKeyMappingTransformer+BoundTermMap+Base`1+<>c__DisplayClass3_0[System.ReadOnlyMemory`1[ushort]]:<GetMappingGetter>b__1(byref):this (FullOpts)
42 (2.15 % of base) : 543.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
18 (2.11 % of base) : 22962.dasm - Microsoft.CodeAnalysis.PEModule:GetMetadataModuleNamesOrThrow():System.Collections.Immutable.ImmutableArray`1[System.String]:this (FullOpts)
42 (1.97 % of base) : 2688.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
10 (1.92 % of base) : 29772.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSetFactory`2[ushort,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+CharTC]:Related(int,ushort):Microsoft.CodeAnalysis.CSharp.IValueSet`1[ushort]:this (FullOpts)
10 (1.92 % of base) : 29714.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSetFactory`2[ushort,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+UShortTC]:Related(int,ushort):Microsoft.CodeAnalysis.CSharp.IValueSet`1[ushort]:this (FullOpts)
Top method improvements (percentages):
-6 (-4.17 % of base) : 16098.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
-40 (-4.11 % of base) : 37082.dasm - System.RuntimeType:ValidateGenericArguments(System.Reflection.MemberInfo,System.RuntimeType[],System.Exception) (FullOpts)
-52 (-3.85 % of base) : 7086.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-24 (-3.64 % of base) : 29920.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsMoveableVariable(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):ubyte:this (FullOpts)
-20 (-3.53 % of base) : 3365.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-22 (-3.27 % of base) : 30769.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-30 (-3.04 % of base) : 28469.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:CheckMethodConstraints(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (FullOpts)
-2 (-2.86 % of base) : 25190.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
-4 (-2.82 % of base) : 3080.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-26 (-2.69 % of base) : 28847.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
-12 (-2.63 % of base) : 19740.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (FullOpts)
-12 (-2.50 % of base) : 3859.dasm - Microsoft.FSharp.Core.CompilerServices.ListCollector`1[System.__Canon]:AddMany(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
-20 (-2.29 % of base) : 30444.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:GetTupleLiteralConversion(Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionsBase+ClassifyConversionFromExpressionDelegate,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (FullOpts)
-12 (-2.28 % of base) : 5670.dasm - Microsoft.FSharp.Core.CompilerServices.ArrayCollector`1[System.__Canon]:AddMany(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
-6 (-2.24 % of base) : 3843.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-22 (-2.23 % of base) : 28879.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackNullableStateOfTupleElements(int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],System.Collections.Immutable.ImmutableArray`1[int],ubyte):this (FullOpts)
-8 (-2.17 % of base) : 33731.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (FullOpts)
-2 (-2.17 % of base) : 35579.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
-2 (-2.17 % of base) : 35069.dasm - System.Management.Automation.DisplayEntry:.ctor(System.String,int):this (FullOpts)
-2 (-2.17 % of base) : 37144.dasm - System.Management.Automation.WildcardPattern:ContainsWildcardCharacters(System.String):ubyte (FullOpts)
Diffs are based on 2,297,926 contexts (841,817 MinOpts, 1,456,109 FullOpts).
MISSED contexts: base: 2,090 (0.09%), diff: 3,444 (0.15%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.windows.x86.checked.mch | 7,079,626 | +1,815 |
benchmarks.run_pgo.windows.x86.checked.mch | 43,693,213 | -14,646 |
benchmarks.run_tiered.windows.x86.checked.mch | 9,483,002 | +744 |
coreclr_tests.run.windows.x86.checked.mch | 308,689,527 | -81,235 |
libraries.crossgen2.windows.x86.checked.mch | 31,589,655 | -1,698 |
libraries.pmi.windows.x86.checked.mch | 48,705,820 | -7,539 |
libraries_tests.run.windows.x86.Release.mch | 185,057,062 | -59,640 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 102,009,413 | -13,900 |
realworld.run.windows.x86.checked.mch | 11,326,284 | -2,995 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.windows.x86.checked.mch | 7,079,347 | +1,815 |
benchmarks.run_pgo.windows.x86.checked.mch | 37,063,723 | -14,646 |
benchmarks.run_tiered.windows.x86.checked.mch | 5,213,193 | +744 |
coreclr_tests.run.windows.x86.checked.mch | 107,017,758 | -81,235 |
libraries.crossgen2.windows.x86.checked.mch | 31,588,598 | -1,698 |
libraries.pmi.windows.x86.checked.mch | 48,610,506 | -7,539 |
libraries_tests.run.windows.x86.Release.mch | 86,725,555 | -59,640 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 93,339,621 | -13,900 |
realworld.run.windows.x86.checked.mch | 11,030,584 | -2,995 |
@@ -13,7 +13,7 @@
; V02 loc0 [V02,T03] ( 15, 20.04) int -> [ebp-0x10]
; V03 loc1 [V03,T02] ( 11, 23.50) int -> [ebp-0x14]
; V04 tmp0 [V04,T08] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V05 tmp1 [V05,T01] ( 4, 24 ) ushort -> edx "Inlining Arg"
+; V05 tmp1 [V05,T01] ( 4, 24 ) ushort -> ecx "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V13 tmp9 [V13,T07] ( 4, 4 ) ubyte -> eax "Inline return value spill temp"
-; V14 tmp10 [V14,T00] ( 8, 24 ) ushort -> eax "Inlining Arg"
+; V14 tmp10 [V14,T00] ( 8, 24 ) ushort -> ecx "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -73,139 +73,117 @@ G_M50035_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [esi+0x04]
lea eax, [ebx-0x01]
mov dword ptr [ebp-0x10], eax
- xor ecx, ecx
+ xor edx, edx
test edi, 1
- mov dword ptr [ebp-0x14], ecx
- je SHORT G_M50035_IG10
- ;; size=22 bbWeight=1 PerfScore 6.00
+ je SHORT G_M50035_IG09
+ ;; size=19 bbWeight=1 PerfScore 5.00
G_M50035_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- xor ecx, ecx
+ xor edx, edx
test ebx, ebx
- jle SHORT G_M50035_IG07
+ jle SHORT G_M50035_IG09
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M50035_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- movzx edx, word ptr [esi+2*ecx+0x08]
- cmp edx, 256
- jb SHORT G_M50035_IG08
- ;; size=13 bbWeight=4 PerfScore 13.00
+ mov dword ptr [ebp-0x14], edx
+ movzx ecx, word ptr [esi+2*edx+0x08]
+ cmp ecx, 256
+ jb SHORT G_M50035_IG07
+ ;; size=16 bbWeight=4 PerfScore 17.00
G_M50035_IG05: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- mov ecx, edx
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG10
- ;; size=15 bbWeight=2 PerfScore 11.00
-G_M50035_IG06: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [ebp-0x14]
+ je SHORT G_M50035_IG06
+ jmp SHORT G_M50035_IG08
+ ;; size=12 bbWeight=2 PerfScore 12.50
+G_M50035_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x14]
jmp SHORT G_M50035_IG09
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M50035_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG10
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG08: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [edx+D1FFAB1EH], 128
- je SHORT G_M50035_IG17
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M50035_IG15
;; size=9 bbWeight=2 PerfScore 8.00
-G_M50035_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- mov dword ptr [ebp-0x14], ecx
- cmp ebx, ecx
- jg SHORT G_M50035_IG16
+G_M50035_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x14]
+ inc edx
+ cmp ebx, edx
+ jg SHORT G_M50035_IG04
;; size=8 bbWeight=4 PerfScore 10.00
-G_M50035_IG10: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M50035_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test edi, 2
mov edi, dword ptr [ebp-0x10]
- je G_M50035_IG27
- ;; size=15 bbWeight=1 PerfScore 2.25
-G_M50035_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M50035_IG14
+ ;; size=11 bbWeight=1 PerfScore 2.25
+G_M50035_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea eax, [ebx-0x01]
mov edi, eax
- mov ecx, dword ptr [ebp-0x14]
- cmp edi, ecx
- jl SHORT G_M50035_IG15
- mov eax, edi
- or eax, ecx
- jl SHORT G_M50035_IG22
+ cmp edi, edx
+ jl SHORT G_M50035_IG13
+ mov dword ptr [ebp-0x14], edx
+ mov ecx, edi
+ or ecx, edx
+ jl SHORT G_M50035_IG18
cmp ebx, edi
- jle SHORT G_M50035_IG22
+ jle SHORT G_M50035_IG18
;; size=22 bbWeight=0.50 PerfScore 2.88
-G_M50035_IG12: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [esi+2*edi+0x08]
- cmp eax, 256
- jb SHORT G_M50035_IG18
- ;; size=12 bbWeight=3.96 PerfScore 12.87
-G_M50035_IG13: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- mov ecx, eax
+G_M50035_IG11: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, word ptr [esi+2*edi+0x08]
+ cmp ecx, 256
+ jb SHORT G_M50035_IG16
+ ;; size=13 bbWeight=3.96 PerfScore 12.87
+G_M50035_IG12: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG27
- ;; size=15 bbWeight=1.98 PerfScore 10.89
-G_M50035_IG14: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M50035_IG19
- ;; size=5 bbWeight=3.96 PerfScore 11.88
-G_M50035_IG15: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG27
+ je SHORT G_M50035_IG22
+ jmp SHORT G_M50035_IG17
+ ;; size=12 bbWeight=1.98 PerfScore 12.38
+G_M50035_IG13: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x14], edx
+ jmp SHORT G_M50035_IG22
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG16: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov ecx, dword ptr [ebp-0x14]
- jmp G_M50035_IG04
- ;; size=8 bbWeight=2 PerfScore 6.00
-G_M50035_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG10
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M50035_IG18: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [eax+D1FFAB1EH], 128
- je SHORT G_M50035_IG21
- ;; size=9 bbWeight=1.98 PerfScore 7.92
-G_M50035_IG19: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- dec edi
- mov dword ptr [ebp-0x14], ecx
- cmp edi, ecx
- mov ecx, dword ptr [ebp-0x14]
- jge SHORT G_M50035_IG12
- ;; size=11 bbWeight=3.96 PerfScore 13.86
-G_M50035_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG27
+G_M50035_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x14], edx
+ jmp SHORT G_M50035_IG22
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M50035_IG21: ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG27
- ;; size=5 bbWeight=0.99 PerfScore 2.97
-G_M50035_IG22: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG15: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x14]
+ jmp SHORT G_M50035_IG09
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG16: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M50035_IG22
+ ;; size=9 bbWeight=1.98 PerfScore 7.92
+G_M50035_IG17: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ dec edi
+ mov edx, dword ptr [ebp-0x14]
+ cmp edi, edx
+ jge SHORT G_M50035_IG11
+ jmp SHORT G_M50035_IG22
+ ;; size=10 bbWeight=3.96 PerfScore 17.82
+G_M50035_IG18: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae SHORT G_M50035_IG31
- movzx eax, word ptr [esi+2*edi+0x08]
- cmp eax, 256
- jb SHORT G_M50035_IG25
- ;; size=16 bbWeight=0.04 PerfScore 0.18
-G_M50035_IG23: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- mov ecx, eax
+ jae SHORT G_M50035_IG24
+ movzx ecx, word ptr [esi+2*edi+0x08]
+ cmp ecx, 256
+ jb SHORT G_M50035_IG20
+ ;; size=17 bbWeight=0.04 PerfScore 0.18
+G_M50035_IG19: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG27
- ;; size=15 bbWeight=0.02 PerfScore 0.11
-G_M50035_IG24: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M50035_IG26
- ;; size=5 bbWeight=0.04 PerfScore 0.12
-G_M50035_IG25: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [eax+D1FFAB1EH], 128
- je SHORT G_M50035_IG30
+ je SHORT G_M50035_IG22
+ jmp SHORT G_M50035_IG21
+ ;; size=12 bbWeight=0.02 PerfScore 0.13
+G_M50035_IG20: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M50035_IG22
;; size=9 bbWeight=0.02 PerfScore 0.08
-G_M50035_IG26: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG21: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
dec edi
- mov dword ptr [ebp-0x14], ecx
- cmp edi, ecx
- jge SHORT G_M50035_IG29
- ;; size=8 bbWeight=0.04 PerfScore 0.10
-G_M50035_IG27: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, dword ptr [ebp-0x14]
+ cmp edi, edx
+ mov dword ptr [ebp-0x14], edx
+ jge SHORT G_M50035_IG18
+ ;; size=11 bbWeight=0.04 PerfScore 0.14
+G_M50035_IG22: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
push edi
mov ecx, esi
; gcrRegs +[ecx]
@@ -213,7 +191,7 @@ G_M50035_IG27: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [System.String:CreateTrimmedString(int,int):System.String:this]
; gcrRegs -[ecx esi] +[eax]
;; size=12 bbWeight=1 PerfScore 5.25
-G_M50035_IG28: ; bbWeight=1, epilog, nogc, extend
+G_M50035_IG23: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
...
@@ -39,11 +39,11 @@ G_M33320_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
sub esp, 12
mov eax, ecx
;; size=11 bbWeight=1 PerfScore 4.75
-G_M33320_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M33320_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx]
test edx, edx
- je G_M33320_IG11
- ;; size=8 bbWeight=1 PerfScore 1.25
+ je SHORT G_M33320_IG10
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M33320_IG03: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V01}
@@ -51,7 +51,7 @@ G_M33320_IG03: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000
mov dword ptr [ebp-0x14], esi
cmp esi, eax
mov edx, gword ptr [ebp-0x18]
- je SHORT G_M33320_IG11
+ je SHORT G_M33320_IG10
mov edi, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[edi]
add edi, 8
@@ -83,50 +83,41 @@ G_M33320_IG05: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000084 {e
mov esi, dword ptr [ebp-0x10]
xor esi, dword ptr [edx+0x08]
cmp esi, 1
- jbe SHORT G_M33320_IG08
+ jbe SHORT G_M33320_IG07
;; size=11 bbWeight=2 PerfScore 10.50
G_M33320_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
; byrRegs -[edx]
test eax, eax
- je SHORT G_M33320_IG09
+ je SHORT G_M33320_IG08
inc ecx
add ebx, ecx
and ebx, dword ptr [edi+0x04]
cmp ecx, 8
jl SHORT G_M33320_IG04
- ;; size=15 bbWeight=4 PerfScore 24.00
-G_M33320_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edi]
- mov eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x18]
- ; gcrRegs +[edx]
- mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x18], edx
- jmp SHORT G_M33320_IG09
- ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
+ jmp SHORT G_M33320_IG08
+ ;; size=17 bbWeight=4 PerfScore 32.00
+G_M33320_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
+ ; byrRegs -[edi] +[edx]
cmp eax, dword ptr [edx]
- jne SHORT G_M33320_IG09
- jmp SHORT G_M33320_IG10
+ jne SHORT G_M33320_IG08
+ jmp SHORT G_M33320_IG09
;; size=6 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33320_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[edx]
mov esi, 2
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33320_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp esi, 1
mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
- jne SHORT G_M33320_IG13
+ jne SHORT G_M33320_IG12
;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M33320_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M33320_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V01}
mov eax, edx
; gcrRegs +[eax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG11: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -134,7 +125,7 @@ G_M33320_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M33320_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33320_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
mov eax, dword ptr [ebp-0x10]
mov ecx, eax
@@ -143,7 +134,7 @@ G_M33320_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
mov edi, eax
; gcrRegs +[edi]
test esi, esi
- jne SHORT G_M33320_IG14
+ jne SHORT G_M33320_IG13
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -151,11 +142,11 @@ G_M33320_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
call [<unknown method>]
; gcrRegs -[eax ecx edx]
;; size=32 bbWeight=0.50 PerfScore 3.62
-G_M33320_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M33320_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov eax, edi
; gcrRegs +[eax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG14: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -164,6 +155,6 @@ G_M33320_IG15: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 201, prolog size 11, PerfScore 99.00, instruction count 80, allocated bytes for code 201 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
+; Total bytes of code 185, prolog size 11, PerfScore 104.00, instruction count 76, allocated bytes for code 185 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
; ============================================================
@@ -77,7 +77,7 @@
;* V66 tmp60 [V66,T34] ( 0, 0 ) ref -> zero-ref single-def "field V07._obj (fldOffset=0x0)" P-INDEP
;* V67 tmp61 [V67,T40] ( 0, 0 ) short -> zero-ref single-def "field V07._token (fldOffset=0x4)" P-INDEP
;* V68 tmp62 [V68,T41] ( 0, 0 ) ubyte -> zero-ref single-def "field V07._continueOnCapturedContext (fldOffset=0x6)" P-INDEP
-; V69 tmp63 [V69,T32] ( 2, 1 ) ubyte -> ecx single-def "field V07._result (fldOffset=0x7)" P-INDEP
+; V69 tmp63 [V69,T32] ( 2, 1 ) ubyte -> edx single-def "field V07._result (fldOffset=0x7)" P-INDEP
; V70 tmp64 [V70 ] ( 6, 3.50) ref -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V08._source (fldOffset=0x0)" P-DEP
;* V71 tmp65 [V71 ] ( 0, 0 ) long -> zero-ref single-def "field V11._id (fldOffset=0x0)" P-INDEP
;* V72 tmp66 [V72 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._node (fldOffset=0x8)" P-INDEP
@@ -144,7 +144,7 @@ G_M5050_IG02: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0
; gcrRegs +[edx]
mov gword ptr [ebp-0x14], edx
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M5050_IG25
+ je G_M5050_IG26
;; size=38 bbWeight=1 PerfScore 14.75
G_M5050_IG03: ; bbWeight=1, gcVars=0000000000000001 {V09}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C2 {ecx esi edi}, gcvars, byref
; gcrRegs -[edx]
@@ -153,11 +153,11 @@ G_M5050_IG03: ; bbWeight=1, gcVars=0000000000000001 {V09}, gcrefRegs=0000
cmp gword ptr [ebp-0x14], 0
je G_M5050_IG05
;; size=16 bbWeight=1 PerfScore 5.00
-G_M5050_IG04: ; bbWeight=0.50, gcrefRegs=0000000C {edx ebx}, byrefRegs=000000C2 {ecx esi edi}, byref
+G_M5050_IG04: ; bbWeight=0.50, gcrefRegs=0000000C {edx ebx}, byrefRegs=000000C2 {ecx esi edi}, byref, isz
test byte ptr [ecx+0x0C], 5
- jne G_M5050_IG18
+ jne G_M5050_IG11
test edx, edx
- je G_M5050_IG26
+ je G_M5050_IG27
mov eax, gword ptr [ebp-0x14]
; gcrRegs +[eax]
push edx
@@ -195,28 +195,28 @@ G_M5050_IG04: ; bbWeight=0.50, gcrefRegs=0000000C {edx ebx}, byrefRegs=00
mov edx, gword ptr [eax+0x18]
; gcrRegs +[edx]
test edx, edx
- jne G_M5050_IG17
+ jne G_M5050_IG10
mov edx, dword ptr [ebp-0x2C]
; gcrRegs -[edx]
or edx, dword ptr [ebp-0x28]
- jne G_M5050_IG16
+ jne G_M5050_IG09
cmp gword ptr [ebp-0x14], 0
- je G_M5050_IG15
+ je SHORT G_M5050_IG08
mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
cmp dword ptr [edx+0x10], 0
mov ecx, eax
; byrRegs +[ecx]
- jne G_M5050_IG27
- ;; size=128 bbWeight=0.50 PerfScore 22.00
-G_M5050_IG05: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=000000C2 {ecx esi edi}, byref
+ jne G_M5050_IG28
+ ;; size=124 bbWeight=0.50 PerfScore 22.00
+G_M5050_IG05: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=000000C2 {ecx esi edi}, byref, isz
; gcrRegs -[edx]
; byrRegs -[eax]
or dword ptr [ecx+0x0C], 2
test byte ptr [ebx+0x7C], 5
- je G_M5050_IG20
- ;; size=14 bbWeight=1 PerfScore 7.00
-G_M5050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, gcvars, byref
+ je SHORT G_M5050_IG12
+ ;; size=10 bbWeight=1 PerfScore 7.00
+G_M5050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz
; byrRegs -[ecx]
; GC ptr vars -{V09}
xor edx, edx
@@ -238,25 +238,72 @@ G_M5050_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000
lea ecx, bword ptr [ebx+0x94]
; byrRegs +[ecx]
cmp gword ptr [ecx], 0
- jne G_M5050_IG19
- ;; size=58 bbWeight=0.50 PerfScore 7.75
-G_M5050_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, byref
+ je SHORT G_M5050_IG07
+ mov ecx, gword ptr [ecx]
+ ; gcrRegs +[ecx]
; byrRegs -[ecx]
- movzx ecx, dl
- xor edx, edx
- ; gcrRegs +[edx]
- mov gword ptr [edi], edx
+ cmp dword ptr [ecx], 0xD1FFAB1E
+ je G_M5050_IG29
+ movzx edx, dl
+ or edx, 2
+ ;; size=74 bbWeight=0.50 PerfScore 11.00
+G_M5050_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, byref, isz
+ ; gcrRegs -[ecx]
+ xor ecx, ecx
+ ; gcrRegs +[ecx]
+ mov gword ptr [edi], ecx
mov word ptr [edi+0x04], 0
mov byte ptr [edi+0x06], 1
- mov byte ptr [edi+0x07], cl
- ;; size=20 bbWeight=0.50 PerfScore 2.25
-G_M5050_IG08: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, byref
- ; gcrRegs -[edx]
+ mov byte ptr [edi+0x07], dl
+ jmp SHORT G_M5050_IG13
+ ;; size=19 bbWeight=0.50 PerfScore 3.12
+G_M5050_IG08: ; bbWeight=0.25, gcVars=0000000000000001 {V09}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C1 {eax esi edi}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ ; byrRegs +[eax]
+ ; GC ptr vars +{V00 V09}
+ mov ecx, eax
+ ; byrRegs +[ecx]
+ jmp SHORT G_M5050_IG05
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M5050_IG09: ; bbWeight=0.25, gcrefRegs=00000008 {ebx}, byrefRegs=000000C1 {eax esi edi}, byref, isz
+ ; byrRegs -[ecx]
+ mov ecx, eax
+ ; byrRegs +[ecx]
+ jmp SHORT G_M5050_IG05
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M5050_IG10: ; bbWeight=0.25, gcrefRegs=00000008 {ebx}, byrefRegs=000000C1 {eax esi edi}, byref, isz
+ ; byrRegs -[ecx]
+ mov ecx, eax
+ ; byrRegs +[ecx]
+ jmp SHORT G_M5050_IG05
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M5050_IG11: ; bbWeight=0.25, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, byref, isz
+ ; byrRegs -[eax ecx]
+ mov ecx, bword ptr [ebp-0x34]
+ ; byrRegs +[ecx]
+ jmp SHORT G_M5050_IG05
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M5050_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, gcvars, byref
+ ; byrRegs -[ecx]
+ ; GC ptr vars -{V00 V09}
+ mov ecx, gword ptr [ebx+0x20]
+ ; gcrRegs +[ecx]
+ test ecx, ecx
+ je G_M5050_IG30
+ mov edx, edi
+ ; byrRegs +[edx]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF_ECX
+ ; gcrRegs -[ecx]
+ ; byrRegs -[edx]
+ mov word ptr [edi+0x04], 0
+ mov word ptr [edi+0x06], 1
+ ;; size=30 bbWeight=0.50 PerfScore 3.25
+G_M5050_IG13: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, byref, isz
; byrRegs -[edi]
cmp dword ptr [ebp-0x10], 0
- je G_M5050_IG23
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M5050_IG09: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, byref
+ je SHORT G_M5050_IG24
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M5050_IG14: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, byref, isz
add ebx, 84
; gcrRegs -[ebx]
; byrRegs +[ebx]
@@ -269,25 +316,39 @@ G_M5050_IG09: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=000000
mov edx, gword ptr [ebx+0x08]
; gcrRegs +[edx]
test edx, edx
- jne G_M5050_IG21
+ jne SHORT G_M5050_IG15
xor edi, edi
; gcrRegs +[edi]
+ jmp SHORT G_M5050_IG16
+ ;; size=22 bbWeight=0.50 PerfScore 5.38
+G_M5050_IG15: ; bbWeight=0.50, gcVars=0000000008000000 {V49}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000048 {ebx esi}, gcvars, byref, isz
+ ; gcrRegs -[eax edi]
+ mov edi, gword ptr [edx+0x08]
+ ; gcrRegs +[edi]
+ jmp SHORT G_M5050_IG17
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M5050_IG16: ; bbWeight=0.50, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000048 {ebx esi}, byref, isz
+ ; gcrRegs -[edx]
xor edx, edx
- ;; size=26 bbWeight=0.50 PerfScore 4.50
-G_M5050_IG10: ; bbWeight=0.50, gcVars=0000000008000000 {V49}, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, gcvars, byref
- ; gcrRegs -[eax]
+ ; gcrRegs +[edx]
+ jmp SHORT G_M5050_IG18
+ ;; size=4 bbWeight=0.50 PerfScore 1.12
+G_M5050_IG17: ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
+ mov edx, gword ptr [edx+0x04]
+ ;; size=3 bbWeight=0.50 PerfScore 1.00
+G_M5050_IG18: ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
xor eax, eax
; gcrRegs +[eax]
mov gword ptr [ebx], eax
;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M5050_IG11: ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
+G_M5050_IG19: ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
; gcrRegs -[eax]
mov gword ptr [ebx+0x04], eax
;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M5050_IG12: ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
+G_M5050_IG20: ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref, isz
mov gword ptr [ebx+0x08], eax
test ecx, ecx
- jne G_M5050_IG22
+ jne SHORT G_M5050_IG21
xor eax, eax
; gcrRegs +[eax]
xor ecx, ecx
@@ -295,8 +356,18 @@ G_M5050_IG12: ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefReg
xor edx, edx
mov gword ptr [ebp-0x3C], edx
; GC ptr vars +{V91}
- ;; size=22 bbWeight=0.50 PerfScore 2.12
-G_M5050_IG13: ; bbWeight=0.50, gcVars=0000000000800000 {V91}, gcrefRegs=00000083 {eax ecx edi}, byrefRegs=00000048 {ebx esi}, gcvars, byref
+ jmp SHORT G_M5050_IG22
+ ;; size=20 bbWeight=0.50 PerfScore 3.12
+G_M5050_IG21: ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars -{V91}
+ mov eax, ecx
+ ; gcrRegs +[eax]
+ mov ecx, gword ptr [ebp-0x38]
+ mov gword ptr [ebp-0x3C], edx
+ ; GC ptr vars +{V91}
+ ;; size=8 bbWeight=0.50 PerfScore 1.12
+G_M5050_IG22: ; bbWeight=0.50, gcVars=0000000000800000 {V91}, gcrefRegs=00000083 {eax ecx edi}, byrefRegs=00000048 {ebx esi}, gcvars, byref
; gcrRegs -[edx]
; GC ptr vars -{V49}
mov edx, esi
@@ -324,7 +395,7 @@ G_M5050_IG13: ; bbWeight=0.50, gcVars=0000000000800000 {V91}, gcrefRegs=0
; byrRegs -[edx esi]
or dword ptr [ebx+0x0C], 1
;; size=38 bbWeight=0.50 PerfScore 4.88
-G_M5050_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M5050_IG23: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -332,86 +403,15 @@ G_M5050_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M5050_IG15: ; bbWeight=0.25, gcVars=0000000000000001 {V09}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C1 {eax esi edi}, gcvars, byref
- ; gcrRegs +[ebx]
- ; byrRegs -[ebx] +[eax esi edi]
- ; GC ptr vars +{V00 V09}
- mov ecx, eax
- ; byrRegs +[ecx]
- jmp G_M5050_IG05
- ;; size=7 bbWeight=0.25 PerfScore 0.56
-G_M5050_IG16: ; bbWeight=0.25, gcrefRegs=00000008 {ebx}, byrefRegs=000000C1 {eax esi edi}, byref
- ; byrRegs -[ecx]
- mov ecx, eax
...
1[ushort],System.ReadOnlySpan
1[ushort]):System.ReadOnlySpan`1ushort@@ -15,8 +15,8 @@
; V04 loc1 [V04,T00] ( 5, 84 ) int -> eax
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V06 tmp1 [V06,T08] ( 3, 3 ) int -> edi "Inlining Arg"
-; V07 tmp2 [V07,T09] ( 2, 2 ) byref -> ebx single-def "Inlining Arg"
-; V08 tmp3 [V08,T10] ( 2, 1 ) byref -> ebx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp2 [V07,T09] ( 2, 2 ) byref -> esi single-def "Inlining Arg"
+; V08 tmp3 [V08,T10] ( 2, 1 ) byref -> esi single-def "field V05._reference (fldOffset=0x0)" P-INDEP
; V09 tmp4 [V09,T11] ( 2, 1 ) int -> edi "field V05._length (fldOffset=0x4)" P-INDEP
; V10 tmp5 [V10,T05] ( 5, 6.50) int -> edi "V01.[004..008)"
; V11 tmp6 [V11,T03] ( 4, 22 ) int -> ebx "V02.[004..008)"
@@ -62,12 +62,12 @@ G_M16324_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; byrRegs +[esi]
xor ecx, ecx
test edi, edi
- jle SHORT G_M16324_IG11
+ jle SHORT G_M16324_IG10
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M16324_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
xor eax, eax
test ebx, ebx
- jle SHORT G_M16324_IG11
+ jle SHORT G_M16324_IG09
mov edx, bword ptr [ebp+0x10]
; byrRegs +[edx]
movzx edx, word ptr [edx+2*ecx]
@@ -82,44 +82,52 @@ G_M16324_IG07: ; bbWeight=32, gcVars=00000080 {V00}, gcrefRegs=00000000 {
movzx esi, word ptr [esi+2*eax]
; byrRegs -[esi]
cmp esi, edx
- je SHORT G_M16324_IG10
+ je SHORT G_M16324_IG11
;; size=11 bbWeight=32 PerfScore 136.00
G_M16324_IG08: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc eax
cmp eax, ebx
jl SHORT G_M16324_IG07
- ;; size=5 bbWeight=16 PerfScore 24.00
-G_M16324_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov esi, bword ptr [ebp-0x10]
+ jmp SHORT G_M16324_IG12
+ ;; size=7 bbWeight=16 PerfScore 56.00
+G_M16324_IG09: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; byrRegs +[esi]
- jmp SHORT G_M16324_IG11
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M16324_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; GC ptr vars -{V00}
+ mov bword ptr [ebp-0x10], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M16324_IG12
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG10: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ ; GC ptr vars -{V00}
+ mov bword ptr [ebp-0x10], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M16324_IG12
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M16324_IG11: ; bbWeight=4, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi]
inc ecx
cmp ecx, edi
- mov esi, bword ptr [ebp-0x10]
- ; byrRegs +[esi]
- jl SHORT G_M16324_IG06
- ;; size=8 bbWeight=4 PerfScore 10.00
-G_M16324_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; GC ptr vars -{V00}
+ jl SHORT G_M16324_IG14
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M16324_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ecx, edi
- ja SHORT G_M16324_IG13
+ ja SHORT G_M16324_IG15
mov eax, bword ptr [ebp+0x10]
; byrRegs +[eax]
- lea ebx, bword ptr [eax+2*ecx]
- ; byrRegs +[ebx]
+ lea esi, bword ptr [eax+2*ecx]
+ ; byrRegs +[esi]
sub edi, ecx
mov ecx, edi
not ecx
shr ecx, 31
call [<unknown method>]
; byrRegs -[eax]
- mov bword ptr [esi], ebx
- mov dword ptr [esi+0x04], edi
- ;; size=30 bbWeight=0.50 PerfScore 4.50
-G_M16324_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ mov ebx, bword ptr [ebp-0x10]
+ ; byrRegs +[ebx]
+ mov bword ptr [ebx], esi
+ mov dword ptr [ebx+0x04], edi
+ ;; size=33 bbWeight=0.50 PerfScore 5.00
+G_M16324_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop ebx
pop esi
@@ -127,12 +135,19 @@ G_M16324_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 16
;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M16324_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M16324_IG14: ; bbWeight=2, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[ebx esi]
+ mov esi, bword ptr [ebp-0x10]
+ ; byrRegs +[esi]
+ jmp SHORT G_M16324_IG06
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; byrRegs -[esi]
+ ; GC ptr vars -{V00}
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 137, prolog size 9, PerfScore 214.62, instruction count 62, allocated bytes for code 137 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
+; Total bytes of code 149, prolog size 9, PerfScore 254.38, instruction count 67, allocated bytes for code 149 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
; ============================================================
@@ -42,15 +42,15 @@ G_M52602_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004
mov edx, 1
; byrRegs -[edx]
test eax, eax
- jle G_M52602_IG12
+ jle G_M52602_IG14
;; size=18 bbWeight=1 PerfScore 4.50
-G_M52602_IG03: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M52602_IG03: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
lea esi, [edx+0x01]
mov dword ptr [ebp-0x18], esi
mov edi, esi
cmp edi, eax
- jg G_M52602_IG11
- ;; size=16 bbWeight=4 PerfScore 12.00
+ jg SHORT G_M52602_IG10
+ ;; size=12 bbWeight=4 PerfScore 12.00
G_M52602_IG04: ; bbWeight=16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
mov ebx, 1
test ecx, ecx
@@ -60,7 +60,7 @@ G_M52602_IG05: ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
test eax, eax
jl SHORT G_M52602_IG08
cmp dword ptr [ecx+0x04], eax
- jle SHORT G_M52602_IG09
+ jle SHORT G_M52602_IG11
;; size=9 bbWeight=8 PerfScore 42.00
G_M52602_IG06: ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x20], ecx
@@ -70,14 +70,14 @@ G_M52602_IG06: ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=0000
mov ecx, esi
mov eax, dword ptr [ecx+0x04]
cmp edx, eax
- jae G_M52602_IG13
+ jae G_M52602_IG17
mov ecx, dword ptr [ecx+4*edx+0x08]
; gcrRegs -[ecx]
mov dword ptr [ebp-0x14], ecx
mov ecx, esi
; gcrRegs +[ecx]
cmp edi, eax
- jae SHORT G_M52602_IG13
+ jae G_M52602_IG17
mov eax, dword ptr [ecx+4*edi+0x08]
mov ecx, dword ptr [ebp-0x14]
; gcrRegs -[ecx]
@@ -85,20 +85,31 @@ G_M52602_IG06: ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=0000
mov dword ptr [esi+4*edi+0x08], ecx
inc ebx
cmp ebx, dword ptr [ebp-0x10]
+ jle SHORT G_M52602_IG07
+ jmp SHORT G_M52602_IG12
+ ;; size=58 bbWeight=63.36 PerfScore 1298.88
+G_M52602_IG07: ; bbWeight=31.68, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- jle SHORT G_M52602_IG06
- ;; size=55 bbWeight=63.36 PerfScore 1235.52
-G_M52602_IG07: ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[esi]
+ jmp SHORT G_M52602_IG06
+ ;; size=5 bbWeight=31.68 PerfScore 95.04
+G_M52602_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- jmp SHORT G_M52602_IG10
+ jmp SHORT G_M52602_IG11
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M52602_IG09: ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M52602_IG11
;; size=2 bbWeight=8 PerfScore 16.00
-G_M52602_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
- ;; size=0 bbWeight=4 PerfScore 0.00
-G_M52602_IG09: ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M52602_IG10: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x20], ecx
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M52602_IG13
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M52602_IG11: ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ; GC ptr vars -{V00}
cmp ebx, dword ptr [ecx+0x04]
- jae SHORT G_M52602_IG13
+ jae SHORT G_M52602_IG17
mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V00}
mov esi, gword ptr [ecx+4*ebx+0x08]
@@ -109,13 +120,13 @@ G_M52602_IG09: ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000
; gcrRegs -[ecx]
mov dword ptr [ebp-0x1C], ecx
cmp edx, ecx
- jae SHORT G_M52602_IG13
+ jae SHORT G_M52602_IG17
mov esi, dword ptr [esi+4*edx+0x08]
; gcrRegs -[esi]
mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
cmp edi, dword ptr [ebp-0x1C]
- jae SHORT G_M52602_IG13
+ jae SHORT G_M52602_IG17
mov ecx, dword ptr [ecx+4*edi+0x08]
; gcrRegs -[ecx]
mov eax, gword ptr [ebp-0x24]
@@ -126,25 +137,26 @@ G_M52602_IG09: ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000
mov eax, dword ptr [ebp-0x10]
; gcrRegs -[eax]
cmp ebx, eax
- mov ecx, gword ptr [ebp-0x20]
- ; gcrRegs +[ecx]
- jle SHORT G_M52602_IG09
- ;; size=61 bbWeight=0.64 PerfScore 16.64
-G_M52602_IG10: ; bbWeight=16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; GC ptr vars -{V00 V11}
+ jle SHORT G_M52602_IG16
+ ;; size=58 bbWeight=0.64 PerfScore 16.00
+G_M52602_IG12: ; bbWeight=16, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V11}
inc edi
mov eax, dword ptr [ebp-0x10]
cmp edi, eax
- jle G_M52602_IG04
- ;; size=12 bbWeight=16 PerfScore 40.00
-G_M52602_IG11: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ jle SHORT G_M52602_IG15
+ ;; size=8 bbWeight=16 PerfScore 40.00
+G_M52602_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov esi, dword ptr [ebp-0x18]
mov edx, esi
cmp edx, eax
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
jle G_M52602_IG03
- ;; size=13 bbWeight=4 PerfScore 10.00
-G_M52602_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=4 PerfScore 14.00
+G_M52602_IG14: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[ecx]
+ ; GC ptr vars -{V00}
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -152,11 +164,25 @@ G_M52602_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M52602_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M52602_IG15: ; bbWeight=8, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars +{V00 V11}
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
+ jmp G_M52602_IG04
+ ;; size=8 bbWeight=8 PerfScore 24.00
+G_M52602_IG16: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx]
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
+ jmp SHORT G_M52602_IG11
+ ;; size=5 bbWeight=0.32 PerfScore 0.96
+G_M52602_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V00 V11}
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 218, prolog size 9, PerfScore 1408.66, instruction count 82, allocated bytes for code 218 (MethodHash=2f153285) for method Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (FullOpts)
+; Total bytes of code 238, prolog size 9, PerfScore 1609.38, instruction count 90, allocated bytes for code 238 (MethodHash=2f153285) for method Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (FullOpts)
; ============================================================
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 13 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 5, 3.50) ref -> edi this class-hnd single-def <System.Xml.NameTable>
+; V00 this [V00,T06] ( 5, 3.50) ref -> [ebp-0x14] this class-hnd single-def <System.Xml.NameTable>
; V01 arg1 [V01,T04] ( 7, 7 ) ref -> esi class-hnd single-def <System.String>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 loc1 [V03,T07] ( 4, 5.50) int -> [ebp-0x10] spill-single-def
@@ -25,8 +25,8 @@
;* V14 tmp9 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp10 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V16 tmp11 [V16,T03] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V17 tmp12 [V17,T00] ( 6, 52 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
-; V18 tmp13 [V18,T05] ( 2, 8 ) byref -> ebx "impAppendStmt"
+; V17 tmp12 [V17,T00] ( 6, 52 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V18 tmp13 [V18,T05] ( 2, 8 ) byref -> edi "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -44,9 +44,9 @@
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x4)" P-INDEP
-; V36 tmp31 [V36,T08] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V37 tmp32 [V37,T10] ( 3, 3 ) int -> edx "index expr"
-; V38 cse0 [V38,T02] ( 4, 18.50) int -> [ebp-0x14] spill-single-def "CSE - aggressive"
+; V36 tmp31 [V36,T08] ( 3, 3 ) ref -> edx single-def "arr expr"
+; V37 tmp32 [V37,T10] ( 3, 3 ) int -> ecx "index expr"
+; V38 cse0 [V38,T02] ( 4, 18.50) int -> ebx "CSE - aggressive"
; V39 cse1 [V39,T09] ( 3, 3 ) byref -> [ebp-0x1C] spill-single-def "CSE - moderate"
;* V40 rat0 [V40 ] ( 0, 0 ) int -> zero-ref "field V13.lo (fldOffset=0x0)" P-INDEP
;* V41 rat1 [V41 ] ( 0, 0 ) int -> zero-ref "field V13.hi (fldOffset=0x4)" P-INDEP
@@ -67,12 +67,11 @@ G_M51747_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=13 bbWeight=1 PerfScore 5.00
G_M51747_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
- je G_M51747_IG16
+ je G_M51747_IG19
mov ebx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], ebx
test ebx, ebx
jne SHORT G_M51747_IG05
- ;; size=18 bbWeight=1 PerfScore 5.50
+ ;; size=15 bbWeight=1 PerfScore 4.50
G_M51747_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
mov eax, 0xD1FFAB1E
@@ -101,73 +100,80 @@ G_M51747_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
call [<unknown method>]
; byrRegs -[eax ecx]
mov dword ptr [ebp-0x10], eax
- mov ecx, gword ptr [edi+0x04]
- ; gcrRegs +[ecx]
- mov edx, eax
- and edx, dword ptr [edi+0x0C]
- cmp edx, dword ptr [ecx+0x04]
- jae SHORT G_M51747_IG15
- mov edx, gword ptr [ecx+4*edx+0x08]
+ mov edx, gword ptr [edi+0x04]
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M51747_IG11
- ;; size=52 bbWeight=0.50 PerfScore 10.38
-G_M51747_IG06: ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- cmp dword ptr [edx+0x0C], eax
- jne SHORT G_M51747_IG10
- ;; size=5 bbWeight=4 PerfScore 16.00
-G_M51747_IG07: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [edx+0x04]
+ mov gword ptr [ebp-0x14], edi
+ ; GC ptr vars +{V00}
+ mov ecx, eax
+ and ecx, dword ptr [edi+0x0C]
+ cmp ecx, dword ptr [edx+0x04]
+ jae SHORT G_M51747_IG18
+ mov ecx, gword ptr [edx+4*ecx+0x08]
; gcrRegs +[ecx]
- cmp byte ptr [ecx], cl
- cmp ecx, esi
- je SHORT G_M51747_IG13
- ;; size=9 bbWeight=2 PerfScore 12.50
-G_M51747_IG08: ; bbWeight=16, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [ecx+0x04], ebx
+ test ecx, ecx
+ mov edi, gword ptr [ebp-0x14]
+ je SHORT G_M51747_IG15
+ ;; size=58 bbWeight=0.50 PerfScore 11.38
+G_M51747_IG06: ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edx]
+ ; GC ptr vars -{V00}
+ cmp dword ptr [ecx+0x0C], eax
+ jne SHORT G_M51747_IG14
+ ;; size=5 bbWeight=4 PerfScore 16.00
+G_M51747_IG07: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x18], ecx
+ ; GC ptr vars +{V04}
+ mov edx, gword ptr [ecx+0x04]
+ ; gcrRegs +[edx]
+ cmp byte ptr [edx], dl
+ cmp edx, esi
+ je SHORT G_M51747_IG16
+ ;; size=12 bbWeight=2 PerfScore 14.50
+G_M51747_IG08: ; bbWeight=16, gcVars=00000202 {V04 V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ cmp dword ptr [edx+0x04], ebx
jne SHORT G_M51747_IG10
;; size=5 bbWeight=16 PerfScore 64.00
-G_M51747_IG09: ; bbWeight=2, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
- ; GC ptr vars +{V04}
- lea ebx, bword ptr [ecx+0x08]
- ; byrRegs +[ebx]
- mov ecx, dword ptr [ecx+0x04]
- ; gcrRegs -[ecx]
- add ecx, ecx
- push ecx
- mov edx, bword ptr [ebp-0x1C]
+G_M51747_IG09: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edi
+ ; GC ptr vars +{V00}
+ lea edi, bword ptr [edx+0x08]
+ ; gcrRegs -[edi]
+ ; byrRegs +[edi]
+ mov edx, dword ptr [edx+0x04]
; gcrRegs -[edx]
+ add edx, edx
+ push edx
+ mov edx, bword ptr [ebp-0x1C]
; byrRegs +[edx]
- mov ecx, ebx
+ mov ecx, edi
; byrRegs +[ecx]
call [<unknown method>]
- ; byrRegs -[ecx edx ebx]
+ ; byrRegs -[ecx edx edi]
test eax, eax
- mov eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x18]
- ; gcrRegs +[edx]
- mov ebx, dword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp-0x14]
+ ; gcrRegs +[edi]
+ jne SHORT G_M51747_IG16
+ ;; size=30 bbWeight=2 PerfScore 22.50
+G_M51747_IG10: ; bbWeight=4, gcVars=00000202 {V04 V39}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
+ mov ecx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ecx]
+ mov ecx, gword ptr [ecx+0x08]
+ test ecx, ecx
jne SHORT G_M51747_IG13
- ;; size=36 bbWeight=2 PerfScore 26.50
-G_M51747_IG10: ; bbWeight=4, gcVars=00000200 {V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V04}
- mov edx, gword ptr [edx+0x08]
- test edx, edx
- jne SHORT G_M51747_IG06
- ;; size=7 bbWeight=4 PerfScore 13.00
+ ;; size=10 bbWeight=4 PerfScore 17.00
G_M51747_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx]
- ; GC ptr vars -{V39}
- push eax
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V04 V39}
+ push dword ptr [ebp-0x10]
mov ecx, edi
; gcrRegs +[ecx]
mov edx, esi
; gcrRegs +[edx]
call [System.Xml.NameTable:AddEntry(System.String,int):System.String:this]
; gcrRegs -[ecx edx esi edi] +[eax]
- ;; size=11 bbWeight=0.50 PerfScore 2.25
+ ;; size=13 bbWeight=0.50 PerfScore 2.25
G_M51747_IG12: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -176,12 +182,31 @@ G_M51747_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[edx]
- mov eax, gword ptr [edx+0x04]
+G_M51747_IG13: ; bbWeight=2, gcVars=00000200 {V39}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[ecx esi edi]
+ ; GC ptr vars +{V09 V39}
+ mov eax, dword ptr [ebp-0x10]
+ jmp SHORT G_M51747_IG06
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG14: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x18], ecx
+ ; GC ptr vars +{V04}
+ jmp SHORT G_M51747_IG10
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG15: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V04 V09 V39}
+ jmp SHORT G_M51747_IG11
+ ;; size=2 bbWeight=0.25 PerfScore 0.50
+G_M51747_IG16: ; bbWeight=0.50, gcVars=00000002 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[esi edi]
+ ; GC ptr vars +{V01 V04}
+ mov ecx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ecx]
+ mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
- ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M51747_IG17: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -189,11 +214,12 @@ G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edx]
+G_M51747_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax ecx]
+ ; GC ptr vars -{V01 V04}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M51747_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51747_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 5
mov edx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -205,6 +231,6 @@ G_M51747_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 217, prolog size 13, PerfScore 161.50, instruction count 86, allocated bytes for code 217 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
+; Total bytes of code 237, prolog size 13, PerfScore 176.50, instruction count 93, allocated bytes for code 237 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
; ============================================================
@@ -13,7 +13,7 @@
; V02 loc0 [V02,T03] ( 15, 20.04) int -> [ebp-0x10]
; V03 loc1 [V03,T02] ( 11, 23.50) int -> [ebp-0x14]
; V04 tmp0 [V04,T08] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V05 tmp1 [V05,T01] ( 4, 24 ) ushort -> edx "Inlining Arg"
+; V05 tmp1 [V05,T01] ( 4, 24 ) ushort -> ecx "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V13 tmp9 [V13,T07] ( 4, 4 ) ubyte -> eax "Inline return value spill temp"
-; V14 tmp10 [V14,T00] ( 8, 24 ) ushort -> eax "Inlining Arg"
+; V14 tmp10 [V14,T00] ( 8, 24 ) ushort -> ecx "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -73,139 +73,117 @@ G_M50035_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [esi+0x04]
lea eax, [ebx-0x01]
mov dword ptr [ebp-0x10], eax
- xor ecx, ecx
+ xor edx, edx
test edi, 1
- mov dword ptr [ebp-0x14], ecx
- je SHORT G_M50035_IG10
- ;; size=22 bbWeight=1 PerfScore 6.00
+ je SHORT G_M50035_IG09
+ ;; size=19 bbWeight=1 PerfScore 5.00
G_M50035_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- xor ecx, ecx
+ xor edx, edx
test ebx, ebx
- jle SHORT G_M50035_IG07
+ jle SHORT G_M50035_IG09
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M50035_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- movzx edx, word ptr [esi+2*ecx+0x08]
- cmp edx, 256
- jb SHORT G_M50035_IG08
- ;; size=13 bbWeight=4 PerfScore 13.00
+ mov dword ptr [ebp-0x14], edx
+ movzx ecx, word ptr [esi+2*edx+0x08]
+ cmp ecx, 256
+ jb SHORT G_M50035_IG07
+ ;; size=16 bbWeight=4 PerfScore 17.00
G_M50035_IG05: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- mov ecx, edx
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG10
- ;; size=15 bbWeight=2 PerfScore 11.00
-G_M50035_IG06: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [ebp-0x14]
+ je SHORT G_M50035_IG06
+ jmp SHORT G_M50035_IG08
+ ;; size=12 bbWeight=2 PerfScore 12.50
+G_M50035_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x14]
jmp SHORT G_M50035_IG09
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M50035_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG10
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG08: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [edx+D1FFAB1EH], 128
- je SHORT G_M50035_IG17
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M50035_IG15
;; size=9 bbWeight=2 PerfScore 8.00
-G_M50035_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- mov dword ptr [ebp-0x14], ecx
- cmp ebx, ecx
- jg SHORT G_M50035_IG16
+G_M50035_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x14]
+ inc edx
+ cmp ebx, edx
+ jg SHORT G_M50035_IG04
;; size=8 bbWeight=4 PerfScore 10.00
-G_M50035_IG10: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M50035_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test edi, 2
mov edi, dword ptr [ebp-0x10]
- je G_M50035_IG27
- ;; size=15 bbWeight=1 PerfScore 2.25
-G_M50035_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M50035_IG14
+ ;; size=11 bbWeight=1 PerfScore 2.25
+G_M50035_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea eax, [ebx-0x01]
mov edi, eax
- mov ecx, dword ptr [ebp-0x14]
- cmp edi, ecx
- jl SHORT G_M50035_IG15
- mov eax, edi
- or eax, ecx
- jl SHORT G_M50035_IG22
+ cmp edi, edx
+ jl SHORT G_M50035_IG13
+ mov dword ptr [ebp-0x14], edx
+ mov ecx, edi
+ or ecx, edx
+ jl SHORT G_M50035_IG18
cmp ebx, edi
- jle SHORT G_M50035_IG22
+ jle SHORT G_M50035_IG18
;; size=22 bbWeight=0.50 PerfScore 2.88
-G_M50035_IG12: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [esi+2*edi+0x08]
- cmp eax, 256
- jb SHORT G_M50035_IG18
- ;; size=12 bbWeight=3.96 PerfScore 12.87
-G_M50035_IG13: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- mov ecx, eax
+G_M50035_IG11: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, word ptr [esi+2*edi+0x08]
+ cmp ecx, 256
+ jb SHORT G_M50035_IG16
+ ;; size=13 bbWeight=3.96 PerfScore 12.87
+G_M50035_IG12: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG27
- ;; size=15 bbWeight=1.98 PerfScore 10.89
-G_M50035_IG14: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M50035_IG19
- ;; size=5 bbWeight=3.96 PerfScore 11.88
-G_M50035_IG15: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG27
+ je SHORT G_M50035_IG22
+ jmp SHORT G_M50035_IG17
+ ;; size=12 bbWeight=1.98 PerfScore 12.38
+G_M50035_IG13: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x14], edx
+ jmp SHORT G_M50035_IG22
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG16: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov ecx, dword ptr [ebp-0x14]
- jmp G_M50035_IG04
- ;; size=8 bbWeight=2 PerfScore 6.00
-G_M50035_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG10
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M50035_IG18: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [eax+D1FFAB1EH], 128
- je SHORT G_M50035_IG21
- ;; size=9 bbWeight=1.98 PerfScore 7.92
-G_M50035_IG19: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- dec edi
- mov dword ptr [ebp-0x14], ecx
- cmp edi, ecx
- mov ecx, dword ptr [ebp-0x14]
- jge SHORT G_M50035_IG12
- ;; size=11 bbWeight=3.96 PerfScore 13.86
-G_M50035_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG27
+G_M50035_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x14], edx
+ jmp SHORT G_M50035_IG22
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M50035_IG21: ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG27
- ;; size=5 bbWeight=0.99 PerfScore 2.97
-G_M50035_IG22: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG15: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x14]
+ jmp SHORT G_M50035_IG09
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG16: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M50035_IG22
+ ;; size=9 bbWeight=1.98 PerfScore 7.92
+G_M50035_IG17: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ dec edi
+ mov edx, dword ptr [ebp-0x14]
+ cmp edi, edx
+ jge SHORT G_M50035_IG11
+ jmp SHORT G_M50035_IG22
+ ;; size=10 bbWeight=3.96 PerfScore 17.82
+G_M50035_IG18: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae SHORT G_M50035_IG31
- movzx eax, word ptr [esi+2*edi+0x08]
- cmp eax, 256
- jb SHORT G_M50035_IG25
- ;; size=16 bbWeight=0.04 PerfScore 0.18
-G_M50035_IG23: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- mov ecx, eax
+ jae SHORT G_M50035_IG24
+ movzx ecx, word ptr [esi+2*edi+0x08]
+ cmp ecx, 256
+ jb SHORT G_M50035_IG20
+ ;; size=17 bbWeight=0.04 PerfScore 0.18
+G_M50035_IG19: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG27
- ;; size=15 bbWeight=0.02 PerfScore 0.11
-G_M50035_IG24: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M50035_IG26
- ;; size=5 bbWeight=0.04 PerfScore 0.12
-G_M50035_IG25: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [eax+D1FFAB1EH], 128
- je SHORT G_M50035_IG30
+ je SHORT G_M50035_IG22
+ jmp SHORT G_M50035_IG21
+ ;; size=12 bbWeight=0.02 PerfScore 0.13
+G_M50035_IG20: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M50035_IG22
;; size=9 bbWeight=0.02 PerfScore 0.08
-G_M50035_IG26: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG21: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
dec edi
- mov dword ptr [ebp-0x14], ecx
- cmp edi, ecx
- jge SHORT G_M50035_IG29
- ;; size=8 bbWeight=0.04 PerfScore 0.10
-G_M50035_IG27: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, dword ptr [ebp-0x14]
+ cmp edi, edx
+ mov dword ptr [ebp-0x14], edx
+ jge SHORT G_M50035_IG18
+ ;; size=11 bbWeight=0.04 PerfScore 0.14
+G_M50035_IG22: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
push edi
mov ecx, esi
; gcrRegs +[ecx]
@@ -213,7 +191,7 @@ G_M50035_IG27: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [System.String:CreateTrimmedString(int,int):System.String:this]
; gcrRegs -[ecx esi] +[eax]
;; size=12 bbWeight=1 PerfScore 5.25
-G_M50035_IG28: ; bbWeight=1, epilog, nogc, extend
+G_M50035_IG23: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
...
@@ -41,26 +41,18 @@ G_M52491_IG04: ; bbWeight=0.13, epilog, nogc, extend
G_M52491_IG05: ; bbWeight=0.87, gcVars=00000000 {}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx]
test dl, dl
- je SHORT G_M52491_IG07
- ;; size=4 bbWeight=0.87 PerfScore 1.09
-G_M52491_IG06: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- jmp SHORT G_M52491_IG08
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M52491_IG07: ; bbWeight=0.87, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ecx]
+ jne SHORT G_M52491_IG06
mov edx, dword ptr [ecx+0x30]
and edx, 7
cmp edx, 6
- je SHORT G_M52491_IG08
- jmp SHORT G_M52491_IG03
- ;; size=13 bbWeight=0.87 PerfScore 4.81
-G_M52491_IG08: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+ jne SHORT G_M52491_IG03
+ ;; size=15 bbWeight=0.87 PerfScore 4.15
+G_M52491_IG06: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[ecx]
pop ebp
ret
;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 37, prolog size 3, PerfScore 10.87, instruction count 19, allocated bytes for code 37 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 33, prolog size 3, PerfScore 9.12, instruction count 17, allocated bytes for code 33 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
1[ushort]):System.ReadOnlySpan
1ushort@@ -13,7 +13,7 @@
; V02 loc0 [V02,T00] ( 11, 26 ) int -> [ebp-0x10]
; V03 loc1 [V03,T03] ( 8, 23 ) int -> [ebp-0x14]
; V04 loc2 [V04,T09] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V05 tmp1 [V05,T01] ( 4, 24 ) ushort -> eax "Inlining Arg"
+; V05 tmp1 [V05,T01] ( 4, 24 ) ushort -> ecx "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V13 tmp9 [V13,T10] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V14 tmp10 [V14,T02] ( 4, 24 ) ushort -> edx "Inlining Arg"
+; V14 tmp10 [V14,T02] ( 4, 24 ) ushort -> ecx "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -32,7 +32,7 @@
;* V21 tmp17 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V22 tmp18 [V22,T06] ( 4, 8 ) int -> [ebp-0x18] spill-single-def "Inlining Arg"
;* V23 tmp19 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp20 [V24,T08] ( 2, 4 ) byref -> ebx single-def "Inlining Arg"
+; V24 tmp20 [V24,T08] ( 2, 4 ) byref -> edi single-def "Inlining Arg"
;* V25 tmp21 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp22 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
@@ -59,8 +59,8 @@
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP
;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
-; V51 tmp47 [V51,T11] ( 2, 2 ) byref -> ebx single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-; V52 tmp48 [V52,T13] ( 2, 2 ) int -> eax "field V23._length (fldOffset=0x4)" P-INDEP
+; V51 tmp47 [V51,T11] ( 2, 2 ) byref -> edi single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+; V52 tmp48 [V52,T13] ( 2, 2 ) int -> edx "field V23._length (fldOffset=0x4)" P-INDEP
; V53 tmp49 [V53,T05] ( 4, 10 ) byref -> edi single-def "V01.[000..004)"
; V54 tmp50 [V54,T04] ( 7, 13 ) int -> ebx "V01.[004..008)"
;
@@ -80,127 +80,113 @@ G_M20594_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
mov edi, bword ptr [ebp+0x08]
; byrRegs +[edi]
mov ebx, dword ptr [ebp+0x0C]
- xor ecx, ecx
+ xor eax, eax
test ebx, ebx
- jle SHORT G_M20594_IG06
+ jle SHORT G_M20594_IG08
;; size=12 bbWeight=1 PerfScore 3.50
G_M20594_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- movzx eax, word ptr [edi+2*ecx]
- cmp eax, 256
- jb SHORT G_M20594_IG07
- ;; size=11 bbWeight=4 PerfScore 13.00
+ mov dword ptr [ebp-0x10], eax
+ movzx ecx, word ptr [edi+2*eax]
+ cmp ecx, 256
+ jb SHORT G_M20594_IG06
+ ;; size=15 bbWeight=4 PerfScore 17.00
G_M20594_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- mov ecx, eax
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M20594_IG09
- ;; size=15 bbWeight=2 PerfScore 11.00
-G_M20594_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov ecx, dword ptr [ebp-0x10]
+ je SHORT G_M20594_IG05
+ jmp SHORT G_M20594_IG07
+ ;; size=12 bbWeight=2 PerfScore 12.50
+G_M20594_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
jmp SHORT G_M20594_IG08
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M20594_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- jmp SHORT G_M20594_IG09
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M20594_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- test byte ptr [eax+D1FFAB1EH], 128
- je SHORT G_M20594_IG15
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M20594_IG06: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M20594_IG13
;; size=9 bbWeight=2 PerfScore 8.00
-G_M20594_IG08: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- inc ecx
- mov dword ptr [ebp-0x10], ecx
- cmp ecx, ebx
- jl SHORT G_M20594_IG14
- ;; size=8 bbWeight=4 PerfScore 10.00
-G_M20594_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- lea eax, [ebx-0x01]
- mov ecx, dword ptr [ebp-0x10]
- cmp eax, ecx
- jle SHORT G_M20594_IG13
- ;; size=10 bbWeight=1 PerfScore 2.75
-G_M20594_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M20594_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ inc eax
cmp eax, ebx
- jae G_M20594_IG25
- movzx edx, word ptr [edi+2*eax]
- cmp edx, 256
- jb SHORT G_M20594_IG16
- ;; size=20 bbWeight=4 PerfScore 18.00
-G_M20594_IG11: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- mov dword ptr [ebp-0x14], eax
- mov ecx, edx
+ jl SHORT G_M20594_IG03
+ ;; size=8 bbWeight=4 PerfScore 10.00
+G_M20594_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ lea edx, [ebx-0x01]
+ mov dword ptr [ebp-0x10], eax
+ cmp edx, eax
+ jle SHORT G_M20594_IG12
+ ;; size=10 bbWeight=1 PerfScore 2.75
+G_M20594_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ cmp edx, ebx
+ jae SHORT G_M20594_IG23
+ mov dword ptr [ebp-0x14], edx
+ movzx ecx, word ptr [edi+2*edx]
+ cmp ecx, 256
+ jb SHORT G_M20594_IG14
+ ;; size=19 bbWeight=4 PerfScore 22.00
+G_M20594_IG10: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M20594_IG18
- ;; size=18 bbWeight=2 PerfScore 13.00
-G_M20594_IG12: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov eax, dword ptr [ebp-0x14]
- mov ecx, dword ptr [ebp-0x10]
- jmp SHORT G_M20594_IG17
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M20594_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- mov dword ptr [ebp-0x14], eax
- jmp SHORT G_M20594_IG18
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M20594_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov ecx, dword ptr [ebp-0x10]
- jmp SHORT G_M20594_IG03
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M20594_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- jmp SHORT G_M20594_IG09
+ je SHORT G_M20594_IG11
+ jmp SHORT G_M20594_IG15
+ ;; size=12 bbWeight=2 PerfScore 12.50
+G_M20594_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ mov edx, dword ptr [ebp-0x14]
+ jmp SHORT G_M20594_IG16
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M20594_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ jmp SHORT G_M20594_IG16
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M20594_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ jmp SHORT G_M20594_IG08
;; size=5 bbWeight=1 PerfScore 3.00
-G_M20594_IG16: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- test byte ptr [edx+D1FFAB1EH], 128
- je SHORT G_M20594_IG21
+G_M20594_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M20594_IG19
;; size=9 bbWeight=2 PerfScore 8.00
-G_M20594_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- dec eax
- mov dword ptr [ebp-0x14], eax
- mov dword ptr [ebp-0x10], ecx
- cmp eax, ecx
- jg SHORT G_M20594_IG20
+G_M20594_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov edx, dword ptr [ebp-0x14]
+ dec edx
+ mov eax, dword ptr [ebp-0x10]
+ cmp edx, eax
+ jg SHORT G_M20594_IG18
;; size=11 bbWeight=4 PerfScore 14.00
-G_M20594_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov eax, dword ptr [ebp-0x14]
- mov ecx, dword ptr [ebp-0x10]
- sub eax, ecx
- inc eax
- mov dword ptr [ebp-0x18], eax
- cmp ecx, ebx
- jbe SHORT G_M20594_IG22
- ;; size=16 bbWeight=1 PerfScore 4.75
-G_M20594_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M20594_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ sub edx, eax
+ inc edx
+ mov dword ptr [ebp-0x18], edx
+ cmp eax, ebx
+ jbe SHORT G_M20594_IG20
+ ;; size=10 bbWeight=1 PerfScore 2.75
+G_M20594_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[esi edi]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M20594_IG20: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M20594_IG18: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
; byrRegs +[esi edi]
- mov eax, dword ptr [ebp-0x14]
- mov ecx, dword ptr [ebp-0x10]
- jmp SHORT G_M20594_IG10
- ;; size=8 bbWeight=2 PerfScore 8.00
-G_M20594_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- mov dword ptr [ebp-0x14], eax
- jmp SHORT G_M20594_IG18
+ mov dword ptr [ebp-0x10], eax
+ jmp SHORT G_M20594_IG09
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M20594_IG19: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ mov edx, dword ptr [ebp-0x14]
+ jmp SHORT G_M20594_IG16
;; size=8 bbWeight=1 PerfScore 4.00
-G_M20594_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- sub ebx, ecx
- cmp ebx, eax
- jb SHORT G_M20594_IG19
- jmp SHORT G_M20594_IG26
+G_M20594_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ sub ebx, eax
+ cmp ebx, edx
+ jb SHORT G_M20594_IG17
+ jmp SHORT G_M20594_IG24
;; size=8 bbWeight=1 PerfScore 3.50
-G_M20594_IG23: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
- ; byrRegs -[edi] +[ebx]
- mov bword ptr [esi], ebx
- mov dword ptr [esi+0x04], eax
+G_M20594_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+ mov bword ptr [esi], edi
+ mov dword ptr [esi+0x04], edx
;; size=5 bbWeight=1 PerfScore 2.00
-G_M20594_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M20594_IG22: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
...
@@ -8,7 +8,7 @@
; 6 inlinees with PGO data; 12 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 5, 3.50) ref -> edi this class-hnd single-def <System.Xml.NameTable>
+; V00 this [V00,T06] ( 5, 3.50) ref -> [ebp-0x14] this class-hnd single-def <System.Xml.NameTable>
; V01 arg1 [V01,T04] ( 7, 7 ) ref -> esi class-hnd single-def <System.String>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 loc1 [V03,T07] ( 4, 5.50) int -> [ebp-0x10] spill-single-def
@@ -25,8 +25,8 @@
;* V14 tmp9 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp10 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V16 tmp11 [V16,T03] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V17 tmp12 [V17,T00] ( 6, 52 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
-; V18 tmp13 [V18,T05] ( 2, 8 ) byref -> ebx "impAppendStmt"
+; V17 tmp12 [V17,T00] ( 6, 52 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V18 tmp13 [V18,T05] ( 2, 8 ) byref -> edi "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -44,9 +44,9 @@
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x4)" P-INDEP
-; V36 tmp31 [V36,T08] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V37 tmp32 [V37,T10] ( 3, 3 ) int -> edx "index expr"
-; V38 cse0 [V38,T02] ( 4, 18.50) int -> [ebp-0x14] spill-single-def "CSE - aggressive"
+; V36 tmp31 [V36,T08] ( 3, 3 ) ref -> edx single-def "arr expr"
+; V37 tmp32 [V37,T10] ( 3, 3 ) int -> ecx "index expr"
+; V38 cse0 [V38,T02] ( 4, 18.50) int -> ebx "CSE - aggressive"
; V39 cse1 [V39,T09] ( 3, 3 ) byref -> [ebp-0x1C] spill-single-def "CSE - moderate"
;* V40 rat0 [V40 ] ( 0, 0 ) int -> zero-ref "field V13.lo (fldOffset=0x0)" P-INDEP
;* V41 rat1 [V41 ] ( 0, 0 ) int -> zero-ref "field V13.hi (fldOffset=0x4)" P-INDEP
@@ -84,10 +84,9 @@ G_M51747_IG03: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
G_M51747_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi]
mov ebx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], ebx
test ebx, ebx
jne SHORT G_M51747_IG07
- ;; size=10 bbWeight=1 PerfScore 4.25
+ ;; size=7 bbWeight=1 PerfScore 3.25
G_M51747_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
mov eax, 0xD1FFAB1E
@@ -116,73 +115,80 @@ G_M51747_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
call [<unknown method>]
; byrRegs -[eax ecx]
mov dword ptr [ebp-0x10], eax
- mov ecx, gword ptr [edi+0x04]
- ; gcrRegs +[ecx]
- mov edx, eax
- and edx, dword ptr [edi+0x0C]
- cmp edx, dword ptr [ecx+0x04]
- jae SHORT G_M51747_IG17
- mov edx, gword ptr [ecx+4*edx+0x08]
+ mov edx, gword ptr [edi+0x04]
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M51747_IG13
- ;; size=52 bbWeight=0.50 PerfScore 10.38
-G_M51747_IG08: ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- cmp dword ptr [edx+0x0C], eax
- jne SHORT G_M51747_IG12
- ;; size=5 bbWeight=4 PerfScore 16.00
-G_M51747_IG09: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [edx+0x04]
+ mov gword ptr [ebp-0x14], edi
+ ; GC ptr vars +{V00}
+ mov ecx, eax
+ and ecx, dword ptr [edi+0x0C]
+ cmp ecx, dword ptr [edx+0x04]
+ jae SHORT G_M51747_IG20
+ mov ecx, gword ptr [edx+4*ecx+0x08]
; gcrRegs +[ecx]
- cmp byte ptr [ecx], cl
- cmp ecx, esi
- je SHORT G_M51747_IG15
- ;; size=9 bbWeight=2 PerfScore 12.50
-G_M51747_IG10: ; bbWeight=16, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [ecx+0x04], ebx
+ test ecx, ecx
+ mov edi, gword ptr [ebp-0x14]
+ je SHORT G_M51747_IG17
+ ;; size=58 bbWeight=0.50 PerfScore 11.38
+G_M51747_IG08: ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edx]
+ ; GC ptr vars -{V00}
+ cmp dword ptr [ecx+0x0C], eax
+ jne SHORT G_M51747_IG16
+ ;; size=5 bbWeight=4 PerfScore 16.00
+G_M51747_IG09: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x18], ecx
+ ; GC ptr vars +{V04}
+ mov edx, gword ptr [ecx+0x04]
+ ; gcrRegs +[edx]
+ cmp byte ptr [edx], dl
+ cmp edx, esi
+ je SHORT G_M51747_IG18
+ ;; size=12 bbWeight=2 PerfScore 14.50
+G_M51747_IG10: ; bbWeight=16, gcVars=00000202 {V04 V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ cmp dword ptr [edx+0x04], ebx
jne SHORT G_M51747_IG12
;; size=5 bbWeight=16 PerfScore 64.00
-G_M51747_IG11: ; bbWeight=2, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
- ; GC ptr vars +{V04}
- lea ebx, bword ptr [ecx+0x08]
- ; byrRegs +[ebx]
- mov ecx, dword ptr [ecx+0x04]
- ; gcrRegs -[ecx]
- add ecx, ecx
- push ecx
- mov edx, bword ptr [ebp-0x1C]
+G_M51747_IG11: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edi
+ ; GC ptr vars +{V00}
+ lea edi, bword ptr [edx+0x08]
+ ; gcrRegs -[edi]
+ ; byrRegs +[edi]
+ mov edx, dword ptr [edx+0x04]
; gcrRegs -[edx]
+ add edx, edx
+ push edx
+ mov edx, bword ptr [ebp-0x1C]
; byrRegs +[edx]
- mov ecx, ebx
+ mov ecx, edi
; byrRegs +[ecx]
call [<unknown method>]
- ; byrRegs -[ecx edx ebx]
+ ; byrRegs -[ecx edx edi]
test eax, eax
- mov eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x18]
- ; gcrRegs +[edx]
- mov ebx, dword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp-0x14]
+ ; gcrRegs +[edi]
+ jne SHORT G_M51747_IG18
+ ;; size=30 bbWeight=2 PerfScore 22.50
+G_M51747_IG12: ; bbWeight=4, gcVars=00000202 {V04 V39}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
+ mov ecx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ecx]
+ mov ecx, gword ptr [ecx+0x08]
+ test ecx, ecx
jne SHORT G_M51747_IG15
- ;; size=36 bbWeight=2 PerfScore 26.50
-G_M51747_IG12: ; bbWeight=4, gcVars=00000200 {V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V04}
- mov edx, gword ptr [edx+0x08]
- test edx, edx
- jne SHORT G_M51747_IG08
- ;; size=7 bbWeight=4 PerfScore 13.00
+ ;; size=10 bbWeight=4 PerfScore 17.00
G_M51747_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx]
- ; GC ptr vars -{V39}
- push eax
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V04 V39}
+ push dword ptr [ebp-0x10]
mov ecx, edi
; gcrRegs +[ecx]
mov edx, esi
; gcrRegs +[edx]
call [System.Xml.NameTable:AddEntry(System.String,int):System.String:this]
; gcrRegs -[ecx edx esi edi] +[eax]
- ;; size=11 bbWeight=0.50 PerfScore 2.25
+ ;; size=13 bbWeight=0.50 PerfScore 2.25
G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -191,12 +197,31 @@ G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[edx]
- mov eax, gword ptr [edx+0x04]
+G_M51747_IG15: ; bbWeight=2, gcVars=00000200 {V39}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[ecx esi edi]
+ ; GC ptr vars +{V09 V39}
+ mov eax, dword ptr [ebp-0x10]
+ jmp SHORT G_M51747_IG08
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG16: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x18], ecx
+ ; GC ptr vars +{V04}
+ jmp SHORT G_M51747_IG12
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG17: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V04 V09 V39}
+ jmp SHORT G_M51747_IG13
+ ;; size=2 bbWeight=0.25 PerfScore 0.50
+G_M51747_IG18: ; bbWeight=0.50, gcVars=00000002 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[esi edi]
+ ; GC ptr vars +{V01 V04}
+ mov ecx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ecx]
+ mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
- ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M51747_IG16: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M51747_IG19: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -204,12 +229,13 @@ G_M51747_IG16: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edx]
+G_M51747_IG20: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax ecx]
+ ; GC ptr vars -{V01 V04}
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 214, prolog size 13, PerfScore 161.50, instruction count 87, allocated bytes for code 214 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
+; Total bytes of code 234, prolog size 13, PerfScore 176.50, instruction count 94, allocated bytes for code 234 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
; ============================================================
@@ -28,7 +28,7 @@
;
; Lcl frame size = 12
-G_M35959_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M35959_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
@@ -76,42 +76,51 @@ G_M35959_IG04: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000001 {e
mov esi, dword ptr [ebp-0x10]
xor esi, dword ptr [eax+0x08]
cmp esi, 1
- jbe SHORT G_M35959_IG06
+ jbe SHORT G_M35959_IG07
;; size=11 bbWeight=4 PerfScore 21.00
G_M35959_IG05: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[eax]
test edx, edx
- je SHORT G_M35959_IG07
+ je SHORT G_M35959_IG06
inc ecx
add ebx, ecx
mov esi, bword ptr [ebp-0x18]
; byrRegs +[esi]
and ebx, dword ptr [esi+0x04]
cmp ecx, 8
- jge SHORT G_M35959_IG07
- jmp SHORT G_M35959_IG03
+ jl SHORT G_M35959_IG03
+ jmp SHORT G_M35959_IG14
;; size=20 bbWeight=8 PerfScore 72.00
-G_M35959_IG06: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz
- ; byrRegs -[esi] +[eax]
+G_M35959_IG06: ; bbWeight=4, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; byrRegs -[esi]
; GC ptr vars -{V06}
+ mov eax, bword ptr [ebp-0x14]
+ ; byrRegs +[eax]
+ jmp SHORT G_M35959_IG09
+ ;; size=5 bbWeight=4 PerfScore 12.00
+G_M35959_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
cmp edx, dword ptr [eax]
- jne SHORT G_M35959_IG07
+ jne SHORT G_M35959_IG11
cmp esi, 1
- je SHORT G_M35959_IG09
+ je SHORT G_M35959_IG12
;; size=9 bbWeight=1 PerfScore 5.25
-G_M35959_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M35959_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[eax]
+ mov eax, bword ptr [ebp-0x14]
+ ; byrRegs +[eax]
+ ;; size=3 bbWeight=0.50 PerfScore 0.50
+G_M35959_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
+ ; GC ptr vars -{V00}
push gword ptr [ebp+0x08]
; gcr arg push 0
- mov ecx, bword ptr [ebp-0x14]
+ mov ecx, eax
; byrRegs +[ecx]
mov edx, dword ptr [ebp-0x10]
- ; GC ptr vars -{V00}
call [System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,uint,System.Object)]
- ; byrRegs -[ecx]
+ ; byrRegs -[eax ecx]
; gcr arg pop 1
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M35959_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M35959_IG10: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -119,8 +128,14 @@ G_M35959_IG08: ; bbWeight=0, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0 PerfScore 0.00
-G_M35959_IG09: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M35959_IG11: ; bbWeight=0.50, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V09}
+ mov eax, bword ptr [ebp-0x14]
+ ; byrRegs +[eax]
+ jmp SHORT G_M35959_IG09
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M35959_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; byrRegs -[eax]
mov ecx, bword ptr [ebp-0x14]
; byrRegs +[ecx]
mov edx, gword ptr [ebp+0x08]
@@ -130,7 +145,7 @@ G_M35959_IG09: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}
; gcrRegs -[edx]
; byrRegs -[ecx]
;; size=11 bbWeight=1 PerfScore 3.00
-G_M35959_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M35959_IG13: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -138,7 +153,13 @@ G_M35959_IG10: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
+G_M35959_IG14: ; bbWeight=0, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V00 V09}
+ mov eax, bword ptr [ebp-0x14]
+ ; byrRegs +[eax]
+ jmp SHORT G_M35959_IG09
+ ;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 161, prolog size 15, PerfScore 182.75, instruction count 65, allocated bytes for code 161 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
+; Total bytes of code 178, prolog size 15, PerfScore 196.75, instruction count 72, allocated bytes for code 178 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
; ============================================================
@@ -28,7 +28,7 @@
;
; Lcl frame size = 12
-G_M35959_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M35959_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
@@ -76,28 +76,33 @@ G_M35959_IG04: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000001 {e
mov esi, dword ptr [ebp-0x10]
xor esi, dword ptr [eax+0x08]
cmp esi, 1
- jbe SHORT G_M35959_IG06
+ jbe SHORT G_M35959_IG07
;; size=11 bbWeight=4 PerfScore 21.00
G_M35959_IG05: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[eax]
test edx, edx
- je SHORT G_M35959_IG08
+ je SHORT G_M35959_IG06
inc ecx
add ebx, ecx
mov esi, bword ptr [ebp-0x18]
; byrRegs +[esi]
and ebx, dword ptr [esi+0x04]
cmp ecx, 8
- jge SHORT G_M35959_IG08
- jmp SHORT G_M35959_IG03
+ jl SHORT G_M35959_IG03
+ jmp SHORT G_M35959_IG13
;; size=20 bbWeight=8 PerfScore 72.00
-G_M35959_IG06: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz
- ; byrRegs -[esi] +[eax]
+G_M35959_IG06: ; bbWeight=4, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; byrRegs -[esi]
; GC ptr vars -{V06}
+ mov eax, bword ptr [ebp-0x14]
+ ; byrRegs +[eax]
+ jmp SHORT G_M35959_IG11
+ ;; size=5 bbWeight=4 PerfScore 12.00
+G_M35959_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
cmp edx, dword ptr [eax]
- jne SHORT G_M35959_IG08
+ jne SHORT G_M35959_IG10
cmp esi, 1
- jne SHORT G_M35959_IG08
+ jne SHORT G_M35959_IG09
mov ecx, bword ptr [ebp-0x14]
; byrRegs +[ecx]
mov edx, gword ptr [ebp+0x08]
@@ -107,7 +112,7 @@ G_M35959_IG06: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}
; gcrRegs -[edx]
; byrRegs -[eax ecx]
;; size=20 bbWeight=1 PerfScore 8.25
-G_M35959_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M35959_IG08: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -115,19 +120,29 @@ G_M35959_IG07: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-G_M35959_IG08: ; bbWeight=0, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M35959_IG09: ; bbWeight=0.50, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V09}
+ mov eax, bword ptr [ebp-0x14]
+ ; byrRegs +[eax]
+ jmp SHORT G_M35959_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M35959_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; byrRegs -[eax]
+ mov eax, bword ptr [ebp-0x14]
+ ; byrRegs +[eax]
+ ;; size=3 bbWeight=0.50 PerfScore 0.50
+G_M35959_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
+ ; GC ptr vars -{V00 V09}
push gword ptr [ebp+0x08]
; gcr arg push 0
- mov ecx, bword ptr [ebp-0x14]
+ mov ecx, eax
; byrRegs +[ecx]
mov edx, dword ptr [ebp-0x10]
- ; GC ptr vars -{V00 V09}
call [System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,uint,System.Object)]
- ; byrRegs -[ecx]
+ ; byrRegs -[eax ecx]
; gcr arg pop 1
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M35959_IG09: ; bbWeight=0, epilog, nogc, extend
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M35959_IG12: ; bbWeight=0, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -135,7 +150,13 @@ G_M35959_IG09: ; bbWeight=0, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0 PerfScore 0.00
+G_M35959_IG13: ; bbWeight=0, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V00 V09}
+ mov eax, bword ptr [ebp-0x14]
+ ; byrRegs +[eax]
+ jmp SHORT G_M35959_IG11
+ ;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 161, prolog size 15, PerfScore 182.75, instruction count 65, allocated bytes for code 161 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
+; Total bytes of code 178, prolog size 15, PerfScore 196.75, instruction count 72, allocated bytes for code 178 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
; ============================================================
@@ -13,7 +13,7 @@
; V02 loc0 [V02,T03] ( 15, 20.04) int -> [ebp-0x10]
; V03 loc1 [V03,T02] ( 11, 23.50) int -> [ebp-0x14]
; V04 tmp0 [V04,T08] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V05 tmp1 [V05,T01] ( 4, 24 ) ushort -> edx "Inlining Arg"
+; V05 tmp1 [V05,T01] ( 4, 24 ) ushort -> ecx "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V13 tmp9 [V13,T07] ( 4, 4 ) ubyte -> eax "Inline return value spill temp"
-; V14 tmp10 [V14,T00] ( 8, 24 ) ushort -> eax "Inlining Arg"
+; V14 tmp10 [V14,T00] ( 8, 24 ) ushort -> ecx "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -73,139 +73,117 @@ G_M50035_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ebx, dword ptr [esi+0x04]
lea eax, [ebx-0x01]
mov dword ptr [ebp-0x10], eax
- xor ecx, ecx
+ xor edx, edx
test edi, 1
- mov dword ptr [ebp-0x14], ecx
- je SHORT G_M50035_IG10
- ;; size=22 bbWeight=1 PerfScore 6.00
+ je SHORT G_M50035_IG09
+ ;; size=19 bbWeight=1 PerfScore 5.00
G_M50035_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- xor ecx, ecx
+ xor edx, edx
test ebx, ebx
- jle SHORT G_M50035_IG07
+ jle SHORT G_M50035_IG09
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M50035_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- movzx edx, word ptr [esi+2*ecx+0x08]
- cmp edx, 256
- jb SHORT G_M50035_IG08
- ;; size=13 bbWeight=4 PerfScore 13.00
+ mov dword ptr [ebp-0x14], edx
+ movzx ecx, word ptr [esi+2*edx+0x08]
+ cmp ecx, 256
+ jb SHORT G_M50035_IG07
+ ;; size=16 bbWeight=4 PerfScore 17.00
G_M50035_IG05: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- mov ecx, edx
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG10
- ;; size=15 bbWeight=2 PerfScore 11.00
-G_M50035_IG06: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [ebp-0x14]
+ je SHORT G_M50035_IG06
+ jmp SHORT G_M50035_IG08
+ ;; size=12 bbWeight=2 PerfScore 12.50
+G_M50035_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x14]
jmp SHORT G_M50035_IG09
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M50035_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG10
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG08: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [edx+D1FFAB1EH], 128
- je SHORT G_M50035_IG17
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M50035_IG15
;; size=9 bbWeight=2 PerfScore 8.00
-G_M50035_IG09: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- mov dword ptr [ebp-0x14], ecx
- cmp ebx, ecx
- jg SHORT G_M50035_IG16
+G_M50035_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x14]
+ inc edx
+ cmp ebx, edx
+ jg SHORT G_M50035_IG04
;; size=8 bbWeight=4 PerfScore 10.00
-G_M50035_IG10: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M50035_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test edi, 2
mov edi, dword ptr [ebp-0x10]
- je G_M50035_IG27
- ;; size=15 bbWeight=1 PerfScore 2.25
-G_M50035_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M50035_IG14
+ ;; size=11 bbWeight=1 PerfScore 2.25
+G_M50035_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea eax, [ebx-0x01]
mov edi, eax
- mov ecx, dword ptr [ebp-0x14]
- cmp edi, ecx
- jl SHORT G_M50035_IG15
- mov eax, edi
- or eax, ecx
- jl SHORT G_M50035_IG22
+ cmp edi, edx
+ jl SHORT G_M50035_IG13
+ mov dword ptr [ebp-0x14], edx
+ mov ecx, edi
+ or ecx, edx
+ jl SHORT G_M50035_IG18
cmp ebx, edi
- jle SHORT G_M50035_IG22
+ jle SHORT G_M50035_IG18
;; size=22 bbWeight=0.50 PerfScore 2.88
-G_M50035_IG12: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [esi+2*edi+0x08]
- cmp eax, 256
- jb SHORT G_M50035_IG18
- ;; size=12 bbWeight=3.96 PerfScore 12.87
-G_M50035_IG13: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- mov ecx, eax
+G_M50035_IG11: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, word ptr [esi+2*edi+0x08]
+ cmp ecx, 256
+ jb SHORT G_M50035_IG16
+ ;; size=13 bbWeight=3.96 PerfScore 12.87
+G_M50035_IG12: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG27
- ;; size=15 bbWeight=1.98 PerfScore 10.89
-G_M50035_IG14: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M50035_IG19
- ;; size=5 bbWeight=3.96 PerfScore 11.88
-G_M50035_IG15: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG27
+ je SHORT G_M50035_IG22
+ jmp SHORT G_M50035_IG17
+ ;; size=12 bbWeight=1.98 PerfScore 12.38
+G_M50035_IG13: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x14], edx
+ jmp SHORT G_M50035_IG22
;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG16: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov ecx, dword ptr [ebp-0x14]
- jmp G_M50035_IG04
- ;; size=8 bbWeight=2 PerfScore 6.00
-G_M50035_IG17: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG10
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M50035_IG18: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [eax+D1FFAB1EH], 128
- je SHORT G_M50035_IG21
- ;; size=9 bbWeight=1.98 PerfScore 7.92
-G_M50035_IG19: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- dec edi
- mov dword ptr [ebp-0x14], ecx
- cmp edi, ecx
- mov ecx, dword ptr [ebp-0x14]
- jge SHORT G_M50035_IG12
- ;; size=11 bbWeight=3.96 PerfScore 13.86
-G_M50035_IG20: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG27
+G_M50035_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x14], edx
+ jmp SHORT G_M50035_IG22
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M50035_IG21: ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- jmp SHORT G_M50035_IG27
- ;; size=5 bbWeight=0.99 PerfScore 2.97
-G_M50035_IG22: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG15: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x14]
+ jmp SHORT G_M50035_IG09
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG16: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M50035_IG22
+ ;; size=9 bbWeight=1.98 PerfScore 7.92
+G_M50035_IG17: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ dec edi
+ mov edx, dword ptr [ebp-0x14]
+ cmp edi, edx
+ jge SHORT G_M50035_IG11
+ jmp SHORT G_M50035_IG22
+ ;; size=10 bbWeight=3.96 PerfScore 17.82
+G_M50035_IG18: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae SHORT G_M50035_IG31
- movzx eax, word ptr [esi+2*edi+0x08]
- cmp eax, 256
- jb SHORT G_M50035_IG25
- ;; size=16 bbWeight=0.04 PerfScore 0.18
-G_M50035_IG23: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], ecx
- mov ecx, eax
+ jae SHORT G_M50035_IG24
+ movzx ecx, word ptr [esi+2*edi+0x08]
+ cmp ecx, 256
+ jb SHORT G_M50035_IG20
+ ;; size=17 bbWeight=0.04 PerfScore 0.18
+G_M50035_IG19: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG27
- ;; size=15 bbWeight=0.02 PerfScore 0.11
-G_M50035_IG24: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M50035_IG26
- ;; size=5 bbWeight=0.04 PerfScore 0.12
-G_M50035_IG25: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [eax+D1FFAB1EH], 128
- je SHORT G_M50035_IG30
+ je SHORT G_M50035_IG22
+ jmp SHORT G_M50035_IG21
+ ;; size=12 bbWeight=0.02 PerfScore 0.13
+G_M50035_IG20: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M50035_IG22
;; size=9 bbWeight=0.02 PerfScore 0.08
-G_M50035_IG26: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG21: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
dec edi
- mov dword ptr [ebp-0x14], ecx
- cmp edi, ecx
- jge SHORT G_M50035_IG29
- ;; size=8 bbWeight=0.04 PerfScore 0.10
-G_M50035_IG27: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, dword ptr [ebp-0x14]
+ cmp edi, edx
+ mov dword ptr [ebp-0x14], edx
+ jge SHORT G_M50035_IG18
+ ;; size=11 bbWeight=0.04 PerfScore 0.14
+G_M50035_IG22: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
push edi
mov ecx, esi
; gcrRegs +[ecx]
@@ -213,7 +191,7 @@ G_M50035_IG27: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [System.String:CreateTrimmedString(int,int):System.String:this]
; gcrRegs -[ecx esi] +[eax]
;; size=12 bbWeight=1 PerfScore 5.25
-G_M50035_IG28: ; bbWeight=1, epilog, nogc, extend
+G_M50035_IG23: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
...
1[ushort]):System.ReadOnlySpan
1ushort@@ -13,7 +13,7 @@
; V02 loc0 [V02,T00] ( 11, 26 ) int -> [ebp-0x10]
; V03 loc1 [V03,T03] ( 8, 23 ) int -> [ebp-0x14]
; V04 loc2 [V04,T09] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V05 tmp1 [V05,T01] ( 4, 24 ) ushort -> eax "Inlining Arg"
+; V05 tmp1 [V05,T01] ( 4, 24 ) ushort -> ecx "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V13 tmp9 [V13,T10] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V14 tmp10 [V14,T02] ( 4, 24 ) ushort -> edx "Inlining Arg"
+; V14 tmp10 [V14,T02] ( 4, 24 ) ushort -> ecx "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp13 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -60,7 +60,7 @@
;* V49 tmp45 [V49 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP
; V51 tmp47 [V51,T11] ( 2, 2 ) byref -> edi single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-; V52 tmp48 [V52,T13] ( 2, 2 ) int -> eax "field V23._length (fldOffset=0x4)" P-INDEP
+; V52 tmp48 [V52,T13] ( 2, 2 ) int -> edx "field V23._length (fldOffset=0x4)" P-INDEP
; V53 tmp49 [V53,T05] ( 4, 10 ) byref -> edi single-def "V01.[000..004)"
; V54 tmp50 [V54,T04] ( 7, 13 ) int -> ebx "V01.[004..008)"
;
@@ -80,106 +80,94 @@ G_M20594_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
mov edi, bword ptr [ebp+0x08]
; byrRegs +[edi]
mov ebx, dword ptr [ebp+0x0C]
- xor ecx, ecx
+ xor eax, eax
test ebx, ebx
- jle SHORT G_M20594_IG06
+ jle SHORT G_M20594_IG08
;; size=12 bbWeight=1 PerfScore 3.50
G_M20594_IG03: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- movzx eax, word ptr [edi+2*ecx]
- cmp eax, 256
- jb SHORT G_M20594_IG07
- ;; size=11 bbWeight=4 PerfScore 13.00
+ mov dword ptr [ebp-0x10], eax
+ movzx ecx, word ptr [edi+2*eax]
+ cmp ecx, 256
+ jb SHORT G_M20594_IG06
+ ;; size=15 bbWeight=4 PerfScore 17.00
G_M20594_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- mov ecx, eax
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M20594_IG09
- ;; size=15 bbWeight=2 PerfScore 11.00
-G_M20594_IG05: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov ecx, dword ptr [ebp-0x10]
+ je SHORT G_M20594_IG05
+ jmp SHORT G_M20594_IG07
+ ;; size=12 bbWeight=2 PerfScore 12.50
+G_M20594_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
jmp SHORT G_M20594_IG08
- ;; size=5 bbWeight=4 PerfScore 12.00
-G_M20594_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- jmp SHORT G_M20594_IG09
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M20594_IG07: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- test byte ptr [eax+D1FFAB1EH], 128
- je SHORT G_M20594_IG15
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M20594_IG06: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M20594_IG13
;; size=9 bbWeight=2 PerfScore 8.00
-G_M20594_IG08: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- inc ecx
- mov dword ptr [ebp-0x10], ecx
- cmp ecx, ebx
- jl SHORT G_M20594_IG14
- ;; size=8 bbWeight=4 PerfScore 10.00
-G_M20594_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- lea eax, [ebx-0x01]
- mov ecx, dword ptr [ebp-0x10]
- cmp eax, ecx
- jle SHORT G_M20594_IG13
- ;; size=10 bbWeight=1 PerfScore 2.75
-G_M20594_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M20594_IG07: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ inc eax
cmp eax, ebx
- jae G_M20594_IG24
- movzx edx, word ptr [edi+2*eax]
- cmp edx, 256
- jb SHORT G_M20594_IG16
- ;; size=20 bbWeight=4 PerfScore 18.00
-G_M20594_IG11: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- mov dword ptr [ebp-0x14], eax
- mov ecx, edx
+ jl SHORT G_M20594_IG03
+ ;; size=8 bbWeight=4 PerfScore 10.00
+G_M20594_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ lea edx, [ebx-0x01]
+ mov dword ptr [ebp-0x10], eax
+ cmp edx, eax
+ jle SHORT G_M20594_IG12
+ ;; size=10 bbWeight=1 PerfScore 2.75
+G_M20594_IG09: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ cmp edx, ebx
+ jae G_M20594_IG22
+ mov dword ptr [ebp-0x14], edx
+ movzx ecx, word ptr [edi+2*edx]
+ cmp ecx, 256
+ jb SHORT G_M20594_IG14
+ ;; size=23 bbWeight=4 PerfScore 22.00
+G_M20594_IG10: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M20594_IG18
- ;; size=18 bbWeight=2 PerfScore 13.00
-G_M20594_IG12: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov eax, dword ptr [ebp-0x14]
- mov ecx, dword ptr [ebp-0x10]
- jmp SHORT G_M20594_IG17
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M20594_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- mov dword ptr [ebp-0x14], eax
- jmp SHORT G_M20594_IG18
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M20594_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov ecx, dword ptr [ebp-0x10]
- jmp SHORT G_M20594_IG03
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M20594_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- jmp SHORT G_M20594_IG09
+ je SHORT G_M20594_IG11
+ jmp SHORT G_M20594_IG15
+ ;; size=12 bbWeight=2 PerfScore 12.50
+G_M20594_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ mov edx, dword ptr [ebp-0x14]
+ jmp SHORT G_M20594_IG16
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M20594_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ jmp SHORT G_M20594_IG16
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M20594_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ jmp SHORT G_M20594_IG08
;; size=5 bbWeight=1 PerfScore 3.00
-G_M20594_IG16: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- test byte ptr [edx+D1FFAB1EH], 128
- je SHORT G_M20594_IG23
+G_M20594_IG14: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ test byte ptr [ecx+D1FFAB1EH], 128
+ je SHORT G_M20594_IG21
;; size=9 bbWeight=2 PerfScore 8.00
-G_M20594_IG17: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- dec eax
- mov dword ptr [ebp-0x14], eax
- mov dword ptr [ebp-0x10], ecx
- cmp eax, ecx
- jg SHORT G_M20594_IG22
+G_M20594_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov edx, dword ptr [ebp-0x14]
+ dec edx
+ mov eax, dword ptr [ebp-0x10]
+ cmp edx, eax
+ jg SHORT G_M20594_IG20
;; size=11 bbWeight=4 PerfScore 14.00
-G_M20594_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov eax, dword ptr [ebp-0x14]
- mov ecx, dword ptr [ebp-0x10]
- sub eax, ecx
- inc eax
- mov dword ptr [ebp-0x18], eax
- cmp ecx, ebx
- ja SHORT G_M20594_IG25
- sub ebx, ecx
- cmp ebx, eax
- jb SHORT G_M20594_IG25
- lea edi, bword ptr [edi+2*ecx]
- test eax, eax
- jge SHORT G_M20594_IG20
- ;; size=29 bbWeight=1 PerfScore 8.00
-G_M20594_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+G_M20594_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ sub edx, eax
+ inc edx
+ mov dword ptr [ebp-0x18], edx
+ cmp eax, ebx
+ ja SHORT G_M20594_IG23
+ sub ebx, eax
+ cmp ebx, edx
+ jb SHORT G_M20594_IG23
+ lea edi, bword ptr [edi+2*eax]
+ test edx, edx
+ jge SHORT G_M20594_IG18
+ ;; size=23 bbWeight=1 PerfScore 6.00
+G_M20594_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -187,12 +175,12 @@ G_M20594_IG19: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M20594_IG20: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- mov eax, dword ptr [ebp-0x18]
+G_M20594_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+ mov edx, dword ptr [ebp-0x18]
mov bword ptr [esi], edi
- mov dword ptr [esi+0x04], eax
+ mov dword ptr [esi+0x04], edx
;; size=8 bbWeight=1 PerfScore 3.00
-G_M20594_IG21: ; bbWeight=1, epilog, nogc, extend
+G_M20594_IG19: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -200,25 +188,24 @@ G_M20594_IG21: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=1 PerfScore 4.50
-G_M20594_IG22: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref
- mov eax, dword ptr [ebp-0x14]
- mov ecx, dword ptr [ebp-0x10]
- jmp G_M20594_IG10
- ;; size=11 bbWeight=2 PerfScore 8.00
-G_M20594_IG23: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x10], ecx
- mov dword ptr [ebp-0x14], eax
- jmp SHORT G_M20594_IG18
+G_M20594_IG20: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref
+ mov dword ptr [ebp-0x10], eax
+ jmp G_M20594_IG09
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M20594_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+ mov eax, dword ptr [ebp-0x10]
+ mov edx, dword ptr [ebp-0x14]
+ jmp SHORT G_M20594_IG16
;; size=8 bbWeight=1 PerfScore 4.00
-G_M20594_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M20594_IG22: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[esi edi]
...
@@ -39,11 +39,11 @@ G_M33320_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
sub esp, 12
mov eax, ecx
;; size=11 bbWeight=1 PerfScore 4.75
-G_M33320_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M33320_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx]
test edx, edx
- je G_M33320_IG11
- ;; size=8 bbWeight=1 PerfScore 1.25
+ je SHORT G_M33320_IG10
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M33320_IG03: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V01}
@@ -51,7 +51,7 @@ G_M33320_IG03: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000
mov dword ptr [ebp-0x14], esi
cmp esi, eax
mov edx, gword ptr [ebp-0x18]
- je SHORT G_M33320_IG11
+ je SHORT G_M33320_IG10
mov edi, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[edi]
add edi, 8
@@ -83,50 +83,41 @@ G_M33320_IG05: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000084 {e
mov esi, dword ptr [ebp-0x10]
xor esi, dword ptr [edx+0x08]
cmp esi, 1
- jbe SHORT G_M33320_IG08
+ jbe SHORT G_M33320_IG07
;; size=11 bbWeight=2 PerfScore 10.50
G_M33320_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
; byrRegs -[edx]
test eax, eax
- je SHORT G_M33320_IG09
+ je SHORT G_M33320_IG08
inc ecx
add ebx, ecx
and ebx, dword ptr [edi+0x04]
cmp ecx, 8
jl SHORT G_M33320_IG04
- ;; size=15 bbWeight=4 PerfScore 24.00
-G_M33320_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edi]
- mov eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x18]
- ; gcrRegs +[edx]
- mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x18], edx
- jmp SHORT G_M33320_IG09
- ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
+ jmp SHORT G_M33320_IG08
+ ;; size=17 bbWeight=4 PerfScore 32.00
+G_M33320_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
+ ; byrRegs -[edi] +[edx]
cmp eax, dword ptr [edx]
- jne SHORT G_M33320_IG09
- jmp SHORT G_M33320_IG10
+ jne SHORT G_M33320_IG08
+ jmp SHORT G_M33320_IG09
;; size=6 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33320_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[edx]
mov esi, 2
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33320_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp esi, 1
mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
- jne SHORT G_M33320_IG13
+ jne SHORT G_M33320_IG12
;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M33320_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M33320_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V01}
mov eax, edx
; gcrRegs +[eax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG11: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -134,7 +125,7 @@ G_M33320_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M33320_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33320_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
mov eax, dword ptr [ebp-0x10]
mov ecx, eax
@@ -143,7 +134,7 @@ G_M33320_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
mov edi, eax
; gcrRegs +[edi]
test esi, esi
- jne SHORT G_M33320_IG14
+ jne SHORT G_M33320_IG13
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -151,11 +142,11 @@ G_M33320_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
call [<unknown method>]
; gcrRegs -[eax ecx edx]
;; size=32 bbWeight=0.50 PerfScore 3.62
-G_M33320_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M33320_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov eax, edi
; gcrRegs +[eax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG14: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -164,6 +155,6 @@ G_M33320_IG15: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 201, prolog size 11, PerfScore 99.00, instruction count 80, allocated bytes for code 201 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 185, prolog size 11, PerfScore 104.00, instruction count 76, allocated bytes for code 185 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
; ============================================================
1[ushort],System.ReadOnlySpan
1[ushort]):System.ReadOnlySpan`1ushort@@ -15,10 +15,10 @@
; V04 loc1 [V04,T00] ( 5, 84 ) int -> edx
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V06 tmp1 [V06,T08] ( 3, 3 ) int -> edi "Inlining Arg"
-; V07 tmp2 [V07,T09] ( 2, 2 ) byref -> ebx single-def "Inlining Arg"
+; V07 tmp2 [V07,T09] ( 2, 2 ) byref -> esi single-def "Inlining Arg"
;* V08 tmp3 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp4 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp5 [V10,T10] ( 2, 1 ) byref -> ebx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp5 [V10,T10] ( 2, 1 ) byref -> esi single-def "field V05._reference (fldOffset=0x0)" P-INDEP
; V11 tmp6 [V11,T11] ( 2, 1 ) int -> edi "field V05._length (fldOffset=0x4)" P-INDEP
; V12 tmp7 [V12,T05] ( 5, 6.50) int -> edi "V01.[004..008)"
; V13 tmp8 [V13,T03] ( 4, 22 ) int -> ebx "V02.[004..008)"
@@ -64,12 +64,12 @@ G_M16324_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; byrRegs +[esi]
xor ecx, ecx
test edi, edi
- jle SHORT G_M16324_IG11
+ jle SHORT G_M16324_IG10
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M16324_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
xor edx, edx
test ebx, ebx
- jle SHORT G_M16324_IG11
+ jle SHORT G_M16324_IG09
mov eax, bword ptr [ebp+0x10]
; byrRegs +[eax]
movzx eax, word ptr [eax+2*ecx]
@@ -84,36 +84,42 @@ G_M16324_IG07: ; bbWeight=32, gcVars=00000080 {V00}, gcrefRegs=00000000 {
movzx esi, word ptr [esi+2*edx]
; byrRegs -[esi]
cmp esi, eax
- je SHORT G_M16324_IG10
+ je SHORT G_M16324_IG11
;; size=11 bbWeight=32 PerfScore 136.00
G_M16324_IG08: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc edx
cmp edx, ebx
jl SHORT G_M16324_IG07
- ;; size=5 bbWeight=16 PerfScore 24.00
-G_M16324_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov esi, bword ptr [ebp-0x10]
+ jmp SHORT G_M16324_IG12
+ ;; size=7 bbWeight=16 PerfScore 56.00
+G_M16324_IG09: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; byrRegs +[esi]
- jmp SHORT G_M16324_IG11
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M16324_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; GC ptr vars -{V00}
+ mov bword ptr [ebp-0x10], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M16324_IG12
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG10: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ ; GC ptr vars -{V00}
+ mov bword ptr [ebp-0x10], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M16324_IG12
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M16324_IG11: ; bbWeight=4, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi]
inc ecx
cmp ecx, edi
- mov esi, bword ptr [ebp-0x10]
- ; byrRegs +[esi]
- jl SHORT G_M16324_IG06
- ;; size=8 bbWeight=4 PerfScore 10.00
-G_M16324_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; GC ptr vars -{V00}
+ jl SHORT G_M16324_IG15
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M16324_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ecx, edi
- ja SHORT G_M16324_IG14
+ ja SHORT G_M16324_IG16
mov edx, bword ptr [ebp+0x10]
; byrRegs +[edx]
- lea ebx, bword ptr [edx+2*ecx]
- ; byrRegs +[ebx]
+ lea esi, bword ptr [edx+2*ecx]
+ ; byrRegs +[esi]
sub edi, ecx
- jns SHORT G_M16324_IG12
+ jns SHORT G_M16324_IG13
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -122,11 +128,13 @@ G_M16324_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=30 bbWeight=0.50 PerfScore 3.75
-G_M16324_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
- mov bword ptr [esi], ebx
- mov dword ptr [esi+0x04], edi
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M16324_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M16324_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ mov ebx, bword ptr [ebp-0x10]
+ ; byrRegs +[ebx]
+ mov bword ptr [ebx], esi
+ mov dword ptr [ebx+0x04], edi
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M16324_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop ebx
pop esi
@@ -134,12 +142,19 @@ G_M16324_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 16
;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M16324_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M16324_IG15: ; bbWeight=2, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[ebx esi]
+ mov esi, bword ptr [ebp-0x10]
+ ; byrRegs +[esi]
+ jmp SHORT G_M16324_IG06
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; byrRegs -[esi]
+ ; GC ptr vars -{V00}
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 142, prolog size 9, PerfScore 214.88, instruction count 62, allocated bytes for code 142 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
+; Total bytes of code 154, prolog size 9, PerfScore 254.62, instruction count 67, allocated bytes for code 154 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
; ============================================================
@@ -42,15 +42,15 @@ G_M52602_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004
mov edx, 1
; byrRegs -[edx]
test eax, eax
- jle G_M52602_IG12
+ jle G_M52602_IG14
;; size=18 bbWeight=1 PerfScore 4.50
-G_M52602_IG03: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M52602_IG03: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
lea esi, [edx+0x01]
mov dword ptr [ebp-0x18], esi
mov edi, esi
cmp edi, eax
- jg G_M52602_IG11
- ;; size=16 bbWeight=4 PerfScore 12.00
+ jg SHORT G_M52602_IG10
+ ;; size=12 bbWeight=4 PerfScore 12.00
G_M52602_IG04: ; bbWeight=16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
mov ebx, 1
test ecx, ecx
@@ -60,7 +60,7 @@ G_M52602_IG05: ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
test eax, eax
jl SHORT G_M52602_IG08
cmp dword ptr [ecx+0x04], eax
- jle SHORT G_M52602_IG09
+ jle SHORT G_M52602_IG11
;; size=9 bbWeight=8 PerfScore 42.00
G_M52602_IG06: ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x20], ecx
@@ -70,14 +70,14 @@ G_M52602_IG06: ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=0000
mov ecx, esi
mov eax, dword ptr [ecx+0x04]
cmp edx, eax
- jae G_M52602_IG13
+ jae G_M52602_IG17
mov ecx, dword ptr [ecx+4*edx+0x08]
; gcrRegs -[ecx]
mov dword ptr [ebp-0x14], ecx
mov ecx, esi
; gcrRegs +[ecx]
cmp edi, eax
- jae SHORT G_M52602_IG13
+ jae G_M52602_IG17
mov eax, dword ptr [ecx+4*edi+0x08]
mov ecx, dword ptr [ebp-0x14]
; gcrRegs -[ecx]
@@ -85,20 +85,31 @@ G_M52602_IG06: ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=0000
mov dword ptr [esi+4*edi+0x08], ecx
inc ebx
cmp ebx, dword ptr [ebp-0x10]
+ jle SHORT G_M52602_IG07
+ jmp SHORT G_M52602_IG12
+ ;; size=58 bbWeight=63.36 PerfScore 1298.88
+G_M52602_IG07: ; bbWeight=31.68, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi]
mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- jle SHORT G_M52602_IG06
- ;; size=55 bbWeight=63.36 PerfScore 1235.52
-G_M52602_IG07: ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[esi]
+ jmp SHORT G_M52602_IG06
+ ;; size=5 bbWeight=31.68 PerfScore 95.04
+G_M52602_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V00}
- jmp SHORT G_M52602_IG10
+ jmp SHORT G_M52602_IG11
+ ;; size=2 bbWeight=4 PerfScore 8.00
+G_M52602_IG09: ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M52602_IG11
;; size=2 bbWeight=8 PerfScore 16.00
-G_M52602_IG08: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
- ;; size=0 bbWeight=4 PerfScore 0.00
-G_M52602_IG09: ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M52602_IG10: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x20], ecx
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M52602_IG13
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M52602_IG11: ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ; GC ptr vars -{V00}
cmp ebx, dword ptr [ecx+0x04]
- jae SHORT G_M52602_IG13
+ jae SHORT G_M52602_IG17
mov gword ptr [ebp-0x20], ecx
; GC ptr vars +{V00}
mov esi, gword ptr [ecx+4*ebx+0x08]
@@ -109,13 +120,13 @@ G_M52602_IG09: ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000
; gcrRegs -[ecx]
mov dword ptr [ebp-0x1C], ecx
cmp edx, ecx
- jae SHORT G_M52602_IG13
+ jae SHORT G_M52602_IG17
mov esi, dword ptr [esi+4*edx+0x08]
; gcrRegs -[esi]
mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
cmp edi, dword ptr [ebp-0x1C]
- jae SHORT G_M52602_IG13
+ jae SHORT G_M52602_IG17
mov ecx, dword ptr [ecx+4*edi+0x08]
; gcrRegs -[ecx]
mov eax, gword ptr [ebp-0x24]
@@ -126,25 +137,26 @@ G_M52602_IG09: ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000
mov eax, dword ptr [ebp-0x10]
; gcrRegs -[eax]
cmp ebx, eax
- mov ecx, gword ptr [ebp-0x20]
- ; gcrRegs +[ecx]
- jle SHORT G_M52602_IG09
- ;; size=61 bbWeight=0.64 PerfScore 16.64
-G_M52602_IG10: ; bbWeight=16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; GC ptr vars -{V00 V11}
+ jle SHORT G_M52602_IG16
+ ;; size=58 bbWeight=0.64 PerfScore 16.00
+G_M52602_IG12: ; bbWeight=16, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V11}
inc edi
mov eax, dword ptr [ebp-0x10]
cmp edi, eax
- jle G_M52602_IG04
- ;; size=12 bbWeight=16 PerfScore 40.00
-G_M52602_IG11: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ jle SHORT G_M52602_IG15
+ ;; size=8 bbWeight=16 PerfScore 40.00
+G_M52602_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov esi, dword ptr [ebp-0x18]
mov edx, esi
cmp edx, eax
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
jle G_M52602_IG03
- ;; size=13 bbWeight=4 PerfScore 10.00
-G_M52602_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=16 bbWeight=4 PerfScore 14.00
+G_M52602_IG14: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; gcrRegs -[ecx]
+ ; GC ptr vars -{V00}
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -152,11 +164,25 @@ G_M52602_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M52602_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M52602_IG15: ; bbWeight=8, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars +{V00 V11}
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
+ jmp G_M52602_IG04
+ ;; size=8 bbWeight=8 PerfScore 24.00
+G_M52602_IG16: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx]
+ mov ecx, gword ptr [ebp-0x20]
+ ; gcrRegs +[ecx]
+ jmp SHORT G_M52602_IG11
+ ;; size=5 bbWeight=0.32 PerfScore 0.96
+G_M52602_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V00 V11}
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 218, prolog size 9, PerfScore 1408.66, instruction count 82, allocated bytes for code 218 (MethodHash=2f153285) for method Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (Tier0-FullOpts)
+; Total bytes of code 238, prolog size 9, PerfScore 1609.38, instruction count 90, allocated bytes for code 238 (MethodHash=2f153285) for method Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (Tier0-FullOpts)
; ============================================================
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 13 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 5, 3.50) ref -> edi this class-hnd single-def <System.Xml.NameTable>
+; V00 this [V00,T06] ( 5, 3.50) ref -> [ebp-0x14] this class-hnd single-def <System.Xml.NameTable>
; V01 arg1 [V01,T04] ( 7, 7 ) ref -> esi class-hnd single-def <System.String>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 loc1 [V03,T07] ( 4, 5.50) int -> [ebp-0x10] spill-single-def
@@ -25,8 +25,8 @@
;* V14 tmp9 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp10 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V16 tmp11 [V16,T03] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V17 tmp12 [V17,T00] ( 6, 52 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
-; V18 tmp13 [V18,T05] ( 2, 8 ) byref -> ebx "impAppendStmt"
+; V17 tmp12 [V17,T00] ( 6, 52 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V18 tmp13 [V18,T05] ( 2, 8 ) byref -> edi "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -44,9 +44,9 @@
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x4)" P-INDEP
-; V36 tmp31 [V36,T08] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V37 tmp32 [V37,T10] ( 3, 3 ) int -> edx "index expr"
-; V38 cse0 [V38,T02] ( 4, 18.50) int -> [ebp-0x14] spill-single-def "CSE - aggressive"
+; V36 tmp31 [V36,T08] ( 3, 3 ) ref -> edx single-def "arr expr"
+; V37 tmp32 [V37,T10] ( 3, 3 ) int -> ecx "index expr"
+; V38 cse0 [V38,T02] ( 4, 18.50) int -> ebx "CSE - aggressive"
; V39 cse1 [V39,T09] ( 3, 3 ) byref -> [ebp-0x1C] spill-single-def "CSE - moderate"
;* V40 rat0 [V40 ] ( 0, 0 ) int -> zero-ref "field V13.lo (fldOffset=0x0)" P-INDEP
;* V41 rat1 [V41 ] ( 0, 0 ) int -> zero-ref "field V13.hi (fldOffset=0x4)" P-INDEP
@@ -67,12 +67,11 @@ G_M51747_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=13 bbWeight=1 PerfScore 5.00
G_M51747_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
- je G_M51747_IG16
+ je G_M51747_IG19
mov ebx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], ebx
test ebx, ebx
jne SHORT G_M51747_IG05
- ;; size=18 bbWeight=1 PerfScore 5.50
+ ;; size=15 bbWeight=1 PerfScore 4.50
G_M51747_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
mov eax, 0xD1FFAB1E
@@ -101,73 +100,80 @@ G_M51747_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
call [<unknown method>]
; byrRegs -[eax ecx]
mov dword ptr [ebp-0x10], eax
- mov ecx, gword ptr [edi+0x04]
- ; gcrRegs +[ecx]
- mov edx, eax
- and edx, dword ptr [edi+0x0C]
- cmp edx, dword ptr [ecx+0x04]
- jae SHORT G_M51747_IG15
- mov edx, gword ptr [ecx+4*edx+0x08]
+ mov edx, gword ptr [edi+0x04]
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M51747_IG11
- ;; size=52 bbWeight=0.50 PerfScore 10.38
-G_M51747_IG06: ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- cmp dword ptr [edx+0x0C], eax
- jne SHORT G_M51747_IG10
- ;; size=5 bbWeight=4 PerfScore 16.00
-G_M51747_IG07: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [edx+0x04]
+ mov gword ptr [ebp-0x14], edi
+ ; GC ptr vars +{V00}
+ mov ecx, eax
+ and ecx, dword ptr [edi+0x0C]
+ cmp ecx, dword ptr [edx+0x04]
+ jae SHORT G_M51747_IG18
+ mov ecx, gword ptr [edx+4*ecx+0x08]
; gcrRegs +[ecx]
- cmp byte ptr [ecx], cl
- cmp ecx, esi
- je SHORT G_M51747_IG13
- ;; size=9 bbWeight=2 PerfScore 12.50
-G_M51747_IG08: ; bbWeight=16, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [ecx+0x04], ebx
+ test ecx, ecx
+ mov edi, gword ptr [ebp-0x14]
+ je SHORT G_M51747_IG15
+ ;; size=58 bbWeight=0.50 PerfScore 11.38
+G_M51747_IG06: ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edx]
+ ; GC ptr vars -{V00}
+ cmp dword ptr [ecx+0x0C], eax
+ jne SHORT G_M51747_IG14
+ ;; size=5 bbWeight=4 PerfScore 16.00
+G_M51747_IG07: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x18], ecx
+ ; GC ptr vars +{V04}
+ mov edx, gword ptr [ecx+0x04]
+ ; gcrRegs +[edx]
+ cmp byte ptr [edx], dl
+ cmp edx, esi
+ je SHORT G_M51747_IG16
+ ;; size=12 bbWeight=2 PerfScore 14.50
+G_M51747_IG08: ; bbWeight=16, gcVars=00000202 {V04 V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ cmp dword ptr [edx+0x04], ebx
jne SHORT G_M51747_IG10
;; size=5 bbWeight=16 PerfScore 64.00
-G_M51747_IG09: ; bbWeight=2, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
- ; GC ptr vars +{V04}
- lea ebx, bword ptr [ecx+0x08]
- ; byrRegs +[ebx]
- mov ecx, dword ptr [ecx+0x04]
- ; gcrRegs -[ecx]
- add ecx, ecx
- push ecx
- mov edx, bword ptr [ebp-0x1C]
+G_M51747_IG09: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edi
+ ; GC ptr vars +{V00}
+ lea edi, bword ptr [edx+0x08]
+ ; gcrRegs -[edi]
+ ; byrRegs +[edi]
+ mov edx, dword ptr [edx+0x04]
; gcrRegs -[edx]
+ add edx, edx
+ push edx
+ mov edx, bword ptr [ebp-0x1C]
; byrRegs +[edx]
- mov ecx, ebx
+ mov ecx, edi
; byrRegs +[ecx]
call [<unknown method>]
- ; byrRegs -[ecx edx ebx]
+ ; byrRegs -[ecx edx edi]
test eax, eax
- mov eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x18]
- ; gcrRegs +[edx]
- mov ebx, dword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp-0x14]
+ ; gcrRegs +[edi]
+ jne SHORT G_M51747_IG16
+ ;; size=30 bbWeight=2 PerfScore 22.50
+G_M51747_IG10: ; bbWeight=4, gcVars=00000202 {V04 V39}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
+ mov ecx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ecx]
+ mov ecx, gword ptr [ecx+0x08]
+ test ecx, ecx
jne SHORT G_M51747_IG13
- ;; size=36 bbWeight=2 PerfScore 26.50
-G_M51747_IG10: ; bbWeight=4, gcVars=00000200 {V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V04}
- mov edx, gword ptr [edx+0x08]
- test edx, edx
- jne SHORT G_M51747_IG06
- ;; size=7 bbWeight=4 PerfScore 13.00
+ ;; size=10 bbWeight=4 PerfScore 17.00
G_M51747_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx]
- ; GC ptr vars -{V39}
- push eax
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V04 V39}
+ push dword ptr [ebp-0x10]
mov ecx, edi
; gcrRegs +[ecx]
mov edx, esi
; gcrRegs +[edx]
call [System.Xml.NameTable:AddEntry(System.String,int):System.String:this]
; gcrRegs -[ecx edx esi edi] +[eax]
- ;; size=11 bbWeight=0.50 PerfScore 2.25
+ ;; size=13 bbWeight=0.50 PerfScore 2.25
G_M51747_IG12: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -176,12 +182,31 @@ G_M51747_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[edx]
- mov eax, gword ptr [edx+0x04]
+G_M51747_IG13: ; bbWeight=2, gcVars=00000200 {V39}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[ecx esi edi]
+ ; GC ptr vars +{V09 V39}
+ mov eax, dword ptr [ebp-0x10]
+ jmp SHORT G_M51747_IG06
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG14: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x18], ecx
+ ; GC ptr vars +{V04}
+ jmp SHORT G_M51747_IG10
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG15: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V04 V09 V39}
+ jmp SHORT G_M51747_IG11
+ ;; size=2 bbWeight=0.25 PerfScore 0.50
+G_M51747_IG16: ; bbWeight=0.50, gcVars=00000002 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[esi edi]
+ ; GC ptr vars +{V01 V04}
+ mov ecx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ecx]
+ mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
- ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M51747_IG17: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -189,11 +214,12 @@ G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edx]
+G_M51747_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax ecx]
+ ; GC ptr vars -{V01 V04}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M51747_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51747_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 5
mov edx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -205,6 +231,6 @@ G_M51747_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 217, prolog size 13, PerfScore 161.50, instruction count 86, allocated bytes for code 217 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
+; Total bytes of code 237, prolog size 13, PerfScore 176.50, instruction count 93, allocated bytes for code 237 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
; ============================================================
@@ -11,14 +11,13 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> esi class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T01] ( 5, 3 ) ref -> edi class-hnd single-def <System.Action`1[ubyte]>
-; V03 arg3 [V03,T03] ( 5, 2.25) ref -> ebx class-hnd single-def <System.Object>
-;* V04 tmp0 [V04,T08] ( 0, 0 ) int -> zero-ref
+; V03 arg3 [V03,T03] ( 4, 2 ) ref -> ebx class-hnd single-def <System.Object>
+;* V04 tmp0 [V04,T07] ( 0, 0 ) int -> zero-ref
; V05 tmp1 [V05,T02] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V06 tmp2 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V07 tmp3 [V07,T09] ( 0, 0 ) int -> zero-ref
-; V08 tmp4 [V08,T07] ( 2, 1 ) ubyte -> ecx single-def "Inline stloc first use temp"
+;* V06 tmp2 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V07 tmp3 [V07,T08] ( 0, 0 ) int -> zero-ref
+; V08 tmp4 [V08,T06] ( 2, 1 ) ubyte -> edx single-def "Inline stloc first use temp"
; V09 tmp5 [V09,T04] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T05] ( 3, 1.50) int -> edx "CSE - moderate"
;
; Lcl frame size = 0
@@ -37,67 +36,57 @@ G_M19162_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=14 bbWeight=1 PerfScore 6.50
G_M19162_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- je SHORT G_M19162_IG07
+ je SHORT G_M19162_IG04
;; size=4 bbWeight=1 PerfScore 1.25
G_M19162_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [edi], 0xD1FFAB1E
- jne SHORT G_M19162_IG07
+ jne SHORT G_M19162_IG04
test ebx, ebx
- je SHORT G_M19162_IG07
- mov edx, dword ptr [ebx]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M19162_IG07
- cmp edx, 0xD1FFAB1E
- je SHORT G_M19162_IG05
- ;; size=30 bbWeight=0.50 PerfScore 4.88
-G_M19162_IG04: ; bbWeight=0.25, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M19162_IG04
+ cmp dword ptr [ebx], 0xD1FFAB1E
+ je SHORT G_M19162_IG06
+ ;; size=20 bbWeight=0.50 PerfScore 4.62
+G_M19162_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ movzx edx, byte ptr [esi+0x08]
+ mov byte ptr [esi+0x08], 0
+ test edx, edx
+ je SHORT G_M19162_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.12
+G_M19162_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 8
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M19162_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi]
- mov edx, ebx
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M19162_IG05: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
movzx edx, byte ptr [ebx+0x04]
mov ecx, gword ptr [edi+0x04]
; gcrRegs +[ecx]
call [edi+0x0C]<unknown method>
; gcrRegs -[ecx ebx edi]
;; size=10 bbWeight=0.50 PerfScore 3.50
-G_M19162_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M19162_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 8
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M19162_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M19162_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi edi]
- movzx ecx, byte ptr [esi+0x08]
- mov byte ptr [esi+0x08], 0
- test ecx, ecx
- je SHORT G_M19162_IG09
- ;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M19162_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 8
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M19162_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [esi], ecx
- je SHORT G_M19162_IG11
+ je SHORT G_M19162_IG10
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M19162_IG10: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M19162_IG09: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov edx, esi
; gcrRegs +[edx]
call [CORINFO_HELP_CHKCASTCLASS_SPECIAL]
; gcrRegs -[edx] +[eax]
;; size=8 bbWeight=0.25 PerfScore 0.81
-G_M19162_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M19162_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
@@ -110,7 +99,7 @@ G_M19162_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call [eax+0x0C]<unknown method>
; gcrRegs -[eax ecx edx ebx esi edi]
;; size=15 bbWeight=0.50 PerfScore 4.62
-G_M19162_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M19162_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
@@ -118,6 +107,6 @@ G_M19162_IG12: ; bbWeight=0.50, epilog, nogc, extend
ret 8
;; size=7 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 136, prolog size 6, PerfScore 32.69, instruction count 55, allocated bytes for code 136 (MethodHash=f3a5b525) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Action`1[ubyte],System.Object) (FullOpts)
+; Total bytes of code 113, prolog size 6, PerfScore 31.56, instruction count 49, allocated bytes for code 113 (MethodHash=f3a5b525) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Action`1[ubyte],System.Object) (FullOpts)
; ============================================================
@@ -10,15 +10,14 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> esi class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T05] ( 2, 1.50) ref -> ebx class-hnd single-def <System.Type>
-; V03 arg3 [V03,T02] ( 5, 2.25) ref -> edi class-hnd single-def <System.Object>
+; V02 arg2 [V02,T04] ( 2, 1.50) ref -> ebx class-hnd single-def <System.Type>
+; V03 arg3 [V03,T02] ( 4, 2 ) ref -> edi class-hnd single-def <System.Object>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V05 tmp0 [V05,T01] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V06 tmp1 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V07 tmp2 [V07,T08] ( 0, 0 ) int -> zero-ref
-; V08 tmp3 [V08,T07] ( 2, 1 ) ubyte -> ecx single-def "Inline stloc first use temp"
+;* V06 tmp1 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V07 tmp2 [V07,T07] ( 0, 0 ) int -> zero-ref
+; V08 tmp3 [V08,T06] ( 2, 1 ) ubyte -> ecx single-def "Inline stloc first use temp"
; V09 tmp4 [V09,T03] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 3, 1.50) int -> edx "CSE - moderate"
;
; Lcl frame size = 0
@@ -37,65 +36,55 @@ G_M32564_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=14 bbWeight=1 PerfScore 6.50
G_M32564_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp ebx, 0xD1FFAB1E
- jne SHORT G_M32564_IG07
+ jne SHORT G_M32564_IG04
;; size=8 bbWeight=1 PerfScore 1.25
G_M32564_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- je SHORT G_M32564_IG07
- mov edx, dword ptr [edi]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M32564_IG07
- cmp edx, 0xD1FFAB1E
- je SHORT G_M32564_IG05
- ;; size=22 bbWeight=0.50 PerfScore 2.88
-G_M32564_IG04: ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M32564_IG04
+ cmp dword ptr [edi], 0xD1FFAB1E
+ je SHORT G_M32564_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 2.62
+G_M32564_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, byte ptr [esi+0x08]
+ mov byte ptr [esi+0x08], 0
+ test ecx, ecx
+ je SHORT G_M32564_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.12
+G_M32564_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 8
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M32564_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi]
- mov edx, edi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M32564_IG05: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
push gword ptr [D1FFAB1EH]
movzx ecx, byte ptr [edi+0x04]
xor edx, edx
call [<unknown method>]
; gcrRegs -[edi]
;; size=18 bbWeight=0.50 PerfScore 3.62
-G_M32564_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 8
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M32564_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M32564_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi edi]
- movzx ecx, byte ptr [esi+0x08]
- mov byte ptr [esi+0x08], 0
- test ecx, ecx
- je SHORT G_M32564_IG09
- ;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M32564_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 8
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M32564_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [esi], ecx
- je SHORT G_M32564_IG11
+ je SHORT G_M32564_IG10
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M32564_IG10: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M32564_IG09: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov edx, esi
; gcrRegs +[edx]
call [CORINFO_HELP_CHKCASTCLASS_SPECIAL]
; gcrRegs -[edx] +[eax]
;; size=8 bbWeight=0.25 PerfScore 0.81
-G_M32564_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M32564_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
@@ -108,7 +97,7 @@ G_M32564_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call [eax+0x0C]<unknown method>
; gcrRegs -[eax ecx edx ebx esi edi]
;; size=15 bbWeight=0.50 PerfScore 4.62
-G_M32564_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
@@ -116,6 +105,6 @@ G_M32564_IG12: ; bbWeight=0.50, epilog, nogc, extend
ret 8
;; size=7 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 140, prolog size 6, PerfScore 30.81, instruction count 54, allocated bytes for code 140 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
+; Total bytes of code 117, prolog size 6, PerfScore 29.69, instruction count 48, allocated bytes for code 117 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
; ============================================================
@@ -10,17 +10,16 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> esi class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T06] ( 2, 1.50) ref -> ebx class-hnd single-def <System.Type>
+; V02 arg2 [V02,T05] ( 2, 1.50) ref -> ebx class-hnd single-def <System.Type>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.DateTime>
-; V04 arg4 [V04,T02] ( 5, 2.25) ref -> edi class-hnd single-def <System.Object>
+; V04 arg4 [V04,T02] ( 4, 2 ) ref -> edi class-hnd single-def <System.Object>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V06 tmp0 [V06,T01] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V07 tmp1 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp2 [V08,T09] ( 0, 0 ) int -> zero-ref
-; V09 tmp3 [V09,T08] ( 2, 1 ) ubyte -> ecx single-def "Inline stloc first use temp"
+;* V07 tmp1 [V07,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp2 [V08,T08] ( 0, 0 ) int -> zero-ref
+; V09 tmp3 [V09,T07] ( 2, 1 ) ubyte -> eax single-def "Inline stloc first use temp"
; V10 tmp4 [V10,T04] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <<unknown class>>
; V11 tmp5 [V11,T03] ( 4, 2 ) long -> [ebp+0x0C] do-not-enreg[F] single-def "field V03._dateData (fldOffset=0x0)" P-INDEP
-; V12 cse0 [V12,T05] ( 3, 1.50) int -> edx "CSE - moderate"
;
; Lcl frame size = 0
@@ -39,26 +38,29 @@ G_M51634_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=14 bbWeight=1 PerfScore 6.50
G_M51634_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp ebx, 0xD1FFAB1E
- jne SHORT G_M51634_IG07
+ jne SHORT G_M51634_IG04
;; size=8 bbWeight=1 PerfScore 1.25
G_M51634_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- je SHORT G_M51634_IG07
- mov edx, dword ptr [edi]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M51634_IG07
- cmp edx, 0xD1FFAB1E
- je SHORT G_M51634_IG05
- ;; size=22 bbWeight=0.50 PerfScore 2.88
-G_M51634_IG04: ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M51634_IG04
+ cmp dword ptr [edi], 0xD1FFAB1E
+ je SHORT G_M51634_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 2.62
+G_M51634_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ movzx eax, byte ptr [esi+0x08]
+ mov byte ptr [esi+0x08], 0
+ test eax, eax
+ je SHORT G_M51634_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.12
+G_M51634_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 16
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M51634_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi]
- mov edx, edi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.DateTime
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M51634_IG05: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
push dword ptr [ebp+0x10]
push dword ptr [ebp+0x0C]
add edi, 4
@@ -69,39 +71,26 @@ G_M51634_IG05: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000
call [Xunit.Assert:Equal(System.DateTime,System.DateTime)]
; byrRegs -[edi]
;; size=20 bbWeight=0.50 PerfScore 4.62
-G_M51634_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M51634_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 16
;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M51634_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51634_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi edi]
- movzx ecx, byte ptr [esi+0x08]
- mov byte ptr [esi+0x08], 0
- test ecx, ecx
- je SHORT G_M51634_IG09
- ;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M51634_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 16
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M51634_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [esi], ecx
- je SHORT G_M51634_IG11
+ je SHORT G_M51634_IG10
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M51634_IG10: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M51634_IG09: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov edx, esi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[edx] +[eax]
;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M51634_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M51634_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
@@ -116,7 +105,7 @@ G_M51634_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call [eax+0x0C]<unknown method>
; gcrRegs -[eax ecx edx ebx esi edi]
;; size=21 bbWeight=0.50 PerfScore 5.62
-G_M51634_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M51634_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
@@ -124,6 +113,6 @@ G_M51634_IG12: ; bbWeight=0.50, epilog, nogc, extend
ret 16
;; size=7 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 147, prolog size 6, PerfScore 32.31, instruction count 58, allocated bytes for code 147 (MethodHash=81fe364d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.DateTime,System.Object) (FullOpts)
+; Total bytes of code 124, prolog size 6, PerfScore 31.19, instruction count 52, allocated bytes for code 124 (MethodHash=81fe364d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.DateTime,System.Object) (FullOpts)
; ============================================================
@@ -9,9 +9,9 @@
; 4 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 5 ) byref -> esi this single-def
-; V01 tmp0 [V01,T03] ( 3, 6 ) int -> ecx "Span.get_Item index"
-; V02 tmp1 [V02,T02] ( 3, 6 ) byref -> eax "Span.get_Item ptrToSpan"
+; V00 this [V00,T01] ( 9, 5 ) byref -> esi this single-def
+; V01 tmp0 [V01,T03] ( 3, 6 ) int -> edi "Span.get_Item index"
+; V02 tmp1 [V02,T02] ( 3, 6 ) byref -> ecx "Span.get_Item ptrToSpan"
; V03 tmp2 [V03,T05] ( 2, 2 ) ubyte -> eax "Inline return value spill temp"
; V04 tmp3 [V04,T00] ( 4, 8 ) ushort -> ecx "Inlining Arg"
;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -33,53 +33,60 @@
;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP
;* V22 tmp21 [V22 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP
-; V24 cse0 [V24,T04] ( 3, 3 ) int -> ecx "CSE - moderate"
+; V24 cse0 [V24,T04] ( 5, 3 ) int -> edi "CSE - moderate"
;
; Lcl frame size = 0
G_M7781_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
+ push edi
push esi
mov esi, ecx
; byrRegs +[esi]
- ;; size=6 bbWeight=1 PerfScore 2.50
+ ;; size=7 bbWeight=1 PerfScore 3.50
G_M7781_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- mov ecx, dword ptr [esi+0x10]
- cmp ecx, dword ptr [esi+0x24]
- jge SHORT G_M7781_IG05
- lea eax, bword ptr [esi+0x20]
- ; byrRegs +[eax]
- cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M7781_IG06
- mov eax, bword ptr [eax]
- movzx ecx, word ptr [eax+2*ecx]
+ mov edi, dword ptr [esi+0x10]
+ cmp edi, dword ptr [esi+0x24]
+ jge SHORT G_M7781_IG06
+ ;; size=8 bbWeight=1 PerfScore 6.00
+G_M7781_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ lea ecx, bword ptr [esi+0x20]
+ ; byrRegs +[ecx]
+ cmp edi, dword ptr [ecx+0x04]
+ jae SHORT G_M7781_IG07
+ mov ecx, bword ptr [ecx]
+ movzx ecx, word ptr [ecx+2*edi]
+ ; byrRegs -[ecx]
cmp ecx, 256
jb SHORT G_M7781_IG04
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; byrRegs -[eax]
test eax, eax
- je SHORT G_M7781_IG05
- ;; size=40 bbWeight=1 PerfScore 20.00
-G_M7781_IG03: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- inc dword ptr [esi+0x10]
- jmp SHORT G_M7781_IG02
- ;; size=5 bbWeight=0 PerfScore 0.00
+ jne SHORT G_M7781_IG05
+ jmp SHORT G_M7781_IG06
+ ;; size=34 bbWeight=1 PerfScore 16.00
G_M7781_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
test byte ptr [ecx+D1FFAB1EH], 128
- jne SHORT G_M7781_IG03
+ je SHORT G_M7781_IG06
;; size=9 bbWeight=1 PerfScore 4.00
-G_M7781_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M7781_IG05: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ inc dword ptr [esi+0x10]
+ mov edi, dword ptr [esi+0x10]
+ cmp edi, dword ptr [esi+0x24]
+ jl SHORT G_M7781_IG03
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M7781_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; byrRegs -[esi]
pop esi
+ pop edi
pop ebp
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
-G_M7781_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=4 bbWeight=1 PerfScore 2.50
+G_M7781_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 69, prolog size 6, PerfScore 28.50, instruction count 26, allocated bytes for code 69 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 79, prolog size 7, PerfScore 32.00, instruction count 31, allocated bytes for code 79 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
; ============================================================
@@ -10,75 +10,74 @@
;
;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc2 [V02,T02] ( 3, 3 ) ref -> esi class-hnd exact single-def <testout1>
+; V02 loc2 [V02,T02] ( 4, 4 ) ref -> esi class-hnd exact single-def <testout1>
; V03 loc3 [V03,T00] ( 6, 6 ) ref -> eax class-hnd exact single-def <<unknown class>>
;* V04 tmp0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
; V05 tmp1 [V05,T01] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <<unknown class>>
-;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref single-def
+;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref
-;* V09 tmp5 [V09,T08] ( 0, 0 ) int -> zero-ref single-def
+;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref
-;* V12 tmp8 [V12,T09] ( 0, 0 ) int -> zero-ref single-def
+;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref
-;* V15 tmp11 [V15,T10] ( 0, 0 ) int -> zero-ref single-def
+;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref
-;* V18 tmp14 [V18,T11] ( 0, 0 ) int -> zero-ref single-def
+; V18 tmp14 [V18,T06] ( 2, 2 ) int -> esi single-def
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref
-;* V24 tmp20 [V24,T12] ( 0, 0 ) int -> zero-ref single-def
+;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref
-;* V27 tmp23 [V27,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref
-;* V30 tmp26 [V30,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref
-;* V33 tmp29 [V33,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref
-;* V36 tmp32 [V36,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref
-;* V39 tmp35 [V39,T22] ( 0, 0 ) int -> zero-ref single-def
+; V39 tmp35 [V39,T07] ( 2, 2 ) int -> esi single-def
;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref
-;* V42 tmp38 [V42,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp39 [V43 ] ( 0, 0 ) int -> zero-ref
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref
-;* V45 tmp41 [V45,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp45 [V49 ] ( 0, 0 ) int -> zero-ref
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref
-;* V51 tmp47 [V51,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref
-;* V54 tmp50 [V54,T18] ( 0, 0 ) int -> zero-ref single-def
+; V54 tmp50 [V54,T08] ( 2, 2 ) int -> esi single-def
;* V55 tmp51 [V55 ] ( 0, 0 ) int -> zero-ref
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref
-;* V57 tmp53 [V57,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref
-;* V60 tmp56 [V60,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp57 [V61 ] ( 0, 0 ) int -> zero-ref
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref
-; V63 tmp59 [V63,T20] ( 2, 2 ) int -> edx single-def
+;* V63 tmp59 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp60 [V64 ] ( 0, 0 ) int -> zero-ref
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref
-;* V66 cse0 [V66,T06] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-;* V67 cse1 [V67,T03] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V68 cse2 [V68,T04] ( 2, 2 ) int -> edx "CSE - aggressive"
-;* V69 cse3 [V69,T05] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V70 cse4 [V70,T07] ( 2, 2 ) int -> eax "CSE - aggressive"
+; V66 cse0 [V66,T09] ( 2, 2 ) int -> esi "CSE - aggressive"
+; V67 cse1 [V67,T03] ( 4, 4 ) int -> edx "CSE - aggressive"
+; V68 cse2 [V68,T04] ( 4, 4 ) int -> ecx "CSE - aggressive"
+; V69 cse3 [V69,T05] ( 4, 4 ) int -> eax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -109,17 +108,27 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov byte ptr [D1FFAB1EH], 1 ; data for <unknown class>:<unknown field>
mov dword ptr [esi+0x04], -13
mov word ptr [esi+0x08], 256
- mov edx, dword ptr [eax+0x0C]
+ mov edx, dword ptr [esi+0x04]
+ mov ecx, dword ptr [eax+0x0C]
+ lea esi, [edx+ecx]
+ ; gcrRegs -[esi]
mov eax, dword ptr [eax+0x08]
; gcrRegs -[eax]
- add eax, edx
- ;; size=118 bbWeight=1 PerfScore 18.75
+ lea esi, [esi+eax+0x11]
+ add esi, dword ptr [D1FFAB1EH] ; static handle
+ add esi, edx
+ lea esi, [esi+ecx+0x0A]
+ add esi, eax
+ add edx, esi
+ add edx, ecx
+ lea eax, [edx+eax+0x11]
+ ;; size=148 bbWeight=1 PerfScore 28.00
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
pop ebp
ret
;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 125, prolog size 4, PerfScore 23.00, instruction count 28, allocated bytes for code 125 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 155, prolog size 4, PerfScore 32.25, instruction count 37, allocated bytes for code 155 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
@@ -8,81 +8,80 @@
; 0 inlinees with PGO data; 25 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> esi
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 3, 3 ) ref -> esi class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> esi class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T05] ( 3, 3 ) ref -> eax class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 6, 6 ) ref -> eax class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T06] ( 3, 3 ) ref -> eax class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 6, 6 ) ref -> eax class-hnd exact single-def <<unknown class>>
;* V09 tmp0 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref single-def
+;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
-;* V13 tmp4 [V13,T08] ( 0, 0 ) int -> zero-ref single-def
+;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
-;* V16 tmp7 [V16,T09] ( 0, 0 ) int -> zero-ref single-def
+;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
-;* V19 tmp10 [V19,T10] ( 0, 0 ) int -> zero-ref single-def
+;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
-;* V22 tmp13 [V22,T11] ( 0, 0 ) int -> zero-ref single-def
+;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
-;* V28 tmp19 [V28,T12] ( 0, 0 ) int -> zero-ref single-def
+;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
-;* V31 tmp22 [V31,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
-;* V34 tmp25 [V34,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
-;* V37 tmp28 [V37,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
-;* V40 tmp31 [V40,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
-;* V43 tmp34 [V43,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
-;* V46 tmp37 [V46,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
-;* V49 tmp40 [V49,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
-;* V55 tmp46 [V55,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
-;* V58 tmp49 [V58,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
-;* V61 tmp52 [V61,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
-;* V64 tmp55 [V64,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
-; V67 tmp58 [V67,T20] ( 2, 2 ) int -> edx single-def
+;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
-;* V70 cse0 [V70,T06] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-;* V71 cse1 [V71,T02] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V72 cse2 [V72,T03] ( 2, 2 ) int -> edx "CSE - aggressive"
-;* V73 cse3 [V73,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V74 cse4 [V74,T07] ( 2, 2 ) int -> eax "CSE - aggressive"
+; V70 cse0 [V70,T07] ( 2, 2 ) int -> esi "CSE - aggressive"
+; V71 cse1 [V71,T03] ( 4, 4 ) int -> edx "CSE - aggressive"
+; V72 cse2 [V72,T04] ( 4, 4 ) int -> ecx "CSE - aggressive"
+; V73 cse3 [V73,T05] ( 4, 4 ) int -> eax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -113,17 +112,28 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov byte ptr [D1FFAB1EH], 1 ; data for <unknown class>:<unknown field>
mov dword ptr [esi+0x04], -13
mov word ptr [esi+0x08], 256
- mov edx, dword ptr [eax+0x0C]
+ mov edx, dword ptr [esi+0x04]
+ mov ecx, dword ptr [eax+0x0C]
+ lea esi, [edx+ecx]
+ ; gcrRegs -[esi]
mov eax, dword ptr [eax+0x08]
; gcrRegs -[eax]
- add eax, edx
- ;; size=118 bbWeight=1 PerfScore 18.75
+ lea esi, [esi+eax+0x11]
+ add esi, dword ptr [D1FFAB1EH] ; static handle
+ add esi, edx
+ lea esi, [esi+ecx+0x0A]
+ add esi, eax
+ add edx, esi
+ add edx, ecx
+ lea esi, [edx+eax+0x11]
+ mov eax, esi
+ ;; size=150 bbWeight=1 PerfScore 28.25
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
pop ebp
ret
;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 125, prolog size 4, PerfScore 23.00, instruction count 28, allocated bytes for code 125 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 157, prolog size 4, PerfScore 32.50, instruction count 38, allocated bytes for code 157 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
@@ -65,25 +65,21 @@ G_M47438_IG02: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=00000002 {e
xor ecx, ecx
mov edx, dword ptr [ebp-0x14]
test edx, edx
- mov esi, gword ptr [ebp-0x18]
- ; gcrRegs +[esi]
- jle SHORT G_M47438_IG09
+ jle G_M47438_IG08
mov edi, gword ptr [ebp-0x20]
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M47438_IG08
+ je SHORT G_M47438_IG05
cmp dword ptr [edi+0x04], edx
- jl SHORT G_M47438_IG07
+ jl SHORT G_M47438_IG05
cmp dword ptr [eax+0x04], edx
- mov gword ptr [ebp-0x18], esi
- jl SHORT G_M47438_IG06
+ jl SHORT G_M47438_IG04
mov esi, dword ptr [(reloc)]
- ; gcrRegs -[esi]
mov esi, gword ptr [esi]
; gcrRegs +[esi]
mov gword ptr [ebp-0x2C], esi
; GC ptr vars +{V18}
- ;; size=69 bbWeight=1 PerfScore 32.00
+ ;; size=67 bbWeight=1 PerfScore 30.00
G_M47438_IG03: ; bbWeight=3.96, gcVars=00000E80 {V00 V08 V09 V18}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi]
mov esi, gword ptr [edi+4*ecx+0x08]
@@ -117,71 +113,36 @@ G_M47438_IG03: ; bbWeight=3.96, gcVars=00000E80 {V00 V08 V09 V18}, gcrefR
; gcrRegs -[ebx]
; byrRegs -[edx edi]
inc ecx
- mov ebx, dword ptr [ebp-0x14]
- cmp ebx, ecx
- mov edi, gword ptr [ebp-0x20]
- ; gcrRegs +[edi]
- jg SHORT G_M47438_IG05
- ;; size=61 bbWeight=3.96 PerfScore 92.07
-G_M47438_IG04: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edi]
- ; GC ptr vars -{V08 V09 V18}
- mov esi, gword ptr [ebp-0x18]
- ; gcrRegs +[esi]
- mov edi, dword ptr [ebp-0x10]
- jmp G_M47438_IG14
- ;; size=11 bbWeight=1 PerfScore 4.00
-G_M47438_IG05: ; bbWeight=1.98, gcVars=00000E80 {V00 V08 V09 V18}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[esi] +[edi]
- ; GC ptr vars +{V07 V08 V09 V10 V18}
+ cmp dword ptr [ebp-0x14], ecx
mov ebx, gword ptr [ebp-0x1C]
; gcrRegs +[ebx]
- jmp SHORT G_M47438_IG03
- ;; size=5 bbWeight=1.98 PerfScore 5.94
-G_M47438_IG06: ; bbWeight=0.50, gcVars=00000A80 {V00 V08 V09}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V07 V10 V18}
+ mov edi, gword ptr [ebp-0x20]
+ ; gcrRegs +[edi]
+ jg SHORT G_M47438_IG03
+ jmp SHORT G_M47438_IG08
+ ;; size=64 bbWeight=3.96 PerfScore 106.92
+G_M47438_IG04: ; bbWeight=0.50, gcVars=00000A80 {V00 V08 V09}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V18}
mov edx, dword ptr [ebp-0x14]
- jmp SHORT G_M47438_IG10
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M47438_IG07: ; bbWeight=0.50, gcVars=00000280 {V08 V09}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi]
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x18], esi
- ; GC ptr vars +{V00}
- jmp SHORT G_M47438_IG10
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M47438_IG08: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x18], esi
- ; GC ptr vars +{V00}
- jmp SHORT G_M47438_IG10
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M47438_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ebx edi]
- ; GC ptr vars -{V00 V08 V09}
- mov edi, dword ptr [ebp-0x10]
- jmp SHORT G_M47438_IG14
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M47438_IG10: ; bbWeight=0.04, gcVars=00000A80 {V00 V08 V09}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi] +[ebx edi]
- ; GC ptr vars +{V00 V07 V08 V09 V11}
+ ;; size=3 bbWeight=0.50 PerfScore 0.50
+G_M47438_IG05: ; bbWeight=0.04, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref
mov esi, dword ptr [(reloc)]
mov esi, gword ptr [esi]
; gcrRegs +[esi]
test edi, edi
- je G_M47438_IG17
+ je G_M47438_IG11
;; size=16 bbWeight=0.04 PerfScore 0.21
-G_M47438_IG11: ; bbWeight=0.02, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref
+G_M47438_IG06: ; bbWeight=0.02, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
cmp ecx, dword ptr [edi+0x04]
- jae G_M47438_IG18
+ jae G_M47438_IG12
mov esi, gword ptr [edi+4*ecx+0x08]
; gcrRegs +[esi]
;; size=13 bbWeight=0.02 PerfScore 0.12
-G_M47438_IG12: ; bbWeight=0.04, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+G_M47438_IG07: ; bbWeight=0.04, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx edi]
cmp ecx, dword ptr [eax+0x04]
- jae G_M47438_IG18
+ jae SHORT G_M47438_IG12
lea ebx, [ecx+2*ecx]
lea ebx, bword ptr [eax+4*ebx+0x08]
; byrRegs +[ebx]
@@ -198,7 +159,7 @@ G_M47438_IG12: ; bbWeight=0.04, gcrefRegs=00000041 {eax esi}, byrefRegs=0
mov edx, ebx
; gcrRegs -[edx]
; byrRegs +[edx]
- ; GC ptr vars -{V07 V11 V17}
+ ; GC ptr vars -{V17}
call [CORINFO_HELP_CHECKED_ASSIGN_REF_ESI]
; gcrRegs -[esi]
; byrRegs -[edx]
@@ -222,17 +183,11 @@ G_M47438_IG12: ; bbWeight=0.04, gcrefRegs=00000041 {eax esi}, byrefRegs=0
mov edx, ebx
mov edi, gword ptr [ebp-0x20]
; gcrRegs +[edi]
- jg SHORT G_M47438_IG16
- ;; size=77 bbWeight=0.04 PerfScore 1.14
-G_M47438_IG13: ; bbWeight=0.02, gcVars=00000800 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
+ jg SHORT G_M47438_IG10
+ ;; size=73 bbWeight=0.04 PerfScore 1.14
+G_M47438_IG08: ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edi]
; GC ptr vars -{V08 V09}
- mov esi, gword ptr [ebp-0x18]
- ; gcrRegs +[esi]
- mov edi, dword ptr [ebp-0x10]
- ;; size=6 bbWeight=0.02 PerfScore 0.04
-G_M47438_IG14: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V00}
push gword ptr [ebp+0x20]
; gcr arg push 0
push dword ptr [ebp+0x1C]
@@ -242,14 +197,15 @@ G_M47438_IG14: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000041 {eax
push dword ptr [ebp+0x0C]
push eax
; gcr arg push 6
- mov ecx, esi
+ mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
- mov edx, edi
+ mov edx, dword ptr [ebp-0x10]
+ ; GC ptr vars -{V00}
call [<unknown method>]
- ; gcrRegs -[ecx esi]
+ ; gcrRegs -[ecx]
; gcr arg pop 2
- ;; size=29 bbWeight=1 PerfScore 10.50
-G_M47438_IG15: ; bbWeight=1, epilog, nogc, extend
+ ;; size=31 bbWeight=1 PerfScore 12.00
+G_M47438_IG09: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -257,24 +213,24 @@ G_M47438_IG15: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 28
;; size=10 bbWeight=1 PerfScore 4.50
-G_M47438_IG16: ; bbWeight=0.02, gcVars=00000A80 {V00 V08 V09}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M47438_IG10: ; bbWeight=0.02, gcVars=00000A80 {V00 V08 V09}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[edi]
; GC ptr vars +{V00 V07 V08 V09 V11}
mov ebx, gword ptr [ebp-0x1C]
; gcrRegs +[ebx]
- jmp G_M47438_IG10
+ jmp G_M47438_IG05
;; size=8 bbWeight=0.02 PerfScore 0.06
-G_M47438_IG17: ; bbWeight=0.02, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M47438_IG11: ; bbWeight=0.02, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]
- jmp G_M47438_IG12
- ;; size=5 bbWeight=0.02 PerfScore 0.04
-G_M47438_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jmp SHORT G_M47438_IG07
+ ;; size=2 bbWeight=0.02 PerfScore 0.04
+G_M47438_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ebx esi edi]
; GC ptr vars -{V00 V07 V08 V09 V11}
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 355, prolog size 18, PerfScore 164.12, instruction count 117, allocated bytes for code 355 (MethodHash=8fb946b1) for method System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (FullOpts)
+; Total bytes of code 312, prolog size 18, PerfScore 162.99, instruction count 102, allocated bytes for code 312 (MethodHash=8fb946b1) for method System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (FullOpts)
; ============================================================
@@ -14,7 +14,7 @@
; V02 loc0 [V02,T07] ( 5, 8 ) ref -> ebx class-hnd exact single-def <<unknown class>>
; V03 loc1 [V03,T04] ( 7, 16 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def <System.Diagnostics.StackTrace>
; V04 loc2 [V04,T12] ( 6, 5.50) ref -> [ebp-0x20] class-hnd <System.Reflection.Assembly>
-; V05 loc3 [V05,T17] ( 2, 2 ) ref -> ebx class-hnd exact single-def <System.String>
+; V05 loc3 [V05,T17] ( 2, 2 ) ref -> esi class-hnd exact single-def <System.String>
; V06 loc4 [V06,T02] ( 7, 19 ) int -> [ebp-0x14]
;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.Assembly>
; V08 tmp0 [V08,T10] ( 3, 6 ) ref -> [ebp-0x24] class-hnd exact spill-single-def "NewObj constructor temp" <System.Diagnostics.StackTrace>
@@ -27,7 +27,7 @@
;* V15 tmp7 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V16 tmp8 [V16,T11] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.AssemblyName>
-; V18 tmp10 [V18,T08] ( 5, 8 ) ref -> edi class-hnd "Inlining Arg" <System.String>
+; V18 tmp10 [V18,T08] ( 5, 8 ) ref -> esi class-hnd "Inlining Arg" <System.String>
;* V19 tmp11 [V19,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V20 tmp12 [V20,T05] ( 3, 12 ) ref -> edi "arr expr"
; V21 tmp13 [V21,T06] ( 3, 12 ) int -> esi "index expr"
@@ -75,57 +75,39 @@ G_M18346_IG02: ; bbWeight=1, gcVars=00004000 {V01}, gcrefRegs=00000000 {}
; GC ptr vars +{V04}
xor ecx, ecx
cmp dword ptr [eax+0x08], 0
- mov esi, dword ptr [ebp-0x10]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- jle G_M18346_IG19
- ;; size=70 bbWeight=1 PerfScore 28.25
-G_M18346_IG03: ; bbWeight=4, gcVars=00001010 {V03 V04}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jle G_M18346_IG14
+ ;; size=64 bbWeight=1 PerfScore 26.25
+G_M18346_IG03: ; bbWeight=4, gcVars=00005010 {V01 V03 V04}, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx]
- ; GC ptr vars -{V01 V08}
+ ; GC ptr vars -{V08}
cmp gword ptr [eax+0x04], 0
- je SHORT G_M18346_IG06
+ je SHORT G_M18346_IG05
;; size=6 bbWeight=4 PerfScore 16.00
-G_M18346_IG04: ; bbWeight=2, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref, isz
+G_M18346_IG04: ; bbWeight=2, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
cmp ecx, dword ptr [eax+0x08]
jge SHORT G_M18346_IG05
test ecx, ecx
- mov gword ptr [ebp-0x18], edi
- ; GC ptr vars +{V01}
- jl SHORT G_M18346_IG07
- mov dword ptr [ebp-0x10], esi
+ jl SHORT G_M18346_IG05
mov edi, gword ptr [eax+0x04]
+ ; gcrRegs +[edi]
mov dword ptr [ebp-0x14], ecx
mov esi, ecx
add esi, dword ptr [eax+0x0C]
cmp esi, dword ptr [edi+0x04]
- jae G_M18346_IG24
+ jae G_M18346_IG19
mov esi, gword ptr [edi+4*esi+0x08]
; gcrRegs +[esi]
- jmp SHORT G_M18346_IG08
- ;; size=41 bbWeight=2 PerfScore 43.00
-G_M18346_IG05: ; bbWeight=1, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[esi]
- ; GC ptr vars -{V01}
- mov gword ptr [ebp-0x18], edi
- ; GC ptr vars +{V01}
- jmp SHORT G_M18346_IG07
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M18346_IG06: ; bbWeight=2, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref
- ; GC ptr vars -{V01}
- mov gword ptr [ebp-0x18], edi
- ; GC ptr vars +{V01}
- ;; size=3 bbWeight=2 PerfScore 2.00
-G_M18346_IG07: ; bbWeight=2, gcVars=00005010 {V01 V03 V04}, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edi]
+ jmp SHORT G_M18346_IG06
+ ;; size=35 bbWeight=2 PerfScore 39.00
+G_M18346_IG05: ; bbWeight=2, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi edi]
xor edi, edi
; gcrRegs +[edi]
mov dword ptr [ebp-0x14], ecx
- mov dword ptr [ebp-0x10], esi
mov esi, edi
; gcrRegs +[esi]
- ;; size=10 bbWeight=2 PerfScore 5.00
-G_M18346_IG08: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=7 bbWeight=2 PerfScore 3.00
+G_M18346_IG06: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax edi]
mov ecx, esi
; gcrRegs +[ecx]
@@ -133,24 +115,24 @@ G_M18346_IG08: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
test eax, eax
- jne SHORT G_M18346_IG10
+ jne SHORT G_M18346_IG08
;; size=14 bbWeight=4 PerfScore 30.00
-G_M18346_IG09: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M18346_IG07: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
xor esi, esi
; gcrRegs +[esi]
- jmp SHORT G_M18346_IG12
+ jmp SHORT G_M18346_IG10
;; size=4 bbWeight=8 PerfScore 18.00
-G_M18346_IG10: ; bbWeight=16, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
+G_M18346_IG08: ; bbWeight=16, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi] +[eax]
mov ecx, eax
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
test eax, eax
- je SHORT G_M18346_IG09
+ je SHORT G_M18346_IG07
;; size=12 bbWeight=16 PerfScore 72.00
-G_M18346_IG11: ; bbWeight=2, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
+G_M18346_IG09: ; bbWeight=2, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
mov ecx, eax
; gcrRegs +[ecx]
call [<unknown method>]
@@ -158,16 +140,16 @@ G_M18346_IG11: ; bbWeight=2, gcrefRegs=00000009 {eax ebx}, byrefRegs=0000
mov esi, eax
; gcrRegs +[esi]
;; size=10 bbWeight=2 PerfScore 7.00
-G_M18346_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M18346_IG10: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
test esi, esi
- je SHORT G_M18346_IG14
+ je SHORT G_M18346_IG12
;; size=4 bbWeight=4 PerfScore 5.00
-G_M18346_IG13: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M18346_IG11: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
test ebx, ebx
- je SHORT G_M18346_IG17
+ je SHORT G_M18346_IG13
cmp esi, ebx
- je SHORT G_M18346_IG14
+ je SHORT G_M18346_IG12
mov ecx, esi
; gcrRegs +[ecx]
mov edx, ebx
@@ -175,9 +157,9 @@ G_M18346_IG13: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[ecx edx]
test eax, eax
- je SHORT G_M18346_IG16
+ je SHORT G_M18346_IG13
;; size=22 bbWeight=2 PerfScore 14.50
-G_M18346_IG14: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+G_M18346_IG12: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
mov esi, dword ptr [ebp-0x14]
inc esi
@@ -187,50 +169,29 @@ G_M18346_IG14: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
mov eax, edi
; gcrRegs +[eax]
mov ecx, esi
- mov esi, dword ptr [ebp-0x10]
- mov edi, gword ptr [ebp-0x18]
jl G_M18346_IG03
- ;; size=26 bbWeight=4 PerfScore 35.00
-G_M18346_IG15: ; bbWeight=0.50, gcVars=00001000 {V04}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- ; GC ptr vars -{V01 V03 V04}
- jmp SHORT G_M18346_IG19
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M18346_IG16: ; bbWeight=1, gcVars=00004000 {V01}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edi] +[esi]
- ; GC ptr vars +{V01 V14}
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- jmp SHORT G_M18346_IG18
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M18346_IG17: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edi]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
- ;; size=3 bbWeight=1 PerfScore 1.00
-G_M18346_IG18: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V01 V14}
- mov edx, esi
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x20], edx
+ jmp SHORT G_M18346_IG14
+ ;; size=22 bbWeight=4 PerfScore 35.00
+G_M18346_IG13: ; bbWeight=0.50, gcVars=00004000 {V01}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax edi] +[esi]
+ ; GC ptr vars -{V03 V04}
+ mov gword ptr [ebp-0x20], esi
; GC ptr vars +{V04}
- mov esi, dword ptr [ebp-0x10]
+ ;; size=3 bbWeight=0.50 PerfScore 0.50
+G_M18346_IG14: ; bbWeight=1, gcVars=00005000 {V01 V04}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi]
- ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M18346_IG19: ; bbWeight=1, gcVars=00001000 {V04}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edx]
- mov edx, gword ptr [ebp-0x20]
- ; gcrRegs +[edx]
- test edx, edx
- cmove edx, ebx
- mov ecx, edx
+ mov esi, gword ptr [ebp-0x20]
+ ; gcrRegs +[esi]
+ test esi, esi
+ cmove esi, ebx
+ mov ecx, esi
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
; GC ptr vars -{V04}
call [<unknown method>]
- ; gcrRegs -[ecx edx ebx] +[eax]
- mov ebx, gword ptr [eax+0x04]
- ; gcrRegs +[ebx]
+ ; gcrRegs -[ecx ebx esi] +[eax]
+ mov esi, gword ptr [eax+0x04]
+ ; gcrRegs +[esi]
mov ecx, dword ptr [(reloc)] ; const ptr
mov ecx, gword ptr [ecx]
; gcrRegs +[ecx]
@@ -238,35 +199,36 @@ G_M18346_IG19: ; bbWeight=1, gcVars=00001000 {V04}, gcrefRegs=00000088 {e
; gcrRegs -[ecx]
mov ecx, eax
; gcrRegs +[ecx]
- push ebx
- mov edx, edi
+ push esi
+ mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
+ ; GC ptr vars -{V01}
call [System.SR:Format(System.String,System.Object,System.Object):System.String]
- ; gcrRegs -[ecx edx ebx edi]
- mov edi, eax
- ; gcrRegs +[edi]
- test edi, edi
- je SHORT G_M18346_IG21
- ;; size=52 bbWeight=1 PerfScore 22.75
-G_M18346_IG20: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx edx esi]
+ mov esi, eax
+ ; gcrRegs +[esi]
+ test esi, esi
+ je SHORT G_M18346_IG16
+ ;; size=53 bbWeight=1 PerfScore 23.50
+G_M18346_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- cmp dword ptr [edi+0x04], 0
...
@@ -43,19 +43,15 @@ G_M60484_IG02: ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=000000C8 {e
mov ecx, dword ptr [ebx+0x04]
mov dword ptr [ebp-0x14], ecx
cmp ecx, edx
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- jle SHORT G_M60484_IG08
+ jle SHORT G_M60484_IG05
test edi, edi
- je SHORT G_M60484_IG07
+ je SHORT G_M60484_IG06
test edx, edx
jl SHORT G_M60484_IG06
cmp dword ptr [edi+0x04], ecx
- mov gword ptr [ebp-0x18], eax
- jl SHORT G_M60484_IG05
- ;; size=35 bbWeight=1 PerfScore 14.25
+ jl SHORT G_M60484_IG04
+ ;; size=29 bbWeight=1 PerfScore 12.25
G_M60484_IG03: ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
mov eax, gword ptr [ebx+4*edx+0x08]
; gcrRegs +[eax]
mov dword ptr [ebp-0x10], edx
@@ -68,51 +64,30 @@ G_M60484_IG03: ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
; gcrRegs -[eax ecx edx]
test eax, eax
- jne SHORT G_M60484_IG14
+ jne SHORT G_M60484_IG10
mov edx, dword ptr [ebp-0x10]
inc edx
mov eax, dword ptr [ebp-0x14]
cmp eax, edx
jg SHORT G_M60484_IG03
- ;; size=38 bbWeight=3.96 PerfScore 64.35
-G_M60484_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx edi]
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- jmp SHORT G_M60484_IG11
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M60484_IG05: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax] +[ebx edi]
+ jmp SHORT G_M60484_IG07
+ ;; size=40 bbWeight=3.96 PerfScore 72.27
+G_M60484_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M60484_IG09
+ jmp SHORT G_M60484_IG06
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M60484_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[eax]
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x18], eax
- ; GC ptr vars +{V00}
- jmp SHORT G_M60484_IG09
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M60484_IG07: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; GC ptr vars -{V00}
- mov gword ptr [ebp-0x18], eax
- ; GC ptr vars +{V00}
- jmp SHORT G_M60484_IG09
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M60484_IG08: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+G_M60484_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx edi]
- ; GC ptr vars -{V00}
- jmp SHORT G_M60484_IG11
+ jmp SHORT G_M60484_IG07
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M60484_IG09: ; bbWeight=0.04, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[ebx edi]
- ; GC ptr vars +{V00 V06}
+G_M60484_IG06: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[ebx edi]
cmp edx, ecx
- jae SHORT G_M60484_IG16
+ jae SHORT G_M60484_IG12
mov eax, gword ptr [ebx+4*edx+0x08]
; gcrRegs +[eax]
cmp edx, dword ptr [edi+0x04]
- jae SHORT G_M60484_IG16
+ jae SHORT G_M60484_IG12
mov dword ptr [ebp-0x10], edx
push gword ptr [edi+4*edx+0x08]
mov edx, eax
@@ -123,31 +98,27 @@ G_M60484_IG09: ; bbWeight=0.04, gcVars=00000040 {V00}, gcrefRegs=000000C8
call [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
; gcrRegs -[eax ecx edx]
test eax, eax
- jne SHORT G_M60484_IG14
+ jne SHORT G_M60484_IG10
mov eax, dword ptr [ebp-0x10]
inc eax
cmp dword ptr [ebp-0x14], eax
mov edx, eax
- jg SHORT G_M60484_IG13
+ jg SHORT G_M60484_IG09
;; size=47 bbWeight=0.04 PerfScore 0.90
-G_M60484_IG10: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M60484_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx edi]
- mov eax, gword ptr [ebp-0x18]
- ; gcrRegs +[eax]
- ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M60484_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V00 V06}
push gword ptr [ebp+0x08]
push dword ptr [ebp+0x0C]
- mov ecx, eax
+ mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
mov edx, esi
; gcrRegs +[edx]
+ ; GC ptr vars -{V00}
call [System.Runtime.Serialization.XmlObjectSerializerReadContext:HandleMemberNotFound(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.ExtensionDataObject,int):this]
- ; gcrRegs -[eax ecx edx esi]
+ ; gcrRegs -[ecx edx esi]
mov eax, dword ptr [ebp-0x14]
- ;; size=19 bbWeight=0.50 PerfScore 3.25
-G_M60484_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=20 bbWeight=0.50 PerfScore 3.62
+G_M60484_IG08: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -155,18 +126,18 @@ G_M60484_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 16
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M60484_IG13: ; bbWeight=0.02, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M60484_IG09: ; bbWeight=0.02, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi edi]
; GC ptr vars +{V00 V06}
mov ecx, dword ptr [ebp-0x14]
- jmp SHORT G_M60484_IG09
+ jmp SHORT G_M60484_IG06
;; size=5 bbWeight=0.02 PerfScore 0.06
-G_M60484_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M60484_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi edi]
; GC ptr vars -{V00 V06}
mov eax, dword ptr [ebp-0x10]
;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M60484_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M60484_IG11: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -174,11 +145,11 @@ G_M60484_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 16
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M60484_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M60484_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 222, prolog size 9, PerfScore 105.08, instruction count 90, allocated bytes for code 222 (MethodHash=625f13bb) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
+; Total bytes of code 201, prolog size 9, PerfScore 105.36, instruction count 82, allocated bytes for code 201 (MethodHash=625f13bb) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
; ============================================================
@@ -16,48 +16,53 @@
;
; Lcl frame size = 0
-G_M12753_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12753_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
G_M12753_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M12753_IG04
+ je SHORT G_M12753_IG06
;; size=4 bbWeight=1 PerfScore 1.25
G_M12753_IG03: ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
movzx eax, byte ptr [ecx+0x0A]
cmp eax, 117
- je SHORT G_M12753_IG06
+ je SHORT G_M12753_IG04
cmp eax, 188
- jne SHORT G_M12753_IG04
+ jne SHORT G_M12753_IG06
call [CORINFO_HELP_READYTORUN_CHKCAST]
; gcrRegs -[ecx] +[eax]
mov ecx, gword ptr [eax+0x10]
; gcrRegs +[ecx]
test ecx, ecx
jne SHORT G_M12753_IG03
- ;; size=29 bbWeight=4 PerfScore 43.00
-G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax ecx]
- xor eax, eax
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop ebp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M12753_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[ecx]
+ jmp SHORT G_M12753_IG08
+ ;; size=31 bbWeight=4 PerfScore 51.00
+G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
call [CORINFO_HELP_READYTORUN_CHKCAST]
; gcrRegs -[ecx] +[eax]
mov eax, gword ptr [eax+0x10]
;; size=9 bbWeight=0.50 PerfScore 2.50
+G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop ebp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M12753_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ xor eax, eax
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M12753_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M12753_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ jmp SHORT G_M12753_IG06
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 51, prolog size 3, PerfScore 49.62, instruction count 20, allocated bytes for code 51 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
+; Total bytes of code 55, prolog size 3, PerfScore 58.62, instruction count 22, allocated bytes for code 55 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
; ============================================================
1[ushort],System.ReadOnlySpan
1[ushort]):System.ReadOnlySpan`1ushort@@ -14,13 +14,13 @@
; V02 arg1 [V02,T02] ( 2, 33 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
; V03 loc0 [V03,T04] ( 8, 21.50) int -> ecx
; V04 loc1 [V04,T00] ( 5, 84 ) int -> edx
-; V05 loc2 [V05,T08] ( 4, 4 ) int -> ebx "Inlining Arg"
+; V05 loc2 [V05,T08] ( 4, 4 ) int -> esi "Inlining Arg"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V07 tmp2 [V07,T09] ( 2, 2 ) byref -> edi single-def "Inlining Arg"
;* V08 tmp3 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp4 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V10 tmp5 [V10,T11] ( 2, 1 ) byref -> edi single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-; V11 tmp6 [V11,T12] ( 2, 1 ) int -> ebx "field V06._length (fldOffset=0x4)" P-INDEP
+; V11 tmp6 [V11,T12] ( 2, 1 ) int -> esi "field V06._length (fldOffset=0x4)" P-INDEP
; V12 tmp7 [V12,T06] ( 4, 6 ) int -> edi "V01.[004..008)"
; V13 tmp8 [V13,T03] ( 4, 22 ) int -> ebx "V02.[004..008)"
; V14 cse0 [V14,T01] ( 2, 36 ) int -> eax hoist "CSE - aggressive"
@@ -66,14 +66,14 @@ G_M46891_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; byrRegs +[esi]
lea ecx, [edi-0x01]
test ecx, ecx
- jl SHORT G_M46891_IG11
+ jl SHORT G_M46891_IG10
;; size=7 bbWeight=0.50 PerfScore 0.88
G_M46891_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
xor edx, edx
test ebx, ebx
- jle SHORT G_M46891_IG11
+ jle SHORT G_M46891_IG09
cmp ecx, edi
- jae SHORT G_M46891_IG14
+ jae SHORT G_M46891_IG16
mov eax, bword ptr [ebp+0x10]
; byrRegs +[eax]
movzx eax, word ptr [eax+2*ecx]
@@ -88,34 +88,40 @@ G_M46891_IG07: ; bbWeight=32, gcVars=00000080 {V00}, gcrefRegs=00000000 {
movzx esi, word ptr [esi+2*edx]
; byrRegs -[esi]
cmp esi, eax
- je SHORT G_M46891_IG10
+ je SHORT G_M46891_IG11
;; size=11 bbWeight=32 PerfScore 136.00
G_M46891_IG08: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc edx
cmp edx, ebx
jl SHORT G_M46891_IG07
- ;; size=5 bbWeight=16 PerfScore 24.00
-G_M46891_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov esi, bword ptr [ebp-0x10]
+ jmp SHORT G_M46891_IG12
+ ;; size=7 bbWeight=16 PerfScore 56.00
+G_M46891_IG09: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; byrRegs +[esi]
- jmp SHORT G_M46891_IG11
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M46891_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; GC ptr vars -{V00}
+ mov bword ptr [ebp-0x10], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M46891_IG12
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M46891_IG10: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ ; GC ptr vars -{V00}
+ mov bword ptr [ebp-0x10], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M46891_IG12
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M46891_IG11: ; bbWeight=4, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi]
dec ecx
- mov esi, bword ptr [ebp-0x10]
- ; byrRegs +[esi]
- jns SHORT G_M46891_IG06
- ;; size=6 bbWeight=4 PerfScore 9.00
-G_M46891_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- lea ebx, [ecx+0x01]
- cmp ebx, edi
- ja SHORT G_M46891_IG15
+ jns SHORT G_M46891_IG15
+ ;; size=3 bbWeight=4 PerfScore 5.00
+G_M46891_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ lea esi, [ecx+0x01]
+ cmp esi, edi
+ ja SHORT G_M46891_IG17
mov edi, bword ptr [ebp+0x10]
; byrRegs +[edi]
- test ebx, ebx
- jge SHORT G_M46891_IG12
+ test esi, esi
+ jge SHORT G_M46891_IG13
mov ecx, dword ptr [(reloc)] ; const ptr
mov edx, gword ptr [ecx]
; gcrRegs +[edx]
@@ -124,11 +130,13 @@ G_M46891_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=30 bbWeight=0.50 PerfScore 5.62
-G_M46891_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- mov bword ptr [esi], edi
- mov dword ptr [esi+0x04], ebx
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M46891_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M46891_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+ mov ebx, bword ptr [ebp-0x10]
+ ; byrRegs +[ebx]
+ mov bword ptr [ebx], edi
+ mov dword ptr [ebx+0x04], esi
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M46891_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop ebx
pop esi
@@ -136,15 +144,22 @@ G_M46891_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 16
;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M46891_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[esi edi]
+G_M46891_IG15: ; bbWeight=2, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; byrRegs -[ebx edi]
+ mov esi, bword ptr [ebp-0x10]
+ ; byrRegs +[esi]
+ jmp SHORT G_M46891_IG06
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M46891_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; byrRegs -[esi]
+ ; GC ptr vars -{V00}
call [CORINFO_HELP_RNGCHKFAIL]
;; size=6 bbWeight=0 PerfScore 0.00
-G_M46891_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M46891_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 151, prolog size 9, PerfScore 220.88, instruction count 65, allocated bytes for code 151 (MethodHash=f7e248d4) for method System.MemoryExtensions:TrimEnd(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
+; Total bytes of code 163, prolog size 9, PerfScore 260.62, instruction count 70, allocated bytes for code 163 (MethodHash=f7e248d4) for method System.MemoryExtensions:TrimEnd(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
; ============================================================
1[ushort],System.ReadOnlySpan
1[ushort]):System.ReadOnlySpan`1ushort@@ -16,10 +16,10 @@
; V04 loc1 [V04,T00] ( 5, 84 ) int -> edx
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V06 tmp1 [V06,T08] ( 3, 3 ) int -> edi "Inlining Arg"
-; V07 tmp2 [V07,T09] ( 2, 2 ) byref -> ebx single-def "Inlining Arg"
+; V07 tmp2 [V07,T09] ( 2, 2 ) byref -> esi single-def "Inlining Arg"
;* V08 tmp3 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp4 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp5 [V10,T11] ( 2, 1 ) byref -> ebx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp5 [V10,T11] ( 2, 1 ) byref -> esi single-def "field V05._reference (fldOffset=0x0)" P-INDEP
; V11 tmp6 [V11,T12] ( 2, 1 ) int -> edi "field V05._length (fldOffset=0x4)" P-INDEP
; V12 tmp7 [V12,T05] ( 5, 6.50) int -> edi "V01.[004..008)"
; V13 tmp8 [V13,T03] ( 4, 22 ) int -> ebx "V02.[004..008)"
@@ -66,12 +66,12 @@ G_M16324_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
; byrRegs +[esi]
xor ecx, ecx
test edi, edi
- jle SHORT G_M16324_IG11
+ jle SHORT G_M16324_IG10
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M16324_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
xor edx, edx
test ebx, ebx
- jle SHORT G_M16324_IG11
+ jle SHORT G_M16324_IG09
mov eax, bword ptr [ebp+0x10]
; byrRegs +[eax]
movzx eax, word ptr [eax+2*ecx]
@@ -86,36 +86,42 @@ G_M16324_IG07: ; bbWeight=32, gcVars=00000080 {V00}, gcrefRegs=00000000 {
movzx esi, word ptr [esi+2*edx]
; byrRegs -[esi]
cmp esi, eax
- je SHORT G_M16324_IG10
+ je SHORT G_M16324_IG11
;; size=11 bbWeight=32 PerfScore 136.00
G_M16324_IG08: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
inc edx
cmp edx, ebx
jl SHORT G_M16324_IG07
- ;; size=5 bbWeight=16 PerfScore 24.00
-G_M16324_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov esi, bword ptr [ebp-0x10]
+ jmp SHORT G_M16324_IG12
+ ;; size=7 bbWeight=16 PerfScore 56.00
+G_M16324_IG09: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; byrRegs +[esi]
- jmp SHORT G_M16324_IG11
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M16324_IG10: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; GC ptr vars -{V00}
+ mov bword ptr [ebp-0x10], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M16324_IG12
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG10: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+ ; GC ptr vars -{V00}
+ mov bword ptr [ebp-0x10], esi
+ ; GC ptr vars +{V00}
+ jmp SHORT G_M16324_IG12
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M16324_IG11: ; bbWeight=4, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi]
inc ecx
cmp ecx, edi
- mov esi, bword ptr [ebp-0x10]
- ; byrRegs +[esi]
- jl SHORT G_M16324_IG06
- ;; size=8 bbWeight=4 PerfScore 10.00
-G_M16324_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; GC ptr vars -{V00}
+ jl SHORT G_M16324_IG15
+ ;; size=5 bbWeight=4 PerfScore 6.00
+G_M16324_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp ecx, edi
- ja SHORT G_M16324_IG14
+ ja SHORT G_M16324_IG16
mov edx, bword ptr [ebp+0x10]
; byrRegs +[edx]
- lea ebx, bword ptr [edx+2*ecx]
- ; byrRegs +[ebx]
+ lea esi, bword ptr [edx+2*ecx]
+ ; byrRegs +[esi]
sub edi, ecx
- jns SHORT G_M16324_IG12
+ jns SHORT G_M16324_IG13
mov ecx, dword ptr [(reloc)] ; const ptr
mov edx, gword ptr [ecx]
; gcrRegs +[edx]
@@ -125,11 +131,13 @@ G_M16324_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=30 bbWeight=0.50 PerfScore 5.62
-G_M16324_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
- mov bword ptr [esi], ebx
- mov dword ptr [esi+0x04], edi
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M16324_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M16324_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ mov ebx, bword ptr [ebp-0x10]
+ ; byrRegs +[ebx]
+ mov bword ptr [ebx], esi
+ mov dword ptr [ebx+0x04], edi
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M16324_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop ebx
pop esi
@@ -137,12 +145,19 @@ G_M16324_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 16
;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M16324_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M16324_IG15: ; bbWeight=2, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[ebx esi]
+ mov esi, bword ptr [ebp-0x10]
+ ; byrRegs +[esi]
+ jmp SHORT G_M16324_IG06
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; byrRegs -[esi]
+ ; GC ptr vars -{V00}
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 142, prolog size 9, PerfScore 216.75, instruction count 63, allocated bytes for code 142 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
+; Total bytes of code 154, prolog size 9, PerfScore 256.50, instruction count 68, allocated bytes for code 154 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
; ============================================================
@@ -10,15 +10,15 @@
;
; V00 arg0 [V00,T05] ( 6, 12 ) ref -> esi class-hnd single-def <System.Xml.Schema.XmlSchemaObjectCollection>
; V01 arg1 [V01,T07] ( 6, 9.57) ref -> edi class-hnd single-def <System.String>
-; V02 arg2 [V02,T10] ( 4, 7.57) ref -> [ebp+0x08] class-hnd single-def <System.String>
+; V02 arg2 [V02,T10] ( 4, 7.57) ref -> ebx class-hnd single-def <System.String>
; V03 loc0 [V03,T03] ( 5, 17 ) int -> [ebp-0x10]
-; V04 loc1 [V04,T06] ( 5, 12.50) ref -> [ebp-0x1C] class-hnd spill-single-def <System.Xml.Schema.XmlSchemaElement>
+; V04 loc1 [V04,T06] ( 5, 12.50) ref -> [ebp-0x18] class-hnd spill-single-def <System.Xml.Schema.XmlSchemaElement>
;* V05 tmp0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlQualifiedName>
;* V06 tmp1 [V06,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlQualifiedName>
-; V08 tmp3 [V08,T01] ( 5, 19.15) ref -> registers class-hnd exact "Inlining Arg" <System.String>
+; V08 tmp3 [V08,T01] ( 5, 19.15) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
; V09 tmp4 [V09,T15] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V10 tmp5 [V10,T08] ( 2, 8 ) byref -> [ebp-0x20] spill-single-def "impAppendStmt"
+; V10 tmp5 [V10,T08] ( 2, 8 ) byref -> ecx "impAppendStmt"
;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -37,10 +37,10 @@
; V26 tmp21 [V26,T04] ( 2, 16 ) ref -> edx "argument with side effect"
; V27 cse0 [V27,T14] ( 2, 5 ) int -> [ebp-0x14] spill-single-def hoist "CSE - moderate"
; V28 cse1 [V28,T11] ( 3, 6 ) ref -> edx "CSE - moderate"
-; V29 cse2 [V29,T12] ( 3, 5.57) int -> [ebp-0x18] "CSE - moderate"
+; V29 cse2 [V29,T12] ( 3, 5.57) int -> edx "CSE - moderate"
; V30 cse3 [V30,T13] ( 3, 5.57) int -> edx "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 12
G_M21788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -48,7 +48,7 @@ G_M21788_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
+ sub esp, 12
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
@@ -66,7 +66,7 @@ G_M21788_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
call [edx+0x18]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jle G_M21788_IG14
+ jle G_M21788_IG13
mov ecx, dword ptr [esi]
mov eax, dword ptr [ecx+0x38]
mov dword ptr [ebp-0x14], eax
@@ -82,57 +82,56 @@ G_M21788_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
mov ecx, 0xD1FFAB1E ; System.Xml.Schema.XmlSchemaElement
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx]
- mov gword ptr [ebp-0x1C], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V04}
test eax, eax
- je SHORT G_M21788_IG13
+ je SHORT G_M21788_IG12
;; size=27 bbWeight=4 PerfScore 32.00
G_M21788_IG04: ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edx, gword ptr [eax+0x58]
; gcrRegs +[edx]
test edx, edx
- je SHORT G_M21788_IG13
+ je SHORT G_M21788_IG12
;; size=7 bbWeight=2 PerfScore 6.50
-G_M21788_IG05: ; bbWeight=2.00, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M21788_IG05: ; bbWeight=2.00, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
mov ecx, gword ptr [edx+0x08]
; gcrRegs +[ecx]
cmp ecx, edi
- je SHORT G_M21788_IG08
+ je SHORT G_M21788_IG07
;; size=7 bbWeight=2.00 PerfScore 6.50
-G_M21788_IG06: ; bbWeight=1.79, gcrefRegs=000000CB {eax ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M21788_IG06: ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
test ecx, ecx
- je SHORT G_M21788_IG13
- ;; size=4 bbWeight=1.79 PerfScore 2.24
-G_M21788_IG07: ; bbWeight=1.79, gcrefRegs=000000CB {eax ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, ecx
- ; gcrRegs +[edx]
- jmp SHORT G_M21788_IG16
- ;; size=4 bbWeight=1.79 PerfScore 4.02
-G_M21788_IG08: ; bbWeight=2.00, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx edx]
+ je SHORT G_M21788_IG12
+ jmp SHORT G_M21788_IG15
+ ;; size=6 bbWeight=1.79 PerfScore 5.82
+G_M21788_IG07: ; bbWeight=2.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx]
+ mov eax, gword ptr [ebp-0x18]
+ ; gcrRegs +[eax]
mov edx, gword ptr [eax+0x58]
; gcrRegs +[edx]
mov ecx, gword ptr [edx+0x04]
; gcrRegs +[ecx]
cmp ecx, ebx
- je G_M21788_IG21
- ;; size=14 bbWeight=2.00 PerfScore 10.50
-G_M21788_IG09: ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M21788_IG18
+ ;; size=13 bbWeight=2.00 PerfScore 12.50
+G_M21788_IG08: ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax edx]
test ecx, ecx
- je SHORT G_M21788_IG13
+ je SHORT G_M21788_IG12
;; size=4 bbWeight=1.79 PerfScore 2.24
-G_M21788_IG10: ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M21788_IG09: ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test ebx, ebx
- je SHORT G_M21788_IG13
+ je SHORT G_M21788_IG12
;; size=4 bbWeight=1.79 PerfScore 2.23
-G_M21788_IG11: ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M21788_IG10: ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ecx+0x04]
cmp edx, dword ptr [ebx+0x04]
- jne SHORT G_M21788_IG13
+ jne SHORT G_M21788_IG12
;; size=8 bbWeight=1.79 PerfScore 10.72
-G_M21788_IG12: ; bbWeight=2, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M21788_IG11: ; bbWeight=2, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
add ecx, 8
; gcrRegs -[ecx]
; byrRegs +[ecx]
@@ -143,9 +142,9 @@ G_M21788_IG12: ; bbWeight=2, gcrefRegs=000000CA {ecx ebx esi edi}, byrefR
call [<unknown method>]
; byrRegs -[ecx edx]
test eax, eax
- jne SHORT G_M21788_IG21
+ jne SHORT G_M21788_IG18
;; size=19 bbWeight=2 PerfScore 12.50
-G_M21788_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M21788_IG12: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V04}
mov edx, dword ptr [ebp-0x10]
inc edx
@@ -156,18 +155,18 @@ G_M21788_IG13: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx
mov eax, dword ptr [eax+0x2C]
call [eax+0x18]<unknown method>
; gcrRegs -[ecx]
- mov ecx, dword ptr [ebp-0x10]
- cmp eax, ecx
- mov dword ptr [ebp-0x10], ecx
+ mov edx, dword ptr [ebp-0x10]
+ cmp eax, edx
+ mov dword ptr [ebp-0x10], edx
mov eax, dword ptr [ebp-0x14]
- jg G_M21788_IG03
- ;; size=35 bbWeight=4 PerfScore 62.00
-G_M21788_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jg SHORT G_M21788_IG03
+ ;; size=31 bbWeight=4 PerfScore 62.00
+G_M21788_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi edi]
xor eax, eax
; gcrRegs +[eax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M21788_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M21788_IG14: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -175,60 +174,37 @@ G_M21788_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M21788_IG16: ; bbWeight=1.79, gcVars=00000040 {V04}, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[edx ebx esi edi]
+G_M21788_IG15: ; bbWeight=1.79, gcVars=00000040 {V04}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[ecx ebx esi edi]
; GC ptr vars +{V04 V06}
test edi, edi
- je SHORT G_M21788_IG13
+ je SHORT G_M21788_IG12
;; size=4 bbWeight=1.79 PerfScore 2.23
-G_M21788_IG17: ; bbWeight=1.79, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp+0x08], ebx
- mov ebx, dword ptr [edx+0x04]
- ; gcrRegs -[ebx]
- cmp ebx, dword ptr [edi+0x04]
- mov dword ptr [ebp-0x18], ebx
- jne SHORT G_M21788_IG20
- ;; size=14 bbWeight=1.79 PerfScore 14.29
-G_M21788_IG18: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- add edx, 8
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
- mov bword ptr [ebp-0x20], edx
- ; GC ptr vars +{V10}
- mov ebx, dword ptr [ebp-0x18]
- add ebx, ebx
- push ebx
- lea edx, bword ptr [edi+0x08]
- mov ecx, bword ptr [ebp-0x20]
+G_M21788_IG16: ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ecx+0x04]
+ cmp edx, dword ptr [edi+0x04]
+ jne SHORT G_M21788_IG12
+ ;; size=8 bbWeight=1.79 PerfScore 10.72
+G_M21788_IG17: ; bbWeight=2, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ add ecx, 8
+ ; gcrRegs -[ecx]
; byrRegs +[ecx]
- ; GC ptr vars -{V06 V10}
+ add edx, edx
+ push edx
+ lea edx, bword ptr [edi+0x08]
+ ; byrRegs +[edx]
call [<unknown method>]
; byrRegs -[ecx edx]
test eax, eax
- mov ebx, gword ptr [ebp+0x08]
- ; gcrRegs +[ebx]
- je SHORT G_M21788_IG13
- ;; size=31 bbWeight=2 PerfScore 20.50
-G_M21788_IG19: ; bbWeight=2.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov eax, gword ptr [ebp-0x1C]
- ; gcrRegs +[eax]
- jmp G_M21788_IG08
- ;; size=8 bbWeight=2.00 PerfScore 6.00
-G_M21788_IG20: ; bbWeight=0.89, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax ebx]
- ; GC ptr vars -{V04}
- mov ebx, gword ptr [ebp+0x08]
- ; gcrRegs +[ebx]
- jmp SHORT G_M21788_IG13
- ;; size=5 bbWeight=0.89 PerfScore 2.68
-G_M21788_IG21: ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ je SHORT G_M21788_IG12
+ jmp SHORT G_M21788_IG07
+ ;; size=21 bbWeight=2 PerfScore 16.50
+G_M21788_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi edi]
- ; GC ptr vars +{V04 V06}
- mov eax, gword ptr [ebp-0x1C]
+ mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M21788_IG22: ; bbWeight=0.50, epilog, nogc, extend
+G_M21788_IG19: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
...
@@ -10,16 +10,16 @@
;
; V00 this [V00,T07] ( 5, 8.00) ref -> edi this class-hnd single-def <System.Xml.XmlNamedNodeMap>
; V01 arg1 [V01,T06] ( 6, 11.57) ref -> esi class-hnd single-def <System.String>
-; V02 arg2 [V02,T11] ( 4, 7.57) ref -> [ebp+0x08] class-hnd single-def <System.String>
+; V02 arg2 [V02,T11] ( 4, 7.57) ref -> ebx class-hnd single-def <System.String>
; V03 loc0 [V03,T12] ( 3, 6 ) int -> [ebp-0x10] spill-single-def
; V04 loc1 [V04,T03] ( 6, 17.50) int -> [ebp-0x14]
-; V05 loc2 [V05,T05] ( 4, 14.00) ref -> [ebp-0x20] class-hnd <<unknown class>>
+; V05 loc2 [V05,T05] ( 4, 14.00) ref -> [ebp-0x1C] class-hnd spill-single-def <<unknown class>>
; V06 tmp0 [V06,T04] ( 3, 17.00) ref -> eax "CASTCLASS eval op1"
; V07 tmp1 [V07,T15] ( 3, 5.00) int -> ecx "fgMakeTemp is creating a new local variable"
; V08 tmp2 [V08,T01] ( 5, 27.00) ref -> registers class-hnd "spilling QMark2" <<unknown class>>
; V09 tmp3 [V09,T00] ( 5, 27.15) ref -> eax class-hnd exact "Inlining Arg" <System.String>
; V10 tmp4 [V10,T16] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V11 tmp5 [V11,T09] ( 2, 8 ) byref -> eax "impAppendStmt"
+; V11 tmp5 [V11,T09] ( 2, 8 ) byref -> ecx "impAppendStmt"
;* V12 tmp6 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp8 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -33,11 +33,11 @@
;* V22 tmp16 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp17 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp18 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 cse0 [V25,T08] ( 3, 10.00) int -> [ebp-0x18] "CSE - moderate"
-; V26 cse1 [V26,T13] ( 3, 5.57) int -> [ebp-0x1C] "CSE - moderate"
+; V25 cse0 [V25,T08] ( 3, 10.00) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V26 cse1 [V26,T13] ( 3, 5.57) int -> edx "CSE - moderate"
; V27 cse2 [V27,T14] ( 3, 5.57) int -> edx "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M15178_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -45,7 +45,7 @@ G_M15178_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
+ sub esp, 16
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
@@ -63,7 +63,7 @@ G_M15178_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
mov dword ptr [ebp-0x10], eax
xor edx, edx
test eax, eax
- jle SHORT G_M15178_IG15
+ jle SHORT G_M15178_IG14
;; size=19 bbWeight=1 PerfScore 9.75
G_M15178_IG03: ; bbWeight=4.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
lea ecx, bword ptr [edi+0x08]
@@ -95,10 +95,10 @@ G_M15178_IG06: ; bbWeight=4.00, gcrefRegs=000000CC {edx ebx esi edi}, byr
; gcrRegs -[eax]
mov eax, edx
; gcrRegs +[eax]
+ mov gword ptr [ebp-0x1C], eax
+ ; GC ptr vars +{V05}
mov ecx, eax
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x20], eax
- ; GC ptr vars +{V05}
mov edx, dword ptr [eax]
; gcrRegs -[edx]
mov edx, dword ptr [edx+0x3C]
@@ -106,40 +106,38 @@ G_M15178_IG06: ; bbWeight=4.00, gcrefRegs=000000CC {edx ebx esi edi}, byr
call [edx+0x18]<unknown method>
; gcrRegs -[ecx]
cmp eax, esi
- je SHORT G_M15178_IG09
+ je SHORT G_M15178_IG08
;; size=22 bbWeight=4.00 PerfScore 43.00
G_M15178_IG07: ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- je SHORT G_M15178_IG14
- ;; size=4 bbWeight=1.79 PerfScore 2.24
-G_M15178_IG08: ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M15178_IG19
- ;; size=2 bbWeight=1.79 PerfScore 3.57
-G_M15178_IG09: ; bbWeight=2.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M15178_IG13
+ jmp SHORT G_M15178_IG18
+ ;; size=6 bbWeight=1.79 PerfScore 5.82
+G_M15178_IG08: ; bbWeight=2.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx]
mov edx, dword ptr [ebp-0x18]
; GC ptr vars -{V05}
call [edx+0x0C]<unknown method>
; gcrRegs -[ecx] +[eax]
cmp eax, ebx
- je SHORT G_M15178_IG18
+ je SHORT G_M15178_IG17
;; size=13 bbWeight=2.00 PerfScore 12.50
-G_M15178_IG10: ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG09: ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- je SHORT G_M15178_IG14
+ je SHORT G_M15178_IG13
;; size=4 bbWeight=1.79 PerfScore 2.24
-G_M15178_IG11: ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG10: ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test ebx, ebx
- je SHORT G_M15178_IG14
+ je SHORT G_M15178_IG13
;; size=4 bbWeight=1.79 PerfScore 2.23
-G_M15178_IG12: ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG11: ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [eax+0x04]
cmp edx, dword ptr [ebx+0x04]
- jne SHORT G_M15178_IG14
+ jne SHORT G_M15178_IG13
;; size=8 bbWeight=1.79 PerfScore 10.72
-G_M15178_IG13: ; bbWeight=2, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG12: ; bbWeight=2, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
lea ecx, bword ptr [eax+0x08]
; byrRegs +[ecx]
add edx, edx
@@ -150,20 +148,20 @@ G_M15178_IG13: ; bbWeight=2, gcrefRegs=000000C9 {eax ebx esi edi}, byrefR
; gcrRegs -[eax]
; byrRegs -[ecx edx]
test eax, eax
- jne SHORT G_M15178_IG17
+ jne SHORT G_M15178_IG16
;; size=19 bbWeight=2 PerfScore 13.00
-G_M15178_IG14: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG13: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebp-0x14]
inc edx
- mov ecx, dword ptr [ebp-0x10]
- cmp edx, ecx
+ mov eax, dword ptr [ebp-0x10]
+ cmp edx, eax
jl SHORT G_M15178_IG03
;; size=11 bbWeight=4 PerfScore 14.00
-G_M15178_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15178_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi edi]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M15178_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M15178_IG15: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -171,66 +169,45 @@ G_M15178_IG16: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M15178_IG17: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15178_IG16: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edx, dword ptr [ebp-0x14]
- jmp SHORT G_M15178_IG24
+ jmp SHORT G_M15178_IG21
;; size=5 bbWeight=1 PerfScore 3.00
-G_M15178_IG18: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG17: ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebp-0x14]
- jmp SHORT G_M15178_IG24
+ jmp SHORT G_M15178_IG21
;; size=5 bbWeight=1.00 PerfScore 3.00
-G_M15178_IG19: ; bbWeight=1.79, gcVars=00000020 {V05}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15178_IG18: ; bbWeight=1.79, gcVars=00000020 {V05}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax ebx esi edi]
; GC ptr vars +{V05}
test esi, esi
- je SHORT G_M15178_IG14
+ je SHORT G_M15178_IG13
;; size=4 bbWeight=1.79 PerfScore 2.23
-G_M15178_IG20: ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp+0x08], ebx
- mov ebx, dword ptr [eax+0x04]
- ; gcrRegs -[ebx]
- cmp ebx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x1C], ebx
- jne SHORT G_M15178_IG23
- ;; size=14 bbWeight=1.79 PerfScore 14.29
-G_M15178_IG21: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- add eax, 8
- ; gcrRegs -[eax]
- ; byrRegs +[eax]
- mov ebx, dword ptr [ebp-0x1C]
- add ebx, ebx
- push ebx
+G_M15178_IG19: ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [eax+0x04]
+ cmp edx, dword ptr [esi+0x04]
+ jne SHORT G_M15178_IG13
+ ;; size=8 bbWeight=1.79 PerfScore 10.72
+G_M15178_IG20: ; bbWeight=2, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ lea ecx, bword ptr [eax+0x08]
+ ; byrRegs +[ecx]
+ add edx, edx
+ push edx
lea edx, bword ptr [esi+0x08]
; byrRegs +[edx]
- mov ecx, eax
- ; byrRegs +[ecx]
call [<unknown method>]
- ; byrRegs -[eax ecx edx]
+ ; gcrRegs -[eax]
+ ; byrRegs -[ecx edx]
test eax, eax
- mov ebx, gword ptr [ebp+0x08]
- ; gcrRegs +[ebx]
- je SHORT G_M15178_IG14
- ;; size=27 bbWeight=2 PerfScore 17.00
-G_M15178_IG22: ; bbWeight=2.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov eax, gword ptr [ebp-0x20]
- ; gcrRegs +[eax]
- mov edx, dword ptr [ebp-0x18]
- mov gword ptr [ebp-0x20], eax
- mov dword ptr [ebp-0x18], edx
- jmp G_M15178_IG09
- ;; size=17 bbWeight=2.00 PerfScore 12.00
-G_M15178_IG23: ; bbWeight=0.89, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax ebx]
- ; GC ptr vars -{V05}
- mov ebx, gword ptr [ebp+0x08]
- ; gcrRegs +[ebx]
- jmp SHORT G_M15178_IG14
- ;; size=5 bbWeight=0.89 PerfScore 2.68
-G_M15178_IG24: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ je SHORT G_M15178_IG13
+ jmp SHORT G_M15178_IG08
+ ;; size=21 bbWeight=2 PerfScore 17.00
+G_M15178_IG21: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx esi edi]
+ ; GC ptr vars -{V05}
mov eax, edx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M15178_IG25: ; bbWeight=0.50, epilog, nogc, extend
+G_M15178_IG22: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -239,6 +216,6 @@ G_M15178_IG25: ; bbWeight=0.50, epilog, nogc, extend
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 262, prolog size 9, PerfScore 207.20, instruction count 107, allocated bytes for code 262 (MethodHash=c3c1c4b5) for method System.Xml.XmlNamedNodeMap:FindNodeOffset(System.String,System.String):int:this (FullOpts)
+; Total bytes of code 228, prolog size 9, PerfScore 188.96, instruction count 96, allocated bytes for code 228 (MethodHash=c3c1c4b5) for method System.Xml.XmlNamedNodeMap:FindNodeOffset(System.String,System.String):int:this (FullOpts)
; ============================================================
@@ -8,10 +8,10 @@
; 2 inlinees with PGO data; 14 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 6, 4.50) ref -> [ebp-0x14] class-hnd single-def <System.Xml.XmlElement>
+; V00 arg0 [V00,T01] ( 6, 4.50) ref -> edi class-hnd single-def <System.Xml.XmlElement>
; V01 arg1 [V01,T00] ( 7, 4.89) ref -> esi class-hnd single-def <System.String>
; V02 arg2 [V02,T04] ( 5, 2.89) ref -> ebx class-hnd single-def <System.String>
-; V03 tmp0 [V03,T02] ( 6, 5.79) ref -> registers class-hnd exact single-def "Inlining Arg" <System.String>
+; V03 tmp0 [V03,T02] ( 6, 5.79) ref -> eax class-hnd exact single-def "Inlining Arg" <System.String>
; V04 tmp1 [V04,T08] ( 2, 1 ) ubyte -> eax "Inline return value spill temp"
; V05 tmp2 [V05,T05] ( 2, 2 ) byref -> ecx single-def "impAppendStmt"
;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -27,9 +27,9 @@
;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp15 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 cse0 [V19,T07] ( 3, 1.50) int -> [ebp-0x10] "CSE - moderate"
+; V19 cse0 [V19,T07] ( 3, 1.50) int -> [ebp-0x10] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M26669_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -37,14 +37,14 @@ G_M26669_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ push eax
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
; gcrRegs +[esi]
mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
- ;; size=16 bbWeight=1 PerfScore 6.00
+ ;; size=14 bbWeight=1 PerfScore 6.75
G_M26669_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
push ebx
mov ecx, edi
@@ -61,13 +61,13 @@ G_M26669_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M26669_IG04: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
G_M26669_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi edi]
mov ecx, edi
@@ -78,45 +78,37 @@ G_M26669_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {e
call [eax+0x10]<unknown method>
; gcrRegs -[ecx] +[eax]
cmp eax, esi
- je SHORT G_M26669_IG08
+ je SHORT G_M26669_IG07
;; size=17 bbWeight=0.50 PerfScore 4.75
G_M26669_IG06: ; bbWeight=0.45, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- je SHORT G_M26669_IG13
- ;; size=4 bbWeight=0.45 PerfScore 0.56
-G_M26669_IG07: ; bbWeight=0.45, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, eax
- ; gcrRegs +[edx]
- mov eax, edi
- mov edi, dword ptr [ebp-0x10]
- ; gcrRegs -[edi]
- jmp SHORT G_M26669_IG15
- ;; size=9 bbWeight=0.45 PerfScore 1.56
-G_M26669_IG08: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edx esi] +[edi]
+ je SHORT G_M26669_IG12
+ jmp SHORT G_M26669_IG14
+ ;; size=6 bbWeight=0.45 PerfScore 1.45
+G_M26669_IG07: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax esi]
mov ecx, edi
; gcrRegs +[ecx]
- mov edi, dword ptr [ebp-0x10]
- ; gcrRegs -[edi]
- call [edi+0x0C]<unknown method>
- ; gcrRegs -[ecx] +[eax]
+ mov esi, dword ptr [ebp-0x10]
+ call [esi+0x0C]<unknown method>
+ ; gcrRegs -[ecx edi] +[eax]
cmp eax, ebx
je SHORT G_M26669_IG03
;; size=12 bbWeight=0.50 PerfScore 2.75
-G_M26669_IG09: ; bbWeight=0.45, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
+G_M26669_IG08: ; bbWeight=0.45, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- je SHORT G_M26669_IG13
+ je SHORT G_M26669_IG12
+ ;; size=4 bbWeight=0.45 PerfScore 0.56
+G_M26669_IG09: ; bbWeight=0.45, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
+ test ebx, ebx
+ je SHORT G_M26669_IG12
;; size=4 bbWeight=0.45 PerfScore 0.56
G_M26669_IG10: ; bbWeight=0.45, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
- test ebx, ebx
- je SHORT G_M26669_IG13
- ;; size=4 bbWeight=0.45 PerfScore 0.56
-G_M26669_IG11: ; bbWeight=0.45, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [eax+0x04]
cmp edx, dword ptr [ebx+0x04]
- jne SHORT G_M26669_IG13
+ jne SHORT G_M26669_IG12
;; size=8 bbWeight=0.45 PerfScore 2.68
-G_M26669_IG12: ; bbWeight=0.50, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
+G_M26669_IG11: ; bbWeight=0.50, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
lea ecx, bword ptr [eax+0x08]
; byrRegs +[ecx]
mov edx, dword ptr [eax+0x04]
@@ -130,54 +122,43 @@ G_M26669_IG12: ; bbWeight=0.50, gcrefRegs=00000009 {eax ebx}, byrefRegs=0
test eax, eax
jne SHORT G_M26669_IG03
;; size=22 bbWeight=0.50 PerfScore 4.25
-G_M26669_IG13: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M26669_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M26669_IG14: ; bbWeight=0.50, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+G_M26669_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M26669_IG15: ; bbWeight=0.45, gcVars=00000000 {}, gcrefRegs=0000004D {eax edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[eax edx ebx esi]
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M26669_IG14: ; bbWeight=0.45, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[eax ebx esi edi]
test esi, esi
- je SHORT G_M26669_IG13
+ je SHORT G_M26669_IG12
;; size=4 bbWeight=0.45 PerfScore 0.56
-G_M26669_IG16: ; bbWeight=0.45, gcrefRegs=0000004D {eax edx ebx esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [edx+0x04]
- cmp ecx, dword ptr [esi+0x04]
- mov gword ptr [ebp-0x14], eax
- ; GC ptr vars +{V00}
- jne SHORT G_M26669_IG13
- ;; size=11 bbWeight=0.45 PerfScore 3.13
-G_M26669_IG17: ; bbWeight=0.50, gcVars=00000002 {V00}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- lea ecx, bword ptr [edx+0x08]
+G_M26669_IG15: ; bbWeight=0.45, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [eax+0x04]
+ cmp edx, dword ptr [esi+0x04]
+ jne SHORT G_M26669_IG12
+ ;; size=8 bbWeight=0.45 PerfScore 2.68
+G_M26669_IG16: ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ lea ecx, bword ptr [eax+0x08]
; byrRegs +[ecx]
- mov edx, dword ptr [edx+0x04]
- ; gcrRegs -[edx]
+ mov edx, dword ptr [eax+0x04]
add edx, edx
push edx
lea edx, bword ptr [esi+0x08]
; byrRegs +[edx]
call [<unknown method>]
- ; gcrRegs -[esi]
+ ; gcrRegs -[eax esi]
; byrRegs -[ecx edx]
test eax, eax
- je SHORT G_M26669_IG13
- ;; size=22 bbWeight=0.50 PerfScore 4.25
-G_M26669_IG18: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov esi, gword ptr [ebp-0x14]
- ; gcrRegs +[esi]
- mov dword ptr [ebp-0x10], edi
- mov edi, esi
- ; gcrRegs +[edi]
- jmp SHORT G_M26669_IG08
- ;; size=10 bbWeight=0.50 PerfScore 2.13
+ je SHORT G_M26669_IG12
+ jmp SHORT G_M26669_IG07
+ ;; size=24 bbWeight=0.50 PerfScore 5.25
-; Total bytes of code 185, prolog size 9, PerfScore 44.23, instruction count 80, allocated bytes for code 185 (MethodHash=ea0a97d2) for method System.Security.Cryptography.Xml.Utils:HasNamespace(System.Xml.XmlElement,System.String,System.String):ubyte (FullOpts)
+; Total bytes of code 161, prolog size 7, PerfScore 42.74, instruction count 73, allocated bytes for code 161 (MethodHash=ea0a97d2) for method System.Security.Cryptography.Xml.Utils:HasNamespace(System.Xml.XmlElement,System.String,System.String):ubyte (FullOpts)
; ============================================================
@@ -45,55 +45,25 @@ G_M48074_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
;; size=16 bbWeight=1 PerfScore 6.00
-G_M48074_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M48074_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov gword ptr [esi+0x10], 0xD1FFAB1E
mov dword ptr [esi+0x1C], -1
test edi, edi
- je SHORT G_M48074_IG04
- ;; size=18 bbWeight=1 PerfScore 3.25
-G_M48074_IG03: ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M48074_IG10
+ ;; size=22 bbWeight=1 PerfScore 3.25
+G_M48074_IG03: ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [edi+0x04], 0
- jne SHORT G_M48074_IG05
- ;; size=6 bbWeight=0.46 PerfScore 1.85
-G_M48074_IG04: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx esi]
- mov ecx, 0x13F3
- mov edx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[eax]
- mov edx, eax
- ; gcrRegs +[edx]
- mov ecx, edi
- ; gcrRegs +[ecx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[eax ecx edx edi]
- int3
- ;; size=26 bbWeight=0 PerfScore 0.00
-G_M48074_IG05: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi edi]
+ je G_M48074_IG10
+ ;; size=10 bbWeight=0.46 PerfScore 1.85
+G_M48074_IG04: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
test ebx, ebx
- je SHORT G_M48074_IG07
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M48074_IG06: ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ je G_M48074_IG11
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M48074_IG05: ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [ebx+0x04], 0
- jne SHORT G_M48074_IG08
- ;; size=6 bbWeight=0.46 PerfScore 1.85
-G_M48074_IG07: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi edi]
- mov ecx, 0x13FD
- mov edx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[eax]
- mov edx, eax
- ; gcrRegs +[edx]
- mov ecx, ebx
- ; gcrRegs +[ecx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[eax ecx edx ebx]
- int3
- ;; size=26 bbWeight=0 PerfScore 0.00
-G_M48074_IG08: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi edi]
+ je G_M48074_IG11
+ ;; size=10 bbWeight=0.46 PerfScore 1.85
+G_M48074_IG06: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Net.Mail.Message
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -115,15 +85,15 @@ G_M48074_IG08: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
; gcrRegs -[edi]
; byrRegs -[edx]
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M48074_IG12
- ;; size=44 bbWeight=1 PerfScore 13.25
-G_M48074_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ je G_M48074_IG12
+ ;; size=48 bbWeight=1 PerfScore 13.25
+G_M48074_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ebx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ebx]
cmp byte ptr [ebx+0x59], 0
- je SHORT G_M48074_IG11
+ je SHORT G_M48074_IG09
;; size=12 bbWeight=1 PerfScore 6.00
-G_M48074_IG10: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M48074_IG08: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov edi, gword ptr [esi+0x18]
; gcrRegs +[edi]
mov ecx, esi
@@ -156,7 +126,7 @@ G_M48074_IG10: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[eax ecx ebx esi edi]
;; size=58 bbWeight=0.50 PerfScore 12.25
-G_M48074_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M48074_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -164,14 +134,42 @@ G_M48074_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop ebp
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-G_M48074_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M48074_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[edi]
+ mov ecx, 0x13F3
+ mov edx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[eax]
+ mov edx, eax
+ ; gcrRegs +[edx]
+ mov ecx, edi
+ ; gcrRegs +[ecx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[eax ecx edx edi]
+ int3
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M48074_IG11: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[ebx]
+ mov ecx, 0x13FD
+ mov edx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[eax]
+ mov edx, eax
+ ; gcrRegs +[edx]
+ mov ecx, ebx
+ ; gcrRegs +[ecx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[eax ecx edx ebx]
+ int3
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M48074_IG12: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
mov ecx, 0xD1FFAB1E
mov edx, 20
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M48074_IG09
- ;; size=17 bbWeight=0 PerfScore 0.00
+ jmp G_M48074_IG07
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 243, prolog size 9, PerfScore 50.20, instruction count 76, allocated bytes for code 243 (MethodHash=398c4435) for method System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)
+; Total bytes of code 266, prolog size 9, PerfScore 50.20, instruction count 76, allocated bytes for code 266 (MethodHash=398c4435) for method System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)
; ============================================================
@@ -9,22 +9,22 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 12, 79.50) byref -> esi this single-def
-; V01 arg1 [V01,T13] ( 6, 4 ) byref -> edi single-def
-; V02 arg2 [V02,T27] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V03 loc0 [V03,T04] ( 9, 40 ) int -> ebx ld-addr-op
-; V04 loc1 [V04,T05] ( 6, 24.50) int -> [ebp-0x10] ld-addr-op
-; V05 loc2 [V05,T14] ( 5, 5.50) int -> [ebp-0x14]
-; V06 loc3 [V06,T26] ( 3, 1.50) int -> [ebp-0x18] spill-single-def
+; V01 arg1 [V01,T12] ( 6, 7.50) byref -> edi single-def
+; V02 arg2 [V02,T16] ( 2, 4.50) byref -> [ebp+0x08] single-def
+; V03 loc0 [V03,T04] ( 9, 40 ) int -> [ebp-0x10] ld-addr-op
+; V04 loc1 [V04,T05] ( 6, 24.50) int -> [ebp-0x14] ld-addr-op
+; V05 loc2 [V05,T14] ( 5, 5.50) int -> [ebp-0x18]
+; V06 loc3 [V06,T27] ( 3, 1.50) int -> [ebp-0x1C] spill-single-def
;* V07 loc4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[ushort]>
;* V08 tmp0 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V09 tmp1 [V09,T15] ( 5, 5 ) ref -> ecx class-hnd single-def "Inlining Arg" <ushort[]>
-; V10 tmp2 [V10,T16] ( 5, 4 ) int -> eax "Inlining Arg"
-; V11 tmp3 [V11,T19] ( 4, 3 ) int -> ebx "Inlining Arg"
-; V12 tmp4 [V12 ] ( 4, 1.50) struct ( 8) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+; V10 tmp2 [V10,T17] ( 5, 4 ) int -> ebx "Inlining Arg"
+; V11 tmp3 [V11,T20] ( 4, 3 ) int -> esi "Inlining Arg"
+; V12 tmp4 [V12 ] ( 4, 1.50) struct ( 8) [ebp-0x24] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp5 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp6 [V14,T25] ( 2, 1.94) int -> ecx "Span.get_Item index"
+; V14 tmp6 [V14,T26] ( 2, 1.93) int -> ecx "Span.get_Item index"
; V15 tmp7 [V15,T28] ( 2, 0.97) ubyte -> eax "Inline return value spill temp"
-; V16 tmp8 [V16,T17] ( 4, 3.88) ushort -> ecx "Inlining Arg"
+; V16 tmp8 [V16,T18] ( 4, 3.88) ushort -> ecx "Inlining Arg"
;* V17 tmp9 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V18 tmp10 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp11 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -33,7 +33,7 @@
;* V22 tmp14 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp15 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V24 tmp16 [V24,T29] ( 2, 0.96) ubyte -> eax "Inline return value spill temp"
-; V25 tmp17 [V25,T18] ( 4, 3.87) ushort -> ecx "Inlining Arg"
+; V25 tmp17 [V25,T19] ( 4, 3.85) ushort -> ecx "Inlining Arg"
;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp19 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp20 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -42,10 +42,10 @@
;* V31 tmp23 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V32 tmp24 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V33 tmp25 [V33,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V34 tmp26 [V34,T02] ( 9, 72.01) int -> ebx "Inline stloc first use temp"
+; V34 tmp26 [V34,T02] ( 9, 72.01) int -> [ebp-0x28] spill-single-def "Inline stloc first use temp"
;* V35 tmp27 [V35 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Span`1[ushort]>
;* V36 tmp28 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V37 tmp29 [V37,T08] ( 3, 18 ) int -> eax "Inline stloc first use temp"
+; V37 tmp29 [V37,T08] ( 3, 18 ) int -> ebx "Inline stloc first use temp"
; V38 tmp30 [V38,T03] ( 5, 44.02) ref -> ecx class-hnd "Inlining Arg" <ushort[]>
; V39 tmp31 [V39,T06] ( 4, 24.01) int -> edx "Inlining Arg"
;* V40 tmp32 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
@@ -65,10 +65,10 @@
;* V54 tmp46 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp47 [V55 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V56 tmp48 [V56 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x4)" P-INDEP
-; V57 tmp49 [V57,T24] ( 6, 1.97) byref -> esi "field V08._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp50 [V58,T23] ( 6, 1.99) int -> ebx "field V08._length (fldOffset=0x4)" P-INDEP
-; V59 tmp51 [V59 ] ( 3, 1 ) byref -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
-; V60 tmp52 [V60 ] ( 3, 1 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
+; V57 tmp49 [V57,T25] ( 6, 1.97) byref -> ebx "field V08._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp50 [V58,T24] ( 6, 1.98) int -> esi "field V08._length (fldOffset=0x4)" P-INDEP
+; V59 tmp51 [V59 ] ( 3, 1 ) byref -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
+; V60 tmp52 [V60 ] ( 3, 1 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
;* V61 tmp53 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp54 [V62 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x4)" P-INDEP
;* V63 tmp55 [V63 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
@@ -103,7 +103,7 @@
; V92 tmp84 [V92,T11] ( 3, 10 ) int -> edx "field V40._length (fldOffset=0x4)" P-INDEP
;* V93 tmp85 [V93 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp86 [V94 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x4)" P-INDEP
-; V95 tmp87 [V95,T09] ( 2, 16 ) byref -> eax "field V42._reference (fldOffset=0x0)" P-INDEP
+; V95 tmp87 [V95,T09] ( 2, 16 ) byref -> ebx "field V42._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp88 [V96 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
;* V97 tmp89 [V97 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp90 [V98 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x4)" P-INDEP
@@ -117,13 +117,13 @@
;* V106 tmp98 [V106 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x4)" P-INDEP
;* V107 tmp99 [V107 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp100 [V108 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x4)" P-INDEP
-; V109 tmp101 [V109,T12] ( 2, 8 ) ref -> ecx "argument with side effect"
-; V110 tmp102 [V110,T20] ( 2, 2 ) ref -> ecx "argument with side effect"
-; V111 tmp103 [V111,T21] ( 2, 2 ) ref -> ecx "argument with side effect"
-; V112 tmp104 [V112,T22] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V109 tmp101 [V109,T13] ( 2, 8 ) ref -> eax "argument with side effect"
+; V110 tmp102 [V110,T21] ( 2, 2 ) ref -> ebx "argument with side effect"
+; V111 tmp103 [V111,T22] ( 2, 2 ) ref -> ecx "argument with side effect"
+; V112 tmp104 [V112,T23] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
; V113 cse0 [V113,T00] ( 4, 96 ) int -> eax "CSE - aggressive"
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M44740_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -131,10 +131,10 @@ G_M44740_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
+ sub esp, 28
xor eax, eax
+ mov dword ptr [ebp-0x24], eax
mov dword ptr [ebp-0x20], eax
- mov dword ptr [ebp-0x1C], eax
mov esi, ecx
; byrRegs +[esi]
mov edi, edx
@@ -144,42 +144,47 @@ G_M44740_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e
jmp SHORT G_M44740_IG04
;; size=2 bbWeight=1 PerfScore 2.00
G_M44740_IG03: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- test eax, eax
+ test ebx, ebx
je SHORT G_M44740_IG04
- mov ecx, gword ptr [esi]
+ mov ecx, ebx
+ mov eax, gword ptr [esi]
+ ; gcrRegs +[eax]
+ mov dword ptr [ebp-0x10], edx
+ push edx
+ mov dword ptr [ebp-0x14], ecx
+ push ecx
+ mov ecx, eax
; gcrRegs +[ecx]
- push ebx
- mov dword ptr [ebp-0x10], eax
- push eax
mov edx, 58
call [<unknown method>]
- ; gcrRegs -[ecx]
- cmp eax, -1
- jne SHORT G_M44740_IG14
- ;; size=27 bbWeight=2 PerfScore 21.50
+ ; gcrRegs -[eax ecx]
+ mov edx, eax
+ cmp edx, -1
+ jne G_M44740_IG17
+ ;; size=40 bbWeight=2 PerfScore 25.00
G_M44740_IG04: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov ebx, dword ptr [esi+0x08]
+ mov eax, dword ptr [esi+0x08]
+ mov dword ptr [ebp-0x28], eax
mov ecx, gword ptr [esi]
; gcrRegs +[ecx]
mov edx, dword ptr [esi+0x04]
- sub edx, ebx
+ sub edx, eax
test ecx, ecx
jne SHORT G_M44740_IG06
- ;; size=14 bbWeight=8 PerfScore 60.00
+ ;; size=17 bbWeight=8 PerfScore 68.00
G_M44740_IG05: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
; gcrRegs -[ecx]
- mov eax, ebx
- or eax, edx
+ or edx, eax
jne SHORT G_M44740_IG07
xor ecx, ecx
; byrRegs +[ecx]
xor edx, edx
jmp SHORT G_M44740_IG10
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M44740_IG06: ; bbWeight=2.01, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
; gcrRegs +[ecx]
; byrRegs -[ecx]
- cmp dword ptr [ecx+0x04], ebx
+ cmp dword ptr [ecx+0x04], eax
jae SHORT G_M44740_IG08
;; size=5 bbWeight=2.01 PerfScore 8.02
G_M44740_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -191,63 +196,96 @@ G_M44740_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
G_M44740_IG08: ; bbWeight=2.00, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
; gcrRegs +[ecx]
; byrRegs +[esi edi]
- mov eax, dword ptr [ecx+0x04]
- sub eax, ebx
- cmp eax, edx
+ mov ebx, dword ptr [ecx+0x04]
+ sub ebx, eax
+ cmp ebx, edx
jb SHORT G_M44740_IG07
;; size=9 bbWeight=2.00 PerfScore 7.01
G_M44740_IG09: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref
- lea ecx, bword ptr [ecx+2*ebx+0x08]
+ lea ecx, bword ptr [ecx+2*eax+0x08]
; gcrRegs -[ecx]
; byrRegs +[ecx]
;; size=4 bbWeight=2 PerfScore 2.00
G_M44740_IG10: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C2 {ecx esi edi}, byref, isz
- mov eax, 0xD1FFAB1E
- ; byrRegs +[eax]
- push eax
+ mov ebx, 0xD1FFAB1E
+ ; byrRegs +[ebx]
+ push ebx
push 2
call [<unknown method>]
- ; byrRegs -[eax ecx]
- test eax, eax
+ ; byrRegs -[ecx ebx]
+ mov ebx, eax
+ test ebx, ebx
jl SHORT G_M44740_IG12
- ;; size=18 bbWeight=8 PerfScore 52.00
+ ;; size=20 bbWeight=8 PerfScore 54.00
G_M44740_IG11: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- lea ecx, [ebx+eax]
+ mov eax, dword ptr [ebp-0x28]
+ mov edx, eax
+ lea ecx, [edx+ebx]
add ecx, 2
mov dword ptr [esi+0x08], ecx
jmp SHORT G_M44740_IG03
- ;; size=11 bbWeight=2 PerfScore 7.50
-G_M44740_IG12: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+ ;; size=16 bbWeight=2 PerfScore 10.00
+G_M44740_IG12: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
mov eax, dword ptr [esi+0x04]
- cmp ebx, eax
- jge G_M44740_IG29
- ;; size=11 bbWeight=32 PerfScore 104.00
+ mov edx, dword ptr [ebp-0x28]
+ cmp edx, eax
+ jge SHORT G_M44740_IG14
+ ;; size=10 bbWeight=32 PerfScore 136.00
G_M44740_IG13: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- mov ecx, eax
- sub ecx, ebx
- mov edx, ecx
+ mov ecx, edx
+ mov edx, eax
+ sub edx, ecx
mov dword ptr [esi+0x08], eax
- mov eax, edx
+ mov ebx, edx
+ mov edx, ecx
jmp G_M44740_IG03
- ;; size=16 bbWeight=16 PerfScore 64.00
-G_M44740_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x14], eax
- mov ecx, eax
- sub ecx, ebx
- mov dword ptr [ebp-0x18], ecx
- mov ecx, gword ptr [esi]
...
@@ -10,15 +10,15 @@
;
; V00 this [V00,T14] ( 3, 3 ) ref -> ecx this class-hnd single-def <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+StructValue>
; V01 arg1 [V01,T06] ( 6, 9.58) ref -> esi class-hnd single-def <System.String>
-; V02 arg2 [V02,T18] ( 2, 1 ) byref -> [ebp+0x08] single-def
+; V02 arg2 [V02,T16] ( 2, 4.50) byref -> [ebp+0x08] single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
-;* V05 loc2 [V05,T19] ( 0, 0 ) ubyte -> zero-ref
-; V06 tmp0 [V06,T12] ( 3, 6 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>
+;* V05 loc2 [V05,T19] ( 0, 0 ) ubyte -> zero-ref single-def
+; V06 tmp0 [V06,T12] ( 3, 6 ) ref -> ebx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
-; V08 tmp2 [V08,T03] ( 5, 19.15) ref -> eax class-hnd "Inlining Arg" <System.__Canon>
+; V08 tmp2 [V08,T03] ( 5, 19.15) ref -> [ebp-0x30] class-hnd "Inlining Arg" <System.__Canon>
; V09 tmp3 [V09,T15] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V10 tmp4 [V10,T10] ( 2, 8 ) byref -> [ebp-0x2C] spill-single-def "impAppendStmt"
+; V10 tmp4 [V10,T10] ( 2, 8 ) byref -> [ebp-0x34] spill-single-def "impAppendStmt"
;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp6 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -27,24 +27,24 @@
;* V16 tmp10 [V16,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V04.key (fldOffset=0x0)" P-INDEP
-; V19 tmp13 [V19,T16] ( 2, 2.50) ref -> [ebp-0x30] "field V04.value (fldOffset=0x4)" P-INDEP
-; V20 tmp14 [V20,T04] ( 4, 16.26) ref -> edi single-def "V03.[000..004)"
+; V19 tmp13 [V19,T17] ( 2, 2.50) ref -> [ebp-0x38] "field V04.value (fldOffset=0x4)" P-INDEP
+; V20 tmp14 [V20,T04] ( 4, 16.26) ref -> ebx single-def "V03.[000..004)"
; V21 tmp15 [V21,T00] ( 6, 18.05) int -> [ebp-0x24] "V03.[004..008)"
-; V22 tmp16 [V22,T09] ( 2, 9 ) int -> ebx single-def "V03.[008..012)"
-; V23 tmp17 [V23,T07] ( 2, 5.26) ref -> eax "V03.[012..016)"
+; V22 tmp16 [V22,T09] ( 2, 9 ) int -> [ebp-0x28] spill-single-def "V03.[008..012)"
+; V23 tmp17 [V23,T07] ( 2, 5.26) ref -> edi "V03.[012..016)"
; V24 tmp18 [V24,T08] ( 2, 5.26) ref -> ecx "V03.[016..020)"
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref single-def "V07.[000..004)"
;* V26 tmp20 [V26 ] ( 0, 0 ) int -> zero-ref single-def "V07.[004..008)"
-; V27 tmp21 [V27,T17] ( 2, 2 ) int -> ebx single-def "V07.[008..012)"
+; V27 tmp21 [V27,T18] ( 2, 2 ) int -> eax single-def "V07.[008..012)"
;* V28 tmp22 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "V07.[012..016)"
;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "V07.[016..020)"
; V30 tmp24 [V30,T01] ( 3, 19.57) byref -> ecx "Spilling address for field-by-field copy"
; V31 tmp25 [V31,T02] ( 3, 19.57) ref -> ecx "arr expr"
; V32 EHSlots [V32 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
; V33 cse0 [V33,T05] ( 2, 8 ) int -> ecx "CSE - moderate"
-; V34 cse1 [V34,T13] ( 3, 5.57) int -> [ebp-0x28] "CSE - moderate"
+; V34 cse1 [V34,T13] ( 3, 5.57) int -> [ebp-0x2C] "CSE - moderate"
;
-; Lcl frame size = 36
+; Lcl frame size = 44
G_M33453_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -52,7 +52,7 @@ G_M33453_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 36
+ sub esp, 44
xor eax, eax
mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], eax
@@ -63,103 +63,143 @@ G_M33453_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=25 bbWeight=1 PerfScore 9.00
G_M33453_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
- mov edi, gword ptr [ecx+0x04]
- ; gcrRegs +[edi]
- mov ebx, dword ptr [edi+0x0C]
+ mov ebx, gword ptr [ecx+0x04]
+ ; gcrRegs +[ebx]
+ mov eax, dword ptr [ebx+0x0C]
xor edx, edx
+ mov dword ptr [ebp-0x28], eax
jmp SHORT G_M33453_IG08
- ;; size=10 bbWeight=1 PerfScore 6.25
-G_M33453_IG03: ; bbWeight=2.00, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[eax]
- cmp esi, eax
- je SHORT G_M33453_IG12
+ ;; size=13 bbWeight=1 PerfScore 7.25
+G_M33453_IG03: ; bbWeight=2.00, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[edi]
+ cmp esi, edi
+ je SHORT G_M33453_IG11
;; size=4 bbWeight=2.00 PerfScore 2.50
-G_M33453_IG04: ; bbWeight=1.79, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M33453_IG04: ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
+ mov gword ptr [ebp-0x30], edi
+ ; GC ptr vars +{V08}
+ mov gword ptr [ebp-0x38], ecx
+ ; GC ptr vars +{V19}
+ mov eax, dword ptr [ebp-0x28]
mov edx, dword ptr [ebp-0x24]
je SHORT G_M33453_IG08
- ;; size=7 bbWeight=1.79 PerfScore 4.03
-G_M33453_IG05: ; bbWeight=1.79, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
- test eax, eax
- mov gword ptr [ebp-0x30], ecx
- ; GC ptr vars +{V19}
+ ;; size=16 bbWeight=1.79 PerfScore 9.39
+G_M33453_IG05: ; bbWeight=1.79, gcVars=00020008 {V08 V19}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx edi]
+ mov ecx, gword ptr [ebp-0x30]
+ ; gcrRegs +[ecx]
+ test ecx, ecx
je SHORT G_M33453_IG08
;; size=7 bbWeight=1.79 PerfScore 4.02
-G_M33453_IG06: ; bbWeight=1.79, gcVars=00010000 {V19}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- mov ecx, dword ptr [esi+0x04]
- cmp ecx, dword ptr [eax+0x04]
- mov dword ptr [ebp-0x28], ecx
+G_M33453_IG06: ; bbWeight=1.79, gcVars=00020000 {V19}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V08}
+ mov edi, dword ptr [esi+0x04]
+ cmp edi, dword ptr [ecx+0x04]
+ mov dword ptr [ebp-0x2C], edi
jne SHORT G_M33453_IG08
;; size=11 bbWeight=1.79 PerfScore 12.51
-G_M33453_IG07: ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M33453_IG07: ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x24], edx
- lea ecx, bword ptr [esi+0x08]
- ; byrRegs +[ecx]
- mov bword ptr [ebp-0x2C], ecx
+ lea edi, bword ptr [esi+0x08]
+ ; byrRegs +[edi]
+ mov bword ptr [ebp-0x34], edi
; GC ptr vars +{V10}
- mov ecx, dword ptr [ebp-0x28]
- ; byrRegs -[ecx]
- add ecx, ecx
- push ecx
- lea edx, bword ptr [eax+0x08]
+ mov edi, dword ptr [ebp-0x2C]
+ ; byrRegs -[edi]
+ add edi, edi
+ push edi
+ lea edx, bword ptr [ecx+0x08]
; byrRegs +[edx]
- mov ecx, bword ptr [ebp-0x2C]
+ mov ecx, bword ptr [ebp-0x34]
+ ; gcrRegs -[ecx]
; byrRegs +[ecx]
; GC ptr vars -{V10}
call [<unknown method>]
- ; gcrRegs -[eax]
; byrRegs -[ecx edx]
test eax, eax
- mov ecx, gword ptr [ebp-0x30]
+ mov eax, dword ptr [ebp-0x28]
+ mov ecx, gword ptr [ebp-0x38]
; gcrRegs +[ecx]
mov edx, dword ptr [ebp-0x24]
- jne SHORT G_M33453_IG12
- ;; size=37 bbWeight=2 PerfScore 25.00
-G_M33453_IG08: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jne SHORT G_M33453_IG10
+ ;; size=40 bbWeight=2 PerfScore 27.00
+G_M33453_IG08: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ecx]
; GC ptr vars -{V19}
- cmp ebx, dword ptr [edi+0x0C]
- je SHORT G_M33453_IG10
+ cmp eax, dword ptr [ebx+0x0C]
+ je SHORT G_M33453_IG12
;; size=5 bbWeight=8 PerfScore 32.00
G_M33453_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi edi]
+ ; gcrRegs -[ebx esi]
call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M33453_IG10: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi edi]
- mov ecx, dword ptr [edi+0x08]
+G_M33453_IG10: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[ecx]
+ mov edi, bword ptr [ebp+0x08]
+ ; byrRegs +[edi]
+ jmp SHORT G_M33453_IG16
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M33453_IG11: ; bbWeight=1.00, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+ ; byrRegs -[edi]
+ mov edi, bword ptr [ebp+0x08]
+ ; byrRegs +[edi]
+ jmp SHORT G_M33453_IG16
+ ;; size=5 bbWeight=1.00 PerfScore 3.00
+G_M33453_IG12: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx] +[ebx esi]
+ ; byrRegs -[edi]
+ mov ecx, dword ptr [ebx+0x08]
cmp edx, ecx
jae SHORT G_M33453_IG14
;; size=7 bbWeight=4 PerfScore 13.00
-G_M33453_IG11: ; bbWeight=3.26, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [edi+0x04]
+G_M33453_IG13: ; bbWeight=3.26, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, gword ptr [ebx+0x04]
; gcrRegs +[ecx]
cmp edx, dword ptr [ecx+0x04]
- jae SHORT G_M33453_IG16
+ jae SHORT G_M33453_IG18
lea ecx, bword ptr [ecx+8*edx+0x08]
; gcrRegs -[ecx]
; byrRegs +[ecx]
- mov eax, gword ptr [ecx]
- ; gcrRegs +[eax]
+ mov edi, gword ptr [ecx]
+ ; gcrRegs +[edi]
mov ecx, gword ptr [ecx+0x04]
; gcrRegs +[ecx]
; byrRegs -[ecx]
inc edx
mov dword ptr [ebp-0x24], edx
- jmp SHORT G_M33453_IG03
- ;; size=23 bbWeight=3.26 PerfScore 46.49
-G_M33453_IG12: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi edi]
- mov edx, bword ptr [ebp+0x08]
+ jmp G_M33453_IG03
+ ;; size=26 bbWeight=3.26 PerfScore 46.49
+G_M33453_IG14: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx ebx esi edi]
+ xor eax, eax
+ ; gcrRegs +[eax]
+ mov edi, bword ptr [ebp+0x08]
+ ; byrRegs +[edi]
+ mov gword ptr [edi], eax
+ ;; size=7 bbWeight=4 PerfScore 9.00
+G_M33453_IG15: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[eax]
+ ; byrRegs -[edi]
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 4
+ ;; size=10 bbWeight=4 PerfScore 18.00
+G_M33453_IG16: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, gcvars, byref
+ ; gcrRegs +[ecx]
+ ; byrRegs +[edi]
+ mov edx, edi
; byrRegs +[edx]
call CORINFO_HELP_CHECKED_ASSIGN_REF_ECX
; gcrRegs -[ecx]
- ; byrRegs -[edx]
...
@@ -10,20 +10,19 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> esi class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T06] ( 2, 1.50) ref -> ebx class-hnd single-def <System.Type>
-; V03 arg3 [V03,T08] ( 2, 1 ) int -> [ebp+0x10] single-def
-; V04 arg4 [V04,T09] ( 2, 1 ) int -> [ebp+0x0C] single-def
-; V05 arg5 [V05,T03] ( 4, 1.75) ref -> edi class-hnd single-def <System.Object>
+; V02 arg2 [V02,T05] ( 2, 1.50) ref -> ebx class-hnd single-def <System.Type>
+; V03 arg3 [V03,T07] ( 2, 1 ) int -> [ebp+0x10] single-def
+; V04 arg4 [V04,T08] ( 2, 1 ) int -> [ebp+0x0C] single-def
+; V05 arg5 [V05,T03] ( 3, 1.50) ref -> edi class-hnd single-def <System.Object>
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V07 tmp0 [V07,T02] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V08 tmp1 [V08,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V09 tmp2 [V09,T11] ( 0, 0 ) int -> zero-ref
+;* V08 tmp1 [V08,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp2 [V09,T10] ( 0, 0 ) int -> zero-ref
; V10 tmp3 [V10,T01] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-; V11 tmp4 [V11,T10] ( 2, 1 ) ubyte -> eax single-def "Inline stloc first use temp"
-; V12 tmp5 [V12,T04] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <<unknown class>>
-; V13 cse0 [V13,T05] ( 3, 1.50) int -> edx "CSE - moderate"
+; V11 tmp4 [V11,T09] ( 2, 1 ) ubyte -> ecx single-def "Inline stloc first use temp"
+; V12 tmp5 [V12,T04] ( 3, 1.50) ref -> [ebp-0x10] class-hnd spill-single-def "Inline return value spill temp" <<unknown class>>
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M49136_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -31,120 +30,100 @@ G_M49136_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
+ push eax
mov esi, edx
; gcrRegs +[esi]
mov ebx, gword ptr [ebp+0x14]
; gcrRegs +[ebx]
mov edi, gword ptr [ebp+0x08]
; gcrRegs +[edi]
- ;; size=14 bbWeight=1 PerfScore 6.50
+ ;; size=15 bbWeight=1 PerfScore 7.50
G_M49136_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp ebx, 0xD1FFAB1E
- jne SHORT G_M49136_IG10
+ jne SHORT G_M49136_IG04
;; size=8 bbWeight=1 PerfScore 1.25
G_M49136_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp+0x10]
- cmp eax, 1
- jne SHORT G_M49136_IG09
- mov ecx, dword ptr [ebp+0x0C]
- cmp ecx, 1
- jne SHORT G_M49136_IG08
+ cmp dword ptr [ebp+0x10], 1
+ jne SHORT G_M49136_IG04
+ cmp dword ptr [ebp+0x0C], 1
+ jne SHORT G_M49136_IG04
test edi, edi
- je SHORT G_M49136_IG07
- mov edx, dword ptr [edi]
- cmp edx, 0xD1FFAB1E
- mov dword ptr [ebp+0x10], eax
- mov dword ptr [ebp+0x0C], ecx
- jne SHORT G_M49136_IG10
- cmp edx, 0xD1FFAB1E
- je SHORT G_M49136_IG05
- ;; size=44 bbWeight=0.50 PerfScore 6.12
-G_M49136_IG04: ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx esi]
- mov edx, edi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx edi]
- ;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M49136_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ je SHORT G_M49136_IG04
+ cmp dword ptr [edi], 0xD1FFAB1E
+ je SHORT G_M49136_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 5.62
+G_M49136_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, byte ptr [esi+0x08]
+ mov byte ptr [esi+0x08], 0
+ test ecx, ecx
+ je SHORT G_M49136_IG08
+ xor eax, eax
+ ; gcrRegs +[eax]
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 16
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax ebx esi edi]
mov ecx, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
xor ecx, ecx
mov dword ptr [eax+0x04], ecx
;; size=15 bbWeight=0.50 PerfScore 1.25
-G_M49136_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M49136_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 16
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M49136_IG07: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[ebx esi edi]
- mov dword ptr [ebp+0x10], eax
- mov dword ptr [ebp+0x0C], ecx
- jmp SHORT G_M49136_IG10
- ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M49136_IG08: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp+0x10], eax
- mov dword ptr [ebp+0x0C], ecx
- jmp SHORT G_M49136_IG10
- ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M49136_IG09: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov dword ptr [ebp+0x10], eax
- ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M49136_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- movzx eax, byte ptr [esi+0x08]
- mov byte ptr [esi+0x08], 0
- test eax, eax
- je SHORT G_M49136_IG12
- xor eax, eax
- ; gcrRegs +[eax]
- ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M49136_IG11: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 16
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M49136_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
mov ecx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [esi], ecx
- je SHORT G_M49136_IG14
+ je SHORT G_M49136_IG10
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M49136_IG13: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M49136_IG09: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov edx, esi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[edx] +[eax]
;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M49136_IG14: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M49136_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
- mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
+ mov ecx, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x10], ecx
+ ; GC ptr vars +{V12}
push ebx
push dword ptr [ebp+0x10]
push dword ptr [ebp+0x0C]
push edi
mov edx, esi
; gcrRegs +[edx]
- mov ecx, gword ptr [eax+0x04]
- ; gcrRegs +[ecx]
+ mov ecx, gword ptr [ecx+0x04]
+ mov eax, gword ptr [ebp-0x10]
+ ; gcrRegs +[eax]
+ ; GC ptr vars -{V12}
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx edx ebx esi edi]
- ;; size=21 bbWeight=0.50 PerfScore 5.62
-G_M49136_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=28 bbWeight=0.50 PerfScore 6.62
+G_M49136_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 16
- ;; size=7 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 184, prolog size 6, PerfScore 34.06, instruction count 72, allocated bytes for code 184 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
+; Total bytes of code 144, prolog size 7, PerfScore 33.69, instruction count 61, allocated bytes for code 144 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
; ============================================================
@@ -10,13 +10,12 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> esi class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 5, 2.75) ref -> edi class-hnd single-def <System.Object>
-;* V03 tmp0 [V03,T07] ( 0, 0 ) int -> zero-ref
+; V02 arg2 [V02,T01] ( 4, 2.50) ref -> edi class-hnd single-def <System.Object>
+;* V03 tmp0 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 tmp1 [V04,T02] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp3 [V06,T06] ( 2, 1 ) ubyte -> eax single-def "Inline stloc first use temp"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V06 tmp3 [V06,T05] ( 2, 1 ) ubyte -> eax single-def "Inline stloc first use temp"
; V07 tmp4 [V07,T03] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <<unknown class>>
-; V08 cse0 [V08,T04] ( 3, 1.50) int -> edx "CSE - moderate"
;
; Lcl frame size = 0
@@ -32,58 +31,48 @@ G_M44930_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=10 bbWeight=1 PerfScore 4.50
G_M44930_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- je SHORT G_M44930_IG07
+ je SHORT G_M44930_IG04
;; size=4 bbWeight=1 PerfScore 1.25
G_M44930_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [edi]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M44930_IG07
- cmp edx, 0xD1FFAB1E
- je SHORT G_M44930_IG05
- ;; size=18 bbWeight=0.50 PerfScore 2.25
-G_M44930_IG04: ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- mov edx, edi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M44930_IG05: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- mov eax, dword ptr [edi+0x04]
- ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M44930_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
- pop ebp
- ret 4
- ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44930_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi]
+ cmp dword ptr [edi], 0xD1FFAB1E
+ je SHORT G_M44930_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M44930_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
movzx eax, byte ptr [esi+0x08]
mov byte ptr [esi+0x08], 0
test eax, eax
- je SHORT G_M44930_IG09
+ je SHORT G_M44930_IG08
xor eax, eax
;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M44930_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret 4
;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44930_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M44930_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[esi]
+ mov eax, dword ptr [edi+0x04]
+ ;; size=3 bbWeight=0.50 PerfScore 1.00
+G_M44930_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop esi
+ pop edi
+ pop ebp
+ ret 4
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
+G_M44930_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[esi]
mov ecx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [esi], ecx
- je SHORT G_M44930_IG11
+ je SHORT G_M44930_IG10
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M44930_IG10: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44930_IG09: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, esi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[edx] +[eax]
;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M44930_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44930_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
@@ -95,13 +84,13 @@ G_M44930_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [eax+0x0C]<unknown method>
; gcrRegs -[eax ecx edx esi edi]
;; size=14 bbWeight=0.50 PerfScore 4.12
-G_M44930_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret 4
;; size=6 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 110, prolog size 5, PerfScore 23.94, instruction count 44, allocated bytes for code 110 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
+; Total bytes of code 87, prolog size 5, PerfScore 22.81, instruction count 38, allocated bytes for code 87 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
; ============================================================
@@ -10,13 +10,12 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> esi class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 5, 2.75) ref -> edi class-hnd single-def <System.Object>
-;* V03 tmp0 [V03,T07] ( 0, 0 ) int -> zero-ref
+; V02 arg2 [V02,T01] ( 4, 2.50) ref -> edi class-hnd single-def <System.Object>
+;* V03 tmp0 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 tmp1 [V04,T02] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp3 [V06,T06] ( 2, 1 ) ubyte -> eax single-def "Inline stloc first use temp"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V06 tmp3 [V06,T05] ( 2, 1 ) ubyte -> eax single-def "Inline stloc first use temp"
; V07 tmp4 [V07,T03] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <<unknown class>>
-; V08 cse0 [V08,T04] ( 3, 1.50) int -> edx "CSE - moderate"
;
; Lcl frame size = 0
@@ -32,58 +31,48 @@ G_M44174_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=10 bbWeight=1 PerfScore 4.50
G_M44174_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- je SHORT G_M44174_IG07
+ je SHORT G_M44174_IG04
;; size=4 bbWeight=1 PerfScore 1.25
G_M44174_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [edi]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M44174_IG07
- cmp edx, 0xD1FFAB1E
- je SHORT G_M44174_IG05
- ;; size=18 bbWeight=0.50 PerfScore 2.25
-G_M44174_IG04: ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- mov edx, edi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[edx]
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M44174_IG05: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- movzx eax, byte ptr [edi+0x04]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M44174_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
- pop ebp
- ret 4
- ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44174_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi]
+ cmp dword ptr [edi], 0xD1FFAB1E
+ je SHORT G_M44174_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M44174_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
movzx eax, byte ptr [esi+0x08]
mov byte ptr [esi+0x08], 0
test eax, eax
- je SHORT G_M44174_IG09
+ je SHORT G_M44174_IG08
xor eax, eax
;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M44174_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M44174_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret 4
;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44174_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M44174_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[esi]
+ movzx eax, byte ptr [edi+0x04]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M44174_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop esi
+ pop edi
+ pop ebp
+ ret 4
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
+G_M44174_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[esi]
mov ecx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [esi], ecx
- je SHORT G_M44174_IG11
+ je SHORT G_M44174_IG10
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M44174_IG10: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44174_IG09: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, esi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[edx] +[eax]
;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M44174_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44174_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
@@ -95,13 +84,13 @@ G_M44174_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [eax+0x0C]<unknown method>
; gcrRegs -[eax ecx edx esi edi]
;; size=14 bbWeight=0.50 PerfScore 4.12
-G_M44174_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M44174_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret 4
;; size=6 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 111, prolog size 5, PerfScore 23.94, instruction count 44, allocated bytes for code 111 (MethodHash=493d5371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
+; Total bytes of code 88, prolog size 5, PerfScore 22.81, instruction count 38, allocated bytes for code 88 (MethodHash=493d5371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
; ============================================================
@@ -5,14 +5,14 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 725
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 725
; 3 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 8, 7 ) ref -> esi this class-hnd single-def <Xunit.Sdk.MessageBus>
+; V00 this [V00,T01] ( 9, 7 ) ref -> esi this class-hnd single-def <Xunit.Sdk.MessageBus>
; V01 arg1 [V01,T03] ( 5, 3 ) ref -> [ebp-0x14] class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
; V02 tmp0 [V02,T16] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V03 tmp1 [V03,T05] ( 3, 4 ) ref -> [ebp-0x18] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+; V03 tmp1 [V03,T07] ( 3, 4 ) ref -> [ebp-0x18] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
;* V04 tmp2 [V04,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V05 tmp3 [V05,T00] ( 5, 10 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
; V06 tmp4 [V06,T09] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
@@ -20,15 +20,15 @@
; V08 tmp6 [V08,T10] ( 3, 3 ) int -> edi "Inline stloc first use temp"
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T12] ( 3, 2 ) int -> edx "Inline stloc first use temp"
-; V11 tmp9 [V11,T06] ( 3, 4 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp9 [V11,T04] ( 5, 4 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V12 tmp10 [V12,T13] ( 2, 2 ) ubyte -> eax single-def "Inline stloc first use temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V14 tmp12 [V14,T07] ( 2, 4 ) ref -> ecx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V15 tmp13 [V15,T08] ( 4, 3 ) ref -> ecx
+; V14 tmp12 [V14,T05] ( 4, 4 ) ref -> ecx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
+; V15 tmp13 [V15,T08] ( 6, 3 ) ref -> ecx
; V16 tmp14 [V16,T15] ( 5, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
; V18 tmp16 [V18,T17] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V19 cse0 [V19,T04] ( 4, 4 ) byref -> registers "CSE - moderate"
+; V19 cse0 [V19,T06] ( 4, 4 ) byref -> registers "CSE - moderate"
; V20 cse1 [V20,T11] ( 3, 3 ) int -> ecx "CSE - moderate"
;
; Lcl frame size = 16
@@ -45,13 +45,90 @@ G_M26012_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, ecx
; gcrRegs +[esi]
;; size=14 bbWeight=1 PerfScore 5.75
-G_M26012_IG02: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG02: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
cmp byte ptr [esi+0x15], 0
- je SHORT G_M26012_IG04
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG03: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jne G_M26012_IG08
+ cmp byte ptr [esi+0x16], 0
+ jne G_M26012_IG09
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M26012_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ecx, gword ptr [esi+0x08]
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x18], ecx
+ ; GC ptr vars +{V03}
+ mov ebx, gword ptr [ecx+0x08]
+ ; gcrRegs +[ebx]
+ mov edx, gword ptr [ebx+0x04]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x1C], edx
+ ; GC ptr vars +{V06}
+ ;; size=15 bbWeight=1 PerfScore 8.00
+G_M26012_IG04: ; bbWeight=1, gcVars=00000288 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ mov eax, dword ptr [ebx+0x94]
+ mov dword ptr [ebp-0x10], eax
+ mov edi, eax
+ and edi, dword ptr [ebx+0x0C]
+ cmp edi, dword ptr [edx+0x04]
+ jae SHORT G_M26012_IG07
+ lea edi, bword ptr [edx+8*edi+0x08]
+ ; byrRegs +[edi]
+ mov edx, dword ptr [edi+0x04]
+ ; gcrRegs -[edx]
+ sub edx, eax
+ jne G_M26012_IG11
+ lea edx, bword ptr [ebx+0x94]
+ ; byrRegs +[edx]
+ lea ecx, [eax+0x01]
+ lock
+ cmpxchg dword ptr [edx], ecx
+ cmp eax, dword ptr [ebp-0x10]
+ mov edx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edx]
+ ; byrRegs -[edx]
+ jne SHORT G_M26012_IG04
+ mov eax, edi
+ ; byrRegs +[eax]
+ mov edi, gword ptr [ebp-0x14]
+ ; gcrRegs +[edi]
+ ; byrRegs -[edi]
+ mov edx, eax
+ ; gcrRegs -[edx]
+ ; byrRegs +[edx]
+ ; GC ptr vars -{V01 V03 V06}
+ call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
+ ; gcrRegs -[ebx edi]
+ ; byrRegs -[edx]
+ mov dword ptr [eax+0x04], ecx
+ mov ebx, gword ptr [esi+0x10]
+ ; gcrRegs +[ebx]
+ mov ecx, gword ptr [ebx+0x04]
+ ; gcrRegs +[ecx]
+ test ecx, ecx
+ je G_M26012_IG12
+ ;; size=84 bbWeight=1 PerfScore 46.25
+G_M26012_IG05: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx]
+ ; byrRegs -[eax]
+ call [<unknown method>]
+ ; gcrRegs -[ecx]
+ test eax, eax
+ je G_M26012_IG14
+ movzx eax, byte ptr [esi+0x14]
+ ;; size=18 bbWeight=1 PerfScore 6.25
+G_M26012_IG06: ; bbWeight=1, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=8 bbWeight=1 PerfScore 3.50
+G_M26012_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi]
- ; GC ptr vars -{V01}
+ call CORINFO_HELP_RNGCHKFAIL
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M26012_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -71,13 +148,9 @@ G_M26012_IG03: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
call CORINFO_HELP_THROW
; gcrRegs -[ecx edi]
;; size=44 bbWeight=0 PerfScore 0.00
-G_M26012_IG04: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG09: ; bbWeight=0, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi]
; GC ptr vars +{V01 V03}
- cmp byte ptr [esi+0x16], 0
- je SHORT G_M26012_IG06
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG05: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, gword ptr [ebp-0x14]
; gcrRegs +[edi]
mov edx, edi
@@ -91,96 +164,38 @@ G_M26012_IG05: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov byte ptr [esi+0x14], 0
mov gword ptr [ebp-0x14], edi
; GC ptr vars +{V01}
- ;; size=26 bbWeight=0 PerfScore 0.00
-G_M26012_IG06: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
- mov ecx, gword ptr [esi+0x08]
- ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x18], ecx
- ; GC ptr vars +{V03}
- mov ebx, gword ptr [ecx+0x08]
- ; gcrRegs +[ebx]
- mov edx, gword ptr [ebx+0x04]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x1C], edx
- ; GC ptr vars +{V06}
- ;; size=15 bbWeight=1 PerfScore 8.00
-G_M26012_IG07: ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- mov eax, dword ptr [ebx+0x94]
- mov dword ptr [ebp-0x10], eax
- mov edi, eax
- and edi, dword ptr [ebx+0x0C]
- cmp edi, dword ptr [edx+0x04]
- jae G_M26012_IG16
- lea edi, bword ptr [edx+8*edi+0x08]
- ; byrRegs +[edi]
- mov edx, dword ptr [edi+0x04]
- ; gcrRegs -[edx]
- sub edx, eax
- je SHORT G_M26012_IG11
- ;; size=34 bbWeight=1 PerfScore 14.50
-G_M26012_IG08: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edi]
+ jmp G_M26012_IG03
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M26012_IG10: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars -{V01}
+ mov gword ptr [ebp-0x14], edi
+ ; GC ptr vars +{V01}
+ jmp G_M26012_IG03
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M26012_IG11: ; bbWeight=0, gcVars=00000288 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edi] +[ebx]
+ ; GC ptr vars +{V03 V06 V07}
mov edi, gword ptr [ebp-0x14]
; gcrRegs +[edi]
test edx, edx
mov edx, gword ptr [ebp-0x1C]
; gcrRegs +[edx]
- jge SHORT G_M26012_IG09
- jmp SHORT G_M26012_IG17
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M26012_IG09: ; bbWeight=0, gcVars=00000220 {V03 V06}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V01 V03}
- mov gword ptr [ebp-0x14], edi
- ; GC ptr vars +{V01}
- jmp SHORT G_M26012_IG07
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edx ebx]
- ; GC ptr vars -{V01 V06}
- mov gword ptr [ebp-0x14], edi
- ; GC ptr vars +{V01}
- jmp SHORT G_M26012_IG06
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG11: ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs -[edi] +[ebx]
- ; byrRegs +[edi]
- ; GC ptr vars +{V03 V05 V06}
- lea edx, bword ptr [ebx+0x94]
- ; byrRegs +[edx]
- lea ecx, [eax+0x01]
- lock
- cmpxchg dword ptr [edx], ecx
- cmp eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x1C]
- ; gcrRegs +[edx]
- ; byrRegs -[edx]
- jne SHORT G_M26012_IG07
- mov eax, edi
- ; byrRegs +[eax]
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- ; byrRegs -[edi]
- mov edx, eax
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
- ; GC ptr vars -{V01 V03 V05 V06}
- call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
- ; gcrRegs -[ebx edi]
- ; byrRegs -[edx]
- mov dword ptr [eax+0x04], ecx
- ;; size=36 bbWeight=1 PerfScore 26.50
-G_M26012_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[eax]
+ jge SHORT G_M26012_IG13
+ mov ecx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ecx]
...
@@ -5,14 +5,14 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 10
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 10
; 3 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 8, 7 ) ref -> esi this class-hnd single-def <Xunit.Sdk.MessageBus>
+; V00 this [V00,T01] ( 9, 7 ) ref -> esi this class-hnd single-def <Xunit.Sdk.MessageBus>
; V01 arg1 [V01,T03] ( 5, 3 ) ref -> [ebp-0x14] class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
; V02 tmp0 [V02,T16] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V03 tmp1 [V03,T05] ( 3, 4 ) ref -> [ebp-0x18] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+; V03 tmp1 [V03,T07] ( 3, 4 ) ref -> [ebp-0x18] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
;* V04 tmp2 [V04,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V05 tmp3 [V05,T00] ( 5, 10 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
; V06 tmp4 [V06,T09] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
@@ -20,15 +20,15 @@
; V08 tmp6 [V08,T10] ( 3, 3 ) int -> edi "Inline stloc first use temp"
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T12] ( 3, 2 ) int -> edx "Inline stloc first use temp"
-; V11 tmp9 [V11,T06] ( 3, 4 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp9 [V11,T04] ( 5, 4 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V12 tmp10 [V12,T13] ( 2, 2 ) ubyte -> eax single-def "Inline stloc first use temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V14 tmp12 [V14,T07] ( 2, 4 ) ref -> ecx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V15 tmp13 [V15,T08] ( 4, 3 ) ref -> ecx
+; V14 tmp12 [V14,T05] ( 4, 4 ) ref -> ecx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
+; V15 tmp13 [V15,T08] ( 6, 3 ) ref -> ecx
; V16 tmp14 [V16,T15] ( 5, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
; V18 tmp16 [V18,T17] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V19 cse0 [V19,T04] ( 4, 4 ) byref -> registers "CSE - moderate"
+; V19 cse0 [V19,T06] ( 4, 4 ) byref -> registers "CSE - moderate"
; V20 cse1 [V20,T11] ( 3, 3 ) int -> ecx "CSE - moderate"
;
; Lcl frame size = 16
@@ -45,13 +45,90 @@ G_M26012_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, ecx
; gcrRegs +[esi]
;; size=14 bbWeight=1 PerfScore 5.75
-G_M26012_IG02: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG02: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
cmp byte ptr [esi+0x15], 0
- je SHORT G_M26012_IG04
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG03: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jne G_M26012_IG08
+ cmp byte ptr [esi+0x16], 0
+ jne G_M26012_IG09
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M26012_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ecx, gword ptr [esi+0x08]
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x18], ecx
+ ; GC ptr vars +{V03}
+ mov ebx, gword ptr [ecx+0x08]
+ ; gcrRegs +[ebx]
+ mov edx, gword ptr [ebx+0x04]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x1C], edx
+ ; GC ptr vars +{V06}
+ ;; size=15 bbWeight=1 PerfScore 8.00
+G_M26012_IG04: ; bbWeight=1, gcVars=00000288 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ mov eax, dword ptr [ebx+0x94]
+ mov dword ptr [ebp-0x10], eax
+ mov edi, eax
+ and edi, dword ptr [ebx+0x0C]
+ cmp edi, dword ptr [edx+0x04]
+ jae SHORT G_M26012_IG07
+ lea edi, bword ptr [edx+8*edi+0x08]
+ ; byrRegs +[edi]
+ mov edx, dword ptr [edi+0x04]
+ ; gcrRegs -[edx]
+ sub edx, eax
+ jne G_M26012_IG11
+ lea edx, bword ptr [ebx+0x94]
+ ; byrRegs +[edx]
+ lea ecx, [eax+0x01]
+ lock
+ cmpxchg dword ptr [edx], ecx
+ cmp eax, dword ptr [ebp-0x10]
+ mov edx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edx]
+ ; byrRegs -[edx]
+ jne SHORT G_M26012_IG04
+ mov eax, edi
+ ; byrRegs +[eax]
+ mov edi, gword ptr [ebp-0x14]
+ ; gcrRegs +[edi]
+ ; byrRegs -[edi]
+ mov edx, eax
+ ; gcrRegs -[edx]
+ ; byrRegs +[edx]
+ ; GC ptr vars -{V01 V03 V06}
+ call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
+ ; gcrRegs -[ebx edi]
+ ; byrRegs -[edx]
+ mov dword ptr [eax+0x04], ecx
+ mov ebx, gword ptr [esi+0x10]
+ ; gcrRegs +[ebx]
+ mov ecx, gword ptr [ebx+0x04]
+ ; gcrRegs +[ecx]
+ test ecx, ecx
+ je G_M26012_IG12
+ ;; size=84 bbWeight=1 PerfScore 46.25
+G_M26012_IG05: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx]
+ ; byrRegs -[eax]
+ call [<unknown method>]
+ ; gcrRegs -[ecx]
+ test eax, eax
+ je G_M26012_IG14
+ movzx eax, byte ptr [esi+0x14]
+ ;; size=18 bbWeight=1 PerfScore 6.25
+G_M26012_IG06: ; bbWeight=1, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=8 bbWeight=1 PerfScore 3.50
+G_M26012_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi]
- ; GC ptr vars -{V01}
+ call CORINFO_HELP_RNGCHKFAIL
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M26012_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -71,13 +148,9 @@ G_M26012_IG03: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
call CORINFO_HELP_THROW
; gcrRegs -[ecx edi]
;; size=44 bbWeight=0 PerfScore 0.00
-G_M26012_IG04: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG09: ; bbWeight=0, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi]
; GC ptr vars +{V01 V03}
- cmp byte ptr [esi+0x16], 0
- je SHORT G_M26012_IG06
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG05: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, gword ptr [ebp-0x14]
; gcrRegs +[edi]
mov edx, edi
@@ -91,96 +164,38 @@ G_M26012_IG05: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov byte ptr [esi+0x14], 0
mov gword ptr [ebp-0x14], edi
; GC ptr vars +{V01}
- ;; size=26 bbWeight=0 PerfScore 0.00
-G_M26012_IG06: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
- mov ecx, gword ptr [esi+0x08]
- ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x18], ecx
- ; GC ptr vars +{V03}
- mov ebx, gword ptr [ecx+0x08]
- ; gcrRegs +[ebx]
- mov edx, gword ptr [ebx+0x04]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x1C], edx
- ; GC ptr vars +{V06}
- ;; size=15 bbWeight=1 PerfScore 8.00
-G_M26012_IG07: ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- mov eax, dword ptr [ebx+0x94]
- mov dword ptr [ebp-0x10], eax
- mov edi, eax
- and edi, dword ptr [ebx+0x0C]
- cmp edi, dword ptr [edx+0x04]
- jae G_M26012_IG16
- lea edi, bword ptr [edx+8*edi+0x08]
- ; byrRegs +[edi]
- mov edx, dword ptr [edi+0x04]
- ; gcrRegs -[edx]
- sub edx, eax
- je SHORT G_M26012_IG11
- ;; size=34 bbWeight=1 PerfScore 14.50
-G_M26012_IG08: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edi]
+ jmp G_M26012_IG03
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M26012_IG10: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars -{V01}
+ mov gword ptr [ebp-0x14], edi
+ ; GC ptr vars +{V01}
+ jmp G_M26012_IG03
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M26012_IG11: ; bbWeight=0, gcVars=00000288 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edi] +[ebx]
+ ; GC ptr vars +{V03 V06 V07}
mov edi, gword ptr [ebp-0x14]
; gcrRegs +[edi]
test edx, edx
mov edx, gword ptr [ebp-0x1C]
; gcrRegs +[edx]
- jge SHORT G_M26012_IG09
- jmp SHORT G_M26012_IG17
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M26012_IG09: ; bbWeight=0, gcVars=00000220 {V03 V06}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V01 V03}
- mov gword ptr [ebp-0x14], edi
- ; GC ptr vars +{V01}
- jmp SHORT G_M26012_IG07
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edx ebx]
- ; GC ptr vars -{V01 V06}
- mov gword ptr [ebp-0x14], edi
- ; GC ptr vars +{V01}
- jmp SHORT G_M26012_IG06
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG11: ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs -[edi] +[ebx]
- ; byrRegs +[edi]
- ; GC ptr vars +{V03 V05 V06}
- lea edx, bword ptr [ebx+0x94]
- ; byrRegs +[edx]
- lea ecx, [eax+0x01]
- lock
- cmpxchg dword ptr [edx], ecx
- cmp eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x1C]
- ; gcrRegs +[edx]
- ; byrRegs -[edx]
- jne SHORT G_M26012_IG07
- mov eax, edi
- ; byrRegs +[eax]
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- ; byrRegs -[edi]
- mov edx, eax
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
- ; GC ptr vars -{V01 V03 V05 V06}
- call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
- ; gcrRegs -[ebx edi]
- ; byrRegs -[edx]
- mov dword ptr [eax+0x04], ecx
- ;; size=36 bbWeight=1 PerfScore 26.50
-G_M26012_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[eax]
+ jge SHORT G_M26012_IG13
+ mov ecx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ecx]
...
@@ -5,14 +5,14 @@
; optimized using Dynamic PGO
; ebp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 151
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 151
; 3 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 8, 7 ) ref -> esi this class-hnd single-def <Xunit.Sdk.MessageBus>
+; V00 this [V00,T01] ( 9, 7 ) ref -> esi this class-hnd single-def <Xunit.Sdk.MessageBus>
; V01 arg1 [V01,T03] ( 5, 3 ) ref -> [ebp-0x14] class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
; V02 tmp0 [V02,T16] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V03 tmp1 [V03,T05] ( 3, 4 ) ref -> [ebp-0x18] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+; V03 tmp1 [V03,T07] ( 3, 4 ) ref -> [ebp-0x18] class-hnd spill-single-def "Inlining Arg" <<unknown class>>
;* V04 tmp2 [V04,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V05 tmp3 [V05,T00] ( 5, 10 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
; V06 tmp4 [V06,T09] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
@@ -20,15 +20,15 @@
; V08 tmp6 [V08,T10] ( 3, 3 ) int -> edi "Inline stloc first use temp"
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V10 tmp8 [V10,T12] ( 3, 2 ) int -> edx "Inline stloc first use temp"
-; V11 tmp9 [V11,T06] ( 3, 4 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V11 tmp9 [V11,T04] ( 5, 4 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V12 tmp10 [V12,T13] ( 2, 2 ) ubyte -> eax single-def "Inline stloc first use temp"
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V14 tmp12 [V14,T07] ( 2, 4 ) ref -> ecx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V15 tmp13 [V15,T08] ( 4, 3 ) ref -> ecx
+; V14 tmp12 [V14,T05] ( 4, 4 ) ref -> ecx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
+; V15 tmp13 [V15,T08] ( 6, 3 ) ref -> ecx
; V16 tmp14 [V16,T15] ( 5, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
; V18 tmp16 [V18,T17] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V19 cse0 [V19,T04] ( 4, 4 ) byref -> registers "CSE - moderate"
+; V19 cse0 [V19,T06] ( 4, 4 ) byref -> registers "CSE - moderate"
; V20 cse1 [V20,T11] ( 3, 3 ) int -> ecx "CSE - moderate"
;
; Lcl frame size = 16
@@ -45,13 +45,90 @@ G_M26012_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, ecx
; gcrRegs +[esi]
;; size=14 bbWeight=1 PerfScore 5.75
-G_M26012_IG02: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG02: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
cmp byte ptr [esi+0x15], 0
- je SHORT G_M26012_IG04
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG03: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ jne G_M26012_IG08
+ cmp byte ptr [esi+0x16], 0
+ jne G_M26012_IG09
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M26012_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ecx, gword ptr [esi+0x08]
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x18], ecx
+ ; GC ptr vars +{V03}
+ mov ebx, gword ptr [ecx+0x08]
+ ; gcrRegs +[ebx]
+ mov edx, gword ptr [ebx+0x04]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x1C], edx
+ ; GC ptr vars +{V06}
+ ;; size=15 bbWeight=1 PerfScore 8.00
+G_M26012_IG04: ; bbWeight=1, gcVars=00000288 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ mov eax, dword ptr [ebx+0x94]
+ mov dword ptr [ebp-0x10], eax
+ mov edi, eax
+ and edi, dword ptr [ebx+0x0C]
+ cmp edi, dword ptr [edx+0x04]
+ jae SHORT G_M26012_IG07
+ lea edi, bword ptr [edx+8*edi+0x08]
+ ; byrRegs +[edi]
+ mov edx, dword ptr [edi+0x04]
+ ; gcrRegs -[edx]
+ sub edx, eax
+ jne G_M26012_IG11
+ lea edx, bword ptr [ebx+0x94]
+ ; byrRegs +[edx]
+ lea ecx, [eax+0x01]
+ lock
+ cmpxchg dword ptr [edx], ecx
+ cmp eax, dword ptr [ebp-0x10]
+ mov edx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edx]
+ ; byrRegs -[edx]
+ jne SHORT G_M26012_IG04
+ mov eax, edi
+ ; byrRegs +[eax]
+ mov edi, gword ptr [ebp-0x14]
+ ; gcrRegs +[edi]
+ ; byrRegs -[edi]
+ mov edx, eax
+ ; gcrRegs -[edx]
+ ; byrRegs +[edx]
+ ; GC ptr vars -{V01 V03 V06}
+ call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
+ ; gcrRegs -[ebx edi]
+ ; byrRegs -[edx]
+ mov dword ptr [eax+0x04], ecx
+ mov ebx, gword ptr [esi+0x10]
+ ; gcrRegs +[ebx]
+ mov ecx, gword ptr [ebx+0x04]
+ ; gcrRegs +[ecx]
+ test ecx, ecx
+ je G_M26012_IG12
+ ;; size=84 bbWeight=1 PerfScore 46.25
+G_M26012_IG05: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx]
+ ; byrRegs -[eax]
+ call [<unknown method>]
+ ; gcrRegs -[ecx]
+ test eax, eax
+ je G_M26012_IG14
+ movzx eax, byte ptr [esi+0x14]
+ ;; size=18 bbWeight=1 PerfScore 6.25
+G_M26012_IG06: ; bbWeight=1, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=8 bbWeight=1 PerfScore 3.50
+G_M26012_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi]
- ; GC ptr vars -{V01}
+ call CORINFO_HELP_RNGCHKFAIL
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M26012_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -71,13 +148,9 @@ G_M26012_IG03: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
call CORINFO_HELP_THROW
; gcrRegs -[ecx edi]
;; size=44 bbWeight=0 PerfScore 0.00
-G_M26012_IG04: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG09: ; bbWeight=0, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi]
; GC ptr vars +{V01 V03}
- cmp byte ptr [esi+0x16], 0
- je SHORT G_M26012_IG06
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG05: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, gword ptr [ebp-0x14]
; gcrRegs +[edi]
mov edx, edi
@@ -91,96 +164,38 @@ G_M26012_IG05: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov byte ptr [esi+0x14], 0
mov gword ptr [ebp-0x14], edi
; GC ptr vars +{V01}
- ;; size=26 bbWeight=0 PerfScore 0.00
-G_M26012_IG06: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
- mov ecx, gword ptr [esi+0x08]
- ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x18], ecx
- ; GC ptr vars +{V03}
- mov ebx, gword ptr [ecx+0x08]
- ; gcrRegs +[ebx]
- mov edx, gword ptr [ebx+0x04]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x1C], edx
- ; GC ptr vars +{V06}
- ;; size=15 bbWeight=1 PerfScore 8.00
-G_M26012_IG07: ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ecx]
- mov eax, dword ptr [ebx+0x94]
- mov dword ptr [ebp-0x10], eax
- mov edi, eax
- and edi, dword ptr [ebx+0x0C]
- cmp edi, dword ptr [edx+0x04]
- jae G_M26012_IG16
- lea edi, bword ptr [edx+8*edi+0x08]
- ; byrRegs +[edi]
- mov edx, dword ptr [edi+0x04]
- ; gcrRegs -[edx]
- sub edx, eax
- je SHORT G_M26012_IG11
- ;; size=34 bbWeight=1 PerfScore 14.50
-G_M26012_IG08: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edi]
+ jmp G_M26012_IG03
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M26012_IG10: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars -{V01}
+ mov gword ptr [ebp-0x14], edi
+ ; GC ptr vars +{V01}
+ jmp G_M26012_IG03
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M26012_IG11: ; bbWeight=0, gcVars=00000288 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[edi] +[ebx]
+ ; GC ptr vars +{V03 V06 V07}
mov edi, gword ptr [ebp-0x14]
; gcrRegs +[edi]
test edx, edx
mov edx, gword ptr [ebp-0x1C]
; gcrRegs +[edx]
- jge SHORT G_M26012_IG09
- jmp SHORT G_M26012_IG17
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M26012_IG09: ; bbWeight=0, gcVars=00000220 {V03 V06}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V01 V03}
- mov gword ptr [ebp-0x14], edi
- ; GC ptr vars +{V01}
- jmp SHORT G_M26012_IG07
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edx ebx]
- ; GC ptr vars -{V01 V06}
- mov gword ptr [ebp-0x14], edi
- ; GC ptr vars +{V01}
- jmp SHORT G_M26012_IG06
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG11: ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs -[edi] +[ebx]
- ; byrRegs +[edi]
- ; GC ptr vars +{V03 V05 V06}
- lea edx, bword ptr [ebx+0x94]
- ; byrRegs +[edx]
- lea ecx, [eax+0x01]
- lock
- cmpxchg dword ptr [edx], ecx
- cmp eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x1C]
- ; gcrRegs +[edx]
- ; byrRegs -[edx]
- jne SHORT G_M26012_IG07
- mov eax, edi
- ; byrRegs +[eax]
- mov edi, gword ptr [ebp-0x14]
- ; gcrRegs +[edi]
- ; byrRegs -[edi]
- mov edx, eax
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
- ; GC ptr vars -{V01 V03 V05 V06}
- call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
- ; gcrRegs -[ebx edi]
- ; byrRegs -[edx]
- mov dword ptr [eax+0x04], ecx
- ;; size=36 bbWeight=1 PerfScore 26.50
-G_M26012_IG12: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[eax]
+ jge SHORT G_M26012_IG13
+ mov ecx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ecx]
...
@@ -10,20 +10,19 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> esi class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T06] ( 2, 1.50) ref -> ebx class-hnd single-def <System.Type>
-; V03 arg3 [V03,T08] ( 2, 1 ) int -> [ebp+0x10] single-def
-; V04 arg4 [V04,T09] ( 2, 1 ) int -> [ebp+0x0C] single-def
-; V05 arg5 [V05,T03] ( 4, 1.75) ref -> edi class-hnd single-def <System.Object>
+; V02 arg2 [V02,T05] ( 2, 1.50) ref -> ebx class-hnd single-def <System.Type>
+; V03 arg3 [V03,T07] ( 2, 1 ) int -> [ebp+0x10] single-def
+; V04 arg4 [V04,T08] ( 2, 1 ) int -> [ebp+0x0C] single-def
+; V05 arg5 [V05,T03] ( 3, 1.50) ref -> edi class-hnd single-def <System.Object>
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V07 tmp0 [V07,T02] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V08 tmp1 [V08,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V09 tmp2 [V09,T11] ( 0, 0 ) int -> zero-ref
+;* V08 tmp1 [V08,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp2 [V09,T10] ( 0, 0 ) int -> zero-ref
; V10 tmp3 [V10,T01] ( 3, 3 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-; V11 tmp4 [V11,T10] ( 2, 1 ) ubyte -> eax single-def "Inline stloc first use temp"
-; V12 tmp5 [V12,T04] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <<unknown class>>
-; V13 cse0 [V13,T05] ( 3, 1.50) int -> edx "CSE - moderate"
+; V11 tmp4 [V11,T09] ( 2, 1 ) ubyte -> ecx single-def "Inline stloc first use temp"
+; V12 tmp5 [V12,T04] ( 3, 1.50) ref -> [ebp-0x10] class-hnd spill-single-def "Inline return value spill temp" <<unknown class>>
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M49136_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -31,120 +30,100 @@ G_M49136_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
+ push eax
mov esi, edx
; gcrRegs +[esi]
mov ebx, gword ptr [ebp+0x14]
; gcrRegs +[ebx]
mov edi, gword ptr [ebp+0x08]
; gcrRegs +[edi]
- ;; size=14 bbWeight=1 PerfScore 6.50
+ ;; size=15 bbWeight=1 PerfScore 7.50
G_M49136_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp ebx, 0xD1FFAB1E
- jne SHORT G_M49136_IG10
+ jne SHORT G_M49136_IG04
;; size=8 bbWeight=1 PerfScore 1.25
G_M49136_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp+0x10]
- cmp eax, 1
- jne SHORT G_M49136_IG09
- mov ecx, dword ptr [ebp+0x0C]
- cmp ecx, 1
- jne SHORT G_M49136_IG08
+ cmp dword ptr [ebp+0x10], 1
+ jne SHORT G_M49136_IG04
+ cmp dword ptr [ebp+0x0C], 1
+ jne SHORT G_M49136_IG04
test edi, edi
- je SHORT G_M49136_IG07
- mov edx, dword ptr [edi]
- cmp edx, 0xD1FFAB1E
- mov dword ptr [ebp+0x10], eax
- mov dword ptr [ebp+0x0C], ecx
- jne SHORT G_M49136_IG10
- cmp edx, 0xD1FFAB1E
- je SHORT G_M49136_IG05
- ;; size=44 bbWeight=0.50 PerfScore 6.12
-G_M49136_IG04: ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx esi]
- mov edx, edi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Int32
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx edi]
- ;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M49136_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ je SHORT G_M49136_IG04
+ cmp dword ptr [edi], 0xD1FFAB1E
+ je SHORT G_M49136_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 5.62
+G_M49136_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ movzx ecx, byte ptr [esi+0x08]
+ mov byte ptr [esi+0x08], 0
+ test ecx, ecx
+ je SHORT G_M49136_IG08
+ xor eax, eax
+ ; gcrRegs +[eax]
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 16
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax ebx esi edi]
mov ecx, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
xor ecx, ecx
mov dword ptr [eax+0x04], ecx
;; size=15 bbWeight=0.50 PerfScore 1.25
-G_M49136_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M49136_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 16
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M49136_IG07: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[ebx esi edi]
- mov dword ptr [ebp+0x10], eax
- mov dword ptr [ebp+0x0C], ecx
- jmp SHORT G_M49136_IG10
- ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M49136_IG08: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp+0x10], eax
- mov dword ptr [ebp+0x0C], ecx
- jmp SHORT G_M49136_IG10
- ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M49136_IG09: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov dword ptr [ebp+0x10], eax
- ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M49136_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- movzx eax, byte ptr [esi+0x08]
- mov byte ptr [esi+0x08], 0
- test eax, eax
- je SHORT G_M49136_IG12
- xor eax, eax
- ; gcrRegs +[eax]
- ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M49136_IG11: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 16
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M49136_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
mov ecx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [esi], ecx
- je SHORT G_M49136_IG14
+ je SHORT G_M49136_IG10
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M49136_IG13: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M49136_IG09: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov edx, esi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[edx] +[eax]
;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M49136_IG14: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M49136_IG10: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
- mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
+ mov ecx, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[ecx]
+ mov gword ptr [ebp-0x10], ecx
+ ; GC ptr vars +{V12}
push ebx
push dword ptr [ebp+0x10]
push dword ptr [ebp+0x0C]
push edi
mov edx, esi
; gcrRegs +[edx]
- mov ecx, gword ptr [eax+0x04]
- ; gcrRegs +[ecx]
+ mov ecx, gword ptr [ecx+0x04]
+ mov eax, gword ptr [ebp-0x10]
+ ; gcrRegs +[eax]
+ ; GC ptr vars -{V12}
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx edx ebx esi edi]
- ;; size=21 bbWeight=0.50 PerfScore 5.62
-G_M49136_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=28 bbWeight=0.50 PerfScore 6.62
+G_M49136_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 16
- ;; size=7 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 184, prolog size 6, PerfScore 34.06, instruction count 72, allocated bytes for code 184 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
+; Total bytes of code 144, prolog size 7, PerfScore 33.69, instruction count 61, allocated bytes for code 144 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
; ============================================================
@@ -10,13 +10,12 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> esi class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 5, 2.75) ref -> edi class-hnd single-def <System.Object>
-;* V03 tmp0 [V03,T07] ( 0, 0 ) int -> zero-ref
+; V02 arg2 [V02,T01] ( 4, 2.50) ref -> edi class-hnd single-def <System.Object>
+;* V03 tmp0 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 tmp1 [V04,T02] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp3 [V06,T06] ( 2, 1 ) ubyte -> eax single-def "Inline stloc first use temp"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V06 tmp3 [V06,T05] ( 2, 1 ) ubyte -> eax single-def "Inline stloc first use temp"
; V07 tmp4 [V07,T03] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <<unknown class>>
-; V08 cse0 [V08,T04] ( 3, 1.50) int -> edx "CSE - moderate"
;
; Lcl frame size = 0
@@ -32,58 +31,48 @@ G_M57559_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=10 bbWeight=1 PerfScore 4.50
G_M57559_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- je SHORT G_M57559_IG07
+ je SHORT G_M57559_IG04
;; size=4 bbWeight=1 PerfScore 1.25
G_M57559_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [edi]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M57559_IG07
- cmp edx, 0xD1FFAB1E
- je SHORT G_M57559_IG05
- ;; size=18 bbWeight=0.50 PerfScore 2.25
-G_M57559_IG04: ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- mov edx, edi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx]
- ;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M57559_IG05: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- mov eax, dword ptr [edi+0x04]
- ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M57559_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
- pop ebp
- ret 4
- ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M57559_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi]
+ cmp dword ptr [edi], 0xD1FFAB1E
+ je SHORT G_M57559_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M57559_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
movzx eax, byte ptr [esi+0x08]
mov byte ptr [esi+0x08], 0
test eax, eax
- je SHORT G_M57559_IG09
+ je SHORT G_M57559_IG08
xor eax, eax
;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M57559_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M57559_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret 4
;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M57559_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M57559_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[esi]
+ mov eax, dword ptr [edi+0x04]
+ ;; size=3 bbWeight=0.50 PerfScore 1.00
+G_M57559_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop esi
+ pop edi
+ pop ebp
+ ret 4
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
+G_M57559_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[esi]
mov ecx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [esi], ecx
- je SHORT G_M57559_IG11
+ je SHORT G_M57559_IG10
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M57559_IG10: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M57559_IG09: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, esi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[edx] +[eax]
;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M57559_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M57559_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
@@ -95,13 +84,13 @@ G_M57559_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [eax+0x0C]<unknown method>
; gcrRegs -[eax ecx edx esi edi]
;; size=14 bbWeight=0.50 PerfScore 4.12
-G_M57559_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M57559_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret 4
;; size=6 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 109, prolog size 5, PerfScore 23.44, instruction count 44, allocated bytes for code 109 (MethodHash=76951f28) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
+; Total bytes of code 87, prolog size 5, PerfScore 22.81, instruction count 38, allocated bytes for code 87 (MethodHash=76951f28) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
; ============================================================
@@ -10,13 +10,12 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> esi class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 5, 2.75) ref -> edi class-hnd single-def <System.Object>
-;* V03 tmp0 [V03,T07] ( 0, 0 ) int -> zero-ref
+; V02 arg2 [V02,T01] ( 4, 2.50) ref -> edi class-hnd single-def <System.Object>
+;* V03 tmp0 [V03,T06] ( 0, 0 ) int -> zero-ref
; V04 tmp1 [V04,T02] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp3 [V06,T06] ( 2, 1 ) ubyte -> eax single-def "Inline stloc first use temp"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V06 tmp3 [V06,T05] ( 2, 1 ) ubyte -> eax single-def "Inline stloc first use temp"
; V07 tmp4 [V07,T03] ( 3, 1.50) ref -> eax class-hnd "Inline return value spill temp" <<unknown class>>
-; V08 cse0 [V08,T04] ( 3, 1.50) int -> edx "CSE - moderate"
;
; Lcl frame size = 0
@@ -32,58 +31,48 @@ G_M44930_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=10 bbWeight=1 PerfScore 4.50
G_M44930_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- je SHORT G_M44930_IG07
+ je SHORT G_M44930_IG04
;; size=4 bbWeight=1 PerfScore 1.25
G_M44930_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [edi]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M44930_IG07
- cmp edx, 0xD1FFAB1E
- je SHORT G_M44930_IG05
- ;; size=18 bbWeight=0.50 PerfScore 2.25
-G_M44930_IG04: ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- mov edx, edi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[edx]
- ;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M44930_IG05: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- mov eax, dword ptr [edi+0x04]
- ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M44930_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop esi
- pop edi
- pop ebp
- ret 4
- ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44930_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi]
+ cmp dword ptr [edi], 0xD1FFAB1E
+ je SHORT G_M44930_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M44930_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
movzx eax, byte ptr [esi+0x08]
mov byte ptr [esi+0x08], 0
test eax, eax
- je SHORT G_M44930_IG09
+ je SHORT G_M44930_IG08
xor eax, eax
;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M44930_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret 4
;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44930_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M44930_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[esi]
+ mov eax, dword ptr [edi+0x04]
+ ;; size=3 bbWeight=0.50 PerfScore 1.00
+G_M44930_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop esi
+ pop edi
+ pop ebp
+ ret 4
+ ;; size=6 bbWeight=0.50 PerfScore 1.75
+G_M44930_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[esi]
mov ecx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [esi], ecx
- je SHORT G_M44930_IG11
+ je SHORT G_M44930_IG10
;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M44930_IG10: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44930_IG09: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, esi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[edx] +[eax]
;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M44930_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44930_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
@@ -95,13 +84,13 @@ G_M44930_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [eax+0x0C]<unknown method>
; gcrRegs -[eax ecx edx esi edi]
;; size=14 bbWeight=0.50 PerfScore 4.12
-G_M44930_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret 4
;; size=6 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 109, prolog size 5, PerfScore 23.44, instruction count 44, allocated bytes for code 109 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
+; Total bytes of code 87, prolog size 5, PerfScore 22.81, instruction count 38, allocated bytes for code 87 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
; ============================================================
@@ -8,42 +8,39 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 1, 1 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.Span`1[int]>
-; V01 arg1 [V01,T02] ( 4, 4 ) ref -> eax class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
-; V02 TypeCtx [V02,T01] ( 5, 4 ) int -> [ebp-0x24] EH-live single-def
-; V03 loc0 [V03,T05] ( 5, 3 ) ref -> esi class-hnd <System.Exception>
+; V00 arg0 [V00,T08] ( 1, 0 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.Span`1[int]>
+; V01 arg1 [V01,T01] ( 4, 2 ) ref -> eax class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
+; V02 TypeCtx [V02,T00] ( 8, 3 ) int -> [ebp-0x20] EH-live single-def
+; V03 loc0 [V03,T03] ( 5, 0 ) ref -> esi class-hnd <System.Exception>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
-; V07 loc4 [V07,T03] ( 3, 4.50) ref -> eax single-def "CASTCLASS eval op1"
-; V08 tmp1 [V08,T06] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable"
-; V09 tmp2 [V09,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V10 tmp3 [V10,T09] ( 2, 0 ) ref -> esi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V11 tmp4 [V11,T10] ( 2, 0 ) ref -> ecx single-def "argument with side effect"
-; V12 EHSlots [V12 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V13 cse0 [V13,T04] ( 7, 3.50) int -> edi multi-def "CSE - moderate"
-; V14 cse1 [V14,T07] ( 3, 2 ) int -> ebx "CSE - moderate"
+; V07 loc4 [V07,T04] ( 3, 0 ) ref -> eax single-def "CASTCLASS eval op1"
+; V08 tmp1 [V08,T05] ( 3, 0 ) int -> edi "fgMakeTemp is creating a new local variable"
+; V09 tmp2 [V09,T02] ( 6, 0 ) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V10 tmp3 [V10,T06] ( 2, 0 ) ref -> esi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V11 tmp4 [V11,T07] ( 2, 0 ) ref -> ecx single-def "argument with side effect"
+; V12 EHSlots [V12 ] ( 1, 1 ) struct (16) [ebp-0x1C] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
;
; Lcl frame size = 24
-G_M57052_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M57052_IG01: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
push esi
- push ebx
sub esp, 24
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 dword ptr [ebp-0x10], edx
- mov dword ptr [ebp-0x24], edx
+ mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x0C], edx
+ mov dword ptr [ebp-0x20], edx
mov eax, ecx
; gcrRegs +[eax]
- ;; size=31 bbWeight=1 PerfScore 11.00
-G_M57052_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M57052_IG02: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
push dword ptr [ebp+0x0C]
push bword ptr [ebp+0x08]
mov ecx, gword ptr [eax+0x04]
@@ -53,7 +50,7 @@ G_M57052_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000
xor esi, esi
; gcrRegs +[esi]
jmp SHORT G_M57052_IG04
- ;; size=16 bbWeight=1 PerfScore 9.25
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M57052_IG03: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] +[eax]
mov esi, eax
@@ -61,13 +58,12 @@ G_M57052_IG03: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000
call CORINFO_HELP_ENDCATCH
; gcrRegs -[eax]
;; size=7 bbWeight=0 PerfScore 0.00
-G_M57052_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M57052_IG04: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
- je SHORT G_M57052_IG10
- mov edx, dword ptr [ebp-0x24]
+ je SHORT G_M57052_IG06
+ mov edx, dword ptr [ebp-0x20]
mov ecx, dword ptr [edx+0x20]
- mov edi, dword ptr [ecx]
- mov ecx, edi
+ mov ecx, dword ptr [ecx]
mov edx, esi
; gcrRegs +[edx]
call CORINFO_HELP_ISINSTANCEOFANY
@@ -76,40 +72,60 @@ G_M57052_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs +[edx]
test edx, edx
je SHORT G_M57052_IG09
- ;; size=27 bbWeight=1 PerfScore 9.25
-G_M57052_IG05: ; bbWeight=0.50, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
- mov ebx, dword ptr [edx]
+ mov ecx, dword ptr [ebp-0x20]
+ mov edi, dword ptr [ecx+0x20]
+ mov edi, dword ptr [edi]
+ cmp dword ptr [edx], edi
+ je SHORT G_M57052_IG05
mov ecx, edi
- cmp ebx, ecx
- je SHORT G_M57052_IG07
- ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M57052_IG06: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
mov edx, eax
- ; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
; gcrRegs -[edx]
mov edx, eax
; gcrRegs +[edx]
- ;; size=9 bbWeight=0.25 PerfScore 0.38
-G_M57052_IG07: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M57052_IG05: ; bbWeight=0, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- cmp ebx, edi
+ mov eax, dword ptr [edx]
+ mov ecx, dword ptr [ebp-0x20]
+ mov edi, dword ptr [ecx+0x20]
+ cmp eax, dword ptr [edi]
jne SHORT G_M57052_IG09
+ jmp SHORT G_M57052_IG07
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M57052_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx esi]
+ mov ecx, dword ptr [ebp-0x20]
+ mov ecx, dword ptr [ecx+0x20]
+ mov ecx, dword ptr [ecx]
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+ ; gcrRegs +[eax]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ call CORINFO_HELP_THROW
+ ; gcrRegs -[eax ecx]
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M57052_IG07: ; bbWeight=0, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[edx]
mov eax, edx
; gcrRegs +[eax]
- ;; size=6 bbWeight=1 PerfScore 1.50
-G_M57052_IG08: ; bbWeight=1, epilog, nogc, extend
- lea esp, [ebp-0x0C]
- pop ebx
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57052_IG08: ; bbWeight=0, epilog, nogc, extend
+ lea esp, [ebp-0x08]
pop esi
pop edi
pop ebp
ret 8
- ;; size=10 bbWeight=1 PerfScore 4.50
+ ;; size=9 bbWeight=0 PerfScore 0.00
G_M57052_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edx]
- mov ecx, edi
+ ; gcrRegs -[eax edx] +[esi]
+ mov ecx, dword ptr [ebp-0x20]
+ mov ecx, dword ptr [ecx+0x20]
+ mov ecx, dword ptr [ecx]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[eax]
mov ecx, eax
@@ -121,27 +137,11 @@ G_M57052_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}
mov ecx, eax
; gcrRegs +[ecx]
call CORINFO_HELP_THROW
- ; gcrRegs -[eax ecx]
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M57052_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov edx, dword ptr [ebp-0x24]
- mov ecx, dword ptr [edx+0x20]
- mov edi, dword ptr [ecx]
- mov ecx, edi
- call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
- ; gcrRegs +[eax]
- mov ecx, eax
- ; gcrRegs +[ecx]
- call [<unknown method>]
- ; gcrRegs -[ecx]
- mov ecx, eax
- ; gcrRegs +[ecx]
- call CORINFO_HELP_THROW
; gcrRegs -[eax ecx]
int3
;; size=31 bbWeight=0 PerfScore 0.00
-; Total bytes of code 169, prolog size 26, PerfScore 37.62, instruction count 66, allocated bytes for code 169 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 185, prolog size 25, PerfScore 0.00, instruction count 70, allocated bytes for code 185 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
; ============================================================
*************** EH table for System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon
@@ -9,22 +9,22 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 12, 79.50) byref -> esi this single-def
-; V01 arg1 [V01,T13] ( 6, 4 ) byref -> edi single-def
-; V02 arg2 [V02,T27] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V03 loc0 [V03,T04] ( 9, 40 ) int -> ebx ld-addr-op
-; V04 loc1 [V04,T05] ( 6, 24.50) int -> [ebp-0x10] ld-addr-op
-; V05 loc2 [V05,T14] ( 5, 5.50) int -> [ebp-0x14]
-; V06 loc3 [V06,T26] ( 3, 1.50) int -> [ebp-0x18] spill-single-def
+; V01 arg1 [V01,T12] ( 6, 7.50) byref -> edi single-def
+; V02 arg2 [V02,T16] ( 2, 4.50) byref -> [ebp+0x08] single-def
+; V03 loc0 [V03,T04] ( 9, 40 ) int -> [ebp-0x10] ld-addr-op
+; V04 loc1 [V04,T05] ( 6, 24.50) int -> [ebp-0x14] ld-addr-op
+; V05 loc2 [V05,T14] ( 5, 5.50) int -> [ebp-0x18]
+; V06 loc3 [V06,T27] ( 3, 1.50) int -> [ebp-0x1C] spill-single-def
;* V07 loc4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[ushort]>
;* V08 tmp0 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V09 tmp1 [V09,T15] ( 5, 5 ) ref -> ecx class-hnd single-def "Inlining Arg" <ushort[]>
-; V10 tmp2 [V10,T16] ( 5, 4 ) int -> eax "Inlining Arg"
-; V11 tmp3 [V11,T19] ( 4, 3 ) int -> ebx "Inlining Arg"
-; V12 tmp4 [V12 ] ( 4, 1.50) struct ( 8) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+; V10 tmp2 [V10,T17] ( 5, 4 ) int -> ebx "Inlining Arg"
+; V11 tmp3 [V11,T20] ( 4, 3 ) int -> esi "Inlining Arg"
+; V12 tmp4 [V12 ] ( 4, 1.50) struct ( 8) [ebp-0x24] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp5 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp6 [V14,T25] ( 2, 1.94) int -> ecx "Span.get_Item index"
+; V14 tmp6 [V14,T26] ( 2, 1.93) int -> ecx "Span.get_Item index"
; V15 tmp7 [V15,T28] ( 2, 0.97) ubyte -> eax "Inline return value spill temp"
-; V16 tmp8 [V16,T17] ( 4, 3.88) ushort -> ecx "Inlining Arg"
+; V16 tmp8 [V16,T18] ( 4, 3.88) ushort -> ecx "Inlining Arg"
;* V17 tmp9 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V18 tmp10 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp11 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -33,7 +33,7 @@
;* V22 tmp14 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp15 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V24 tmp16 [V24,T29] ( 2, 0.96) ubyte -> eax "Inline return value spill temp"
-; V25 tmp17 [V25,T18] ( 4, 3.87) ushort -> ecx "Inlining Arg"
+; V25 tmp17 [V25,T19] ( 4, 3.85) ushort -> ecx "Inlining Arg"
;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp19 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp20 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -42,10 +42,10 @@
;* V31 tmp23 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V32 tmp24 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V33 tmp25 [V33,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V34 tmp26 [V34,T02] ( 9, 72.01) int -> ebx "Inline stloc first use temp"
+; V34 tmp26 [V34,T02] ( 9, 72.01) int -> [ebp-0x28] spill-single-def "Inline stloc first use temp"
;* V35 tmp27 [V35 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Span`1[ushort]>
;* V36 tmp28 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V37 tmp29 [V37,T08] ( 3, 18 ) int -> eax "Inline stloc first use temp"
+; V37 tmp29 [V37,T08] ( 3, 18 ) int -> ebx "Inline stloc first use temp"
; V38 tmp30 [V38,T03] ( 5, 44.02) ref -> ecx class-hnd "Inlining Arg" <ushort[]>
; V39 tmp31 [V39,T06] ( 4, 24.01) int -> edx "Inlining Arg"
;* V40 tmp32 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
@@ -65,10 +65,10 @@
;* V54 tmp46 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp47 [V55 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V56 tmp48 [V56 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x4)" P-INDEP
-; V57 tmp49 [V57,T24] ( 6, 1.97) byref -> esi "field V08._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp50 [V58,T23] ( 6, 1.99) int -> ebx "field V08._length (fldOffset=0x4)" P-INDEP
-; V59 tmp51 [V59 ] ( 3, 1 ) byref -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
-; V60 tmp52 [V60 ] ( 3, 1 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
+; V57 tmp49 [V57,T25] ( 6, 1.97) byref -> ebx "field V08._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp50 [V58,T24] ( 6, 1.98) int -> esi "field V08._length (fldOffset=0x4)" P-INDEP
+; V59 tmp51 [V59 ] ( 3, 1 ) byref -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
+; V60 tmp52 [V60 ] ( 3, 1 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
;* V61 tmp53 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp54 [V62 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x4)" P-INDEP
;* V63 tmp55 [V63 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
@@ -103,7 +103,7 @@
; V92 tmp84 [V92,T11] ( 3, 10 ) int -> edx "field V40._length (fldOffset=0x4)" P-INDEP
;* V93 tmp85 [V93 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp86 [V94 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x4)" P-INDEP
-; V95 tmp87 [V95,T09] ( 2, 16 ) byref -> eax "field V42._reference (fldOffset=0x0)" P-INDEP
+; V95 tmp87 [V95,T09] ( 2, 16 ) byref -> ebx "field V42._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp88 [V96 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
;* V97 tmp89 [V97 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp90 [V98 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x4)" P-INDEP
@@ -117,13 +117,13 @@
;* V106 tmp98 [V106 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x4)" P-INDEP
;* V107 tmp99 [V107 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp100 [V108 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x4)" P-INDEP
-; V109 tmp101 [V109,T12] ( 2, 8 ) ref -> ecx "argument with side effect"
-; V110 tmp102 [V110,T20] ( 2, 2 ) ref -> ecx "argument with side effect"
-; V111 tmp103 [V111,T21] ( 2, 2 ) ref -> ecx "argument with side effect"
-; V112 tmp104 [V112,T22] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V109 tmp101 [V109,T13] ( 2, 8 ) ref -> eax "argument with side effect"
+; V110 tmp102 [V110,T21] ( 2, 2 ) ref -> ebx "argument with side effect"
+; V111 tmp103 [V111,T22] ( 2, 2 ) ref -> ecx "argument with side effect"
+; V112 tmp104 [V112,T23] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
; V113 cse0 [V113,T00] ( 4, 96 ) int -> eax "CSE - aggressive"
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M44740_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -131,10 +131,10 @@ G_M44740_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
+ sub esp, 28
xor eax, eax
+ mov dword ptr [ebp-0x24], eax
mov dword ptr [ebp-0x20], eax
- mov dword ptr [ebp-0x1C], eax
mov esi, ecx
; byrRegs +[esi]
mov edi, edx
@@ -144,42 +144,47 @@ G_M44740_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e
jmp SHORT G_M44740_IG04
;; size=2 bbWeight=1 PerfScore 2.00
G_M44740_IG03: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- test eax, eax
+ test ebx, ebx
je SHORT G_M44740_IG04
- mov ecx, gword ptr [esi]
+ mov ecx, ebx
+ mov eax, gword ptr [esi]
+ ; gcrRegs +[eax]
+ mov dword ptr [ebp-0x10], edx
+ push edx
+ mov dword ptr [ebp-0x14], ecx
+ push ecx
+ mov ecx, eax
; gcrRegs +[ecx]
- push ebx
- mov dword ptr [ebp-0x10], eax
- push eax
mov edx, 58
call [<unknown method>]
- ; gcrRegs -[ecx]
- cmp eax, -1
- jne SHORT G_M44740_IG14
- ;; size=27 bbWeight=2 PerfScore 21.50
+ ; gcrRegs -[eax ecx]
+ mov edx, eax
+ cmp edx, -1
+ jne G_M44740_IG17
+ ;; size=40 bbWeight=2 PerfScore 25.00
G_M44740_IG04: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov ebx, dword ptr [esi+0x08]
+ mov eax, dword ptr [esi+0x08]
+ mov dword ptr [ebp-0x28], eax
mov ecx, gword ptr [esi]
; gcrRegs +[ecx]
mov edx, dword ptr [esi+0x04]
- sub edx, ebx
+ sub edx, eax
test ecx, ecx
jne SHORT G_M44740_IG06
- ;; size=14 bbWeight=8 PerfScore 60.00
+ ;; size=17 bbWeight=8 PerfScore 68.00
G_M44740_IG05: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
; gcrRegs -[ecx]
- mov eax, ebx
- or eax, edx
+ or edx, eax
jne SHORT G_M44740_IG07
xor ecx, ecx
; byrRegs +[ecx]
xor edx, edx
jmp SHORT G_M44740_IG10
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M44740_IG06: ; bbWeight=2.01, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
; gcrRegs +[ecx]
; byrRegs -[ecx]
- cmp dword ptr [ecx+0x04], ebx
+ cmp dword ptr [ecx+0x04], eax
jae SHORT G_M44740_IG08
;; size=5 bbWeight=2.01 PerfScore 8.02
G_M44740_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -191,63 +196,96 @@ G_M44740_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
G_M44740_IG08: ; bbWeight=2.00, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
; gcrRegs +[ecx]
; byrRegs +[esi edi]
- mov eax, dword ptr [ecx+0x04]
- sub eax, ebx
- cmp eax, edx
+ mov ebx, dword ptr [ecx+0x04]
+ sub ebx, eax
+ cmp ebx, edx
jb SHORT G_M44740_IG07
;; size=9 bbWeight=2.00 PerfScore 7.01
G_M44740_IG09: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref
- lea ecx, bword ptr [ecx+2*ebx+0x08]
+ lea ecx, bword ptr [ecx+2*eax+0x08]
; gcrRegs -[ecx]
; byrRegs +[ecx]
;; size=4 bbWeight=2 PerfScore 2.00
G_M44740_IG10: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C2 {ecx esi edi}, byref, isz
- mov eax, 0xD1FFAB1E
- ; byrRegs +[eax]
- push eax
+ mov ebx, 0xD1FFAB1E
+ ; byrRegs +[ebx]
+ push ebx
push 2
call [<unknown method>]
- ; byrRegs -[eax ecx]
- test eax, eax
+ ; byrRegs -[ecx ebx]
+ mov ebx, eax
+ test ebx, ebx
jl SHORT G_M44740_IG12
- ;; size=18 bbWeight=8 PerfScore 52.00
+ ;; size=20 bbWeight=8 PerfScore 54.00
G_M44740_IG11: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- lea ecx, [ebx+eax]
+ mov eax, dword ptr [ebp-0x28]
+ mov edx, eax
+ lea ecx, [edx+ebx]
add ecx, 2
mov dword ptr [esi+0x08], ecx
jmp SHORT G_M44740_IG03
- ;; size=11 bbWeight=2 PerfScore 7.50
-G_M44740_IG12: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+ ;; size=16 bbWeight=2 PerfScore 10.00
+G_M44740_IG12: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
mov eax, dword ptr [esi+0x04]
- cmp ebx, eax
- jge G_M44740_IG29
- ;; size=11 bbWeight=32 PerfScore 104.00
+ mov edx, dword ptr [ebp-0x28]
+ cmp edx, eax
+ jge SHORT G_M44740_IG14
+ ;; size=10 bbWeight=32 PerfScore 136.00
G_M44740_IG13: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- mov ecx, eax
- sub ecx, ebx
- mov edx, ecx
+ mov ecx, edx
+ mov edx, eax
+ sub edx, ecx
mov dword ptr [esi+0x08], eax
- mov eax, edx
+ mov ebx, edx
+ mov edx, ecx
jmp G_M44740_IG03
- ;; size=16 bbWeight=16 PerfScore 64.00
-G_M44740_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x14], eax
- mov ecx, eax
- sub ecx, ebx
- mov dword ptr [ebp-0x18], ecx
- mov ecx, gword ptr [esi]
...
@@ -9,22 +9,22 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 12, 79.50) byref -> esi this single-def
-; V01 arg1 [V01,T13] ( 6, 4 ) byref -> edi single-def
-; V02 arg2 [V02,T27] ( 2, 1 ) byref -> [ebp+0x08] single-def
-; V03 loc0 [V03,T04] ( 9, 40 ) int -> ebx ld-addr-op
-; V04 loc1 [V04,T05] ( 6, 24.50) int -> [ebp-0x10] ld-addr-op
-; V05 loc2 [V05,T14] ( 5, 5.50) int -> [ebp-0x14]
-; V06 loc3 [V06,T26] ( 3, 1.50) int -> [ebp-0x18] spill-single-def
+; V01 arg1 [V01,T12] ( 6, 7.50) byref -> edi single-def
+; V02 arg2 [V02,T16] ( 2, 4.50) byref -> [ebp+0x08] single-def
+; V03 loc0 [V03,T04] ( 9, 40 ) int -> [ebp-0x10] ld-addr-op
+; V04 loc1 [V04,T05] ( 6, 24.50) int -> [ebp-0x14] ld-addr-op
+; V05 loc2 [V05,T14] ( 5, 5.50) int -> [ebp-0x18]
+; V06 loc3 [V06,T27] ( 3, 1.50) int -> [ebp-0x1C] spill-single-def
;* V07 loc4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[ushort]>
;* V08 tmp0 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V09 tmp1 [V09,T15] ( 5, 5 ) ref -> ecx class-hnd single-def "Inlining Arg" <ushort[]>
-; V10 tmp2 [V10,T16] ( 5, 4 ) int -> eax "Inlining Arg"
-; V11 tmp3 [V11,T19] ( 4, 3 ) int -> ebx "Inlining Arg"
-; V12 tmp4 [V12 ] ( 4, 1.50) struct ( 8) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+; V10 tmp2 [V10,T17] ( 5, 4 ) int -> ebx "Inlining Arg"
+; V11 tmp3 [V11,T20] ( 4, 3 ) int -> esi "Inlining Arg"
+; V12 tmp4 [V12 ] ( 4, 1.50) struct ( 8) [ebp-0x24] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp5 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp6 [V14,T25] ( 2, 1.94) int -> ecx "Span.get_Item index"
+; V14 tmp6 [V14,T26] ( 2, 1.93) int -> ecx "Span.get_Item index"
; V15 tmp7 [V15,T28] ( 2, 0.97) ubyte -> eax "Inline return value spill temp"
-; V16 tmp8 [V16,T17] ( 4, 3.88) ushort -> ecx "Inlining Arg"
+; V16 tmp8 [V16,T18] ( 4, 3.88) ushort -> ecx "Inlining Arg"
;* V17 tmp9 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V18 tmp10 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V19 tmp11 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -33,7 +33,7 @@
;* V22 tmp14 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp15 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
; V24 tmp16 [V24,T29] ( 2, 0.96) ubyte -> eax "Inline return value spill temp"
-; V25 tmp17 [V25,T18] ( 4, 3.87) ushort -> ecx "Inlining Arg"
+; V25 tmp17 [V25,T19] ( 4, 3.85) ushort -> ecx "Inlining Arg"
;* V26 tmp18 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp19 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp20 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -42,10 +42,10 @@
;* V31 tmp23 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V32 tmp24 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V33 tmp25 [V33,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V34 tmp26 [V34,T02] ( 9, 72.01) int -> ebx "Inline stloc first use temp"
+; V34 tmp26 [V34,T02] ( 9, 72.01) int -> [ebp-0x28] spill-single-def "Inline stloc first use temp"
;* V35 tmp27 [V35 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Span`1[ushort]>
;* V36 tmp28 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V37 tmp29 [V37,T08] ( 3, 18 ) int -> eax "Inline stloc first use temp"
+; V37 tmp29 [V37,T08] ( 3, 18 ) int -> ebx "Inline stloc first use temp"
; V38 tmp30 [V38,T03] ( 5, 44.02) ref -> ecx class-hnd "Inlining Arg" <ushort[]>
; V39 tmp31 [V39,T06] ( 4, 24.01) int -> edx "Inlining Arg"
;* V40 tmp32 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
@@ -65,10 +65,10 @@
;* V54 tmp46 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp47 [V55 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V56 tmp48 [V56 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x4)" P-INDEP
-; V57 tmp49 [V57,T24] ( 6, 1.97) byref -> esi "field V08._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp50 [V58,T23] ( 6, 1.99) int -> ebx "field V08._length (fldOffset=0x4)" P-INDEP
-; V59 tmp51 [V59 ] ( 3, 1 ) byref -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
-; V60 tmp52 [V60 ] ( 3, 1 ) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
+; V57 tmp49 [V57,T25] ( 6, 1.97) byref -> ebx "field V08._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp50 [V58,T24] ( 6, 1.98) int -> esi "field V08._length (fldOffset=0x4)" P-INDEP
+; V59 tmp51 [V59 ] ( 3, 1 ) byref -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
+; V60 tmp52 [V60 ] ( 3, 1 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
;* V61 tmp53 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp54 [V62 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x4)" P-INDEP
;* V63 tmp55 [V63 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
@@ -103,7 +103,7 @@
; V92 tmp84 [V92,T11] ( 3, 10 ) int -> edx "field V40._length (fldOffset=0x4)" P-INDEP
;* V93 tmp85 [V93 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp86 [V94 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x4)" P-INDEP
-; V95 tmp87 [V95,T09] ( 2, 16 ) byref -> eax "field V42._reference (fldOffset=0x0)" P-INDEP
+; V95 tmp87 [V95,T09] ( 2, 16 ) byref -> ebx "field V42._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp88 [V96 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
;* V97 tmp89 [V97 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp90 [V98 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x4)" P-INDEP
@@ -117,13 +117,13 @@
;* V106 tmp98 [V106 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x4)" P-INDEP
;* V107 tmp99 [V107 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp100 [V108 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x4)" P-INDEP
-; V109 tmp101 [V109,T12] ( 2, 8 ) ref -> ecx "argument with side effect"
-; V110 tmp102 [V110,T20] ( 2, 2 ) ref -> ecx "argument with side effect"
-; V111 tmp103 [V111,T21] ( 2, 2 ) ref -> ecx "argument with side effect"
-; V112 tmp104 [V112,T22] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V109 tmp101 [V109,T13] ( 2, 8 ) ref -> eax "argument with side effect"
+; V110 tmp102 [V110,T21] ( 2, 2 ) ref -> ebx "argument with side effect"
+; V111 tmp103 [V111,T22] ( 2, 2 ) ref -> ecx "argument with side effect"
+; V112 tmp104 [V112,T23] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
; V113 cse0 [V113,T00] ( 4, 96 ) int -> eax "CSE - aggressive"
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M44740_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -131,10 +131,10 @@ G_M44740_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
+ sub esp, 28
xor eax, eax
+ mov dword ptr [ebp-0x24], eax
mov dword ptr [ebp-0x20], eax
- mov dword ptr [ebp-0x1C], eax
mov esi, ecx
; byrRegs +[esi]
mov edi, edx
@@ -144,42 +144,47 @@ G_M44740_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e
jmp SHORT G_M44740_IG04
;; size=2 bbWeight=1 PerfScore 2.00
G_M44740_IG03: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- test eax, eax
+ test ebx, ebx
je SHORT G_M44740_IG04
- mov ecx, gword ptr [esi]
+ mov ecx, ebx
+ mov eax, gword ptr [esi]
+ ; gcrRegs +[eax]
+ mov dword ptr [ebp-0x10], edx
+ push edx
+ mov dword ptr [ebp-0x14], ecx
+ push ecx
+ mov ecx, eax
; gcrRegs +[ecx]
- push ebx
- mov dword ptr [ebp-0x10], eax
- push eax
mov edx, 58
call [<unknown method>]
- ; gcrRegs -[ecx]
- cmp eax, -1
- jne SHORT G_M44740_IG14
- ;; size=27 bbWeight=2 PerfScore 21.50
+ ; gcrRegs -[eax ecx]
+ mov edx, eax
+ cmp edx, -1
+ jne G_M44740_IG17
+ ;; size=40 bbWeight=2 PerfScore 25.00
G_M44740_IG04: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov ebx, dword ptr [esi+0x08]
+ mov eax, dword ptr [esi+0x08]
+ mov dword ptr [ebp-0x28], eax
mov ecx, gword ptr [esi]
; gcrRegs +[ecx]
mov edx, dword ptr [esi+0x04]
- sub edx, ebx
+ sub edx, eax
test ecx, ecx
jne SHORT G_M44740_IG06
- ;; size=14 bbWeight=8 PerfScore 60.00
+ ;; size=17 bbWeight=8 PerfScore 68.00
G_M44740_IG05: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
; gcrRegs -[ecx]
- mov eax, ebx
- or eax, edx
+ or edx, eax
jne SHORT G_M44740_IG07
xor ecx, ecx
; byrRegs +[ecx]
xor edx, edx
jmp SHORT G_M44740_IG10
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M44740_IG06: ; bbWeight=2.01, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
; gcrRegs +[ecx]
; byrRegs -[ecx]
- cmp dword ptr [ecx+0x04], ebx
+ cmp dword ptr [ecx+0x04], eax
jae SHORT G_M44740_IG08
;; size=5 bbWeight=2.01 PerfScore 8.02
G_M44740_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -191,63 +196,96 @@ G_M44740_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
G_M44740_IG08: ; bbWeight=2.00, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
; gcrRegs +[ecx]
; byrRegs +[esi edi]
- mov eax, dword ptr [ecx+0x04]
- sub eax, ebx
- cmp eax, edx
+ mov ebx, dword ptr [ecx+0x04]
+ sub ebx, eax
+ cmp ebx, edx
jb SHORT G_M44740_IG07
;; size=9 bbWeight=2.00 PerfScore 7.01
G_M44740_IG09: ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref
- lea ecx, bword ptr [ecx+2*ebx+0x08]
+ lea ecx, bword ptr [ecx+2*eax+0x08]
; gcrRegs -[ecx]
; byrRegs +[ecx]
;; size=4 bbWeight=2 PerfScore 2.00
G_M44740_IG10: ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C2 {ecx esi edi}, byref, isz
- mov eax, 0xD1FFAB1E
- ; byrRegs +[eax]
- push eax
+ mov ebx, 0xD1FFAB1E
+ ; byrRegs +[ebx]
+ push ebx
push 2
call [<unknown method>]
- ; byrRegs -[eax ecx]
- test eax, eax
+ ; byrRegs -[ecx ebx]
+ mov ebx, eax
+ test ebx, ebx
jl SHORT G_M44740_IG12
- ;; size=18 bbWeight=8 PerfScore 52.00
+ ;; size=20 bbWeight=8 PerfScore 54.00
G_M44740_IG11: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- lea ecx, [ebx+eax]
+ mov eax, dword ptr [ebp-0x28]
+ mov edx, eax
+ lea ecx, [edx+ebx]
add ecx, 2
mov dword ptr [esi+0x08], ecx
jmp SHORT G_M44740_IG03
- ;; size=11 bbWeight=2 PerfScore 7.50
-G_M44740_IG12: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+ ;; size=16 bbWeight=2 PerfScore 10.00
+G_M44740_IG12: ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
mov eax, dword ptr [esi+0x04]
- cmp ebx, eax
- jge G_M44740_IG29
- ;; size=11 bbWeight=32 PerfScore 104.00
+ mov edx, dword ptr [ebp-0x28]
+ cmp edx, eax
+ jge SHORT G_M44740_IG14
+ ;; size=10 bbWeight=32 PerfScore 136.00
G_M44740_IG13: ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
- mov ecx, eax
- sub ecx, ebx
- mov edx, ecx
+ mov ecx, edx
+ mov edx, eax
+ sub edx, ecx
mov dword ptr [esi+0x08], eax
- mov eax, edx
+ mov ebx, edx
+ mov edx, ecx
jmp G_M44740_IG03
- ;; size=16 bbWeight=16 PerfScore 64.00
-G_M44740_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
- mov dword ptr [ebp-0x14], eax
- mov ecx, eax
- sub ecx, ebx
- mov dword ptr [ebp-0x18], ecx
- mov ecx, gword ptr [esi]
...
@@ -51,7 +51,7 @@ G_M35607_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
G_M35607_IG02: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ebx, dword ptr [esi+0x04]
test ebx, ebx
- je G_M35607_IG25
+ je G_M35607_IG19
mov eax, gword ptr [esi+0x08]
; gcrRegs +[eax]
mov gword ptr [ebp-0x1C], eax
@@ -71,16 +71,13 @@ G_M35607_IG02: ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000040 {e
; gcrRegs -[eax]
mov dword ptr [ebp-0x14], eax
cmp ebx, 1
- jne SHORT G_M35607_IG09
+ jne SHORT G_M35607_IG07
;; size=42 bbWeight=1 PerfScore 12.50
G_M35607_IG03: ; bbWeight=0.50, gcVars=00003180 {V00 V02 V20 V21}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx esi]
- mov edi, bword ptr [ebp-0x18]
- ; byrRegs +[edi]
mov edx, gword ptr [ebp-0x1C]
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; SixLabors.ImageSharp.Memory.Internals.SharedArrayPoolBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]
- ; GC ptr vars -{V00}
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax
@@ -90,60 +87,44 @@ G_M35607_IG03: ; bbWeight=0.50, gcVars=00003180 {V00 V02 V20 V21}, gcrefR
; gcrRegs +[ecx]
mov ebx, ecx
; gcrRegs +[ebx]
- jmp G_M35607_IG23
- ;; size=35 bbWeight=0.50 PerfScore 4.50
-G_M35607_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
+ mov dword ptr [ebp-0x10], esi
+ mov gword ptr [ebp-0x20], ebx
+ jmp G_M35607_IG17
+ ;; size=38 bbWeight=0.50 PerfScore 5.00
+G_M35607_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax ecx ebx]
mov edx, gword ptr [ebp-0x1C]
; gcrRegs +[edx]
test edx, edx
- je SHORT G_M35607_IG08
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M35607_IG05: ; bbWeight=0.25, gcVars=00002100 {V20 V21}, gcrefRegs=00000004 {edx}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ je G_M35607_IG17
+ ;; size=11 bbWeight=0.50 PerfScore 1.12
+G_M35607_IG05: ; bbWeight=0.25, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V02}
cmp dword ptr [edx], 0xD1FFAB1E
- mov esi, dword ptr [ebp-0x10]
- jne SHORT G_M35607_IG07
- ;; size=11 bbWeight=0.25 PerfScore 1.25
-G_M35607_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000080 {edi}, byref
+ jne G_M35607_IG17
+ ;; size=12 bbWeight=0.25 PerfScore 1.00
+G_M35607_IG06: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
mov esi, 2
mov edx, gword ptr [edx+0x04]
mov eax, dword ptr [edx+0x14]
mov dword ptr [ebp-0x14], eax
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- jmp G_M35607_IG23
+ mov dword ptr [ebp-0x10], esi
+ jmp G_M35607_IG17
;; size=22 bbWeight=0.50 PerfScore 4.12
-G_M35607_IG07: ; bbWeight=0.12, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
- ; gcrRegs -[edx ebx]
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- jmp G_M35607_IG23
- ;; size=8 bbWeight=0.12 PerfScore 0.38
-G_M35607_IG08: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
- ; gcrRegs -[ebx]
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- mov esi, dword ptr [ebp-0x10]
- jmp G_M35607_IG23
- ;; size=11 bbWeight=0.25 PerfScore 1.00
-G_M35607_IG09: ; bbWeight=0.50, gcVars=00003180 {V00 V02 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ebx] +[esi]
- ; byrRegs -[edi]
- ; GC ptr vars +{V00 V02 V07 V12}
- mov edi, bword ptr [ebp-0x18]
- ; byrRegs +[edi]
+G_M35607_IG07: ; bbWeight=0.50, gcVars=00003180 {V00 V02 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edx] +[esi]
+ ; GC ptr vars +{V02 V12}
mov eax, gword ptr [ebp-0x1C]
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M35607_IG18
- ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M35607_IG10: ; bbWeight=0.25, gcVars=00002100 {V20 V21}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; GC ptr vars -{V00 V02 V07 V12}
+ je G_M35607_IG17
+ ;; size=11 bbWeight=0.50 PerfScore 1.12
+G_M35607_IG08: ; bbWeight=0.25, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V02 V12}
cmp dword ptr [eax], 0xD1FFAB1E
- jne SHORT G_M35607_IG17
- ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M35607_IG11: ; bbWeight=0.50, gcVars=00002000 {V20}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+ jne G_M35607_IG17
+ ;; size=12 bbWeight=0.25 PerfScore 1.00
+G_M35607_IG09: ; bbWeight=0.50, gcVars=00002080 {V00 V20}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
; GC ptr vars -{V21}
mov dword ptr [ebp-0x10], 3
@@ -155,30 +136,27 @@ G_M35607_IG11: ; bbWeight=0.50, gcVars=00002000 {V20}, gcrefRegs=00000040
; gcrRegs +[ecx]
xor edx, edx
test ebx, ebx
- jle SHORT G_M35607_IG16
+ jle SHORT G_M35607_IG13
mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V21}
cmp dword ptr [ecx+0x04], ebx
- mov bword ptr [ebp-0x18], edi
- ; GC ptr vars +{V00}
- jl SHORT G_M35607_IG19
- ;; size=38 bbWeight=0.50 PerfScore 5.12
-G_M35607_IG12: ; bbWeight=3.96, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jl SHORT G_M35607_IG14
+ ;; size=35 bbWeight=0.50 PerfScore 4.62
+G_M35607_IG10: ; bbWeight=3.96, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax ecx]
- ; byrRegs -[edi]
mov eax, gword ptr [esi+4*edx+0x08]
; gcrRegs +[eax]
mov edi, eax
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M35607_IG14
+ je SHORT G_M35607_IG12
;; size=10 bbWeight=3.96 PerfScore 13.86
-G_M35607_IG13: ; bbWeight=0.99, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+G_M35607_IG11: ; bbWeight=0.99, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]
cmp dword ptr [edi], ecx
- jne G_M35607_IG26
- ;; size=13 bbWeight=0.99 PerfScore 4.21
-G_M35607_IG14: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jne SHORT G_M35607_IG20
+ ;; size=9 bbWeight=0.99 PerfScore 4.21
+G_M35607_IG12: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov eax, gword ptr [edi+0x04]
; gcrRegs +[eax]
@@ -189,58 +167,31 @@ G_M35607_IG14: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
mov dword ptr [ecx+4*edx+0x08], eax
inc edx
cmp ebx, edx
- jg SHORT G_M35607_IG12
- ;; size=18 bbWeight=3.96 PerfScore 29.70
-G_M35607_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx esi edi]
- mov edi, bword ptr [ebp-0x18]
- ; byrRegs +[edi]
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- mov esi, dword ptr [ebp-0x10]
- jmp SHORT G_M35607_IG23
- ;; size=11 bbWeight=0.50 PerfScore 2.50
-G_M35607_IG16: ; bbWeight=0.25, gcVars=00002000 {V20}, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs -[ebx] +[ecx]
- ; GC ptr vars -{V00 V21}
+ jg SHORT G_M35607_IG10
+ jmp SHORT G_M35607_IG17
+ ;; size=20 bbWeight=3.96 PerfScore 37.62
+G_M35607_IG13: ; bbWeight=0.25, gcVars=00002080 {V00 V20}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[esi edi]
+ ; GC ptr vars -{V21}
mov gword ptr [ebp-0x24], ecx
; GC ptr vars +{V21}
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- mov esi, dword ptr [ebp-0x10]
- jmp SHORT G_M35607_IG23
- ;; size=11 bbWeight=0.25 PerfScore 1.25
-G_M35607_IG17: ; bbWeight=0.12, gcVars=00002100 {V20 V21}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz
- ; gcrRegs -[ecx ebx]
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- mov esi, dword ptr [ebp-0x10]
- jmp SHORT G_M35607_IG23
- ;; size=8 bbWeight=0.12 PerfScore 0.50
-G_M35607_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
- ; gcrRegs -[ebx]
- mov ebx, gword ptr [ebp-0x20]
- ; gcrRegs +[ebx]
- mov esi, dword ptr [ebp-0x10]
- jmp SHORT G_M35607_IG23
- ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M35607_IG19: ; bbWeight=0.04, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[ebx] +[esi]
- ; byrRegs -[edi]
- ; GC ptr vars +{V00 V07}
+ jmp SHORT G_M35607_IG17
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M35607_IG14: ; bbWeight=0.04, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx] +[esi]
mov eax, gword ptr [esi+4*edx+0x08]
; gcrRegs +[eax]
mov edi, eax
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M35607_IG21
+ je SHORT G_M35607_IG16
;; size=10 bbWeight=0.04 PerfScore 0.14
-G_M35607_IG20: ; bbWeight=0.01, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M35607_IG15: ; bbWeight=0.01, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]
cmp dword ptr [edi], ecx
- jne SHORT G_M35607_IG26
+ jne SHORT G_M35607_IG20
;; size=9 bbWeight=0.01 PerfScore 0.04
-G_M35607_IG21: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M35607_IG16: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov eax, gword ptr [edi+0x04]
; gcrRegs +[eax]
@@ -249,41 +200,39 @@ G_M35607_IG21: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
cmp edx, dword ptr [ecx+0x04]
- jae SHORT G_M35607_IG25
+ jae SHORT G_M35607_IG19
mov dword ptr [ecx+4*edx+0x08], eax
inc edx
cmp ebx, edx
mov gword ptr [ebp-0x24], ecx
- jg SHORT G_M35607_IG19
+ jg SHORT G_M35607_IG14
;; size=26 bbWeight=0.04 PerfScore 0.50
-G_M35607_IG22: ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M35607_IG17: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx esi edi]
+ mov edx, bword ptr [ebp-0x18]
+ ; byrRegs +[edx]
mov ebx, gword ptr [ebp-0x20]
; gcrRegs +[ebx]
- mov esi, dword ptr [ebp-0x10]
- mov edi, bword ptr [ebp-0x18]
- ; byrRegs +[edi]
- ;; size=9 bbWeight=0.02 PerfScore 0.06
-G_M35607_IG23: ; bbWeight=1, gcVars=00000100 {V21}, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 {edi}, gcvars, byref
- ; GC ptr vars -{V00 V07 V20}
...
@@ -39,11 +39,11 @@ G_M33320_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
sub esp, 12
mov eax, ecx
;; size=11 bbWeight=1 PerfScore 4.75
-G_M33320_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M33320_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx]
test edx, edx
- je G_M33320_IG11
- ;; size=8 bbWeight=1 PerfScore 1.25
+ je SHORT G_M33320_IG10
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M33320_IG03: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V01}
@@ -51,7 +51,7 @@ G_M33320_IG03: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000
mov dword ptr [ebp-0x14], esi
cmp esi, eax
mov edx, gword ptr [ebp-0x18]
- je SHORT G_M33320_IG11
+ je SHORT G_M33320_IG10
mov edi, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[edi]
add edi, 8
@@ -83,50 +83,41 @@ G_M33320_IG05: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000084 {e
mov esi, dword ptr [ebp-0x10]
xor esi, dword ptr [edx+0x08]
cmp esi, 1
- jbe SHORT G_M33320_IG08
+ jbe SHORT G_M33320_IG07
;; size=11 bbWeight=2 PerfScore 10.50
G_M33320_IG06: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
; byrRegs -[edx]
test eax, eax
- je SHORT G_M33320_IG09
+ je SHORT G_M33320_IG08
inc ecx
add ebx, ecx
and ebx, dword ptr [edi+0x04]
cmp ecx, 8
jl SHORT G_M33320_IG04
- ;; size=15 bbWeight=4 PerfScore 24.00
-G_M33320_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; byrRegs -[edi]
- mov eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x18]
- ; gcrRegs +[edx]
- mov dword ptr [ebp-0x10], eax
- mov gword ptr [ebp-0x18], edx
- jmp SHORT G_M33320_IG09
- ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
+ jmp SHORT G_M33320_IG08
+ ;; size=17 bbWeight=4 PerfScore 32.00
+G_M33320_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
+ ; byrRegs -[edi] +[edx]
cmp eax, dword ptr [edx]
- jne SHORT G_M33320_IG09
- jmp SHORT G_M33320_IG10
+ jne SHORT G_M33320_IG08
+ jmp SHORT G_M33320_IG09
;; size=6 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33320_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[edx]
mov esi, 2
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33320_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
cmp esi, 1
mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
- jne SHORT G_M33320_IG13
+ jne SHORT G_M33320_IG12
;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M33320_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M33320_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V01}
mov eax, edx
; gcrRegs +[eax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG11: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -134,7 +125,7 @@ G_M33320_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M33320_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33320_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
mov eax, dword ptr [ebp-0x10]
mov ecx, eax
@@ -143,7 +134,7 @@ G_M33320_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
mov edi, eax
; gcrRegs +[edi]
test esi, esi
- jne SHORT G_M33320_IG14
+ jne SHORT G_M33320_IG13
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -151,11 +142,11 @@ G_M33320_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
call [<unknown method>]
; gcrRegs -[eax ecx edx]
;; size=32 bbWeight=0.50 PerfScore 3.62
-G_M33320_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M33320_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov eax, edi
; gcrRegs +[eax]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG14: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -164,6 +155,6 @@ G_M33320_IG15: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 201, prolog size 11, PerfScore 99.00, instruction count 80, allocated bytes for code 201 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
+; Total bytes of code 185, prolog size 11, PerfScore 104.00, instruction count 76, allocated bytes for code 185 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
; ============================================================
@@ -8,14 +8,14 @@
; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 5 ) ref -> esi this class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor>
-; V01 arg1 [V01,T00] ( 7, 7 ) struct (24) [ebp+0x10] do-not-enreg[S] single-def <System.Numerics.Matrix3x2>
-; V02 arg2 [V02,T02] ( 5, 5 ) ref -> edi class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler>
-; V03 arg3 [V03,T06] ( 1, 1 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <SixLabors.ImageSharp.Size>
-; V04 tmp0 [V04,T15] ( 4, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <SixLabors.ImageSharp.Processing.Processors.Transforms.DegenerateTransformException>
+; V00 this [V00,T00] ( 5, 2 ) ref -> esi this class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor>
+; V01 arg1 [V01,T02] ( 7, 0 ) struct (24) [ebp+0x10] do-not-enreg[S] single-def <System.Numerics.Matrix3x2>
+; V02 arg2 [V02,T01] ( 5, 2 ) ref -> edi class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler>
+; V03 arg3 [V03,T15] ( 1, 0 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <SixLabors.ImageSharp.Size>
+; V04 tmp0 [V04,T03] ( 4, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <SixLabors.ImageSharp.Processing.Processors.Transforms.DegenerateTransformException>
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler>
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V07 tmp3 [V07,T05] ( 2, 1 ) ubyte -> edx "Inline return value spill temp"
+; V07 tmp3 [V07,T09] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Numerics.Matrix3x2>
;* V09 tmp5 [V09,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "Inlining Arg" <System.Numerics.Matrix3x2>
@@ -25,26 +25,26 @@
;* V14 tmp10 [V14 ] ( 0, 0 ) float -> zero-ref "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) float -> zero-ref "Inlining Arg"
;* V16 tmp12 [V16 ] ( 0, 0 ) float -> zero-ref "Inlining Arg"
-; V17 tmp13 [V17,T04] ( 3, 1.50) ubyte -> edx "Inline return value spill temp"
-; V18 tmp14 [V18,T08] ( 3, 3 ) float -> [ebp-0x0C] spill-single-def "Inlining Arg"
-; V19 tmp15 [V19,T07] ( 4, 3.50) float -> mm0 single-def "V08.[000..004)"
-; V20 tmp16 [V20,T09] ( 4, 2.50) float -> mm1 single-def "V08.[004..008)"
-; V21 tmp17 [V21,T10] ( 4, 2.50) float -> mm2 single-def "V08.[008..012)"
-; V22 tmp18 [V22,T11] ( 4, 2.50) float -> mm3 single-def "V08.[012..016)"
-; V23 tmp19 [V23,T12] ( 3, 2 ) float -> mm4 single-def "V08.[016..020)"
-; V24 tmp20 [V24,T13] ( 3, 2 ) float -> mm5 single-def "V08.[020..024)"
+; V17 tmp13 [V17,T10] ( 3, 0 ) ubyte -> ecx "Inline return value spill temp"
+; V18 tmp14 [V18,T11] ( 3, 0 ) float -> [ebp-0x0C] spill-single-def "Inlining Arg"
+; V19 tmp15 [V19,T04] ( 4, 0 ) float -> mm0 single-def "V08.[000..004)"
+; V20 tmp16 [V20,T05] ( 4, 0 ) float -> mm1 single-def "V08.[004..008)"
+; V21 tmp17 [V21,T06] ( 4, 0 ) float -> mm2 single-def "V08.[008..012)"
+; V22 tmp18 [V22,T07] ( 4, 0 ) float -> mm3 single-def "V08.[012..016)"
+; V23 tmp19 [V23,T12] ( 3, 0 ) float -> mm4 single-def "V08.[016..020)"
+; V24 tmp20 [V24,T13] ( 3, 0 ) float -> mm5 single-def "V08.[020..024)"
;* V25 tmp21 [V25 ] ( 0, 0 ) float -> zero-ref single-def "V10.[000..004)"
;* V26 tmp22 [V26 ] ( 0, 0 ) float -> zero-ref single-def "V10.[004..008)"
;* V27 tmp23 [V27 ] ( 0, 0 ) float -> zero-ref single-def "V10.[008..012)"
;* V28 tmp24 [V28 ] ( 0, 0 ) float -> zero-ref single-def "V10.[012..016)"
;* V29 tmp25 [V29 ] ( 0, 0 ) float -> zero-ref single-def "V10.[016..020)"
;* V30 tmp26 [V30 ] ( 0, 0 ) float -> zero-ref single-def "V10.[020..024)"
-; V31 tmp27 [V31,T03] ( 3, 6 ) ref -> eax single-def "argument with side effect"
-; V32 cse0 [V32,T14] ( 3, 1.50) float -> mm1 "CSE - moderate"
+; V31 tmp27 [V31,T08] ( 3, 0 ) ref -> eax single-def "argument with side effect"
+; V32 cse0 [V32,T14] ( 3, 0 ) float -> mm1 "CSE - moderate"
;
; Lcl frame size = 4
-G_M56268_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M56268_IG01: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
@@ -55,18 +55,16 @@ G_M56268_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
mov edi, edx
; gcrRegs +[edi]
- ;; size=13 bbWeight=1 PerfScore 5.75
-G_M56268_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M56268_IG02: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test edi, edi
- jne SHORT G_M56268_IG04
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M56268_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M56268_IG03
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M56268_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M56268_IG03: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, edi
; gcrRegs +[ecx]
call <unknown method>
@@ -79,17 +77,15 @@ G_M56268_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
call [eax+0x04]<unknown method>
; gcrRegs -[ecx]
test eax, eax
- jne SHORT G_M56268_IG06
- ;; size=21 bbWeight=1 PerfScore 9.75
-G_M56268_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M56268_IG04
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M56268_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=37 bbWeight=0 PerfScore 0.00
+G_M56268_IG04: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
vmovss xmm0, dword ptr [ebp+0x10]
vmovss xmm1, dword ptr [ebp+0x14]
vmovss xmm2, dword ptr [ebp+0x18]
@@ -97,74 +93,46 @@ G_M56268_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
vmovss xmm4, dword ptr [ebp+0x20]
vmovss xmm5, dword ptr [ebp+0x24]
vucomiss xmm0, xmm0
- jp G_M56268_IG14
- ;; size=40 bbWeight=1 PerfScore 21.00
-G_M56268_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jp SHORT G_M56268_IG08
vucomiss xmm1, xmm1
- jp G_M56268_IG14
+ jp SHORT G_M56268_IG08
vucomiss xmm2, xmm2
- jp G_M56268_IG14
+ jp SHORT G_M56268_IG08
vucomiss xmm3, xmm3
- jp G_M56268_IG14
+ jp SHORT G_M56268_IG08
vucomiss xmm4, xmm4
- jp G_M56268_IG14
+ jp SHORT G_M56268_IG08
vucomiss xmm5, xmm5
- jp G_M56268_IG14
+ jp SHORT G_M56268_IG08
vmulss xmm0, xmm0, xmm3
vmulss xmm1, xmm2, xmm1
vsubss xmm0, xmm0, xmm1
vmovss dword ptr [ebp-0x0C], xmm0
test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M56268_IG13
- ;; size=76 bbWeight=0.50 PerfScore 14.50
-G_M56268_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- vmovss xmm1, dword ptr [D1FFAB1EH] ; static handle
- vxorps xmm2, xmm1, xmmword ptr [@RWD00]
- vucomiss xmm0, xmm2
- jbe SHORT G_M56268_IG09
- xor edx, edx
- vucomiss xmm1, xmm0
- seta dl
- jmp SHORT G_M56268_IG10
- ;; size=33 bbWeight=0.50 PerfScore 7.12
-G_M56268_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- xor edx, edx
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M56268_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- test edx, edx
- jne SHORT G_M56268_IG14
- ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M56268_IG11: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- lea edx, bword ptr [esi+0x04]
- ; byrRegs +[edx]
- call CORINFO_HELP_ASSIGN_REF_EDI
- ; gcrRegs -[edi]
- ; byrRegs -[edx]
- vmovdqu xmm0, xmmword ptr [ebp+0x10]
- vmovdqu xmmword ptr [esi+0x08], xmm0
- vmovdqu xmm0, xmmword ptr [ebp+0x18]
- vmovdqu xmmword ptr [esi+0x10], xmm0
- mov ecx, dword ptr [ebp+0x08]
- mov dword ptr [esi+0x20], ecx
- mov ecx, dword ptr [ebp+0x0C]
- mov dword ptr [esi+0x24], ecx
- ;; size=40 bbWeight=1 PerfScore 15.50
-G_M56268_IG12: ; bbWeight=1, epilog, nogc, extend
- pop ecx
- pop esi
- pop edi
- pop ebp
- ret 32
- ;; size=7 bbWeight=1 PerfScore 4.00
-G_M56268_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[edi]
+ jne SHORT G_M56268_IG05
mov ecx, 0xD1FFAB1E
mov edx, 11
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ ;; size=107 bbWeight=0 PerfScore 0.00
+G_M56268_IG05: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ vmovss xmm1, dword ptr [D1FFAB1EH] ; static handle
+ vxorps xmm2, xmm1, xmmword ptr [@RWD00]
vmovss xmm0, dword ptr [ebp-0x0C]
- jmp SHORT G_M56268_IG08
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M56268_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ vucomiss xmm0, xmm2
+ jbe SHORT G_M56268_IG06
+ xor ecx, ecx
+ vucomiss xmm1, xmm0
+ seta cl
+ jmp SHORT G_M56268_IG07
+ ;; size=38 bbWeight=0 PerfScore 0.00
+G_M56268_IG06: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ xor ecx, ecx
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M56268_IG07: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx
+ je SHORT G_M56268_IG09
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M56268_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
mov ecx, 0xD1FFAB1E ; SixLabors.ImageSharp.Processing.Processors.Transforms.DegenerateTransformException
call CORINFO_HELP_NEWSFAST
@@ -188,11 +156,33 @@ G_M56268_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[ecx]
call CORINFO_HELP_THROW
; gcrRegs -[ecx esi]
- int3
- ;; size=51 bbWeight=0 PerfScore 0.00
+ ;; size=50 bbWeight=0 PerfScore 0.00
+G_M56268_IG09: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[esi edi]
+ lea edx, bword ptr [esi+0x04]
+ ; byrRegs +[edx]
+ call CORINFO_HELP_ASSIGN_REF_EDI
+ ; gcrRegs -[edi]
+ ; byrRegs -[edx]
+ vmovdqu xmm0, xmmword ptr [ebp+0x10]
+ vmovdqu xmmword ptr [esi+0x08], xmm0
+ vmovdqu xmm0, xmmword ptr [ebp+0x18]
+ vmovdqu xmmword ptr [esi+0x10], xmm0
+ mov eax, dword ptr [ebp+0x08]
+ mov dword ptr [esi+0x20], eax
+ mov eax, dword ptr [ebp+0x0C]
+ mov dword ptr [esi+0x24], eax
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M56268_IG10: ; bbWeight=0, epilog, nogc, extend
+ pop ecx
+ pop esi
+ pop edi
+ pop ebp
+ ret 32
+ ;; size=7 bbWeight=0 PerfScore 0.00
RWD00 dq 8000000080000000h, 8000000080000000h
-; Total bytes of code 340, prolog size 9, PerfScore 83.00, instruction count 91, allocated bytes for code 340 (MethodHash=a5882433) for method SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor:.ctor(System.Numerics.Matrix3x2,SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler,SixLabors.ImageSharp.Size):this (FullOpts)
+; Total bytes of code 313, prolog size 9, PerfScore 0.00, instruction count 89, allocated bytes for code 313 (MethodHash=a5882433) for method SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor:.ctor(System.Numerics.Matrix3x2,SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler,SixLabors.ImageSharp.Size):this (FullOpts)
; ============================================================
@@ -104,7 +104,7 @@ G_M50035_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
G_M50035_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG15
+ je SHORT G_M50035_IG16
;; size=10 bbWeight=2 PerfScore 8.50
G_M50035_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebp-0x14]
@@ -115,24 +115,24 @@ G_M50035_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
G_M50035_IG09: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test edi, 2
mov edi, dword ptr [ebp-0x10]
- je SHORT G_M50035_IG14
+ je SHORT G_M50035_IG15
;; size=11 bbWeight=1 PerfScore 2.25
G_M50035_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea eax, [ebx-0x01]
mov edi, eax
cmp edi, edx
- jl SHORT G_M50035_IG13
+ jl SHORT G_M50035_IG14
mov dword ptr [ebp-0x14], edx
mov ecx, edi
or ecx, edx
- jl SHORT G_M50035_IG19
+ jl SHORT G_M50035_IG21
cmp ebx, edi
- jle SHORT G_M50035_IG19
+ jle SHORT G_M50035_IG21
;; size=22 bbWeight=0.50 PerfScore 2.88
G_M50035_IG11: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
movzx ebx, word ptr [esi+2*edi+0x08]
cmp ebx, 256
- jae SHORT G_M50035_IG16
+ jae SHORT G_M50035_IG17
;; size=13 bbWeight=3.96 PerfScore 12.87
G_M50035_IG12: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
xor ecx, ecx
@@ -140,45 +140,54 @@ G_M50035_IG12: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000
setb cl
call [<unknown method>]
test byte ptr [ebx+D1FFAB1EH], 128
- je SHORT G_M50035_IG23
- jmp SHORT G_M50035_IG17
+ je SHORT G_M50035_IG13
+ jmp SHORT G_M50035_IG18
;; size=28 bbWeight=1.98 PerfScore 20.79
-G_M50035_IG13: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], edx
- jmp SHORT G_M50035_IG23
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x14], edx
- jmp SHORT G_M50035_IG23
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M50035_IG15: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG13: ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, dword ptr [ebp-0x14]
+ jmp SHORT G_M50035_IG27
+ ;; size=5 bbWeight=0.99 PerfScore 2.97
+G_M50035_IG14: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, edx
+ jmp SHORT G_M50035_IG27
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M50035_IG15: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, edx
+ jmp SHORT G_M50035_IG27
+ ;; size=4 bbWeight=0.50 PerfScore 1.12
+G_M50035_IG16: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebp-0x14]
jmp SHORT G_M50035_IG09
;; size=5 bbWeight=1 PerfScore 3.00
-G_M50035_IG16: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG17: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, ebx
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG23
+ je SHORT G_M50035_IG20
;; size=12 bbWeight=1.98 PerfScore 8.91
-G_M50035_IG17: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG18: ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
dec edi
mov ebx, dword ptr [ebp-0x14]
cmp edi, ebx
jge SHORT G_M50035_IG11
;; size=8 bbWeight=3.96 PerfScore 9.90
-G_M50035_IG18: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M50035_IG23
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M50035_IG19: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG19: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, dword ptr [ebp-0x14]
+ jmp SHORT G_M50035_IG27
+ ;; size=5 bbWeight=1.98 PerfScore 5.94
+G_M50035_IG20: ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, dword ptr [ebp-0x14]
+ jmp SHORT G_M50035_IG27
+ ;; size=5 bbWeight=0.99 PerfScore 2.97
+G_M50035_IG21: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, ebx
- jae SHORT G_M50035_IG25
+ jae SHORT G_M50035_IG31
movzx ecx, word ptr [esi+2*edi+0x08]
mov eax, ecx
cmp eax, 256
- jae SHORT G_M50035_IG21
+ jae SHORT G_M50035_IG24
;; size=18 bbWeight=0.04 PerfScore 0.19
-G_M50035_IG20: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG22: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x1C], eax
xor ecx, ecx
cmp eax, 256
@@ -187,30 +196,36 @@ G_M50035_IG20: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000
mov eax, dword ptr [ebp-0x1C]
test byte ptr [eax+D1FFAB1EH], 128
je SHORT G_M50035_IG23
- jmp SHORT G_M50035_IG22
+ jmp SHORT G_M50035_IG25
;; size=33 bbWeight=0.02 PerfScore 0.25
-G_M50035_IG21: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG23: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, dword ptr [ebp-0x14]
+ jmp SHORT G_M50035_IG27
+ ;; size=5 bbWeight=0.01 PerfScore 0.03
+G_M50035_IG24: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, eax
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
test eax, eax
- je SHORT G_M50035_IG23
+ je SHORT G_M50035_IG30
;; size=12 bbWeight=0.02 PerfScore 0.09
-G_M50035_IG22: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG25: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
dec edi
mov edx, dword ptr [ebp-0x14]
cmp edi, edx
- mov dword ptr [ebp-0x14], edx
- jge SHORT G_M50035_IG19
- ;; size=11 bbWeight=0.04 PerfScore 0.14
-G_M50035_IG23: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jge SHORT G_M50035_IG29
+ ;; size=8 bbWeight=0.04 PerfScore 0.10
+G_M50035_IG26: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ebx, edx
+ ;; size=2 bbWeight=0.02 PerfScore 0.01
+G_M50035_IG27: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
push edi
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, dword ptr [ebp-0x14]
+ mov edx, ebx
call [System.String:CreateTrimmedString(int,int):System.String:this]
; gcrRegs -[ecx esi] +[eax]
- ;; size=12 bbWeight=1 PerfScore 5.25
-G_M50035_IG24: ; bbWeight=1, epilog, nogc, extend
+ ;; size=11 bbWeight=1 PerfScore 4.50
+G_M50035_IG28: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -218,12 +233,21 @@ G_M50035_IG24: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M50035_IG25: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax]
+G_M50035_IG29: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[esi]
+ mov dword ptr [ebp-0x14], edx
+ jmp SHORT G_M50035_IG21
+ ;; size=5 bbWeight=0.02 PerfScore 0.06
+G_M50035_IG30: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ebx, dword ptr [ebp-0x14]
+ jmp SHORT G_M50035_IG27
+ ;; size=5 bbWeight=0.01 PerfScore 0.03
+G_M50035_IG31: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[esi]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 323, prolog size 9, PerfScore 149.51, instruction count 113, allocated bytes for code 323 (MethodHash=878d3c8c) for method System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
+; Total bytes of code 347, prolog size 9, PerfScore 159.17, instruction count 124, allocated bytes for code 347 (MethodHash=878d3c8c) for method System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
; ============================================================
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 13 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 5, 3.50) ref -> edi this class-hnd single-def <System.Xml.NameTable>
+; V00 this [V00,T06] ( 5, 3.50) ref -> [ebp-0x14] this class-hnd single-def <System.Xml.NameTable>
; V01 arg1 [V01,T04] ( 7, 7 ) ref -> esi class-hnd single-def <System.String>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 loc1 [V03,T07] ( 4, 5.50) int -> [ebp-0x10] spill-single-def
@@ -25,8 +25,8 @@
;* V14 tmp9 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp10 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V16 tmp11 [V16,T03] ( 2, 4 ) ubyte -> eax "Inline return value spill temp"
-; V17 tmp12 [V17,T00] ( 6, 52 ) ref -> ecx class-hnd exact "Inlining Arg" <System.String>
-; V18 tmp13 [V18,T05] ( 2, 8 ) byref -> ebx "impAppendStmt"
+; V17 tmp12 [V17,T00] ( 6, 52 ) ref -> edx class-hnd exact "Inlining Arg" <System.String>
+; V18 tmp13 [V18,T05] ( 2, 8 ) byref -> edi "impAppendStmt"
;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -44,9 +44,9 @@
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x4)" P-INDEP
-; V36 tmp31 [V36,T08] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V37 tmp32 [V37,T10] ( 3, 3 ) int -> edx "index expr"
-; V38 cse0 [V38,T02] ( 4, 18.50) int -> [ebp-0x14] spill-single-def "CSE - aggressive"
+; V36 tmp31 [V36,T08] ( 3, 3 ) ref -> edx single-def "arr expr"
+; V37 tmp32 [V37,T10] ( 3, 3 ) int -> ecx "index expr"
+; V38 cse0 [V38,T02] ( 4, 18.50) int -> ebx "CSE - aggressive"
; V39 cse1 [V39,T09] ( 3, 3 ) byref -> [ebp-0x1C] spill-single-def "CSE - moderate"
;* V40 rat0 [V40 ] ( 0, 0 ) int -> zero-ref "field V13.lo (fldOffset=0x0)" P-INDEP
;* V41 rat1 [V41 ] ( 0, 0 ) int -> zero-ref "field V13.hi (fldOffset=0x4)" P-INDEP
@@ -67,12 +67,11 @@ G_M51747_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=13 bbWeight=1 PerfScore 5.00
G_M51747_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
- je G_M51747_IG16
+ je G_M51747_IG19
mov ebx, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], ebx
test ebx, ebx
jne SHORT G_M51747_IG05
- ;; size=18 bbWeight=1 PerfScore 5.50
+ ;; size=15 bbWeight=1 PerfScore 4.50
G_M51747_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi edi]
mov eax, 0xD1FFAB1E
@@ -101,73 +100,80 @@ G_M51747_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
call [<unknown method>]
; byrRegs -[eax ecx]
mov dword ptr [ebp-0x10], eax
- mov ecx, gword ptr [edi+0x04]
- ; gcrRegs +[ecx]
- mov edx, eax
- and edx, dword ptr [edi+0x0C]
- cmp edx, dword ptr [ecx+0x04]
- jae SHORT G_M51747_IG15
- mov edx, gword ptr [ecx+4*edx+0x08]
+ mov edx, gword ptr [edi+0x04]
; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M51747_IG11
- ;; size=52 bbWeight=0.50 PerfScore 10.38
-G_M51747_IG06: ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- cmp dword ptr [edx+0x0C], eax
- jne SHORT G_M51747_IG10
- ;; size=5 bbWeight=4 PerfScore 16.00
-G_M51747_IG07: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, gword ptr [edx+0x04]
+ mov gword ptr [ebp-0x14], edi
+ ; GC ptr vars +{V00}
+ mov ecx, eax
+ and ecx, dword ptr [edi+0x0C]
+ cmp ecx, dword ptr [edx+0x04]
+ jae SHORT G_M51747_IG18
+ mov ecx, gword ptr [edx+4*ecx+0x08]
; gcrRegs +[ecx]
- cmp byte ptr [ecx], cl
- cmp ecx, esi
- je SHORT G_M51747_IG13
- ;; size=9 bbWeight=2 PerfScore 12.50
-G_M51747_IG08: ; bbWeight=16, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [ecx+0x04], ebx
+ test ecx, ecx
+ mov edi, gword ptr [ebp-0x14]
+ je SHORT G_M51747_IG15
+ ;; size=58 bbWeight=0.50 PerfScore 11.38
+G_M51747_IG06: ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edx]
+ ; GC ptr vars -{V00}
+ cmp dword ptr [ecx+0x0C], eax
+ jne SHORT G_M51747_IG14
+ ;; size=5 bbWeight=4 PerfScore 16.00
+G_M51747_IG07: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x18], ecx
+ ; GC ptr vars +{V04}
+ mov edx, gword ptr [ecx+0x04]
+ ; gcrRegs +[edx]
+ cmp byte ptr [edx], dl
+ cmp edx, esi
+ je SHORT G_M51747_IG16
+ ;; size=12 bbWeight=2 PerfScore 14.50
+G_M51747_IG08: ; bbWeight=16, gcVars=00000202 {V04 V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ cmp dword ptr [edx+0x04], ebx
jne SHORT G_M51747_IG10
;; size=5 bbWeight=16 PerfScore 64.00
-G_M51747_IG09: ; bbWeight=2, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x18], edx
- ; GC ptr vars +{V04}
- lea ebx, bword ptr [ecx+0x08]
- ; byrRegs +[ebx]
- mov ecx, dword ptr [ecx+0x04]
- ; gcrRegs -[ecx]
- add ecx, ecx
- push ecx
- mov edx, bword ptr [ebp-0x1C]
+G_M51747_IG09: ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x14], edi
+ ; GC ptr vars +{V00}
+ lea edi, bword ptr [edx+0x08]
+ ; gcrRegs -[edi]
+ ; byrRegs +[edi]
+ mov edx, dword ptr [edx+0x04]
; gcrRegs -[edx]
+ add edx, edx
+ push edx
+ mov edx, bword ptr [ebp-0x1C]
; byrRegs +[edx]
- mov ecx, ebx
+ mov ecx, edi
; byrRegs +[ecx]
call [<unknown method>]
- ; byrRegs -[ecx edx ebx]
+ ; byrRegs -[ecx edx edi]
test eax, eax
- mov eax, dword ptr [ebp-0x10]
- mov edx, gword ptr [ebp-0x18]
- ; gcrRegs +[edx]
- mov ebx, dword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp-0x14]
+ ; gcrRegs +[edi]
+ jne SHORT G_M51747_IG16
+ ;; size=30 bbWeight=2 PerfScore 22.50
+G_M51747_IG10: ; bbWeight=4, gcVars=00000202 {V04 V39}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V00}
+ mov ecx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ecx]
+ mov ecx, gword ptr [ecx+0x08]
+ test ecx, ecx
jne SHORT G_M51747_IG13
- ;; size=36 bbWeight=2 PerfScore 26.50
-G_M51747_IG10: ; bbWeight=4, gcVars=00000200 {V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V04}
- mov edx, gword ptr [edx+0x08]
- test edx, edx
- jne SHORT G_M51747_IG06
- ;; size=7 bbWeight=4 PerfScore 13.00
+ ;; size=10 bbWeight=4 PerfScore 17.00
G_M51747_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx]
- ; GC ptr vars -{V39}
- push eax
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V04 V39}
+ push dword ptr [ebp-0x10]
mov ecx, edi
; gcrRegs +[ecx]
mov edx, esi
; gcrRegs +[edx]
call [System.Xml.NameTable:AddEntry(System.String,int):System.String:this]
; gcrRegs -[ecx edx esi edi] +[eax]
- ;; size=11 bbWeight=0.50 PerfScore 2.25
+ ;; size=13 bbWeight=0.50 PerfScore 2.25
G_M51747_IG12: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -176,12 +182,31 @@ G_M51747_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[edx]
- mov eax, gword ptr [edx+0x04]
+G_M51747_IG13: ; bbWeight=2, gcVars=00000200 {V39}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax] +[ecx esi edi]
+ ; GC ptr vars +{V09 V39}
+ mov eax, dword ptr [ebp-0x10]
+ jmp SHORT G_M51747_IG06
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG14: ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov gword ptr [ebp-0x18], ecx
+ ; GC ptr vars +{V04}
+ jmp SHORT G_M51747_IG10
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG15: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx]
+ ; GC ptr vars -{V04 V09 V39}
+ jmp SHORT G_M51747_IG11
+ ;; size=2 bbWeight=0.25 PerfScore 0.50
+G_M51747_IG16: ; bbWeight=0.50, gcVars=00000002 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[esi edi]
+ ; GC ptr vars +{V01 V04}
+ mov ecx, gword ptr [ebp-0x18]
+ ; gcrRegs +[ecx]
+ mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
- ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M51747_IG17: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -189,11 +214,12 @@ G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edx]
+G_M51747_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax ecx]
+ ; GC ptr vars -{V01 V04}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M51747_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51747_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 5
mov edx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -205,6 +231,6 @@ G_M51747_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 217, prolog size 13, PerfScore 161.50, instruction count 86, allocated bytes for code 217 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
+; Total bytes of code 237, prolog size 13, PerfScore 176.50, instruction count 93, allocated bytes for code 237 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
; ============================================================
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 12, 7 ) ref -> ecx class-hnd single-def <FSharp.Compiler.CheckExpressions+NewSlotsOK>
-; V01 arg1 [V01,T03] ( 4, 3 ) ref -> esi class-hnd single-def <FSharp.Compiler.Syntax.SynMemberDefn>
-; V02 loc0 [V02,T01] ( 15, 7.50) ref -> eax class-hnd <FSharp.Compiler.CheckExpressions+NewSlotsOK>
+; V00 arg0 [V00,T01] ( 12, 3 ) ref -> ecx class-hnd single-def <FSharp.Compiler.CheckExpressions+NewSlotsOK>
+; V01 arg1 [V01,T02] ( 4, 3 ) ref -> esi class-hnd single-def <FSharp.Compiler.Syntax.SynMemberDefn>
+; V02 loc0 [V02,T03] ( 15, 1.50) ref -> eax class-hnd <FSharp.Compiler.CheckExpressions+NewSlotsOK>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.ErrorLogger+Error>
; V04 tmp0 [V04,T05] ( 2, 0 ) ref -> edi class-hnd single-def "non-inline candidate call" <System.Tuple`2[int,System.String]>
; V05 tmp1 [V05,T04] ( 6, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.ErrorLogger+Error>
@@ -38,7 +38,7 @@
; V27 tmp23 [V27,T07] ( 2, 0 ) long -> [ebp-0x1C] do-not-enreg[H] hidden-struct-arg "field V06.code1 (fldOffset=0x0)" P-DEP
; V28 tmp24 [V28,T08] ( 2, 0 ) long -> [ebp-0x14] do-not-enreg[H] hidden-struct-arg "field V06.code2 (fldOffset=0x8)" P-DEP
; V29 tmp25 [V29,T06] ( 2, 0 ) ref -> ecx single-def "argument with side effect"
-; V30 rat0 [V30,T02] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; V30 rat0 [V30,T00] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 16
@@ -53,17 +53,17 @@ G_M36794_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, edx
; gcrRegs +[esi]
;; size=14 bbWeight=1 PerfScore 5.75
-G_M36794_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+G_M36794_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
mov eax, dword ptr [esi+0x04]
cmp eax, 10
- ja G_M36794_IG09
+ ja SHORT G_M36794_IG05
lea edx, [@RWD00]
mov edx, dword ptr [edx+4*eax]
lea edi, G_M36794_IG02
add edx, edi
jmp edx
- ;; size=31 bbWeight=1 PerfScore 9.00
+ ;; size=27 bbWeight=1 PerfScore 9.00
G_M36794_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[ecx esi]
lea esp, [ebp-0x0C]
@@ -79,65 +79,14 @@ G_M36794_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {e
; gcrRegs +[eax]
cmp byte ptr [ecx], cl
test eax, eax
- je SHORT G_M36794_IG09
+ je SHORT G_M36794_IG05
mov ecx, dword ptr [ecx+0x04]
; gcrRegs -[ecx]
cmp ecx, dword ptr [eax+0x04]
- jne SHORT G_M36794_IG09
- jmp SHORT G_M36794_IG03
- ;; size=21 bbWeight=0.50 PerfScore 7.12
-G_M36794_IG05: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax] +[ecx]
- mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
- cmp byte ptr [ecx], cl
- test eax, eax
- je SHORT G_M36794_IG09
- mov ecx, dword ptr [ecx+0x04]
- ; gcrRegs -[ecx]
- cmp ecx, dword ptr [eax+0x04]
- jne SHORT G_M36794_IG09
- jmp SHORT G_M36794_IG03
- ;; size=21 bbWeight=0.50 PerfScore 7.12
-G_M36794_IG06: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax] +[ecx]
- mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
- cmp byte ptr [ecx], cl
- test eax, eax
- je SHORT G_M36794_IG09
- mov ecx, dword ptr [ecx+0x04]
- ; gcrRegs -[ecx]
- cmp ecx, dword ptr [eax+0x04]
- jne SHORT G_M36794_IG09
- jmp SHORT G_M36794_IG03
- ;; size=21 bbWeight=0.50 PerfScore 7.12
-G_M36794_IG07: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax] +[ecx]
- mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
- cmp byte ptr [ecx], cl
- test eax, eax
- je SHORT G_M36794_IG09
- mov ecx, dword ptr [ecx+0x04]
- ; gcrRegs -[ecx]
- cmp ecx, dword ptr [eax+0x04]
- jne SHORT G_M36794_IG09
- jmp SHORT G_M36794_IG03
- ;; size=21 bbWeight=0.50 PerfScore 7.12
-G_M36794_IG08: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax] +[ecx]
- mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
- cmp byte ptr [ecx], cl
- test eax, eax
- je SHORT G_M36794_IG09
- mov edx, dword ptr [ecx+0x04]
- cmp edx, dword ptr [eax+0x04]
je SHORT G_M36794_IG03
;; size=19 bbWeight=0.50 PerfScore 6.12
-G_M36794_IG09: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax ecx]
+G_M36794_IG05: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
call [FSComp.SR:tcDeclarationElementNotPermittedInAugmentation():System.Tuple`2[int,System.String]]
; gcrRegs +[eax]
mov edi, eax
@@ -171,19 +120,70 @@ G_M36794_IG09: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[ecx edx ebx]
int3
;; size=85 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M36794_IG04 - G_M36794_IG02
+G_M36794_IG06: ; bbWeight=0, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax] +[ecx esi]
+ mov eax, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[eax]
+ cmp byte ptr [ecx], cl
+ test eax, eax
+ je SHORT G_M36794_IG05
+ mov ecx, dword ptr [ecx+0x04]
+ ; gcrRegs -[ecx]
+ cmp ecx, dword ptr [eax+0x04]
+ jne SHORT G_M36794_IG05
+ jmp G_M36794_IG03
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36794_IG07: ; bbWeight=0, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax] +[ecx]
+ mov eax, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[eax]
+ cmp byte ptr [ecx], cl
+ test eax, eax
+ je SHORT G_M36794_IG05
+ mov ecx, dword ptr [ecx+0x04]
+ ; gcrRegs -[ecx]
+ cmp ecx, dword ptr [eax+0x04]
+ jne SHORT G_M36794_IG05
+ jmp G_M36794_IG03
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36794_IG08: ; bbWeight=0, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax] +[ecx]
+ mov eax, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[eax]
+ cmp byte ptr [ecx], cl
+ test eax, eax
+ je G_M36794_IG05
+ mov ecx, dword ptr [ecx+0x04]
+ ; gcrRegs -[ecx]
+ cmp ecx, dword ptr [eax+0x04]
+ jne G_M36794_IG05
+ jmp G_M36794_IG03
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M36794_IG09: ; bbWeight=0, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax] +[ecx]
+ mov eax, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[eax]
+ cmp byte ptr [ecx], cl
+ test eax, eax
+ je G_M36794_IG05
+ mov edx, dword ptr [ecx+0x04]
+ cmp edx, dword ptr [eax+0x04]
+ jne G_M36794_IG05
+ jmp G_M36794_IG03
+ ;; size=32 bbWeight=0 PerfScore 0.00
+RWD00 dd G_M36794_IG06 - G_M36794_IG02
dd G_M36794_IG03 - G_M36794_IG02
- dd G_M36794_IG07 - G_M36794_IG02
+ dd G_M36794_IG09 - G_M36794_IG02
+ dd G_M36794_IG04 - G_M36794_IG02
dd G_M36794_IG08 - G_M36794_IG02
- dd G_M36794_IG06 - G_M36794_IG02
- dd G_M36794_IG09 - G_M36794_IG02
- dd G_M36794_IG03 - G_M36794_IG02
- dd G_M36794_IG09 - G_M36794_IG02
- dd G_M36794_IG09 - G_M36794_IG02
- dd G_M36794_IG09 - G_M36794_IG02
dd G_M36794_IG05 - G_M36794_IG02
+ dd G_M36794_IG03 - G_M36794_IG02
+ dd G_M36794_IG05 - G_M36794_IG02
+ dd G_M36794_IG05 - G_M36794_IG02
+ dd G_M36794_IG05 - G_M36794_IG02
+ dd G_M36794_IG07 - G_M36794_IG02
-; Total bytes of code 241, prolog size 12, PerfScore 52.88, instruction count 81, allocated bytes for code 241 (MethodHash=563d7045) for method FSharp.Compiler.CheckDeclarations:action@1-62(FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.Syntax.SynMemberDefn) (FullOpts)
+; Total bytes of code 265, prolog size 12, PerfScore 24.38, instruction count 81, allocated bytes for code 265 (MethodHash=563d7045) for method FSharp.Compiler.CheckDeclarations:action@1-62(FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.Syntax.SynMemberDefn) (FullOpts)
; ============================================================
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.windows.x86.checked.mch | 1,338 | 467 | 270 | 601 | -4,094 | +5,909 |
benchmarks.run_pgo.windows.x86.checked.mch | 7,194 | 3,932 | 1,043 | 2,219 | -25,349 | +10,703 |
benchmarks.run_tiered.windows.x86.checked.mch | 1,149 | 394 | 226 | 529 | -3,556 | +4,300 |
coreclr_tests.run.windows.x86.checked.mch | 24,143 | 17,083 | 1,836 | 5,224 | -100,981 | +19,746 |
libraries.crossgen2.windows.x86.checked.mch | 5,182 | 1,316 | 653 | 3,213 | -9,500 | +7,802 |
libraries.pmi.windows.x86.checked.mch | 10,890 | 3,590 | 1,979 | 5,321 | -28,974 | +21,435 |
libraries_tests.run.windows.x86.Release.mch | 31,259 | 12,371 | 7,402 | 11,486 | -137,336 | +77,696 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 18,964 | 5,046 | 2,513 | 11,405 | -48,601 | +34,701 |
realworld.run.windows.x86.checked.mch | 1,676 | 536 | 290 | 850 | -6,023 | +3,028 |
101,795 | 44,735 | 16,212 | 40,848 | -364,414 | +185,320 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.windows.x86.checked.mch | 24,466 | 4 | 24,462 | 0 (0.00%) | 22 (0.09%) |
benchmarks.run_pgo.windows.x86.checked.mch | 119,679 | 42,004 | 77,675 | 152 (0.13%) | 184 (0.15%) |
benchmarks.run_tiered.windows.x86.checked.mch | 47,885 | 28,726 | 19,159 | 0 (0.00%) | 22 (0.05%) |
coreclr_tests.run.windows.x86.checked.mch | 575,038 | 320,010 | 255,028 | 245 (0.04%) | 369 (0.06%) |
libraries.crossgen2.windows.x86.checked.mch | 241,868 | 15 | 241,853 | 0 (0.00%) | 59 (0.02%) |
libraries.pmi.windows.x86.checked.mch | 304,052 | 6 | 304,046 | 2 (0.00%) | 180 (0.06%) |
libraries_tests.run.windows.x86.Release.mch | 633,383 | 429,177 | 204,206 | 1,684 (0.26%) | 2,426 (0.38%) |
librariestestsnotieredcompilation.run.windows.x86.Release.mch | 315,613 | 21,872 | 293,741 | 7 (0.00%) | 142 (0.04%) |
realworld.run.windows.x86.checked.mch | 35,942 | 3 | 35,939 | 0 (0.00%) | 40 (0.11%) |
2,297,926 | 841,817 | 1,456,109 | 2,090 (0.09%) | 3,444 (0.15%) |
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: 7079626 (overridden on cmd)
Total bytes of diff: 7081441 (overridden on cmd)
Total bytes of delta: 1815 (0.03 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
264 : 12458.dasm (9.72 % of base)
256 : 24374.dasm (9.14 % of base)
203 : 16032.dasm (13.38 % of base)
153 : 2883.dasm (3.76 % of base)
127 : 7976.dasm (8.51 % of base)
125 : 14406.dasm (9.74 % of base)
125 : 15355.dasm (9.61 % of base)
124 : 14463.dasm (10.04 % of base)
122 : 4206.dasm (4.77 % of base)
91 : 15751.dasm (7.82 % of base)
86 : 22482.dasm (4.56 % of base)
84 : 4208.dasm (5.77 % of base)
73 : 17165.dasm (7.90 % of base)
72 : 9502.dasm (6.64 % of base)
72 : 14455.dasm (1.72 % of base)
69 : 15749.dasm (12.99 % of base)
68 : 3360.dasm (6.91 % of base)
67 : 15739.dasm (8.62 % of base)
67 : 1397.dasm (4.37 % of base)
67 : 14584.dasm (8.04 % of base)
Top file improvements (bytes):
-309 : 16147.dasm (-9.07 % of base)
-175 : 18493.dasm (-3.11 % of base)
-109 : 19145.dasm (-2.45 % of base)
-83 : 23890.dasm (-7.17 % of base)
-81 : 5387.dasm (-3.32 % of base)
-68 : 22794.dasm (-0.49 % of base)
-62 : 21664.dasm (-8.95 % of base)
-62 : 4831.dasm (-3.51 % of base)
-57 : 22356.dasm (-10.23 % of base)
-52 : 23181.dasm (-1.08 % of base)
-49 : 6608.dasm (-7.79 % of base)
-47 : 15870.dasm (-15.56 % of base)
-44 : 12901.dasm (-1.22 % of base)
-42 : 8136.dasm (-0.44 % of base)
-41 : 20010.dasm (-1.66 % of base)
-40 : 12898.dasm (-1.84 % of base)
-39 : 43.dasm (-5.72 % of base)
-38 : 2581.dasm (-1.22 % of base)
-38 : 8629.dasm (-0.46 % of base)
-34 : 4581.dasm (-1.55 % of base)
65 total files with Code Size differences (34 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
264 (9.72 % of base) : 12458.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
256 (9.14 % of base) : 24374.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
203 (13.38 % of base) : 16032.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
153 (3.76 % of base) : 2883.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.SyncReadWriteAdapter]:MoveNext():this (FullOpts)
127 (8.51 % of base) : 7976.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
125 (9.74 % of base) : 14406.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
125 (9.61 % of base) : 15355.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
124 (10.04 % of base) : 14463.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
122 (4.77 % of base) : 4206.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (FullOpts)
91 (7.82 % of base) : 15751.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
86 (4.56 % of base) : 22482.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
84 (5.77 % of base) : 4208.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
73 (7.90 % of base) : 17165.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (FullOpts)
72 (6.64 % of base) : 9502.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (FullOpts)
72 (1.72 % of base) : 14455.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (FullOpts)
69 (12.99 % of base) : 15749.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
68 (6.91 % of base) : 3360.dasm - System.Text.Json.Serialization.ReadBufferState+<ReadFromStreamAsync>d__11:MoveNext():this (FullOpts)
67 (4.37 % of base) : 1397.dasm - Newtonsoft.Json.Linq.JContainer:ReadContentFrom(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings):this (FullOpts)
67 (8.04 % of base) : 14584.dasm - System.Formats.Tar.TarWriter+<WriteFinalRecordsAsync>d__23:MoveNext():this (FullOpts)
67 (8.62 % of base) : 15739.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
Top method improvements (bytes):
-309 (-9.07 % of base) : 16147.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-175 (-3.11 % of base) : 18493.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-109 (-2.45 % of base) : 19145.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-83 (-7.17 % of base) : 23890.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-81 (-3.32 % of base) : 5387.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-68 (-0.49 % of base) : 22794.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
-62 (-3.51 % of base) : 4831.dasm - BenchmarksGame.KNucleotide_9:Bench(BenchmarksGame.NucleotideHelpers,ubyte):ubyte (FullOpts)
-62 (-8.95 % of base) : 21664.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-57 (-10.23 % of base) : 22356.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[int],System.Collections.Immutable.ImmutableList`1+Builder[int],int,int,ubyte):this (FullOpts)
-52 (-1.08 % of base) : 23181.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
-49 (-7.79 % of base) : 6608.dasm - System.IO.Pipelines.Pipe:PrepareFlushUnsynchronized(byref,byref,System.Threading.CancellationToken):this (FullOpts)
-47 (-15.56 % of base) : 15870.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
-44 (-1.22 % of base) : 12901.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)
-42 (-0.44 % of base) : 8136.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-41 (-1.66 % of base) : 20010.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
-40 (-1.84 % of base) : 12898.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
-39 (-5.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
-38 (-0.46 % of base) : 8629.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
-38 (-1.22 % of base) : 2581.dasm - System.Text.RegularExpressions.RegexNode:CanBeMadeAtomic(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte,ubyte):ubyte (FullOpts)
-34 (-1.55 % of base) : 4581.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
Top method regressions (percentages):
203 (13.38 % of base) : 16032.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
69 (12.99 % of base) : 15749.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
58 (10.60 % of base) : 16307.dasm - System.Threading.Tasks.ValueTaskPerfTest+<AwaitTcsAsValueTask>d__21:MoveNext():this (FullOpts)
124 (10.04 % of base) : 14463.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
125 (9.74 % of base) : 14406.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
264 (9.72 % of base) : 12458.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
125 (9.61 % of base) : 15355.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
20 (9.22 % of base) : 11914.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
20 (9.17 % of base) : 23426.dasm - Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (FullOpts)
256 (9.14 % of base) : 24374.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
12 (8.76 % of base) : 15027.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
67 (8.62 % of base) : 15739.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
127 (8.51 % of base) : 7976.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
12 (8.39 % of base) : 15028.dasm - System.MemoryExtensions:TrimEnd(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
67 (8.04 % of base) : 14584.dasm - System.Formats.Tar.TarWriter+<WriteFinalRecordsAsync>d__23:MoveNext():this (FullOpts)
73 (7.90 % of base) : 17165.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (FullOpts)
91 (7.82 % of base) : 15751.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
57 (7.62 % of base) : 15334.dasm - AssignRect:second_assignments(int[,],short[,]) (FullOpts)
60 (7.53 % of base) : 14716.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedTask_ConfigureAwait>d__9:MoveNext():this (FullOpts)
60 (7.53 % of base) : 15392.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedValueTaskSource_ConfigureAwait>d__11:MoveNext():this (FullOpts)
Top method improvements (percentages):
-47 (-15.56 % of base) : 15870.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
-57 (-10.23 % of base) : 22356.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[int],System.Collections.Immutable.ImmutableList`1+Builder[int],int,int,ubyte):this (FullOpts)
-309 (-9.07 % of base) : 16147.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-62 (-8.95 % of base) : 21664.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-16 (-7.96 % of base) : 13.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
-49 (-7.79 % of base) : 6608.dasm - System.IO.Pipelines.Pipe:PrepareFlushUnsynchronized(byref,byref,System.Threading.CancellationToken):this (FullOpts)
-16 (-7.41 % of base) : 17483.dasm - Microsoft.Extensions.Primitives.StringSegment:TrimStart():Microsoft.Extensions.Primitives.StringSegment:this (FullOpts)
-83 (-7.17 % of base) : 23890.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-22 (-6.03 % of base) : 16215.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(System.Diagnostics.Tracing.EventSource+EventMetadata):ubyte[]:this (FullOpts)
-39 (-5.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
-21 (-5.60 % of base) : 12426.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
-18 (-4.72 % of base) : 15174.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:BeginMethod(System.Runtime.Serialization.CodeGenerator,System.String,System.Type,ubyte) (FullOpts)
-18 (-4.72 % of base) : 12538.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:BeginMethod(System.Runtime.Serialization.CodeGenerator,System.String,System.Type,ubyte) (FullOpts)
-16 (-4.52 % of base) : 5739.dasm - Sigil.Impl.LinqAlternative:_Order[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],int](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],Sigil.Impl.SigilFunc`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]] (FullOpts)
-4 (-4.44 % of base) : 6927.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-18 (-4.31 % of base) : 2879.dasm - System.Net.Security.SslAuthenticationOptions:UpdateOptions(System.Net.Security.SslClientAuthenticationOptions):this (FullOpts)
-12 (-4.18 % of base) : 638.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-6 (-4.14 % of base) : 384.dasm - System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-29 (-3.90 % of base) : 2155.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (FullOpts)
-10 (-3.88 % of base) : 15645.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):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: 43693213 (overridden on cmd)
Total bytes of diff: 43678567 (overridden on cmd)
Total bytes of delta: -14646 (-0.03 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
135 : 52175.dasm (20.12 % of base)
128 : 82627.dasm (19.34 % of base)
112 : 52178.dasm (19.68 % of base)
112 : 52177.dasm (18.98 % of base)
98 : 35818.dasm (3.39 % of base)
95 : 109936.dasm (14.29 % of base)
95 : 62186.dasm (14.29 % of base)
95 : 66573.dasm (14.29 % of base)
95 : 70995.dasm (14.29 % of base)
95 : 64242.dasm (14.29 % of base)
88 : 62188.dasm (14.84 % of base)
88 : 66575.dasm (14.84 % of base)
88 : 69372.dasm (14.84 % of base)
88 : 88416.dasm (14.84 % of base)
88 : 109938.dasm (14.84 % of base)
88 : 64244.dasm (14.84 % of base)
88 : 64245.dasm (14.92 % of base)
88 : 70997.dasm (14.84 % of base)
86 : 119275.dasm (2.87 % of base)
86 : 96800.dasm (4.51 % of base)
Top file improvements (bytes):
-321 : 76876.dasm (-6.86 % of base)
-309 : 63064.dasm (-9.07 % of base)
-145 : 50513.dasm (-3.28 % of base)
-142 : 114.dasm (-8.75 % of base)
-119 : 115702.dasm (-1.12 % of base)
-118 : 111872.dasm (-9.46 % of base)
-118 : 115915.dasm (-9.46 % of base)
-118 : 114885.dasm (-9.46 % of base)
-117 : 101888.dasm (-1.07 % of base)
-117 : 104654.dasm (-2.38 % of base)
-106 : 109.dasm (-12.44 % of base)
-105 : 79793.dasm (-2.56 % of base)
-104 : 64561.dasm (-2.79 % of base)
-102 : 1904.dasm (-7.99 % of base)
-101 : 1585.dasm (-12.27 % of base)
-92 : 85973.dasm (-4.47 % of base)
-92 : 64631.dasm (-4.47 % of base)
-92 : 71455.dasm (-4.47 % of base)
-90 : 14420.dasm (-3.63 % of base)
-83 : 112354.dasm (-7.16 % of base)
71 total files with Code Size differences (41 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
135 (20.12 % of base) : 52175.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
128 (19.34 % of base) : 82627.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
112 (18.98 % of base) : 52177.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
112 (19.68 % of base) : 52178.dasm - System.Globalization.CompareInfo:NlsCompareString(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
98 (3.39 % of base) : 35818.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
95 (14.29 % of base) : 109936.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
95 (14.29 % of base) : 62186.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
95 (14.29 % of base) : 66573.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
95 (14.29 % of base) : 70995.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
95 (14.29 % of base) : 64242.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 62188.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 66575.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 69372.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 88416.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 109938.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 64244.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 70997.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.92 % of base) : 64245.dasm - System.Globalization.CompareInfo:NlsCompareString(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
86 (4.51 % of base) : 96800.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
86 (2.87 % of base) : 119275.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)
Top method improvements (bytes):
-321 (-6.86 % of base) : 76876.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:CheckValEscape(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,uint,uint,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier0-FullOpts)
-309 (-9.07 % of base) : 63064.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
-145 (-3.28 % of base) : 50513.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (Tier0-FullOpts)
-142 (-8.75 % of base) : 114.dasm - System.Text.Ascii:NarrowUtf16ToAscii(uint,uint,uint):uint (Tier0-FullOpts)
-119 (-1.12 % of base) : 115702.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (Tier0-FullOpts)
-118 (-9.46 % of base) : 111872.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
-118 (-9.46 % of base) : 115915.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
-118 (-9.46 % of base) : 114885.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
-117 (-1.07 % of base) : 101888.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (Tier0-FullOpts)
-117 (-2.38 % of base) : 104654.dasm - Jil.Deserialize.Methods:SkipEncodedStringWithLeadCharThunkReader(byref,int) (Tier0-FullOpts)
-106 (-12.44 % of base) : 109.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(uint,uint):uint (Tier0-FullOpts)
-105 (-2.56 % of base) : 79793.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-104 (-2.79 % of base) : 64561.dasm - Jil.Deserialize.Methods:_ReadEncodedStringWithCharArrayThunkReader(byref,byref):System.String (Tier0-FullOpts)
-102 (-7.99 % of base) : 1904.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (Tier0-FullOpts)
-101 (-12.27 % of base) : 1585.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (Tier0-FullOpts)
-92 (-4.47 % of base) : 85973.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-92 (-4.47 % of base) : 64631.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-92 (-4.47 % of base) : 71455.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-90 (-3.63 % of base) : 14420.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
-83 (-7.16 % of base) : 112354.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
Top method regressions (percentages):
135 (20.12 % of base) : 52175.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
112 (19.68 % of base) : 52178.dasm - System.Globalization.CompareInfo:NlsCompareString(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
128 (19.34 % of base) : 82627.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
112 (18.98 % of base) : 52177.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
70 (16.55 % of base) : 97964.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
55 (15.62 % of base) : 119030.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
88 (14.92 % of base) : 64245.dasm - System.Globalization.CompareInfo:NlsCompareString(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 62188.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 66575.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 69372.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 88416.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 109938.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 64244.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
88 (14.84 % of base) : 70997.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
51 (14.41 % of base) : 111359.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
95 (14.29 % of base) : 109936.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
95 (14.29 % of base) : 62186.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
95 (14.29 % of base) : 66573.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
95 (14.29 % of base) : 70995.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
95 (14.29 % of base) : 64242.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
Top method improvements (percentages):
-47 (-15.56 % of base) : 58826.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (Tier0-FullOpts)
-52 (-13.47 % of base) : 23140.dasm - System.Globalization.DateTimeFormatInfo:GetMergedPatterns(System.String[],System.String):System.String[] (Tier0-FullOpts)
-106 (-12.44 % of base) : 109.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(uint,uint):uint (Tier0-FullOpts)
-101 (-12.27 % of base) : 1585.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (Tier0-FullOpts)
-61 (-11.62 % of base) : 1804.dasm - System.Number+NumberBuffer:CheckConsistency():this (Tier0-FullOpts)
-4 (-10.81 % of base) : 49491.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-28 (-10.57 % of base) : 2935.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|223_0(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
-4 (-10.53 % of base) : 3162.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-10.53 % of base) : 13073.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-10.53 % of base) : 2586.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-10.53 % of base) : 3925.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-10.53 % of base) : 101743.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-10.53 % of base) : 12611.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-10.53 % of base) : 30440.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-10.53 % of base) : 88333.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-10.53 % of base) : 67519.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-10.53 % of base) : 67771.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-10.53 % of base) : 14735.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-4 (-10.53 % of base) : 56048.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-24 (-10.00 % of base) : 64941.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 9483002 (overridden on cmd)
Total bytes of diff: 9483746 (overridden on cmd)
Total bytes of delta: 744 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
264 : 25227.dasm (9.72 % of base)
256 : 47892.dasm (9.14 % of base)
203 : 30669.dasm (13.38 % of base)
150 : 5644.dasm (4.10 % of base)
127 : 8498.dasm (8.51 % of base)
122 : 11114.dasm (4.77 % of base)
91 : 29756.dasm (7.82 % of base)
86 : 44244.dasm (4.56 % of base)
84 : 11116.dasm (5.77 % of base)
73 : 32450.dasm (7.90 % of base)
72 : 20486.dasm (6.64 % of base)
72 : 28200.dasm (1.72 % of base)
68 : 8601.dasm (6.91 % of base)
67 : 4155.dasm (4.37 % of base)
67 : 29741.dasm (8.62 % of base)
58 : 11009.dasm (2.43 % of base)
58 : 31602.dasm (5.18 % of base)
57 : 29709.dasm (5.83 % of base)
57 : 29862.dasm (7.62 % of base)
51 : 17467.dasm (1.73 % of base)
Top file improvements (bytes):
-309 : 31012.dasm (-9.07 % of base)
-175 : 35058.dasm (-3.11 % of base)
-109 : 36743.dasm (-2.45 % of base)
-83 : 46542.dasm (-7.17 % of base)
-81 : 14038.dasm (-3.32 % of base)
-68 : 44776.dasm (-0.49 % of base)
-64 : 23515.dasm (-1.71 % of base)
-52 : 45162.dasm (-1.08 % of base)
-47 : 30569.dasm (-15.56 % of base)
-42 : 17937.dasm (-0.44 % of base)
-41 : 38581.dasm (-1.66 % of base)
-39 : 99.dasm (-5.72 % of base)
-38 : 19395.dasm (-0.46 % of base)
-38 : 13530.dasm (-1.22 % of base)
-33 : 45164.dasm (-0.43 % of base)
-33 : 23510.dasm (-1.49 % of base)
-32 : 30638.dasm (-2.04 % of base)
-31 : 34433.dasm (-3.03 % of base)
-30 : 13033.dasm (-1.16 % of base)
-29 : 9448.dasm (-3.90 % of base)
68 total files with Code Size differences (37 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
264 (9.72 % of base) : 25227.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
256 (9.14 % of base) : 47892.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)
203 (13.38 % of base) : 30669.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier0-FullOpts)
150 (4.10 % of base) : 5644.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier0-FullOpts)
127 (8.51 % of base) : 8498.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier0-FullOpts)
122 (4.77 % of base) : 11114.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (Tier0-FullOpts)
91 (7.82 % of base) : 29756.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (Tier0-FullOpts)
86 (4.56 % of base) : 44244.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
84 (5.77 % of base) : 11116.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (Tier0-FullOpts)
73 (7.90 % of base) : 32450.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier0-FullOpts)
72 (6.64 % of base) : 20486.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier0-FullOpts)
72 (1.72 % of base) : 28200.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (Tier0-FullOpts)
68 (6.91 % of base) : 8601.dasm - System.Text.Json.Serialization.ReadBufferState+<ReadFromStreamAsync>d__11:MoveNext():this (Tier0-FullOpts)
67 (4.37 % of base) : 4155.dasm - Newtonsoft.Json.Linq.JContainer:ReadContentFrom(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings):this (Tier0-FullOpts)
67 (8.62 % of base) : 29741.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (Tier0-FullOpts)
58 (5.18 % of base) : 31602.dasm - System.IO.Pipes.Tests.Perf_PipeTest+<ReadWriteAsync>d__8:MoveNext():this (Tier0-FullOpts)
58 (2.43 % of base) : 11009.dasm - System.Net.Sockets.SocketAsyncEventArgs+<<DnsConnectAsync>g__Core|112_0>d:MoveNext():this (Tier0-FullOpts)
57 (7.62 % of base) : 29862.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier0-FullOpts)
57 (5.83 % of base) : 29709.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsyncWithCancellationToken>d__9:MoveNext():this (Tier0-FullOpts)
51 (1.73 % of base) : 17467.dasm - System.IO.File+<WriteToFileAsync>d__110:MoveNext():this (Tier0-FullOpts)
Top method improvements (bytes):
-309 (-9.07 % of base) : 31012.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
-175 (-3.11 % of base) : 35058.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier0-FullOpts)
-109 (-2.45 % of base) : 36743.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
-83 (-7.17 % of base) : 46542.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
-81 (-3.32 % of base) : 14038.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
-68 (-0.49 % of base) : 44776.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
-64 (-1.71 % of base) : 23515.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (Tier0-FullOpts)
-52 (-1.08 % of base) : 45162.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
-47 (-15.56 % of base) : 30569.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (Tier0-FullOpts)
-42 (-0.44 % of base) : 17937.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
-41 (-1.66 % of base) : 38581.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (Tier0-FullOpts)
-39 (-5.72 % of base) : 99.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
-38 (-0.46 % of base) : 19395.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Tier0-FullOpts)
-38 (-1.22 % of base) : 13530.dasm - System.Text.RegularExpressions.RegexNode:CanBeMadeAtomic(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte,ubyte):ubyte (Tier0-FullOpts)
-33 (-0.43 % of base) : 45164.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
-33 (-1.49 % of base) : 23510.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
-32 (-2.04 % of base) : 30638.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int] (Tier0-FullOpts)
-31 (-3.03 % of base) : 34433.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (Tier0-FullOpts)
-30 (-1.16 % of base) : 13033.dasm - ProtoBuf.Meta.MetaType:BuildSerializer():ProtoBuf.Internal.Serializers.IProtoTypeSerializer:this (Tier0-FullOpts)
-29 (-1.44 % of base) : 8333.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:ImmutableDictionaryStringStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]):this (Tier0-FullOpts)
Top method regressions (percentages):
203 (13.38 % of base) : 30669.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier0-FullOpts)
264 (9.72 % of base) : 25227.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
20 (9.22 % of base) : 20919.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
20 (9.17 % of base) : 45554.dasm - Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (Tier0-FullOpts)
256 (9.14 % of base) : 47892.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)
67 (8.62 % of base) : 29741.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (Tier0-FullOpts)
127 (8.51 % of base) : 8498.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier0-FullOpts)
12 (8.45 % of base) : 28970.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
12 (8.00 % of base) : 28971.dasm - System.MemoryExtensions:TrimEnd(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
73 (7.90 % of base) : 32450.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier0-FullOpts)
91 (7.82 % of base) : 29756.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (Tier0-FullOpts)
4 (7.69 % of base) : 6725.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (Tier0-FullOpts)
57 (7.62 % of base) : 29862.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier0-FullOpts)
68 (6.91 % of base) : 8601.dasm - System.Text.Json.Serialization.ReadBufferState+<ReadFromStreamAsync>d__11:MoveNext():this (Tier0-FullOpts)
30 (6.82 % of base) : 47673.dasm - SciMark2.SparseCompRow:matmult(double[],double[],int[],int[],double[],int) (Tier0-FullOpts)
72 (6.64 % of base) : 20486.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier0-FullOpts)
39 (6.45 % of base) : 36372.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0-FullOpts)
57 (5.83 % of base) : 29709.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsyncWithCancellationToken>d__9:MoveNext():this (Tier0-FullOpts)
84 (5.77 % of base) : 11116.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (Tier0-FullOpts)
12 (5.61 % of base) : 19485.dasm - System.Reflection.Emit.RuntimeILGenerator:SortExceptions(System.Reflection.Emit.__ExceptionInfo[]) (Tier0-FullOpts)
Top method improvements (percentages):
-47 (-15.56 % of base) : 30569.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (Tier0-FullOpts)
-24 (-9.09 % of base) : 3697.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|223_0(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
-309 (-9.07 % of base) : 31012.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
-16 (-7.96 % of base) : 241.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
-16 (-7.41 % of base) : 33034.dasm - Microsoft.Extensions.Primitives.StringSegment:TrimStart():Microsoft.Extensions.Primitives.StringSegment:this (Tier0-FullOpts)
-83 (-7.17 % of base) : 46542.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
-22 (-6.03 % of base) : 31114.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(System.Diagnostics.Tracing.EventSource+EventMetadata):ubyte[]:this (Tier0-FullOpts)
-39 (-5.72 % of base) : 99.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
-21 (-5.60 % of base) : 25454.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (Tier0-FullOpts)
-6 (-4.72 % of base) : 7529.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (Tier1)
-18 (-4.72 % of base) : 29986.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:BeginMethod(System.Runtime.Serialization.CodeGenerator,System.String,System.Type,ubyte) (Tier0-FullOpts)
-18 (-4.72 % of base) : 24932.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:BeginMethod(System.Runtime.Serialization.CodeGenerator,System.String,System.Type,ubyte) (Tier0-FullOpts)
-16 (-4.52 % of base) : 15263.dasm - Sigil.Impl.LinqAlternative:_Order[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],int](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],Sigil.Impl.SigilFunc`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]] (Tier0-FullOpts)
-4 (-4.44 % of base) : 4884.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-12 (-4.18 % of base) : 2165.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
-6 (-4.14 % of base) : 1111.dasm - System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
-29 (-3.90 % of base) : 9448.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (Tier0-FullOpts)
-10 (-3.88 % of base) : 29664.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (Tier0-FullOpts)
-19 (-3.47 % of base) : 39213.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier0-FullOpts)
-10 (-3.46 % of base) : 32887.dasm - Benchstone.BenchF.LLoops:AllocArray[double](int,int,int):double[][][] (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: 308689527 (overridden on cmd)
Total bytes of diff: 308608292 (overridden on cmd)
Total bytes of delta: -81235 (-0.03 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
276 : 573408.dasm (3.28 % of base)
250 : 337239.dasm (10.74 % of base)
184 : 140865.dasm (11.73 % of base)
175 : 436946.dasm (11.52 % of base)
160 : 481875.dasm (2.10 % of base)
139 : 270512.dasm (8.74 % of base)
139 : 507846.dasm (8.74 % of base)
131 : 280842.dasm (7.24 % of base)
119 : 250924.dasm (7.12 % of base)
119 : 292777.dasm (7.12 % of base)
102 : 140903.dasm (7.19 % of base)
102 : 276165.dasm (7.41 % of base)
102 : 140960.dasm (7.19 % of base)
102 : 436976.dasm (7.42 % of base)
102 : 437021.dasm (7.42 % of base)
101 : 206621.dasm (5.55 % of base)
101 : 358998.dasm (5.55 % of base)
92 : 365160.dasm (5.50 % of base)
92 : 342972.dasm (5.50 % of base)
92 : 249148.dasm (5.50 % of base)
Top file improvements (bytes):
-309 : 234088.dasm (-9.07 % of base)
-309 : 481714.dasm (-9.07 % of base)
-175 : 477586.dasm (-3.11 % of base)
-142 : 340664.dasm (-8.75 % of base)
-136 : 370585.dasm (-4.99 % of base)
-136 : 225155.dasm (-2.42 % of base)
-121 : 431406.dasm (-1.71 % of base)
-121 : 431410.dasm (-1.71 % of base)
-114 : 196433.dasm (-4.43 % of base)
-114 : 369019.dasm (-13.18 % of base)
-114 : 573625.dasm (-13.18 % of base)
-109 : 478247.dasm (-2.45 % of base)
-109 : 561718.dasm (-12.72 % of base)
-109 : 343762.dasm (-12.69 % of base)
-106 : 340659.dasm (-12.44 % of base)
-105 : 256919.dasm (-5.77 % of base)
-97 : 227133.dasm (-2.12 % of base)
-88 : 162250.dasm (-7.24 % of base)
-88 : 162194.dasm (-7.24 % of base)
-88 : 162269.dasm (-7.24 % of base)
75 total files with Code Size differences (36 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
276 (3.28 % of base) : 573408.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
250 (10.74 % of base) : 337239.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Instrumented Tier1)
184 (11.73 % of base) : 140865.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Double2:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
175 (11.52 % of base) : 436946.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Double2:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
160 (2.10 % of base) : 481875.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
139 (8.74 % of base) : 507846.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
139 (8.74 % of base) : 270512.dasm - JitTest_array1_refany_il.Test:Main():int (Tier0-FullOpts)
131 (7.24 % of base) : 280842.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
119 (7.12 % of base) : 250924.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
119 (7.12 % of base) : 292777.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
102 (7.42 % of base) : 436976.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Int642:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
102 (7.19 % of base) : 140903.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Int642:ValidateResult(long[],long[],long[],System.String):this (Tier0-FullOpts)
102 (7.42 % of base) : 437021.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128UInt642:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
102 (7.19 % of base) : 140960.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128UInt642:ValidateResult(ulong[],ulong[],ulong[],System.String):this (Tier0-FullOpts)
102 (7.41 % of base) : 276165.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (Tier0-FullOpts)
101 (5.55 % of base) : 206621.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
101 (5.55 % of base) : 358998.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
92 (5.50 % of base) : 365160.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
92 (5.50 % of base) : 342972.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
92 (5.50 % of base) : 249148.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
Top method improvements (bytes):
-309 (-9.07 % of base) : 481714.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
-309 (-9.07 % of base) : 234088.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
-175 (-3.11 % of base) : 477586.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-142 (-8.75 % of base) : 340664.dasm - System.Text.Ascii:NarrowUtf16ToAscii(uint,uint,uint):uint (Tier0-FullOpts)
-136 (-4.99 % of base) : 370585.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
-136 (-2.42 % of base) : 225155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier0-FullOpts)
-121 (-1.71 % of base) : 431406.dasm - IntelHardwareIntrinsicTest._Avx512F.Program:UnpackHigh() (FullOpts)
-121 (-1.71 % of base) : 431410.dasm - IntelHardwareIntrinsicTest._Avx512F.Program:UnpackLow() (FullOpts)
-114 (-13.18 % of base) : 573625.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
-114 (-13.18 % of base) : 369019.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (Tier0-FullOpts)
-114 (-4.43 % of base) : 196433.dasm - System.Linq.Expressions.Expression:Property(System.Linq.Expressions.Expression,System.Reflection.PropertyInfo):System.Linq.Expressions.MemberExpression (Tier1)
-109 (-12.72 % of base) : 561718.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
-109 (-12.69 % of base) : 343762.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (Tier0-FullOpts)
-109 (-2.45 % of base) : 478247.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-106 (-12.44 % of base) : 340659.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(uint,uint):uint (Tier0-FullOpts)
-105 (-5.77 % of base) : 256919.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
-97 (-2.12 % of base) : 227133.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
-88 (-7.24 % of base) : 162194.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendInt324:ValidateResult(int[],int[],int[],System.String):this (Tier0-FullOpts)
-88 (-7.24 % of base) : 162250.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt322:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)
-88 (-7.24 % of base) : 162269.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt324:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)
Top method regressions (percentages):
32 (25.60 % of base) : 386723.dasm - testout1:Sub_Funclet_221():int (FullOpts)
30 (24.00 % of base) : 387140.dasm - testout1:Sub_Funclet_221():int (FullOpts)
10 (14.49 % of base) : 220020.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
51 (13.82 % of base) : 374401.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
51 (13.82 % of base) : 375591.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
51 (12.50 % of base) : 276621.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.NullableTypeDecoder:TransformType(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (Tier1)
40 (12.23 % of base) : 69470.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
184 (11.73 % of base) : 140865.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Double2:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
175 (11.52 % of base) : 436946.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Double2:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
40 (10.84 % of base) : 374348.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
250 (10.74 % of base) : 337239.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Instrumented Tier1)
14 (10.45 % of base) : 387067.dasm - testout1:Sub_Funclet_144():int (FullOpts)
14 (10.45 % of base) : 386650.dasm - testout1:Sub_Funclet_144():int (FullOpts)
12 (10.26 % of base) : 474555.dasm - CallAndIndir:H(int[],int,int,byref) (FullOpts)
12 (10.26 % of base) : 218392.dasm - CallAndIndir:H(int[],int,int,byref) (Tier0-FullOpts)
14 (9.79 % of base) : 386613.dasm - testout1:Sub_Funclet_107():int (FullOpts)
14 (9.79 % of base) : 386651.dasm - testout1:Sub_Funclet_145():int (FullOpts)
14 (9.79 % of base) : 386725.dasm - testout1:Sub_Funclet_223():int (FullOpts)
43 (9.77 % of base) : 231288.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:DoSignaturesMatch(Microsoft.CodeAnalysis.PEModule,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][]):ubyte (Tier1)
43 (9.77 % of base) : 277070.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:DoSignaturesMatch(Microsoft.CodeAnalysis.PEModule,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][]):ubyte (Tier1)
Top method improvements (percentages):
-23 (-16.91 % of base) : 194501.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Action`1[ubyte],System.Object) (FullOpts)
-23 (-16.43 % of base) : 238300.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-23 (-15.65 % of base) : 195941.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.DateTime,System.Object) (FullOpts)
-23 (-15.33 % of base) : 238297.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
-23 (-14.74 % of base) : 194300.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-23 (-13.77 % of base) : 238305.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
-114 (-13.18 % of base) : 573625.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
-114 (-13.18 % of base) : 369019.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (Tier0-FullOpts)
-109 (-12.72 % of base) : 561718.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
-109 (-12.69 % of base) : 343762.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (Tier0-FullOpts)
-106 (-12.44 % of base) : 340659.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(uint,uint):uint (Tier0-FullOpts)
-31 (-11.70 % of base) : 194196.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,System.Object) (FullOpts)
-31 (-11.70 % of base) : 194915.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,uint,System.Object) (FullOpts)
-29 (-11.55 % of base) : 185662.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
-29 (-11.55 % of base) : 225130.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
-29 (-11.55 % of base) : 133073.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
-29 (-11.55 % of base) : 236150.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
-29 (-11.55 % of base) : 111236.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
-29 (-11.55 % of base) : 43654.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
-29 (-11.55 % of base) : 82433.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 31589655 (overridden on cmd)
Total bytes of diff: 31587957 (overridden on cmd)
Total bytes of delta: -1698 (-0.01 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
197 : 39837.dasm (2.41 % of base)
154 : 82618.dasm (0.59 % of base)
129 : 11444.dasm (11.52 % of base)
118 : 11498.dasm (4.54 % of base)
109 : 11879.dasm (4.03 % of base)
107 : 11875.dasm (3.62 % of base)
105 : 79585.dasm (7.12 % of base)
104 : 2279.dasm (1.31 % of base)
103 : 10911.dasm (3.77 % of base)
91 : 10903.dasm (5.28 % of base)
88 : 11496.dasm (6.06 % of base)
87 : 10909.dasm (10.94 % of base)
87 : 11544.dasm (7.12 % of base)
86 : 17539.dasm (4.23 % of base)
84 : 37688.dasm (0.39 % of base)
80 : 11869.dasm (4.59 % of base)
76 : 15665.dasm (13.69 % of base)
75 : 11873.dasm (7.04 % of base)
75 : 41810.dasm (2.11 % of base)
74 : 181614.dasm (5.53 % of base)
Top file improvements (bytes):
-110 : 96372.dasm (-7.59 % of base)
-103 : 163192.dasm (-5.01 % of base)
-91 : 76106.dasm (-5.83 % of base)
-88 : 76799.dasm (-7.17 % of base)
-87 : 20955.dasm (-4.73 % of base)
-79 : 232100.dasm (-6.28 % of base)
-65 : 101904.dasm (-4.30 % of base)
-64 : 10135.dasm (-1.78 % of base)
-63 : 76472.dasm (-4.57 % of base)
-61 : 32096.dasm (-2.25 % of base)
-61 : 174215.dasm (-9.71 % of base)
-61 : 202722.dasm (-2.25 % of base)
-58 : 215583.dasm (-2.13 % of base)
-56 : 67307.dasm (-2.53 % of base)
-55 : 75976.dasm (-0.50 % of base)
-49 : 41628.dasm (-1.36 % of base)
-46 : 219172.dasm (-7.15 % of base)
-45 : 107236.dasm (-8.82 % of base)
-44 : 213225.dasm (-7.19 % of base)
-44 : 154028.dasm (-2.26 % of base)
67 total files with Code Size differences (34 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
197 (2.41 % of base) : 39837.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
154 (0.59 % of base) : 82618.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
129 (11.52 % of base) : 11444.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
118 (4.54 % of base) : 11498.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (FullOpts)
109 (4.03 % of base) : 11879.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (FullOpts)
107 (3.62 % of base) : 11875.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (FullOpts)
105 (7.12 % of base) : 79585.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
104 (1.31 % of base) : 2279.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
103 (3.77 % of base) : 10911.dasm - System.IO.BufferedStream+<ReadFromUnderlyingStreamAsync>d__48:MoveNext():this (FullOpts)
91 (5.28 % of base) : 10903.dasm - System.IO.BufferedStream+<CopyToAsyncCore>d__68:MoveNext():this (FullOpts)
88 (6.06 % of base) : 11496.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
87 (10.94 % of base) : 10909.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
87 (7.12 % of base) : 11544.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
86 (4.23 % of base) : 17539.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
84 (0.39 % of base) : 37688.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
80 (4.59 % of base) : 11869.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (FullOpts)
76 (13.69 % of base) : 15665.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
75 (2.11 % of base) : 41810.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteMultiDimensionalArrayForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
75 (7.04 % of base) : 11873.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<FlushAsyncInternal>d__55:MoveNext():this (FullOpts)
74 (5.53 % of base) : 181614.dasm - System.Formats.Asn1.AsnDecoder:ProcessConstructedBitString(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ubyte],System.Formats.Asn1.AsnDecoder+BitStringCopyAction,ubyte,byref,byref):int (FullOpts)
Top method improvements (bytes):
-110 (-7.59 % of base) : 96372.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-103 (-5.01 % of base) : 163192.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Compilation,System.Guid,System.Reflection.Metadata.Ecma335.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-91 (-5.83 % of base) : 76106.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindQueryOperatorCall(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.String,Microsoft.CodeAnalysis.VisualBasic.BoundMethodGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.Text.TextSpan,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-88 (-7.17 % of base) : 76799.dasm - Microsoft.CodeAnalysis.VisualBasic.StatementListBinder:BuildLocals():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol]:this (FullOpts)
-87 (-4.73 % of base) : 20955.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-79 (-6.28 % of base) : 232100.dasm - System.ComponentModel.MaskedTextProvider:TestChar(ushort,int,byref):ubyte:this (FullOpts)
-65 (-4.30 % of base) : 101904.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)
-64 (-1.78 % of base) : 10135.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)
-63 (-4.57 % of base) : 76472.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindInsideCrefAttributeValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
-61 (-9.71 % of base) : 174215.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)
-61 (-2.25 % of base) : 32096.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-61 (-2.25 % of base) : 202722.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-58 (-2.13 % of base) : 215583.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-56 (-2.53 % of base) : 67307.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:ReportDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.String,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,System.Nullable`1[ubyte],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
-55 (-0.50 % of base) : 75976.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
-49 (-1.36 % of base) : 41628.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BoundUnaryOperator):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-46 (-7.15 % of base) : 219172.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-45 (-8.82 % of base) : 107236.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
-44 (-7.19 % of base) : 213225.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-44 (-2.26 % of base) : 154028.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
Top method regressions (percentages):
76 (13.69 % of base) : 15665.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
129 (11.52 % of base) : 11444.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
87 (10.94 % of base) : 10909.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
71 (9.66 % of base) : 11451.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
12 (8.45 % of base) : 3296.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
59 (8.36 % of base) : 11615.dasm - System.IO.TextReader+<ReadBlockAsyncInternal>d__23:MoveNext():this (FullOpts)
52 (8.24 % of base) : 11748.dasm - System.IO.TextWriter+<<WriteLineAsync>g__WriteLineAsyncCore|66_0>d:MoveNext():this (FullOpts)
12 (7.95 % of base) : 3297.dasm - System.MemoryExtensions:TrimEnd(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
4 (7.84 % of base) : 40086.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
4 (7.69 % of base) : 19213.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
61 (7.57 % of base) : 79010.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
61 (7.40 % of base) : 11120.dasm - System.IO.File+<InternalReadAllBytesAsync>d__92:MoveNext():this (FullOpts)
87 (7.12 % of base) : 11544.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
105 (7.12 % of base) : 79585.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
75 (7.04 % of base) : 11873.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<FlushAsyncInternal>d__55:MoveNext():this (FullOpts)
15 (6.94 % of base) : 219495.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
15 (6.85 % of base) : 31190.dasm - System.Data.SqlTypes.SqlBinary:PerformCompareByte(ubyte[],ubyte[]):int (FullOpts)
15 (6.49 % of base) : 20759.dasm - System.Threading.Tasks.TaskFactory:CheckMultiContinuationTasksAndCopy(System.Threading.Tasks.Task[]):System.Threading.Tasks.Task[] (FullOpts)
43 (6.38 % of base) : 89840.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlNcName(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
88 (6.06 % of base) : 11496.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
Top method improvements (percentages):
-43 (-12.11 % of base) : 22428.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (FullOpts)
-39 (-10.43 % of base) : 17556.dasm - System.Diagnostics.Contracts.Contract:AssertMustUseRewriter(int,System.String) (FullOpts)
-61 (-9.71 % of base) : 174215.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)
-21 (-9.46 % of base) : 105329.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
-13 (-9.42 % of base) : 12380.dasm - System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.Diagnostics.Tracing.EventSource+EventSourcePrimitive[]):this (FullOpts)
-45 (-8.82 % of base) : 107236.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
-21 (-8.57 % of base) : 105330.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
-32 (-8.27 % of base) : 134215.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-32 (-8.27 % of base) : 159152.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-20 (-8.10 % of base) : 31643.dasm - System.Data.DataTable:FindMergeTarget(System.Data.DataRow,System.Data.DataKey,System.Data.Index):System.Data.DataRow:this (FullOpts)
-14 (-7.73 % of base) : 96143.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntheticBoundNodeFactory:Sequence(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol],Microsoft.CodeAnalysis.VisualBasic.BoundExpression[]):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-23 (-7.72 % of base) : 57387.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.BitVector,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]):ubyte (FullOpts)
-27 (-7.63 % of base) : 124.dasm - System.Array:SetValue(System.Object,long[]):this (FullOpts)
-35 (-7.61 % of base) : 216018.dasm - CommandLine.Text.HelpText:AddLine(System.Text.StringBuilder,System.String,int) (FullOpts)
-110 (-7.59 % of base) : 96372.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-19 (-7.25 % of base) : 102.dasm - System.Array:CreateInstance(System.Type,long[]):System.Array (FullOpts)
-44 (-7.19 % of base) : 213225.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-88 (-7.17 % of base) : 76799.dasm - Microsoft.CodeAnalysis.VisualBasic.StatementListBinder:BuildLocals():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol]:this (FullOpts)
-46 (-7.15 % of base) : 219172.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-37 (-6.67 % of base) : 83605.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.PEAssemblyBuilderBase:GetFilesCore(Microsoft.CodeAnalysis.Emit.EmitContext,byref):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFileReference]: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: 48705820 (overridden on cmd)
Total bytes of diff: 48698281 (overridden on cmd)
Total bytes of delta: -7539 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
284 : 194988.dasm (2.88 % of base)
193 : 199857.dasm (9.43 % of base)
174 : 161755.dasm (5.14 % of base)
174 : 113825.dasm (5.14 % of base)
156 : 266270.dasm (8.46 % of base)
155 : 13385.dasm (1.81 % of base)
152 : 195272.dasm (6.18 % of base)
135 : 79010.dasm (3.02 % of base)
134 : 270607.dasm (8.98 % of base)
132 : 86285.dasm (0.50 % of base)
130 : 181229.dasm (6.95 % of base)
120 : 284038.dasm (7.95 % of base)
118 : 189648.dasm (17.99 % of base)
111 : 292042.dasm (5.85 % of base)
101 : 297895.dasm (2.37 % of base)
100 : 195273.dasm (4.27 % of base)
100 : 275452.dasm (7.41 % of base)
99 : 267153.dasm (1.53 % of base)
96 : 181207.dasm (4.32 % of base)
95 : 266571.dasm (6.94 % of base)
Top file improvements (bytes):
-307 : 147560.dasm (-1.30 % of base)
-253 : 101415.dasm (-7.08 % of base)
-210 : 195741.dasm (-5.94 % of base)
-210 : 82259.dasm (-9.09 % of base)
-193 : 247790.dasm (-4.13 % of base)
-186 : 127292.dasm (-5.42 % of base)
-175 : 58770.dasm (-3.11 % of base)
-167 : 151949.dasm (-4.17 % of base)
-145 : 287150.dasm (-3.75 % of base)
-145 : 281240.dasm (-3.74 % of base)
-136 : 78993.dasm (-3.33 % of base)
-130 : 113861.dasm (-4.94 % of base)
-130 : 161791.dasm (-4.94 % of base)
-128 : 240483.dasm (-4.05 % of base)
-128 : 73239.dasm (-4.05 % of base)
-128 : 241888.dasm (-4.03 % of base)
-126 : 102555.dasm (-5.30 % of base)
-125 : 290412.dasm (-4.56 % of base)
-122 : 200015.dasm (-4.16 % of base)
-118 : 107920.dasm (-4.33 % of base)
75 total files with Code Size differences (39 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
284 (2.88 % of base) : 194988.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
193 (9.43 % of base) : 199857.dasm - Internal.Pgo.PgoProcessor:<Merge>g__MergeInSchemaElem|9_0[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[Internal.Pgo.PgoSchemaElem,Internal.Pgo.PgoSchemaElem],Internal.Pgo.PgoSchemaElem) (FullOpts)
174 (5.14 % of base) : 161755.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetSimilarity(byref,byref):int:this (FullOpts)
174 (5.14 % of base) : 113825.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetSimilarity(byref,byref):int:this (FullOpts)
156 (8.46 % of base) : 266270.dasm - System.Net.Http.MultipartContent+<SerializeToStreamAsyncCore>d__24:MoveNext():this (FullOpts)
155 (1.81 % of base) : 13385.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
152 (6.18 % of base) : 195272.dasm - Internal.Pgo.PgoProcessor:<Merge>g__MergeInSchemaElem|9_0[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[Internal.Pgo.PgoSchemaElem,Internal.Pgo.PgoSchemaElem],Internal.Pgo.PgoSchemaElem) (FullOpts)
135 (3.02 % of base) : 79010.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildBoundLambdaParameters(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,Microsoft.CodeAnalysis.VisualBasic.UnboundLambda+TargetSignature,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol]:this (FullOpts)
134 (8.98 % of base) : 270607.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
132 (0.50 % of base) : 86285.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
130 (6.95 % of base) : 181229.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
120 (7.95 % of base) : 284038.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
118 (17.99 % of base) : 189648.dasm - System.Xml.Xsl.XsltOld.RootAction:AddDecimalFormat(System.Xml.XmlQualifiedName,System.Xml.Xsl.Runtime.DecimalFormat):this (FullOpts)
111 (5.85 % of base) : 292042.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
101 (2.37 % of base) : 297895.dasm - System.Threading.Tasks.Dataflow.TransformManyBlock`2+<StoreOutputItemsNonReorderedWithIterationAsync>d__48[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)
100 (4.27 % of base) : 195273.dasm - Internal.Pgo.PgoProcessor:<Merge>g__MergeInSchemaElem|9_0[ubyte,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[Internal.Pgo.PgoSchemaElem,Internal.Pgo.PgoSchemaElem],Internal.Pgo.PgoSchemaElem) (FullOpts)
100 (7.41 % of base) : 275452.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__44:MoveNext():this (FullOpts)
99 (1.53 % of base) : 267153.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
96 (4.32 % of base) : 181207.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteDocTypeAsync>d__98:MoveNext():this (FullOpts)
95 (6.94 % of base) : 266571.dasm - System.Net.Http.HttpConnection+<SendRequestContentAsync>d__61:MoveNext():this (FullOpts)
Top method improvements (bytes):
-307 (-1.30 % of base) : 147560.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-253 (-7.08 % of base) : 101415.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:LateMakeArgumentArrayArgument(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-210 (-5.94 % of base) : 195741.dasm - ILCompiler.CallChainProfile:ReadCallChainAnalysisData(System.String):System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.Dictionary`2[System.String,int]]:this (FullOpts)
-210 (-9.09 % of base) : 82259.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSignatureComparer:DetailedParameterCompare(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,int,int):int (FullOpts)
-193 (-4.13 % of base) : 247790.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySite:GetBridgeheadServers():System.DirectoryServices.ActiveDirectory.ReadOnlyDirectoryServerCollection:this (FullOpts)
-186 (-5.42 % of base) : 127292.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceLog:CopyRawEvents(Microsoft.Diagnostics.Tracing.TraceEventDispatcher,FastSerialization.IStreamWriter):this (FullOpts)
-175 (-3.11 % of base) : 58770.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-167 (-4.17 % of base) : 151949.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
-145 (-3.75 % of base) : 287150.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[ubyte],byref) (FullOpts)
-145 (-3.74 % of base) : 281240.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[ubyte],byref) (FullOpts)
-136 (-3.33 % of base) : 78993.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
-130 (-4.94 % of base) : 113861.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-130 (-4.94 % of base) : 161791.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-128 (-4.05 % of base) : 240483.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-128 (-4.05 % of base) : 73239.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-128 (-4.03 % of base) : 241888.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-126 (-5.30 % of base) : 102555.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:DoGetSyntaxErrors(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.SyntaxNodeOrToken):System.Collections.ObjectModel.ReadOnlyCollection`1[Microsoft.CodeAnalysis.Diagnostic] (FullOpts)
-125 (-4.56 % of base) : 290412.dasm - System.Speech.Internal.SapiInterop.SPPHRASE:CreatePhraseFromWordUnits(System.Speech.Recognition.RecognizedWordUnit[],System.Globalization.CultureInfo,byref,byref):System.Speech.Internal.SapiInterop.ISpPhrase (FullOpts)
-122 (-4.16 % of base) : 200015.dasm - ILCompiler.Reflection.ReadyToRun.PEExportTable:.ctor(System.Reflection.PortableExecutable.PEReader):this (FullOpts)
-118 (-4.33 % of base) : 107920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)
Top method regressions (percentages):
118 (17.99 % of base) : 189648.dasm - System.Xml.Xsl.XsltOld.RootAction:AddDecimalFormat(System.Xml.XmlQualifiedName,System.Xml.Xsl.Runtime.DecimalFormat):this (FullOpts)
27 (14.29 % of base) : 145907.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+StructValue:TryGetValue(System.String,byref):ubyte:this (FullOpts)
69 (12.99 % of base) : 249896.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
67 (12.20 % of base) : 160406.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:EscapeName(System.Text.StringBuilder,System.String) (FullOpts)
67 (12.20 % of base) : 112458.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:EscapeName(System.Text.StringBuilder,System.String) (FullOpts)
92 (10.07 % of base) : 240882.dasm - System.Data.ProviderBase.DbConnectionFactory:GetConnectionPoolGroup(System.Data.Common.DbConnectionPoolKey,System.Data.ProviderBase.DbConnectionPoolGroupOptions,byref):System.Data.ProviderBase.DbConnectionPoolGroup:this (FullOpts)
39 (9.54 % of base) : 265266.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (FullOpts)
23 (9.47 % of base) : 268673.dasm - System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)
193 (9.43 % of base) : 199857.dasm - Internal.Pgo.PgoProcessor:<Merge>g__MergeInSchemaElem|9_0[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[Internal.Pgo.PgoSchemaElem,Internal.Pgo.PgoSchemaElem],Internal.Pgo.PgoSchemaElem) (FullOpts)
66 (9.22 % of base) : 240210.dasm - System.Data.ProviderBase.DbConnectionFactory:GetConnectionPoolGroup(System.Data.Common.DbConnectionPoolKey,System.Data.ProviderBase.DbConnectionPoolGroupOptions,byref):System.Data.ProviderBase.DbConnectionPoolGroup:this (FullOpts)
86 (9.19 % of base) : 266647.dasm - System.Net.Http.DecompressionHandler+DeflateDecompressedContent+ZLibOrDeflateStream+PeekFirstByteReadStream+<CopyToAsync>d__14:MoveNext():this (FullOpts)
134 (8.98 % of base) : 270607.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
156 (8.46 % of base) : 266270.dasm - System.Net.Http.MultipartContent+<SerializeToStreamAsyncCore>d__24:MoveNext():this (FullOpts)
63 (8.18 % of base) : 267139.dasm - System.Net.Http.HttpConnectionPool+<ConstructHttp11ConnectionAsync>d__108:MoveNext():this (FullOpts)
69 (8.18 % of base) : 266264.dasm - System.Net.Http.MultipartContent+ContentReadStream+<DisposeAsync>d__7:MoveNext():this (FullOpts)
11 (7.97 % of base) : 204854.dasm - Microsoft.Extensions.DependencyModel.Dependency:Equals(System.Object):ubyte:this (FullOpts)
11 (7.97 % of base) : 243128.dasm - System.Diagnostics.Metrics.StringSequence2:Equals(System.Object):ubyte:this (FullOpts)
120 (7.95 % of base) : 284038.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
70 (7.93 % of base) : 122334.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions+<SelectAsArrayAsync>d__13`2[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)
70 (7.93 % of base) : 170171.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions+<SelectAsArrayAsync>d__14`2[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)
Top method improvements (percentages):
-64 (-17.39 % of base) : 176463.dasm - System.Runtime.Serialization.SchemaImporter:ImportAnnotation(System.Xml.Schema.XmlSchemaAnnotation,System.Xml.XmlQualifiedName):System.Xml.XmlElement (FullOpts)
-64 (-17.39 % of base) : 279933.dasm - System.Runtime.Serialization.XsdDataContractImporter:ImportAnnotation(System.Xml.Schema.XmlSchemaAnnotation,System.Xml.XmlQualifiedName):System.Xml.XmlElement (FullOpts)
-36 (-13.43 % of base) : 187927.dasm - System.Xml.Schema.XmlSchemaInference:FindElementRef(System.Xml.Schema.XmlSchemaObjectCollection,System.String,System.String):System.Xml.Schema.XmlSchemaElement (FullOpts)
-34 (-12.98 % of base) : 181539.dasm - System.Xml.XmlNamedNodeMap:FindNodeOffset(System.String,System.String):int:this (FullOpts)
-24 (-12.97 % of base) : 282751.dasm - System.Security.Cryptography.Xml.Utils:HasNamespace(System.Xml.XmlElement,System.String,System.String):ubyte (FullOpts)
-113 (-12.67 % of base) : 213046.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
-41 (-12.06 % of base) : 184713.dasm - System.Xml.XmlAttributeCollection:FindNodeOffsetNS(System.Xml.XmlAttribute):int:this (FullOpts)
-37 (-11.38 % of base) : 184712.dasm - System.Xml.XmlAttributeCollection:get_ItemOf(System.String,System.String):System.Xml.XmlAttribute:this (FullOpts)
-22 (-10.38 % of base) : 207466.dasm - Microsoft.Extensions.Primitives.StringSegment:TrimStart():Microsoft.Extensions.Primitives.StringSegment:this (FullOpts)
-57 (-10.23 % of base) : 227935.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[ubyte]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[ubyte],System.Collections.Immutable.ImmutableList`1+Builder[ubyte],int,int,ubyte):this (FullOpts)
-30 (-9.74 % of base) : 187200.dasm - System.Xml.Schema.XmlSchemaSet:Schemas(System.String):System.Collections.ICollection:this (FullOpts)
-24 (-9.68 % of base) : 183326.dasm - System.Xml.XmlTextReaderImpl:.ctor(System.IO.Stream,int,System.Xml.XmlParserContext):this (FullOpts)
-25 (-9.62 % of base) : 104793.dasm - Microsoft.CodeAnalysis.Operations.VisualBasicOperationFactory:CreateBoundBadStatementOperation(Microsoft.CodeAnalysis.VisualBasic.BoundBadStatement):Microsoft.CodeAnalysis.Operations.IInvalidOperation:this (FullOpts)
-210 (-9.09 % of base) : 82259.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSignatureComparer:DetailedParameterCompare(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,int,int):int (FullOpts)
-87 (-8.97 % of base) : 183859.dasm - System.Xml.XmlWellFormedWriter:AddAttribute(System.String,System.String,System.String):this (FullOpts)
-62 (-8.95 % of base) : 227922.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-23 (-8.88 % of base) : 189584.dasm - System.Xml.Xsl.XsltOld.ReaderOutput:FindAttribute(System.String,System.String,byref):ubyte:this (FullOpts)
-19 (-8.88 % of base) : 275878.dasm - System.Xml.Linq.XNodeReader:GetNameInAttributeScope(System.String,System.Xml.Linq.XElement,byref,byref) (FullOpts)
-30 (-8.80 % of base) : 242580.dasm - System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:Sample(System.String,System.String,System.Diagnostics.DiagnosticSourceEventSource):int (FullOpts)
-45 (-8.51 % of base) : 290044.dasm - System.Speech.Internal.SrgsParser.XmlParser:ParseScript(System.Xml.XmlReader,System.Speech.Internal.SrgsParser.IGrammar):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: 185057062 (overridden on cmd)
Total bytes of diff: 184997422 (overridden on cmd)
Total bytes of delta: -59640 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
252 : 10210.dasm (10.96 % of base)
203 : 622337.dasm (1.80 % of base)
199 : 437163.dasm (1.82 % of base)
189 : 78780.dasm (2.63 % of base)
186 : 164034.dasm (6.17 % of base)
174 : 572153.dasm (1.61 % of base)
173 : 297938.dasm (2.70 % of base)
171 : 165103.dasm (5.69 % of base)
164 : 50533.dasm (3.05 % of base)
162 : 164718.dasm (5.55 % of base)
160 : 17008.dasm (1.95 % of base)
157 : 145604.dasm (1.67 % of base)
156 : 585942.dasm (2.76 % of base)
149 : 449833.dasm (1.40 % of base)
148 : 152035.dasm (4.11 % of base)
145 : 469724.dasm (14.09 % of base)
144 : 59951.dasm (1.41 % of base)
143 : 62674.dasm (3.36 % of base)
133 : 297640.dasm (5.88 % of base)
115 : 633848.dasm (1.02 % of base)
Top file improvements (bytes):
-370 : 155168.dasm (-5.14 % of base)
-363 : 154690.dasm (-14.88 % of base)
-333 : 169024.dasm (-1.41 % of base)
-315 : 125955.dasm (-11.15 % of base)
-277 : 146958.dasm (-11.77 % of base)
-277 : 450607.dasm (-11.76 % of base)
-274 : 327808.dasm (-11.66 % of base)
-265 : 133891.dasm (-11.32 % of base)
-265 : 437723.dasm (-11.32 % of base)
-265 : 574091.dasm (-11.32 % of base)
-265 : 238754.dasm (-11.32 % of base)
-265 : 371841.dasm (-11.32 % of base)
-265 : 375150.dasm (-11.32 % of base)
-265 : 300392.dasm (-11.32 % of base)
-265 : 621308.dasm (-11.32 % of base)
-265 : 358495.dasm (-11.32 % of base)
-265 : 490150.dasm (-11.32 % of base)
-262 : 156040.dasm (-2.47 % of base)
-257 : 170302.dasm (-10.92 % of base)
-256 : 66918.dasm (-6.58 % of base)
99 total files with Code Size differences (60 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
252 (10.96 % of base) : 10210.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Instrumented Tier1)
203 (1.80 % of base) : 622337.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
199 (1.82 % of base) : 437163.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
189 (2.63 % of base) : 78780.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:VisitCall(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.BoundNode):this (Tier1)
186 (6.17 % of base) : 164034.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
174 (1.61 % of base) : 572153.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:MatchCharacterClass(System.String,System.String,ubyte,System.Collections.Generic.HashSet`1[System.String],System.Collections.Generic.Dictionary`2[System.String,System.String[]]):System.String (Tier0-FullOpts)
173 (2.70 % of base) : 297938.dasm - System.IO.Pipelines.Tests.PipelineReaderWriterFacts+<ReaderShouldNotGetUnflushedBytesWithAppend>d__17:MoveNext():this (Tier0-FullOpts)
171 (5.69 % of base) : 165103.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
164 (3.05 % of base) : 50533.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:EarlyDecodeDeprecatedOrExperimentalOrObsoleteAttribute(byref,byref,byref,byref):ubyte (Tier1)
162 (5.55 % of base) : 164718.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
160 (1.95 % of base) : 17008.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
157 (1.67 % of base) : 145604.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
156 (2.76 % of base) : 585942.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:VisitCall(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.BoundNode):this (Tier1)
149 (1.40 % of base) : 449833.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
148 (4.11 % of base) : 152035.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
145 (14.09 % of base) : 469724.dasm - System.Tests.GCExtendedTests:AllocateArrayCheckPinning() (Tier0-FullOpts)
144 (1.41 % of base) : 59951.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
143 (3.36 % of base) : 62674.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
133 (5.88 % of base) : 297640.dasm - System.IO.Pipelines.Tests.PipePoolTests+<AdvanceToEndReturnsAllButOneBlockIfWritingBeforeAdvance>d__1:MoveNext():this (Tier0-FullOpts)
115 (1.02 % of base) : 633848.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
Top method improvements (bytes):
-370 (-5.14 % of base) : 155168.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:EarlyDecodeWellKnownAttribute(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData,Microsoft.CodeAnalysis.CSharp.BoundAttribute]:this (Tier1)
-363 (-14.88 % of base) : 154690.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__expandParamsArray|232_2(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref) (Tier0-FullOpts)
-333 (-1.41 % of base) : 169024.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-315 (-11.15 % of base) : 125955.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
-277 (-11.77 % of base) : 146958.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-277 (-11.76 % of base) : 450607.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-274 (-11.66 % of base) : 327808.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-265 (-11.32 % of base) : 133891.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-265 (-11.32 % of base) : 437723.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-265 (-11.32 % of base) : 574091.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-265 (-11.32 % of base) : 238754.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-265 (-11.32 % of base) : 371841.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-265 (-11.32 % of base) : 375150.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-265 (-11.32 % of base) : 300392.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-265 (-11.32 % of base) : 621308.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-265 (-11.32 % of base) : 358495.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-265 (-11.32 % of base) : 490150.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-262 (-2.47 % of base) : 156040.dasm - Microsoft.Extensions.Options.Generators.SymbolLoader:TryLoad(Microsoft.CodeAnalysis.Compilation,byref):ubyte (Tier1)
-257 (-10.92 % of base) : 170302.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-256 (-6.58 % of base) : 66918.dasm - Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory+RuntimeExportProvider:GetValueForImportElement(Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory+RuntimeExportProvider+RuntimePartLifecycleTracker,Microsoft.VisualStudio.Composition.RuntimeComposition+RuntimeImport,Microsoft.VisualStudio.Composition.RuntimeComposition+RuntimeExport,System.Func`3[System.Func`1[System.Object],System.Object,System.Object]):System.Object:this (Tier1)
Top method regressions (percentages):
145 (14.09 % of base) : 469724.dasm - System.Tests.GCExtendedTests:AllocateArrayCheckPinning() (Tier0-FullOpts)
42 (12.92 % of base) : 152889.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 114266.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 119681.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 64949.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 305687.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 351887.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 353961.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 381440.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 449687.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 618901.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 116323.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 133869.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 146947.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 184403.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 358439.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.92 % of base) : 631115.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
42 (12.73 % of base) : 288392.dasm - Interop+Kernel32:MoveFile(System.String,System.String,ubyte):ubyte (Tier1)
40 (12.50 % of base) : 307775.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
40 (12.23 % of base) : 212873.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
Top method improvements (percentages):
-40 (-21.74 % of base) : 262666.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
-23 (-20.91 % of base) : 86473.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-23 (-20.72 % of base) : 87314.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-23 (-20.72 % of base) : 86966.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
-23 (-20.72 % of base) : 86525.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-23 (-20.72 % of base) : 87082.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
-23 (-20.72 % of base) : 87070.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-22 (-20.18 % of base) : 261151.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-22 (-20.00 % of base) : 254970.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
-22 (-20.00 % of base) : 253510.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
-22 (-20.00 % of base) : 254530.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
-22 (-20.00 % of base) : 255623.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-22 (-20.00 % of base) : 253127.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-22 (-20.00 % of base) : 255624.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-22 (-20.00 % of base) : 255626.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-22 (-20.00 % of base) : 89418.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-22 (-19.82 % of base) : 89117.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-22 (-19.47 % of base) : 254688.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object) (FullOpts)
-22 (-19.30 % of base) : 256228.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object) (FullOpts)
-22 (-19.13 % of base) : 253073.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (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: 102009413 (overridden on cmd)
Total bytes of diff: 101995513 (overridden on cmd)
Total bytes of delta: -13900 (-0.01 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
268 : 304726.dasm (9.22 % of base)
173 : 133856.dasm (2.75 % of base)
173 : 299900.dasm (5.37 % of base)
171 : 277120.dasm (1.62 % of base)
164 : 305661.dasm (6.67 % of base)
164 : 305792.dasm (6.72 % of base)
164 : 305853.dasm (6.67 % of base)
160 : 10347.dasm (2.10 % of base)
139 : 21190.dasm (3.85 % of base)
133 : 133780.dasm (6.01 % of base)
130 : 177313.dasm (6.95 % of base)
125 : 305302.dasm (5.78 % of base)
124 : 224195.dasm (8.65 % of base)
120 : 162314.dasm (11.93 % of base)
119 : 134071.dasm (7.07 % of base)
119 : 136866.dasm (8.46 % of base)
117 : 133631.dasm (8.09 % of base)
116 : 23996.dasm (5.96 % of base)
115 : 272182.dasm (6.36 % of base)
111 : 267928.dasm (6.64 % of base)
Top file improvements (bytes):
-344 : 59928.dasm (-1.47 % of base)
-272 : 56097.dasm (-11.50 % of base)
-162 : 5750.dasm (-2.93 % of base)
-140 : 172120.dasm (-11.69 % of base)
-128 : 95573.dasm (-4.05 % of base)
-128 : 99484.dasm (-4.05 % of base)
-119 : 151622.dasm (-5.21 % of base)
-116 : 149618.dasm (-5.73 % of base)
-112 : 2990.dasm (-2.11 % of base)
-109 : 7397.dasm (-2.43 % of base)
-107 : 284213.dasm (-2.84 % of base)
-106 : 52833.dasm (-2.40 % of base)
-102 : 180825.dasm (-2.64 % of base)
-101 : 171938.dasm (-8.56 % of base)
-87 : 1983.dasm (-8.97 % of base)
-85 : 22698.dasm (-7.71 % of base)
-83 : 284303.dasm (-6.80 % of base)
-82 : 185009.dasm (-2.54 % of base)
-81 : 149923.dasm (-8.25 % of base)
-79 : 207570.dasm (-3.37 % of base)
76 total files with Code Size differences (40 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
268 (9.22 % of base) : 304726.dasm - System.Threading.Channels.Tests.ChannelTestBase+<ReadAllAsync_DualConcurrentEnumeration_AllItemsEnumerated>d__72:MoveNext():this (FullOpts)
173 (5.37 % of base) : 299900.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetSimilarity(byref,byref):int:this (FullOpts)
173 (2.75 % of base) : 133856.dasm - System.IO.Pipelines.Tests.PipelineReaderWriterFacts+<ReaderShouldNotGetUnflushedBytesWithAppend>d__17:MoveNext():this (FullOpts)
171 (1.62 % of base) : 277120.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:MatchCharacterClass(System.String,System.String,ubyte,System.Collections.Generic.HashSet`1[System.String],System.Collections.Generic.Dictionary`2[System.String,System.String[]]):System.String (FullOpts)
164 (6.72 % of base) : 305792.dasm - System.Threading.RateLimiting.Test.FixedWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
164 (6.67 % of base) : 305661.dasm - System.Threading.RateLimiting.Test.SlidingWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__8:MoveNext():this (FullOpts)
164 (6.67 % of base) : 305853.dasm - System.Threading.RateLimiting.Test.TokenBucketRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
160 (2.10 % of base) : 10347.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
139 (3.85 % of base) : 21190.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
133 (6.01 % of base) : 133780.dasm - System.IO.Pipelines.Tests.PipePoolTests+<AdvanceToEndReturnsAllButOneBlockIfWritingBeforeAdvance>d__1:MoveNext():this (FullOpts)
130 (6.95 % of base) : 177313.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
125 (5.78 % of base) : 305302.dasm - System.Threading.RateLimiting.Test.TokenBucketRateLimiterTests+<ReplenishWorksWithTicksOverInt32Max>d__43:MoveNext():this (FullOpts)
124 (8.65 % of base) : 224195.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
120 (11.93 % of base) : 162314.dasm - System.Net.StreamFramer+<WriteMessageAsync>d__10`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
119 (7.07 % of base) : 134071.dasm - System.IO.Pipelines.Tests.StreamPipeReaderReadAtLeastAsyncTests+<ReadAtLeastAsyncSegmentSizeLessThanMaxBufferSize>d__7:MoveNext():this (FullOpts)
119 (8.46 % of base) : 136866.dasm - System.IO.Tests.MemoryStreamTests+<DerivedMemoryStream_ReadWriteAsyncMemoryCalled_ReadWriteAsyncArrayUsed>d__8:MoveNext():this (FullOpts)
117 (8.09 % of base) : 133631.dasm - System.IO.Pipelines.Tests.PipeWriterTests+<WriteLargeDataBinary>d__9:MoveNext():this (FullOpts)
116 (5.96 % of base) : 23996.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+<>c__DisplayClass20_0+<<ProcessDocumentAsync>g__ProcessDocumentAsync|0>d:MoveNext():this (FullOpts)
115 (6.36 % of base) : 272182.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
111 (6.64 % of base) : 267928.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteStringInvalidCharacter(ushort,System.Text.Encodings.Web.JavaScriptEncoder):this (FullOpts)
Top method improvements (bytes):
-344 (-1.47 % of base) : 59928.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-272 (-11.50 % of base) : 56097.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__expandParamsArray|232_2(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref) (FullOpts)
-162 (-2.93 % of base) : 5750.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-140 (-11.69 % of base) : 172120.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithArrayPropertyHavingChoice:Write3_Item(System.String,System.String,SerializationTypes.TypeWithArrayPropertyHavingChoice,ubyte,ubyte):this (FullOpts)
-128 (-4.05 % of base) : 95573.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-128 (-4.05 % of base) : 99484.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-119 (-5.21 % of base) : 151622.dasm - System.Buffers.Binary.Tests.ReverseEndiannessUnitTests:ReverseEndianness_Span_AllElementsReversed[ushort](ushort[]):this (FullOpts)
-116 (-5.73 % of base) : 149618.dasm - System.Buffers.Tests.ArrayBufferWriterTests_String:WriteData(System.Buffers.IBufferWriter`1[System.String],int):this (FullOpts)
-112 (-2.11 % of base) : 2990.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:Create(Microsoft.VisualStudio.Composition.ComposableCatalog):Microsoft.VisualStudio.Composition.CompositionConfiguration (FullOpts)
-109 (-2.43 % of base) : 7397.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-107 (-2.84 % of base) : 284213.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3472_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-106 (-2.40 % of base) : 52833.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-102 (-2.64 % of base) : 180825.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestInvalid(System.String[],System.String,System.String[]):int:this (FullOpts)
-101 (-8.56 % of base) : 171938.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1:Write2_wrapper(System.Object[]):this (FullOpts)
-87 (-8.97 % of base) : 1983.dasm - System.Xml.XmlWellFormedWriter:AddAttribute(System.String,System.String,System.String):this (FullOpts)
-85 (-7.71 % of base) : 22698.dasm - System.Formats.Asn1.AsnWriter:PopTag(System.Formats.Asn1.Asn1Tag,int,ubyte):this (FullOpts)
-83 (-6.80 % of base) : 284303.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3511_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-82 (-2.54 % of base) : 185009.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetTypeCoreNoCache(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):System.Reflection.TypeLoading.RoDefinitionType:this (FullOpts)
-81 (-8.25 % of base) : 149923.dasm - System.Buffers.Tests.ArrayBufferWriterTests_Char:WriteData(System.Buffers.IBufferWriter`1[ushort],int):this (FullOpts)
-79 (-3.37 % of base) : 207570.dasm - System.Runtime.Serialization.SchemaExporter:ExportGenericInfo(System.Type,System.String,System.String):System.Xml.XmlElement:this (FullOpts)
Top method regressions (percentages):
69 (13.22 % of base) : 122324.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
70 (12.39 % of base) : 134376.dasm - System.IO.Pipelines.Tests.StreamPipeReaderTests+ThrowAfterZeroByteReadStream+<ReadAsync>d__4:MoveNext():this (FullOpts)
120 (11.93 % of base) : 162314.dasm - System.Net.StreamFramer+<WriteMessageAsync>d__10`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
39 (9.54 % of base) : 155085.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (FullOpts)
39 (9.54 % of base) : 156798.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (FullOpts)
58 (9.49 % of base) : 267257.dasm - System.Text.Json.Serialization.Tests.JsonSerializerWrapper+AsyncStreamSerializerWrapper+<DeserializeWrapper>d__16`1[System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[int]]]:MoveNext():this (FullOpts)
16 (9.47 % of base) : 70885.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
16 (9.47 % of base) : 70043.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
23 (9.47 % of base) : 158666.dasm - System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)
268 (9.22 % of base) : 304726.dasm - System.Threading.Channels.Tests.ChannelTestBase+<ReadAllAsync_DualConcurrentEnumeration_AllItemsEnumerated>d__72:MoveNext():this (FullOpts)
66 (9.22 % of base) : 99480.dasm - System.Data.ProviderBase.DbConnectionFactory:GetConnectionPoolGroup(System.Data.Common.DbConnectionPoolKey,System.Data.ProviderBase.DbConnectionPoolGroupOptions,byref):System.Data.ProviderBase.DbConnectionPoolGroup:this (FullOpts)
77 (9.17 % of base) : 10899.dasm - Microsoft.CodeAnalysis.SolutionCompilationState+CompilationAndGeneratorDriverTranslationAction+AddDocumentsAction+<TransformCompilationAsync>d__2:MoveNext():this (FullOpts)
124 (8.65 % of base) : 224195.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
80 (8.58 % of base) : 130990.dasm - System.IO.Tests.FileStream_Dispose+<<VerifyStrategyFinalization>g__EnsureFileStreamIsNotRooted|27_0>d:MoveNext():this (FullOpts)
119 (8.46 % of base) : 136866.dasm - System.IO.Tests.MemoryStreamTests+<DerivedMemoryStream_ReadWriteAsyncMemoryCalled_ReadWriteAsyncArrayUsed>d__8:MoveNext():this (FullOpts)
54 (8.37 % of base) : 13595.dasm - Microsoft.CodeAnalysis.Document+<GetAnalyzerConfigOptionsAsync>d__37:MoveNext():this (FullOpts)
86 (8.21 % of base) : 314335.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__43:MoveNext():this (FullOpts)
117 (8.09 % of base) : 133631.dasm - System.IO.Pipelines.Tests.PipeWriterTests+<WriteLargeDataBinary>d__9:MoveNext():this (FullOpts)
62 (8.00 % of base) : 304697.dasm - System.Threading.Channels.Tests.ChannelTestBase+<>c__DisplayClass26_0+<<ManyProducerConsumer_ConcurrentReadWrite_Success>b__0>d:MoveNext():this (FullOpts)
54 (7.95 % of base) : 252749.dasm - System.Text.Json.SourceGeneration.Tests.AsyncStreamSerializerWrapper+<DeserializeWrapper>d__9:MoveNext():this (FullOpts)
Top method improvements (percentages):
-40 (-21.74 % of base) : 106697.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
-22 (-20.18 % of base) : 26028.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-22 (-20.18 % of base) : 106500.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-22 (-20.18 % of base) : 109499.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
-22 (-20.00 % of base) : 109494.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
-22 (-20.00 % of base) : 108320.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
-22 (-20.00 % of base) : 29333.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-22 (-20.00 % of base) : 29058.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
-22 (-20.00 % of base) : 109496.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
-22 (-20.00 % of base) : 108355.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-22 (-20.00 % of base) : 26197.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-22 (-20.00 % of base) : 107952.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-22 (-20.00 % of base) : 29194.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
-22 (-20.00 % of base) : 29160.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-22 (-20.00 % of base) : 28287.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-23 (-19.83 % of base) : 106106.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-22 (-19.82 % of base) : 27436.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-22 (-19.47 % of base) : 115740.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object) (FullOpts)
-22 (-19.47 % of base) : 109491.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-22 (-19.30 % of base) : 108393.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (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: 11326284 (overridden on cmd)
Total bytes of diff: 11323289 (overridden on cmd)
Total bytes of delta: -2995 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
150 : 17176.dasm (4.10 % of base)
142 : 5009.dasm (2.32 % of base)
86 : 1620.dasm (4.38 % of base)
74 : 5262.dasm (6.94 % of base)
65 : 4739.dasm (1.60 % of base)
52 : 21525.dasm (4.84 % of base)
51 : 33388.dasm (11.83 % of base)
51 : 13884.dasm (2.46 % of base)
51 : 14577.dasm (1.74 % of base)
50 : 20537.dasm (2.61 % of base)
48 : 16978.dasm (1.33 % of base)
46 : 33655.dasm (4.66 % of base)
40 : 12227.dasm (1.69 % of base)
40 : 17057.dasm (0.64 % of base)
40 : 23302.dasm (1.37 % of base)
39 : 24391.dasm (2.91 % of base)
39 : 22190.dasm (6.45 % of base)
39 : 25868.dasm (6.45 % of base)
33 : 18354.dasm (0.47 % of base)
33 : 20286.dasm (1.95 % of base)
Top file improvements (bytes):
-363 : 8882.dasm (-3.80 % of base)
-203 : 21001.dasm (-3.64 % of base)
-135 : 15732.dasm (-1.86 % of base)
-123 : 7163.dasm (-1.48 % of base)
-109 : 22820.dasm (-2.45 % of base)
-97 : 16265.dasm (-1.41 % of base)
-83 : 6675.dasm (-7.17 % of base)
-76 : 34093.dasm (-1.72 % of base)
-76 : 15986.dasm (-3.25 % of base)
-72 : 13546.dasm (-0.28 % of base)
-68 : 23518.dasm (-5.03 % of base)
-62 : 27344.dasm (-8.95 % of base)
-54 : 2934.dasm (-0.67 % of base)
-53 : 21583.dasm (-1.12 % of base)
-47 : 25549.dasm (-1.75 % of base)
-47 : 35261.dasm (-3.76 % of base)
-43 : 14166.dasm (-11.11 % of base)
-42 : 31796.dasm (-0.44 % of base)
-41 : 28097.dasm (-1.72 % of base)
-41 : 26048.dasm (-2.74 % of base)
71 total files with Code Size differences (38 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
150 (4.10 % of base) : 17176.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
142 (2.32 % of base) : 5009.dasm - FSharp.Compiler.LexFilter:scanAhead@1017(FSharp.Compiler.LexFilter+LexFilterImpl,ubyte,Internal.Utilities.Text.Lexing.Position,Microsoft.FSharp.Core.FSharpRef`1[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.LexFilter+TokenTup,ubyte]]],int):ubyte (FullOpts)
86 (4.38 % of base) : 1620.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
74 (6.94 % of base) : 5262.dasm - FSharp.Compiler.LexFilter:|TyparsCloseOp|_|$cont@519(Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[ubyte,FSharp.Compiler.Parser+token][],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Parser+token]]] (FullOpts)
65 (1.60 % of base) : 4739.dasm - FSharp.Compiler.CompilerOptions:attempt@284(Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOptionBlock],Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Collections.FSharpList`1[System.String],System.String,System.String,System.String,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOption]):Microsoft.FSharp.Collections.FSharpList`1[System.String] (FullOpts)
52 (4.84 % of base) : 21525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAttributeData:<GetTargetAttributeSignatureIndex>g__matches|28_0(ubyte[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref):ubyte:this (FullOpts)
51 (1.74 % of base) : 14577.dasm - SixLabors.ImageSharp.Formats.Gif.LzwEncoder:Compress(SixLabors.ImageSharp.Memory.Buffer2D`1[ubyte],int,System.IO.Stream):this (FullOpts)
51 (11.83 % of base) : 33388.dasm - System.Management.Automation.Provider.NavigationCmdletProvider:MakePath(System.String,System.String,ubyte):System.String:this (FullOpts)
51 (2.46 % of base) : 13884.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
50 (2.61 % of base) : 20537.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
48 (1.33 % of base) : 16978.dasm - System.Net.Http.RedirectHandler+<SendAsync>d__4:MoveNext():this (FullOpts)
46 (4.66 % of base) : 33655.dasm - System.Management.Automation.Language.VariableAnalysis:AnalyzeImpl(System.Management.Automation.Language.IParameterMetadataProvider,ubyte,ubyte):System.Tuple`2[System.Type,System.Collections.Generic.Dictionary`2[System.String,int]]:this (FullOpts)
40 (1.37 % of base) : 23302.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolComplex:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
40 (0.64 % of base) : 17057.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
40 (1.69 % of base) : 12227.dasm - System.Text.UnicodeEncoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (FullOpts)
39 (2.91 % of base) : 24391.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
39 (6.45 % of base) : 22190.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
39 (6.45 % of base) : 25868.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
33 (1.95 % of base) : 20286.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveReferencedAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],int,Microsoft.CodeAnalysis.AssemblyIdentityComparer):Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceBinding[System.__Canon,System.__Canon] (FullOpts)
33 (0.47 % of base) : 18354.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
Top method improvements (bytes):
-363 (-3.80 % of base) : 8882.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-203 (-3.64 % of base) : 21001.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-135 (-1.86 % of base) : 15732.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainCore(Microsoft.ML.Runtime.IChannel,Microsoft.ML.Data.RoleMappedData,Microsoft.ML.Trainers.LinearModelParameters,int):System.__Canon:this (FullOpts)
-123 (-1.48 % of base) : 7163.dasm - FSharp.Compiler.Lexer:singleQuoteString(FSharp.Compiler.IO.ByteBuffer,FSharp.Compiler.Lexhelp+LexerStringFinisher,FSharp.Compiler.Text.Range,FSharp.Compiler.ParseHelpers+LexerStringKind,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
-109 (-2.45 % of base) : 22820.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-97 (-1.41 % of base) : 16265.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
-83 (-7.17 % of base) : 6675.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-76 (-3.25 % of base) : 15986.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-76 (-1.72 % of base) : 34093.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
-72 (-0.28 % of base) : 13546.dasm - FSharp.Compiler.CompilerDiagnostics:OutputExceptionR@597(System.Text.StringBuilder,ubyte,System.Text.StringBuilder,System.Exception) (FullOpts)
-68 (-5.03 % of base) : 23518.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEEventSymbol:GetAssociatedField(Roslyn.Utilities.MultiDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:this (FullOpts)
-62 (-8.95 % of base) : 27344.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
-54 (-0.67 % of base) : 2934.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
-53 (-1.12 % of base) : 21583.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-47 (-1.75 % of base) : 25549.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MethodIsCompatibleWithDelegateOrFunctionPointer(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-47 (-3.76 % of base) : 35261.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:ValidateManifestHash(System.Collections.Hashtable,System.String[],System.String,int):ubyte:this (FullOpts)
-43 (-11.11 % of base) : 14166.dasm - SixLabors.ImageSharp.Memory.MemoryGroupSpanCache:Create[SixLabors.ImageSharp.PixelFormats.Rgba32](System.Buffers.IMemoryOwner`1[SixLabors.ImageSharp.PixelFormats.Rgba32][]):SixLabors.ImageSharp.Memory.MemoryGroupSpanCache (FullOpts)
-42 (-0.44 % of base) : 31796.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-41 (-2.74 % of base) : 26048.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:ComputeBoundDecisionDagNodes(Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag,Microsoft.CodeAnalysis.CSharp.BoundLeafDecisionDagNode):this (FullOpts)
-41 (-1.72 % of base) : 28097.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
Top method regressions (percentages):
51 (11.83 % of base) : 33388.dasm - System.Management.Automation.Provider.NavigationCmdletProvider:MakePath(System.String,System.String,ubyte):System.String:this (FullOpts)
24 (9.96 % of base) : 9819.dasm - FSharp.Compiler.CheckDeclarations:action@1-62(FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.Syntax.SynMemberDefn) (FullOpts)
20 (9.22 % of base) : 1662.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
24 (7.43 % of base) : 4905.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
74 (6.94 % of base) : 5262.dasm - FSharp.Compiler.LexFilter:|TyparsCloseOp|_|$cont@519(Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[ubyte,FSharp.Compiler.Parser+token][],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Parser+token]]] (FullOpts)
39 (6.45 % of base) : 22190.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
39 (6.45 % of base) : 25868.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
12 (5.61 % of base) : 34305.dasm - System.Reflection.Emit.RuntimeILGenerator:SortExceptions(System.Reflection.Emit.__ExceptionInfo[]) (FullOpts)
4 (5.13 % of base) : 19722.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
52 (4.84 % of base) : 21525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAttributeData:<GetTargetAttributeSignatureIndex>g__matches|28_0(ubyte[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref):ubyte:this (FullOpts)
13 (4.76 % of base) : 29589.dasm - Microsoft.CodeAnalysis.CSharp.IteratorAndAsyncCaptureWalker:MarkLocalsUnassigned():this (FullOpts)
26 (4.67 % of base) : 35799.dasm - System.Management.Automation.AnalysisCacheData+<<QueueSerialization>b__11_0>d:MoveNext():this (FullOpts)
46 (4.66 % of base) : 33655.dasm - System.Management.Automation.Language.VariableAnalysis:AnalyzeImpl(System.Management.Automation.Language.IParameterMetadataProvider,ubyte,ubyte):System.Tuple`2[System.Type,System.Collections.Generic.Dictionary`2[System.String,int]]:this (FullOpts)
31 (4.61 % of base) : 30441.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:<GetFiles>g__getFiles|20_0(byref,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IFileReference]:this (FullOpts)
86 (4.38 % of base) : 1620.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
18 (4.27 % of base) : 20257.dasm - Microsoft.CodeAnalysis.PEAssembly:.ctor(Microsoft.CodeAnalysis.AssemblyMetadata,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (FullOpts)
150 (4.10 % of base) : 17176.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
20 (4.10 % of base) : 16568.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
10 (3.95 % of base) : 22562.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
8 (3.86 % of base) : 17587.dasm - Microsoft.ML.Data.SimpleFileHandle:.ctor(Microsoft.ML.Runtime.IExceptionContext,System.String,ubyte,ubyte):this (FullOpts)
Top method improvements (percentages):
-43 (-11.11 % of base) : 14166.dasm - SixLabors.ImageSharp.Memory.MemoryGroupSpanCache:Create[SixLabors.ImageSharp.PixelFormats.Rgba32](System.Buffers.IMemoryOwner`1[SixLabors.ImageSharp.PixelFormats.Rgba32][]):SixLabors.ImageSharp.Memory.MemoryGroupSpanCache (FullOpts)
-62 (-8.95 % of base) : 27344.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
-16 (-7.96 % of base) : 13.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
-27 (-7.94 % of base) : 14904.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor:.ctor(System.Numerics.Matrix3x2,SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler,SixLabors.ImageSharp.Size):this (FullOpts)
-38 (-7.35 % of base) : 6619.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
-29 (-7.18 % of base) : 32009.dasm - System.Management.Automation.AutomationEngine:.ctor(System.Management.Automation.Host.PSHost,System.Management.Automation.Runspaces.InitialSessionState):this (FullOpts)
-83 (-7.17 % of base) : 6675.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-37 (-6.04 % of base) : 19332.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanUnicodeEscape(ubyte,byref,byref):ushort:this (FullOpts)
-39 (-5.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
-6 (-5.45 % of base) : 13754.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
-19 (-5.38 % of base) : 23606.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEnumConstantSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-18 (-5.26 % of base) : 29971.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__findInitializer|106_0(System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)
-68 (-5.03 % of base) : 23518.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEEventSymbol:GetAssociatedField(Roslyn.Utilities.MultiDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:this (FullOpts)
-17 (-5.03 % of base) : 6772.dasm - Microsoft.FSharp.Collections.ArrayModule:Collect[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon[]):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][] (FullOpts)
-18 (-5.03 % of base) : 6763.dasm - FSharp.Compiler.NameResolution:AddTyconsByDemangledNameAndArity(FSharp.Compiler.NameResolution+BulkAdd,FSharp.Compiler.TypedTree+EntityRef[],Microsoft.FSharp.Collections.FSharpMap`2[FSharp.Compiler.Syntax.PrettyNaming+NameArityPair,FSharp.Compiler.TypedTree+EntityRef]):Microsoft.FSharp.Collections.FSharpMap`2[FSharp.Compiler.Syntax.PrettyNaming+NameArityPair,FSharp.Compiler.TypedTree+EntityRef] (FullOpts)
-7 (-4.86 % of base) : 32879.dasm - System.Management.Automation.PSCodeProperty:.ctor(System.String,System.Reflection.MethodInfo,System.Reflection.MethodInfo):this (FullOpts)
-19 (-4.79 % of base) : 23864.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsAccessibleViaInheritance(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):ubyte (FullOpts)
-24 (-4.75 % of base) : 29258.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap:WithConcatAlphaRename(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap:this (FullOpts)
-18 (-4.31 % of base) : 17172.dasm - System.Net.Security.SslAuthenticationOptions:UpdateOptions(System.Net.Security.SslClientAuthenticationOptions):this (FullOpts)
-3 (-4.29 % of base) : 32406.dasm - System.Management.Automation.DisplayEntry:.ctor(System.String,int):this (FullOpts)