Assembly Diffs
linux arm
Diffs are based on 2,250,512 contexts (832,197 MinOpts, 1,418,315 FullOpts).
MISSED contexts: 73,582 (3.17%)
Overall (-18 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| libraries_tests.run.linux.arm.Release.mch |
239,569,136 |
-18 |
FullOpts (-18 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| libraries_tests.run.linux.arm.Release.mch |
117,215,174 |
-18 |
Example diffs
libraries_tests.run.linux.arm.Release.mch
-2 (-0.52%) : 509261.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.20
-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.63, 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)
-8 (-0.37%) : 33286.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 1173
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1173
; 7 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -50,9 +50,9 @@
; V38 tmp30 [V38,T20] ( 3, 0.58) ref -> r1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V39 tmp31 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V40 tmp32 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V41 tmp33 [V41,T16] ( 2, 0.75) ref -> r6 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp34 [V42,T19] ( 4, 0.60) ref -> r6
-; V43 tmp35 [V43,T23] ( 3, 0.23) ref -> r6 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V41 tmp33 [V41,T16] ( 2, 0.75) ref -> r5 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V42 tmp34 [V42,T19] ( 4, 0.60) ref -> r5
+; V43 tmp35 [V43,T23] ( 3, 0.23) ref -> r5 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V44 tmp36 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V45 tmp37 [V45,T26] ( 2, 0.12) ref -> r6 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V46 tmp38 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
@@ -79,7 +79,7 @@
;
; Lcl frame size = 12
-G_M18455_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18455_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 12
add r11, sp, 40
@@ -91,29 +91,29 @@ G_M18455_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r3, [r4+0x08]
; gcrRegs +[r3]
cmp r3, 0
- beq G_M18455_IG28
+ beq G_M18455_IG23
;; size=8 bbWeight=1 PerfScore 3.00
G_M18455_IG03: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz
ldrh r6, [r3+0x08]
movw r0, 0xd1ff
cmp r6, r0
- bls G_M18455_IG24
+ bls G_M18455_IG18
;; size=12 bbWeight=1 PerfScore 4.00
G_M18455_IG04: ; bbWeight=0.77, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3]
movw r0, 0xd1ff
cmp r6, r0
- bls G_M18455_IG38
+ bls G_M18455_IG30
;; size=10 bbWeight=0.77 PerfScore 2.30
G_M18455_IG05: ; bbWeight=0.70, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
cmp r6, r0
- bls G_M18455_IG82
+ bls G_M18455_IG74
movw r0, 0xd1ff
sxth r0, r0
adds r7, r6, r0
cmp r7, 0
- bne G_M18455_IG27
+ bne G_M18455_IG22
;; size=24 bbWeight=0.70 PerfScore 5.57
G_M18455_IG06: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
@@ -125,7 +125,7 @@ G_M18455_IG06: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- beq G_M18455_IG63
+ beq G_M18455_IG61
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -135,7 +135,7 @@ G_M18455_IG06: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18455_IG57
+ bne G_M18455_IG55
mov r0, r4
; gcrRegs +[r0]
mov r1, r5
@@ -146,7 +146,7 @@ G_M18455_IG06: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18455_IG60
+ bne G_M18455_IG58
;; size=62 bbWeight=0.47 PerfScore 10.33
G_M18455_IG07: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
@@ -159,7 +159,7 @@ G_M18455_IG07: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18455_IG61
+ bne G_M18455_IG59
;; size=22 bbWeight=0.47 PerfScore 3.76
G_M18455_IG08: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
@@ -175,7 +175,7 @@ G_M18455_IG08: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r3, [r4+0x08]
; gcrRegs +[r3]
cmp r3, 0
- beq G_M18455_IG26
+ beq G_M18455_IG29
;; size=26 bbWeight=0.47 PerfScore 4.70
G_M18455_IG09: ; bbWeight=0.47, gcrefRegs=0218 {r3 r4 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
@@ -183,50 +183,18 @@ G_M18455_IG09: ; bbWeight=0.47, gcrefRegs=0218 {r3 r4 r9}, byrefRegs=0000
movw r3, 0xd1ff
; gcrRegs -[r3]
cmp r0, r3
- bne SHORT G_M18455_IG13
+ beq SHORT G_M18455_IG24
;; size=10 bbWeight=0.47 PerfScore 1.88
-G_M18455_IG10: ; bbWeight=0.19, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r4+0x08]
- ; gcrRegs +[r6]
- cmp r6, 0
- beq SHORT G_M18455_IG23
- ;; size=6 bbWeight=0.19 PerfScore 0.57
-G_M18455_IG11: ; bbWeight=0.19, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref
- mov r0, r4
- ; gcrRegs +[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:MoveToNextToken():this
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- mov r0, r4
- ; gcrRegs +[r0]
- mov r3, r6
- ; gcrRegs +[r3]
- mov r2, r9
- ; gcrRegs +[r2]
- movs r1, 1
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr r12, [lr]
- ;; size=34 bbWeight=0.19 PerfScore 2.26
-G_M18455_IG12: ; bbWeight=0.19, 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.19 PerfScore 0.57
-G_M18455_IG13: ; bbWeight=0.28, gcVars=0000000000000000 {}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r2-r4 r6]
+G_M18455_IG10: ; bbWeight=0.28, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4]
mov r0, r9
; gcrRegs +[r0]
;; size=2 bbWeight=0.28 PerfScore 0.28
-G_M18455_IG14: ; bbWeight=0.28, epilog, nogc, extend
+G_M18455_IG11: ; bbWeight=0.28, epilog, nogc, extend
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.28 PerfScore 0.56
-G_M18455_IG15: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M18455_IG12: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r9] +[r4]
ldr r7, [r4+0xAC]
; gcrRegs +[r7]
@@ -240,47 +208,18 @@ G_M18455_IG15: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=001
ldr r10, [r4+0x08]
; gcrRegs +[r10]
cmp r10, 0
- beq SHORT G_M18455_IG18
- ;; size=30 bbWeight=0.24 PerfScore 2.38
-G_M18455_IG16: ; bbWeight=0.24, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, byref, isz
+ beq G_M18455_IG35
+ ;; size=32 bbWeight=0.24 PerfScore 2.38
+G_M18455_IG13: ; bbWeight=0.24, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08]
; gcrRegs +[r0]
ldr r3, [r0]
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne SHORT G_M18455_IG19
- ;; size=16 bbWeight=0.24 PerfScore 1.43
-G_M18455_IG17: ; bbWeight=0.10, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- movs r1, 0
- b SHORT G_M18455_IG20
- ;; size=4 bbWeight=0.10 PerfScore 0.20
-G_M18455_IG18: ; bbWeight=0.05, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r10]
- mov r0, r4
- ; gcrRegs +[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this
- ; gcr arg pop 0
- mov r10, r0
- ; gcrRegs +[r10]
- add r0, r4, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- mov r1, r10
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1]
- ; byrRegs -[r0]
- b SHORT G_M18455_IG16
- ;; size=34 bbWeight=0.05 PerfScore 0.58
-G_M18455_IG19: ; bbWeight=0.14, gcrefRegs=0491 {r0 r4 r7 r10}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r0]
+ beq G_M18455_IG28
+ ;; size=18 bbWeight=0.24 PerfScore 1.43
+G_M18455_IG14: ; bbWeight=0.14, gcrefRegs=0491 {r0 r4 r7 r10}, byrefRegs=0000 {}, byref
ldr r3, [r3+0x3C]
ldr r3, [r3+0x14]
blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode:GetTrailingTrivia():Microsoft.CodeAnalysis.GreenNode:this
@@ -288,7 +227,7 @@ G_M18455_IG19: ; bbWeight=0.14, gcrefRegs=0491 {r0 r4 r7 r10}, byrefRegs=
mov r1, r0
; gcrRegs +[r1]
;; size=8 bbWeight=0.14 PerfScore 0.55
-G_M18455_IG20: ; bbWeight=0.24, gcrefRegs=0492 {r1 r4 r7 r10}, byrefRegs=0000 {}, byref, isz
+G_M18455_IG15: ; bbWeight=0.24, gcrefRegs=0492 {r1 r4 r7 r10}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
add r0, r4, 16
; byrRegs +[r0]
@@ -302,9 +241,9 @@ G_M18455_IG20: ; bbWeight=0.24, gcrefRegs=0492 {r1 r4 r7 r10}, byrefRegs=
ldr r0, [r4+0x14]
; gcrRegs +[r0]
cmp r0, 0
- bne G_M18455_IG68
+ bne G_M18455_IG66
;; size=26 bbWeight=0.24 PerfScore 2.14
-G_M18455_IG21: ; bbWeight=0.24, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, byref
+G_M18455_IG16: ; bbWeight=0.24, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
ldr r0, [r4+0x20]
adds r0, r0, 1
@@ -319,92 +258,76 @@ G_M18455_IG21: ; bbWeight=0.24, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=000
ldr r3, [lr]
ldr lr, [r0]
;; size=28 bbWeight=0.24 PerfScore 2.38
-G_M18455_IG22: ; bbWeight=0.24, epilog, nogc, extend
+G_M18455_IG17: ; bbWeight=0.24, epilog, nogc, extend
add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
...
-20 (-0.24%) : 547930.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ubyte
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; r11 based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4075
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4075
; 23 inlinees with PGO data; 154 single block inlinees; 22 inlinees without PGO data
; Final local variable assignments
;
@@ -14,7 +14,7 @@
; V02 loc0 [V02 ] (101, 2.97) struct ( 8) [sp+0x270] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]>
; V03 loc1 [V03 ] (102, 3.00) struct ( 8) [sp+0x268] do-not-enreg[XS] must-init addr-exposed <System.ReadOnlySpan`1[ubyte]>
;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc3 [V05,T16] ( 14, 0.28) ushort -> lr
+; V05 loc3 [V05,T16] ( 14, 0.28) ushort -> r1
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
; V08 tmp2 [V08 ] ( 3, 0.18) struct ( 8) [sp+0x260] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -601,8 +601,8 @@
;* V589 tmp583 [V589,T102] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x4)" P-INDEP
; V590 tmp584 [V590,T73] ( 2, 0.06) byref -> [sp+0x1D0] do-not-enreg[H] hidden-struct-arg "field V44._reference (fldOffset=0x0)" P-DEP
; V591 tmp585 [V591,T74] ( 2, 0.06) int -> [sp+0x1D4] do-not-enreg[H] hidden-struct-arg "field V44._length (fldOffset=0x4)" P-DEP
-; V592 tmp586 [V592,T126] ( 2, 0.01) byref -> r5 single-def "field V45._reference (fldOffset=0x0)" P-INDEP
-; V593 tmp587 [V593,T127] ( 2, 0.01) int -> r6 "field V45._length (fldOffset=0x4)" P-INDEP
+; V592 tmp586 [V592,T126] ( 2, 0.01) byref -> r8 single-def "field V45._reference (fldOffset=0x0)" P-INDEP
+; V593 tmp587 [V593,T127] ( 2, 0.01) int -> r7 "field V45._length (fldOffset=0x4)" P-INDEP
; V594 tmp588 [V594,T107] ( 2, 0.01) byref -> [sp+0x1C8] do-not-enreg[H] hidden-struct-arg "field V46._reference (fldOffset=0x0)" P-DEP
; V595 tmp589 [V595,T108] ( 2, 0.01) int -> [sp+0x1CC] do-not-enreg[H] hidden-struct-arg "field V46._length (fldOffset=0x4)" P-DEP
; V596 tmp590 [V596,T281] ( 2, 0 ) byref -> r5 single-def "field V47._reference (fldOffset=0x0)" P-INDEP
@@ -613,12 +613,12 @@
;* V601 tmp595 [V601,T197] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x4)" P-INDEP
; V602 tmp596 [V602,T138] ( 2, 0.01) byref -> [sp+0x1B8] do-not-enreg[H] hidden-struct-arg "field V50._reference (fldOffset=0x0)" P-DEP
; V603 tmp597 [V603,T140] ( 2, 0.01) int -> [sp+0x1BC] do-not-enreg[H] hidden-struct-arg "field V50._length (fldOffset=0x4)" P-DEP
-; V604 tmp598 [V604,T189] ( 2, 0.00) byref -> r7 single-def "field V51._reference (fldOffset=0x0)" P-INDEP
+; V604 tmp598 [V604,T189] ( 2, 0.00) byref -> r5 single-def "field V51._reference (fldOffset=0x0)" P-INDEP
; V605 tmp599 [V605,T191] ( 2, 0.00) int -> r6 "field V51._length (fldOffset=0x4)" P-INDEP
; V606 tmp600 [V606,T171] ( 2, 0.00) byref -> [sp+0x1B0] do-not-enreg[H] hidden-struct-arg "field V52._reference (fldOffset=0x0)" P-DEP
; V607 tmp601 [V607,T176] ( 2, 0.00) int -> [sp+0x1B4] do-not-enreg[H] hidden-struct-arg "field V52._length (fldOffset=0x4)" P-DEP
-; V608 tmp602 [V608,T190] ( 2, 0.00) byref -> r5 single-def "field V53._reference (fldOffset=0x0)" P-INDEP
-; V609 tmp603 [V609,T192] ( 2, 0.00) int -> r6 "field V53._length (fldOffset=0x4)" P-INDEP
+; V608 tmp602 [V608,T190] ( 2, 0.00) byref -> r8 single-def "field V53._reference (fldOffset=0x0)" P-INDEP
+; V609 tmp603 [V609,T192] ( 2, 0.00) int -> r5 "field V53._length (fldOffset=0x4)" P-INDEP
; V610 tmp604 [V610,T172] ( 2, 0.00) byref -> [sp+0x1A8] do-not-enreg[H] hidden-struct-arg "field V54._reference (fldOffset=0x0)" P-DEP
; V611 tmp605 [V611,T177] ( 2, 0.00) int -> [sp+0x1AC] do-not-enreg[H] hidden-struct-arg "field V54._length (fldOffset=0x4)" P-DEP
; V612 tmp606 [V612,T283] ( 2, 0 ) byref -> r5 single-def "field V55._reference (fldOffset=0x0)" P-INDEP
@@ -685,7 +685,7 @@
;* V673 tmp667 [V673,T90] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x4)" P-INDEP
; V674 tmp668 [V674,T61] ( 2, 0.08) byref -> [sp+0x128] do-not-enreg[H] hidden-struct-arg "field V86._reference (fldOffset=0x0)" P-DEP
; V675 tmp669 [V675,T62] ( 2, 0.08) int -> [sp+0x12C] do-not-enreg[H] hidden-struct-arg "field V86._length (fldOffset=0x4)" P-DEP
-; V676 tmp670 [V676,T76] ( 2, 0.05) byref -> r8 single-def "field V87._reference (fldOffset=0x0)" P-INDEP
+; V676 tmp670 [V676,T76] ( 2, 0.05) byref -> r7 single-def "field V87._reference (fldOffset=0x0)" P-INDEP
; V677 tmp671 [V677,T77] ( 2, 0.05) int -> r6 "field V87._length (fldOffset=0x4)" P-INDEP
; V678 tmp672 [V678,T65] ( 2, 0.07) byref -> [sp+0x120] do-not-enreg[H] hidden-struct-arg "field V88._reference (fldOffset=0x0)" P-DEP
; V679 tmp673 [V679,T66] ( 2, 0.07) int -> [sp+0x124] do-not-enreg[H] hidden-struct-arg "field V88._length (fldOffset=0x4)" P-DEP
@@ -1185,17 +1185,17 @@
;* V1173 tmp1167 [V1173 ] ( 0, 0 ) int -> zero-ref "V509.[004..008)"
;* V1174 tmp1168 [V1174 ] ( 0, 0 ) byref -> zero-ref "V510.[000..004)"
;* V1175 tmp1169 [V1175 ] ( 0, 0 ) int -> zero-ref "V510.[004..008)"
-; V1176 tmp1170 [V1176,T02] ( 4, 5.66) int -> r0 "fgMakeTemp is creating a new local variable"
-; V1177 tmp1171 [V1177,T33] ( 4, 0.14) int -> r8 "fgMakeTemp is creating a new local variable"
-; V1178 tmp1172 [V1178,T60] ( 4, 0.08) int -> r9 "fgMakeTemp is creating a new local variable"
-; V1179 tmp1173 [V1179,T57] ( 4, 0.09) int -> r2 "fgMakeTemp is creating a new local variable"
-; V1180 rat0 [V1180,T05] ( 3, 3.52) int -> r7 "ReplaceWithLclVar is creating a new local variable"
-; V1181 rat1 [V1181,T09] ( 3, 0.49) int -> r9 "ReplaceWithLclVar is creating a new local variable"
-; V1182 rat2 [V1182,T75] ( 3, 0.05) int -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V1183 rat3 [V1183,T100] ( 3, 0.02) int -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V1184 rat4 [V1184,T106] ( 3, 0.02) int -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V1185 rat5 [V1185,T188] ( 3, 0.00) int -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V1186 rat6 [V1186,T170] ( 3, 0.00) int -> r12 "ReplaceWithLclVar is creating a new local variable"
+; V1176 tmp1170 [V1176,T02] ( 4, 5.66) int -> r7 "fgMakeTemp is creating a new local variable"
+; V1177 tmp1171 [V1177,T33] ( 4, 0.14) int -> r7 "fgMakeTemp is creating a new local variable"
+; V1178 tmp1172 [V1178,T60] ( 4, 0.08) int -> r8 "fgMakeTemp is creating a new local variable"
+; V1179 tmp1173 [V1179,T57] ( 4, 0.09) int -> r3 "fgMakeTemp is creating a new local variable"
+; V1180 rat0 [V1180,T05] ( 3, 3.52) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V1181 rat1 [V1181,T09] ( 3, 0.49) int -> r7 "ReplaceWithLclVar is creating a new local variable"
+; V1182 rat2 [V1182,T75] ( 3, 0.05) int -> r9 "ReplaceWithLclVar is creating a new local variable"
+; V1183 rat3 [V1183,T100] ( 3, 0.02) int -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V1184 rat4 [V1184,T106] ( 3, 0.02) int -> r2 "ReplaceWithLclVar is creating a new local variable"
+; V1185 rat5 [V1185,T170] ( 3, 0.00) int -> lr "ReplaceWithLclVar is creating a new local variable"
+; V1186 rat6 [V1186,T188] ( 3, 0.00) int -> r2 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 636
@@ -1223,39 +1223,33 @@ G_M22057_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
str r0, [sp+0x270] // [V512 tmp506]
movw r0, 0xd1ff
str r0, [sp+0x274] // [V513 tmp507]
- subs r0, r6, 7
- cmp r0, 13
- beq SHORT G_M22057_IG07
+ subs r7, r6, 7
+ cmp r7, 13
+ bne SHORT G_M22057_IG07
;; size=26 bbWeight=1 PerfScore 10.00
-G_M22057_IG03: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- cmp r0, 19
+G_M22057_IG03: ; bbWeight=0.59, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
+ movs r0, 19
+ cmp r0, r6
+ bhs G_M22057_IG88
+ ldrh r0, [r5+0x26]
+ subs r0, 49
+ cmp r0, 8
bhi SHORT G_M22057_IG04
movw r3, LOW ADDRESS J_M22057_DS00
movt r3, HIGH ADDRESS J_M22057_DS00
J_M22057_DS00 LABEL DWORD
- DD G_M22057_IG56
- DD G_M22057_IG92
- DD G_M22057_IG71
- DD G_M22057_IG04
- DD G_M22057_IG04
- DD G_M22057_IG58
- DD G_M22057_IG30
- DD G_M22057_IG93
- DD G_M22057_IG04
- DD G_M22057_IG04
- DD G_M22057_IG13
- DD G_M22057_IG63
- DD G_M22057_IG32
- DD G_M22057_IG07
- DD G_M22057_IG42
- DD G_M22057_IG10
- DD G_M22057_IG44
- DD G_M22057_IG04
- DD G_M22057_IG34
- DD G_M22057_IG25
+ DD G_M22057_IG08
+ DD G_M22057_IG18
+ DD G_M22057_IG15
+ DD G_M22057_IG14
+ DD G_M22057_IG23
+ DD G_M22057_IG29
+ DD G_M22057_IG101
+ DD G_M22057_IG102
+ DD G_M22057_IG103
ldr pc, [r3+4*r0]
- ;; size=16 bbWeight=0.41 PerfScore 2.07
+ ;; size=28 bbWeight=0.59 PerfScore 5.86
G_M22057_IG04: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
; byrRegs -[r5]
add r0, sp, 616 // [V03 loc1]
@@ -1278,30 +1272,36 @@ G_M22057_IG06: ; bbWeight=1, epilog, nogc, extend
add sp, 8
bx lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M22057_IG07: ; bbWeight=0.59, gcVars=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
+G_M22057_IG07: ; bbWeight=0.41, gcVars=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; byrRegs +[r5]
- movs r0, 19
- cmp r0, r6
- bhs G_M22057_IG91
- ldrh r0, [r5+0x26]
- sub r7, r0, 49
- cmp r7, 8
+ cmp r7, 19
bhi SHORT G_M22057_IG04
- movw r0, LOW ADDRESS J_M22057_DS80
- movt r0, HIGH ADDRESS J_M22057_DS80
+ movw r0, LOW ADDRESS J_M22057_DS36
+ movt r0, HIGH ADDRESS J_M22057_DS36
- J_M22057_DS80 LABEL DWORD
- DD G_M22057_IG08
- DD G_M22057_IG27
- DD G_M22057_IG21
+ J_M22057_DS36 LABEL DWORD
+ DD G_M22057_IG54
+ DD G_M22057_IG91
+ DD G_M22057_IG72
+ DD G_M22057_IG04
+ DD G_M22057_IG04
+ DD G_M22057_IG56
DD G_M22057_IG20
- DD G_M22057_IG35
- DD G_M22057_IG40
- DD G_M22057_IG102
- DD G_M22057_IG103
- DD G_M22057_IG104
+ DD G_M22057_IG92
+ DD G_M22057_IG04
+ DD G_M22057_IG04
+ DD G_M22057_IG26
+ DD G_M22057_IG74
+ DD G_M22057_IG37
+ DD G_M22057_IG03
+ DD G_M22057_IG43
+ DD G_M22057_IG10
+ DD G_M22057_IG33
+ DD G_M22057_IG04
+ DD G_M22057_IG22
+ DD G_M22057_IG17
ldr pc, [r0+4*r7]
- ;; size=30 bbWeight=0.59 PerfScore 5.86
+ ;; size=16 bbWeight=0.41 PerfScore 2.07
G_M22057_IG08: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
movs r0, 1
movw r3, 0xd1ff
@@ -1311,7 +1311,7 @@ G_M22057_IG08: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r6, 20
- bne SHORT G_M22057_IG12
+ bne G_M22057_IG19
movs r2, 40
mov r0, r5
; byrRegs +[r0]
@@ -1321,8 +1321,8 @@ G_M22057_IG08: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}
blx r3 // <unknown method>
; byrRegs -[r0]
cmp r0, 0
- beq SHORT G_M22057_IG12
- ;; size=46 bbWeight=0.26 PerfScore 4.37
+ beq G_M22057_IG19
+ ;; size=50 bbWeight=0.26 PerfScore 4.37
G_M22057_IG09: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; byrRegs -[r5]
add r0, sp, 624 // [V02 loc0]
@@ -1339,108 +1339,12 @@ G_M22057_IG10: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}
; byrRegs +[r5]
movs r0, 16
cmp r0, r6
- bhs G_M22057_IG91
- ldrh lr, [r5+0x20]
- cmp lr, 46
- beq SHORT G_M22057_IG17
- ;; size=18 bbWeight=0.14 PerfScore 0.83
-G_M22057_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref
- b G_M22057_IG65
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M22057_IG12: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz
- movs r0, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r6, 20
- bne G_M22057_IG100
- movs r2, 40
- mov r0, r5
- ; byrRegs +[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- cmp r0, 0
...
+2 (+0.29%) : 599314.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)
@@ -159,9 +159,9 @@ G_M42373_IG05: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0080 {r7},
subs r7, r1, 1
; byrRegs -[r7]
cmp r7, 6
- bne SHORT G_M42373_IG08
+ bne SHORT G_M42373_IG07
;; size=46 bbWeight=1 PerfScore 19.00
-G_M42373_IG06: ; bbWeight=1.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
+G_M42373_IG06: ; bbWeight=1.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
add r1, sp, 12
mov r0, r4
; gcrRegs +[r0]
@@ -172,25 +172,22 @@ G_M42373_IG06: ; bbWeight=1.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r0 r2 r4 r6]
- ;; size=18 bbWeight=1.00 PerfScore 7.00
-G_M42373_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 24
- pop {r4,r5,r6,r7,r8,r9,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M42373_IG08: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+ b SHORT G_M42373_IG08
+ ;; size=20 bbWeight=1.00 PerfScore 8.00
+G_M42373_IG07: ; bbWeight=0.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4 r6]
cmp r7, 10
- bhi SHORT G_M42373_IG07
+ bhi SHORT G_M42373_IG08
movw r0, LOW ADDRESS J_M42373_DS00
movt r0, HIGH ADDRESS J_M42373_DS00
J_M42373_DS00 LABEL DWORD
DD G_M42373_IG34
- DD G_M42373_IG07
+ DD G_M42373_IG08
DD G_M42373_IG09
- DD G_M42373_IG07
- DD G_M42373_IG07
- DD G_M42373_IG07
+ DD G_M42373_IG08
+ DD G_M42373_IG08
+ DD G_M42373_IG08
DD G_M42373_IG06
DD G_M42373_IG10
DD G_M42373_IG28
@@ -198,7 +195,13 @@ G_M42373_IG08: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0050 {r4 r6
DD G_M42373_IG30
ldr pc, [r0+4*r7]
;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M42373_IG09: ; bbWeight=0.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
+G_M42373_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r4 r6]
+ add sp, 24
+ pop {r4,r5,r6,r7,r8,r9,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M42373_IG09: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4 r6]
ldrsb r0, [r6]
mov r0, r6
; gcrRegs +[r0]
@@ -409,7 +412,7 @@ G_M42373_IG27: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0020 {r5}, by
blx r3 // System.Text.Json.Utf8JsonWriter:WriteNumberValue(System.ReadOnlySpan`1[ubyte]):this
; gcrRegs -[r0 r6]
; byrRegs -[r1 r5]
- b SHORT G_M42373_IG07
+ b SHORT G_M42373_IG08
;; size=36 bbWeight=0 PerfScore 0.00
G_M42373_IG28: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r6]
@@ -422,7 +425,7 @@ G_M42373_IG28: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre
ldr r2, [r0]
blx r3 // System.Text.Json.Utf8JsonWriter:WriteBooleanValue(ubyte):this
; gcrRegs -[r0 r6]
- b SHORT G_M42373_IG07
+ b SHORT G_M42373_IG08
;; size=20 bbWeight=0 PerfScore 0.00
G_M42373_IG29: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r6]
@@ -435,7 +438,7 @@ G_M42373_IG29: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre
ldr r2, [r0]
blx r3 // System.Text.Json.Utf8JsonWriter:WriteBooleanValue(ubyte):this
; gcrRegs -[r0 r6]
- b SHORT G_M42373_IG07
+ b SHORT G_M42373_IG08
;; size=20 bbWeight=0 PerfScore 0.00
G_M42373_IG30: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r6]
@@ -447,7 +450,7 @@ G_M42373_IG30: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre
ldr r2, [r0]
blx r3 // System.Text.Json.Utf8JsonWriter:WriteNullValue():this
; gcrRegs -[r0 r6]
- b SHORT G_M42373_IG07
+ b SHORT G_M42373_IG08
;; size=18 bbWeight=0 PerfScore 0.00
G_M42373_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
@@ -498,14 +501,14 @@ G_M42373_IG35: ; bbWeight=0, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, b
ldr r3, [r3]
blx r3 // System.Text.Json.JsonDocument:WriteComplexElement(int,System.Text.Json.Utf8JsonWriter):this
; gcrRegs -[r0 r2 r4 r6]
- b SHORT G_M42373_IG07
+ b SHORT G_M42373_IG08
;; size=20 bbWeight=0 PerfScore 0.00
RWD00 dd G_M42373_IG34
- dd G_M42373_IG07
+ dd G_M42373_IG08
dd G_M42373_IG09
- dd G_M42373_IG07
- dd G_M42373_IG07
- dd G_M42373_IG07
+ dd G_M42373_IG08
+ dd G_M42373_IG08
+ dd G_M42373_IG08
dd G_M42373_IG06
dd G_M42373_IG10
dd G_M42373_IG28
@@ -513,7 +516,7 @@ RWD00 dd G_M42373_IG34
dd G_M42373_IG30
-; Total bytes of code 688, prolog size 14, PerfScore 57.00, instruction count 258, allocated bytes for code 688 (MethodHash=47245a7a) for method System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)
+; Total bytes of code 690, prolog size 14, PerfScore 58.00, instruction count 259, allocated bytes for code 690 (MethodHash=47245a7a) for method System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)
; ============================================================
Unwind Info:
@@ -525,7 +528,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 344 (0x00158) Actual length = 688 (0x0002b0)
+ Function Length : 345 (0x00159) Actual length = 690 (0x0002b2)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+0.30%) : 723863.dasm - System.Xml.XmlWellFormedWriter:WriteEndAttribute():this (Tier1)
@@ -91,11 +91,11 @@ G_M47580_IG03: ; bbWeight=1.00, 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.00 PerfScore 8.99
+ bne G_M47580_IG26
+ ;; size=28 bbWeight=1.00 PerfScore 8.99
G_M47580_IG04: ; bbWeight=1.00, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz
ldr r3, [r6+0x1C]
; gcrRegs +[r3]
@@ -104,7 +104,7 @@ G_M47580_IG04: ; bbWeight=1.00, 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
...
+8 (+0.38%) : 77780.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 2842
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2842
; 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.08) 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,T16] ( 3, 0.76) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V34 tmp26 [V34,T16] ( 3, 0.76) 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,T07] ( 2, 1.53) ref -> r3 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V37 tmp29 [V37,T10] ( 4, 1.21) 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,T06] ( 4, 1.86) int -> r7 "fgMakeTemp is creating a new local variable"
-; V60 tmp52 [V60,T05] ( 4, 3.17) int -> r8 "fgMakeTemp is creating a new local variable"
+; V60 tmp52 [V60,T05] ( 4, 3.17) 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,40 +87,51 @@ G_M18455_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r3, [r4+0x08]
; gcrRegs +[r3]
cmp r3, 0
- beq SHORT G_M18455_IG11
- ;; size=6 bbWeight=1 PerfScore 3.00
+ beq G_M18455_IG23
+ ;; size=8 bbWeight=1 PerfScore 3.00
G_M18455_IG03: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz
ldrh r6, [r3+0x08]
movw r0, 0xd1ff
cmp r6, r0
- bhi SHORT G_M18455_IG12
+ bls SHORT G_M18455_IG11
;; size=10 bbWeight=1 PerfScore 4.00
-G_M18455_IG04: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M18455_IG04: ; bbWeight=0.62, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3]
movw r0, 0xd1ff
cmp r6, r0
- bls SHORT G_M18455_IG08
- ;; size=8 bbWeight=0.38 PerfScore 1.15
-G_M18455_IG05: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ bls G_M18455_IG32
+ ;; size=10 bbWeight=0.62 PerfScore 1.85
+G_M18455_IG05: ; bbWeight=0.59, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
cmp r6, r0
- bhi G_M18455_IG39
- ;; size=10 bbWeight=0.38 PerfScore 1.14
-G_M18455_IG06: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- sub r7, r6, 0x2080
+ bls G_M18455_IG42
+ movw r0, 0xd1ff
+ sxth r0, r0
+ adds r7, r6, r0
cmp r7, 0
- beq G_M18455_IG20
- ;; size=10 bbWeight=0.38 PerfScore 1.14
-G_M18455_IG07: ; bbWeight=0.08, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M18455_IG30
- ;; size=2 bbWeight=0.08 PerfScore 0.08
-G_M18455_IG08: ; bbWeight=0.00, 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_IG51
+ bne G_M18455_IG22
+ ;; size=24 bbWeight=0.59 PerfScore 4.70
+G_M18455_IG06: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r4
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsTrueIdentifier():ubyte:this
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
+ beq G_M18455_IG63
+ mov r0, r4
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleAnonymousMethodExpression():ubyte:this
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
+ bne G_M18455_IG57
mov r0, r4
; gcrRegs +[r0]
mov r1, r5
@@ -131,23 +142,177 @@ G_M18455_IG08: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne G_M18455_IG83
- ;; size=42 bbWeight=0.00 PerfScore 0.04
-G_M18455_IG09: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ bne G_M18455_IG60
+ ;; size=62 bbWeight=0.38 PerfScore 8.40
+G_M18455_IG07: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ 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_IG61
+ mov r0, r4
+ ; gcrRegs +[r0]
+ movs r1, 1
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcr arg pop 0
+ mov r8, r0
+ ; gcrRegs +[r8]
+ ldr r3, [r4+0x08]
+ ; gcrRegs +[r3]
+ cmp r3, 0
+ beq G_M18455_IG26
+ ;; size=48 bbWeight=0.38 PerfScore 6.87
+G_M18455_IG08: ; bbWeight=0.38, gcrefRegs=0118 {r3 r4 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ ldrh r0, [r3+0x08]
+ movw r3, 0xd1ff
+ ; gcrRegs -[r3]
+ cmp r0, r3
+ beq G_M18455_IG27
+ ;; size=12 bbWeight=0.38 PerfScore 1.53
+G_M18455_IG09: ; bbWeight=0.33, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4]
+ mov r0, r8
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=0.33 PerfScore 0.33
+G_M18455_IG10: ; bbWeight=0.33, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ ;; size=6 bbWeight=0.33 PerfScore 0.66
+G_M18455_IG11: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0 r8] +[r4]
+ movw r0, 0xd1ff
+ cmp r6, r0
+ bls G_M18455_IG34
+ ;; size=10 bbWeight=0.38 PerfScore 1.15
+G_M18455_IG12: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ movw r0, 0xd1ff
+ cmp r6, r0
+ bhi G_M18455_IG37
+ ;; size=10 bbWeight=0.38 PerfScore 1.14
+G_M18455_IG13: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ sub r7, r6, 0x2080
+ cmp r7, 0
+ bne SHORT G_M18455_IG25
+ ;; size=8 bbWeight=0.38 PerfScore 1.14
+G_M18455_IG14: ; bbWeight=0.29, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
- ;; size=12 bbWeight=0.00 PerfScore 0.01
-G_M18455_IG10: ; bbWeight=0.00, epilog, nogc, extend
+ ;; size=12 bbWeight=0.29 PerfScore 1.18
+G_M18455_IG15: ; bbWeight=0.29, 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.00 PerfScore 0.01
-G_M18455_IG11: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.29 PerfScore 0.88
+G_M18455_IG16: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
+ ldr r7, [r4+0xAC]
+ ; gcrRegs +[r7]
+ mov r0, r6
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcr arg pop 0
+ mov r8, r0
+ ldr r9, [r4+0x08]
+ ; gcrRegs +[r9]
+ cmp r9, 0
+ beq SHORT G_M18455_IG29
+ ;; size=30 bbWeight=0.25 PerfScore 2.52
+G_M18455_IG17: ; bbWeight=0.25, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x08]
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M18455_IG24
+ ;; size=16 bbWeight=0.25 PerfScore 1.51
+G_M18455_IG18: ; bbWeight=0.15, gcrefRegs=0291 {r0 r4 r7 r9}, byrefRegs=0000 {}, byref
+ ldr r3, [r3+0x3C]
+ ldr r3, [r3+0x14]
+ blx r3 // <unknown method>
+ ; gcr arg pop 0
+ mov r1, r0
+ ; gcrRegs +[r1]
+ ;; size=8 bbWeight=0.15 PerfScore 0.58
+G_M18455_IG19: ; bbWeight=0.25, gcrefRegs=0292 {r1 r4 r7 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ add r0, r4, 16
+ ; byrRegs +[r0]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0]
+ movs r0, 0
+ str r0, [r4+0x08]
+ ldr r0, [r4+0x14]
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ bne G_M18455_IG70
+ ;; size=26 bbWeight=0.25 PerfScore 2.27
+G_M18455_IG20: ; bbWeight=0.25, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ ldr r0, [r4+0x20]
+ adds r0, r0, 1
+ str r0, [r4+0x20]
+ mov r0, r7
+ ; gcrRegs +[r0]
+ mov r1, r8
+ mov r2, r9
+ ; gcrRegs +[r2]
+ movw lr, 0xd1ff
+ movt lr, 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 |
7 |
4 |
3 |
0 |
-32 |
+14 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| realworld.run.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
7 |
4 |
3 |
0 |
-32 |
+14 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm.checked.mch |
50,989 |
6,738 |
44,251 |
1,277 (2.44%) |
1,277 (2.44%) |
| benchmarks.run_pgo.linux.arm.checked.mch |
164,943 |
59,003 |
105,940 |
3,254 (1.93%) |
3,254 (1.93%) |
| benchmarks.run_tiered.linux.arm.checked.mch |
77,426 |
41,851 |
35,575 |
1,061 (1.35%) |
1,061 (1.35%) |
| coreclr_tests.run.linux.arm.checked.mch |
472,420 |
259,271 |
213,149 |
7,207 (1.50%) |
7,207 (1.50%) |
| libraries.crossgen2.linux.arm.checked.mch |
189,604 |
14 |
189,590 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.arm.checked.mch |
274,270 |
6 |
274,264 |
7,835 (2.78%) |
7,835 (2.78%) |
| libraries_tests.run.linux.arm.Release.mch |
709,962 |
443,614 |
266,348 |
17,932 (2.46%) |
17,932 (2.46%) |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
274,708 |
21,625 |
253,083 |
33,604 (10.90%) |
33,604 (10.90%) |
| realworld.run.linux.arm.checked.mch |
36,190 |
75 |
36,115 |
1,412 (3.76%) |
1,412 (3.76%) |
|
2,250,512 |
832,197 |
1,418,315 |
73,582 (3.17%) |
73,582 (3.17%) |
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: 239569136 (overridden on cmd)
Total bytes of diff: 239569118 (overridden on cmd)
Total bytes of delta: -18 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
8 : 77780.dasm (0.38 % of base)
4 : 723863.dasm (0.30 % of base)
2 : 599314.dasm (0.29 % of base)
Top file improvements (bytes):
-20 : 547930.dasm (-0.24 % of base)
-8 : 33286.dasm (-0.37 % of base)
-2 : 509261.dasm (-0.52 % of base)
-2 : 101797.dasm (-0.22 % of base)
7 total files with Code Size differences (4 improved, 3 regressed), 0 unchanged.
Top method regressions (bytes):
8 (0.38 % of base) : 77780.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
4 (0.30 % of base) : 723863.dasm - System.Xml.XmlWellFormedWriter:WriteEndAttribute():this (Tier1)
2 (0.29 % of base) : 599314.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)
Top method improvements (bytes):
-20 (-0.24 % of base) : 547930.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
-8 (-0.37 % of base) : 33286.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
-2 (-0.22 % of base) : 101797.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) : 509261.dasm - System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)
Top method regressions (percentages):
8 (0.38 % of base) : 77780.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
4 (0.30 % of base) : 723863.dasm - System.Xml.XmlWellFormedWriter:WriteEndAttribute():this (Tier1)
2 (0.29 % of base) : 599314.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)
Top method improvements (percentages):
-2 (-0.52 % of base) : 509261.dasm - System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)
-8 (-0.37 % of base) : 33286.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
-20 (-0.24 % of base) : 547930.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
-2 (-0.22 % of base) : 101797.dasm - System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.InvocationExpression (Tier1)
7 total methods with Code Size differences (4 improved, 3 regressed).
windows x86
Diffs are based on 2,354,252 contexts (851,840 MinOpts, 1,502,412 FullOpts).
Overall (+2 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.windows.x86.checked.mch |
48,695,572 |
+8 |
| libraries_tests.run.windows.x86.Release.mch |
190,251,789 |
-6 |
FullOpts (+2 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.windows.x86.checked.mch |
41,973,910 |
+8 |
| libraries_tests.run.windows.x86.Release.mch |
91,155,401 |
-6 |
Example diffs
benchmarks.run_pgo.windows.x86.checked.mch
+8 (+1.33%) : 111200.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.80
-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%) : 470666.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.78, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+G_M54976_IG03: ; bbWeight=0.78, 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.78 PerfScore 2.52
-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.22, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp SHORT G_M54976_IG08
+ ;; size=10 bbWeight=0.78 PerfScore 4.07
+G_M54976_IG04: ; bbWeight=0.13, 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.13 PerfScore 0.68
+G_M54976_IG05: ; bbWeight=0.22, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx esi]
cmp edi, 12
ja SHORT G_M54976_IG09
@@ -55,30 +58,27 @@ G_M54976_IG05: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=00000042 {e
add edx, eax
jmp edx
;; size=24 bbWeight=0.22 PerfScore 1.57
-G_M54976_IG06: ; bbWeight=0.13, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- 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.13 PerfScore 0.68
-G_M54976_IG07: ; bbWeight=0.05, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[ecx esi]
+G_M54976_IG06: ; bbWeight=0.05, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx esi]
- jmp SHORT G_M54976_IG04
+ jmp SHORT G_M54976_IG08
;; size=10 bbWeight=0.05 PerfScore 0.25
-G_M54976_IG08: ; bbWeight=0.05, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M54976_IG07: ; bbWeight=0.05, 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.05 PerfScore 0.25
-G_M54976_IG09: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=0.05 PerfScore 0.15
+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_IG07 - G_M54976_IG02
- dd G_M54976_IG03 - G_M54976_IG02
- dd G_M54976_IG08 - 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_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 14.52, 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 15.98, 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)
; ============================================================
-9 (-0.53%) : 76126.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
; ebp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7924
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7924
; 3 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -43,7 +43,7 @@
; V31 tmp23 [V31,T16] ( 2, 0.23) ref -> ebx class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V32 tmp24 [V32,T40] ( 2, 0 ) ref -> ebx class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V33 tmp25 [V33,T12] ( 2, 0.91) ref -> [ebp-0x1C] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp26 [V34,T15] ( 3, 0.45) ref -> ecx "guarded devirt return temp"
+; V34 tmp26 [V34,T15] ( 3, 0.45) ref -> registers "guarded devirt return temp"
; V35 tmp27 [V35,T08] ( 4, 1.36) ref -> ecx single-def "guarded devirt arg temp"
;* V36 tmp28 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxTokenWithTrivia>
; V37 tmp29 [V37,T41] ( 2, 0 ) ref -> edi class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
@@ -84,14 +84,14 @@ G_M18455_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
G_M18455_IG03: ; bbWeight=0.69, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
cmp ebx, 0x20BC
- jbe G_M18455_IG27
+ jbe G_M18455_IG24
;; size=12 bbWeight=0.69 PerfScore 0.86
G_M18455_IG04: ; bbWeight=0.65, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
cmp ebx, 0x2124
- jbe G_M18455_IG32
+ jbe G_M18455_IG43
lea edx, [ebx-0x213C]
test edx, edx
- jne G_M18455_IG22
+ jne G_M18455_IG17
;; size=26 bbWeight=0.65 PerfScore 1.96
G_M18455_IG05: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi
@@ -99,29 +99,29 @@ G_M18455_IG05: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsTrueIdentifier():ubyte:this]
; gcrRegs -[ecx]
test eax, eax
- je G_M18455_IG36
+ je G_M18455_IG56
mov ecx, esi
; gcrRegs +[ecx]
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleAnonymousMethodExpression():ubyte:this]
; gcrRegs -[ecx]
test eax, eax
- jne G_M18455_IG59
+ jne G_M18455_IG52
mov ecx, esi
; gcrRegs +[ecx]
mov edx, edi
call [<unknown method>]
; gcrRegs -[ecx]
test eax, eax
- jne G_M18455_IG33
+ jne G_M18455_IG54
;; size=50 bbWeight=0.48 PerfScore 6.56
-G_M18455_IG06: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M18455_IG06: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi
; gcrRegs +[ecx]
mov edx, edi
call [<unknown method>]
; gcrRegs -[ecx]
test eax, eax
- jne G_M18455_IG34
+ jne G_M18455_IG55
mov ecx, esi
; gcrRegs +[ecx]
mov edx, 1
@@ -134,8 +134,8 @@ G_M18455_IG06: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[ecx]
cmp word ptr [eax+0x08], 0x2048
- je SHORT G_M18455_IG15
- ;; size=49 bbWeight=0.48 PerfScore 7.51
+ je G_M18455_IG22
+ ;; size=53 bbWeight=0.48 PerfScore 7.51
G_M18455_IG07: ; bbWeight=0.42, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax esi]
mov eax, edi
@@ -150,45 +150,113 @@ G_M18455_IG08: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M18455_IG09: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18455_IG09: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi]
cmp ebx, 0x204D
- jbe SHORT G_M18455_IG13
- ;; size=8 bbWeight=0.31 PerfScore 0.39
+ jbe G_M18455_IG26
+ ;; size=12 bbWeight=0.31 PerfScore 0.39
G_M18455_IG10: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
cmp ebx, 0x208D
- ja G_M18455_IG31
+ ja G_M18455_IG29
;; size=12 bbWeight=0.30 PerfScore 0.37
G_M18455_IG11: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
lea eax, [ebx-0x2080]
test eax, eax
- je G_M18455_IG21
+ jne G_M18455_IG20
;; size=14 bbWeight=0.30 PerfScore 0.52
-G_M18455_IG12: ; bbWeight=0.09, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- jmp G_M18455_IG24
- ;; size=5 bbWeight=0.09 PerfScore 0.17
-G_M18455_IG13: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- cmp ebx, 0x200F
- ja G_M18455_IG62
- cmp ebx, 0x2008
- jne G_M18455_IG35
+G_M18455_IG12: ; bbWeight=0.21, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, edi
- call [<unknown method>]
- ; gcrRegs -[ecx]
- test eax, eax
- jne G_M18455_IG42
- ;; size=42 bbWeight=0.01 PerfScore 0.09
-G_M18455_IG14: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, esi
- ; gcrRegs +[ecx]
- call [<unknown method>]
+ call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeOfExpression():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeOfExpressionSyntax:this]
; gcrRegs -[ecx esi] +[eax]
jmp SHORT G_M18455_IG08
- ;; size=10 bbWeight=0.01 PerfScore 0.06
-G_M18455_IG15: ; bbWeight=0.06, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax] +[esi edi]
+ ;; size=10 bbWeight=0.21 PerfScore 1.10
+G_M18455_IG13: ; bbWeight=0.23, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax] +[esi]
+ mov edi, gword ptr [esi+0xAC]
+ ; gcrRegs +[edi]
+ mov ecx, ebx
+ call [<unknown method>]
+ mov ebx, eax
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx] +[eax]
+ mov gword ptr [ebp-0x1C], eax
+ ; GC ptr vars +{V33}
+ mov ecx, gword ptr [esi+0x08]
+ ; gcrRegs +[ecx]
+ mov edx, dword ptr [ecx]
+ cmp edx, 0xD1FFAB1E
+ je SHORT G_M18455_IG19
+ ;; size=40 bbWeight=0.23 PerfScore 3.40
+G_M18455_IG14: ; bbWeight=0.13, gcVars=0000000000001000 {V33}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ mov edx, dword ptr [edx+0x3C]
+ call [edx+0x14]<unknown method>
+ ; gcrRegs -[ecx] +[eax]
+ ;; size=6 bbWeight=0.13 PerfScore 0.66
+G_M18455_IG15: ; bbWeight=0.23, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+ lea edx, bword ptr [esi+0x10]
+ ; byrRegs +[edx]
+ call CORINFO_HELP_ASSIGN_REF_EAX
+ ; gcrRegs -[eax]
+ ; byrRegs -[edx]
+ xor ecx, ecx
+ ; gcrRegs +[ecx]
+ mov gword ptr [esi+0x08], ecx
+ cmp gword ptr [esi+0x14], 0
+ jne G_M18455_IG60
+ ;; size=23 bbWeight=0.23 PerfScore 1.53
+G_M18455_IG16: ; bbWeight=0.23, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
+ inc dword ptr [esi+0x20]
+ push gword ptr [ebp-0x1C]
+ mov ecx, edi
+ ; gcrRegs +[ecx]
+ mov edx, ebx
+ cmp dword ptr [ecx], ecx
+ ; GC ptr vars -{V33}
+ call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ContextAwareSyntax:LiteralExpression(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LiteralExpressionSyntax:this]
+ ; gcrRegs -[ecx esi edi] +[eax]
+ jmp G_M18455_IG08
+ ;; size=23 bbWeight=0.23 PerfScore 2.84
+G_M18455_IG17: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax] +[esi]
+ cmp edx, 14
+ ja G_M18455_IG44
+ ;; size=9 bbWeight=0.18 PerfScore 0.22
+G_M18455_IG18: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ lea ecx, [@RWD00]
+ mov ecx, dword ptr [ecx+4*edx]
+ lea eax, G_M18455_IG02
+ add ecx, eax
+ jmp ecx
+ ;; size=19 bbWeight=0.18 PerfScore 1.02
+G_M18455_IG19: ; bbWeight=0.10, gcVars=0000000000001000 {V33}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ecx edi]
+ ; GC ptr vars +{V12 V33}
+ mov edx, gword ptr [ecx+0x10]
+ ; gcrRegs +[edx]
+ mov eax, edx
+ ; gcrRegs +[eax]
+ jmp SHORT G_M18455_IG15
+ ;; size=7 bbWeight=0.10 PerfScore 0.41
+G_M18455_IG20: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax ecx edx edi]
+ ; GC ptr vars -{V12 V33}
+ cmp eax, 4
+ ja SHORT G_M18455_IG23
+ ;; size=5 bbWeight=0.09 PerfScore 0.11
+G_M18455_IG21: ; bbWeight=0.09, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ lea ecx, [@RWD60]
+ mov ecx, dword ptr [ecx+4*eax]
+ lea edx, G_M18455_IG02
+ add ecx, edx
+ jmp ecx
+ ;; size=19 bbWeight=0.09 PerfScore 0.50
+G_M18455_IG22: ; bbWeight=0.06, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[edi]
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
@@ -208,118 +276,77 @@ G_M18455_IG15: ; bbWeight=0.06, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[ecx ebx esi edi] +[eax]
jmp G_M18455_IG08
;; size=38 bbWeight=0.06 PerfScore 0.81
-G_M18455_IG16: ; bbWeight=0.23, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M18455_IG23: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] +[esi]
- mov edi, gword ptr [esi+0xAC]
- ; gcrRegs +[edi]
- mov ecx, ebx
- call [<unknown method>]
- mov ebx, eax
- mov ecx, esi
- ; gcrRegs +[ecx]
- call [<unknown method>]
- ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x1C], eax
- ; GC ptr vars +{V33}
- mov ecx, gword ptr [esi+0x08]
- ; gcrRegs +[ecx]
- mov edx, dword ptr [ecx]
- cmp edx, 0xD1FFAB1E
- jne SHORT G_M18455_IG18
- ;; size=40 bbWeight=0.23 PerfScore 3.40
-G_M18455_IG17: ; bbWeight=0.10, gcVars=0000000000001000 {V33}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov ecx, gword ptr [ecx+0x10]
- jmp SHORT G_M18455_IG19
...
+6 (+1.21%) : 189302.dasm - System.String:EndsWith(System.String,int):ubyte:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; ebp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2228
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2228
; 6 inlinees with PGO data; 13 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
@@ -42,8 +42,8 @@
;* V30 tmp26 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp27 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V32 tmp28 [V32,T10] ( 4, 0.02) ubyte -> eax "Inline return value spill temp"
-; V33 tmp29 [V33,T07] ( 6, 0.05) int -> eax "Inlining Arg"
-; V34 tmp30 [V34,T09] ( 4, 0.03) byref -> edx single-def "Inlining Arg"
+; V33 tmp29 [V33,T07] ( 6, 0.05) int -> edx "Inlining Arg"
+; V34 tmp30 [V34,T09] ( 4, 0.03) byref -> esi single-def "Inlining Arg"
; V35 tmp31 [V35,T05] ( 5, 0.22) int -> eax "Single return block return value"
; V36 tmp32 [V36,T19] ( 2, 0 ) byref -> ebx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
; V37 tmp33 [V37,T25] ( 2, 0 ) int -> edi "field V06._length (fldOffset=0x4)" P-INDEP
@@ -91,18 +91,18 @@ G_M10841_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=16 bbWeight=1 PerfScore 6.00
G_M10841_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test esi, esi
- je G_M10841_IG17
- cmp edi, esi
je G_M10841_IG18
- mov eax, dword ptr [esi+0x04]
- mov dword ptr [ebp-0x14], eax
- test eax, eax
+ cmp edi, esi
je G_M10841_IG19
+ mov edx, dword ptr [esi+0x04]
+ mov dword ptr [ebp-0x14], edx
+ test edx, edx
+ je G_M10841_IG20
cmp ebx, 5
jne SHORT G_M10841_IG08
;; size=35 bbWeight=1 PerfScore 8.00
G_M10841_IG03: ; bbWeight=0.95, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [edi+0x04], eax
+ cmp dword ptr [edi+0x04], edx
jge SHORT G_M10841_IG11
;; size=5 bbWeight=0.95 PerfScore 3.81
G_M10841_IG04: ; bbWeight=0.95, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -131,12 +131,12 @@ G_M10841_IG07: ; bbWeight=0.05, epilog, nogc, extend
G_M10841_IG08: ; bbWeight=0.05, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi edi]
cmp ebx, 5
- ja G_M10841_IG23
- lea edx, [@RWD00]
- mov edx, dword ptr [edx+4*ebx]
+ ja G_M10841_IG17
+ lea eax, [@RWD00]
+ mov eax, dword ptr [eax+4*ebx]
lea ecx, G_M10841_IG02
- add edx, ecx
- jmp edx
+ add eax, ecx
+ jmp eax
;; size=28 bbWeight=0.05 PerfScore 0.33
G_M10841_IG09: ; bbWeight=0.05, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
call [<unknown method>]
@@ -172,79 +172,49 @@ G_M10841_IG10: ; bbWeight=0.05, gcVars=00000040 {V09}, gcrefRegs=000000C0
G_M10841_IG11: ; bbWeight=0.01, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi]
mov ecx, dword ptr [edi+0x04]
- sub ecx, eax
+ sub ecx, edx
lea ecx, bword ptr [edi+2*ecx+0x08]
; byrRegs +[ecx]
- lea edx, bword ptr [esi+0x08]
- ; byrRegs +[edx]
- cmp eax, 8
+ add esi, 8
+ ; gcrRegs -[esi]
+ ; byrRegs +[esi]
+ cmp edx, 8
jge SHORT G_M10841_IG14
;; size=17 bbWeight=0.01 PerfScore 0.04
-G_M10841_IG12: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000006 {ecx edx}, byref
- ; gcrRegs -[esi edi]
- push eax
+G_M10841_IG12: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000042 {ecx esi}, byref
+ ; gcrRegs -[edi]
+ push edx
+ mov edx, esi
+ ; byrRegs +[edx]
call [<unknown method>]
- ; byrRegs -[ecx edx]
- ;; size=7 bbWeight=0.00 PerfScore 0.02
+ ; byrRegs -[ecx edx esi]
+ ;; size=9 bbWeight=0.00 PerfScore 0.02
G_M10841_IG13: ; bbWeight=0.01, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
jmp G_M10841_IG06
;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M10841_IG14: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000006 {ecx edx}, byref, isz
- ; byrRegs +[ecx edx]
- cmp eax, 16
+G_M10841_IG14: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000042 {ecx esi}, byref, isz
+ ; byrRegs +[ecx esi]
+ cmp edx, 16
jl SHORT G_M10841_IG16
;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M10841_IG15: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000006 {ecx edx}, byref, isz
- push eax
+G_M10841_IG15: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000042 {ecx esi}, byref, isz
+ push edx
+ mov edx, esi
+ ; byrRegs +[edx]
call [<unknown method>]
- ; byrRegs -[ecx edx]
+ ; byrRegs -[ecx edx esi]
jmp SHORT G_M10841_IG13
- ;; size=9 bbWeight=0.00 PerfScore 0.01
-G_M10841_IG16: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000006 {ecx edx}, byref, isz
- ; byrRegs +[ecx edx]
- push eax
+ ;; size=11 bbWeight=0.00 PerfScore 0.01
+G_M10841_IG16: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000042 {ecx esi}, byref, isz
+ ; byrRegs +[ecx esi]
+ push edx
+ mov edx, esi
+ ; byrRegs +[edx]
call [<unknown method>]
- ; byrRegs -[ecx edx]
+ ; byrRegs -[ecx edx esi]
jmp SHORT G_M10841_IG13
- ;; size=9 bbWeight=0.00 PerfScore 0.01
+ ;; size=11 bbWeight=0.00 PerfScore 0.01
G_M10841_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xCE0
- mov edx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[eax]
- mov ecx, eax
- ; gcrRegs +[ecx]
- call [System.ArgumentNullException:Throw(System.String)]
- ; gcrRegs -[eax ecx]
- int3
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M10841_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- cmp ebx, 5
- jbe SHORT G_M10841_IG21
- jmp SHORT G_M10841_IG20
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M10841_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- cmp ebx, 5
- jbe SHORT G_M10841_IG21
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M10841_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 27
- mov edx, 41
- call [System.ThrowHelper:ThrowArgumentException(int,int)]
- int3
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M10841_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov eax, 1
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M10841_IG22: ; bbWeight=0, epilog, nogc, extend
- lea esp, [ebp-0x0C]
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 4
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M10841_IG23: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -268,7 +238,44 @@ G_M10841_IG23: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
call CORINFO_HELP_THROW
; gcrRegs -[ecx esi]
;; size=53 bbWeight=0 PerfScore 0.00
-G_M10841_IG24: ; bbWeight=0, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+G_M10841_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ecx, 0xCE0
+ mov edx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[eax]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ call [System.ArgumentNullException:Throw(System.String)]
+ ; gcrRegs -[eax ecx]
+ int3
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M10841_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, 5
+ jbe SHORT G_M10841_IG22
+ jmp SHORT G_M10841_IG21
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M10841_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ cmp ebx, 5
+ jbe SHORT G_M10841_IG22
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M10841_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov ecx, 27
+ mov edx, 41
+ call [System.ThrowHelper:ThrowArgumentException(int,int)]
+ int3
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M10841_IG22: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M10841_IG23: ; bbWeight=0, epilog, nogc, extend
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 4
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M10841_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[eax esi edi]
mov ecx, eax
; gcrRegs +[ecx]
@@ -312,7 +319,7 @@ G_M10841_IG25: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
G_M10841_IG26: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi]
mov ecx, dword ptr [edi+0x04]
- sub ecx, eax
+ sub ecx, edx
cmp dword ptr [edi+0x04], ecx
jb G_M10841_IG04
lea ebx, bword ptr [edi+2*ecx+0x08]
@@ -359,6 +366,6 @@ RWD00 dd G_M10841_IG09 - G_M10841_IG02
dd G_M10841_IG03 - G_M10841_IG02
-; Total bytes of code 497, prolog size 9, PerfScore 24.27, instruction count 162, allocated bytes for code 497 (MethodHash=4973d5a6) for method System.String:EndsWith(System.String,int):ubyte:this (Tier1)
+; Total bytes of code 503, prolog size 9, PerfScore 24.27, instruction count 165, allocated bytes for code 503 (MethodHash=4973d5a6) for method System.String:EndsWith(System.String,int):ubyte: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 |
3 |
2 |
1 |
0 |
-12 |
+6 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| realworld.run.windows.x86.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
4 |
2 |
2 |
0 |
-12 |
+14 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x86.checked.mch |
24,694 |
4 |
24,690 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.windows.x86.checked.mch |
123,995 |
42,622 |
81,373 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_tiered.windows.x86.checked.mch |
48,297 |
29,031 |
19,266 |
0 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.windows.x86.checked.mch |
585,246 |
326,478 |
258,768 |
0 (0.00%) |
0 (0.00%) |
| libraries.crossgen2.windows.x86.checked.mch |
273,595 |
15 |
273,580 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.x86.checked.mch |
307,491 |
6 |
307,485 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.windows.x86.Release.mch |
638,041 |
431,750 |
206,291 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
316,862 |
21,931 |
294,931 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.windows.x86.checked.mch |
36,031 |
3 |
36,028 |
0 (0.00%) |
0 (0.00%) |
|
2,354,252 |
851,840 |
1,502,412 |
0 (0.00%) |
0 (0.00%) |
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: 48695572 (overridden on cmd)
Total bytes of diff: 48695580 (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 : 111200.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) : 111200.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) : 111200.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: 190251789 (overridden on cmd)
Total bytes of diff: 190251783 (overridden on cmd)
Total bytes of delta: -6 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
6 : 189302.dasm (1.21 % of base)
Top file improvements (bytes):
-9 : 76126.dasm (-0.53 % of base)
-3 : 470666.dasm (-1.90 % of base)
3 total files with Code Size differences (2 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
6 (1.21 % of base) : 189302.dasm - System.String:EndsWith(System.String,int):ubyte:this (Tier1)
Top method improvements (bytes):
-9 (-0.53 % of base) : 76126.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
-3 (-1.90 % of base) : 470666.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)
Top method regressions (percentages):
6 (1.21 % of base) : 189302.dasm - System.String:EndsWith(System.String,int):ubyte:this (Tier1)
Top method improvements (percentages):
-3 (-1.90 % of base) : 470666.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)
-9 (-0.53 % of base) : 76126.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
3 total methods with Code Size differences (2 improved, 1 regressed).