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).