Assembly Diffs
linux arm
Diffs are based on 2,270,268 contexts (836,977 MinOpts, 1,433,291 FullOpts).
MISSED contexts: 75,116 (3.20%)
Overall (-12 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| libraries_tests.run.linux.arm.Release.mch |
239,226,620 |
-12 |
FullOpts (-12 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| libraries_tests.run.linux.arm.Release.mch |
117,255,980 |
-12 |
Example diffs
libraries_tests.run.linux.arm.Release.mch
-8 (-0.72%) : 285032.dasm - System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.InvocationExpression (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; r11 based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1621
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1621
; 1 inlinees with PGO data; 23 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -13,23 +13,23 @@
; V01 arg1 [V01,T03] ( 5, 3 ) ref -> r6 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.Expression]>
; V03 loc1 [V03 ] ( 3, 0.06) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
-; V04 loc2 [V04,T17] ( 7, 0.08) ref -> r8 class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T17] ( 7, 0.08) ref -> r9 class-hnd single-def <System.Reflection.MethodInfo>
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 OutArgs [V06 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T05] ( 4, 4 ) ref -> r7 class-hnd single-def "dup spill" <System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]>
-; V08 tmp2 [V08,T01] ( 38, 6.75) ref -> r7
-; V09 tmp3 [V09,T19] ( 2, 0.08) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V07 tmp1 [V07,T05] ( 2, 4 ) ref -> r7 class-hnd single-def "dup spill" <System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]>
+; V08 tmp2 [V08,T01] ( 36, 6.75) ref -> r7
+; V09 tmp3 [V09,T19] ( 2, 0.08) ref -> r6 class-hnd single-def "impAppendStmt" <<unknown class>>
; V10 tmp4 [V10,T13] ( 5, 0.19) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.InvocationExpressionN>
; V11 tmp5 [V11,T23] ( 3, 0.05) ref -> r6 class-hnd "impAppendStmt" <System.__Canon>
; V12 tmp6 [V12,T24] ( 3, 0.05) ref -> r8 class-hnd "impAppendStmt" <System.__Canon>
; V13 tmp7 [V13,T25] ( 3, 0.05) ref -> r9 class-hnd "impAppendStmt" <System.__Canon>
; V14 tmp8 [V14,T26] ( 3, 0.05) ref -> r10 class-hnd "impAppendStmt" <System.__Canon>
-; V15 tmp9 [V15,T14] ( 3, 0.16) ref -> r9 class-hnd "impAppendStmt" <System.__Canon>
-; V16 tmp10 [V16,T15] ( 3, 0.16) ref -> r8 class-hnd "impAppendStmt" <System.__Canon>
+; V15 tmp9 [V15,T14] ( 3, 0.16) ref -> r6 class-hnd "impAppendStmt" <System.__Canon>
+; V16 tmp10 [V16,T15] ( 3, 0.16) ref -> r9 class-hnd "impAppendStmt" <System.__Canon>
; V17 tmp11 [V17,T16] ( 3, 0.16) ref -> r10 class-hnd "impAppendStmt" <System.__Canon>
-; V18 tmp12 [V18,T08] ( 3, 2.65) ref -> r8 class-hnd "impAppendStmt" <System.__Canon>
-; V19 tmp13 [V19,T09] ( 3, 2.65) ref -> r9 class-hnd "impAppendStmt" <System.__Canon>
-; V20 tmp14 [V20,T11] ( 3, 1.04) ref -> r8 class-hnd "impAppendStmt" <System.__Canon>
+; V18 tmp12 [V18,T08] ( 3, 2.65) ref -> r9 class-hnd "impAppendStmt" <System.__Canon>
+; V19 tmp13 [V19,T09] ( 3, 2.65) ref -> r10 class-hnd "impAppendStmt" <System.__Canon>
+; V20 tmp14 [V20,T11] ( 3, 1.04) ref -> r9 class-hnd "impAppendStmt" <System.__Canon>
; V21 tmp15 [V21,T07] ( 5, 2.67) int -> r0 "guarded devirt return temp"
;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]>
;* V23 tmp17 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]>
@@ -56,9 +56,9 @@
; V44 tmp38 [V44,T21] ( 4, 0.06) ref -> r3
; V45 tmp39 [V45,T04] ( 8, 4.00) ref -> r0 "Single return block return value"
; V46 tmp40 [V46,T28] ( 2, 0.02) ref -> r1 single-def "argument with side effect"
-; V47 cse0 [V47,T06] ( 6, 2.97) int -> r6 "CSE - aggressive"
-; V48 cse1 [V48,T22] ( 3, 0.06) ref -> r4 "CSE - conservative"
-; V49 rat0 [V49,T00] ( 6, 7 ) ref -> r7 "replacement local"
+; V47 cse0 [V47,T06] ( 6, 2.97) int -> r8 "CSE - aggressive"
+; V48 cse1 [V48,T22] ( 3, 0.06) ref -> r6 "CSE - conservative"
+; V49 rat0 [V49,T00] ( 5, 7 ) ref -> r7 "replacement local"
;
; Lcl frame size = 20
@@ -77,28 +77,21 @@ G_M57032_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
mov r7, r6
; gcrRegs +[r7]
cmp r7, 0
- beq SHORT G_M57032_IG04
+ bne SHORT G_M57032_IG10
;; size=6 bbWeight=1 PerfScore 3.00
-G_M57032_IG03: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r7]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r0, r3
- bne G_M57032_IG31
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M57032_IG04: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M57032_IG03: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
cmp r7, 0
- beq G_M57032_IG32
+ beq G_M57032_IG31
;; size=6 bbWeight=1 PerfScore 2.00
-G_M57032_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M57032_IG04: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]
- ldr r6, [r7]
+ ldr r8, [r7]
movw r0, 0xd1ff
movt r0, 0xd1ff
- cmp r6, r0
- bne G_M57032_IG15
+ cmp r8, r0
+ bne SHORT G_M57032_IG15
;; size=16 bbWeight=1 PerfScore 5.00
-G_M57032_IG06: ; bbWeight=0.96, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M57032_IG05: ; bbWeight=0.96, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
ldr r0, [r7+0x04]
; gcrRegs +[r0]
movw r4, 0xd1ff
@@ -107,27 +100,249 @@ G_M57032_IG06: ; bbWeight=0.96, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}
blx r3 // <unknown method>
; gcrRegs -[r0]
;; size=14 bbWeight=0.96 PerfScore 4.80
-G_M57032_IG07: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M57032_IG06: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
cmp r0, 3
- beq SHORT G_M57032_IG11
+ bne SHORT G_M57032_IG12
;; size=4 bbWeight=1 PerfScore 2.00
-G_M57032_IG08: ; bbWeight=0.34, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M57032_IG07: ; bbWeight=0.66, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r8, r0
+ bne G_M57032_IG27
+ ldr r0, [r7+0x04]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ movs r1, 0
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ mov r9, r0
+ ; gcrRegs +[r9]
+ ldr r0, [r7+0x04]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ movs r1, 1
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ mov r10, r0
+ ; gcrRegs +[r10]
+ ldr r0, [r7+0x04]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ movs r1, 2
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r7]
+ mov r3, r0
+ ; gcrRegs +[r3]
+ ;; size=68 bbWeight=0.66 PerfScore 16.56
+G_M57032_IG08: ; bbWeight=0.66, gcrefRegs=0628 {r3 r5 r9 r10}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ mov r0, r5
+ ; gcrRegs +[r0]
+ mov r1, r9
+ ; gcrRegs +[r1]
+ mov r2, r10
+ ; gcrRegs +[r2]
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ blx lr // System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.InvocationExpression
+ ; gcrRegs -[r1-r3 r5 r9-r10]
+ ;; size=20 bbWeight=0.66 PerfScore 4.64
+G_M57032_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ add sp, 20
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M57032_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0] +[r5-r7]
+ ldr r0, [r7]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne G_M57032_IG32
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M57032_IG11: ; bbWeight=0.23, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M57032_IG03
+ ;; size=2 bbWeight=0.23 PerfScore 0.23
+G_M57032_IG12: ; bbWeight=0.34, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6]
cmp r0, 5
- bhi G_M57032_IG18
+ bhi SHORT G_M57032_IG18
movw r3, LOW ADDRESS J_M57032_DS00
movt r3, HIGH ADDRESS J_M57032_DS00
J_M57032_DS00 LABEL DWORD
- DD G_M57032_IG20
DD G_M57032_IG25
- DD G_M57032_IG13
- DD G_M57032_IG11
- DD G_M57032_IG16
DD G_M57032_IG23
+ DD G_M57032_IG13
+ DD G_M57032_IG07
+ DD G_M57032_IG16
+ DD G_M57032_IG21
ldr pc, [r3+4*r0]
- ;; size=18 bbWeight=0.34 PerfScore 1.69
-G_M57032_IG09: ; bbWeight=0.02, gcrefRegs=0620 {r5 r9 r10}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7] +[r9-r10]
+ ;; size=16 bbWeight=0.34 PerfScore 1.69
+G_M57032_IG13: ; bbWeight=0.26, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r8, r0
+ bne G_M57032_IG26
+ ldr r0, [r7+0x04]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ movs r1, 0
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ mov r9, r0
+ ; gcrRegs +[r9]
+ ldr r0, [r7+0x04]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ movs r1, 1
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r7]
+ mov r2, r0
+ ; gcrRegs +[r2]
+ ;; size=50 bbWeight=0.26 PerfScore 4.70
+G_M57032_IG14: ; bbWeight=0.26, gcrefRegs=0224 {r2 r5 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ mov r0, r5
+ ; gcrRegs +[r0]
+ mov r1, r9
+ ; gcrRegs +[r1]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.InvocationExpression
+ ; gcrRegs -[r1-r2 r5 r9]
+ b SHORT G_M57032_IG09
+ ;; size=18 bbWeight=0.26 PerfScore 1.83
+G_M57032_IG15: ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r5 r7]
+ mov r0, r7
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ b SHORT G_M57032_IG06
+ ;; size=16 bbWeight=0.04 PerfScore 0.24
+G_M57032_IG16: ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r8, r0
+ bne G_M57032_IG28
+ ldr r0, [r7+0x04]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ movs r1, 0
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ mov r6, r0
+ ; gcrRegs +[r6]
...
-2 (-0.52%) : 509182.dasm - System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)
@@ -106,39 +106,22 @@ G_M12230_IG05: ; bbWeight=0.01, gcVars=00000000 {}, gcrefRegs=0010 {r4},
ldr r0, [sp+0x14] // [V03 loc2]
and r0, r0, 6
cmp r0, 0
- bne SHORT G_M12230_IG07
+ bne SHORT G_M12230_IG20
;; size=88 bbWeight=0.01 PerfScore 0.19
-G_M12230_IG06: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG06: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r5, 1
- b SHORT G_M12230_IG08
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG07: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r0, 6
- bhi SHORT G_M12230_IG08
- movw r3, LOW ADDRESS J_M12230_DS00
- movt r3, HIGH ADDRESS J_M12230_DS00
-
- J_M12230_DS00 LABEL DWORD
- DD G_M12230_IG06
- DD G_M12230_IG08
- DD G_M12230_IG27
- DD G_M12230_IG08
- DD G_M12230_IG21
- DD G_M12230_IG08
- DD G_M12230_IG22
- ldr pc, [r3+4*r0]
- ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M12230_IG08: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.01 PerfScore 0.01
+G_M12230_IG07: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movs r6, 2
ldr r0, [sp+0x14] // [V03 loc2]
and r7, r0, 0x700
cmp r7, 512
- bgt SHORT G_M12230_IG24
+ bgt SHORT G_M12230_IG23
cmp r7, 256
- bne SHORT G_M12230_IG23
+ bne SHORT G_M12230_IG26
movs r6, 1
;; size=22 bbWeight=0.01 PerfScore 0.05
-G_M12230_IG09: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG08: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -170,26 +153,26 @@ G_M12230_IG09: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r0, [sp+0x14] // [V03 loc2]
ands r0, r0, 64
cmp r0, 0
- bne SHORT G_M12230_IG10
+ bne SHORT G_M12230_IG09
movs r0, 0
- b SHORT G_M12230_IG11
+ b SHORT G_M12230_IG10
;; size=66 bbWeight=0.01 PerfScore 0.14
-G_M12230_IG10: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
+G_M12230_IG09: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG11: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG10: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
strb r0, [r7+0x14]
ldr r0, [sp+0x14] // [V03 loc2]
ands r0, r0, 1
cmp r0, 0
- bne SHORT G_M12230_IG12
+ bne SHORT G_M12230_IG11
movs r0, 0
- b SHORT G_M12230_IG13
+ b SHORT G_M12230_IG12
;; size=16 bbWeight=0.01 PerfScore 0.04
-G_M12230_IG12: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
+G_M12230_IG11: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG13: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG12: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
strb r0, [r7+0x15]
mov r0, r4
; gcrRegs +[r0]
@@ -199,94 +182,110 @@ G_M12230_IG13: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}
; gcrRegs -[r0 r4]
ands r0, r0, 128
cmp r0, 0
- bne SHORT G_M12230_IG14
+ bne SHORT G_M12230_IG13
movs r0, 0
- b SHORT G_M12230_IG15
+ b SHORT G_M12230_IG14
;; size=26 bbWeight=0.01 PerfScore 0.06
-G_M12230_IG14: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
+G_M12230_IG13: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG15: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG14: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
strb r0, [r7+0x17]
str r6, [r7+0x10]
ldr r0, [sp+0x14] // [V03 loc2]
and r0, r0, 48
cmp r0, 16
- beq SHORT G_M12230_IG16
+ beq SHORT G_M12230_IG15
movs r0, 0
- b SHORT G_M12230_IG17
+ b SHORT G_M12230_IG16
;; size=18 bbWeight=0.01 PerfScore 0.05
-G_M12230_IG16: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
+G_M12230_IG15: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG17: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG16: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
strb r0, [r7+0x16]
ldr r0, [sp+0x14] // [V03 loc2]
and r0, r0, 0x3000
cmp r0, 0x1000
- beq SHORT G_M12230_IG18
+ beq SHORT G_M12230_IG17
movs r0, 0
- b SHORT G_M12230_IG19
+ b SHORT G_M12230_IG18
;; size=18 bbWeight=0.01 PerfScore 0.04
-G_M12230_IG18: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
+G_M12230_IG17: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG19: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
+G_M12230_IG18: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
strb r0, [r7+0x18]
mov r0, r7
; gcrRegs +[r0]
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG20: ; bbWeight=0.01, epilog, nogc, extend
+G_M12230_IG19: ; bbWeight=0.01, epilog, nogc, extend
add sp, 32
pop {r4,r5,r6,r7,r11,pc}
;; size=6 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG21: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12230_IG20: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r7] +[r4]
+ cmp r0, 6
+ bhi SHORT G_M12230_IG07
+ movw r3, LOW ADDRESS J_M12230_DS00
+ movt r3, HIGH ADDRESS J_M12230_DS00
+
+ J_M12230_DS00 LABEL DWORD
+ DD G_M12230_IG06
+ DD G_M12230_IG07
+ DD G_M12230_IG27
+ DD G_M12230_IG07
+ DD G_M12230_IG21
+ DD G_M12230_IG07
+ DD G_M12230_IG22
+ ldr pc, [r3+4*r0]
+ ;; size=16 bbWeight=0.00 PerfScore 0.00
+G_M12230_IG21: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movs r5, 3
- b SHORT G_M12230_IG08
+ b SHORT G_M12230_IG07
;; size=4 bbWeight=0.00 PerfScore 0.00
G_M12230_IG22: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movs r5, 4
- b SHORT G_M12230_IG08
+ b SHORT G_M12230_IG07
;; size=4 bbWeight=0 PerfScore 0.00
G_M12230_IG23: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r7, 512
- bne SHORT G_M12230_IG09
- movs r6, 2
- b SHORT G_M12230_IG09
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M12230_IG24: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 768
- beq SHORT G_M12230_IG25
+ beq SHORT G_M12230_IG24
cmp r7, 0x400
- beq SHORT G_M12230_IG26
+ beq SHORT G_M12230_IG25
cmp r7, 0x500
- bne SHORT G_M12230_IG09
+ bne SHORT G_M12230_IG08
movs r6, 5
- b SHORT G_M12230_IG09
+ b SHORT G_M12230_IG08
;; size=22 bbWeight=0 PerfScore 0.00
-G_M12230_IG25: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG24: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movs r6, 3
- b SHORT G_M12230_IG09
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M12230_IG26: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movs r6, 4
- b SHORT G_M12230_IG09
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M12230_IG27: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movs r5, 2
b SHORT G_M12230_IG08
;; size=4 bbWeight=0 PerfScore 0.00
+G_M12230_IG25: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ movs r6, 4
+ b SHORT G_M12230_IG08
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M12230_IG26: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, 512
+ bne SHORT G_M12230_IG08
+ movs r6, 2
+ b SHORT G_M12230_IG08
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M12230_IG27: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ movs r5, 2
+ b SHORT G_M12230_IG07
+ ;; size=4 bbWeight=0 PerfScore 0.00
RWD00 dd G_M12230_IG06
- dd G_M12230_IG08
+ dd G_M12230_IG07
dd G_M12230_IG27
- dd G_M12230_IG08
+ dd G_M12230_IG07
dd G_M12230_IG21
- dd G_M12230_IG08
+ dd G_M12230_IG07
dd G_M12230_IG22
-; Total bytes of code 384, prolog size 18, PerfScore 15.62, instruction count 148, allocated bytes for code 384 (MethodHash=fe43d039) for method System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)
+; Total bytes of code 382, prolog size 18, PerfScore 15.62, instruction count 147, allocated bytes for code 382 (MethodHash=fe43d039) for method System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)
; ============================================================
Unwind Info:
@@ -298,7 +297,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 192 (0x000c0) Actual length = 384 (0x000180)
+ Function Length : 191 (0x000bf) Actual length = 382 (0x00017e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-6 (-0.28%) : 79572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; r11 based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1142
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1142
; 6 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -43,7 +43,7 @@
; V31 tmp23 [V31,T11] ( 3, 1.14) ref -> r1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V32 tmp24 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V33 tmp25 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.NameSyntax>
-; V34 tmp26 [V34,T15] ( 3, 0.89) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V34 tmp26 [V34,T15] ( 3, 0.89) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V35 tmp27 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V36 tmp28 [V36,T06] ( 2, 1.78) ref -> r3 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V37 tmp29 [V37,T09] ( 4, 1.42) ref -> r3
@@ -69,7 +69,7 @@
; V57 tmp49 [V57,T50] ( 2, 0 ) ref -> r7 single-def "argument with side effect"
; V58 tmp50 [V58,T33] ( 3, 0 ) ref -> r0 single-def "argument with side effect"
; V59 tmp51 [V59,T08] ( 4, 1.42) int -> r7 "fgMakeTemp is creating a new local variable"
-; V60 tmp52 [V60,T04] ( 4, 3.44) int -> r8 "fgMakeTemp is creating a new local variable"
+; V60 tmp52 [V60,T04] ( 4, 3.44) int -> r7 "fgMakeTemp is creating a new local variable"
; V61 cse0 [V61,T17] ( 3, 0.65) int -> r3 "CSE - conservative"
; V62 rat0 [V62,T34] ( 3, 0 ) int -> r10 "ReplaceWithLclVar is creating a new local variable"
;
@@ -87,7 +87,7 @@ G_M18455_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r3, [r4+0x08]
; gcrRegs +[r3]
cmp r3, 0
- beq G_M18455_IG35
+ beq G_M18455_IG24
;; size=8 bbWeight=1 PerfScore 3.00
G_M18455_IG03: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz
ldrh r6, [r3+0x08]
@@ -99,18 +99,18 @@ G_M18455_IG04: ; bbWeight=0.70, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r3]
movw r0, 0xd1ff
cmp r6, r0
- bls G_M18455_IG31
+ bls G_M18455_IG30
;; size=10 bbWeight=0.70 PerfScore 2.10
G_M18455_IG05: ; bbWeight=0.65, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
cmp r6, r0
- bls G_M18455_IG43
+ bls G_M18455_IG42
movw r0, 0xd1ff
sxth r0, r0
- add r8, r6, r0
- cmp r8, 0
- bne G_M18455_IG29
- ;; size=28 bbWeight=0.65 PerfScore 5.21
+ adds r7, r6, r0
+ cmp r7, 0
+ bne G_M18455_IG22
+ ;; size=24 bbWeight=0.65 PerfScore 5.21
G_M18455_IG06: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
@@ -121,7 +121,7 @@ G_M18455_IG06: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- beq G_M18455_IG64
+ beq G_M18455_IG63
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -131,7 +131,7 @@ G_M18455_IG06: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18455_IG58
+ bne G_M18455_IG57
mov r0, r4
; gcrRegs +[r0]
mov r1, r5
@@ -142,7 +142,7 @@ G_M18455_IG06: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18455_IG61
+ bne G_M18455_IG60
;; size=62 bbWeight=0.44 PerfScore 9.77
G_M18455_IG07: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
@@ -155,7 +155,7 @@ G_M18455_IG07: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18455_IG62
+ bne G_M18455_IG61
mov r0, r4
; gcrRegs +[r0]
movs r1, 1
@@ -164,24 +164,24 @@ G_M18455_IG07: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- mov r9, r0
- ; gcrRegs +[r9]
+ mov r8, r0
+ ; gcrRegs +[r8]
ldr r3, [r4+0x08]
; gcrRegs +[r3]
cmp r3, 0
- beq G_M18455_IG28
- ;; size=48 bbWeight=0.44 PerfScore 7.99
-G_M18455_IG08: ; bbWeight=0.44, gcrefRegs=0218 {r3 r4 r9}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M18455_IG26
+ ;; size=46 bbWeight=0.44 PerfScore 7.99
+G_M18455_IG08: ; bbWeight=0.44, gcrefRegs=0118 {r3 r4 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
ldrh r0, [r3+0x08]
movw r3, 0xd1ff
; gcrRegs -[r3]
cmp r0, r3
- beq SHORT G_M18455_IG18
- ;; size=10 bbWeight=0.44 PerfScore 1.78
-G_M18455_IG09: ; bbWeight=0.39, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref
+ beq G_M18455_IG28
+ ;; size=12 bbWeight=0.44 PerfScore 1.78
+G_M18455_IG09: ; bbWeight=0.39, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
- mov r0, r9
+ mov r0, r8
; gcrRegs +[r0]
;; size=2 bbWeight=0.39 PerfScore 0.39
G_M18455_IG10: ; bbWeight=0.39, epilog, nogc, extend
@@ -189,93 +189,36 @@ G_M18455_IG10: ; bbWeight=0.39, epilog, nogc, extend
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.39 PerfScore 0.78
G_M18455_IG11: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0 r9] +[r4]
+ ; gcrRegs -[r0 r8] +[r4]
movw r0, 0xd1ff
cmp r6, r0
- bls SHORT G_M18455_IG15
- ;; size=8 bbWeight=0.30 PerfScore 0.90
+ bls G_M18455_IG35
+ ;; size=10 bbWeight=0.30 PerfScore 0.90
G_M18455_IG12: ; bbWeight=0.29, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
cmp r6, r0
- bhi G_M18455_IG39
+ bhi G_M18455_IG38
;; size=10 bbWeight=0.29 PerfScore 0.88
G_M18455_IG13: ; bbWeight=0.29, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
sub r7, r6, 0x2080
cmp r7, 0
- beq G_M18455_IG33
- ;; size=10 bbWeight=0.29 PerfScore 0.87
-G_M18455_IG14: ; bbWeight=0.07, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M18455_IG36
- ;; size=2 bbWeight=0.07 PerfScore 0.07
-G_M18455_IG15: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- cmp r6, r0
- bhi G_M18455_IG87
- movw r0, 0xd1ff
- cmp r6, r0
- bne G_M18455_IG85
- mov r0, r4
- ; gcrRegs +[r0]
- mov r1, r5
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
- bne G_M18455_IG76
- ;; size=42 bbWeight=0.01 PerfScore 0.09
-G_M18455_IG16: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ bne SHORT G_M18455_IG27
+ ;; size=8 bbWeight=0.29 PerfScore 0.87
+G_M18455_IG14: ; bbWeight=0.22, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
- ;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M18455_IG17: ; bbWeight=0.01, epilog, nogc, extend
+ ;; size=12 bbWeight=0.22 PerfScore 0.89
+G_M18455_IG15: ; bbWeight=0.22, epilog, nogc, extend
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- bx r3 // <unknown method>
+ bx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeOfExpression():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeOfExpressionSyntax:this
; gcr arg pop 0
- ;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M18455_IG18: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0] +[r9]
- mov r0, r4
- ; gcrRegs +[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:get_CurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this
- ; gcr arg pop 0
- mov r5, r0
- ; gcrRegs +[r5]
- mov r0, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:MoveToNextToken():this
+ ;; size=8 bbWeight=0.22 PerfScore 0.67
+G_M18455_IG16: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
- ; gcr arg pop 0
- mov r0, r4
- ; gcrRegs +[r0]
- mov r3, r5
- ; gcrRegs +[r3]
- mov r2, r9
- ; gcrRegs +[r2]
- movs r1, 1
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr r12, [lr]
- ;; size=50 bbWeight=0.05 PerfScore 0.98
-G_M18455_IG19: ; bbWeight=0.05, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- bx r12 // <unknown method>
- ; gcr arg pop 0
- ;; size=8 bbWeight=0.05 PerfScore 0.16
-G_M18455_IG20: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0 r2-r3 r5 r9]
ldr r7, [r4+0xAC]
; gcrRegs +[r7]
mov r0, r6
@@ -288,47 +231,18 @@ G_M18455_IG20: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=001
ldr r9, [r4+0x08]
; gcrRegs +[r9]
cmp r9, 0
- beq SHORT G_M18455_IG23
- ;; size=30 bbWeight=0.25 PerfScore 2.53
-G_M18455_IG21: ; bbWeight=0.25, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref, isz
+ beq G_M18455_IG32
+ ;; size=32 bbWeight=0.25 PerfScore 2.53
+G_M18455_IG17: ; bbWeight=0.25, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08]
; gcrRegs +[r0]
ldr r3, [r0]
...
+4 (+0.30%) : 725582.dasm - System.Xml.XmlWellFormedWriter:WriteEndAttribute():this (Tier1)
@@ -91,11 +91,11 @@ G_M47580_IG03: ; bbWeight=1.01, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M47580_IG24
+ bne G_M47580_IG27
ldrb r3, [r6+0x64]
cmp r3, 0
- bne SHORT G_M47580_IG09
- ;; size=26 bbWeight=1.01 PerfScore 9.08
+ bne G_M47580_IG26
+ ;; size=28 bbWeight=1.01 PerfScore 9.08
G_M47580_IG04: ; bbWeight=1.01, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz
ldr r3, [r6+0x1C]
; gcrRegs +[r3]
@@ -104,7 +104,7 @@ G_M47580_IG04: ; bbWeight=1.01, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}
str r1, [r6+0x34]
ldr r1, [r3+0x04]
cmp r2, r1
- bhs SHORT G_M47580_IG08
+ bhs SHORT G_M47580_IG09
adds r3, 8
; gcrRegs -[r3]
; byrRegs +[r3]
@@ -123,8 +123,8 @@ G_M47580_IG05: ; bbWeight=0.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
ldr r3, [r0+0x40]
subs r4, r3, 1
cmp r4, 0
- bne SHORT G_M47580_IG11
- ;; size=8 bbWeight=0.00 PerfScore 0.00
+ bne G_M47580_IG13
+ ;; size=10 bbWeight=0.00 PerfScore 0.00
G_M47580_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
ldr r0, [sp+0x04] // [V00 this]
@@ -150,48 +150,127 @@ G_M47580_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r0 r2]
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M47580_IG10
+ bne SHORT G_M47580_IG12
;; size=48 bbWeight=0.00 PerfScore 0.02
-G_M47580_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M47580_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r5]
movs r0, 0
ldr r3, [sp+0x04] // [V00 this]
; gcrRegs +[r3]
str r0, [r3+0x2C]
- b SHORT G_M47580_IG27
- ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M47580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
+ ;; size=6 bbWeight=0.00 PerfScore 0.00
+G_M47580_IG08: ; bbWeight=0.00, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
+ movs r0, 0
+ str r0, [r3+0x40]
+ ldr r0, [r3+0x28]
+ ; gcrRegs +[r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ldr r2, [r2]
+ ldr r1, [r0]
+ blx r2 // System.Xml.XmlWellFormedWriter+AttributeValueCache:Clear():this
+ ; gcrRegs -[r0 r3]
+ ; gcr arg pop 0
+ b SHORT G_M47580_IG28
+ ;; size=22 bbWeight=0.00 PerfScore 0.01
+G_M47580_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=10 bbWeight=0 PerfScore 0.00
-G_M47580_IG09: ; bbWeight=0, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r0 r6]
- ldrb r1, [r6+0x65]
- cmp r1, 0
- beq SHORT G_M47580_IG04
- mov r0, r6
- movs r1, 0
+G_M47580_IG10: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r3]
+ ldr r0, [r3+0x28]
+ ; gcrRegs +[r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ldr r2, [r2]
+ ldr r1, [r0]
+ blx r2 // System.Xml.XmlWellFormedWriter+AttributeValueCache:get_StringValue():System.String:this
+ ; gcrRegs -[r3]
+ ; gcr arg pop 0
+ mov r5, r0
+ ; gcrRegs +[r5]
+ ldr r3, [sp+0x04] // [V00 this]
+ ; gcrRegs +[r3]
+ ldr r1, [r3+0x1C]
+ ; gcrRegs +[r1]
+ ldr r0, [r3+0x38]
+ ; gcrRegs -[r0]
+ ldr lr, [r1+0x04]
+ cmp r0, lr
+ bhs SHORT G_M47580_IG09
+ mov lr, 24
+ mul r0, r0, lr
+ adds r0, 8
+ adds r1, r1, r0
+ ; gcrRegs -[r1]
+ ; byrRegs +[r1]
+ add r0, r1, 12
+ ; byrRegs +[r0]
+ mov r1, r5
+ ; gcrRegs +[r1]
+ ; byrRegs -[r1]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[r1 r3 r5]
+ ; byrRegs -[r0]
+ ldr r3, [sp+0x04] // [V00 this]
+ ; gcrRegs +[r3]
+ ldr r0, [r3+0x08]
+ ; gcrRegs +[r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.Xml.XmlEncodedRawTextWriter:ChangeTextContentMark(ubyte):this
+ ldr lr, [r0]
+ ldr lr, [lr+0x30]
+ ldr lr, [lr+0x10]
+ blx lr // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
- ldr r0, [sp+0x04] // [V00 this]
+ ;; size=102 bbWeight=0 PerfScore 0.00
+G_M47580_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [sp+0x04] // [V00 this]
+ ; gcrRegs +[r3]
+ ldr r0, [r3+0x28]
; gcrRegs +[r0]
- b SHORT G_M47580_IG04
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M47580_IG10: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r6] +[r5]
+ ldr r1, [r3+0x08]
+ ; gcrRegs +[r1]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ldr r2, [r2]
+ ldr lr, [r0]
+ blx r2 // System.Xml.XmlWellFormedWriter+AttributeValueCache:Replay(System.Xml.XmlWriter):this
+ ; gcrRegs -[r0-r1 r3]
+ ; gcr arg pop 0
+ ldr r3, [sp+0x04] // [V00 this]
+ ; gcrRegs +[r3]
+ ldr r0, [r3+0x08]
+ ; gcrRegs +[r0]
+ ldr r2, [r0]
+ ldr r2, [r2+0x30]
+ ldr r2, [r2+0x14]
+ blx r2 // <unknown method>
+ ; gcrRegs -[r0 r3]
+ ; gcr arg pop 0
+ ldr r3, [sp+0x04] // [V00 this]
+ ; gcrRegs +[r3]
+ b SHORT G_M47580_IG08
+ ;; size=38 bbWeight=0 PerfScore 0.00
+G_M47580_IG12: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r3] +[r5]
ldr r0, [sp+0x04] // [V00 this]
; gcrRegs +[r0]
ldr r3, [r0+0x0C]
; gcrRegs +[r3]
cmp r3, 0
- beq SHORT G_M47580_IG13
+ beq SHORT G_M47580_IG15
ldr r3, [r0+0x0C]
mov r0, r3
ldr r3, [r3]
@@ -202,7 +281,7 @@ G_M47580_IG10: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M47580_IG12
+ beq SHORT G_M47580_IG14
ldr r0, [sp+0x04] // [V00 this]
; gcrRegs +[r0]
ldr r3, [r0+0x0C]
@@ -243,24 +322,24 @@ G_M47580_IG10: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
; gcr arg pop 0
b SHORT G_M47580_IG07
;; size=84 bbWeight=0 PerfScore 0.00
-G_M47580_IG11: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M47580_IG13: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
cmp r4, 3
mov r3, r0
; gcrRegs +[r3]
- bhi G_M47580_IG27
+ bhi G_M47580_IG08
movw r0, LOW ADDRESS J_M47580_DS00
; gcrRegs -[r0]
movt r0, HIGH ADDRESS J_M47580_DS00
J_M47580_DS00 LABEL DWORD
DD G_M47580_IG06
- DD G_M47580_IG14
- DD G_M47580_IG20
- DD G_M47580_IG25
+ DD G_M47580_IG16
+ DD G_M47580_IG22
+ DD G_M47580_IG10
ldr pc, [r0+4*r4]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M47580_IG12: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M47580_IG14: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3] +[r5]
ldr r3, [sp+0x04] // [V00 this]
; gcrRegs +[r3]
@@ -278,7 +357,7 @@ G_M47580_IG12: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
; gcr arg pop 0
b SHORT G_M47580_IG07
;; size=30 bbWeight=0 PerfScore 0.00
-G_M47580_IG13: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M47580_IG15: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
ldr lr, [r0+0x08]
; gcrRegs +[lr]
@@ -322,7 +401,7 @@ G_M47580_IG13: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre
; gcr arg pop 0
b SHORT G_M47580_IG07
;; size=82 bbWeight=0 PerfScore 0.00
-G_M47580_IG14: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
+G_M47580_IG16: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r3]
ldr r0, [r3+0x28]
; gcrRegs +[r0]
@@ -338,7 +417,7 @@ G_M47580_IG14: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre
ldr r0, [r5+0x04]
; gcrRegs -[r0]
cmp r0, 0
- bne SHORT G_M47580_IG15
+ bne SHORT G_M47580_IG17
movw r0, 0xd1ff
movt r0, 0xd1ff
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_tiered.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| coreclr_tests.run.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.crossgen2.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries_tests.run.linux.arm.Release.mch |
4 |
3 |
1 |
0 |
-16 |
+4 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| realworld.run.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
4 |
3 |
1 |
0 |
-16 |
+4 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm.checked.mch |
48,681 |
6,058 |
42,623 |
1,269 (2.54%) |
1,269 (2.54%) |
| benchmarks.run_pgo.linux.arm.checked.mch |
170,570 |
62,197 |
108,373 |
3,371 (1.94%) |
3,371 (1.94%) |
| benchmarks.run_tiered.linux.arm.checked.mch |
77,708 |
41,868 |
35,840 |
1,084 (1.38%) |
1,084 (1.38%) |
| coreclr_tests.run.linux.arm.checked.mch |
472,517 |
259,413 |
213,104 |
7,240 (1.51%) |
7,240 (1.51%) |
| libraries.crossgen2.linux.arm.checked.mch |
202,007 |
14 |
201,993 |
6 (0.00%) |
6 (0.00%) |
| libraries.pmi.linux.arm.checked.mch |
277,268 |
6 |
277,262 |
8,150 (2.86%) |
8,150 (2.86%) |
| libraries_tests.run.linux.arm.Release.mch |
710,992 |
445,649 |
265,343 |
18,367 (2.52%) |
18,367 (2.52%) |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
274,232 |
21,625 |
252,607 |
34,103 (11.06%) |
34,103 (11.06%) |
| realworld.run.linux.arm.checked.mch |
36,293 |
147 |
36,146 |
1,526 (4.04%) |
1,526 (4.04%) |
|
2,270,268 |
836,977 |
1,433,291 |
75,116 (3.20%) |
75,116 (3.20%) |
jit-analyze output
libraries_tests.run.linux.arm.Release.mch
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: 239226620 (overridden on cmd)
Total bytes of diff: 239226608 (overridden on cmd)
Total bytes of delta: -12 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 725582.dasm (0.30 % of base)
Top file improvements (bytes):
-8 : 285032.dasm (-0.72 % of base)
-6 : 79572.dasm (-0.28 % of base)
-2 : 509182.dasm (-0.52 % of base)
4 total files with Code Size differences (3 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
4 (0.30 % of base) : 725582.dasm - System.Xml.XmlWellFormedWriter:WriteEndAttribute():this (Tier1)
Top method improvements (bytes):
-8 (-0.72 % of base) : 285032.dasm - System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.InvocationExpression (Tier1)
-6 (-0.28 % of base) : 79572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
-2 (-0.52 % of base) : 509182.dasm - System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)
Top method regressions (percentages):
4 (0.30 % of base) : 725582.dasm - System.Xml.XmlWellFormedWriter:WriteEndAttribute():this (Tier1)
Top method improvements (percentages):
-8 (-0.72 % of base) : 285032.dasm - System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.InvocationExpression (Tier1)
-2 (-0.52 % of base) : 509182.dasm - System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)
-6 (-0.28 % of base) : 79572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
4 total methods with Code Size differences (3 improved, 1 regressed).
windows x86
Diffs are based on 2,350,557 contexts (850,572 MinOpts, 1,499,985 FullOpts).
MISSED contexts: 2,848 (0.12%)
Overall (+5 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.windows.x86.checked.mch |
47,755,820 |
+8 |
| libraries_tests.run.windows.x86.Release.mch |
187,238,592 |
-3 |
FullOpts (+5 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.windows.x86.checked.mch |
41,060,206 |
+8 |
| libraries_tests.run.windows.x86.Release.mch |
88,427,276 |
-3 |
Example diffs
benchmarks.run_pgo.windows.x86.checked.mch
+8 (+1.33%) : 112137.dasm - System.Text.RegularExpressions.RegexCompiler+<>cDisplayClass158_0:gEmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)
@@ -46,29 +46,29 @@ G_M17183_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebx, edx
; gcrRegs +[ebx]
;; size=30 bbWeight=1 PerfScore 9.58
-G_M17183_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M17183_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [esi+0x04]
; gcrRegs +[eax]
mov eax, gword ptr [eax+0x08]
mov eax, gword ptr [eax+0x08]
cmp dword ptr [eax+0x10], 19
- je G_M17183_IG22
- ;; size=19 bbWeight=1 PerfScore 10.00
+ je SHORT G_M17183_IG10
+ ;; size=15 bbWeight=1 PerfScore 10.00
G_M17183_IG03: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
call <unknown method>
test eax, eax
- je G_M17183_IG25
+ je G_M17183_IG13
test byte ptr [ebx+0x18], 64
- jne G_M17183_IG26
+ jne G_M17183_IG14
;; size=23 bbWeight=1 PerfScore 6.25
G_M17183_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
movzx eax, byte ptr [ebx+0x1E]
add eax, -3
cmp eax, 22
- jne SHORT G_M17183_IG07
+ jne SHORT G_M17183_IG06
;; size=12 bbWeight=1 PerfScore 3.50
-G_M17183_IG05: ; bbWeight=0.59, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M17183_IG05: ; bbWeight=0.59, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
push gword ptr [ebp+0x0C]
movzx ecx, byte ptr [ebp+0x08]
push ecx
@@ -78,26 +78,19 @@ G_M17183_IG05: ; bbWeight=0.59, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
; gcrRegs +[edx]
call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitConcatenation|15(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this]
; gcrRegs -[ecx edx ebx esi]
- ;; size=18 bbWeight=0.59 PerfScore 3.81
-G_M17183_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
- lea esp, [ebp-0x0C]
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 8
- ;; size=10 bbWeight=1 PerfScore 4.50
-G_M17183_IG07: ; bbWeight=0.41, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp SHORT G_M17183_IG09
+ ;; size=20 bbWeight=0.59 PerfScore 4.98
+G_M17183_IG06: ; bbWeight=0.41, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ebx esi]
cmp eax, 43
- ja SHORT G_M17183_IG06
+ ja SHORT G_M17183_IG09
lea ecx, [@RWD00]
mov ecx, dword ptr [ecx+4*eax]
lea edx, G_M17183_IG02
add ecx, edx
jmp ecx
;; size=24 bbWeight=0.41 PerfScore 2.90
-G_M17183_IG08: ; bbWeight=0.41, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M17183_IG07: ; bbWeight=0.41, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
movzx ecx, byte ptr [ebp+0x08]
push ecx
push 0
@@ -107,9 +100,9 @@ G_M17183_IG08: ; bbWeight=0.41, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx ebx esi]
- jmp SHORT G_M17183_IG06
+ jmp SHORT G_M17183_IG09
;; size=19 bbWeight=0.41 PerfScore 3.52
-G_M17183_IG09: ; bbWeight=0.00, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M17183_IG08: ; bbWeight=0.00, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ebx esi]
mov ecx, esi
; gcrRegs +[ecx]
@@ -117,130 +110,16 @@ G_M17183_IG09: ; bbWeight=0.00, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx ebx esi]
- jmp SHORT G_M17183_IG06
- ;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M17183_IG10: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, ebx
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx ebx esi]
- jmp SHORT G_M17183_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M17183_IG11: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, ebx
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx ebx esi]
- jmp SHORT G_M17183_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M17183_IG12: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, ebx
- ; gcrRegs +[edx]
- call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitAlternation|4(System.Text.RegularExpressions.RegexNode):this]
- ; gcrRegs -[ecx edx ebx esi]
- jmp SHORT G_M17183_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M17183_IG13: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi]
- push gword ptr [ebp+0x0C]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, ebx
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx ebx esi]
- jmp SHORT G_M17183_IG06
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M17183_IG14: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ebx esi]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, ebx
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx ebx esi]
- jmp SHORT G_M17183_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M17183_IG15: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[ebx esi]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, ebx
- ; gcrRegs +[edx]
- call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitBackreferenceConditional|6(System.Text.RegularExpressions.RegexNode):this]
- ; gcrRegs -[ecx edx ebx esi]
- jmp G_M17183_IG06
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M17183_IG16: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[ebx esi]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, ebx
- ; gcrRegs +[edx]
- call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitExpressionConditional|7(System.Text.RegularExpressions.RegexNode):this]
- ; gcrRegs -[ecx edx ebx esi]
- jmp G_M17183_IG06
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M17183_IG17: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[ebx esi]
- push gword ptr [ebp+0x0C]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, ebx
- ; gcrRegs +[edx]
- call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitCapture|8(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode):this]
- ; gcrRegs -[ecx edx ebx esi]
- jmp G_M17183_IG06
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M17183_IG18: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[ebx esi]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, ebx
- ; gcrRegs +[edx]
- call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitPositiveLookaroundAssertion|10(System.Text.RegularExpressions.RegexNode):this]
- ; gcrRegs -[ecx edx ebx esi]
- jmp G_M17183_IG06
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M17183_IG19: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[ebx esi]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, ebx
- ; gcrRegs +[edx]
- call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNegativeLookaroundAssertion|11(System.Text.RegularExpressions.RegexNode):this]
- ; gcrRegs -[ecx edx ebx esi]
- jmp G_M17183_IG06
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M17183_IG20: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[esi]
- mov ecx, gword ptr [esi+0x04]
- ; gcrRegs +[ecx]
- mov edx, dword ptr [esi+0x24]
- call [<unknown method>]
- ; gcrRegs -[ecx esi]
- jmp G_M17183_IG06
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M17183_IG21: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[ebx esi]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, ebx
- ; gcrRegs +[edx]
- call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitUpdateBumpalong|14(System.Text.RegularExpressions.RegexNode):this]
- ; gcrRegs -[ecx edx ebx esi]
- jmp G_M17183_IG06
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M17183_IG22: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=10 bbWeight=0.00 PerfScore 0.00
+G_M17183_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 8
+ ;; size=10 bbWeight=1 PerfScore 4.50
+G_M17183_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi]
mov gword ptr [ebp-0x28], esi
; GC ptr vars +{V00}
@@ -260,17 +139,17 @@ G_M17183_IG22: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
lea ecx, bword ptr [ebp-0x24]
; byrRegs +[ecx]
cmp byte ptr [ebp-0x24], 0
- jne SHORT G_M17183_IG23
+ jne SHORT G_M17183_IG11
xor edx, edx
- jmp SHORT G_M17183_IG24
+ jmp SHORT G_M17183_IG12
;; size=38 bbWeight=0 PerfScore 0.00
-G_M17183_IG23: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000002 {ecx}, gcvars, byref
+G_M17183_IG11: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs -[edx]
; byrRegs -[esi edi]
mov edx, gword ptr [ecx+0x04]
; gcrRegs +[edx]
;; size=3 bbWeight=0 PerfScore 0.00
-G_M17183_IG24: ; bbWeight=0, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref
+G_M17183_IG12: ; bbWeight=0, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[ecx]
cmp edx, ebx
mov esi, gword ptr [ebp-0x28]
@@ -295,9 +174,9 @@ G_M17183_IG24: ; bbWeight=0, gcrefRegs=0000000C {edx ebx}, byrefRegs=0000
; gcrRegs +[ecx]
call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__SliceInputSpan|0():this]
; gcrRegs -[ecx esi]
- jmp G_M17183_IG06
- ;; size=54 bbWeight=0 PerfScore 0.00
...
libraries_tests.run.windows.x86.Release.mch
-3 (-1.90%) : 437936.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)
@@ -33,19 +33,22 @@ G_M54976_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
cmp edi, 3
jne SHORT G_M54976_IG05
;; size=8 bbWeight=1 PerfScore 3.25
-G_M54976_IG03: ; bbWeight=0.66, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+G_M54976_IG03: ; bbWeight=0.66, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi
; gcrRegs +[edx]
call [System.Runtime.Serialization.Formatters.Binary.ObjectReader:ParseMember(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this]
; gcrRegs -[ecx edx esi]
- ;; size=8 bbWeight=0.66 PerfScore 2.15
-G_M54976_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=4 bbWeight=1 PerfScore 2.50
-G_M54976_IG05: ; bbWeight=0.34, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp SHORT G_M54976_IG08
+ ;; size=10 bbWeight=0.66 PerfScore 3.47
+G_M54976_IG04: ; bbWeight=0.01, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[ecx esi]
+ mov edx, esi
+ ; gcrRegs +[edx]
+ call [System.Runtime.Serialization.Formatters.Binary.ObjectReader:ParseMemberEnd(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this]
+ ; gcrRegs -[ecx edx esi]
+ jmp SHORT G_M54976_IG08
+ ;; size=10 bbWeight=0.01 PerfScore 0.06
+G_M54976_IG05: ; bbWeight=0.34, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx esi]
cmp edi, 12
ja SHORT G_M54976_IG09
@@ -60,25 +63,22 @@ G_M54976_IG06: ; bbWeight=0.16, gcrefRegs=00000042 {ecx esi}, byrefRegs=0
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx esi]
- jmp SHORT G_M54976_IG04
+ jmp SHORT G_M54976_IG08
;; size=10 bbWeight=0.16 PerfScore 0.86
-G_M54976_IG07: ; bbWeight=0.16, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M54976_IG07: ; bbWeight=0.16, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ecx esi]
mov edx, esi
; gcrRegs +[edx]
call [System.Runtime.Serialization.Formatters.Binary.ObjectReader:ParseObjectEnd(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this]
; gcrRegs -[ecx edx esi]
- jmp SHORT G_M54976_IG04
- ;; size=10 bbWeight=0.16 PerfScore 0.85
-G_M54976_IG08: ; bbWeight=0.01, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ecx esi]
- mov edx, esi
- ; gcrRegs +[edx]
- call [System.Runtime.Serialization.Formatters.Binary.ObjectReader:ParseMemberEnd(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this]
- ; gcrRegs -[ecx edx esi]
- jmp SHORT G_M54976_IG04
- ;; size=10 bbWeight=0.01 PerfScore 0.06
-G_M54976_IG09: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=0.16 PerfScore 0.53
+G_M54976_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=4 bbWeight=1 PerfScore 2.50
+G_M54976_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -111,31 +111,31 @@ G_M54976_IG10: ; bbWeight=0, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
cmp dword ptr [ecx], ecx
call [System.Runtime.Serialization.Formatters.Binary.SerStack:Push(System.Object):this]
; gcrRegs -[ecx edx esi]
- jmp SHORT G_M54976_IG04
+ jmp SHORT G_M54976_IG08
;; size=15 bbWeight=0 PerfScore 0.00
-G_M54976_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M54976_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
mov ecx, gword ptr [ecx+0x2C]
cmp dword ptr [ecx], ecx
call [System.Runtime.Serialization.Formatters.Binary.SerStack:Pop():System.Object:this]
; gcrRegs -[ecx] +[eax]
- jmp G_M54976_IG04
- ;; size=16 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M54976_IG08
+ ;; size=13 bbWeight=0 PerfScore 0.00
RWD00 dd G_M54976_IG09 - G_M54976_IG02
dd G_M54976_IG10 - G_M54976_IG02
dd G_M54976_IG06 - G_M54976_IG02
dd G_M54976_IG03 - G_M54976_IG02
dd G_M54976_IG07 - G_M54976_IG02
- dd G_M54976_IG08 - G_M54976_IG02
+ dd G_M54976_IG04 - G_M54976_IG02
dd G_M54976_IG09 - G_M54976_IG02
dd G_M54976_IG09 - G_M54976_IG02
dd G_M54976_IG11 - G_M54976_IG02
- dd G_M54976_IG04 - G_M54976_IG02
- dd G_M54976_IG04 - G_M54976_IG02
- dd G_M54976_IG04 - G_M54976_IG02
- dd G_M54976_IG04 - G_M54976_IG02
+ dd G_M54976_IG08 - G_M54976_IG02
+ dd G_M54976_IG08 - G_M54976_IG02
+ dd G_M54976_IG08 - G_M54976_IG02
+ dd G_M54976_IG08 - G_M54976_IG02
-; Total bytes of code 158, prolog size 5, PerfScore 15.55, instruction count 51, allocated bytes for code 158 (MethodHash=5da0293f) for method System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)
+; Total bytes of code 155, prolog size 5, PerfScore 16.54, instruction count 51, allocated bytes for code 155 (MethodHash=5da0293f) for method System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)
; ============================================================
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.windows.x86.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.windows.x86.checked.mch |
1 |
0 |
1 |
0 |
-0 |
+8 |
| benchmarks.run_tiered.windows.x86.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| coreclr_tests.run.windows.x86.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.crossgen2.windows.x86.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.windows.x86.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries_tests.run.windows.x86.Release.mch |
1 |
1 |
0 |
0 |
-3 |
+0 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| realworld.run.windows.x86.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
2 |
1 |
1 |
0 |
-3 |
+8 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x86.checked.mch |
24,660 |
4 |
24,656 |
40 (0.16%) |
40 (0.16%) |
| benchmarks.run_pgo.windows.x86.checked.mch |
123,449 |
42,602 |
80,847 |
49 (0.04%) |
49 (0.04%) |
| benchmarks.run_tiered.windows.x86.checked.mch |
48,467 |
29,030 |
19,437 |
26 (0.05%) |
26 (0.05%) |
| coreclr_tests.run.windows.x86.checked.mch |
584,557 |
326,360 |
258,197 |
304 (0.05%) |
304 (0.05%) |
| libraries.crossgen2.windows.x86.checked.mch |
274,604 |
15 |
274,589 |
85 (0.03%) |
85 (0.03%) |
| libraries.pmi.windows.x86.checked.mch |
310,399 |
6 |
310,393 |
427 (0.14%) |
427 (0.14%) |
| libraries_tests.run.windows.x86.Release.mch |
632,272 |
430,621 |
201,651 |
1,192 (0.19%) |
1,192 (0.19%) |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
316,269 |
21,931 |
294,338 |
578 (0.18%) |
578 (0.18%) |
| realworld.run.windows.x86.checked.mch |
35,880 |
3 |
35,877 |
147 (0.41%) |
147 (0.41%) |
|
2,350,557 |
850,572 |
1,499,985 |
2,848 (0.12%) |
2,848 (0.12%) |
jit-analyze output
benchmarks.run_pgo.windows.x86.checked.mch
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: 47755820 (overridden on cmd)
Total bytes of diff: 47755828 (overridden on cmd)
Total bytes of delta: 8 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
8 : 112137.dasm (1.33 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
8 (1.33 % of base) : 112137.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)
Top method regressions (percentages):
8 (1.33 % of base) : 112137.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)
1 total methods with Code Size differences (0 improved, 1 regressed).
libraries_tests.run.windows.x86.Release.mch
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: 187238592 (overridden on cmd)
Total bytes of diff: 187238589 (overridden on cmd)
Total bytes of delta: -3 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-3 : 437936.dasm (-1.90 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-3 (-1.90 % of base) : 437936.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)
Top method improvements (percentages):
-3 (-1.90 % of base) : 437936.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)
1 total methods with Code Size differences (1 improved, 0 regressed).