Assembly Diffs
linux arm
Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).
MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)
Overall (-254 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.linux.arm.checked.mch |
63,958,070 |
-4 |
coreclr_tests.run.linux.arm.checked.mch |
321,764,266 |
-168 |
libraries_tests.run.linux.arm.Release.mch |
243,880,786 |
-82 |
FullOpts (-254 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.linux.arm.checked.mch |
52,758,104 |
-4 |
coreclr_tests.run.linux.arm.checked.mch |
109,286,678 |
-168 |
libraries_tests.run.linux.arm.Release.mch |
122,911,654 |
-82 |
Example diffs
benchmarks.run_pgo.linux.arm.checked.mch
-2 (-1.25%) : 123131.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationSync(int,int,int):this (Tier1)
@@ -27,9 +27,9 @@ G_M36773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=10 bbWeight=1 PerfScore 3.00
G_M36773_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r1, 0
- bne SHORT G_M36773_IG04
+ bne SHORT G_M36773_IG06
;; size=4 bbWeight=1 PerfScore 2.00
-G_M36773_IG03: ; bbWeight=0.67, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M36773_IG03: ; bbWeight=0.67, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
mov r1, r2
@@ -40,9 +40,18 @@ G_M36773_IG03: ; bbWeight=0.67, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
- b SHORT G_M36773_IG07
- ;; size=20 bbWeight=0.67 PerfScore 5.33
-G_M36773_IG04: ; bbWeight=0.33, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=18 bbWeight=0.67 PerfScore 4.67
+G_M36773_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x4C]
+ cmp r0, 2
+ ble SHORT G_M36773_IG10
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M36773_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r4]
+ pop {r4,r5,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M36773_IG06: ; bbWeight=0.33, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4]
str r1, [r4+0x58]
movs r0, 0
str r0, [r4+0x1C]
@@ -51,7 +60,7 @@ G_M36773_IG04: ; bbWeight=0.33, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r5, [r4+0x30]
; gcrRegs +[r5]
cmp r5, 0
- beq SHORT G_M36773_IG05
+ beq SHORT G_M36773_IG07
mov r0, r5
; gcrRegs +[r0]
movs r2, 1
@@ -63,10 +72,10 @@ G_M36773_IG04: ; bbWeight=0.33, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
ldr r0, [r4+0x4C]
cmp r0, 2
- bne SHORT G_M36773_IG05
+ bne SHORT G_M36773_IG07
ldrb r0, [r4+0x77]
cmp r0, 0
- bne SHORT G_M36773_IG05
+ bne SHORT G_M36773_IG07
mov r0, r5
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -78,27 +87,17 @@ G_M36773_IG04: ; bbWeight=0.33, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
movs r0, 0
str r0, [r4+0x30]
;; size=64 bbWeight=0.33 PerfScore 9.00
-G_M36773_IG05: ; bbWeight=0.33, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M36773_IG07: ; bbWeight=0.33, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r0, 0
str r0, [r4+0x2C]
;; size=4 bbWeight=0.33 PerfScore 0.67
-G_M36773_IG06: ; bbWeight=0.33, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M36773_IG08: ; bbWeight=0.33, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
str r0, [r4+0x64]
ldrb r0, [r4+0x78]
cmp r0, 0
- bne SHORT G_M36773_IG09
+ beq SHORT G_M36773_IG04
;; size=10 bbWeight=0.33 PerfScore 1.33
-G_M36773_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x4C]
- cmp r0, 2
- ble SHORT G_M36773_IG10
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M36773_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r4]
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M36773_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
+G_M36773_IG09: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -109,7 +108,7 @@ G_M36773_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
; gcr arg pop 0
ldr r0, [r4+0x4C]
cmp r0, 2
- bgt SHORT G_M36773_IG08
+ bgt SHORT G_M36773_IG05
;; size=20 bbWeight=0 PerfScore 0.00
G_M36773_IG10: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4
@@ -124,7 +123,7 @@ G_M36773_IG11: ; bbWeight=0, epilog, nogc, extend
; gcr arg pop 0
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 10, PerfScore 25.33, instruction count 64, allocated bytes for code 160 (MethodHash=37ee705a) for method System.Net.Sockets.SocketAsyncEventArgs:FinishOperationSync(int,int,int):this (Tier1)
+; Total bytes of code 158, prolog size 10, PerfScore 24.67, instruction count 63, allocated bytes for code 158 (MethodHash=37ee705a) for method System.Net.Sockets.SocketAsyncEventArgs:FinishOperationSync(int,int,int):this (Tier1)
; ============================================================
Unwind Info:
@@ -136,7 +135,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 160 (0x0000a0)
+ Function Length : 79 (0x0004f) Actual length = 158 (0x00009e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-2 (-1.25%) : 81536.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationSync(int,int,int):this (Tier1)
@@ -27,9 +27,9 @@ G_M36773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=10 bbWeight=1 PerfScore 3.00
G_M36773_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r1, 0
- bne SHORT G_M36773_IG04
+ bne SHORT G_M36773_IG06
;; size=4 bbWeight=1 PerfScore 2.00
-G_M36773_IG03: ; bbWeight=0.75, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M36773_IG03: ; bbWeight=0.75, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
mov r1, r2
@@ -40,9 +40,18 @@ G_M36773_IG03: ; bbWeight=0.75, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
- b SHORT G_M36773_IG07
- ;; size=20 bbWeight=0.75 PerfScore 6.00
-G_M36773_IG04: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=18 bbWeight=0.75 PerfScore 5.25
+G_M36773_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x4C]
+ cmp r0, 2
+ ble SHORT G_M36773_IG10
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M36773_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r4]
+ pop {r4,r5,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M36773_IG06: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4]
str r1, [r4+0x58]
movs r0, 0
str r0, [r4+0x1C]
@@ -51,7 +60,7 @@ G_M36773_IG04: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r5, [r4+0x30]
; gcrRegs +[r5]
cmp r5, 0
- beq SHORT G_M36773_IG05
+ beq SHORT G_M36773_IG07
mov r0, r5
; gcrRegs +[r0]
movs r2, 1
@@ -63,10 +72,10 @@ G_M36773_IG04: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
ldr r0, [r4+0x4C]
cmp r0, 2
- bne SHORT G_M36773_IG05
+ bne SHORT G_M36773_IG07
ldrb r0, [r4+0x77]
cmp r0, 0
- bne SHORT G_M36773_IG05
+ bne SHORT G_M36773_IG07
mov r0, r5
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -78,27 +87,17 @@ G_M36773_IG04: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
movs r0, 0
str r0, [r4+0x30]
;; size=64 bbWeight=0.25 PerfScore 6.75
-G_M36773_IG05: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M36773_IG07: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r0, 0
str r0, [r4+0x2C]
;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M36773_IG06: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M36773_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
str r0, [r4+0x64]
ldrb r0, [r4+0x78]
cmp r0, 0
- bne SHORT G_M36773_IG09
+ beq SHORT G_M36773_IG04
;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M36773_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x4C]
- cmp r0, 2
- ble SHORT G_M36773_IG10
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M36773_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r4]
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M36773_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
+G_M36773_IG09: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -109,7 +108,7 @@ G_M36773_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
; gcr arg pop 0
ldr r0, [r4+0x4C]
cmp r0, 2
- bgt SHORT G_M36773_IG08
+ bgt SHORT G_M36773_IG05
;; size=20 bbWeight=0 PerfScore 0.00
G_M36773_IG10: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4
@@ -124,7 +123,7 @@ G_M36773_IG11: ; bbWeight=0, epilog, nogc, extend
; gcr arg pop 0
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 10, PerfScore 23.25, instruction count 64, allocated bytes for code 160 (MethodHash=37ee705a) for method System.Net.Sockets.SocketAsyncEventArgs:FinishOperationSync(int,int,int):this (Tier1)
+; Total bytes of code 158, prolog size 10, PerfScore 22.50, instruction count 63, allocated bytes for code 158 (MethodHash=37ee705a) for method System.Net.Sockets.SocketAsyncEventArgs:FinishOperationSync(int,int,int):this (Tier1)
; ============================================================
Unwind Info:
@@ -136,7 +135,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 80 (0x00050) Actual length = 160 (0x0000a0)
+ Function Length : 79 (0x0004f) Actual length = 158 (0x00009e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 121542.dasm - System.Uri:InitializeUri(int,int,byref):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 2
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
; 1 inlinees with PGO data; 12 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -89,7 +89,7 @@ G_M23412_IG02: ; bbWeight=1, gcVars=0000000000000004 {V03}, gcrefRegs=001
ldr r7, [r4+0x08]
ands r3, r7, 0x20000000
cmp r3, 0
- beq SHORT G_M23412_IG06
+ beq SHORT G_M23412_IG07
;; size=16 bbWeight=1 PerfScore 6.00
G_M23412_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
ands r3, r7, 0x8000000
@@ -131,27 +131,34 @@ G_M23412_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0},
str r2, [r1]
str r3, [r1+0x04]
;; size=28 bbWeight=0.50 PerfScore 5.00
-G_M23412_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+G_M23412_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; gcrRegs -[r4]
; byrRegs -[r1]
movs r3, 0
str r3, [r0]
- b SHORT G_M23412_IG10
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M23412_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M23412_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ; byrRegs -[r0]
+ ; GC ptr vars -{V03}
+ add sp, 24
+ pop {r4,r5,r6,r7,r8,r10,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M23412_IG07: ; bbWeight=0.50, gcVars=0000000000000004 {V03}, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, gcvars, byref, isz
; gcrRegs +[r4]
+ ; byrRegs +[r0]
+ ; GC ptr vars +{V02 V03}
mov r8, 0
ldr r3, [r4+0x18]
; gcrRegs +[r3]
cmp r3, 0
- beq SHORT G_M23412_IG07
+ beq SHORT G_M23412_IG08
ldr r3, [r3+0x08]
; gcrRegs -[r3]
ands r3, r3, 0x10000000
cmp r3, 0
- beq SHORT G_M23412_IG08
+ beq SHORT G_M23412_IG09
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M23412_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23412_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
ldr r3, [r4+0x10]
; gcrRegs +[r3]
@@ -167,7 +174,7 @@ G_M23412_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
cmp r0, 0
bne G_M23412_IG26
;; size=22 bbWeight=0.50 PerfScore 4.00
-G_M23412_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23412_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x0C] // [V03 arg3]
; byrRegs +[r0]
ldr r3, [r4+0x18]
@@ -200,20 +207,12 @@ G_M23412_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; byrRegs +[r0]
str r1, [r0]
;; size=54 bbWeight=0.50 PerfScore 10.50
-G_M23412_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M23412_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
cmp r8, 0
- bne SHORT G_M23412_IG11
+ beq SHORT G_M23412_IG06
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M23412_IG10: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[r4]
- ; GC ptr vars -{V03}
- add sp, 24
- pop {r4,r5,r6,r7,r8,r10,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M23412_IG11: ; bbWeight=0, gcVars=0000000000000004 {V03}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
- ; GC ptr vars +{V02 V03}
+G_M23412_IG11: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -222,7 +221,7 @@ G_M23412_IG11: ; bbWeight=0, gcVars=0000000000000004 {V03}, gcrefRegs=001
blx r3 // System.Uri:EnsureParseRemaining():this
; gcrRegs -[r0 r4]
; gcr arg pop 0
- b SHORT G_M23412_IG10
+ b SHORT G_M23412_IG06
;; size=16 bbWeight=0 PerfScore 0.00
G_M23412_IG12: ; bbWeight=0, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r3-r4]
@@ -277,11 +276,11 @@ G_M23412_IG12: ; bbWeight=0, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, b
cmp r0, 0
beq SHORT G_M23412_IG14
cmp r5, 1
- beq SHORT G_M23412_IG10
+ beq SHORT G_M23412_IG06
cmp r6, 0
- beq SHORT G_M23412_IG10
+ beq SHORT G_M23412_IG06
cmp r6, 4
- bgt SHORT G_M23412_IG10
+ bgt SHORT G_M23412_IG06
movs r0, 0
; gcrRegs -[r0]
str r0, [r4+0x18]
@@ -301,7 +300,7 @@ G_M23412_IG13: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
add r2, r4, 8
str r3, [r2]
str r0, [r2+0x04]
- b SHORT G_M23412_IG10
+ b SHORT G_M23412_IG06
;; size=30 bbWeight=0 PerfScore 0.00
G_M23412_IG14: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0004 {r2}, byref, isz
cmp r6, 0
@@ -355,8 +354,8 @@ G_M23412_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0004 {r2}, by
;; size=36 bbWeight=0 PerfScore 0.00
G_M23412_IG17: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0004 {r2}, byref, isz
cmp r8, 0
- beq SHORT G_M23412_IG10
- ;; size=6 bbWeight=0 PerfScore 0.00
+ beq G_M23412_IG06
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M23412_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r2]
mov r0, r4
@@ -367,7 +366,7 @@ G_M23412_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
blx r3 // System.Uri:EnsureParseRemaining():this
; gcrRegs -[r0 r4]
; gcr arg pop 0
- b SHORT G_M23412_IG10
+ b SHORT G_M23412_IG06
;; size=16 bbWeight=0 PerfScore 0.00
G_M23412_IG19: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
; gcrRegs +[r4]
@@ -391,7 +390,7 @@ G_M23412_IG19: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, by
str r1, [r0]
str r3, [r0+0x04]
cmp r8, 0
- beq G_M23412_IG10
+ beq G_M23412_IG06
movs r3, 0
str r3, [sp] // [V07 OutArgs]
ldr r3, [r4+0x14]
@@ -426,7 +425,7 @@ G_M23412_IG19: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, by
; gcrRegs +[r0]
ldr r0, [r0+0x04]
; gcrRegs -[r0]
- b SHORT G_M23412_IG10
+ b SHORT G_M23412_IG06
;; size=100 bbWeight=0 PerfScore 0.00
G_M23412_IG20: ; bbWeight=0, gcVars=0000000000000004 {V03}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V02 V03}
@@ -451,7 +450,7 @@ G_M23412_IG20: ; bbWeight=0, gcVars=0000000000000004 {V03}, gcrefRegs=001
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M23412_IG10
+ b SHORT G_M23412_IG06
;; size=36 bbWeight=0 PerfScore 0.00
G_M23412_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
@@ -485,10 +484,10 @@ G_M23412_IG23: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, by
;; size=22 bbWeight=0 PerfScore 0.00
G_M23412_IG24: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
cmp r5, 2
- bne G_M23412_IG06
+ bne G_M23412_IG07
ands r1, r7, 0x8000000
cmp r1, 0
- beq G_M23412_IG06
+ beq G_M23412_IG07
movs r1, 0
str r1, [r4+0x18]
add r1, r4, 8
@@ -508,7 +507,7 @@ G_M23412_IG25: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, by
; byrRegs -[lr]
cmp r6, 4
bgt SHORT G_M23412_IG20
- b SHORT G_M23412_IG06
+ b SHORT G_M23412_IG07
;; size=6 bbWeight=0 PerfScore 0.00
G_M23412_IG26: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
@@ -533,7 +532,7 @@ G_M23412_IG26: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0 lr]
- b SHORT G_M23412_IG08
+ b SHORT G_M23412_IG09
;; size=50 bbWeight=0 PerfScore 0.00
G_M23412_IG27: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r5, 1
@@ -559,7 +558,7 @@ G_M23412_IG28: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; byrRegs +[r2]
str r3, [r2]
str r0, [r2+0x04]
- b SHORT G_M23412_IG10
+ b SHORT G_M23412_IG06
;; size=30 bbWeight=0 PerfScore 0.00
G_M23412_IG29: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r2]
@@ -580,7 +579,7 @@ G_M23412_IG29: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M23412_IG09
+ b SHORT G_M23412_IG10
;; size=30 bbWeight=0 PerfScore 0.00
G_M23412_IG30: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movs r0, 12
@@ -601,7 +600,7 @@ G_M23412_IG30: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M23412_IG09
+ b SHORT G_M23412_IG10
;; size=32 bbWeight=0 PerfScore 0.00
G_M23412_IG31: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs -[r4] +[r0]
@@ -621,8 +620,8 @@ G_M23412_IG32: ; bbWeight=0, gcVars=0000000000000004 {V03}, gcrefRegs=000
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- movw r0, LOW ADDRESS G_M23412_IG10
- movt r0, HIGH ADDRESS G_M23412_IG10
+ movw r0, LOW ADDRESS G_M23412_IG06
+ movt r0, HIGH ADDRESS G_M23412_IG06
;; size=24 bbWeight=0 PerfScore 0.00
G_M23412_IG33: ; bbWeight=0, funclet epilog, nogc, extend
pop {r2,r3,r4,r5,r6,r7,r8,r10,r11,pc}
@@ -646,14 +645,14 @@ G_M23412_IG35: ; bbWeight=0, gcVars=0000000000000004 {V03}, gcrefRegs=000
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- movw r0, LOW ADDRESS G_M23412_IG10
- movt r0, HIGH ADDRESS G_M23412_IG10
+ movw r0, LOW ADDRESS G_M23412_IG06
+ movt r0, HIGH ADDRESS G_M23412_IG06
...
+0 (0.00%) : 70303.dasm - System.Text.StringBuilder:Append(System.String):System.Text.StringBuilder:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; r11 based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 9
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 9
; 3 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -32,12 +32,12 @@ G_M13271_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M13271_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M13271_IG11
+ beq SHORT G_M13271_IG07
add r3, r1, 8
; byrRegs +[r3]
ldr r5, [r1+0x04]
cmp r5, 0
- beq SHORT G_M13271_IG11
+ beq SHORT G_M13271_IG07
ldr r0, [r4+0x04]
; gcrRegs +[r0]
ldr r6, [r4+0x0C]
@@ -45,7 +45,7 @@ G_M13271_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
ldr r2, [r0+0x04]
cmp r1, r2
- bhi SHORT G_M13271_IG10
+ bhi SHORT G_M13271_IG09
;; size=26 bbWeight=1 PerfScore 12.00
G_M13271_IG03: ; bbWeight=0.78, gcrefRegs=0011 {r0 r4}, byrefRegs=0008 {r3}, byref, isz
adds r0, 8
@@ -54,55 +54,33 @@ G_M13271_IG03: ; bbWeight=0.78, gcrefRegs=0011 {r0 r4}, byrefRegs=0008 {r
lsls r1, r6, 1
adds r0, r0, r1
cmp r5, 2
- bgt SHORT G_M13271_IG06
+ bgt SHORT G_M13271_IG10
;; size=10 bbWeight=0.78 PerfScore 3.89
G_M13271_IG04: ; bbWeight=0.67, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3}, byref, isz
ldrh r1, [r3]
strh r1, [r0]
cmp r5, 2
- bne SHORT G_M13271_IG08
+ bne SHORT G_M13271_IG06
;; size=8 bbWeight=0.67 PerfScore 2.67
-G_M13271_IG05: ; bbWeight=0.56, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3}, byref, isz
+G_M13271_IG05: ; bbWeight=0.56, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3}, byref
ldrh r3, [r3+0x02]
; byrRegs -[r3]
strh r3, [r0+0x02]
- b SHORT G_M13271_IG08
- ;; size=6 bbWeight=0.56 PerfScore 1.67
-G_M13271_IG06: ; bbWeight=0.11, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3}, byref, isz
- ; byrRegs +[r3]
- lsls r2, r5, 1
- cmp r2, 2
- beq SHORT G_M13271_IG09
- ;; size=6 bbWeight=0.11 PerfScore 0.33
-G_M13271_IG07: ; bbWeight=0.06, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3}, byref
- mov r1, r3
- ; byrRegs +[r1]
- movw r3, 0xd1ff
- ; byrRegs -[r3]
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; byrRegs -[r0-r1]
- ;; size=14 bbWeight=0.06 PerfScore 0.28
-G_M13271_IG08: ; bbWeight=0.78, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.56 PerfScore 1.11
+G_M13271_IG06: ; bbWeight=0.78, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0]
adds r0, r6, r5
str r0, [r4+0x0C]
- b SHORT G_M13271_IG11
- ;; size=6 bbWeight=0.78 PerfScore 2.33
-G_M13271_IG09: ; bbWeight=0.06, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3}, byref, isz
- ; byrRegs +[r0 r3]
- mov r1, r3
- ; byrRegs +[r1]
- movs r2, 2
- movw r3, 0xd1ff
- ; byrRegs -[r3]
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; byrRegs -[r0-r1]
- b SHORT G_M13271_IG08
- ;; size=18 bbWeight=0.06 PerfScore 0.39
-G_M13271_IG10: ; bbWeight=0.22, gcrefRegs=0010 {r4}, byrefRegs=0008 {r3}, byref
+ ;; size=4 bbWeight=0.78 PerfScore 1.56
+G_M13271_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M13271_IG08: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M13271_IG09: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0008 {r3}, gcvars, byref, isz
+ ; gcrRegs -[r0]
; byrRegs +[r3]
mov r0, r4
; gcrRegs +[r0]
@@ -116,29 +94,57 @@ G_M13271_IG10: ; bbWeight=0.22, gcrefRegs=0010 {r4}, byrefRegs=0008 {r3},
blx r3 // <unknown method>
; gcrRegs -[r0]
; byrRegs -[r1]
- ;; size=18 bbWeight=0.22 PerfScore 1.56
-G_M13271_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r4
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M13271_IG12: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ b SHORT G_M13271_IG07
+ ;; size=20 bbWeight=0.22 PerfScore 1.78
+G_M13271_IG10: ; bbWeight=0.11, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3}, byref, isz
+ ; byrRegs +[r0 r3]
+ lsls r2, r5, 1
+ cmp r2, 2
+ bne SHORT G_M13271_IG12
+ ;; size=6 bbWeight=0.11 PerfScore 0.33
+G_M13271_IG11: ; bbWeight=0.06, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3}, byref, isz
+ mov r1, r3
+ ; byrRegs +[r1]
+ movs r2, 2
+ movw r3, 0xd1ff
+ ; byrRegs -[r3]
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; byrRegs -[r0-r1]
+ b SHORT G_M13271_IG06
+ ;; size=18 bbWeight=0.06 PerfScore 0.39
+G_M13271_IG12: ; bbWeight=0.06, gcrefRegs=0010 {r4}, byrefRegs=0009 {r0 r3}, byref, isz
+ ; byrRegs +[r0 r3]
+ mov r1, r3
+ ; byrRegs +[r1]
+ movw r3, 0xd1ff
+ ; byrRegs -[r3]
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; byrRegs -[r0-r1]
+ b SHORT G_M13271_IG06
+ ;; size=16 bbWeight=0.06 PerfScore 0.33
-; Total bytes of code 128, prolog size 8, PerfScore 30.11, instruction count 54, allocated bytes for code 128 (MethodHash=20c0cc28) for method System.Text.StringBuilder:Append(System.String):System.Text.StringBuilder:this (Tier1)
+; Total bytes of code 128, prolog size 8, PerfScore 29.06, instruction count 54, allocated bytes for code 128 (MethodHash=20c0cc28) for method System.Text.StringBuilder:Append(System.String):System.Text.StringBuilder:this (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 0
+ Epilog Count : 1
F bit : 0
- E bit : 1
+ E bit : 0
X bit : 0
Vers : 0
Function Length : 64 (0x00040) Actual length = 128 (0x000080)
- --- One epilog, unwind codes at 0
+ ---- Epilog scopes ----
+ ---- Scope 0
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Condition : 14 (0xe) (always)
+ Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
coreclr_tests.run.linux.arm.checked.mch
-10 (-1.11%) : 311867.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -50,8 +50,8 @@
; V38 tmp31 [V38,T33] ( 3, 0.66) int -> r5 "field V17._length (fldOffset=0x4)" P-INDEP
; V39 tmp32 [V39,T30] ( 7, 0.79) byref -> r5 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
; V40 tmp33 [V40,T37] ( 3, 0.38) int -> r6 "field V19._length (fldOffset=0x4)" P-INDEP
-; V41 tmp34 [V41,T31] ( 7, 0.79) byref -> r7 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp35 [V42,T38] ( 3, 0.38) int -> r8 "field V21._length (fldOffset=0x4)" P-INDEP
+; V41 tmp34 [V41,T31] ( 7, 0.79) byref -> r5 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+; V42 tmp35 [V42,T38] ( 3, 0.38) int -> r6 "field V21._length (fldOffset=0x4)" P-INDEP
; V43 tmp36 [V43,T32] ( 7, 0.79) byref -> r5 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V44 tmp37 [V44,T39] ( 3, 0.38) int -> r6 "field V23._length (fldOffset=0x4)" P-INDEP
; V45 tmp38 [V45,T02] ( 6, 31.52) byref -> r5 single-def "field V26._reference (fldOffset=0x0)" P-INDEP
@@ -141,7 +141,7 @@ G_M39096_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr r7, [sp+0x6C]
cmp r7, 1
- ble G_M39096_IG21
+ ble G_M39096_IG29
;; size=20 bbWeight=1 PerfScore 7.00
G_M39096_IG09: ; bbWeight=1.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 16
@@ -160,10 +160,10 @@ G_M39096_IG12: ; bbWeight=0.65, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r0, [r0]
ldr r8, [r0+0x10]
cmp r8, 0
- beq G_M39096_IG27
- ;; size=16 bbWeight=0.65 PerfScore 3.26
+ beq SHORT G_M39096_IG22
+ ;; size=14 bbWeight=0.65 PerfScore 3.26
G_M39096_IG13: ; bbWeight=0.52, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M39096_IG28
+ b SHORT G_M39096_IG23
;; size=2 bbWeight=0.52 PerfScore 0.52
G_M39096_IG14: ; bbWeight=0.22, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r7, [sp+0x68]
@@ -177,12 +177,12 @@ G_M39096_IG14: ; bbWeight=0.22, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
movs r1, 0
cmp r1, r5
- bhs G_M39096_IG39
+ bhs G_M39096_IG36
ldr r1, [r7]
; gcrRegs +[r1]
movs r2, 1
cmp r2, r5
- bhs G_M39096_IG39
+ bhs G_M39096_IG36
ldr r2, [r7+0x04]
; gcrRegs +[r2]
ldr r0, [r4+0x04]
@@ -192,8 +192,8 @@ G_M39096_IG14: ; bbWeight=0.22, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r2 r4]
; gcr arg pop 0
cmp r0, 0
- ble SHORT G_M39096_IG21
- ;; size=48 bbWeight=0.22 PerfScore 4.41
+ ble G_M39096_IG29
+ ;; size=50 bbWeight=0.22 PerfScore 4.41
G_M39096_IG15: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
ldr r1, [r7]
; gcrRegs +[r1]
@@ -217,12 +217,12 @@ G_M39096_IG15: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, b
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0 r7]
- b SHORT G_M39096_IG21
+ b SHORT G_M39096_IG29
;; size=34 bbWeight=0.18 PerfScore 2.33
G_M39096_IG16: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]
cmp r6, 0
- beq G_M39096_IG36
+ beq G_M39096_IG37
;; size=6 bbWeight=0.01 PerfScore 0.02
G_M39096_IG17: ; bbWeight=1.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
subs r6, r6, 1
@@ -298,85 +298,12 @@ G_M39096_IG20: ; bbWeight=1.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
cmp r7, 1
bgt G_M39096_IG09
;; size=108 bbWeight=1.01 PerfScore 40.49
-G_M39096_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M39096_IG21: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- add sp, 68
- pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- add sp, 8
- bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M39096_IG22: ; bbWeight=6.56, gcVars=0000000000000000 {}, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ; gcrRegs +[r4 r10]
- ; byrRegs +[r5]
- adds r1, r7, 1
- cmp r1, r8
- bhs G_M39096_IG39
- ldr r2, [sp+0x18] // [V56 cse1]
- adds r1, r2, 4
- adds r0, r5, r1
- ; byrRegs +[r0]
- ldr r1, [r5+r2]
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1]
- ; byrRegs -[r0]
- subs r7, r7, 1
- ;; size=28 bbWeight=6.56 PerfScore 72.15
-G_M39096_IG23: ; bbWeight=10.58, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, 0
- blt SHORT G_M39096_IG25
- ;; size=4 bbWeight=10.58 PerfScore 21.16
-G_M39096_IG24: ; bbWeight=9.71, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, r8
- bhs G_M39096_IG39
- lsls r3, r7, 2
- str r3, [sp+0x18] // [V56 cse1]
- ldr r2, [r5+r3]
- ; gcrRegs +[r2]
- mov r1, r10
- ; gcrRegs +[r1]
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- ldr lr, [r4+0x0C]
- blx lr // <unknown method>
- ; gcrRegs -[r0-r2]
- ; gcr arg pop 0
- cmp r0, 0
- blt SHORT G_M39096_IG22
- ;; size=26 bbWeight=9.71 PerfScore 106.81
-G_M39096_IG25: ; bbWeight=4.02, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- adds r2, r7, 1
- cmp r2, r8
- bhs G_M39096_IG39
- lsls r2, r7, 2
- mov r7, r2
- adds r1, r7, 4
- adds r0, r5, r1
- ; byrRegs +[r0]
- mov r1, r10
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r10]
- ; byrRegs -[r0]
- mov r7, r9
- cmp r7, r6
- bge SHORT G_M39096_IG21
- ;; size=34 bbWeight=4.02 PerfScore 56.29
-G_M39096_IG26: ; bbWeight=4.02, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- add r9, r7, 1
- lsls r2, r7, 2
- adds r2, r2, 4
- ldr r10, [r5+r2]
- ; gcrRegs +[r10]
- b SHORT G_M39096_IG23
- ;; size=14 bbWeight=4.02 PerfScore 20.10
-G_M39096_IG27: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r10]
- ; byrRegs -[r5]
+ b SHORT G_M39096_IG29
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M39096_IG22: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r4]
mov r0, r5
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -386,7 +313,7 @@ G_M39096_IG27: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov r8, r0
;; size=22 bbWeight=0.13 PerfScore 0.91
-G_M39096_IG28: ; bbWeight=0.65, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M39096_IG23: ; bbWeight=0.65, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r2, r8
str r7, [sp] // [V07 OutArgs]
add r1, sp, 28 // [V16 tmp9]
@@ -403,13 +330,85 @@ G_M39096_IG28: ; bbWeight=0.65, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
movs r7, 0
add r6, r8, -1
cmp r6, 0
- ble SHORT G_M39096_IG21
+ ble SHORT G_M39096_IG29
;; size=40 bbWeight=0.65 PerfScore 9.77
-G_M39096_IG29: ; bbWeight=0.65, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+G_M39096_IG24: ; bbWeight=4.02, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ add r9, r7, 1
+ lsls r2, r7, 2
+ adds r2, r2, 4
+ ldr r10, [r5+r2]
+ ; gcrRegs +[r10]
b SHORT G_M39096_IG26
- ;; size=2 bbWeight=0.65 PerfScore 0.65
-G_M39096_IG30: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=4.02 PerfScore 20.10
+G_M39096_IG25: ; bbWeight=6.56, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ adds r1, r7, 1
+ cmp r1, r8
+ bhs G_M39096_IG36
+ ldr r2, [sp+0x18] // [V56 cse1]
+ adds r1, r2, 4
+ adds r0, r5, r1
+ ; byrRegs +[r0]
+ ldr r1, [r5+r2]
+ ; gcrRegs +[r1]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0]
+ subs r7, r7, 1
+ ;; size=28 bbWeight=6.56 PerfScore 72.15
+G_M39096_IG26: ; bbWeight=10.58, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ cmp r7, 0
+ blt SHORT G_M39096_IG28
+ ;; size=4 bbWeight=10.58 PerfScore 21.16
+G_M39096_IG27: ; bbWeight=9.71, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ cmp r7, r8
+ bhs G_M39096_IG36
+ lsls r3, r7, 2
+ str r3, [sp+0x18] // [V56 cse1]
+ ldr r2, [r5+r3]
+ ; gcrRegs +[r2]
+ mov r1, r10
+ ; gcrRegs +[r1]
+ ldr r0, [r4+0x04]
+ ; gcrRegs +[r0]
+ ldr lr, [r4+0x0C]
+ blx lr // <unknown method>
+ ; gcrRegs -[r0-r2]
+ ; gcr arg pop 0
+ cmp r0, 0
+ blt SHORT G_M39096_IG25
+ ;; size=26 bbWeight=9.71 PerfScore 106.81
+G_M39096_IG28: ; bbWeight=4.02, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ adds r2, r7, 1
+ cmp r2, r8
+ bhs G_M39096_IG36
+ lsls r2, r7, 2
+ mov r7, r2
+ adds r1, r7, 4
+ adds r0, r5, r1
+ ; byrRegs +[r0]
+ mov r1, r10
+ ; gcrRegs +[r1]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[r1 r10]
+ ; byrRegs -[r0]
+ mov r7, r9
+ cmp r7, r6
...
-6 (-0.67%) : 306163.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -50,8 +50,8 @@
; V38 tmp31 [V38,T33] ( 3, 0.70) int -> r5 "field V17._length (fldOffset=0x4)" P-INDEP
; V39 tmp32 [V39,T30] ( 7, 0.79) byref -> r5 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
; V40 tmp33 [V40,T37] ( 3, 0.38) int -> r6 "field V19._length (fldOffset=0x4)" P-INDEP
-; V41 tmp34 [V41,T31] ( 7, 0.79) byref -> r7 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
-; V42 tmp35 [V42,T38] ( 3, 0.38) int -> r8 "field V21._length (fldOffset=0x4)" P-INDEP
+; V41 tmp34 [V41,T31] ( 7, 0.79) byref -> r5 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+; V42 tmp35 [V42,T38] ( 3, 0.38) int -> r6 "field V21._length (fldOffset=0x4)" P-INDEP
; V43 tmp36 [V43,T32] ( 7, 0.79) byref -> r5 single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V44 tmp37 [V44,T39] ( 3, 0.38) int -> r6 "field V23._length (fldOffset=0x4)" P-INDEP
; V45 tmp38 [V45,T02] ( 6, 30.71) byref -> r5 single-def "field V26._reference (fldOffset=0x0)" P-INDEP
@@ -141,7 +141,7 @@ G_M39096_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr r7, [sp+0x6C]
cmp r7, 1
- ble G_M39096_IG21
+ ble G_M39096_IG35
;; size=20 bbWeight=1 PerfScore 7.00
G_M39096_IG09: ; bbWeight=1.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 16
@@ -153,17 +153,17 @@ G_M39096_IG10: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1.00 PerfScore 2.00
G_M39096_IG11: ; bbWeight=0.77, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 3
- beq G_M39096_IG30
+ beq G_M39096_IG22
;; size=6 bbWeight=0.77 PerfScore 1.53
G_M39096_IG12: ; bbWeight=0.64, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5+0x24]
ldr r0, [r0]
ldr r8, [r0+0x10]
cmp r8, 0
- beq G_M39096_IG27
+ beq G_M39096_IG28
;; size=16 bbWeight=0.64 PerfScore 3.19
G_M39096_IG13: ; bbWeight=0.51, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M39096_IG28
+ b SHORT G_M39096_IG29
;; size=2 bbWeight=0.51 PerfScore 0.51
G_M39096_IG14: ; bbWeight=0.23, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r7, [sp+0x68]
@@ -177,12 +177,12 @@ G_M39096_IG14: ; bbWeight=0.23, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
movs r1, 0
cmp r1, r5
- bhs G_M39096_IG39
+ bhs G_M39096_IG36
ldr r1, [r7]
; gcrRegs +[r1]
movs r2, 1
cmp r2, r5
- bhs G_M39096_IG39
+ bhs G_M39096_IG36
ldr r2, [r7+0x04]
; gcrRegs +[r2]
ldr r0, [r4+0x04]
@@ -192,8 +192,8 @@ G_M39096_IG14: ; bbWeight=0.23, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r2 r4]
; gcr arg pop 0
cmp r0, 0
- ble SHORT G_M39096_IG21
- ;; size=48 bbWeight=0.23 PerfScore 4.64
+ ble G_M39096_IG35
+ ;; size=50 bbWeight=0.23 PerfScore 4.64
G_M39096_IG15: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
ldr r1, [r7]
; gcrRegs +[r1]
@@ -217,12 +217,12 @@ G_M39096_IG15: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, b
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0 r7]
- b SHORT G_M39096_IG21
+ b SHORT G_M39096_IG35
;; size=34 bbWeight=0.18 PerfScore 2.40
G_M39096_IG16: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]
cmp r6, 0
- beq G_M39096_IG36
+ beq G_M39096_IG37
;; size=6 bbWeight=0.01 PerfScore 0.03
G_M39096_IG17: ; bbWeight=1.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
subs r6, r6, 1
@@ -298,118 +298,12 @@ G_M39096_IG20: ; bbWeight=1.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
cmp r7, 1
bgt G_M39096_IG09
;; size=108 bbWeight=1.01 PerfScore 40.51
-G_M39096_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M39096_IG21: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- add sp, 68
- pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- add sp, 8
- bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M39096_IG22: ; bbWeight=6.34, gcVars=0000000000000000 {}, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ; gcrRegs +[r4 r10]
- ; byrRegs +[r5]
- adds r1, r7, 1
- cmp r1, r8
- bhs G_M39096_IG39
- ldr r2, [sp+0x18] // [V56 cse1]
- adds r1, r2, 4
- adds r0, r5, r1
- ; byrRegs +[r0]
- ldr r1, [r5+r2]
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1]
- ; byrRegs -[r0]
- subs r7, r7, 1
- ;; size=28 bbWeight=6.34 PerfScore 69.69
-G_M39096_IG23: ; bbWeight=10.30, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, 0
- blt SHORT G_M39096_IG25
- ;; size=4 bbWeight=10.30 PerfScore 20.60
-G_M39096_IG24: ; bbWeight=9.46, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, r8
- bhs G_M39096_IG39
- lsls r3, r7, 2
- str r3, [sp+0x18] // [V56 cse1]
- ldr r2, [r5+r3]
- ; gcrRegs +[r2]
- mov r1, r10
- ; gcrRegs +[r1]
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- ldr lr, [r4+0x0C]
- blx lr // <unknown method>
- ; gcrRegs -[r0-r2]
- ; gcr arg pop 0
- cmp r0, 0
- blt SHORT G_M39096_IG22
- ;; size=26 bbWeight=9.46 PerfScore 104.10
-G_M39096_IG25: ; bbWeight=3.97, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- adds r2, r7, 1
- cmp r2, r8
- bhs G_M39096_IG39
- lsls r2, r7, 2
- mov r7, r2
- adds r1, r7, 4
- adds r0, r5, r1
- ; byrRegs +[r0]
- mov r1, r10
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r10]
- ; byrRegs -[r0]
- mov r7, r9
- cmp r7, r6
- bge SHORT G_M39096_IG21
- ;; size=34 bbWeight=3.97 PerfScore 55.54
-G_M39096_IG26: ; bbWeight=3.97, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- add r9, r7, 1
- lsls r2, r7, 2
- adds r2, r2, 4
- ldr r10, [r5+r2]
- ; gcrRegs +[r10]
- b SHORT G_M39096_IG23
- ;; size=14 bbWeight=3.97 PerfScore 19.83
-G_M39096_IG27: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r10]
- ; byrRegs -[r5]
- mov r0, r5
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r8, r0
- ;; size=22 bbWeight=0.13 PerfScore 0.89
-G_M39096_IG28: ; bbWeight=0.64, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r2, r8
- str r7, [sp] // [V07 OutArgs]
- add r1, sp, 28 // [V16 tmp9]
- add r0, sp, 104 // [V01 arg0]
- movs r3, 0
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr lr, [lr]
- blx lr // System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this
- ; gcr arg pop 0
- ldr r5, [sp+0x1C] // [V35 tmp28]
- ; byrRegs +[r5]
- ldr r8, [sp+0x20] // [V36 tmp29]
- movs r7, 0
- add r6, r8, -1
- cmp r6, 0
- ble SHORT G_M39096_IG21
- ;; size=40 bbWeight=0.64 PerfScore 9.56
-G_M39096_IG29: ; bbWeight=0.64, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- b SHORT G_M39096_IG26
- ;; size=2 bbWeight=0.64 PerfScore 0.64
-G_M39096_IG30: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r5]
+ b SHORT G_M39096_IG35
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M39096_IG22: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
ldr r5, [sp+0x68] // [V01 arg0]
; byrRegs +[r5]
ldr r6, [sp+0x6C] // [V01 arg0+0x04]
@@ -421,12 +315,12 @@ G_M39096_IG30: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
movs r1, 0
cmp r1, r6
- bhs G_M39096_IG39
+ bhs G_M39096_IG36
ldr r1, [r5]
; gcrRegs +[r1]
movs r2, 1
cmp r2, r6
- bhs G_M39096_IG39
+ bhs G_M39096_IG36
ldr r2, [r5+0x04]
; gcrRegs +[r2]
ldr r0, [r4+0x04]
@@ -436,9 +330,9 @@ G_M39096_IG30: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r2]
; gcr arg pop 0
cmp r0, 0
- ble SHORT G_M39096_IG32
+ ble SHORT G_M39096_IG24
;; size=48 bbWeight=0.13 PerfScore 2.57
-G_M39096_IG31: ; bbWeight=0.10, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
+G_M39096_IG23: ; bbWeight=0.10, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
ldr r1, [r5]
; gcrRegs +[r1]
str r1, [sp+0x10] // [V20 tmp13]
@@ -462,10 +356,10 @@ G_M39096_IG31: ; bbWeight=0.10, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5},
; gcrRegs -[r1]
; byrRegs -[r0 r5]
;; size=32 bbWeight=0.10 PerfScore 1.22
-G_M39096_IG32: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r7, [sp+0x68] // [V01 arg0]
- ; byrRegs +[r7]
- ldr r8, [sp+0x6C] // [V01 arg0+0x04]
+G_M39096_IG24: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r5, [sp+0x68] // [V01 arg0]
+ ; byrRegs +[r5]
+ ldr r6, [sp+0x6C] // [V01 arg0+0x04]
movs r0, 1
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -473,14 +367,14 @@ G_M39096_IG32: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
...
-4 (-0.49%) : 308329.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String: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 7
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7
; 5 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
@@ -47,7 +47,7 @@
;* V35 tmp22 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V36 tmp23 [V36,T26] ( 3, 0.57) ref -> r1 class-hnd "Inline stloc first use temp" <System.Object>
; V37 tmp24 [V37,T27] ( 3, 0.57) int -> r3 "fgMakeTemp is creating a new local variable"
-; V38 tmp25 [V38,T09] ( 4, 2 ) ref -> r7 class-hnd "spilling QMark2" <System.String>
+; V38 tmp25 [V38,T09] ( 4, 2.00) ref -> r7 class-hnd "spilling QMark2" <System.String>
; V39 tmp26 [V39,T18] ( 2, 1.14) ubyte -> r0 "Inlining Arg"
; V40 tmp27 [V40,T17] ( 2, 1.14) ref -> r1 class-hnd exact "dup spill" <System.String>
; V41 tmp28 [V41,T22] ( 4, 0.86) ref -> r1
@@ -221,9 +221,16 @@ G_M18031_IG10: ; bbWeight=0.14, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}
G_M18031_IG11: ; bbWeight=0.29, gcVars=01000000 {V06}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r7]
; GC ptr vars +{V06 V24}
- b SHORT G_M18031_IG18
- ;; size=2 bbWeight=0.29 PerfScore 0.29
-G_M18031_IG12: ; bbWeight=0.29, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ mov r0, r5
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Resources.ResourceFallbackManager+<GetEnumerator>d__5:MoveNext():ubyte:this
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
+ beq G_M18031_IG27
ldr r9, [r5+0x04]
; gcrRegs +[r9]
mov r0, r4
@@ -241,16 +248,16 @@ G_M18031_IG12: ; bbWeight=0.29, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
mov r8, r0
; gcrRegs +[r8]
cmp r8, 0
- beq G_M18031_IG35
+ beq G_M18031_IG27
cmp r8, r7
- beq SHORT G_M18031_IG18
+ beq SHORT G_M18031_IG11
ldrb r2, [r4+0x2C]
ldr r0, [r8]
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- bne SHORT G_M18031_IG15
+ bne G_M18031_IG25
mov r0, r8
; gcrRegs +[r0]
mov r1, r6
@@ -267,12 +274,20 @@ G_M18031_IG12: ; bbWeight=0.29, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
mov r7, r1
; gcrRegs +[r7]
cmp r7, 0
- bne SHORT G_M18031_IG17
- ;; size=88 bbWeight=0.29 PerfScore 8.86
+ beq SHORT G_M18031_IG13
+ ;; size=110 bbWeight=0.29 PerfScore 10.86
+G_M18031_IG12: ; bbWeight=0.14, gcrefRegs=03F2 {r1 r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ ldr r0, [r7]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M18031_IG26
+ ;; size=14 bbWeight=0.14 PerfScore 0.71
G_M18031_IG13: ; bbWeight=0.29, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0-r1]
+ ; gcrRegs -[r1]
cmp r7, 0
- beq SHORT G_M18031_IG16
+ beq SHORT G_M18031_IG24
ldr r1, [r4+0x1C]
; gcrRegs +[r1]
cmp r1, 0
@@ -282,71 +297,13 @@ G_M18031_IG13: ; bbWeight=0.29, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byref
movs r1, 0
; gcrRegs -[r1]
str r1, [sp+0x0C] // [V11 loc8]
- b SHORT G_M18031_IG19
- ;; size=20 bbWeight=0.29 PerfScore 2.57
-G_M18031_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r4-r9] +[r1]
- ; GC ptr vars -{V06 V10 V24}
- mov r0, r3
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
- ; gcrRegs -[r1] +[r0]
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M18031_IG15: ; bbWeight=0, gcVars=01000000 {V06}, gcrefRegs=0370 {r4 r5 r6 r8 r9}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0] +[r4-r6 r8-r9]
- ; GC ptr vars +{V06 V24}
- mov r0, r8
- ; gcrRegs +[r0]
- mov r1, r6
- ; gcrRegs +[r1]
- ldr r3, [r8]
- ldr r3, [r3+0x30]
- ldr r3, [r3+0x10]
- blx r3 // <unknown method>
- ; gcrRegs -[r1]
- ; gcr arg pop 0
- mov r7, r0
- ; gcrRegs +[r7]
- b SHORT G_M18031_IG13
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M18031_IG16: ; bbWeight=0, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r7 r9]
- mov r7, r8
- ; gcrRegs +[r7]
- b SHORT G_M18031_IG18
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M18031_IG17: ; bbWeight=0.14, gcrefRegs=03F2 {r1 r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r1 r9]
- ldr r0, [r7]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r0, r3
- bne SHORT G_M18031_IG14
- b SHORT G_M18031_IG13
- ;; size=16 bbWeight=0.14 PerfScore 0.86
-G_M18031_IG18: ; bbWeight=0.29, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r1 r8-r9]
- mov r0, r5
- ; gcrRegs +[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.Resources.ResourceFallbackManager+<GetEnumerator>d__5:MoveNext():ubyte:this
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
- beq G_M18031_IG35
- b SHORT G_M18031_IG12
- ;; size=22 bbWeight=0.29 PerfScore 2.29
-G_M18031_IG19: ; bbWeight=0.29, gcVars=00100000 {V10}, gcrefRegs=0390 {r4 r7 r8 r9}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r5-r6] +[r8-r9]
- ; GC ptr vars -{V06 V24} +{V10}
+ ;; size=18 bbWeight=0.29 PerfScore 2.29
+G_M18031_IG14: ; bbWeight=0.29, gcVars=00100000 {V10}, gcrefRegs=0390 {r4 r7 r8 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r5-r6]
+ ; GC ptr vars -{V06 V24}
ldrb r1, [sp+0x0C] // [V11 loc8]
cmp r1, 0
- bne SHORT G_M18031_IG25
+ bne SHORT G_M18031_IG20
add r1, sp, 12 // [V11 loc8]
ldr r0, [sp+0x04] // [V10 loc7]
; gcrRegs +[r0]
@@ -357,7 +314,7 @@ G_M18031_IG19: ; bbWeight=0.29, gcVars=00100000 {V10}, gcrefRegs=0390 {r4
; gcr arg pop 0
ldrb r0, [sp+0x0C] // [V11 loc8]
cmp r0, 0
- bne SHORT G_M18031_IG20
+ bne SHORT G_M18031_IG15
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
@@ -368,43 +325,43 @@ G_M18031_IG19: ; bbWeight=0.29, gcVars=00100000 {V10}, gcrefRegs=0390 {r4
blx r3 // <unknown method>
; gcr arg pop 0
;; size=58 bbWeight=0.29 PerfScore 5.43
-G_M18031_IG20: ; bbWeight=0.29, gcrefRegs=0390 {r4 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M18031_IG15: ; bbWeight=0.29, gcrefRegs=0390 {r4 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r5, [r4+0x1C]
; gcrRegs +[r5]
ldr r1, [r9]
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r1, r0
- bne SHORT G_M18031_IG26
+ bne SHORT G_M18031_IG21
ldr r1, [r9+0x24]
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M18031_IG22
+ beq SHORT G_M18031_IG17
;; size=26 bbWeight=0.29 PerfScore 2.57
-G_M18031_IG21: ; bbWeight=0.29, gcrefRegs=01B2 {r1 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M18031_IG16: ; bbWeight=0.29, gcrefRegs=01B2 {r1 r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9]
- b SHORT G_M18031_IG27
+ b SHORT G_M18031_IG22
;; size=2 bbWeight=0.29 PerfScore 0.29
-G_M18031_IG22: ; bbWeight=0, gcrefRegs=03B0 {r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M18031_IG17: ; bbWeight=0, gcrefRegs=03B0 {r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1] +[r9]
ldr r1, [r9+0x18]
; gcrRegs +[r1]
ldr r1, [r1+0x0C]
cmp r1, 0
- bne SHORT G_M18031_IG23
+ bne SHORT G_M18031_IG18
movw r1, 0xd1ff
; gcrRegs -[r1]
movt r1, 0xd1ff
;; size=18 bbWeight=0 PerfScore 0.00
-G_M18031_IG23: ; bbWeight=0, gcrefRegs=03B2 {r1 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M18031_IG18: ; bbWeight=0, gcrefRegs=03B2 {r1 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1]
cmp r1, 0
- bne SHORT G_M18031_IG24
+ bne SHORT G_M18031_IG19
movw r1, 0xd1ff
; gcrRegs -[r1]
movt r1, 0xd1ff
;; size=12 bbWeight=0 PerfScore 0.00
-G_M18031_IG24: ; bbWeight=0, gcrefRegs=03B2 {r1 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M18031_IG19: ; bbWeight=0, gcrefRegs=03B2 {r1 r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1]
add r0, r9, 36
; byrRegs +[r0]
@@ -413,9 +370,9 @@ G_M18031_IG24: ; bbWeight=0, gcrefRegs=03B2 {r1 r4 r5 r7 r8 r9}, byrefReg
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r9]
; byrRegs -[r0]
- b SHORT G_M18031_IG21
+ b SHORT G_M18031_IG16
;; size=16 bbWeight=0 PerfScore 0.00
-G_M18031_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18031_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r1 r4-r5 r7-r8]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -424,7 +381,7 @@ G_M18031_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M18031_IG26: ; bbWeight=0, gcrefRegs=03B0 {r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref
+G_M18031_IG21: ; bbWeight=0, gcrefRegs=03B0 {r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref
; gcrRegs +[r4-r5 r7-r9]
mov r0, r9
; gcrRegs +[r0]
@@ -437,7 +394,7 @@ G_M18031_IG26: ; bbWeight=0, gcrefRegs=03B0 {r4 r5 r7 r8 r9}, byrefRegs=0
mov r1, r0
; gcrRegs +[r1]
;; size=14 bbWeight=0 PerfScore 0.00
-G_M18031_IG27: ; bbWeight=0.29, gcrefRegs=01B2 {r1 r4 r5 r7 r8}, byrefRegs=0000 {}, byref
+G_M18031_IG22: ; bbWeight=0.29, gcrefRegs=01B2 {r1 r4 r5 r7 r8}, byrefRegs=0000 {}, byref
...
+0 (0.00%) : 376453.dasm - X:F(System.Collections.IDictionary):int (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; r11 based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
; 2 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -72,7 +72,7 @@ G_M2695_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M2695_IG22
+ bne G_M2695_IG21
ldr r4, [r5+0x24]
movs r0, 0
str r0, [sp+0x18]
@@ -159,7 +159,7 @@ G_M2695_IG05: ; bbWeight=1.98, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, by
ldr r3, [r3+0x24]
; gcrRegs -[r3]
cmp r0, r3
- bne G_M2695_IG20
+ bne G_M2695_IG19
;; size=16 bbWeight=1.98 PerfScore 13.86
G_M2695_IG06: ; bbWeight=1.98, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2}, byref, isz
ldr r0, [r1+0x08]
@@ -199,7 +199,7 @@ G_M2695_IG10: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=0080 {r7}, b
str r0, [r1+0x08]
ldr r0, [r4+0x04]
cmp r5, r0
- bhs G_M2695_IG21
+ bhs G_M2695_IG20
lsls r0, r5, 4
adds r0, 8
add r8, r4, r0
@@ -247,20 +247,7 @@ G_M2695_IG12: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, by
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r1, r0
- beq SHORT G_M2695_IG13
- mov r0, r7
- ; gcrRegs +[r0]
- movw r4, 0xd1ff
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
- bne SHORT G_M2695_IG23
- b SHORT G_M2695_IG08
- ;; size=34 bbWeight=0.02 PerfScore 0.26
-G_M2695_IG13: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M2695_IG15
adds r2, r7, 4
; byrRegs +[r2]
mov r1, r2
@@ -271,18 +258,65 @@ G_M2695_IG13: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, by
ldr r3, [r3+0x24]
; gcrRegs -[r3]
cmp r0, r3
- bne SHORT G_M2695_IG20
- ;; size=14 bbWeight=0.02 PerfScore 0.14
-G_M2695_IG14: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2}, byref, isz
+ bne SHORT G_M2695_IG19
+ ;; size=28 bbWeight=0.02 PerfScore 0.24
+G_M2695_IG13: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2}, byref, isz
ldr r0, [r1+0x08]
ldr r3, [r1]
; gcrRegs +[r3]
ldr r3, [r3+0x18]
; gcrRegs -[r3]
cmp r0, r3
- bhs SHORT G_M2695_IG16
+ blo SHORT G_M2695_IG17
;; size=10 bbWeight=0.02 PerfScore 0.10
-G_M2695_IG15: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2}, byref, isz
+G_M2695_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
+ ; gcrRegs -[r7]
+ ; byrRegs -[r2]
+ adds r0, r3, 1
+ str r0, [r1+0x08]
+ movs r0, 0
+ str r0, [r1+0x10]
+ str r0, [r1+0x14]
+ b SHORT G_M2695_IG08
+ ;; size=12 bbWeight=0.01 PerfScore 0.06
+G_M2695_IG15: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r7]
+ ; byrRegs -[r1]
+ mov r0, r7
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
+ bne SHORT G_M2695_IG22
+ b SHORT G_M2695_IG08
+ ;; size=20 bbWeight=0.02 PerfScore 0.16
+G_M2695_IG16: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0004 {r2}, byref, isz
+ ; byrRegs +[r2]
+ ldr r0, [r2+0x08]
+ cmp r0, 0
+ beq SHORT G_M2695_IG18
+ ldr r3, [r2]
+ ; gcrRegs +[r3]
+ ldr r3, [r3+0x18]
+ ; gcrRegs -[r3]
+ adds r3, r3, 1
+ cmp r0, r3
+ beq SHORT G_M2695_IG18
+ ldr r9, [r2+0x10]
+ ; gcrRegs +[r9]
+ ldr r10, [r2+0x14]
+ ; gcrRegs +[r10]
+ str r9, [sp+0x20] // [V25 tmp21]
+ str r10, [sp+0x24] // [V26 tmp22]
+ b SHORT G_M2695_IG11
+ ;; size=34 bbWeight=0.01 PerfScore 0.13
+G_M2695_IG17: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2}, byref, isz
+ ; gcrRegs -[r9-r10]
+ ; byrRegs +[r1]
ldr r3, [r1]
; gcrRegs +[r3]
ldr r4, [r3+0x08]
@@ -292,14 +326,14 @@ G_M2695_IG15: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2
str r0, [r1+0x08]
ldr r0, [r4+0x04]
cmp r5, r0
- bhs SHORT G_M2695_IG21
+ bhs SHORT G_M2695_IG20
lsls r0, r5, 4
adds r0, 8
add r8, r4, r0
; byrRegs +[r8]
ldr r0, [r8+0x0C]
cmp r0, -1
- blt SHORT G_M2695_IG14
+ blt SHORT G_M2695_IG13
ldr r9, [r8]
; gcrRegs +[r9]
ldr r10, [r8+0x04]
@@ -329,25 +363,8 @@ G_M2695_IG15: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1 r10]
; byrRegs -[r0]
- b SHORT G_M2695_IG17
+ b SHORT G_M2695_IG16
;; size=80 bbWeight=0.01 PerfScore 0.29
-G_M2695_IG16: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
- ; gcrRegs -[r7]
- ; byrRegs -[r2] +[r1]
- adds r0, r3, 1
- str r0, [r1+0x08]
- movs r0, 0
- str r0, [r1+0x10]
- str r0, [r1+0x14]
- b SHORT G_M2695_IG08
- ;; size=12 bbWeight=0.01 PerfScore 0.06
-G_M2695_IG17: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0004 {r2}, byref, isz
- ; gcrRegs +[r7]
- ; byrRegs -[r1] +[r2]
- ldr r0, [r2+0x08]
- cmp r0, 0
- bne SHORT G_M2695_IG19
- ;; size=6 bbWeight=0.01 PerfScore 0.03
G_M2695_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r7]
; byrRegs -[r2]
@@ -358,27 +375,7 @@ G_M2695_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M2695_IG19: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0004 {r2}, byref, isz
- ; gcrRegs +[r7]
- ; byrRegs +[r2]
- ldr r3, [r2]
- ; gcrRegs +[r3]
- ldr r3, [r3+0x18]
- ; gcrRegs -[r3]
- adds r3, r3, 1
- cmp r0, r3
- beq SHORT G_M2695_IG18
- ldr r9, [r2+0x10]
- ; gcrRegs +[r9]
- ldr r10, [r2+0x14]
- ; gcrRegs +[r10]
- str r9, [sp+0x20] // [V25 tmp21]
- str r10, [sp+0x24] // [V26 tmp22]
- b SHORT G_M2695_IG11
- ;; size=28 bbWeight=0.01 PerfScore 0.10
-G_M2695_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7 r9-r10]
- ; byrRegs -[r2]
+G_M2695_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -386,13 +383,13 @@ G_M2695_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M2695_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2695_IG20: ; 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_M2695_IG22: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M2695_IG21: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r5]
mov r0, r5
; gcrRegs +[r0]
@@ -406,7 +403,7 @@ G_M2695_IG22: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; gcrRegs +[r7]
b SHORT G_M2695_IG03
;; size=18 bbWeight=0 PerfScore 0.00
-G_M2695_IG23: ; bbWeight=0, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+G_M2695_IG22: ; bbWeight=0, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
add r1, sp, 32 // [V03 loc2]
mov r0, r7
+0 (0.00%) : 126936.dasm - X:F(System.Collections.IDictionary):int (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; r11 based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
; 2 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -72,7 +72,7 @@ G_M2695_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M2695_IG22
+ bne G_M2695_IG21
ldr r4, [r5+0x24]
movs r0, 0
str r0, [sp+0x18]
@@ -159,7 +159,7 @@ G_M2695_IG05: ; bbWeight=1.98, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, by
ldr r3, [r3+0x24]
; gcrRegs -[r3]
cmp r0, r3
- bne G_M2695_IG20
+ bne G_M2695_IG19
;; size=16 bbWeight=1.98 PerfScore 13.86
G_M2695_IG06: ; bbWeight=1.98, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2}, byref, isz
ldr r0, [r1+0x08]
@@ -199,7 +199,7 @@ G_M2695_IG10: ; bbWeight=0.99, gcVars=00000000 {}, gcrefRegs=0080 {r7}, b
str r0, [r1+0x08]
ldr r0, [r4+0x04]
cmp r5, r0
- bhs G_M2695_IG21
+ bhs G_M2695_IG20
lsls r0, r5, 4
adds r0, 8
add r8, r4, r0
@@ -247,20 +247,7 @@ G_M2695_IG12: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, by
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r1, r0
- beq SHORT G_M2695_IG13
- mov r0, r7
- ; gcrRegs +[r0]
- movw r4, 0xd1ff
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
- bne SHORT G_M2695_IG23
- b SHORT G_M2695_IG08
- ;; size=34 bbWeight=0.02 PerfScore 0.26
-G_M2695_IG13: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+ bne SHORT G_M2695_IG15
adds r2, r7, 4
; byrRegs +[r2]
mov r1, r2
@@ -271,18 +258,65 @@ G_M2695_IG13: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, by
ldr r3, [r3+0x24]
; gcrRegs -[r3]
cmp r0, r3
- bne SHORT G_M2695_IG20
- ;; size=14 bbWeight=0.02 PerfScore 0.14
-G_M2695_IG14: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2}, byref, isz
+ bne SHORT G_M2695_IG19
+ ;; size=28 bbWeight=0.02 PerfScore 0.24
+G_M2695_IG13: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2}, byref, isz
ldr r0, [r1+0x08]
ldr r3, [r1]
; gcrRegs +[r3]
ldr r3, [r3+0x18]
; gcrRegs -[r3]
cmp r0, r3
- bhs SHORT G_M2695_IG16
+ blo SHORT G_M2695_IG17
;; size=10 bbWeight=0.02 PerfScore 0.10
-G_M2695_IG15: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2}, byref, isz
+G_M2695_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
+ ; gcrRegs -[r7]
+ ; byrRegs -[r2]
+ adds r0, r3, 1
+ str r0, [r1+0x08]
+ movs r0, 0
+ str r0, [r1+0x10]
+ str r0, [r1+0x14]
+ b SHORT G_M2695_IG08
+ ;; size=12 bbWeight=0.01 PerfScore 0.06
+G_M2695_IG15: ; bbWeight=0.02, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r7]
+ ; byrRegs -[r1]
+ mov r0, r7
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
+ bne SHORT G_M2695_IG22
+ b SHORT G_M2695_IG08
+ ;; size=20 bbWeight=0.02 PerfScore 0.16
+G_M2695_IG16: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0004 {r2}, byref, isz
+ ; byrRegs +[r2]
+ ldr r0, [r2+0x08]
+ cmp r0, 0
+ beq SHORT G_M2695_IG18
+ ldr r3, [r2]
+ ; gcrRegs +[r3]
+ ldr r3, [r3+0x18]
+ ; gcrRegs -[r3]
+ adds r3, r3, 1
+ cmp r0, r3
+ beq SHORT G_M2695_IG18
+ ldr r9, [r2+0x10]
+ ; gcrRegs +[r9]
+ ldr r10, [r2+0x14]
+ ; gcrRegs +[r10]
+ str r9, [sp+0x20] // [V25 tmp21]
+ str r10, [sp+0x24] // [V26 tmp22]
+ b SHORT G_M2695_IG11
+ ;; size=34 bbWeight=0.01 PerfScore 0.13
+G_M2695_IG17: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2}, byref, isz
+ ; gcrRegs -[r9-r10]
+ ; byrRegs +[r1]
ldr r3, [r1]
; gcrRegs +[r3]
ldr r4, [r3+0x08]
@@ -292,14 +326,14 @@ G_M2695_IG15: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2
str r0, [r1+0x08]
ldr r0, [r4+0x04]
cmp r5, r0
- bhs SHORT G_M2695_IG21
+ bhs SHORT G_M2695_IG20
lsls r0, r5, 4
adds r0, 8
add r8, r4, r0
; byrRegs +[r8]
ldr r0, [r8+0x0C]
cmp r0, -1
- blt SHORT G_M2695_IG14
+ blt SHORT G_M2695_IG13
ldr r9, [r8]
; gcrRegs +[r9]
ldr r10, [r8+0x04]
@@ -329,25 +363,8 @@ G_M2695_IG15: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0006 {r1 r2
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1 r10]
; byrRegs -[r0]
- b SHORT G_M2695_IG17
+ b SHORT G_M2695_IG16
;; size=80 bbWeight=0.01 PerfScore 0.29
-G_M2695_IG16: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz
- ; gcrRegs -[r7]
- ; byrRegs -[r2] +[r1]
- adds r0, r3, 1
- str r0, [r1+0x08]
- movs r0, 0
- str r0, [r1+0x10]
- str r0, [r1+0x14]
- b SHORT G_M2695_IG08
- ;; size=12 bbWeight=0.01 PerfScore 0.06
-G_M2695_IG17: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0004 {r2}, byref, isz
- ; gcrRegs +[r7]
- ; byrRegs -[r1] +[r2]
- ldr r0, [r2+0x08]
- cmp r0, 0
- bne SHORT G_M2695_IG19
- ;; size=6 bbWeight=0.01 PerfScore 0.03
G_M2695_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r7]
; byrRegs -[r2]
@@ -358,27 +375,7 @@ G_M2695_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M2695_IG19: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0004 {r2}, byref, isz
- ; gcrRegs +[r7]
- ; byrRegs +[r2]
- ldr r3, [r2]
- ; gcrRegs +[r3]
- ldr r3, [r3+0x18]
- ; gcrRegs -[r3]
- adds r3, r3, 1
- cmp r0, r3
- beq SHORT G_M2695_IG18
- ldr r9, [r2+0x10]
- ; gcrRegs +[r9]
- ldr r10, [r2+0x14]
- ; gcrRegs +[r10]
- str r9, [sp+0x20] // [V25 tmp21]
- str r10, [sp+0x24] // [V26 tmp22]
- b SHORT G_M2695_IG11
- ;; size=28 bbWeight=0.01 PerfScore 0.10
-G_M2695_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r7 r9-r10]
- ; byrRegs -[r2]
+G_M2695_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -386,13 +383,13 @@ G_M2695_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M2695_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2695_IG20: ; 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_M2695_IG22: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M2695_IG21: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r5]
mov r0, r5
; gcrRegs +[r0]
@@ -406,7 +403,7 @@ G_M2695_IG22: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; gcrRegs +[r7]
b SHORT G_M2695_IG03
;; size=18 bbWeight=0 PerfScore 0.00
-G_M2695_IG23: ; bbWeight=0, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+G_M2695_IG22: ; bbWeight=0, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
add r1, sp, 32 // [V03 loc2]
mov r0, r7
+0 (0.00%) : 205520.dasm - X:F(B,int):ubyte: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 1
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -25,7 +25,7 @@
;
; Lcl frame size = 0
-G_M55099_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M55099_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r11,lr}
mov r11, sp
;; size=6 bbWeight=1 PerfScore 2.00
@@ -42,7 +42,7 @@ G_M55099_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byre
G_M55099_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
cmp r2, 0
- beq SHORT G_M55099_IG06
+ beq SHORT G_M55099_IG07
;; size=4 bbWeight=3.96 PerfScore 7.92
G_M55099_IG04: ; bbWeight=2.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
subs r2, r2, 1
@@ -51,26 +51,27 @@ G_M55099_IG04: ; bbWeight=2.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M55099_IG05: ; bbWeight=0.04, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r1]
cmp r2, 0
- bne SHORT G_M55099_IG08
+ beq SHORT G_M55099_IG07
;; size=4 bbWeight=0.04 PerfScore 0.08
-G_M55099_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r1]
- movs r0, 1
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M55099_IG07: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M55099_IG08: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r1]
+G_M55099_IG06: ; bbWeight=0.03, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
ldrsb r0, [r1]
subs r2, r2, 1
ldr r0, [r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- beq SHORT G_M55099_IG11
- ;; size=20 bbWeight=0.03 PerfScore 0.21
-G_M55099_IG09: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ bne SHORT G_M55099_IG09
+ b SHORT G_M55099_IG05
+ ;; size=22 bbWeight=0.03 PerfScore 0.24
+G_M55099_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
+ movs r0, 1
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M55099_IG08: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M55099_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r1]
mov r0, r1
; gcrRegs +[r0]
ldr r3, [r1]
@@ -82,10 +83,6 @@ G_M55099_IG10: ; bbWeight=0, epilog, nogc, extend
bx r3 // <unknown method>
; gcr arg pop 0
;; size=6 bbWeight=0 PerfScore 0.00
-G_M55099_IG11: ; bbWeight=0.03, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- b SHORT G_M55099_IG05
- ;; size=2 bbWeight=0.03 PerfScore 0.03
; Total bytes of code 78, prolog size 6, PerfScore 25.18, instruction count 31, allocated bytes for code 78 (MethodHash=fe3828c4) for method X:F(B,int):ubyte:this (Tier1)
; ============================================================
libraries_tests.run.linux.arm.Release.mch
-14 (-1.99%) : 722758.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -26,10 +26,10 @@
; V14 tmp7 [V14 ] ( 3, 0 ) struct ( 8) [sp+0x14] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.Span`1[System.__Canon]>
;* V15 tmp8 [V15 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V16 tmp9 [V16 ] ( 3, 5.76) struct ( 8) [sp+0x0C] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.Span`1[System.__Canon]>
-; V17 tmp10 [V17,T05] ( 6, 41.37) int -> r6 "Inline stloc first use temp"
+; V17 tmp10 [V17,T05] ( 6, 41.37) int -> r7 "Inline stloc first use temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]>
; V19 tmp12 [V19,T06] ( 3, 35.65) ref -> r10 class-hnd "Inline stloc first use temp" <System.__Canon>
-; V20 tmp13 [V20,T00] ( 9,120.57) int -> r6 "Inline stloc first use temp"
+; V20 tmp13 [V20,T00] ( 9,120.57) int -> r7 "Inline stloc first use temp"
; V21 tmp14 [V21,T19] ( 2, 5.98) byref -> [sp+0x24] do-not-enreg[H] hidden-struct-arg "field V10._reference (fldOffset=0x0)" P-DEP
; V22 tmp15 [V22,T21] ( 2, 5.98) int -> [sp+0x28] do-not-enreg[H] hidden-struct-arg "field V10._length (fldOffset=0x4)" P-DEP
; V23 tmp16 [V23,T20] ( 2, 5.98) byref -> [sp+0x1C] do-not-enreg[H] hidden-struct-arg "field V12._reference (fldOffset=0x0)" P-DEP
@@ -38,16 +38,16 @@
; V26 tmp19 [V26,T31] ( 2, 0 ) int -> [sp+0x18] do-not-enreg[H] hidden-struct-arg "field V14._length (fldOffset=0x4)" P-DEP
; V27 tmp20 [V27,T26] ( 2, 2.88) byref -> [sp+0x0C] do-not-enreg[H] hidden-struct-arg "field V16._reference (fldOffset=0x0)" P-DEP
; V28 tmp21 [V28,T27] ( 2, 2.88) int -> [sp+0x10] do-not-enreg[H] hidden-struct-arg "field V16._length (fldOffset=0x4)" P-DEP
-; V29 tmp22 [V29,T02] ( 6, 61.25) byref -> r8 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V30 tmp23 [V30,T04] ( 5, 41.81) int -> r7 "field V18._length (fldOffset=0x4)" P-INDEP
+; V29 tmp22 [V29,T02] ( 6, 61.25) byref -> r5 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V30 tmp23 [V30,T04] ( 5, 41.81) int -> r8 "field V18._length (fldOffset=0x4)" P-INDEP
; V31 tmp24 [V31,T14] ( 2, 7.98) int -> r2 "argument with side effect"
; V32 tmp25 [V32,T15] ( 2, 7.98) int -> r2 "argument with side effect"
; V33 tmp26 [V33,T32] ( 2, 0 ) int -> r2 "argument with side effect"
; V34 tmp27 [V34,T25] ( 2, 3.84) int -> r2 "argument with side effect"
; V35 cse0 [V35,T16] ( 7, 7.90) int -> r8 multi-def "CSE - moderate"
; V36 cse1 [V36,T01] ( 6, 79.77) int -> [sp+0x08] multi-def "CSE - aggressive"
-; V37 cse2 [V37,T12] ( 3, 10.00) int -> r9 "CSE - aggressive"
-; V38 cse3 [V38,T07] ( 2, 16.17) int -> r5 "CSE - aggressive"
+; V37 cse2 [V37,T12] ( 3, 10.00) int -> r6 "CSE - aggressive"
+; V38 cse3 [V38,T07] ( 2, 16.17) int -> r9 "CSE - aggressive"
; V39 rat0 [V39,T13] ( 3, 7.98) int -> r8 "runtime lookup"
; V40 rat1 [V40,T11] ( 3, 11.17) int -> r8 "fgMakeTemp is creating a new local variable"
; V41 rat2 [V41,T24] ( 3, 3.84) int -> r8 "runtime lookup"
@@ -121,15 +121,15 @@ G_M39096_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr r7, [sp+0x5C]
cmp r7, 1
- ble SHORT G_M39096_IG15
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ble G_M39096_IG27
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M39096_IG09: ; bbWeight=1.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 16
- ble G_M39096_IG21
- ;; size=6 bbWeight=1.99 PerfScore 3.97
+ ble SHORT G_M39096_IG16
+ ;; size=4 bbWeight=1.99 PerfScore 3.97
G_M39096_IG10: ; bbWeight=0.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
- beq G_M39096_IG30
+ beq G_M39096_IG31
;; size=6 bbWeight=0.99 PerfScore 1.99
G_M39096_IG11: ; bbWeight=1.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
subs r6, r6, 1
@@ -205,42 +205,93 @@ G_M39096_IG14: ; bbWeight=1.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
cmp r7, 1
bgt SHORT G_M39096_IG09
;; size=106 bbWeight=1.99 PerfScore 79.79
-G_M39096_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M39096_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- add sp, 52
- pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- add sp, 8
- bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M39096_IG16: ; bbWeight=12.32, gcVars=0000000000000000 {}, gcrefRegs=0410 {r4 r10}, byrefRegs=0100 {r8}, gcvars, byref, isz
- ; gcrRegs +[r4 r10]
- ; byrRegs +[r8]
- adds r1, r6, 1
- cmp r1, r7
- bhs G_M39096_IG33
+ b SHORT G_M39096_IG27
+ ;; size=2 bbWeight=0.01 PerfScore 0.01
+G_M39096_IG16: ; bbWeight=0.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
+ cmp r7, 2
+ beq G_M39096_IG29
+ ;; size=6 bbWeight=0.99 PerfScore 1.98
+G_M39096_IG17: ; bbWeight=0.98, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r7, 3
+ beq SHORT G_M39096_IG28
+ ;; size=4 bbWeight=0.98 PerfScore 1.96
+G_M39096_IG18: ; bbWeight=0.96, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x24]
+ ldr r0, [r0]
+ ldr r8, [r0+0x10]
+ cmp r8, 0
+ beq SHORT G_M39096_IG20
+ ;; size=14 bbWeight=0.96 PerfScore 4.80
+G_M39096_IG19: ; bbWeight=0.77, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M39096_IG21
+ ;; size=2 bbWeight=0.77 PerfScore 0.77
+G_M39096_IG20: ; bbWeight=0.19, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ mov r0, r5
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r8, r0
+ ;; size=22 bbWeight=0.19 PerfScore 1.34
+G_M39096_IG21: ; bbWeight=0.96, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r2, r8
+ str r7, [sp]
+ add r1, sp, 12
+ add r0, sp, 88
+ movs r3, 0
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ blx lr // System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this
+ ; gcr arg pop 0
+ ldr r5, [sp+0x0C]
+ ; byrRegs +[r5]
+ ldr r8, [sp+0x10]
+ movs r7, 0
+ add r6, r8, -1
+ cmp r6, 0
+ ble SHORT G_M39096_IG27
+ ;; size=40 bbWeight=0.96 PerfScore 14.39
+G_M39096_IG22: ; bbWeight=8.08, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ add r9, r7, 1
+ lsls r2, r7, 2
+ adds r2, r2, 4
+ ldr r10, [r5+r2]
+ ; gcrRegs +[r10]
+ b SHORT G_M39096_IG24
+ ;; size=14 bbWeight=8.08 PerfScore 40.41
+G_M39096_IG23: ; bbWeight=12.32, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ adds r1, r7, 1
+ cmp r1, r8
+ bhs SHORT G_M39096_IG30
ldr r2, [sp+0x08] // [V36 cse1]
adds r1, r2, 4
- add r0, r8, r1
+ adds r0, r5, r1
; byrRegs +[r0]
- ldr r1, [r8+r2]
+ ldr r1, [r5+r2]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- subs r6, r6, 1
- ;; size=32 bbWeight=12.32 PerfScore 135.48
-G_M39096_IG17: ; bbWeight=20.40, gcrefRegs=0410 {r4 r10}, byrefRegs=0100 {r8}, byref, isz
- cmp r6, 0
- blt SHORT G_M39096_IG19
+ subs r7, r7, 1
+ ;; size=26 bbWeight=12.32 PerfScore 135.48
+G_M39096_IG24: ; bbWeight=20.40, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ cmp r7, 0
+ blt SHORT G_M39096_IG26
;; size=4 bbWeight=20.40 PerfScore 40.80
-G_M39096_IG18: ; bbWeight=19.49, gcrefRegs=0410 {r4 r10}, byrefRegs=0100 {r8}, byref, isz
- cmp r6, r7
- bhs G_M39096_IG33
- lsls r3, r6, 2
+G_M39096_IG25: ; bbWeight=19.49, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ cmp r7, r8
+ bhs SHORT G_M39096_IG30
+ lsls r3, r7, 2
str r3, [sp+0x08] // [V36 cse1]
- ldr r2, [r8+r3]
+ ldr r2, [r5+r3]
; gcrRegs +[r2]
mov r1, r10
; gcrRegs +[r1]
@@ -251,16 +302,16 @@ G_M39096_IG18: ; bbWeight=19.49, gcrefRegs=0410 {r4 r10}, byrefRegs=0100
; gcrRegs -[r0-r2]
; gcr arg pop 0
cmp r0, 0
- blt SHORT G_M39096_IG16
- ;; size=28 bbWeight=19.49 PerfScore 214.36
-G_M39096_IG19: ; bbWeight=8.08, gcrefRegs=0410 {r4 r10}, byrefRegs=0100 {r8}, byref, isz
- adds r2, r6, 1
- cmp r2, r7
- bhs G_M39096_IG33
- lsls r2, r6, 2
- mov r6, r2
- adds r1, r6, 4
- add r0, r8, r1
+ blt SHORT G_M39096_IG23
+ ;; size=24 bbWeight=19.49 PerfScore 214.36
+G_M39096_IG26: ; bbWeight=8.08, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ adds r2, r7, 1
+ cmp r2, r8
+ bhs SHORT G_M39096_IG30
+ lsls r2, r7, 2
+ mov r7, r2
+ adds r1, r7, 4
+ adds r0, r5, r1
; byrRegs +[r0]
mov r1, r10
; gcrRegs +[r1]
@@ -269,72 +320,20 @@ G_M39096_IG19: ; bbWeight=8.08, gcrefRegs=0410 {r4 r10}, byrefRegs=0100 {
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1 r10]
; byrRegs -[r0]
- mov r6, r5
- cmp r6, r9
- bge SHORT G_M39096_IG15
- ;; size=36 bbWeight=8.08 PerfScore 113.16
-G_M39096_IG20: ; bbWeight=8.08, gcrefRegs=0010 {r4}, byrefRegs=0100 {r8}, byref, isz
- adds r5, r6, 1
- lsls r2, r6, 2
- adds r2, r2, 4
- ldr r10, [r8+r2]
- ; gcrRegs +[r10]
- b SHORT G_M39096_IG17
- ;; size=12 bbWeight=8.08 PerfScore 40.41
-G_M39096_IG21: ; bbWeight=0.99, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r10]
- ; byrRegs -[r8]
- cmp r7, 2
- beq SHORT G_M39096_IG29
- ;; size=4 bbWeight=0.99 PerfScore 1.98
-G_M39096_IG22: ; bbWeight=0.98, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r7, 3
- beq SHORT G_M39096_IG28
- ;; size=4 bbWeight=0.98 PerfScore 1.96
-G_M39096_IG23: ; bbWeight=0.96, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r5+0x24]
- ldr r0, [r0]
- ldr r8, [r0+0x10]
- cmp r8, 0
- beq SHORT G_M39096_IG25
- ;; size=14 bbWeight=0.96 PerfScore 4.80
-G_M39096_IG24: ; bbWeight=0.77, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M39096_IG26
- ;; size=2 bbWeight=0.77 PerfScore 0.77
-G_M39096_IG25: ; bbWeight=0.19, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- mov r0, r5
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r8, r0
- ;; size=22 bbWeight=0.19 PerfScore 1.34
-G_M39096_IG26: ; bbWeight=0.96, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r2, r8
- str r7, [sp] // [V07 OutArgs]
- add r1, sp, 12 // [V16 tmp9]
...
-8 (-1.14%) : 622205.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -121,8 +121,8 @@ G_M39096_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr r7, [sp+0x5C]
cmp r7, 1
- ble SHORT G_M39096_IG18
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ble G_M39096_IG26
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M39096_IG09: ; bbWeight=1.90, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 16
bgt SHORT G_M39096_IG13
@@ -138,14 +138,14 @@ G_M39096_IG11: ; bbWeight=0.96, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r0, [r0]
ldr r8, [r0+0x10]
cmp r8, 0
- beq G_M39096_IG24
- ;; size=22 bbWeight=0.96 PerfScore 6.71
+ beq SHORT G_M39096_IG19
+ ;; size=20 bbWeight=0.96 PerfScore 6.71
G_M39096_IG12: ; bbWeight=0.77, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M39096_IG25
+ b SHORT G_M39096_IG20
;; size=2 bbWeight=0.77 PerfScore 0.77
G_M39096_IG13: ; bbWeight=0.92, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
- beq G_M39096_IG29
+ beq G_M39096_IG30
;; size=6 bbWeight=0.92 PerfScore 1.84
G_M39096_IG14: ; bbWeight=1.92, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
subs r6, r6, 1
@@ -221,19 +221,52 @@ G_M39096_IG17: ; bbWeight=1.92, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
cmp r7, 1
bgt SHORT G_M39096_IG09
;; size=106 bbWeight=1.92 PerfScore 76.73
-G_M39096_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M39096_IG18: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- add sp, 52
- pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- add sp, 8
- bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M39096_IG19: ; bbWeight=4.48, gcVars=0000000000000000 {}, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ; gcrRegs +[r4 r10]
+ b SHORT G_M39096_IG26
+ ;; size=2 bbWeight=0.02 PerfScore 0.02
+G_M39096_IG19: ; bbWeight=0.19, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r4]
+ mov r0, r5
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r8, r0
+ ;; size=22 bbWeight=0.19 PerfScore 1.34
+G_M39096_IG20: ; bbWeight=0.96, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r2, r8
+ str r7, [sp]
+ add r1, sp, 12
+ add r0, sp, 88
+ movs r3, 0
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ blx lr // System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this
+ ; gcr arg pop 0
+ ldr r5, [sp+0x0C]
; byrRegs +[r5]
+ ldr r8, [sp+0x10]
+ movs r7, 0
+ add r6, r8, -1
+ cmp r6, 0
+ ble SHORT G_M39096_IG26
+ ;; size=40 bbWeight=0.96 PerfScore 14.39
+G_M39096_IG21: ; bbWeight=3.89, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ add r9, r7, 1
+ lsls r2, r7, 2
+ adds r2, r2, 4
+ ldr r10, [r5+r2]
+ ; gcrRegs +[r10]
+ b SHORT G_M39096_IG23
+ ;; size=14 bbWeight=3.89 PerfScore 19.46
+G_M39096_IG22: ; bbWeight=4.48, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
adds r1, r7, 1
cmp r1, r8
- bhs G_M39096_IG32
+ bhs SHORT G_M39096_IG29
ldr r2, [sp+0x08] // [V36 cse1]
adds r1, r2, 4
adds r0, r5, r1
@@ -246,14 +279,14 @@ G_M39096_IG19: ; bbWeight=4.48, gcVars=0000000000000000 {}, gcrefRegs=041
; gcrRegs -[r1]
; byrRegs -[r0]
subs r7, r7, 1
- ;; size=28 bbWeight=4.48 PerfScore 49.29
-G_M39096_IG20: ; bbWeight=8.37, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ ;; size=26 bbWeight=4.48 PerfScore 49.29
+G_M39096_IG23: ; bbWeight=8.37, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
cmp r7, 0
- blt SHORT G_M39096_IG22
+ blt SHORT G_M39096_IG25
;; size=4 bbWeight=8.37 PerfScore 16.75
-G_M39096_IG21: ; bbWeight=7.44, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+G_M39096_IG24: ; bbWeight=7.44, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
cmp r7, r8
- bhs G_M39096_IG32
+ bhs SHORT G_M39096_IG29
lsls r3, r7, 2
str r3, [sp+0x08] // [V36 cse1]
ldr r2, [r5+r3]
@@ -267,12 +300,12 @@ G_M39096_IG21: ; bbWeight=7.44, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {
; gcrRegs -[r0-r2]
; gcr arg pop 0
cmp r0, 0
- blt SHORT G_M39096_IG19
- ;; size=26 bbWeight=7.44 PerfScore 81.79
-G_M39096_IG22: ; bbWeight=3.89, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ blt SHORT G_M39096_IG22
+ ;; size=24 bbWeight=7.44 PerfScore 81.79
+G_M39096_IG25: ; bbWeight=3.89, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
adds r2, r7, 1
cmp r2, r8
- bhs G_M39096_IG32
+ bhs SHORT G_M39096_IG29
lsls r2, r7, 2
mov r7, r2
adds r1, r7, 4
@@ -287,52 +320,18 @@ G_M39096_IG22: ; bbWeight=3.89, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {
; byrRegs -[r0]
mov r7, r9
cmp r7, r6
- bge SHORT G_M39096_IG18
- ;; size=34 bbWeight=3.89 PerfScore 54.50
-G_M39096_IG23: ; bbWeight=3.89, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- add r9, r7, 1
- lsls r2, r7, 2
- adds r2, r2, 4
- ldr r10, [r5+r2]
- ; gcrRegs +[r10]
- b SHORT G_M39096_IG20
- ;; size=14 bbWeight=3.89 PerfScore 19.46
-G_M39096_IG24: ; bbWeight=0.19, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r10]
- ; byrRegs -[r5]
- mov r0, r5
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r8, r0
- ;; size=22 bbWeight=0.19 PerfScore 1.34
-G_M39096_IG25: ; bbWeight=0.96, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r2, r8
- str r7, [sp] // [V07 OutArgs]
- add r1, sp, 12 // [V16 tmp9]
- add r0, sp, 88 // [V01 arg0]
- movs r3, 0
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr lr, [lr]
- blx lr // System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this
- ; gcr arg pop 0
- ldr r5, [sp+0x0C] // [V27 tmp20]
- ; byrRegs +[r5]
- ldr r8, [sp+0x10] // [V28 tmp21]
- movs r7, 0
- add r6, r8, -1
- cmp r6, 0
- ble SHORT G_M39096_IG18
- ;; size=40 bbWeight=0.96 PerfScore 14.39
-G_M39096_IG26: ; bbWeight=0.95, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- b SHORT G_M39096_IG23
- ;; size=2 bbWeight=0.95 PerfScore 0.95
-G_M39096_IG27: ; bbWeight=0.02, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ blt SHORT G_M39096_IG21
+ ;; size=32 bbWeight=3.89 PerfScore 54.50
+G_M39096_IG26: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r4]
; byrRegs -[r5]
+ add sp, 52
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ add sp, 8
+ bx lr
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M39096_IG27: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4]
movs r1, 0
str r1, [sp] // [V07 OutArgs]
movs r1, 1
@@ -350,7 +349,7 @@ G_M39096_IG27: ; bbWeight=0.02, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r3-r4]
; byrRegs -[r1]
; gcr arg pop 0
- b SHORT G_M39096_IG18
+ b SHORT G_M39096_IG26
;; size=32 bbWeight=0.02 PerfScore 0.27
G_M39096_IG28: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]
@@ -405,18 +404,24 @@ G_M39096_IG28: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs -[r3-r4]
; byrRegs -[r1]
; gcr arg pop 0
- b SHORT G_M39096_IG18
+ b SHORT G_M39096_IG26
;; size=92 bbWeight=0 PerfScore 0.00
-G_M39096_IG29: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M39096_IG29: ; 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_M39096_IG30: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]
ldr r0, [r5+0x24]
ldr r0, [r0]
ldr r8, [r0+0x10]
cmp r8, 0
- beq SHORT G_M39096_IG30
- b SHORT G_M39096_IG31
+ beq SHORT G_M39096_IG31
+ b SHORT G_M39096_IG32
;; size=16 bbWeight=0 PerfScore 0.00
-G_M39096_IG30: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M39096_IG31: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r5
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -426,7 +431,7 @@ G_M39096_IG30: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcr arg pop 0
mov r8, r0
;; size=22 bbWeight=0 PerfScore 0.00
-G_M39096_IG31: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M39096_IG32: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r2, r8
str r7, [sp] // [V07 OutArgs]
add r1, sp, 20 // [V14 tmp7]
@@ -450,17 +455,10 @@ G_M39096_IG31: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs -[r3-r4]
; byrRegs -[r1]
; gcr arg pop 0
- b SHORT G_M39096_IG18
+ b SHORT G_M39096_IG26
;; size=48 bbWeight=0 PerfScore 0.00
-G_M39096_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
...
-8 (-1.06%) : 187780.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -126,7 +126,7 @@ G_M39096_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr r7, [sp+0x64]
cmp r7, 1
- ble G_M39096_IG21
+ ble G_M39096_IG29
;; size=20 bbWeight=1 PerfScore 7.00
G_M39096_IG09: ; bbWeight=1.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 16
@@ -145,10 +145,10 @@ G_M39096_IG12: ; bbWeight=0.49, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r0, [r0]
ldr r8, [r0+0x10]
cmp r8, 0
- beq G_M39096_IG27
- ;; size=16 bbWeight=0.49 PerfScore 2.45
+ beq SHORT G_M39096_IG22
+ ;; size=14 bbWeight=0.49 PerfScore 2.45
G_M39096_IG13: ; bbWeight=0.39, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M39096_IG28
+ b SHORT G_M39096_IG23
;; size=2 bbWeight=0.39 PerfScore 0.39
G_M39096_IG14: ; bbWeight=0.42, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r7, [sp+0x60]
@@ -162,12 +162,12 @@ G_M39096_IG14: ; bbWeight=0.42, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
movs r1, 0
cmp r1, r5
- bhs G_M39096_IG34
+ bhs G_M39096_IG31
ldr r1, [r7]
; gcrRegs +[r1]
movs r2, 1
cmp r2, r5
- bhs G_M39096_IG34
+ bhs G_M39096_IG31
ldr r2, [r7+0x04]
; gcrRegs +[r2]
ldr r0, [r4+0x04]
@@ -177,8 +177,8 @@ G_M39096_IG14: ; bbWeight=0.42, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r2 r4]
; gcr arg pop 0
cmp r0, 0
- ble SHORT G_M39096_IG21
- ;; size=48 bbWeight=0.42 PerfScore 8.33
+ ble G_M39096_IG29
+ ;; size=50 bbWeight=0.42 PerfScore 8.33
G_M39096_IG15: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
ldr r1, [r7]
; gcrRegs +[r1]
@@ -202,12 +202,12 @@ G_M39096_IG15: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, b
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0 r7]
- b SHORT G_M39096_IG21
+ b SHORT G_M39096_IG29
;; size=34 bbWeight=0.23 PerfScore 3.01
G_M39096_IG16: ; bbWeight=0.19, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]
cmp r6, 0
- beq G_M39096_IG31
+ beq G_M39096_IG32
;; size=6 bbWeight=0.19 PerfScore 0.38
G_M39096_IG17: ; bbWeight=1.19, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
subs r6, r6, 1
@@ -283,85 +283,12 @@ G_M39096_IG20: ; bbWeight=1.19, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
cmp r7, 1
bgt G_M39096_IG09
;; size=108 bbWeight=1.19 PerfScore 47.50
-G_M39096_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M39096_IG21: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- add sp, 60
- pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- add sp, 8
- bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M39096_IG22: ; bbWeight=6.05, gcVars=0000000000000000 {}, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ; gcrRegs +[r4 r10]
- ; byrRegs +[r5]
- adds r1, r7, 1
- cmp r1, r8
- bhs G_M39096_IG34
- ldr r2, [sp+0x10] // [V41 cse1]
- adds r1, r2, 4
- adds r0, r5, r1
- ; byrRegs +[r0]
- ldr r1, [r5+r2]
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1]
- ; byrRegs -[r0]
- subs r7, r7, 1
- ;; size=28 bbWeight=6.05 PerfScore 66.57
-G_M39096_IG23: ; bbWeight=9.53, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, 0
- blt SHORT G_M39096_IG25
- ;; size=4 bbWeight=9.53 PerfScore 19.06
-G_M39096_IG24: ; bbWeight=9.03, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, r8
- bhs G_M39096_IG34
- lsls r3, r7, 2
- str r3, [sp+0x10] // [V41 cse1]
- ldr r2, [r5+r3]
- ; gcrRegs +[r2]
- mov r1, r10
- ; gcrRegs +[r1]
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- ldr lr, [r4+0x0C]
- blx lr // System.Comparison`1[System.__Canon]:Invoke(System.__Canon,System.__Canon):int:this
- ; gcrRegs -[r0-r2]
- ; gcr arg pop 0
- cmp r0, 0
- blt SHORT G_M39096_IG22
- ;; size=26 bbWeight=9.03 PerfScore 99.34
-G_M39096_IG25: ; bbWeight=3.48, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- adds r2, r7, 1
- cmp r2, r8
- bhs G_M39096_IG34
- lsls r2, r7, 2
- mov r7, r2
- adds r1, r7, 4
- adds r0, r5, r1
- ; byrRegs +[r0]
- mov r1, r10
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r10]
- ; byrRegs -[r0]
- mov r7, r9
- cmp r7, r6
- bge SHORT G_M39096_IG21
- ;; size=34 bbWeight=3.48 PerfScore 48.71
-G_M39096_IG26: ; bbWeight=3.48, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- add r9, r7, 1
- lsls r2, r7, 2
- adds r2, r2, 4
- ldr r10, [r5+r2]
- ; gcrRegs +[r10]
- b SHORT G_M39096_IG23
- ;; size=14 bbWeight=3.48 PerfScore 17.40
-G_M39096_IG27: ; bbWeight=0.10, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r10]
- ; byrRegs -[r5]
+ b SHORT G_M39096_IG29
+ ;; size=2 bbWeight=0.02 PerfScore 0.02
+G_M39096_IG22: ; bbWeight=0.10, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r4]
mov r0, r5
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -371,7 +298,7 @@ G_M39096_IG27: ; bbWeight=0.10, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov r8, r0
;; size=22 bbWeight=0.10 PerfScore 0.69
-G_M39096_IG28: ; bbWeight=0.49, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M39096_IG23: ; bbWeight=0.49, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r2, r8
str r7, [sp] // [V07 OutArgs]
add r1, sp, 20 // [V16 tmp9]
@@ -388,13 +315,85 @@ G_M39096_IG28: ; bbWeight=0.49, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
movs r7, 0
add r6, r8, -1
cmp r6, 0
- ble SHORT G_M39096_IG21
+ ble SHORT G_M39096_IG29
;; size=40 bbWeight=0.49 PerfScore 7.34
-G_M39096_IG29: ; bbWeight=0.48, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+G_M39096_IG24: ; bbWeight=3.48, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ add r9, r7, 1
+ lsls r2, r7, 2
+ adds r2, r2, 4
+ ldr r10, [r5+r2]
+ ; gcrRegs +[r10]
b SHORT G_M39096_IG26
- ;; size=2 bbWeight=0.48 PerfScore 0.48
-G_M39096_IG30: ; bbWeight=0.07, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=3.48 PerfScore 17.40
+G_M39096_IG25: ; bbWeight=6.05, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ adds r1, r7, 1
+ cmp r1, r8
+ bhs SHORT G_M39096_IG31
+ ldr r2, [sp+0x10] // [V41 cse1]
+ adds r1, r2, 4
+ adds r0, r5, r1
+ ; byrRegs +[r0]
+ ldr r1, [r5+r2]
+ ; gcrRegs +[r1]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0]
+ subs r7, r7, 1
+ ;; size=26 bbWeight=6.05 PerfScore 66.57
+G_M39096_IG26: ; bbWeight=9.53, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ cmp r7, 0
+ blt SHORT G_M39096_IG28
+ ;; size=4 bbWeight=9.53 PerfScore 19.06
+G_M39096_IG27: ; bbWeight=9.03, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ cmp r7, r8
+ bhs SHORT G_M39096_IG31
+ lsls r3, r7, 2
+ str r3, [sp+0x10] // [V41 cse1]
+ ldr r2, [r5+r3]
+ ; gcrRegs +[r2]
+ mov r1, r10
+ ; gcrRegs +[r1]
+ ldr r0, [r4+0x04]
+ ; gcrRegs +[r0]
+ ldr lr, [r4+0x0C]
+ blx lr // System.Comparison`1[System.__Canon]:Invoke(System.__Canon,System.__Canon):int:this
+ ; gcrRegs -[r0-r2]
+ ; gcr arg pop 0
+ cmp r0, 0
+ blt SHORT G_M39096_IG25
+ ;; size=24 bbWeight=9.03 PerfScore 99.34
+G_M39096_IG28: ; bbWeight=3.48, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ adds r2, r7, 1
+ cmp r2, r8
+ bhs SHORT G_M39096_IG31
+ lsls r2, r7, 2
+ mov r7, r2
+ adds r1, r7, 4
+ adds r0, r5, r1
+ ; byrRegs +[r0]
+ mov r1, r10
+ ; gcrRegs +[r1]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[r1 r10]
+ ; byrRegs -[r0]
+ mov r7, r9
+ cmp r7, r6
+ blt SHORT G_M39096_IG24
+ ;; size=32 bbWeight=3.48 PerfScore 48.71
+G_M39096_IG29: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r4]
; byrRegs -[r5]
+ add sp, 60
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ add sp, 8
+ bx lr
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M39096_IG30: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
...
+6 (+0.75%) : 71351.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -129,8 +129,8 @@ G_M39096_IG08: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre
blx r3 // <unknown method>
ldr r7, [sp+0x64]
cmp r7, 1
- ble SHORT G_M39096_IG18
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ble G_M39096_IG27
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M39096_IG09: ; bbWeight=1.09, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
cmp r7, 16
bgt SHORT G_M39096_IG13
@@ -150,12 +150,12 @@ G_M39096_IG11: ; bbWeight=0.49, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
movs r1, 0
cmp r1, r4
- bhs G_M39096_IG33
+ bhs G_M39096_IG34
ldr r1, [r7]
; gcrRegs +[r1]
movs r2, 1
cmp r2, r4
- bhs G_M39096_IG33
+ bhs G_M39096_IG34
ldr r2, [r7+0x04]
; gcrRegs +[r2]
ldr r0, [r6+0x04]
@@ -164,8 +164,8 @@ G_M39096_IG11: ; bbWeight=0.49, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0-r2 r6]
cmp r0, 0
- ble SHORT G_M39096_IG18
- ;; size=48 bbWeight=0.49 PerfScore 9.81
+ ble G_M39096_IG27
+ ;; size=50 bbWeight=0.49 PerfScore 9.81
G_M39096_IG12: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
ldr r1, [r7]
; gcrRegs +[r1]
@@ -189,12 +189,12 @@ G_M39096_IG12: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, b
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0 r7]
- b SHORT G_M39096_IG18
+ b SHORT G_M39096_IG27
;; size=34 bbWeight=0.11 PerfScore 1.42
G_M39096_IG13: ; bbWeight=0.10, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r6]
cmp r5, 0
- beq G_M39096_IG30
+ beq G_M39096_IG31
;; size=6 bbWeight=0.10 PerfScore 0.19
G_M39096_IG14: ; bbWeight=1.10, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
subs r5, r5, 1
@@ -264,14 +264,11 @@ G_M39096_IG17: ; bbWeight=1.10, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
cmp r7, 1
bgt SHORT G_M39096_IG09
;; size=106 bbWeight=1.10 PerfScore 43.86
-G_M39096_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M39096_IG18: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]
- add sp, 64
- pop {r4,r5,r6,r7,r8,r9,r11,lr}
- add sp, 8
- bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M39096_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref, isz
+ b SHORT G_M39096_IG27
+ ;; size=2 bbWeight=0.01 PerfScore 0.01
+G_M39096_IG19: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r6]
cmp r7, 3
beq SHORT G_M39096_IG22
@@ -281,10 +278,10 @@ G_M39096_IG20: ; bbWeight=0.32, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
ldr r0, [r0]
ldr r8, [r0+0x24]
cmp r8, 0
- beq SHORT G_M39096_IG26
+ beq SHORT G_M39096_IG28
;; size=14 bbWeight=0.32 PerfScore 1.61
G_M39096_IG21: ; bbWeight=0.26, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M39096_IG27
+ b SHORT G_M39096_IG29
;; size=2 bbWeight=0.26 PerfScore 0.26
G_M39096_IG22: ; bbWeight=0.18, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
ldr r4, [sp+0x60] // [V01 arg0]
@@ -297,12 +294,12 @@ G_M39096_IG22: ; bbWeight=0.18, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
movs r1, 0
cmp r1, r8
- bhs G_M39096_IG33
+ bhs G_M39096_IG34
ldr r1, [r4]
; gcrRegs +[r1]
movs r2, 1
cmp r2, r8
- bhs G_M39096_IG33
+ bhs G_M39096_IG34
ldr r2, [r4+0x04]
; gcrRegs +[r2]
ldr r0, [r6+0x04]
@@ -311,7 +308,7 @@ G_M39096_IG22: ; bbWeight=0.18, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0-r2]
cmp r0, 0
- bgt SHORT G_M39096_IG29
+ bgt SHORT G_M39096_IG30
;; size=50 bbWeight=0.18 PerfScore 3.54
G_M39096_IG23: ; bbWeight=0.18, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r4]
@@ -325,12 +322,12 @@ G_M39096_IG23: ; bbWeight=0.18, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
movs r1, 0
cmp r1, r4
- bhs G_M39096_IG33
+ bhs G_M39096_IG34
ldr r1, [r7]
; gcrRegs +[r1]
movs r2, 2
cmp r2, r4
- bhs G_M39096_IG33
+ bhs G_M39096_IG34
ldr r2, [r7+0x08]
; gcrRegs +[r2]
ldr r0, [r6+0x04]
@@ -339,7 +336,7 @@ G_M39096_IG23: ; bbWeight=0.18, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0-r2]
cmp r0, 0
- bgt SHORT G_M39096_IG28
+ bgt SHORT G_M39096_IG26
;; size=48 bbWeight=0.18 PerfScore 3.54
G_M39096_IG24: ; bbWeight=0.18, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r7]
@@ -353,12 +350,12 @@ G_M39096_IG24: ; bbWeight=0.18, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
movs r1, 1
cmp r1, r5
- bhs G_M39096_IG33
+ bhs G_M39096_IG34
ldr r1, [r4+0x04]
; gcrRegs +[r1]
movs r2, 2
cmp r2, r5
- bhs G_M39096_IG33
+ bhs G_M39096_IG34
ldr r2, [r4+0x08]
; gcrRegs +[r2]
ldr r0, [r6+0x04]
@@ -367,7 +364,7 @@ G_M39096_IG24: ; bbWeight=0.18, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0-r2 r6]
cmp r0, 0
- ble SHORT G_M39096_IG18
+ ble SHORT G_M39096_IG27
;; size=48 bbWeight=0.18 PerfScore 3.54
G_M39096_IG25: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r1, [r4+0x04]
@@ -392,43 +389,9 @@ G_M39096_IG25: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0 r4]
- b SHORT G_M39096_IG18
+ b SHORT G_M39096_IG27
;; size=36 bbWeight=0.04 PerfScore 0.51
-G_M39096_IG26: ; bbWeight=0.06, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r6]
- mov r0, r4
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov r8, r0
- ;; size=22 bbWeight=0.06 PerfScore 0.45
-G_M39096_IG27: ; bbWeight=0.32, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
- mov r2, r8
- str r7, [sp] // [V07 OutArgs]
- add r1, sp, 28 // [V16 tmp9]
- add r0, sp, 96 // [V01 arg0]
- movs r3, 0
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr lr, [lr]
- blx lr // System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this
- ldr r1, [sp+0x1C] // [V31 tmp24]
- ; byrRegs +[r1]
- ldr r2, [sp+0x20] // [V32 tmp25]
- mov r0, r4
- mov r3, r6
- ; gcrRegs +[r3]
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr lr, [lr]
- blx lr // System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])
- ; gcrRegs -[r3 r6]
- ; byrRegs -[r1]
- b SHORT G_M39096_IG18
- ;; size=48 bbWeight=0.32 PerfScore 5.79
-G_M39096_IG28: ; bbWeight=0.04, gcrefRegs=0040 {r6}, byrefRegs=0080 {r7}, byref, isz
+G_M39096_IG26: ; bbWeight=0.04, gcrefRegs=0040 {r6}, byrefRegs=0080 {r7}, byref, isz
; gcrRegs +[r6]
; byrRegs +[r7]
ldr r1, [r7]
@@ -455,7 +418,49 @@ G_M39096_IG28: ; bbWeight=0.04, gcrefRegs=0040 {r6}, byrefRegs=0080 {r7},
; byrRegs -[r0 r7]
b SHORT G_M39096_IG24
;; size=36 bbWeight=0.04 PerfScore 0.51
-G_M39096_IG29: ; bbWeight=0.04, gcrefRegs=0040 {r6}, byrefRegs=0010 {r4}, byref, isz
+G_M39096_IG27: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r6]
+ add sp, 64
+ pop {r4,r5,r6,r7,r8,r9,r11,lr}
+ add sp, 8
+ bx lr
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M39096_IG28: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r6]
+ mov r0, r4
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov r8, r0
+ ;; size=22 bbWeight=0.06 PerfScore 0.45
+G_M39096_IG29: ; bbWeight=0.32, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+ mov r2, r8
+ str r7, [sp] // [V07 OutArgs]
+ add r1, sp, 28 // [V16 tmp9]
+ add r0, sp, 96 // [V01 arg0]
+ movs r3, 0
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ blx lr // System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this
+ ldr r1, [sp+0x1C] // [V31 tmp24]
+ ; byrRegs +[r1]
+ ldr r2, [sp+0x20] // [V32 tmp25]
+ mov r0, r4
+ mov r3, r6
+ ; gcrRegs +[r3]
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ blx lr // System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])
+ ; gcrRegs -[r3 r6]
+ ; byrRegs -[r1]
+ b SHORT G_M39096_IG27
+ ;; size=48 bbWeight=0.32 PerfScore 5.79
+G_M39096_IG30: ; bbWeight=0.04, gcrefRegs=0040 {r6}, byrefRegs=0010 {r4}, byref, isz
+ ; gcrRegs +[r6]
...
+8 (+0.88%) : 310605.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -142,18 +142,18 @@ G_M39096_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr r7, [sp+0x6C]
cmp r7, 1
- ble G_M39096_IG23
+ ble G_M39096_IG14
;; size=20 bbWeight=1 PerfScore 7.00
G_M39096_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 16
- bgt G_M39096_IG26
+ bgt G_M39096_IG29
cmp r7, 2
beq G_M39096_IG24
;; size=12 bbWeight=1 PerfScore 4.00
G_M39096_IG10: ; bbWeight=0.80, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 3
- bne SHORT G_M39096_IG14
- ;; size=4 bbWeight=0.80 PerfScore 1.60
+ bne G_M39096_IG20
+ ;; size=6 bbWeight=0.80 PerfScore 1.60
G_M39096_IG11: ; bbWeight=0.40, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r5, [sp+0x68]
; byrRegs +[r5]
@@ -166,12 +166,12 @@ G_M39096_IG11: ; bbWeight=0.40, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
movs r1, 0
cmp r1, r7
- bhs G_M39096_IG25
+ bhs G_M39096_IG28
ldr r1, [r5]
; gcrRegs +[r1]
movs r2, 1
cmp r2, r7
- bhs G_M39096_IG25
+ bhs G_M39096_IG28
ldr r2, [r5+0x04]
; gcrRegs +[r2]
ldr r0, [r4+0x04]
@@ -217,12 +217,12 @@ G_M39096_IG12: ; bbWeight=0.40, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
movs r1, 0
cmp r1, r5
- bhs G_M39096_IG25
+ bhs G_M39096_IG28
ldr r1, [r6]
; gcrRegs +[r1]
movs r2, 2
cmp r2, r5
- bhs G_M39096_IG25
+ bhs G_M39096_IG28
ldr r2, [r6+0x08]
; gcrRegs +[r2]
ldr r0, [r4+0x04]
@@ -268,12 +268,12 @@ G_M39096_IG13: ; bbWeight=0.40, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
movs r1, 1
cmp r1, r6
- bhs G_M39096_IG25
+ bhs G_M39096_IG28
ldr r1, [r5+0x04]
; gcrRegs +[r1]
movs r2, 2
cmp r2, r6
- bhs G_M39096_IG25
+ bhs G_M39096_IG28
ldr r2, [r5+0x08]
; gcrRegs +[r2]
ldr r0, [r4+0x04]
@@ -283,7 +283,7 @@ G_M39096_IG13: ; bbWeight=0.40, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r2 r4]
; gcr arg pop 0
cmp r0, 0
- ble SHORT G_M39096_IG23
+ ble SHORT G_M39096_IG14
ldr r1, [r5+0x04]
; gcrRegs +[r1]
str r1, [sp+0x08] // [V24 tmp17]
@@ -306,20 +306,95 @@ G_M39096_IG13: ; bbWeight=0.40, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0 r5]
- b SHORT G_M39096_IG23
- ;; size=84 bbWeight=0.40 PerfScore 13.20
-G_M39096_IG14: ; bbWeight=0.40, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4]
+ ;; size=82 bbWeight=0.40 PerfScore 12.80
+G_M39096_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add sp, 68
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ add sp, 8
+ bx lr
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M39096_IG15: ; bbWeight=1.87, gcVars=0000000000000000 {}, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, gcvars, byref, isz
+ ; gcrRegs +[r4 r10]
+ ; byrRegs +[r5]
+ adds r1, r6, 1
+ cmp r1, r7
+ bhs G_M39096_IG28
+ ldr r2, [sp+0x18] // [V55 cse0]
+ adds r1, r2, 4
+ adds r0, r5, r1
+ ; byrRegs +[r0]
+ ldr r1, [r5+r2]
+ ; gcrRegs +[r1]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0]
+ subs r6, r6, 1
+ ;; size=28 bbWeight=1.87 PerfScore 20.55
+G_M39096_IG16: ; bbWeight=3.49, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ cmp r6, 0
+ blt SHORT G_M39096_IG18
+ ;; size=4 bbWeight=3.49 PerfScore 6.98
+G_M39096_IG17: ; bbWeight=3.10, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ cmp r6, r7
+ bhs G_M39096_IG28
+ lsls r3, r6, 2
+ str r3, [sp+0x18] // [V55 cse0]
+ ldr r2, [r5+r3]
+ ; gcrRegs +[r2]
+ mov r1, r10
+ ; gcrRegs +[r1]
+ ldr r0, [r4+0x04]
+ ; gcrRegs +[r0]
+ ldr lr, [r4+0x0C]
+ blx lr // <unknown method>
+ ; gcrRegs -[r0-r2]
+ ; gcr arg pop 0
+ cmp r0, 0
+ blt SHORT G_M39096_IG15
+ ;; size=26 bbWeight=3.10 PerfScore 34.11
+G_M39096_IG18: ; bbWeight=1.62, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
+ adds r2, r6, 1
+ cmp r2, r7
+ bhs G_M39096_IG28
+ lsls r2, r6, 2
+ mov r6, r2
+ adds r1, r6, 4
+ adds r0, r5, r1
+ ; byrRegs +[r0]
+ mov r1, r10
+ ; gcrRegs +[r1]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[r1 r10]
+ ; byrRegs -[r0]
+ mov r6, r9
+ cmp r6, r8
+ bge SHORT G_M39096_IG14
+ ;; size=34 bbWeight=1.62 PerfScore 22.73
+G_M39096_IG19: ; bbWeight=1.62, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ add r9, r6, 1
+ lsls r2, r6, 2
+ adds r2, r2, 4
+ ldr r10, [r5+r2]
+ ; gcrRegs +[r10]
+ b SHORT G_M39096_IG16
+ ;; size=14 bbWeight=1.62 PerfScore 8.12
+G_M39096_IG20: ; bbWeight=0.40, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r10]
+ ; byrRegs -[r5]
ldr r0, [r5+0x24]
ldr r0, [r0]
ldr r2, [r0+0x10]
cmp r2, 0
- beq SHORT G_M39096_IG16
+ beq SHORT G_M39096_IG22
;; size=10 bbWeight=0.40 PerfScore 2.00
-G_M39096_IG15: ; bbWeight=0.32, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M39096_IG17
+G_M39096_IG21: ; bbWeight=0.32, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M39096_IG23
;; size=2 bbWeight=0.32 PerfScore 0.32
-G_M39096_IG16: ; bbWeight=0.08, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M39096_IG22: ; bbWeight=0.08, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r5
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -329,7 +404,7 @@ G_M39096_IG16: ; bbWeight=0.08, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov r2, r0
;; size=22 bbWeight=0.08 PerfScore 0.56
-G_M39096_IG17: ; bbWeight=0.40, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M39096_IG23: ; bbWeight=0.40, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
str r7, [sp] // [V07 OutArgs]
add r1, sp, 28 // [V16 tmp9]
add r0, sp, 104 // [V01 arg0]
@@ -345,85 +420,11 @@ G_M39096_IG17: ; bbWeight=0.40, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
movs r6, 0
add r8, r7, -1
cmp r8, 0
- ble SHORT G_M39096_IG23
- ;; size=38 bbWeight=0.40 PerfScore 5.60
-G_M39096_IG18: ; bbWeight=1.62, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- add r9, r6, 1
- lsls r2, r6, 2
- adds r2, r2, 4
- ldr r10, [r5+r2]
- ; gcrRegs +[r10]
- b SHORT G_M39096_IG20
- ;; size=14 bbWeight=1.62 PerfScore 8.12
-G_M39096_IG19: ; bbWeight=1.87, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- adds r1, r6, 1
- cmp r1, r7
- bhs SHORT G_M39096_IG25
- ldr r2, [sp+0x18] // [V55 cse0]
- adds r1, r2, 4
- adds r0, r5, r1
- ; byrRegs +[r0]
- ldr r1, [r5+r2]
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1]
- ; byrRegs -[r0]
- subs r6, r6, 1
- ;; size=26 bbWeight=1.87 PerfScore 20.55
-G_M39096_IG20: ; bbWeight=3.49, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- cmp r6, 0
- blt SHORT G_M39096_IG22
- ;; size=4 bbWeight=3.49 PerfScore 6.98
-G_M39096_IG21: ; bbWeight=3.10, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- cmp r6, r7
- bhs SHORT G_M39096_IG25
- lsls r3, r6, 2
- str r3, [sp+0x18] // [V55 cse0]
- ldr r2, [r5+r3]
- ; gcrRegs +[r2]
- mov r1, r10
- ; gcrRegs +[r1]
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- ldr lr, [r4+0x0C]
- blx lr // <unknown method>
- ; gcrRegs -[r0-r2]
- ; gcr arg pop 0
- cmp r0, 0
- blt SHORT G_M39096_IG19
- ;; size=24 bbWeight=3.10 PerfScore 34.11
-G_M39096_IG22: ; bbWeight=1.62, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- adds r2, r6, 1
- cmp r2, r7
- bhs SHORT G_M39096_IG25
- lsls r2, r6, 2
- mov r6, r2
- adds r1, r6, 4
...
+14 (+1.52%) : 198714.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -46,8 +46,8 @@
; V34 tmp27 [V34,T47] ( 2, 0 ) int -> [sp+0x28] do-not-enreg[H] hidden-struct-arg "field V14._length (fldOffset=0x4)" P-DEP
; V35 tmp28 [V35,T26] ( 2, 1.90) byref -> [sp+0x1C] do-not-enreg[H] hidden-struct-arg "field V16._reference (fldOffset=0x0)" P-DEP
; V36 tmp29 [V36,T27] ( 2, 1.90) int -> [sp+0x20] do-not-enreg[H] hidden-struct-arg "field V16._length (fldOffset=0x4)" P-DEP
-; V37 tmp30 [V37,T34] ( 7, 0.74) byref -> r5 single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-; V38 tmp31 [V38,T39] ( 3, 0.46) int -> r6 "field V17._length (fldOffset=0x4)" P-INDEP
+; V37 tmp30 [V37,T34] ( 7, 0.74) byref -> r8 single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp31 [V38,T39] ( 3, 0.46) int -> r5 "field V17._length (fldOffset=0x4)" P-INDEP
; V39 tmp32 [V39,T28] ( 7, 1.00) byref -> r6 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
; V40 tmp33 [V40,T35] ( 3, 0.62) int -> r5 "field V19._length (fldOffset=0x4)" P-INDEP
; V41 tmp34 [V41,T29] ( 7, 1.00) byref -> r8 single-def "field V21._reference (fldOffset=0x0)" P-INDEP
@@ -141,29 +141,29 @@ G_M39096_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr r7, [sp+0x6C]
cmp r7, 1
- ble SHORT G_M39096_IG19
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ble G_M39096_IG32
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M39096_IG09: ; bbWeight=1.28, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 16
bgt SHORT G_M39096_IG14
;; size=4 bbWeight=1.28 PerfScore 2.55
G_M39096_IG10: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 2
- beq G_M39096_IG32
+ beq G_M39096_IG24
;; size=6 bbWeight=1.00 PerfScore 1.99
G_M39096_IG11: ; bbWeight=0.84, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 3
- beq G_M39096_IG28
- ;; size=6 bbWeight=0.84 PerfScore 1.68
+ beq SHORT G_M39096_IG20
+ ;; size=4 bbWeight=0.84 PerfScore 1.68
G_M39096_IG12: ; bbWeight=0.63, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5+0x24]
ldr r0, [r0]
ldr r8, [r0+0x10]
cmp r8, 0
- beq G_M39096_IG25
+ beq G_M39096_IG33
;; size=16 bbWeight=0.63 PerfScore 3.16
G_M39096_IG13: ; bbWeight=0.51, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M39096_IG26
+ b SHORT G_M39096_IG34
;; size=2 bbWeight=0.51 PerfScore 0.51
G_M39096_IG14: ; bbWeight=0.28, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
@@ -243,121 +243,15 @@ G_M39096_IG18: ; bbWeight=1.28, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
cmp r7, 1
bgt SHORT G_M39096_IG09
;; size=106 bbWeight=1.28 PerfScore 51.21
-G_M39096_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M39096_IG19: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- add sp, 68
- pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- add sp, 8
- bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M39096_IG20: ; bbWeight=7.46, gcVars=0000000000000000 {}, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ; gcrRegs +[r4 r10]
- ; byrRegs +[r5]
- adds r1, r7, 1
- cmp r1, r8
- bhs G_M39096_IG40
- ldr r2, [sp+0x18] // [V56 cse1]
- adds r1, r2, 4
- adds r0, r5, r1
- ; byrRegs +[r0]
- ldr r1, [r5+r2]
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1]
- ; byrRegs -[r0]
- subs r7, r7, 1
- ;; size=28 bbWeight=7.46 PerfScore 82.04
-G_M39096_IG21: ; bbWeight=12.66, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, 0
- blt SHORT G_M39096_IG23
- ;; size=4 bbWeight=12.66 PerfScore 25.31
-G_M39096_IG22: ; bbWeight=11.98, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, r8
- bhs G_M39096_IG40
- lsls r3, r7, 2
- str r3, [sp+0x18] // [V56 cse1]
- ldr r2, [r5+r3]
- ; gcrRegs +[r2]
- mov r1, r10
- ; gcrRegs +[r1]
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- ldr lr, [r4+0x0C]
- blx lr // System.Comparison`1[System.__Canon]:Invoke(System.__Canon,System.__Canon):int:this
- ; gcrRegs -[r0-r2]
- ; gcr arg pop 0
- cmp r0, 0
- blt SHORT G_M39096_IG20
- ;; size=26 bbWeight=11.98 PerfScore 131.73
-G_M39096_IG23: ; bbWeight=5.20, gcrefRegs=0410 {r4 r10}, byrefRegs=0020 {r5}, byref, isz
- adds r2, r7, 1
- cmp r2, r8
- bhs G_M39096_IG40
- lsls r2, r7, 2
- mov r7, r2
- adds r1, r7, 4
- adds r0, r5, r1
- ; byrRegs +[r0]
- mov r1, r10
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[r1 r10]
- ; byrRegs -[r0]
- mov r7, r9
- cmp r7, r6
- bge SHORT G_M39096_IG19
- ;; size=34 bbWeight=5.20 PerfScore 72.79
-G_M39096_IG24: ; bbWeight=5.20, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- add r9, r7, 1
- lsls r2, r7, 2
- adds r2, r2, 4
- ldr r10, [r5+r2]
- ; gcrRegs +[r10]
- b SHORT G_M39096_IG21
- ;; size=14 bbWeight=5.20 PerfScore 26.00
-G_M39096_IG25: ; bbWeight=0.13, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r10]
- ; byrRegs -[r5]
- mov r0, r5
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r8, r0
- ;; size=22 bbWeight=0.13 PerfScore 0.89
-G_M39096_IG26: ; bbWeight=0.63, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mov r2, r8
- str r7, [sp] // [V07 OutArgs]
- add r1, sp, 28 // [V16 tmp9]
- add r0, sp, 104 // [V01 arg0]
- movs r3, 0
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr lr, [lr]
- blx lr // System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this
- ; gcr arg pop 0
- ldr r5, [sp+0x1C] // [V35 tmp28]
- ; byrRegs +[r5]
- ldr r8, [sp+0x20] // [V36 tmp29]
- movs r7, 0
- add r6, r8, -1
- cmp r6, 0
- ble SHORT G_M39096_IG19
- ;; size=40 bbWeight=0.63 PerfScore 9.49
-G_M39096_IG27: ; bbWeight=0.63, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- b SHORT G_M39096_IG24
- ;; size=2 bbWeight=0.63 PerfScore 0.63
-G_M39096_IG28: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r5]
- ldr r6, [sp+0x68] // [V01 arg0]
+ b SHORT G_M39096_IG32
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M39096_IG20: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
+ ldr r6, [sp+0x68]
; byrRegs +[r6]
- ldr r5, [sp+0x6C] // [V01 arg0+0x04]
+ ldr r5, [sp+0x6C]
movs r0, 1
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -381,13 +275,13 @@ G_M39096_IG28: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r2]
; gcr arg pop 0
cmp r0, 0
- bgt SHORT G_M39096_IG35
- ;; size=48 bbWeight=0.21 PerfScore 4.15
-G_M39096_IG29: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ bgt G_M39096_IG36
+ ;; size=50 bbWeight=0.21 PerfScore 4.15
+G_M39096_IG21: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r6]
- ldr r8, [sp+0x68] // [V01 arg0]
+ ldr r8, [sp+0x68]
; byrRegs +[r8]
- ldr r7, [sp+0x6C] // [V01 arg0+0x04]
+ ldr r7, [sp+0x6C]
movs r0, 1
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -411,13 +305,13 @@ G_M39096_IG29: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r2]
; gcr arg pop 0
cmp r0, 0
- bgt SHORT G_M39096_IG34
+ bgt SHORT G_M39096_IG26
;; size=54 bbWeight=0.21 PerfScore 4.15
-G_M39096_IG30: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M39096_IG22: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r8]
- ldr r6, [sp+0x68] // [V01 arg0]
+ ldr r6, [sp+0x68]
; byrRegs +[r6]
- ldr r5, [sp+0x6C] // [V01 arg0+0x04]
+ ldr r5, [sp+0x6C]
movs r0, 1
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -441,9 +335,9 @@ G_M39096_IG30: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r2 r4]
; gcr arg pop 0
cmp r0, 0
- ble G_M39096_IG19
+ ble G_M39096_IG32
;; size=50 bbWeight=0.21 PerfScore 4.15
-G_M39096_IG31: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz
+G_M39096_IG23: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz
ldr r1, [r6+0x04]
; gcrRegs +[r1]
str r1, [sp+0x08] // [V24 tmp17]
@@ -466,13 +360,13 @@ G_M39096_IG31: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, b
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0 r6]
- b SHORT G_M39096_IG19
+ b SHORT G_M39096_IG32
;; size=36 bbWeight=0.09 PerfScore 1.21
-G_M39096_IG32: ; bbWeight=0.15, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M39096_IG24: ; bbWeight=0.15, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]
- ldr r5, [sp+0x68] // [V01 arg0]
- ; byrRegs +[r5]
- ldr r6, [sp+0x6C] // [V01 arg0+0x04]
+ ldr r8, [sp+0x68] // [V01 arg0]
+ ; byrRegs +[r8]
+ ldr r5, [sp+0x6C] // [V01 arg0+0x04]
movs r0, 1
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -480,14 +374,14 @@ G_M39096_IG32: ; bbWeight=0.15, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcr arg pop 0
movs r1, 0
- cmp r1, r6
...
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 |
4 |
2 |
0 |
2 |
-4 |
+0 |
benchmarks.run_tiered.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.linux.arm.checked.mch |
19 |
16 |
0 |
3 |
-168 |
+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 |
73 |
43 |
14 |
16 |
-148 |
+66 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
96 |
61 |
14 |
21 |
-320 |
+66 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm.checked.mch |
45,964 |
5,344 |
40,620 |
1,203 (2.55%) |
1,203 (2.55%) |
benchmarks.run_pgo.linux.arm.checked.mch |
159,513 |
56,729 |
102,784 |
3,201 (1.97%) |
3,201 (1.97%) |
benchmarks.run_tiered.linux.arm.checked.mch |
80,099 |
43,607 |
36,492 |
1,086 (1.34%) |
1,086 (1.34%) |
coreclr_tests.run.linux.arm.checked.mch |
471,991 |
259,195 |
212,796 |
7,171 (1.50%) |
7,172 (1.50%) |
libraries.crossgen2.linux.arm.checked.mch |
188,191 |
14 |
188,177 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.linux.arm.checked.mch |
272,360 |
6 |
272,354 |
7,786 (2.78%) |
7,786 (2.78%) |
libraries_tests.run.linux.arm.Release.mch |
710,231 |
442,672 |
267,559 |
16,195 (2.23%) |
16,195 (2.23%) |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
274,633 |
21,604 |
253,029 |
33,224 (10.79%) |
33,224 (10.79%) |
realworld.run.linux.arm.checked.mch |
36,407 |
157 |
36,250 |
1,408 (3.72%) |
1,408 (3.72%) |
|
2,239,389 |
829,328 |
1,410,061 |
71,274 (3.08%) |
71,275 (3.08%) |
jit-analyze output
benchmarks.run_pgo.linux.arm.checked.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: 63958070 (overridden on cmd)
Total bytes of diff: 63958066 (overridden on cmd)
Total bytes of delta: -4 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-2 : 81536.dasm (-1.25 % of base)
-2 : 123131.dasm (-1.25 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-2 (-1.25 % of base) : 81536.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationSync(int,int,int):this (Tier1)
-2 (-1.25 % of base) : 123131.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationSync(int,int,int):this (Tier1)
Top method improvements (percentages):
-2 (-1.25 % of base) : 81536.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationSync(int,int,int):this (Tier1)
-2 (-1.25 % of base) : 123131.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationSync(int,int,int):this (Tier1)
2 total methods with Code Size differences (2 improved, 0 regressed).
coreclr_tests.run.linux.arm.checked.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: 321764266 (overridden on cmd)
Total bytes of diff: 321764098 (overridden on cmd)
Total bytes of delta: -168 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-102 : 201994.dasm (-35.42 % of base)
-10 : 311867.dasm (-1.11 % of base)
-6 : 306163.dasm (-0.67 % of base)
-4 : 271734.dasm (-0.44 % of base)
-4 : 299324.dasm (-0.44 % of base)
-4 : 303255.dasm (-0.44 % of base)
-4 : 304298.dasm (-0.44 % of base)
-4 : 311098.dasm (-0.44 % of base)
-4 : 300775.dasm (-0.44 % of base)
-4 : 301807.dasm (-0.44 % of base)
-4 : 308329.dasm (-0.49 % of base)
-4 : 301649.dasm (-0.44 % of base)
-4 : 302365.dasm (-0.44 % of base)
-4 : 301083.dasm (-0.44 % of base)
-4 : 303648.dasm (-0.44 % of base)
-2 : 312298.dasm (-0.24 % of base)
16 total files with Code Size differences (16 improved, 0 regressed), 3 unchanged.
Top method improvements (bytes):
-102 (-35.42 % of base) : 201994.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
-10 (-1.11 % of base) : 311867.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-6 (-0.67 % of base) : 306163.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-4 (-0.44 % of base) : 271734.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 299324.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 303255.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 304298.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 311098.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 300775.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 301807.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.49 % of base) : 308329.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 301649.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 302365.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 301083.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 303648.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-2 (-0.24 % of base) : 312298.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
Top method improvements (percentages):
-102 (-35.42 % of base) : 201994.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
-10 (-1.11 % of base) : 311867.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-6 (-0.67 % of base) : 306163.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-4 (-0.49 % of base) : 308329.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 271734.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 299324.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 303255.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 304298.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 311098.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 300775.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 301807.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 301649.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 302365.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 301083.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.44 % of base) : 303648.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-2 (-0.24 % of base) : 312298.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
16 total methods with Code Size differences (16 improved, 0 regressed).
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: 243880786 (overridden on cmd)
Total bytes of diff: 243880704 (overridden on cmd)
Total bytes of delta: -82 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
14 : 198714.dasm (1.52 % of base)
8 : 310605.dasm (0.88 % of base)
6 : 331554.dasm (0.71 % of base)
6 : 71351.dasm (0.75 % of base)
6 : 389803.dasm (0.14 % of base)
4 : 403383.dasm (0.15 % of base)
4 : 134145.dasm (0.61 % of base)
4 : 331177.dasm (0.49 % of base)
4 : 547453.dasm (0.61 % of base)
2 : 556792.dasm (0.08 % of base)
2 : 712500.dasm (0.40 % of base)
2 : 505385.dasm (0.25 % of base)
2 : 671729.dasm (0.39 % of base)
2 : 707757.dasm (0.60 % of base)
Top file improvements (bytes):
-14 : 722758.dasm (-1.99 % of base)
-8 : 187780.dasm (-1.06 % of base)
-8 : 622205.dasm (-1.14 % of base)
-6 : 141420.dasm (-0.69 % of base)
-6 : 200388.dasm (-0.67 % of base)
-6 : 222350.dasm (-0.80 % of base)
-4 : 242548.dasm (-0.59 % of base)
-4 : 248167.dasm (-0.48 % of base)
-4 : 362102.dasm (-0.30 % of base)
-4 : 380978.dasm (-0.48 % of base)
-4 : 387090.dasm (-0.48 % of base)
-4 : 433542.dasm (-0.49 % of base)
-4 : 258306.dasm (-0.55 % of base)
-4 : 271545.dasm (-0.48 % of base)
-4 : 484145.dasm (-0.55 % of base)
-4 : 584087.dasm (-0.55 % of base)
-4 : 723775.dasm (-0.55 % of base)
-4 : 169115.dasm (-0.48 % of base)
-4 : 715384.dasm (-0.48 % of base)
-2 : 26605.dasm (-0.23 % of base)
37 total files with Code Size differences (23 improved, 14 regressed), 16 unchanged.
Top method regressions (bytes):
14 (1.52 % of base) : 198714.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
8 (0.88 % of base) : 310605.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
6 (0.75 % of base) : 71351.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
6 (0.71 % of base) : 331554.dasm - System.IO.Pipes.NamedPipeServerStream+SharedServer:Dispose(ubyte):this (Tier1)
6 (0.14 % of base) : 389803.dasm - System.Net.Http.HttpConnectionPool+<ConnectToTcpHostAsync>d__104:MoveNext():this (Tier1)
4 (0.61 % of base) : 134145.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
4 (0.49 % of base) : 331177.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
4 (0.61 % of base) : 547453.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
4 (0.15 % of base) : 403383.dasm - System.Net.Security.Tests.SslStreamMutualAuthenticationTest+<SslStream_RequireClientCert_IsMutuallyAuthenticated_ReturnsTrue>d__8:MoveNext():this (Tier1)
2 (0.25 % of base) : 505385.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
2 (0.39 % of base) : 671729.dasm - System.Collections.Generic.GenericArraySortHelper`1[ushort]:IntroSort(System.Span`1[ushort],int) (Tier1)
2 (0.08 % of base) : 556792.dasm - System.Security.Cryptography.Tests.HmacTests`1+<VerifyHashDataStreamAllocatingAsync>d__35[System.__Canon]:MoveNext():this (Tier1)
2 (0.40 % of base) : 712500.dasm - System.Threading.Tasks.ConcurrentExclusiveSchedulerPair+ConcurrentExclusiveTaskScheduler:.ctor(System.Threading.Tasks.ConcurrentExclusiveSchedulerPair,int,ubyte):this (Tier1)
2 (0.60 % of base) : 707757.dasm - System.Threading.Tasks.Dataflow.Tests.DelegatePropagator`2[int,int]:OfferMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader,int,System.Threading.Tasks.Dataflow.ISourceBlock`1[int],ubyte):int:this (Tier1)
Top method improvements (bytes):
-14 (-1.99 % of base) : 722758.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-8 (-1.06 % of base) : 187780.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-8 (-1.14 % of base) : 622205.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-6 (-0.67 % of base) : 200388.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-6 (-0.80 % of base) : 222350.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-6 (-0.69 % of base) : 141420.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.49 % of base) : 433542.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-4 (-0.59 % of base) : 242548.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.48 % of base) : 248167.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.48 % of base) : 380978.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.48 % of base) : 387090.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.55 % of base) : 258306.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.48 % of base) : 271545.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.55 % of base) : 484145.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.55 % of base) : 584087.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.55 % of base) : 723775.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.48 % of base) : 169115.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.48 % of base) : 715384.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.30 % of base) : 362102.dasm - System.SpanHelpers:LastIndexOfAny[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (Tier1)
-2 (-0.25 % of base) : 66986.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
Top method regressions (percentages):
14 (1.52 % of base) : 198714.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
8 (0.88 % of base) : 310605.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
6 (0.75 % of base) : 71351.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
6 (0.71 % of base) : 331554.dasm - System.IO.Pipes.NamedPipeServerStream+SharedServer:Dispose(ubyte):this (Tier1)
4 (0.61 % of base) : 134145.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
4 (0.61 % of base) : 547453.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
2 (0.60 % of base) : 707757.dasm - System.Threading.Tasks.Dataflow.Tests.DelegatePropagator`2[int,int]:OfferMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader,int,System.Threading.Tasks.Dataflow.ISourceBlock`1[int],ubyte):int:this (Tier1)
4 (0.49 % of base) : 331177.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
2 (0.40 % of base) : 712500.dasm - System.Threading.Tasks.ConcurrentExclusiveSchedulerPair+ConcurrentExclusiveTaskScheduler:.ctor(System.Threading.Tasks.ConcurrentExclusiveSchedulerPair,int,ubyte):this (Tier1)
2 (0.39 % of base) : 671729.dasm - System.Collections.Generic.GenericArraySortHelper`1[ushort]:IntroSort(System.Span`1[ushort],int) (Tier1)
2 (0.25 % of base) : 505385.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
4 (0.15 % of base) : 403383.dasm - System.Net.Security.Tests.SslStreamMutualAuthenticationTest+<SslStream_RequireClientCert_IsMutuallyAuthenticated_ReturnsTrue>d__8:MoveNext():this (Tier1)
6 (0.14 % of base) : 389803.dasm - System.Net.Http.HttpConnectionPool+<ConnectToTcpHostAsync>d__104:MoveNext():this (Tier1)
2 (0.08 % of base) : 556792.dasm - System.Security.Cryptography.Tests.HmacTests`1+<VerifyHashDataStreamAllocatingAsync>d__35[System.__Canon]:MoveNext():this (Tier1)
Top method improvements (percentages):
-14 (-1.99 % of base) : 722758.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-8 (-1.14 % of base) : 622205.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-8 (-1.06 % of base) : 187780.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-6 (-0.80 % of base) : 222350.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-6 (-0.69 % of base) : 141420.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-6 (-0.67 % of base) : 200388.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-4 (-0.59 % of base) : 242548.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.55 % of base) : 258306.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.55 % of base) : 484145.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.55 % of base) : 584087.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.55 % of base) : 723775.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.49 % of base) : 433542.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-4 (-0.48 % of base) : 248167.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.48 % of base) : 380978.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.48 % of base) : 387090.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.48 % of base) : 271545.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.48 % of base) : 169115.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-4 (-0.48 % of base) : 715384.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-2 (-0.35 % of base) : 576627.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeEventInfo[]:this (Tier1)
-2 (-0.31 % of base) : 73457.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
windows x86
Diffs are based on 2,293,420 contexts (839,658 MinOpts, 1,453,762 FullOpts).
MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)
Overall (+147 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.windows.x86.checked.mch |
44,949,264 |
+66 |
coreclr_tests.run.windows.x86.checked.mch |
309,385,112 |
-115 |
libraries_tests.run.windows.x86.Release.mch |
186,668,292 |
+196 |
FullOpts (+147 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.windows.x86.checked.mch |
38,360,633 |
+66 |
coreclr_tests.run.windows.x86.checked.mch |
107,596,978 |
-115 |
libraries_tests.run.windows.x86.Release.mch |
88,394,592 |
+196 |
Example diffs
benchmarks.run_pgo.windows.x86.checked.mch
-14 (-1.83%) : 108619.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():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 7
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7
; 9 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -65,13 +65,13 @@ G_M45732_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
; gcrRegs -[edx]
add edx, -33
cmp edx, 1
- jbe G_M45732_IG23
+ jbe G_M45732_IG25
mov ebx, gword ptr [esi+0x08]
; gcrRegs +[ebx]
mov edi, gword ptr [esi+0x0C]
; gcrRegs +[edi]
test byte ptr [edi+0x18], 64
- jne G_M45732_IG26
+ jne G_M45732_IG28
;; size=35 bbWeight=1 PerfScore 13.50
G_M45732_IG03: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
cmp byte ptr [ebx], bl
@@ -122,7 +122,7 @@ G_M45732_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
; gcrRegs -[eax]
; byrRegs -[edx]
cmp gword ptr [ebx+0x04], 0
- jne G_M45732_IG14
+ jne G_M45732_IG16
;; size=44 bbWeight=1 PerfScore 17.50
G_M45732_IG06: ; bbWeight=0.83, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
lea edx, bword ptr [ebx+0x04]
@@ -148,7 +148,7 @@ G_M45732_IG08: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M45732_IG09: ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M45732_IG09: ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[ebx edi]
; byrRegs +[esi]
mov eax, gword ptr [ebx+0x04]
@@ -156,7 +156,7 @@ G_M45732_IG09: ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=00000088 {e
mov gword ptr [ebp-0x10], eax
; GC ptr vars +{V12}
cmp dword ptr [eax], 0xD1FFAB1E
- jne G_M45732_IG27
+ jne G_M45732_IG29
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
mov gword ptr [ebp-0x14], eax
@@ -169,11 +169,27 @@ G_M45732_IG09: ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=00000088 {e
; GC ptr vars +{V14}
mov ecx, dword ptr [eax+0x08]
cmp dword ptr [edx+0x04], ecx
- ja G_M45732_IG22
- ;; size=59 bbWeight=0.17 PerfScore 3.71
-G_M45732_IG10: ; bbWeight=0.08, gcVars=00000840 {V12 V13}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
+ jbe SHORT G_M45732_IG11
+ ;; size=55 bbWeight=0.17 PerfScore 3.71
+G_M45732_IG10: ; bbWeight=0.08, gcVars=00020840 {V12 V13 V14}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[edx]
- ; GC ptr vars -{V14}
+ lea edx, [ecx+0x01]
+ mov dword ptr [eax+0x08], edx
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
+ lea edx, bword ptr [edx+4*ecx+0x08]
+ ; gcrRegs -[edx]
+ ; byrRegs +[edx]
+ mov ecx, gword ptr [ebp-0x10]
+ ; gcrRegs +[ecx]
+ ; GC ptr vars -{V12 V14}
+ call CORINFO_HELP_ASSIGN_REF_ECX
+ ; gcrRegs -[ecx]
+ ; byrRegs -[edx]
+ jmp SHORT G_M45732_IG12
+ ;; size=23 bbWeight=0.08 PerfScore 0.62
+G_M45732_IG11: ; bbWeight=0.08, gcVars=00000840 {V12 V13}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
+ ; GC ptr vars +{V12}
mov ecx, eax
; gcrRegs +[ecx]
mov edx, gword ptr [ebp-0x10]
@@ -184,7 +200,7 @@ G_M45732_IG10: ; bbWeight=0.08, gcVars=00000840 {V12 V13}, gcrefRegs=0000
mov eax, gword ptr [ebp-0x14]
; gcrRegs +[eax]
;; size=14 bbWeight=0.08 PerfScore 0.44
-G_M45732_IG11: ; bbWeight=0.17, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M45732_IG12: ; bbWeight=0.17, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref, isz
inc dword ptr [eax+0x0C]
mov edx, gword ptr [eax+0x04]
; gcrRegs +[edx]
@@ -192,11 +208,25 @@ G_M45732_IG11: ; bbWeight=0.17, gcrefRegs=00000089 {eax ebx edi}, byrefRe
; GC ptr vars +{V16}
mov ecx, dword ptr [eax+0x08]
cmp dword ptr [edx+0x04], ecx
- ja G_M45732_IG21
- ;; size=21 bbWeight=0.17 PerfScore 2.00
-G_M45732_IG12: ; bbWeight=0.08, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref
+ jbe SHORT G_M45732_IG14
+ ;; size=17 bbWeight=0.17 PerfScore 2.00
+G_M45732_IG13: ; bbWeight=0.08, gcVars=00040040 {V13 V16}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[edx]
+ lea edx, [ecx+0x01]
+ mov dword ptr [eax+0x08], edx
+ mov edx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edx]
+ lea edx, bword ptr [edx+4*ecx+0x08]
+ ; gcrRegs -[edx]
+ ; byrRegs +[edx]
; GC ptr vars -{V16}
+ call CORINFO_HELP_ASSIGN_REF_EDI
+ ; gcrRegs -[edi]
+ ; byrRegs -[edx]
+ jmp SHORT G_M45732_IG15
+ ;; size=20 bbWeight=0.08 PerfScore 0.54
+G_M45732_IG14: ; bbWeight=0.08, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref
+ ; gcrRegs +[edi]
mov ecx, eax
; gcrRegs +[ecx]
mov edx, edi
@@ -206,7 +236,7 @@ G_M45732_IG12: ; bbWeight=0.08, gcrefRegs=00000089 {eax ebx edi}, byrefRe
mov eax, gword ptr [ebp-0x14]
; gcrRegs +[eax]
;; size=13 bbWeight=0.08 PerfScore 0.38
-G_M45732_IG13: ; bbWeight=0.17, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000040 {esi}, byref
+G_M45732_IG15: ; bbWeight=0.17, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000040 {esi}, byref
lea edx, bword ptr [ebx+0x04]
; byrRegs +[edx]
; GC ptr vars -{V13}
@@ -215,14 +245,14 @@ G_M45732_IG13: ; bbWeight=0.17, gcrefRegs=00000009 {eax ebx}, byrefRegs=0
; byrRegs -[edx]
jmp G_M45732_IG05
;; size=13 bbWeight=0.17 PerfScore 0.58
-G_M45732_IG14: ; bbWeight=0.17, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
+G_M45732_IG16: ; bbWeight=0.17, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs +[ebx edi]
mov eax, gword ptr [ebx+0x04]
; gcrRegs +[eax]
mov gword ptr [ebp-0x20], eax
; GC ptr vars +{V25}
cmp dword ptr [eax], 0xD1FFAB1E
- jne G_M45732_IG29
+ jne G_M45732_IG23
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
mov gword ptr [ebp-0x24], eax
@@ -235,71 +265,10 @@ G_M45732_IG14: ; bbWeight=0.17, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
; GC ptr vars +{V27}
mov ecx, dword ptr [eax+0x08]
cmp dword ptr [edx+0x04], ecx
- ja SHORT G_M45732_IG20
+ jbe SHORT G_M45732_IG18
;; size=55 bbWeight=0.17 PerfScore 3.71
-G_M45732_IG15: ; bbWeight=0.08, gcVars=00001080 {V25 V26}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M45732_IG17: ; bbWeight=0.08, gcVars=00081080 {V25 V26 V27}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[edx]
- ; GC ptr vars -{V27}
- mov ecx, eax
- ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x20]
- ; gcrRegs +[edx]
- ; GC ptr vars -{V25}
- call [<unknown method>]
- ; gcrRegs -[eax ecx edx]
- mov eax, gword ptr [ebp-0x24]
- ; gcrRegs +[eax]
- ;; size=14 bbWeight=0.08 PerfScore 0.44
-G_M45732_IG16: ; bbWeight=0.17, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- inc dword ptr [eax+0x0C]
- mov edx, gword ptr [eax+0x04]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x2C], edx
- ; GC ptr vars +{V29}
- mov ecx, dword ptr [eax+0x08]
- cmp dword ptr [edx+0x04], ecx
- ja SHORT G_M45732_IG19
- ;; size=17 bbWeight=0.17 PerfScore 2.00
-G_M45732_IG17: ; bbWeight=0.08, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref
- ; gcrRegs -[edx]
- ; GC ptr vars -{V29}
- mov ecx, eax
- ; gcrRegs +[ecx]
- mov edx, edi
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[eax ecx edx edi]
- mov eax, gword ptr [ebp-0x24]
- ; gcrRegs +[eax]
- ;; size=13 bbWeight=0.08 PerfScore 0.38
-G_M45732_IG18: ; bbWeight=0.17, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000040 {esi}, byref
- lea edx, bword ptr [ebx+0x04]
- ; byrRegs +[edx]
- ; GC ptr vars -{V26}
- call CORINFO_HELP_ASSIGN_REF_EAX
- ; gcrRegs -[eax ebx]
- ; byrRegs -[edx]
- jmp G_M45732_IG07
- ;; size=13 bbWeight=0.17 PerfScore 0.58
-G_M45732_IG19: ; bbWeight=0.08, gcVars=00100080 {V26 V29}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs +[eax ebx edi]
- ; GC ptr vars +{V07 V20 V26 V29}
- lea edx, [ecx+0x01]
- mov dword ptr [eax+0x08], edx
- mov edx, gword ptr [ebp-0x2C]
- ; gcrRegs +[edx]
- lea edx, bword ptr [edx+4*ecx+0x08]
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
- ; GC ptr vars -{V07 V20 V29}
- call CORINFO_HELP_ASSIGN_REF_EDI
- ; gcrRegs -[edi]
- ; byrRegs -[edx]
- jmp SHORT G_M45732_IG18
- ;; size=20 bbWeight=0.08 PerfScore 0.54
-G_M45732_IG20: ; bbWeight=0.08, gcVars=00081080 {V25 V26 V27}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs +[edi]
- ; GC ptr vars +{V12 V19 V25 V27}
lea edx, [ecx+0x01]
mov dword ptr [eax+0x08], edx
mov edx, gword ptr [ebp-0x28]
@@ -309,48 +278,103 @@ G_M45732_IG20: ; bbWeight=0.08, gcVars=00081080 {V25 V26 V27}, gcrefRegs=
; byrRegs +[edx]
mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- ; GC ptr vars -{V12 V19 V25 V27}
+ ; GC ptr vars -{V25 V27}
call CORINFO_HELP_ASSIGN_REF_ECX
; gcrRegs -[ecx]
; byrRegs -[edx]
- jmp SHORT G_M45732_IG16
+ jmp SHORT G_M45732_IG19
;; size=23 bbWeight=0.08 PerfScore 0.62
-G_M45732_IG21: ; bbWeight=0.08, gcVars=00040040 {V13 V16}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; GC ptr vars -{V26} +{V13 V16 V18}
+G_M45732_IG18: ; bbWeight=0.08, gcVars=00001080 {V25 V26}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
+ ; GC ptr vars +{V12 V25}
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ mov edx, gword ptr [ebp-0x20]
+ ; gcrRegs +[edx]
+ ; GC ptr vars -{V12 V25}
+ call [<unknown method>]
+ ; gcrRegs -[eax ecx edx]
+ mov eax, gword ptr [ebp-0x24]
+ ; gcrRegs +[eax]
+ ;; size=14 bbWeight=0.08 PerfScore 0.44
+G_M45732_IG19: ; bbWeight=0.17, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref, isz
+ inc dword ptr [eax+0x0C]
...
-4 (-1.72%) : 47111.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span
1[int],System.Comparison`1[int],int,int) (Tier1)
@@ -55,18 +55,18 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000
mov edx, dword ptr [ebp+0x10]
mov dword ptr [ebp-0x10], edx
cmp esi, ebx
- je G_M64750_IG11
+ je G_M64750_IG12
;; size=20 bbWeight=1 PerfScore 5.25
G_M64750_IG03: ; bbWeight=1, gcVars=00000010 {V18}, gcrefRegs=00000080 {edi}, byrefRegs=00000001 {eax}, gcvars, byref, isz
cmp esi, edx
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, dword ptr [eax+4*esi]
cmp ebx, edx
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov dword ptr [ebp+0x08], ebx
mov edx, dword ptr [eax+4*ebx]
cmp dword ptr [edi+0x0C], 0xD1FFAB1E
- jne G_M64750_IG12
+ jne SHORT G_M64750_IG10
mov edi, gword ptr [edi+0x04]
mov edi, gword ptr [edi+0x10]
mov gword ptr [ebp-0x1C], edi
@@ -75,7 +75,7 @@ G_M64750_IG03: ; bbWeight=1, gcVars=00000010 {V18}, gcrefRegs=00000080 {e
; gcrRegs -[edi]
mov dword ptr [ebp-0x18], edi
cmp ecx, edi
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov edi, ecx
shl edi, 5
mov ebx, gword ptr [ebp-0x1C]
@@ -83,7 +83,7 @@ G_M64750_IG03: ; bbWeight=1, gcVars=00000010 {V18}, gcrefRegs=00000080 {e
mov edi, dword ptr [ebx+edi+0x14]
mov dword ptr [ebp-0x14], edi
cmp edx, dword ptr [ebp-0x18]
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov ebx, edx
; gcrRegs -[ebx]
shl ebx, 5
@@ -93,36 +93,29 @@ G_M64750_IG03: ; bbWeight=1, gcVars=00000010 {V18}, gcrefRegs=00000080 {e
; gcrRegs -[edi]
mov ebx, dword ptr [ebp-0x14]
cmp ebx, edi
- jge SHORT G_M64750_IG05
- ;; size=96 bbWeight=1 PerfScore 34.50
-G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+ jge SHORT G_M64750_IG09
+ ;; size=92 bbWeight=1 PerfScore 34.50
+G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
; GC ptr vars -{V11}
mov edi, -1
- jmp SHORT G_M64750_IG06
- ;; size=7 bbWeight=0.64 PerfScore 1.44
-G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
- cmp ebx, edi
- setg bl
- movzx ebx, bl
- mov edi, ebx
- ;; size=10 bbWeight=0.36 PerfScore 0.63
-G_M64750_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
+ ;; size=5 bbWeight=0.64 PerfScore 0.16
+G_M64750_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
sub ecx, edx
test edi, edi
cmovne ecx, edi
;; size=7 bbWeight=1 PerfScore 0.75
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
test ecx, ecx
- jle SHORT G_M64750_IG09
+ jle SHORT G_M64750_IG08
;; size=4 bbWeight=1 PerfScore 1.25
-G_M64750_IG08: ; bbWeight=0.69, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
+G_M64750_IG07: ; bbWeight=0.69, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref
mov ecx, dword ptr [eax+4*esi]
mov ebx, dword ptr [ebp+0x08]
mov edx, dword ptr [eax+4*ebx]
mov dword ptr [eax+4*esi], edx
mov dword ptr [eax+4*ebx], ecx
;; size=15 bbWeight=0.69 PerfScore 4.82
-G_M64750_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
+G_M64750_IG08: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
; byrRegs -[eax]
; GC ptr vars -{V18}
lea esp, [ebp-0x0C]
@@ -132,10 +125,35 @@ G_M64750_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
pop ebp
ret 12
;; size=10 bbWeight=1 PerfScore 4.50
-G_M64750_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M64750_IG09: ; bbWeight=0.36, gcVars=00000010 {V18}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz
+ ; byrRegs +[eax]
+ ; GC ptr vars +{V04 V18}
+ cmp ebx, edi
+ setg bl
+ movzx ebx, bl
+ mov edi, ebx
+ jmp SHORT G_M64750_IG05
+ ;; size=12 bbWeight=0.36 PerfScore 1.35
+G_M64750_IG10: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000001 {eax}, byref, isz
+ ; gcrRegs +[edi]
+ push edx
+ mov edx, ecx
+ mov ecx, gword ptr [edi+0x04]
+ ; gcrRegs +[ecx]
+ call [edi+0x0C]System.Comparison`1[int]:Invoke(int,int):int:this
+ ; gcrRegs -[ecx edi]
+ ; byrRegs -[eax]
+ mov ecx, eax
+ mov eax, bword ptr [ebp-0x20]
+ ; byrRegs +[eax]
+ jmp SHORT G_M64750_IG06
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M64750_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; byrRegs -[eax]
+ ; GC ptr vars -{V04 V18}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcVars=00000010 {V18}, gcrefRegs=00000080 {edi}, byrefRegs=00000001 {eax}, gcvars, byref
+G_M64750_IG12: ; bbWeight=0, gcVars=00000010 {V18}, gcrefRegs=00000080 {edi}, byrefRegs=00000001 {eax}, gcvars, byref
; gcrRegs +[edi]
; byrRegs +[eax]
; GC ptr vars +{V04 V18}
@@ -151,20 +169,7 @@ G_M64750_IG11: ; bbWeight=0, gcVars=00000010 {V18}, gcrefRegs=00000080 {e
mov edx, dword ptr [ebp-0x10]
jmp G_M64750_IG03
;; size=27 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000001 {eax}, byref, isz
- push edx
- mov edx, ecx
- mov ecx, gword ptr [edi+0x04]
- ; gcrRegs +[ecx]
- call [edi+0x0C]System.Comparison`1[int]:Invoke(int,int):int:this
- ; gcrRegs -[ecx edi]
- ; byrRegs -[eax]
- mov ecx, eax
- mov eax, bword ptr [ebp-0x20]
- ; byrRegs +[eax]
- jmp SHORT G_M64750_IG07
- ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 233, prolog size 9, PerfScore 59.14, instruction count 81, allocated bytes for code 233 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 229, prolog size 9, PerfScore 58.58, instruction count 81, allocated bytes for code 229 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================
+0 (0.00%) : 3761.dasm - System.Text.StringBuilder:Append(System.String):System.Text.StringBuilder: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 11
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 11
; 3 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -34,67 +34,70 @@ G_M13271_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
G_M13271_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx]
test edx, edx
- je SHORT G_M13271_IG11
+ je SHORT G_M13271_IG07
lea eax, bword ptr [edx+0x08]
; byrRegs +[eax]
mov edi, dword ptr [edx+0x04]
test edi, edi
- je SHORT G_M13271_IG11
+ je SHORT G_M13271_IG07
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
mov ebx, dword ptr [esi+0x0C]
lea edx, [ebx+edi]
; gcrRegs -[edx]
cmp edx, dword ptr [ecx+0x04]
- ja SHORT G_M13271_IG10
+ ja SHORT G_M13271_IG11
;; size=28 bbWeight=1 PerfScore 13.50
G_M13271_IG03: ; bbWeight=0.82, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000001 {eax}, byref, isz
lea ecx, bword ptr [ecx+2*ebx+0x08]
; gcrRegs -[ecx]
; byrRegs +[ecx]
cmp edi, 2
- jg SHORT G_M13271_IG06
+ jg SHORT G_M13271_IG09
;; size=9 bbWeight=0.82 PerfScore 1.84
G_M13271_IG04: ; bbWeight=0.55, gcrefRegs=00000040 {esi}, byrefRegs=00000003 {eax ecx}, byref, isz
movzx edx, word ptr [eax]
mov word ptr [ecx], dx
cmp edi, 2
- jne SHORT G_M13271_IG09
+ jne SHORT G_M13271_IG06
;; size=11 bbWeight=0.55 PerfScore 2.32
-G_M13271_IG05: ; bbWeight=0.45, gcrefRegs=00000040 {esi}, byrefRegs=00000003 {eax ecx}, byref, isz
+G_M13271_IG05: ; bbWeight=0.45, gcrefRegs=00000040 {esi}, byrefRegs=00000003 {eax ecx}, byref
movzx eax, word ptr [eax+0x02]
; byrRegs -[eax]
mov word ptr [ecx+0x02], ax
- jmp SHORT G_M13271_IG09
- ;; size=10 bbWeight=0.45 PerfScore 2.27
-G_M13271_IG06: ; bbWeight=0.27, gcrefRegs=00000040 {esi}, byrefRegs=00000003 {eax ecx}, byref, isz
- ; byrRegs +[eax]
+ ;; size=8 bbWeight=0.45 PerfScore 1.36
+G_M13271_IG06: ; bbWeight=0.82, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; byrRegs -[ecx]
+ add edi, ebx
+ mov dword ptr [esi+0x0C], edi
+ ;; size=5 bbWeight=0.82 PerfScore 1.02
+G_M13271_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov eax, esi
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M13271_IG08: ; bbWeight=1, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M13271_IG09: ; bbWeight=0.27, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000003 {eax ecx}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ ; byrRegs +[eax ecx]
lea edx, [edi+edi]
cmp edx, 2
- jne SHORT G_M13271_IG08
+ jne SHORT G_M13271_IG12
;; size=8 bbWeight=0.27 PerfScore 0.48
-G_M13271_IG07: ; bbWeight=0.14, gcrefRegs=00000040 {esi}, byrefRegs=00000003 {eax ecx}, byref, isz
+G_M13271_IG10: ; bbWeight=0.14, gcrefRegs=00000040 {esi}, byrefRegs=00000003 {eax ecx}, byref, isz
push 2
mov edx, eax
; byrRegs +[edx]
call [<unknown method>]
; byrRegs -[eax ecx edx]
- jmp SHORT G_M13271_IG09
+ jmp SHORT G_M13271_IG06
;; size=12 bbWeight=0.14 PerfScore 0.85
-G_M13271_IG08: ; bbWeight=0.14, gcrefRegs=00000040 {esi}, byrefRegs=00000003 {eax ecx}, byref
- ; byrRegs +[eax ecx]
- push edx
- mov edx, eax
- ; byrRegs +[edx]
- call [<unknown method>]
- ; byrRegs -[eax ecx edx]
- ;; size=9 bbWeight=0.14 PerfScore 0.58
-G_M13271_IG09: ; bbWeight=0.82, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- add edi, ebx
- mov dword ptr [esi+0x0C], edi
- jmp SHORT G_M13271_IG11
- ;; size=7 bbWeight=0.82 PerfScore 2.66
-G_M13271_IG10: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref
+G_M13271_IG11: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz
; byrRegs +[eax]
push edi
mov ecx, esi
@@ -104,19 +107,18 @@ G_M13271_IG10: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[ecx]
; byrRegs -[eax edx]
- ;; size=11 bbWeight=0.18 PerfScore 0.82
-G_M13271_IG11: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov eax, esi
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M13271_IG12: ; bbWeight=1, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret
- ;; size=5 bbWeight=1 PerfScore 3.00
+ jmp SHORT G_M13271_IG07
+ ;; size=13 bbWeight=0.18 PerfScore 1.18
+G_M13271_IG12: ; bbWeight=0.14, gcrefRegs=00000040 {esi}, byrefRegs=00000003 {eax ecx}, byref, isz
+ ; byrRegs +[eax ecx]
+ push edx
+ mov edx, eax
+ ; byrRegs +[edx]
+ call [<unknown method>]
+ ; byrRegs -[eax ecx edx]
+ jmp SHORT G_M13271_IG06
+ ;; size=11 bbWeight=0.14 PerfScore 0.85
-; Total bytes of code 120, prolog size 6, PerfScore 33.07, instruction count 50, allocated bytes for code 120 (MethodHash=20c0cc28) for method System.Text.StringBuilder:Append(System.String):System.Text.StringBuilder:this (Tier1)
+; Total bytes of code 120, prolog size 6, PerfScore 31.16, instruction count 50, allocated bytes for code 120 (MethodHash=20c0cc28) for method System.Text.StringBuilder:Append(System.String):System.Text.StringBuilder:this (Tier1)
; ============================================================
+5 (+1.89%) : 112910.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.BigStruct]:SwapIfGreater(System.Span
1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
@@ -56,11 +56,11 @@ G_M55686_IG02: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000000 {}
mov edx, dword ptr [ebp+0x10]
mov dword ptr [ebp-0x70], edx
cmp esi, ebx
- je G_M55686_IG11
+ je G_M55686_IG12
;; size=20 bbWeight=1 PerfScore 5.25
G_M55686_IG03: ; bbWeight=1, gcVars=00000048 {V01 V14}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz
cmp esi, edx
- jae SHORT G_M55686_IG10
+ jae G_M55686_IG11
shl esi, 5
add esi, eax
; byrRegs +[esi]
@@ -70,7 +70,7 @@ G_M55686_IG03: ; bbWeight=1, gcVars=00000048 {V01 V14}, gcrefRegs=0000000
vmovups ymm0, ymmword ptr [ecx]
vmovups ymmword ptr [ebp-0x4C], ymm0
cmp ebx, edx
- jae SHORT G_M55686_IG10
+ jae G_M55686_IG11
shl ebx, 5
add ebx, eax
; byrRegs +[ebx]
@@ -83,28 +83,22 @@ G_M55686_IG03: ; bbWeight=1, gcVars=00000048 {V01 V14}, gcrefRegs=0000000
; gcrRegs +[ecx]
; byrRegs -[ecx]
cmp dword ptr [ecx+0x0C], 0xD1FFAB1E
- jne SHORT G_M55686_IG12
- ;; size=58 bbWeight=1 PerfScore 25.50
+ jne SHORT G_M55686_IG10
+ ;; size=66 bbWeight=1 PerfScore 25.50
G_M55686_IG04: ; bbWeight=1.00, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, gcvars, byref, isz
; gcrRegs -[ecx]
; GC ptr vars -{V01 V14}
cmp edi, eax
- jge SHORT G_M55686_IG06
+ jge SHORT G_M55686_IG09
;; size=4 bbWeight=1.00 PerfScore 1.25
-G_M55686_IG05: ; bbWeight=0.64, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref, isz
+G_M55686_IG05: ; bbWeight=0.64, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
mov edx, -1
- jmp SHORT G_M55686_IG07
- ;; size=7 bbWeight=0.64 PerfScore 1.43
-G_M55686_IG06: ; bbWeight=0.36, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
- xor edx, edx
- cmp edi, eax
- setg dl
- ;; size=7 bbWeight=0.36 PerfScore 0.55
-G_M55686_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref, isz
+ ;; size=5 bbWeight=0.64 PerfScore 0.16
+G_M55686_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref, isz
test edx, edx
- jle SHORT G_M55686_IG09
+ jle SHORT G_M55686_IG08
;; size=4 bbWeight=1 PerfScore 1.25
-G_M55686_IG08: ; bbWeight=0.69, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
+G_M55686_IG07: ; bbWeight=0.69, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
vmovdqu ymm0, ymmword ptr [esi]
vmovdqu ymmword ptr [ebp-0x2C], ymm0
vmovdqu ymm0, ymmword ptr [ebx]
@@ -112,7 +106,7 @@ G_M55686_IG08: ; bbWeight=0.69, gcrefRegs=00000000 {}, byrefRegs=00000048
vmovdqu ymm0, ymmword ptr [ebp-0x2C]
vmovdqu ymmword ptr [ebx], ymm0
;; size=26 bbWeight=0.69 PerfScore 13.06
-G_M55686_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M55686_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; byrRegs -[ebx esi]
vzeroupper
lea esp, [ebp-0x0C]
@@ -122,28 +116,15 @@ G_M55686_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop ebp
ret 12
;; size=13 bbWeight=1 PerfScore 5.50
-G_M55686_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- call CORINFO_HELP_RNGCHKFAIL
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M55686_IG11: ; bbWeight=0, gcVars=00000048 {V01 V14}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
- ; byrRegs +[eax]
- ; GC ptr vars +{V01 V03 V06 V14}
- mov ecx, 0xD1FFAB1E
+G_M55686_IG09: ; bbWeight=0.36, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, gcvars, byref, isz
+ ; byrRegs +[ebx esi]
+ xor edx, edx
+ cmp edi, eax
+ setg dl
+ jmp SHORT G_M55686_IG06
+ ;; size=9 bbWeight=0.36 PerfScore 1.27
+G_M55686_IG10: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000048 {ebx esi}, byref, isz
; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx]
- ; byrRegs -[eax]
- mov eax, bword ptr [ebp-0x78]
- ; byrRegs +[eax]
- mov edx, dword ptr [ebp-0x70]
- jmp G_M55686_IG03
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M55686_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000048 {ebx esi}, gcvars, byref
- ; gcrRegs +[ecx]
- ; byrRegs -[eax] +[ebx esi]
- ; GC ptr vars -{V01 V03 V06 V14}
mov dword ptr [ebp-0x40], edi
mov dword ptr [ebp-0x60], eax
sub esp, 32
@@ -165,9 +146,28 @@ G_M55686_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}
call [edi+0x0C]System.Comparison`1[System.Collections.BigStruct]:Invoke(System.Collections.BigStruct,System.Collections.BigStruct):int:this
; gcrRegs -[ecx edi]
mov edx, eax
- jmp G_M55686_IG07
- ;; size=73 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M55686_IG06
+ ;; size=70 bbWeight=0 PerfScore 0.00
+G_M55686_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; byrRegs -[ebx esi]
+ call CORINFO_HELP_RNGCHKFAIL
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M55686_IG12: ; bbWeight=0, gcVars=00000048 {V01 V14}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
+ ; byrRegs +[eax]
+ ; GC ptr vars +{V01 V03 V06 V14}
+ mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx]
+ ; byrRegs -[eax]
+ mov eax, bword ptr [ebp-0x78]
+ ; byrRegs +[eax]
+ mov edx, dword ptr [ebp-0x70]
+ jmp G_M55686_IG03
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 264, prolog size 12, PerfScore 61.53, instruction count 82, allocated bytes for code 264 (MethodHash=db432679) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
+; Total bytes of code 269, prolog size 12, PerfScore 60.99, instruction count 82, allocated bytes for code 269 (MethodHash=db432679) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
; ============================================================
+5 (+1.89%) : 117268.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.BigStruct]:SwapIfGreater(System.Span
1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
@@ -56,11 +56,11 @@ G_M55686_IG02: ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000000 {}
mov edx, dword ptr [ebp+0x10]
mov dword ptr [ebp-0x70], edx
cmp esi, ebx
- je G_M55686_IG10
+ je G_M55686_IG11
;; size=20 bbWeight=1 PerfScore 5.25
G_M55686_IG03: ; bbWeight=1, gcVars=00000048 {V01 V14}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz
cmp esi, edx
- jae SHORT G_M55686_IG09
+ jae G_M55686_IG10
shl esi, 5
add esi, eax
; byrRegs +[esi]
@@ -70,7 +70,7 @@ G_M55686_IG03: ; bbWeight=1, gcVars=00000048 {V01 V14}, gcrefRegs=0000000
vmovups ymm0, ymmword ptr [ecx]
vmovups ymmword ptr [ebp-0x4C], ymm0
cmp ebx, edx
- jae SHORT G_M55686_IG09
+ jae G_M55686_IG10
shl ebx, 5
add ebx, eax
; byrRegs +[ebx]
@@ -83,26 +83,20 @@ G_M55686_IG03: ; bbWeight=1, gcVars=00000048 {V01 V14}, gcrefRegs=0000000
; gcrRegs +[ecx]
; byrRegs -[ecx]
cmp dword ptr [ecx+0x0C], 0xD1FFAB1E
- jne SHORT G_M55686_IG11
+ jne SHORT G_M55686_IG09
cmp edi, eax
- jge SHORT G_M55686_IG05
- ;; size=62 bbWeight=1 PerfScore 26.75
-G_M55686_IG04: ; bbWeight=0.64, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, gcvars, byref, isz
+ jge SHORT G_M55686_IG08
+ ;; size=70 bbWeight=1 PerfScore 26.75
+G_M55686_IG04: ; bbWeight=0.64, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, gcvars, byref
; gcrRegs -[ecx]
; GC ptr vars -{V01 V14}
mov edx, -1
- jmp SHORT G_M55686_IG06
- ;; size=7 bbWeight=0.64 PerfScore 1.43
-G_M55686_IG05: ; bbWeight=0.36, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
- xor edx, edx
- cmp edi, eax
- setg dl
- ;; size=7 bbWeight=0.36 PerfScore 0.54
-G_M55686_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref, isz
+ ;; size=5 bbWeight=0.64 PerfScore 0.16
+G_M55686_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref, isz
test edx, edx
- jle SHORT G_M55686_IG08
+ jle SHORT G_M55686_IG07
;; size=4 bbWeight=1 PerfScore 1.25
-G_M55686_IG07: ; bbWeight=0.70, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
+G_M55686_IG06: ; bbWeight=0.70, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
vmovdqu ymm0, ymmword ptr [esi]
vmovdqu ymmword ptr [ebp-0x2C], ymm0
vmovdqu ymm0, ymmword ptr [ebx]
@@ -110,7 +104,7 @@ G_M55686_IG07: ; bbWeight=0.70, gcrefRegs=00000000 {}, byrefRegs=00000048
vmovdqu ymm0, ymmword ptr [ebp-0x2C]
vmovdqu ymmword ptr [ebx], ymm0
;; size=26 bbWeight=0.70 PerfScore 13.25
-G_M55686_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M55686_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
; byrRegs -[ebx esi]
vzeroupper
lea esp, [ebp-0x0C]
@@ -120,28 +114,15 @@ G_M55686_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop ebp
ret 12
;; size=13 bbWeight=1 PerfScore 5.50
-G_M55686_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- call CORINFO_HELP_RNGCHKFAIL
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M55686_IG10: ; bbWeight=0, gcVars=00000048 {V01 V14}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
- ; byrRegs +[eax]
- ; GC ptr vars +{V01 V03 V06 V14}
- mov ecx, 0xD1FFAB1E
+G_M55686_IG08: ; bbWeight=0.36, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, gcvars, byref, isz
+ ; byrRegs +[ebx esi]
+ xor edx, edx
+ cmp edi, eax
+ setg dl
+ jmp SHORT G_M55686_IG05
+ ;; size=9 bbWeight=0.36 PerfScore 1.27
+G_M55686_IG09: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000048 {ebx esi}, byref, isz
; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx]
- ; byrRegs -[eax]
- mov eax, bword ptr [ebp-0x78]
- ; byrRegs +[eax]
- mov edx, dword ptr [ebp-0x70]
- jmp G_M55686_IG03
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M55686_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000048 {ebx esi}, gcvars, byref
- ; gcrRegs +[ecx]
- ; byrRegs -[eax] +[ebx esi]
- ; GC ptr vars -{V01 V03 V06 V14}
mov dword ptr [ebp-0x40], edi
mov dword ptr [ebp-0x60], eax
sub esp, 32
@@ -163,9 +144,28 @@ G_M55686_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}
call [edi+0x0C]System.Comparison`1[System.Collections.BigStruct]:Invoke(System.Collections.BigStruct,System.Collections.BigStruct):int:this
; gcrRegs -[ecx edi]
mov edx, eax
- jmp G_M55686_IG06
- ;; size=73 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M55686_IG05
+ ;; size=70 bbWeight=0 PerfScore 0.00
+G_M55686_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; byrRegs -[ebx esi]
+ call CORINFO_HELP_RNGCHKFAIL
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M55686_IG11: ; bbWeight=0, gcVars=00000048 {V01 V14}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
+ ; byrRegs +[eax]
+ ; GC ptr vars +{V01 V03 V06 V14}
+ mov ecx, 0xD1FFAB1E
+ ; gcrRegs +[ecx]
+ mov edx, 0xD1FFAB1E
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx]
+ ; byrRegs -[eax]
+ mov eax, bword ptr [ebp-0x78]
+ ; byrRegs +[eax]
+ mov edx, dword ptr [ebp-0x70]
+ jmp G_M55686_IG03
+ ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 264, prolog size 12, PerfScore 61.72, instruction count 82, allocated bytes for code 264 (MethodHash=db432679) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
+; Total bytes of code 269, prolog size 12, PerfScore 61.18, instruction count 82, allocated bytes for code 269 (MethodHash=db432679) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
; ============================================================
+6 (+2.54%) : 89913.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -15,7 +15,7 @@
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.String]>
;* V04 tmp0 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
; V05 tmp1 [V05,T06] ( 4, 3.35) ref -> edi
-; V06 tmp2 [V06,T05] ( 3, 3.84) int -> eax "spilling helperCall"
+; V06 tmp2 [V06,T05] ( 3, 3.84) int -> edx "spilling helperCall"
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V08 tmp4 [V08,T07] ( 5, 2.88) ref -> ebx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
; V09 tmp5 [V09,T04] ( 4, 3.99) ref -> edi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
@@ -23,7 +23,7 @@
; V11 rat1 [V11,T10] ( 3, 1.41) int -> edx "runtime lookup"
; V12 rat2 [V12,T08] ( 3, 1.98) int -> edx "fgMakeTemp is creating a new local variable"
; V13 rat3 [V13,T03] ( 3, 4.22) int -> ecx "Spilling to split statement for tree"
-; V14 rat4 [V14,T02] ( 3, 5.37) int -> edi "fgMakeTemp is creating a new local variable"
+; V14 rat4 [V14,T02] ( 3, 5.37) int -> edx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 0
@@ -38,15 +38,15 @@ G_M21827_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=8 bbWeight=1 PerfScore 4.50
G_M21827_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test edx, edx
- jl G_M21827_IG20
+ jl G_M21827_IG19
test edx, edx
- jg SHORT G_M21827_IG09
+ jg SHORT G_M21827_IG11
;; size=12 bbWeight=1 PerfScore 2.50
G_M21827_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, gword ptr [ebp+0x08]
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M21827_IG07
+ je SHORT G_M21827_IG09
;; size=7 bbWeight=1 PerfScore 2.25
G_M21827_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
lea edx, bword ptr [esi+0x0C]
@@ -58,87 +58,59 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M21827_IG19
+ jne G_M21827_IG18
;; size=27 bbWeight=1 PerfScore 11.50
G_M21827_IG05: ; bbWeight=0.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, gword ptr [esi+0x0C]
; gcrRegs +[edi]
cmp edi, gword ptr [D1FFAB1EH] ; static handle
- jne SHORT G_M21827_IG15
+ jne SHORT G_M21827_IG17
;; size=11 bbWeight=0.96 PerfScore 5.76
-G_M21827_IG06: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M21827_IG06: ; bbWeight=0.89, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi]
mov ebx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ebx]
- jmp SHORT G_M21827_IG10
- ;; size=8 bbWeight=0.89 PerfScore 3.54
-G_M21827_IG07: ; bbWeight=0.35, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=6 bbWeight=0.89 PerfScore 1.77
+G_M21827_IG07: ; bbWeight=0.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ test ebx, ebx
+ je G_M21827_IG18
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x0C]
+ test edx, edx
+ je SHORT G_M21827_IG12
+ ;; size=22 bbWeight=0.96 PerfScore 10.08
+G_M21827_IG08: ; bbWeight=0.77, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M21827_IG13
+ ;; size=2 bbWeight=0.77 PerfScore 1.54
+G_M21827_IG09: ; bbWeight=0.35, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx]
mov ecx, dword ptr [esi]
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
mov edx, dword ptr [edx+0x10]
test edx, edx
- je SHORT G_M21827_IG12
+ je SHORT G_M21827_IG15
;; size=14 bbWeight=0.35 PerfScore 3.27
-G_M21827_IG08: ; bbWeight=0.28, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M21827_IG13
+G_M21827_IG10: ; bbWeight=0.28, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M21827_IG16
;; size=2 bbWeight=0.28 PerfScore 0.57
-G_M21827_IG09: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M21827_IG11: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi
; gcrRegs +[ecx]
call [System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Initialize(int):int:this]
; gcrRegs -[ecx]
jmp SHORT G_M21827_IG03
;; size=10 bbWeight=0.31 PerfScore 1.64
-G_M21827_IG10: ; bbWeight=0.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M21827_IG12: ; bbWeight=0.19, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M21827_IG19
- mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edi, dword ptr [edx+0x0C]
- test edi, edi
- je SHORT G_M21827_IG16
- ;; size=18 bbWeight=0.96 PerfScore 10.08
-G_M21827_IG11: ; bbWeight=0.51, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M21827_IG14
- ;; size=2 bbWeight=0.51 PerfScore 1.01
-G_M21827_IG12: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov edx, eax
- ;; size=12 bbWeight=0.07 PerfScore 0.11
-G_M21827_IG13: ; bbWeight=0.35, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=12 bbWeight=0.19 PerfScore 0.29
+G_M21827_IG13: ; bbWeight=0.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov ecx, edx
- call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
- ; gcrRegs +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- jmp SHORT G_M21827_IG04
- ;; size=12 bbWeight=0.35 PerfScore 1.94
-G_M21827_IG14: ; bbWeight=0.77, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edi] +[ebx]
- mov eax, edi
- jmp SHORT G_M21827_IG17
- ;; size=4 bbWeight=0.77 PerfScore 1.73
-G_M21827_IG15: ; bbWeight=0.07, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx] +[edi]
- cmp edi, gword ptr [D1FFAB1EH] ; static handle
- jne SHORT G_M21827_IG21
- mov ebx, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[ebx]
- jmp SHORT G_M21827_IG10
- ;; size=16 bbWeight=0.07 PerfScore 0.59
-G_M21827_IG16: ; bbWeight=0.19, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edi]
- mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=10 bbWeight=0.19 PerfScore 0.24
-G_M21827_IG17: ; bbWeight=0.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- mov ecx, eax
mov edx, ebx
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
@@ -149,34 +121,56 @@ G_M21827_IG17: ; bbWeight=0.96, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
; gcrRegs -[eax]
; byrRegs -[edx]
;; size=17 bbWeight=0.96 PerfScore 2.88
-G_M21827_IG18: ; bbWeight=0.96, epilog, nogc, extend
+G_M21827_IG14: ; bbWeight=0.96, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 4
;; size=7 bbWeight=0.96 PerfScore 3.84
-G_M21827_IG19: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M21827_IG15: ; bbWeight=0.07, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ mov edx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov edx, eax
+ ;; size=12 bbWeight=0.07 PerfScore 0.11
+G_M21827_IG16: ; bbWeight=0.35, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ecx, edx
+ call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
+ ; gcrRegs +[eax]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ jmp G_M21827_IG04
+ ;; size=15 bbWeight=0.35 PerfScore 1.94
+G_M21827_IG17: ; bbWeight=0.07, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ cmp edi, gword ptr [D1FFAB1EH] ; static handle
+ jne SHORT G_M21827_IG20
+ mov ebx, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[ebx]
+ jmp G_M21827_IG07
+ ;; size=19 bbWeight=0.07 PerfScore 0.59
+G_M21827_IG18: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[ebx edi]
pop ebx
pop esi
pop edi
pop ebp
ret 4
;; size=7 bbWeight=0.04 PerfScore 0.16
-G_M21827_IG20: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M21827_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 22
call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M21827_IG21: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M21827_IG20: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[edi]
xor ebx, ebx
; gcrRegs +[ebx]
cmp edi, gword ptr [D1FFAB1EH] ; static handle
cmove ebx, gword ptr [D1FFAB1EH] ; static handle
- jmp G_M21827_IG10
+ jmp G_M21827_IG07
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 236, prolog size 6, PerfScore 58.10, instruction count 81, allocated bytes for code 236 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 242, prolog size 6, PerfScore 55.18, instruction count 79, allocated bytes for code 242 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================
coreclr_tests.run.windows.x86.checked.mch
-11 (-5.73%) : 565496.dasm - System.Collections.Generic.HashSet1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -14,15 +14,15 @@
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.String]>
;* V03 tmp0 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
; V04 tmp1 [V04,T03] ( 4, 3.38) ref -> eax
-; V05 tmp2 [V05,T06] ( 3, 2.50) int -> eax "spilling helperCall"
+; V05 tmp2 [V05,T06] ( 3, 2.50) int -> edx "spilling helperCall"
;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V07 tmp4 [V07,T08] ( 5, 1.88) ref -> ebx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
-; V08 tmp5 [V08,T04] ( 4, 3.33) ref -> edi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V07 tmp4 [V07,T08] ( 5, 1.88) ref -> edi class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V08 tmp5 [V08,T04] ( 4, 3.33) ref -> ecx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V09 rat0 [V09,T09] ( 3, 1.65) int -> ecx "Spilling to split statement for tree"
; V10 rat1 [V10,T10] ( 3, 1.50) int -> edx "runtime lookup"
; V11 rat2 [V11,T07] ( 3, 2.10) int -> edx "fgMakeTemp is creating a new local variable"
; V12 rat3 [V12,T05] ( 3, 2.75) int -> ecx "Spilling to split statement for tree"
-; V13 rat4 [V13,T02] ( 3, 3.50) int -> edi "fgMakeTemp is creating a new local variable"
+; V13 rat4 [V13,T02] ( 3, 3.50) int -> edx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 0
@@ -31,18 +31,17 @@ G_M38045_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
push edi
push esi
- push ebx
mov esi, ecx
; gcrRegs +[esi]
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=7 bbWeight=1 PerfScore 3.50
G_M38045_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx]
mov eax, edx
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M38045_IG06
+ je SHORT G_M38045_IG08
;; size=6 bbWeight=1 PerfScore 1.50
-G_M38045_IG03: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+G_M38045_IG03: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
lea edx, bword ptr [esi+0x0C]
; byrRegs +[edx]
@@ -53,111 +52,102 @@ G_M38045_IG03: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=0000
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M38045_IG18
- ;; size=27 bbWeight=1 PerfScore 11.50
+ jne SHORT G_M38045_IG15
+ ;; size=23 bbWeight=1 PerfScore 11.50
G_M38045_IG04: ; bbWeight=0.62, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [esi+0x0C]
- ; gcrRegs +[edi]
- cmp edi, gword ptr [D1FFAB1EH] ; static handle
- jne SHORT G_M38045_IG13
+ mov ecx, gword ptr [esi+0x0C]
+ ; gcrRegs +[ecx]
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ jne SHORT G_M38045_IG16
;; size=11 bbWeight=0.62 PerfScore 3.75
-G_M38045_IG05: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M38045_IG05: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
+ mov edi, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[edi]
+ ;; size=6 bbWeight=0.42 PerfScore 0.83
+G_M38045_IG06: ; bbWeight=0.62, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ test edi, edi
+ je SHORT G_M38045_IG15
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x34]
+ test edx, edx
+ je SHORT G_M38045_IG12
+ ;; size=18 bbWeight=0.62 PerfScore 6.56
+G_M38045_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M38045_IG13
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M38045_IG08: ; bbWeight=0.38, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
- mov ebx, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[ebx]
- jmp SHORT G_M38045_IG11
- ;; size=8 bbWeight=0.42 PerfScore 1.67
-G_M38045_IG06: ; bbWeight=0.38, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx]
mov ecx, dword ptr [esi]
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
mov edx, dword ptr [edx+0x38]
test edx, edx
- je SHORT G_M38045_IG08
+ je SHORT G_M38045_IG10
;; size=14 bbWeight=0.38 PerfScore 3.47
-G_M38045_IG07: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M38045_IG09
+G_M38045_IG09: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M38045_IG11
;; size=2 bbWeight=0.30 PerfScore 0.60
-G_M38045_IG08: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M38045_IG10: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov edx, eax
;; size=12 bbWeight=0.07 PerfScore 0.11
-G_M38045_IG09: ; bbWeight=0.38, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M38045_IG11: ; bbWeight=0.38, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, edx
call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
; gcrRegs +[eax]
jmp SHORT G_M38045_IG03
;; size=10 bbWeight=0.38 PerfScore 1.97
-G_M38045_IG10: ; bbWeight=0.21, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M38045_IG12: ; bbWeight=0.12, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] +[edi]
- xor ebx, ebx
- ; gcrRegs +[ebx]
- cmp edi, gword ptr [D1FFAB1EH] ; static handle
- cmove ebx, gword ptr [D1FFAB1EH] ; static handle
- ;; size=15 bbWeight=0.21 PerfScore 1.30
-G_M38045_IG11: ; bbWeight=0.62, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- test ebx, ebx
- je SHORT G_M38045_IG18
- mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edi, dword ptr [edx+0x34]
- test edi, edi
- je SHORT G_M38045_IG15
- ;; size=18 bbWeight=0.62 PerfScore 6.56
-G_M38045_IG12: ; bbWeight=6.25, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M38045_IG14
- ;; size=2 bbWeight=6.25 PerfScore 12.50
-G_M38045_IG13: ; bbWeight=0.21, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx] +[edi]
- cmp edi, gword ptr [D1FFAB1EH] ; static handle
- je SHORT G_M38045_IG19
- jmp SHORT G_M38045_IG10
- ;; size=10 bbWeight=0.21 PerfScore 1.25
-G_M38045_IG14: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi] +[ebx]
- mov eax, edi
- jmp SHORT G_M38045_IG16
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M38045_IG15: ; bbWeight=0.12, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=10 bbWeight=0.12 PerfScore 0.16
-G_M38045_IG16: ; bbWeight=0.62, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- mov ecx, eax
- mov edx, ebx
+ mov edx, eax
+ ;; size=12 bbWeight=0.12 PerfScore 0.19
+G_M38045_IG13: ; bbWeight=0.62, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, edx
+ mov edx, edi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx ebx] +[eax]
+ ; gcrRegs -[edx edi] +[eax]
lea edx, bword ptr [esi+0x0C]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
;; size=17 bbWeight=0.62 PerfScore 1.88
-G_M38045_IG17: ; bbWeight=0.62, epilog, nogc, extend
- pop ebx
+G_M38045_IG14: ; bbWeight=0.62, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret
- ;; size=5 bbWeight=0.62 PerfScore 1.88
-G_M38045_IG18: ; bbWeight=0.38, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
- pop ebx
+ ;; size=4 bbWeight=0.62 PerfScore 1.56
+G_M38045_IG15: ; bbWeight=0.38, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
pop esi
pop edi
pop ebp
ret
- ;; size=5 bbWeight=0.38 PerfScore 1.12
-G_M38045_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov ebx, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[ebx]
- jmp SHORT G_M38045_IG11
+ ;; size=4 bbWeight=0.38 PerfScore 0.94
+G_M38045_IG16: ; bbWeight=0.21, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ecx]
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ je SHORT G_M38045_IG17
+ xor edi, edi
+ ; gcrRegs +[edi]
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ cmove edi, gword ptr [D1FFAB1EH] ; static handle
+ jmp SHORT G_M38045_IG06
+ ;; size=25 bbWeight=0.21 PerfScore 2.55
+G_M38045_IG17: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx edi]
+ mov edi, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[edi]
+ jmp SHORT G_M38045_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 6, PerfScore 56.84, instruction count 70, allocated bytes for code 192 (MethodHash=43f56b62) for method System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 181, prolog size 5, PerfScore 41.91, instruction count 65, allocated bytes for code 181 (MethodHash=43f56b62) for method System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================
-14 (-1.83%) : 306514.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():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 2
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
; 9 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -65,13 +65,13 @@ G_M45732_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
; gcrRegs -[edx]
add edx, -33
cmp edx, 1
- jbe G_M45732_IG23
+ jbe G_M45732_IG25
mov ebx, gword ptr [esi+0x08]
; gcrRegs +[ebx]
mov edi, gword ptr [esi+0x0C]
; gcrRegs +[edi]
test byte ptr [edi+0x18], 64
- jne G_M45732_IG26
+ jne G_M45732_IG28
;; size=35 bbWeight=1 PerfScore 13.50
G_M45732_IG03: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
cmp byte ptr [ebx], bl
@@ -122,7 +122,7 @@ G_M45732_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
; gcrRegs -[eax]
; byrRegs -[edx]
cmp gword ptr [ebx+0x04], 0
- jne G_M45732_IG14
+ jne G_M45732_IG16
;; size=44 bbWeight=1 PerfScore 17.50
G_M45732_IG06: ; bbWeight=0.75, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
lea edx, bword ptr [ebx+0x04]
@@ -148,7 +148,7 @@ G_M45732_IG08: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M45732_IG09: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M45732_IG09: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs +[ebx edi]
; byrRegs +[esi]
mov eax, gword ptr [ebx+0x04]
@@ -156,7 +156,7 @@ G_M45732_IG09: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000088 {e
mov gword ptr [ebp-0x10], eax
; GC ptr vars +{V12}
cmp dword ptr [eax], 0xD1FFAB1E
- jne G_M45732_IG27
+ jne G_M45732_IG29
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
mov gword ptr [ebp-0x14], eax
@@ -169,11 +169,27 @@ G_M45732_IG09: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000088 {e
; GC ptr vars +{V14}
mov ecx, dword ptr [eax+0x08]
cmp dword ptr [edx+0x04], ecx
- ja G_M45732_IG22
- ;; size=59 bbWeight=0.25 PerfScore 5.56
-G_M45732_IG10: ; bbWeight=0.12, gcVars=00000820 {V12 V13}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
+ jbe SHORT G_M45732_IG11
+ ;; size=55 bbWeight=0.25 PerfScore 5.56
+G_M45732_IG10: ; bbWeight=0.12, gcVars=00020820 {V12 V13 V14}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[edx]
- ; GC ptr vars -{V14}
+ lea edx, [ecx+0x01]
+ mov dword ptr [eax+0x08], edx
+ mov edx, gword ptr [ebp-0x18]
+ ; gcrRegs +[edx]
+ lea edx, bword ptr [edx+4*ecx+0x08]
+ ; gcrRegs -[edx]
+ ; byrRegs +[edx]
+ mov ecx, gword ptr [ebp-0x10]
+ ; gcrRegs +[ecx]
+ ; GC ptr vars -{V12 V14}
+ call CORINFO_HELP_ASSIGN_REF_ECX
+ ; gcrRegs -[ecx]
+ ; byrRegs -[edx]
+ jmp SHORT G_M45732_IG12
+ ;; size=23 bbWeight=0.12 PerfScore 0.94
+G_M45732_IG11: ; bbWeight=0.12, gcVars=00000820 {V12 V13}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
+ ; GC ptr vars +{V12}
mov ecx, eax
; gcrRegs +[ecx]
mov edx, gword ptr [ebp-0x10]
@@ -184,7 +200,7 @@ G_M45732_IG10: ; bbWeight=0.12, gcVars=00000820 {V12 V13}, gcrefRegs=0000
mov eax, gword ptr [ebp-0x14]
; gcrRegs +[eax]
;; size=14 bbWeight=0.12 PerfScore 0.66
-G_M45732_IG11: ; bbWeight=0.25, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref
+G_M45732_IG12: ; bbWeight=0.25, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref, isz
inc dword ptr [eax+0x0C]
mov edx, gword ptr [eax+0x04]
; gcrRegs +[edx]
@@ -192,11 +208,25 @@ G_M45732_IG11: ; bbWeight=0.25, gcrefRegs=00000089 {eax ebx edi}, byrefRe
; GC ptr vars +{V16}
mov ecx, dword ptr [eax+0x08]
cmp dword ptr [edx+0x04], ecx
- ja G_M45732_IG21
- ;; size=21 bbWeight=0.25 PerfScore 3.00
-G_M45732_IG12: ; bbWeight=0.12, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref
+ jbe SHORT G_M45732_IG14
+ ;; size=17 bbWeight=0.25 PerfScore 3.00
+G_M45732_IG13: ; bbWeight=0.12, gcVars=00040020 {V13 V16}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[edx]
+ lea edx, [ecx+0x01]
+ mov dword ptr [eax+0x08], edx
+ mov edx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edx]
+ lea edx, bword ptr [edx+4*ecx+0x08]
+ ; gcrRegs -[edx]
+ ; byrRegs +[edx]
; GC ptr vars -{V16}
+ call CORINFO_HELP_ASSIGN_REF_EDI
+ ; gcrRegs -[edi]
+ ; byrRegs -[edx]
+ jmp SHORT G_M45732_IG15
+ ;; size=20 bbWeight=0.12 PerfScore 0.81
+G_M45732_IG14: ; bbWeight=0.12, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref
+ ; gcrRegs +[edi]
mov ecx, eax
; gcrRegs +[ecx]
mov edx, edi
@@ -206,7 +236,7 @@ G_M45732_IG12: ; bbWeight=0.12, gcrefRegs=00000089 {eax ebx edi}, byrefRe
mov eax, gword ptr [ebp-0x14]
; gcrRegs +[eax]
;; size=13 bbWeight=0.12 PerfScore 0.56
-G_M45732_IG13: ; bbWeight=0.25, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000040 {esi}, byref
+G_M45732_IG15: ; bbWeight=0.25, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000040 {esi}, byref
lea edx, bword ptr [ebx+0x04]
; byrRegs +[edx]
; GC ptr vars -{V13}
@@ -215,14 +245,14 @@ G_M45732_IG13: ; bbWeight=0.25, gcrefRegs=00000009 {eax ebx}, byrefRegs=0
; byrRegs -[edx]
jmp G_M45732_IG05
;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M45732_IG14: ; bbWeight=0.25, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
+G_M45732_IG16: ; bbWeight=0.25, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs +[ebx edi]
mov eax, gword ptr [ebx+0x04]
; gcrRegs +[eax]
mov gword ptr [ebp-0x20], eax
; GC ptr vars +{V25}
cmp dword ptr [eax], 0xD1FFAB1E
- jne G_M45732_IG29
+ jne G_M45732_IG23
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
mov gword ptr [ebp-0x24], eax
@@ -235,71 +265,10 @@ G_M45732_IG14: ; bbWeight=0.25, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
; GC ptr vars +{V27}
mov ecx, dword ptr [eax+0x08]
cmp dword ptr [edx+0x04], ecx
- ja SHORT G_M45732_IG20
+ jbe SHORT G_M45732_IG18
;; size=55 bbWeight=0.25 PerfScore 5.56
-G_M45732_IG15: ; bbWeight=0.12, gcVars=00001040 {V25 V26}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
+G_M45732_IG17: ; bbWeight=0.12, gcVars=00081040 {V25 V26 V27}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[edx]
- ; GC ptr vars -{V27}
- mov ecx, eax
- ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x20]
- ; gcrRegs +[edx]
- ; GC ptr vars -{V25}
- call [<unknown method>]
- ; gcrRegs -[eax ecx edx]
- mov eax, gword ptr [ebp-0x24]
- ; gcrRegs +[eax]
- ;; size=14 bbWeight=0.12 PerfScore 0.66
-G_M45732_IG16: ; bbWeight=0.25, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref, isz
- inc dword ptr [eax+0x0C]
- mov edx, gword ptr [eax+0x04]
- ; gcrRegs +[edx]
- mov gword ptr [ebp-0x2C], edx
- ; GC ptr vars +{V29}
- mov ecx, dword ptr [eax+0x08]
- cmp dword ptr [edx+0x04], ecx
- ja SHORT G_M45732_IG19
- ;; size=17 bbWeight=0.25 PerfScore 3.00
-G_M45732_IG17: ; bbWeight=0.12, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref
- ; gcrRegs -[edx]
- ; GC ptr vars -{V29}
- mov ecx, eax
- ; gcrRegs +[ecx]
- mov edx, edi
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[eax ecx edx edi]
- mov eax, gword ptr [ebp-0x24]
- ; gcrRegs +[eax]
- ;; size=13 bbWeight=0.12 PerfScore 0.56
-G_M45732_IG18: ; bbWeight=0.25, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000040 {esi}, byref
- lea edx, bword ptr [ebx+0x04]
- ; byrRegs +[edx]
- ; GC ptr vars -{V26}
- call CORINFO_HELP_ASSIGN_REF_EAX
- ; gcrRegs -[eax ebx]
- ; byrRegs -[edx]
- jmp G_M45732_IG07
- ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M45732_IG19: ; bbWeight=0.12, gcVars=00100040 {V26 V29}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs +[eax ebx edi]
- ; GC ptr vars +{V20 V26 V29}
- lea edx, [ecx+0x01]
- mov dword ptr [eax+0x08], edx
- mov edx, gword ptr [ebp-0x2C]
- ; gcrRegs +[edx]
- lea edx, bword ptr [edx+4*ecx+0x08]
- ; gcrRegs -[edx]
- ; byrRegs +[edx]
- ; GC ptr vars -{V20 V29}
- call CORINFO_HELP_ASSIGN_REF_EDI
- ; gcrRegs -[edi]
- ; byrRegs -[edx]
- jmp SHORT G_M45732_IG18
- ;; size=20 bbWeight=0.12 PerfScore 0.81
-G_M45732_IG20: ; bbWeight=0.12, gcVars=00081040 {V25 V26 V27}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; gcrRegs +[edi]
- ; GC ptr vars +{V12 V19 V25 V27}
lea edx, [ecx+0x01]
mov dword ptr [eax+0x08], edx
mov edx, gword ptr [ebp-0x28]
@@ -309,48 +278,103 @@ G_M45732_IG20: ; bbWeight=0.12, gcVars=00081040 {V25 V26 V27}, gcrefRegs=
; byrRegs +[edx]
mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- ; GC ptr vars -{V12 V19 V25 V27}
+ ; GC ptr vars -{V25 V27}
call CORINFO_HELP_ASSIGN_REF_ECX
; gcrRegs -[ecx]
; byrRegs -[edx]
- jmp SHORT G_M45732_IG16
+ jmp SHORT G_M45732_IG19
;; size=23 bbWeight=0.12 PerfScore 0.94
-G_M45732_IG21: ; bbWeight=0.12, gcVars=00040020 {V13 V16}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; GC ptr vars -{V26} +{V13 V16 V18}
+G_M45732_IG18: ; bbWeight=0.12, gcVars=00001040 {V25 V26}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
+ ; GC ptr vars +{V12 V25}
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ mov edx, gword ptr [ebp-0x20]
+ ; gcrRegs +[edx]
+ ; GC ptr vars -{V12 V25}
+ call [<unknown method>]
+ ; gcrRegs -[eax ecx edx]
+ mov eax, gword ptr [ebp-0x24]
+ ; gcrRegs +[eax]
+ ;; size=14 bbWeight=0.12 PerfScore 0.66
+G_M45732_IG19: ; bbWeight=0.25, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000040 {esi}, byref, isz
+ inc dword ptr [eax+0x0C]
...
-2 (-1.61%) : 236491.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():int:this (FullOpts)
@@ -2,26 +2,28 @@
; Emitting BLENDED_CODE for generic X86 - Windows
; FullOpts code
; optimized code
+; optimized using Unknown PGO
; ebp based frame
; partially interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 1
; No matching PGO data
; 0 inlinees with PGO data; 11 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 3, 3 ) byref -> ecx this single-def
-; V01 loc0 [V01,T04] ( 4, 43 ) int -> ecx
-; V02 loc1 [V02,T01] ( 9, 986 ) ref -> esi class-hnd single-def <System.Object>
-;* V03 tmp0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Array>
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.String>
-;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref ld-addr-op "NewObj constructor temp"
-;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V07 tmp4 [V07,T00] ( 2,2304 ) byref -> edx single-def "Inlining Arg"
-;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V09 tmp6 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
-;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-; V11 tmp8 [V11,T03] ( 2, 216 ) int -> eax "Cast away GC"
-; V12 tmp9 [V12,T02] ( 2, 256 ) int -> eax "Cast away GC"
-; V13 tmp10 [V13,T06] ( 2, 0 ) int -> eax "Cast away GC"
+; V00 this [V00,T00] ( 3, 3 ) byref -> ecx this single-def
+; V01 loc0 [V01,T02] ( 4, 4 ) int -> ecx
+; V02 loc1 [V02,T01] ( 9, 4.85) ref -> esi class-hnd single-def <System.Object>
+;* V03 tmp0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Array>
+;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.String>
+;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref ld-addr-op "NewObj constructor temp"
+;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V07 tmp4 [V07,T03] ( 2, 3.20) byref -> eax single-def "Inlining Arg"
+;* V08 tmp5 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V09 tmp6 [V09 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
+;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
+; V11 tmp8 [V11,T06] ( 2, 0.64) int -> eax "Cast away GC"
+; V12 tmp9 [V12,T05] ( 2, 1.23) int -> eax "Cast away GC"
+; V13 tmp10 [V13,T04] ( 2, 1.33) int -> eax "Cast away GC"
;
; Lcl frame size = 0
@@ -36,82 +38,88 @@ G_M15759_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {e
; byrRegs -[ecx]
test ecx, ecx
je SHORT G_M15759_IG15
- ;; size=6 bbWeight=1 PerfScore 3.25
-G_M15759_IG03: ; bbWeight=15, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test cl, 1
je SHORT G_M15759_IG16
- ;; size=5 bbWeight=15 PerfScore 18.75
-G_M15759_IG04: ; bbWeight=26, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
and ecx, -2
call <unknown method>
; gcrRegs +[eax]
mov esi, eax
; gcrRegs +[esi]
test esi, esi
+ je SHORT G_M15759_IG11
+ ;; size=25 bbWeight=1 PerfScore 7.25
+G_M15759_IG03: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ mov eax, dword ptr [esi]
+ test dword ptr [eax], 0xD1FFAB1E
+ je SHORT G_M15759_IG13
+ ;; size=10 bbWeight=0.80 PerfScore 4.80
+G_M15759_IG04: ; bbWeight=0.64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [esi], 0xD1FFAB1E
jne SHORT G_M15759_IG07
- ;; size=14 bbWeight=26 PerfScore 71.50
-G_M15759_IG05: ; bbWeight=30, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
- xor eax, eax
- ;; size=2 bbWeight=30 PerfScore 7.50
-G_M15759_IG06: ; bbWeight=30, epilog, nogc, extend
+ ;; size=8 bbWeight=0.64 PerfScore 2.56
+G_M15759_IG05: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ lea eax, bword ptr [esi+0x08]
+ ; byrRegs +[eax]
+ ;; size=3 bbWeight=0.33 PerfScore 0.17
+G_M15759_IG06: ; bbWeight=0.33, epilog, nogc, extend
pop esi
pop ebp
ret
- ;; size=3 bbWeight=30 PerfScore 60.00
-G_M15759_IG07: ; bbWeight=576, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi]
- mov edx, dword ptr [esi]
- test dword ptr [edx], 0xD1FFAB1E
- je SHORT G_M15759_IG12
- ;; size=10 bbWeight=576 PerfScore 3456.00
-G_M15759_IG08: ; bbWeight=112, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [esi], 0xD1FFAB1E
- je SHORT G_M15759_IG17
- ;; size=8 bbWeight=112 PerfScore 448.00
-G_M15759_IG09: ; bbWeight=64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=3 bbWeight=0.33 PerfScore 0.67
+G_M15759_IG07: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; byrRegs -[eax]
mov edx, esi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; System.Array
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax
- je SHORT G_M15759_IG14
- ;; size=16 bbWeight=64 PerfScore 176.00
-G_M15759_IG10: ; bbWeight=64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M15759_IG09
+ ;; size=16 bbWeight=0.31 PerfScore 0.84
+G_M15759_IG08: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
- mov eax, dword ptr [esi]
- mov eax, dword ptr [eax+0x04]
- lea eax, bword ptr [esi+eax-0x04]
- ; byrRegs +[eax]
- ;; size=9 bbWeight=64 PerfScore 320.00
-G_M15759_IG11: ; bbWeight=64, epilog, nogc, extend
- pop esi
- pop ebp
- ret
- ;; size=3 bbWeight=64 PerfScore 128.00
-G_M15759_IG12: ; bbWeight=54, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; byrRegs -[eax]
- lea eax, bword ptr [esi+0x04]
- ; byrRegs +[eax]
- ;; size=3 bbWeight=54 PerfScore 27.00
-G_M15759_IG13: ; bbWeight=54, epilog, nogc, extend
- pop esi
- pop ebp
- ret
- ;; size=3 bbWeight=54 PerfScore 108.00
-G_M15759_IG14: ; bbWeight=0.42, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; byrRegs -[eax]
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- jmp SHORT G_M15759_IG10
- ;; size=18 bbWeight=0.42 PerfScore 2.32
-G_M15759_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ;; size=16 bbWeight=0.25 PerfScore 0.86
+G_M15759_IG09: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [esi]
+ mov eax, dword ptr [eax+0x04]
+ lea eax, bword ptr [esi+eax-0x04]
+ ; byrRegs +[eax]
+ ;; size=9 bbWeight=0.31 PerfScore 1.54
+G_M15759_IG10: ; bbWeight=0.31, epilog, nogc, extend
+ pop esi
+ pop ebp
+ ret
+ ;; size=3 bbWeight=0.31 PerfScore 0.61
+G_M15759_IG11: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi]
+ ; byrRegs -[eax]
+ xor eax, eax
+ ;; size=2 bbWeight=0.20 PerfScore 0.05
+G_M15759_IG12: ; bbWeight=0.20, epilog, nogc, extend
+ pop esi
+ pop ebp
+ ret
+ ;; size=3 bbWeight=0.20 PerfScore 0.40
+G_M15759_IG13: ; bbWeight=0.16, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[esi]
+ lea eax, bword ptr [esi+0x04]
+ ; byrRegs +[eax]
+ ;; size=3 bbWeight=0.16 PerfScore 0.08
+G_M15759_IG14: ; bbWeight=0.16, epilog, nogc, extend
+ pop esi
+ pop ebp
+ ret
+ ;; size=3 bbWeight=0.16 PerfScore 0.32
+G_M15759_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[esi]
+ ; byrRegs -[eax]
call [System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotInitialized()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
@@ -119,17 +127,7 @@ G_M15759_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [System.ThrowHelper:ThrowInvalidOperationException_HandleIsNotPinned()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M15759_IG17: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[esi]
- lea eax, bword ptr [esi+0x08]
- ; byrRegs +[eax]
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M15759_IG18: ; bbWeight=0, epilog, nogc, extend
- pop esi
- pop ebp
- ret
- ;; size=3 bbWeight=0 PerfScore 0.00
-; Total bytes of code 124, prolog size 4, PerfScore 4828.57, instruction count 49, allocated bytes for code 124 (MethodHash=bdd2c270) for method System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():int:this (FullOpts)
+; Total bytes of code 122, prolog size 4, PerfScore 22.40, instruction count 48, allocated bytes for code 122 (MethodHash=bdd2c270) for method System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():int:this (FullOpts)
; ============================================================
+4 (+1.34%) : 461737.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -98,7 +98,7 @@ G_M21827_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edi, gword ptr [ebp+0x08]
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M21827_IG09
+ je SHORT G_M21827_IG11
;; size=7 bbWeight=1 PerfScore 2.25
G_M21827_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
lea edx, bword ptr [esi+0x0C]
@@ -117,35 +117,9 @@ G_M21827_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
jne SHORT G_M21827_IG20
mov ebx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ebx]
- jmp SHORT G_M21827_IG13
- ;; size=42 bbWeight=1 PerfScore 21.50
-G_M21827_IG09: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx edi]
- mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x28]
- test edx, edx
- je SHORT G_M21827_IG11
- ;; size=14 bbWeight=0.33 PerfScore 3.08
-G_M21827_IG10: ; bbWeight=0.27, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M21827_IG12
- ;; size=2 bbWeight=0.27 PerfScore 0.53
-G_M21827_IG11: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov edx, eax
- ;; size=12 bbWeight=0.07 PerfScore 0.10
-G_M21827_IG12: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, edx
- call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
- ; gcrRegs +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- jmp SHORT G_M21827_IG08
- ;; size=12 bbWeight=0.33 PerfScore 1.83
-G_M21827_IG13: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edi] +[ebx]
+ ;; size=40 bbWeight=1 PerfScore 19.50
+G_M21827_IG09: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
test ebx, ebx
je SHORT G_M21827_IG18
mov edx, dword ptr [ecx+0x24]
@@ -154,10 +128,36 @@ G_M21827_IG13: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
test edx, edx
je SHORT G_M21827_IG15
;; size=16 bbWeight=1 PerfScore 8.50
-G_M21827_IG14: ; bbWeight=0.80, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M21827_IG10: ; bbWeight=0.80, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M21827_IG16
;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M21827_IG11: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x28]
+ test edx, edx
+ je SHORT G_M21827_IG13
+ ;; size=14 bbWeight=0.33 PerfScore 3.08
+G_M21827_IG12: ; bbWeight=0.27, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M21827_IG14
+ ;; size=2 bbWeight=0.27 PerfScore 0.53
+G_M21827_IG13: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov edx, eax
+ ;; size=12 bbWeight=0.07 PerfScore 0.10
+G_M21827_IG14: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, edx
+ call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
+ ; gcrRegs +[eax]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ jmp SHORT G_M21827_IG08
+ ;; size=12 bbWeight=0.33 PerfScore 1.83
G_M21827_IG15: ; bbWeight=0.20, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax edi] +[ebx]
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov edx, eax
@@ -199,17 +199,17 @@ G_M21827_IG20: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
jne SHORT G_M21827_IG21
mov ebx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ebx]
- jmp SHORT G_M21827_IG13
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M21827_IG21: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp G_M21827_IG09
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M21827_IG21: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx]
xor ebx, ebx
; gcrRegs +[ebx]
cmp edi, gword ptr [D1FFAB1EH] ; static handle
cmove ebx, gword ptr [D1FFAB1EH] ; static handle
- jmp SHORT G_M21827_IG13
- ;; size=17 bbWeight=0 PerfScore 0.00
+ jmp G_M21827_IG09
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 299, prolog size 6, PerfScore 68.27, instruction count 101, allocated bytes for code 299 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 303, prolog size 6, PerfScore 66.27, instruction count 100, allocated bytes for code 303 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================
+12 (+1.65%) : 565887.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
@@ -5,31 +5,31 @@
; optimized using Dynamic PGO
; ebp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 20
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 20
; 3 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 11, 4.60) ref -> [ebp-0x28] this class-hnd single-def <System.Resources.ResourceManager>
+; V00 this [V00,T00] ( 11, 4.60) ref -> esi this class-hnd single-def <System.Resources.ResourceManager>
; V01 arg1 [V01,T02] ( 7, 4 ) ref -> edi class-hnd single-def <System.String>
-; V02 arg2 [V02,T06] ( 5, 2.25) ref -> ebx class-hnd <System.Globalization.CultureInfo>
-; V03 loc0 [V03,T03] ( 8, 3.90) ref -> [ebp-0x2C] class-hnd <System.Resources.ResourceSet>
+; V02 arg2 [V02,T06] ( 5, 2.25) ref -> [ebp+0x08] class-hnd <System.Globalization.CultureInfo>
+; V03 loc0 [V03,T03] ( 8, 3.90) ref -> [ebp-0x28] class-hnd <System.Resources.ResourceSet>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Resources.ResourceFallbackManager>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
-; V06 loc3 [V06,T21] ( 3, 0.20) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.Resources.ResourceFallbackManager+<GetEnumerator>d__5>
+; V06 loc3 [V06,T21] ( 3, 0.20) ref -> [ebp-0x2C] class-hnd exact EH-live spill-single-def <System.Resources.ResourceFallbackManager+<GetEnumerator>d__5>
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Globalization.CultureInfo>
-; V08 loc5 [V08,T12] ( 9, 0.60) ref -> [ebp-0x34] class-hnd <System.Resources.ResourceSet>
+; V08 loc5 [V08,T12] ( 9, 0.60) ref -> [ebp-0x30] class-hnd <System.Resources.ResourceSet>
;* V09 loc6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V10 loc7 [V10,T18] ( 4, 0.30) ref -> [ebp-0x38] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>>
+; V10 loc7 [V10,T18] ( 4, 0.30) ref -> [ebp-0x34] do-not-enreg[Z] class-hnd exact EH-live <<unknown class>>
; V11 loc8 [V11 ] ( 6, 0.50) ubyte -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
;* V12 loc9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V13 tmp0 [V13,T09] ( 6, 1 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Resources.ResourceFallbackManager>
+; V13 tmp0 [V13,T09] ( 6, 1 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Resources.ResourceFallbackManager>
; V14 tmp1 [V14,T15] ( 2, 0.40) ref -> edi class-hnd exact "impAppendStmt" <<unknown class>>
; V15 tmp2 [V15,T05] ( 4, 2.70) ref -> eax "guarded devirt return temp"
; V16 tmp3 [V16,T04] ( 3, 3.60) int -> edx "guarded devirt arg temp"
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Resources.RuntimeResourceSet>
; V18 tmp5 [V18,T13] ( 6, 0.40) ref -> ebx "guarded devirt return temp"
;* V19 tmp6 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Resources.ResourceFallbackManager+<GetEnumerator>d__5>
-; V20 tmp7 [V20,T19] ( 4, 0.30) ref -> [ebp-0x40] "guarded devirt return temp"
+; V20 tmp7 [V20,T19] ( 4, 0.30) ref -> [ebp-0x3C] "guarded devirt return temp"
; V21 tmp8 [V21,T14] ( 3, 0.40) int -> edx "guarded devirt arg temp"
;* V22 tmp9 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Resources.RuntimeResourceSet>
; V23 tmp10 [V23,T22] ( 3, 0.20) ref -> eax "guarded devirt return temp"
@@ -41,7 +41,7 @@
; V29 tmp16 [V29,T07] ( 3, 1.80) ref -> edx class-hnd single-def "Inline stloc first use temp" <System.Object>
; V30 tmp17 [V30,T08] ( 3, 1.80) int -> ecx "fgMakeTemp is creating a new local variable"
; V31 tmp18 [V31,T01] ( 4, 6.30) ref -> eax class-hnd single-def "spilling QMark2" <System.String>
-; V32 tmp19 [V32,T16] ( 2, 0.40) ref -> [ebp-0x44] class-hnd spill-single-def "Inlining Arg" <System.Globalization.CultureInfo>
+; V32 tmp19 [V32,T16] ( 2, 0.40) ref -> [ebp-0x40] class-hnd spill-single-def "Inlining Arg" <System.Globalization.CultureInfo>
; V33 tmp20 [V33,T10] ( 4, 0.80) ref -> ecx class-hnd exact single-def "NewObj constructor temp" <System.Resources.ResourceFallbackManager+<GetEnumerator>d__5>
;* V34 tmp21 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V35 tmp22 [V35,T23] ( 3, 0.20) ref -> eax class-hnd "Inline stloc first use temp" <System.Object>
@@ -50,10 +50,10 @@
; V38 tmp25 [V38,T17] ( 2, 0.40) ubyte -> ecx "Inlining Arg"
; V39 EHSlots [V39 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
; V40 cse0 [V40,T20] ( 3, 0.30) ref -> edx "CSE - conservative"
-; TEMP_02 ref -> [ebp-0x48]
-; TEMP_01 int -> [ebp-0x4C]
+; TEMP_02 ref -> [ebp-0x44]
+; TEMP_01 int -> [ebp-0x48]
;
-; Lcl frame size = 64
+; Lcl frame size = 60
G_M18031_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -61,9 +61,9 @@ G_M18031_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 64
+ sub esp, 60
xor eax, eax
- mov dword ptr [ebp-0x48], eax
+ mov dword ptr [ebp-0x44], eax
mov dword ptr [ebp-0x18], eax
mov esi, ecx
; gcrRegs +[esi]
@@ -74,7 +74,7 @@ G_M18031_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=24 bbWeight=1 PerfScore 8.25
G_M18031_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
test edi, edi
- je G_M18031_IG39
+ je G_M18031_IG37
test ebx, ebx
je G_M18031_IG11
;; size=16 bbWeight=1 PerfScore 2.50
@@ -91,10 +91,10 @@ G_M18031_IG03: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
G_M18031_IG04: ; bbWeight=0.90, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
movzx edx, byte ptr [esi+0x2C]
cmp dword ptr [eax], 0xD1FFAB1E
- jne G_M18031_IG41
+ jne G_M18031_IG39
push edx
push 1
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x28], eax
; GC ptr vars +{V03}
mov ecx, eax
; gcrRegs +[ecx]
@@ -111,7 +111,7 @@ G_M18031_IG04: ; bbWeight=0.90, gcrefRegs=000000C9 {eax ebx esi edi}, byr
G_M18031_IG05: ; bbWeight=0.45, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.String
cmp dword ptr [eax], ecx
- jne G_M18031_IG40
+ jne G_M18031_IG38
;; size=13 bbWeight=0.45 PerfScore 1.91
G_M18031_IG06: ; bbWeight=0.90, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
@@ -128,7 +128,7 @@ G_M18031_IG07: ; bbWeight=0.90, epilog, nogc, extend
;; size=10 bbWeight=0.90 PerfScore 4.05
G_M18031_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V03}
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x28], eax
; GC ptr vars +{V03}
;; size=3 bbWeight=0.50 PerfScore 0.50
G_M18031_IG09: ; bbWeight=0.10, gcVars=00000008 {V03}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
@@ -136,14 +136,14 @@ G_M18031_IG09: ; bbWeight=0.10, gcVars=00000008 {V03}, gcrefRegs=000000C8
mov ecx, 0xD1FFAB1E ; System.Resources.ResourceFallbackManager
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
- mov gword ptr [ebp-0x3C], eax
+ mov gword ptr [ebp-0x38], eax
; GC ptr vars +{V13}
mov ecx, gword ptr [esi+0x18]
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x44], ecx
+ mov gword ptr [ebp-0x40], ecx
; GC ptr vars +{V32}
test ebx, ebx
- je G_M18031_IG42
+ je G_M18031_IG40
lea edx, bword ptr [eax+0x04]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EBX
@@ -166,13 +166,13 @@ G_M18031_IG10: ; bbWeight=0.10, gcrefRegs=000000C3 {eax ecx esi edi}, byr
mov dword ptr [ecx+0x10], edx
lea edx, bword ptr [ecx+0x08]
; byrRegs +[edx]
- mov ebx, gword ptr [ebp-0x3C]
+ mov ebx, gword ptr [ebp-0x38]
; gcrRegs +[ebx]
; GC ptr vars -{V13}
call CORINFO_HELP_ASSIGN_REF_EBX
; gcrRegs -[eax ebx]
; byrRegs -[edx]
- mov gword ptr [ebp-0x30], ecx
+ mov gword ptr [ebp-0x2C], ecx
; GC ptr vars +{V06}
jmp SHORT G_M18031_IG12
;; size=45 bbWeight=0.10 PerfScore 1.07
@@ -185,14 +185,14 @@ G_M18031_IG11: ; bbWeight=0.05, gcVars=00000000 {}, gcrefRegs=000000C0 {e
; gcrRegs +[ebx]
jmp G_M18031_IG03
;; size=13 bbWeight=0.05 PerfScore 0.26
-G_M18031_IG12: ; bbWeight=0.10, gcVars=00200008 {V03 V06}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M18031_IG12: ; bbWeight=0.10, gcVars=00200008 {V03 V06}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax ebx] +[ecx]
; GC ptr vars +{V03 V06 V21}
- jmp G_M18031_IG22
- ;; size=5 bbWeight=0.10 PerfScore 0.20
-G_M18031_IG13: ; bbWeight=0.10, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ call [System.Resources.ResourceFallbackManager+<GetEnumerator>d__5:MoveNext():ubyte:this]
; gcrRegs -[ecx]
- mov ecx, gword ptr [ebp-0x30]
+ test eax, eax
+ je G_M18031_IG26
+ mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx]
mov ebx, gword ptr [ecx+0x04]
; gcrRegs +[ebx]
@@ -206,21 +206,21 @@ G_M18031_IG13: ; bbWeight=0.10, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx edx] +[eax]
test eax, eax
- je SHORT G_M18031_IG17
- mov edx, gword ptr [ebp-0x2C]
+ je G_M18031_IG27
+ mov edx, gword ptr [ebp-0x28]
; gcrRegs +[edx]
cmp eax, edx
- mov gword ptr [ebp-0x2C], edx
- mov ecx, gword ptr [ebp-0x30]
+ mov gword ptr [ebp-0x28], edx
+ mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx]
- je G_M18031_IG22
+ je SHORT G_M18031_IG12
movzx edx, byte ptr [esi+0x2C]
; gcrRegs -[edx]
cmp dword ptr [eax], 0xD1FFAB1E
- jne SHORT G_M18031_IG19
+ jne G_M18031_IG25
push edx
push 1
- mov gword ptr [ebp-0x34], eax
+ mov gword ptr [ebp-0x30], eax
; GC ptr vars +{V08}
mov ecx, eax
mov edx, edi
@@ -231,137 +231,69 @@ G_M18031_IG13: ; bbWeight=0.10, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
mov ecx, eax
; gcrRegs +[ecx]
test ecx, ecx
- jne SHORT G_M18031_IG21
- ;; size=77 bbWeight=0.10 PerfScore 3.20
+ je SHORT G_M18031_IG14
+ ;; size=95 bbWeight=0.10 PerfScore 3.63
+G_M18031_IG13: ; bbWeight=0.05, gcrefRegs=000000CB {eax ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ mov edx, 0xD1FFAB1E ; System.String
+ cmp dword ptr [ecx], edx
+ jne G_M18031_IG28
+ ;; size=13 bbWeight=0.05 PerfScore 0.21
G_M18031_IG14: ; bbWeight=0.10, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
- mov eax, ecx
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.10 PerfScore 0.03
-G_M18031_IG15: ; bbWeight=0.10, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- mov gword ptr [ebp-0x40], eax
+ mov gword ptr [ebp-0x3C], ecx
; GC ptr vars +{V20}
- test eax, eax
- je SHORT G_M18031_IG20
+ test ecx, ecx
+ je G_M18031_IG24
+ mov ecx, gword ptr [ebp-0x3C]
mov edx, gword ptr [esi+0x1C]
; gcrRegs +[edx]
test edx, edx
- je G_M18031_IG31
- mov gword ptr [ebp-0x38], edx
+ je G_M18031_IG29
+ mov gword ptr [ebp-0x34], edx
; GC ptr vars +{V10}
xor edx, edx
; gcrRegs -[edx]
mov dword ptr [ebp-0x24], edx
- jmp SHORT G_M18031_IG23
- ;; size=28 bbWeight=0.10 PerfScore 0.98
-G_M18031_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax ebx esi edi]
- ; GC ptr vars -{V06 V08 V10 V20}
- mov dword ptr [ebp-0x1C], 0
- mov dword ptr [ebp-0x18], 252
- push G_M18031_IG32
- jmp G_M18031_IG34
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M18031_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov dword ptr [ebp-0x1C], 0
...
+4 (+1.78%) : 494069.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -52,7 +52,7 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edi, gword ptr [ebp+0x08]
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M21827_IG06
+ je SHORT G_M21827_IG08
;; size=7 bbWeight=1 PerfScore 2.25
G_M21827_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
lea edx, bword ptr [esi+0x0C]
@@ -71,35 +71,9 @@ G_M21827_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
jne SHORT G_M21827_IG17
mov ebx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ebx]
- jmp SHORT G_M21827_IG10
- ;; size=42 bbWeight=1 PerfScore 21.50
-G_M21827_IG06: ; bbWeight=0.40, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx edi]
- mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x28]
- test edx, edx
- je SHORT G_M21827_IG08
- ;; size=14 bbWeight=0.40 PerfScore 3.70
-G_M21827_IG07: ; bbWeight=0.32, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M21827_IG09
- ;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M21827_IG08: ; bbWeight=0.08, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov edx, eax
- ;; size=12 bbWeight=0.08 PerfScore 0.12
-G_M21827_IG09: ; bbWeight=0.40, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, edx
- call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
- ; gcrRegs +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- jmp SHORT G_M21827_IG05
- ;; size=12 bbWeight=0.40 PerfScore 2.20
-G_M21827_IG10: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edi] +[ebx]
+ ;; size=40 bbWeight=1 PerfScore 19.50
+G_M21827_IG06: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
test ebx, ebx
je SHORT G_M21827_IG15
mov ecx, dword ptr [esi]
@@ -109,10 +83,36 @@ G_M21827_IG10: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
test edx, edx
je SHORT G_M21827_IG12
;; size=18 bbWeight=1 PerfScore 10.50
-G_M21827_IG11: ; bbWeight=0.80, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M21827_IG07: ; bbWeight=0.80, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M21827_IG13
;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M21827_IG08: ; bbWeight=0.40, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ebx]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x28]
+ test edx, edx
+ je SHORT G_M21827_IG10
+ ;; size=14 bbWeight=0.40 PerfScore 3.70
+G_M21827_IG09: ; bbWeight=0.32, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M21827_IG11
+ ;; size=2 bbWeight=0.32 PerfScore 0.64
+G_M21827_IG10: ; bbWeight=0.08, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov edx, eax
+ ;; size=12 bbWeight=0.08 PerfScore 0.12
+G_M21827_IG11: ; bbWeight=0.40, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, edx
+ call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
+ ; gcrRegs +[eax]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ jmp SHORT G_M21827_IG05
+ ;; size=12 bbWeight=0.40 PerfScore 2.20
G_M21827_IG12: ; bbWeight=0.20, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax edi] +[ebx]
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov edx, eax
@@ -154,17 +154,17 @@ G_M21827_IG17: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
jne SHORT G_M21827_IG18
mov ebx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ebx]
- jmp SHORT G_M21827_IG10
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M21827_IG18: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp G_M21827_IG06
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M21827_IG18: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx]
xor ebx, ebx
; gcrRegs +[ebx]
cmp edi, gword ptr [D1FFAB1EH] ; static handle
cmove ebx, gword ptr [D1FFAB1EH] ; static handle
- jmp SHORT G_M21827_IG10
- ;; size=17 bbWeight=0 PerfScore 0.00
+ jmp G_M21827_IG06
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 225, prolog size 6, PerfScore 58.76, instruction count 79, allocated bytes for code 225 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 229, prolog size 6, PerfScore 56.76, instruction count 78, allocated bytes for code 229 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================
libraries_tests.run.windows.x86.Release.mch
-7 (-3.65%) : 100585.dasm - System.Collections.Generic.HashSet1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -14,15 +14,15 @@
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.String]>
;* V03 tmp0 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
; V04 tmp1 [V04,T05] ( 4, 3.36) ref -> eax
-; V05 tmp2 [V05,T06] ( 3, 3.33) int -> eax "spilling helperCall"
+; V05 tmp2 [V05,T06] ( 3, 3.33) int -> edx "spilling helperCall"
;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V07 tmp4 [V07,T07] ( 5, 2.50) ref -> ebx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
-; V08 tmp5 [V08,T02] ( 4, 4.99) ref -> edi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V07 tmp4 [V07,T07] ( 5, 2.50) ref -> edi class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V08 tmp5 [V08,T02] ( 4, 4.99) ref -> ecx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V09 rat0 [V09,T09] ( 3, 1.57) int -> ecx "Spilling to split statement for tree"
; V10 rat1 [V10,T10] ( 3, 1.43) int -> edx "runtime lookup"
; V11 rat2 [V11,T08] ( 3, 2.00) int -> edx "fgMakeTemp is creating a new local variable"
; V12 rat3 [V12,T04] ( 3, 3.66) int -> ecx "Spilling to split statement for tree"
-; V13 rat4 [V13,T03] ( 3, 4.66) int -> edi "fgMakeTemp is creating a new local variable"
+; V13 rat4 [V13,T03] ( 3, 4.66) int -> edx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 0
@@ -31,16 +31,15 @@ G_M38045_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
push edi
push esi
- push ebx
mov esi, ecx
; gcrRegs +[esi]
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=7 bbWeight=1 PerfScore 3.50
G_M38045_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx]
mov eax, edx
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M38045_IG06
+ je SHORT G_M38045_IG08
;; size=6 bbWeight=1 PerfScore 1.50
G_M38045_IG03: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
@@ -53,111 +52,102 @@ G_M38045_IG03: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=0000
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M38045_IG18
+ jne G_M38045_IG16
;; size=27 bbWeight=1 PerfScore 11.50
G_M38045_IG04: ; bbWeight=0.83, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [esi+0x0C]
- ; gcrRegs +[edi]
- cmp edi, gword ptr [D1FFAB1EH] ; static handle
- jne SHORT G_M38045_IG13
+ mov ecx, gword ptr [esi+0x0C]
+ ; gcrRegs +[ecx]
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ jne SHORT G_M38045_IG15
;; size=11 bbWeight=0.83 PerfScore 4.99
-G_M38045_IG05: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M38045_IG05: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
+ mov edi, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[edi]
+ ;; size=6 bbWeight=0.42 PerfScore 0.83
+G_M38045_IG06: ; bbWeight=0.83, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ test edi, edi
+ je SHORT G_M38045_IG16
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x20]
+ test edx, edx
+ je SHORT G_M38045_IG12
+ ;; size=18 bbWeight=0.83 PerfScore 8.73
+G_M38045_IG07: ; bbWeight=0.67, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M38045_IG13
+ ;; size=2 bbWeight=0.67 PerfScore 1.33
+G_M38045_IG08: ; bbWeight=0.36, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
- mov ebx, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[ebx]
- jmp SHORT G_M38045_IG11
- ;; size=8 bbWeight=0.42 PerfScore 1.66
-G_M38045_IG06: ; bbWeight=0.36, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx]
mov ecx, dword ptr [esi]
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
mov edx, dword ptr [edx+0x24]
test edx, edx
- je SHORT G_M38045_IG08
+ je SHORT G_M38045_IG10
;; size=14 bbWeight=0.36 PerfScore 3.30
-G_M38045_IG07: ; bbWeight=0.29, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M38045_IG09
+G_M38045_IG09: ; bbWeight=0.29, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M38045_IG11
;; size=2 bbWeight=0.29 PerfScore 0.57
-G_M38045_IG08: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M38045_IG10: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov edx, eax
;; size=12 bbWeight=0.07 PerfScore 0.11
-G_M38045_IG09: ; bbWeight=0.36, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M38045_IG11: ; bbWeight=0.36, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, edx
call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
; gcrRegs +[eax]
jmp SHORT G_M38045_IG03
;; size=10 bbWeight=0.36 PerfScore 1.87
-G_M38045_IG10: ; bbWeight=0.42, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M38045_IG12: ; bbWeight=0.17, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] +[edi]
- xor ebx, ebx
- ; gcrRegs +[ebx]
- cmp edi, gword ptr [D1FFAB1EH] ; static handle
- cmove ebx, gword ptr [D1FFAB1EH] ; static handle
- ;; size=15 bbWeight=0.42 PerfScore 2.60
-G_M38045_IG11: ; bbWeight=0.83, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- test ebx, ebx
- je SHORT G_M38045_IG18
- mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edi, dword ptr [edx+0x20]
- test edi, edi
- je SHORT G_M38045_IG15
- ;; size=18 bbWeight=0.83 PerfScore 8.73
-G_M38045_IG12: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M38045_IG14
- ;; size=2 bbWeight=0.50 PerfScore 0.99
-G_M38045_IG13: ; bbWeight=0.42, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx] +[edi]
- cmp edi, gword ptr [D1FFAB1EH] ; static handle
- je SHORT G_M38045_IG19
- jmp SHORT G_M38045_IG10
- ;; size=10 bbWeight=0.42 PerfScore 2.50
-G_M38045_IG14: ; bbWeight=0.67, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi] +[ebx]
- mov eax, edi
- jmp SHORT G_M38045_IG16
- ;; size=4 bbWeight=0.67 PerfScore 1.50
-G_M38045_IG15: ; bbWeight=0.17, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=10 bbWeight=0.17 PerfScore 0.21
-G_M38045_IG16: ; bbWeight=0.83, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- mov ecx, eax
- mov edx, ebx
+ mov edx, eax
+ ;; size=12 bbWeight=0.17 PerfScore 0.25
+G_M38045_IG13: ; bbWeight=0.83, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, edx
+ mov edx, edi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx ebx] +[eax]
+ ; gcrRegs -[edx edi] +[eax]
lea edx, bword ptr [esi+0x0C]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
;; size=17 bbWeight=0.83 PerfScore 2.50
-G_M38045_IG17: ; bbWeight=0.83, epilog, nogc, extend
- pop ebx
+G_M38045_IG14: ; bbWeight=0.83, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret
- ;; size=5 bbWeight=0.83 PerfScore 2.50
-G_M38045_IG18: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
- pop ebx
+ ;; size=4 bbWeight=0.83 PerfScore 2.08
+G_M38045_IG15: ; bbWeight=0.42, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ecx]
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ je SHORT G_M38045_IG17
+ xor edi, edi
+ ; gcrRegs +[edi]
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ cmove edi, gword ptr [D1FFAB1EH] ; static handle
+ jmp SHORT G_M38045_IG06
+ ;; size=25 bbWeight=0.42 PerfScore 5.09
+G_M38045_IG16: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[ecx edi]
pop esi
pop edi
pop ebp
ret
- ;; size=5 bbWeight=0.17 PerfScore 0.50
-G_M38045_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov ebx, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[ebx]
- jmp SHORT G_M38045_IG11
+ ;; size=4 bbWeight=0.17 PerfScore 0.42
+G_M38045_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edi, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[edi]
+ jmp SHORT G_M38045_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 6, PerfScore 52.02, instruction count 70, allocated bytes for code 192 (MethodHash=43f56b62) for method System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 185, prolog size 5, PerfScore 48.57, instruction count 65, allocated bytes for code 185 (MethodHash=43f56b62) for method System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================
-7 (-3.65%) : 110857.dasm - System.Collections.Generic.HashSet1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -14,15 +14,15 @@
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.String]>
;* V03 tmp0 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
; V04 tmp1 [V04,T05] ( 4, 3.34) ref -> eax
-; V05 tmp2 [V05,T06] ( 3, 3.20) int -> eax "spilling helperCall"
+; V05 tmp2 [V05,T06] ( 3, 3.20) int -> edx "spilling helperCall"
;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V07 tmp4 [V07,T07] ( 5, 2.40) ref -> ebx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
-; V08 tmp5 [V08,T02] ( 4, 4.80) ref -> edi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V07 tmp4 [V07,T07] ( 5, 2.40) ref -> edi class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V08 tmp5 [V08,T02] ( 4, 4.80) ref -> ecx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V09 rat0 [V09,T09] ( 3, 1.48) int -> ecx "Spilling to split statement for tree"
; V10 rat1 [V10,T10] ( 3, 1.34) int -> edx "runtime lookup"
; V11 rat2 [V11,T08] ( 3, 1.88) int -> edx "fgMakeTemp is creating a new local variable"
; V12 rat3 [V12,T04] ( 3, 3.52) int -> ecx "Spilling to split statement for tree"
-; V13 rat4 [V13,T03] ( 3, 4.48) int -> edi "fgMakeTemp is creating a new local variable"
+; V13 rat4 [V13,T03] ( 3, 4.48) int -> edx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 0
@@ -31,16 +31,15 @@ G_M38045_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
push edi
push esi
- push ebx
mov esi, ecx
; gcrRegs +[esi]
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=7 bbWeight=1 PerfScore 3.50
G_M38045_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx]
mov eax, edx
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M38045_IG06
+ je SHORT G_M38045_IG08
;; size=6 bbWeight=1 PerfScore 1.50
G_M38045_IG03: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx]
@@ -53,111 +52,102 @@ G_M38045_IG03: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=0000
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M38045_IG18
+ jne G_M38045_IG16
;; size=27 bbWeight=1 PerfScore 11.50
G_M38045_IG04: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, gword ptr [esi+0x0C]
- ; gcrRegs +[edi]
- cmp edi, gword ptr [D1FFAB1EH] ; static handle
- jne SHORT G_M38045_IG13
+ mov ecx, gword ptr [esi+0x0C]
+ ; gcrRegs +[ecx]
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ jne SHORT G_M38045_IG15
;; size=11 bbWeight=0.80 PerfScore 4.80
-G_M38045_IG05: ; bbWeight=0.40, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M38045_IG05: ; bbWeight=0.40, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
+ mov edi, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[edi]
+ ;; size=6 bbWeight=0.40 PerfScore 0.80
+G_M38045_IG06: ; bbWeight=0.80, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ test edi, edi
+ je SHORT G_M38045_IG16
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x20]
+ test edx, edx
+ je SHORT G_M38045_IG12
+ ;; size=18 bbWeight=0.80 PerfScore 8.40
+G_M38045_IG07: ; bbWeight=0.64, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M38045_IG13
+ ;; size=2 bbWeight=0.64 PerfScore 1.28
+G_M38045_IG08: ; bbWeight=0.34, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
- mov ebx, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[ebx]
- jmp SHORT G_M38045_IG11
- ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M38045_IG06: ; bbWeight=0.34, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx]
mov ecx, dword ptr [esi]
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
mov edx, dword ptr [edx+0x24]
test edx, edx
- je SHORT G_M38045_IG08
+ je SHORT G_M38045_IG10
;; size=14 bbWeight=0.34 PerfScore 3.11
-G_M38045_IG07: ; bbWeight=0.27, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M38045_IG09
+G_M38045_IG09: ; bbWeight=0.27, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M38045_IG11
;; size=2 bbWeight=0.27 PerfScore 0.54
-G_M38045_IG08: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M38045_IG10: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov edx, eax
;; size=12 bbWeight=0.07 PerfScore 0.10
-G_M38045_IG09: ; bbWeight=0.34, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M38045_IG11: ; bbWeight=0.34, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, edx
call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
; gcrRegs +[eax]
jmp SHORT G_M38045_IG03
;; size=10 bbWeight=0.34 PerfScore 1.76
-G_M38045_IG10: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M38045_IG12: ; bbWeight=0.16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] +[edi]
- xor ebx, ebx
- ; gcrRegs +[ebx]
- cmp edi, gword ptr [D1FFAB1EH] ; static handle
- cmove ebx, gword ptr [D1FFAB1EH] ; static handle
- ;; size=15 bbWeight=0.40 PerfScore 2.50
-G_M38045_IG11: ; bbWeight=0.80, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- test ebx, ebx
- je SHORT G_M38045_IG18
- mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edi, dword ptr [edx+0x20]
- test edi, edi
- je SHORT G_M38045_IG15
- ;; size=18 bbWeight=0.80 PerfScore 8.40
-G_M38045_IG12: ; bbWeight=0.40, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M38045_IG14
- ;; size=2 bbWeight=0.40 PerfScore 0.80
-G_M38045_IG13: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx] +[edi]
- cmp edi, gword ptr [D1FFAB1EH] ; static handle
- je SHORT G_M38045_IG19
- jmp SHORT G_M38045_IG10
- ;; size=10 bbWeight=0.40 PerfScore 2.40
-G_M38045_IG14: ; bbWeight=0.64, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi] +[ebx]
- mov eax, edi
- jmp SHORT G_M38045_IG16
- ;; size=4 bbWeight=0.64 PerfScore 1.44
-G_M38045_IG15: ; bbWeight=0.16, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=10 bbWeight=0.16 PerfScore 0.20
-G_M38045_IG16: ; bbWeight=0.80, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
- mov ecx, eax
- mov edx, ebx
+ mov edx, eax
+ ;; size=12 bbWeight=0.16 PerfScore 0.24
+G_M38045_IG13: ; bbWeight=0.80, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, edx
+ mov edx, edi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx ebx] +[eax]
+ ; gcrRegs -[edx edi] +[eax]
lea edx, bword ptr [esi+0x0C]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
;; size=17 bbWeight=0.80 PerfScore 2.40
-G_M38045_IG17: ; bbWeight=0.80, epilog, nogc, extend
- pop ebx
+G_M38045_IG14: ; bbWeight=0.80, epilog, nogc, extend
pop esi
pop edi
pop ebp
ret
- ;; size=5 bbWeight=0.80 PerfScore 2.40
-G_M38045_IG18: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
- pop ebx
+ ;; size=4 bbWeight=0.80 PerfScore 2.00
+G_M38045_IG15: ; bbWeight=0.40, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ecx]
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ je SHORT G_M38045_IG17
+ xor edi, edi
+ ; gcrRegs +[edi]
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ cmove edi, gword ptr [D1FFAB1EH] ; static handle
+ jmp SHORT G_M38045_IG06
+ ;; size=25 bbWeight=0.40 PerfScore 4.90
+G_M38045_IG16: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ; gcrRegs -[ecx edi]
pop esi
pop edi
pop ebp
ret
- ;; size=5 bbWeight=0.20 PerfScore 0.60
-G_M38045_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov ebx, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[ebx]
- jmp SHORT G_M38045_IG11
+ ;; size=4 bbWeight=0.20 PerfScore 0.50
+G_M38045_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edi, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[edi]
+ jmp SHORT G_M38045_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 6, PerfScore 50.55, instruction count 70, allocated bytes for code 192 (MethodHash=43f56b62) for method System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 185, prolog size 5, PerfScore 47.33, instruction count 65, allocated bytes for code 185 (MethodHash=43f56b62) for method System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================
-22 (-3.25%) : 545024.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)
@@ -86,7 +86,7 @@ G_M39096_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [<unknown method>]
mov eax, dword ptr [ebp+0x10]
cmp eax, 1
- jle G_M39096_IG13
+ jle G_M39096_IG24
;; size=53 bbWeight=1 PerfScore 17.00
G_M39096_IG03: ; bbWeight=1.49, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x14], eax
@@ -96,7 +96,7 @@ G_M39096_IG03: ; bbWeight=1.49, gcrefRegs=00000040 {esi}, byrefRegs=00000
G_M39096_IG04: ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ebp-0x14]
cmp eax, 2
- je G_M39096_IG22
+ je G_M39096_IG14
;; size=12 bbWeight=0.99 PerfScore 2.24
G_M39096_IG05: ; bbWeight=0.82, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x14], eax
@@ -108,14 +108,14 @@ G_M39096_IG06: ; bbWeight=0.75, gcrefRegs=00000040 {esi}, byrefRegs=00000
mov ecx, dword ptr [ecx]
mov ecx, dword ptr [ecx+0x10]
test ecx, ecx
- je G_M39096_IG21
+ je G_M39096_IG16
;; size=16 bbWeight=0.75 PerfScore 5.41
G_M39096_IG07: ; bbWeight=0.60, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- jmp G_M39096_IG24
+ jmp G_M39096_IG17
;; size=5 bbWeight=0.60 PerfScore 1.19
G_M39096_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
test edi, edi
- je G_M39096_IG27
+ je G_M39096_IG28
;; size=8 bbWeight=0.50 PerfScore 0.63
G_M39096_IG09: ; bbWeight=1.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
dec edi
@@ -177,106 +177,23 @@ G_M39096_IG12: ; bbWeight=1.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
cmp eax, 1
jg G_M39096_IG03
;; size=98 bbWeight=1.50 PerfScore 48.77
-G_M39096_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M39096_IG13: ; bbWeight=0.01, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
- lea esp, [ebp-0x0C]
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 12
- ;; size=10 bbWeight=1 PerfScore 4.50
-G_M39096_IG14: ; bbWeight=12.34, gcVars=00000020 {V20}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref
+ jmp G_M39096_IG24
+ ;; size=5 bbWeight=0.01 PerfScore 0.01
+G_M39096_IG14: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
- ; byrRegs +[ebx]
- ; GC ptr vars +{V05 V20}
- mov ecx, dword ptr [ebp-0x40]
- lea edx, [ecx+0x01]
- cmp edx, edi
- jae G_M39096_IG30
- lea edx, bword ptr [ebx+4*ecx+0x04]
- ; byrRegs +[edx]
- mov eax, gword ptr [ebx+4*ecx]
- ; gcrRegs +[eax]
- call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
- ; gcrRegs -[eax]
- ; byrRegs -[edx]
- dec ecx
- mov edx, gword ptr [ebp-0x4C]
- ; gcrRegs +[edx]
- ;; size=30 bbWeight=12.34 PerfScore 98.72
-G_M39096_IG15: ; bbWeight=18.86, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, byref, isz
- test ecx, ecx
- jl SHORT G_M39096_IG20
- ;; size=4 bbWeight=18.86 PerfScore 23.57
-G_M39096_IG16: ; bbWeight=17.94, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, byref, isz
- cmp ecx, edi
- jae G_M39096_IG30
- mov dword ptr [ebp-0x40], ecx
- push gword ptr [ebx+4*ecx]
- ; gcr arg push 0
- mov ecx, gword ptr [esi+0x04]
- ; gcrRegs +[ecx]
- call [esi+0x0C]System.Comparison`1[System.__Canon]:Invoke(System.__Canon,System.__Canon):int:this
- ; gcrRegs -[ecx edx]
- ; gcr arg pop 1
- test eax, eax
- jl SHORT G_M39096_IG14
- ;; size=24 bbWeight=17.94 PerfScore 188.34
-G_M39096_IG17: ; bbWeight=8.97, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
- mov ecx, dword ptr [ebp-0x40]
- ;; size=3 bbWeight=8.97 PerfScore 8.97
-G_M39096_IG18: ; bbWeight=6.52, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
- lea edx, [ecx+0x01]
- cmp edx, edi
- jae G_M39096_IG30
- lea edx, bword ptr [ebx+4*ecx+0x04]
- ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x4C]
- ; gcrRegs +[ecx]
- ; GC ptr vars -{V05 V20}
- call CORINFO_HELP_CHECKED_ASSIGN_REF_ECX
- ; gcrRegs -[ecx]
- ; byrRegs -[edx]
- mov eax, dword ptr [ebp-0x3C]
- inc eax
- mov ecx, dword ptr [ebp-0x48]
- cmp eax, ecx
- jl G_M39096_IG25
- ;; size=38 bbWeight=6.52 PerfScore 53.78
-G_M39096_IG19: ; bbWeight=0.67, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[esi]
- ; byrRegs -[ebx]
- jmp SHORT G_M39096_IG13
- ;; size=2 bbWeight=0.67 PerfScore 1.34
-G_M39096_IG20: ; bbWeight=9.43, gcVars=00000020 {V20}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, gcvars, byref, isz
- ; gcrRegs +[edx esi]
- ; byrRegs +[ebx]
- ; GC ptr vars +{V05 V20}
- jmp SHORT G_M39096_IG18
- ;; size=2 bbWeight=9.43 PerfScore 18.86
-G_M39096_IG21: ; bbWeight=0.15, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edx]
- ; byrRegs -[ebx]
- ; GC ptr vars -{V05 V20}
- mov ecx, ebx
- mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov ecx, eax
- jmp SHORT G_M39096_IG24
- ;; size=16 bbWeight=0.15 PerfScore 0.56
-G_M39096_IG22: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ebx, bword ptr [ebp+0x0C]
; byrRegs +[ebx]
mov edi, dword ptr [ebp+0x10]
mov ecx, 1
call [<unknown method>]
test edi, edi
- je G_M39096_IG30
+ je G_M39096_IG27
mov edx, gword ptr [ebx]
; gcrRegs +[edx]
cmp edi, 1
- jbe G_M39096_IG30
+ jbe G_M39096_IG27
push gword ptr [ebx+0x04]
; gcr arg push 0
mov ecx, gword ptr [esi+0x04]
@@ -285,9 +202,9 @@ G_M39096_IG22: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs -[ecx edx esi]
; gcr arg pop 1
test eax, eax
- jle G_M39096_IG13
+ jle G_M39096_IG24
;; size=53 bbWeight=0.17 PerfScore 3.05
-G_M39096_IG23: ; bbWeight=0.09, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
+G_M39096_IG15: ; bbWeight=0.09, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
mov ecx, gword ptr [ebx]
; gcrRegs +[ecx]
mov eax, gword ptr [ebx+0x04]
@@ -302,10 +219,16 @@ G_M39096_IG23: ; bbWeight=0.09, gcrefRegs=00000000 {}, byrefRegs=00000008
call CORINFO_HELP_CHECKED_ASSIGN_REF_ECX
; gcrRegs -[ecx]
; byrRegs -[edx ebx]
- jmp G_M39096_IG13
+ jmp G_M39096_IG24
;; size=25 bbWeight=0.09 PerfScore 0.80
-G_M39096_IG24: ; bbWeight=0.75, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M39096_IG16: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi]
+ mov ecx, ebx
+ mov edx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov ecx, eax
+ ;; size=14 bbWeight=0.15 PerfScore 0.26
+G_M39096_IG17: ; bbWeight=0.75, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
push 0
push dword ptr [ebp-0x14]
mov edi, ecx
@@ -320,21 +243,93 @@ G_M39096_IG24: ; bbWeight=0.75, gcrefRegs=00000040 {esi}, byrefRegs=00000
lea ecx, [edi-0x01]
mov dword ptr [ebp-0x48], ecx
test ecx, ecx
- jle G_M39096_IG13
- ;; size=42 bbWeight=0.75 PerfScore 9.15
-G_M39096_IG25: ; bbWeight=6.52, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+ jle SHORT G_M39096_IG24
+ ;; size=38 bbWeight=0.75 PerfScore 9.15
+G_M39096_IG18: ; bbWeight=6.52, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
mov edx, gword ptr [ebx+4*eax+0x04]
; gcrRegs +[edx]
mov gword ptr [ebp-0x4C], edx
; GC ptr vars +{V20}
mov dword ptr [ebp-0x3C], eax
mov ecx, eax
- jmp G_M39096_IG15
- ;; size=17 bbWeight=6.52 PerfScore 40.74
-G_M39096_IG26: ; bbWeight=0.08, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M39096_IG20
+ ;; size=14 bbWeight=6.52 PerfScore 40.74
+G_M39096_IG19: ; bbWeight=12.34, gcVars=00000020 {V20}, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, gcvars, byref
+ ; gcrRegs -[edx]
+ mov ecx, dword ptr [ebp-0x40]
+ lea edx, [ecx+0x01]
+ cmp edx, edi
+ jae G_M39096_IG27
+ lea edx, bword ptr [ebx+4*ecx+0x04]
+ ; byrRegs +[edx]
+ mov eax, gword ptr [ebx+4*ecx]
+ ; gcrRegs +[eax]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
+ ; gcrRegs -[eax]
+ ; byrRegs -[edx]
+ dec ecx
+ mov edx, gword ptr [ebp-0x4C]
+ ; gcrRegs +[edx]
+ ;; size=30 bbWeight=12.34 PerfScore 98.72
+G_M39096_IG20: ; bbWeight=18.86, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, byref, isz
+ test ecx, ecx
+ jl SHORT G_M39096_IG25
+ ;; size=4 bbWeight=18.86 PerfScore 23.57
+G_M39096_IG21: ; bbWeight=17.94, gcrefRegs=00000044 {edx esi}, byrefRegs=00000008 {ebx}, byref, isz
+ cmp ecx, edi
+ jae SHORT G_M39096_IG27
+ mov dword ptr [ebp-0x40], ecx
+ push gword ptr [ebx+4*ecx]
+ ; gcr arg push 0
+ mov ecx, gword ptr [esi+0x04]
+ ; gcrRegs +[ecx]
+ call [esi+0x0C]System.Comparison`1[System.__Canon]:Invoke(System.__Canon,System.__Canon):int:this
+ ; gcrRegs -[ecx edx]
+ ; gcr arg pop 1
+ test eax, eax
+ jl SHORT G_M39096_IG19
+ ;; size=20 bbWeight=17.94 PerfScore 188.34
+G_M39096_IG22: ; bbWeight=8.97, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+ mov ecx, dword ptr [ebp-0x40]
+ ;; size=3 bbWeight=8.97 PerfScore 8.97
+G_M39096_IG23: ; bbWeight=6.52, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref, isz
+ lea edx, [ecx+0x01]
+ cmp edx, edi
+ jae SHORT G_M39096_IG27
+ lea edx, bword ptr [ebx+4*ecx+0x04]
+ ; byrRegs +[edx]
+ mov ecx, gword ptr [ebp-0x4C]
+ ; gcrRegs +[ecx]
+ ; GC ptr vars -{V20}
+ call CORINFO_HELP_CHECKED_ASSIGN_REF_ECX
+ ; gcrRegs -[ecx]
...
+21 (+9.09%) : 337482.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -17,7 +17,7 @@
; V05 tmp1 [V05,T03] ( 6, 3 ) ref -> edi
; V06 tmp2 [V06,T06] ( 3, 0 ) int -> edx "spilling helperCall"
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp4 [V08,T04] ( 6, 2 ) ref -> ebx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V08 tmp4 [V08,T04] ( 5, 2 ) ref -> ebx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
; V09 tmp5 [V09,T02] ( 4, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V10 rat0 [V10,T07] ( 3, 0 ) int -> ecx "Spilling to split statement for tree"
; V11 rat1 [V11,T08] ( 3, 0 ) int -> edx "runtime lookup"
@@ -36,16 +36,16 @@ G_M20379_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, ecx
; gcrRegs +[esi]
;; size=8 bbWeight=1 PerfScore 4.50
-G_M20379_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M20379_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
test edx, edx
- jl SHORT G_M20379_IG08
+ jl G_M20379_IG12
test edx, edx
- jg SHORT G_M20379_IG09
+ jg G_M20379_IG13
mov edi, gword ptr [ebp+0x08]
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M20379_IG10
- ;; size=15 bbWeight=1 PerfScore 4.75
+ je G_M20379_IG14
+ ;; size=27 bbWeight=1 PerfScore 4.75
G_M20379_IG03: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
lea edx, bword ptr [esi+0x0C]
; byrRegs +[edx]
@@ -56,33 +56,22 @@ G_M20379_IG03: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M20379_IG07
+ jne SHORT G_M20379_IG06
mov ecx, gword ptr [esi+0x0C]
; gcrRegs +[ecx]
cmp ecx, gword ptr [D1FFAB1EH] ; static handle
- jne SHORT G_M20379_IG05
+ jne SHORT G_M20379_IG07
;; size=34 bbWeight=1 PerfScore 17.50
-G_M20379_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M20379_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
mov ebx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ebx]
- jmp SHORT G_M20379_IG06
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M20379_IG05: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx] +[ecx]
- cmp ecx, gword ptr [D1FFAB1EH] ; static handle
- je SHORT G_M20379_IG13
- xor ebx, ebx
- ; gcrRegs +[ebx]
- cmp ecx, gword ptr [D1FFAB1EH] ; static handle
- cmove ebx, gword ptr [D1FFAB1EH] ; static handle
- ;; size=23 bbWeight=0.50 PerfScore 5.12
-G_M20379_IG06: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M20379_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
test ebx, ebx
- jne SHORT G_M20379_IG14
+ jne SHORT G_M20379_IG08
;; size=4 bbWeight=1 PerfScore 1.25
-G_M20379_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M20379_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[ebx]
pop ebx
pop esi
@@ -90,66 +79,32 @@ G_M20379_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
pop ebp
ret 4
;; size=7 bbWeight=1 PerfScore 4.00
-G_M20379_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- mov ecx, 22
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M20379_IG09: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, esi
+G_M20379_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx]
- call [System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:Initialize(int):int:this]
- ; gcrRegs -[ecx]
- mov edi, gword ptr [ebp+0x08]
- ; gcrRegs +[edi]
- test edi, edi
- jne SHORT G_M20379_IG03
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M20379_IG10: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x28]
- test edx, edx
- je SHORT G_M20379_IG11
- jmp SHORT G_M20379_IG12
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M20379_IG11: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov edx, eax
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M20379_IG12: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov ecx, edx
- call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
- ; gcrRegs +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- jmp G_M20379_IG03
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M20379_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edi]
- mov ebx, gword ptr [D1FFAB1EH] ; static handle
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ je G_M20379_IG17
+ xor ebx, ebx
; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M20379_IG07
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M20379_IG14: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ cmove ebx, gword ptr [D1FFAB1EH] ; static handle
+ jmp SHORT G_M20379_IG05
+ ;; size=29 bbWeight=0.50 PerfScore 6.12
+G_M20379_IG08: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx]
mov ecx, dword ptr [esi]
mov edx, dword ptr [ecx+0x24]
mov edx, dword ptr [edx]
mov edx, dword ptr [edx+0x24]
test edx, edx
- je SHORT G_M20379_IG15
- jmp SHORT G_M20379_IG16
+ je SHORT G_M20379_IG09
+ jmp SHORT G_M20379_IG10
;; size=16 bbWeight=0 PerfScore 0.00
-G_M20379_IG15: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M20379_IG09: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov edx, eax
;; size=12 bbWeight=0 PerfScore 0.00
-G_M20379_IG16: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M20379_IG10: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov ecx, edx
mov edx, ebx
; gcrRegs +[edx]
@@ -161,14 +116,58 @@ G_M20379_IG16: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcrRegs -[eax]
; byrRegs -[edx]
;; size=17 bbWeight=0 PerfScore 0.00
-G_M20379_IG17: ; bbWeight=0, epilog, nogc, extend
+G_M20379_IG11: ; bbWeight=0, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 4
;; size=7 bbWeight=0 PerfScore 0.00
+G_M20379_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ mov ecx, 22
+ call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M20379_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ call [System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:Initialize(int):int:this]
+ ; gcrRegs -[ecx]
+ mov edi, gword ptr [ebp+0x08]
+ ; gcrRegs +[edi]
+ test edi, edi
+ jne G_M20379_IG03
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M20379_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x28]
+ test edx, edx
+ je SHORT G_M20379_IG15
+ jmp SHORT G_M20379_IG16
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M20379_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov edx, eax
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M20379_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ecx, edx
+ call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
+ ; gcrRegs +[eax]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ jmp G_M20379_IG03
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M20379_IG17: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax edi]
+ mov ebx, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[ebx]
+ jmp G_M20379_IG05
+ ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 231, prolog size 6, PerfScore 39.12, instruction count 82, allocated bytes for code 231 (MethodHash=fbe3b064) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 252, prolog size 6, PerfScore 39.12, instruction count 81, allocated bytes for code 252 (MethodHash=fbe3b064) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================
+25 (+10.82%) : 70763.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -17,7 +17,7 @@
; V05 tmp1 [V05,T03] ( 6, 3 ) ref -> edi
; V06 tmp2 [V06,T06] ( 3, 0 ) int -> edx "spilling helperCall"
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp4 [V08,T04] ( 6, 2 ) ref -> ebx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V08 tmp4 [V08,T04] ( 5, 2 ) ref -> ebx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
; V09 tmp5 [V09,T02] ( 4, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V10 rat0 [V10,T07] ( 3, 0 ) int -> ecx "Spilling to split statement for tree"
; V11 rat1 [V11,T08] ( 3, 0 ) int -> edx "runtime lookup"
@@ -36,16 +36,16 @@ G_M20379_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, ecx
; gcrRegs +[esi]
;; size=8 bbWeight=1 PerfScore 4.50
-G_M20379_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M20379_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
test edx, edx
- jl SHORT G_M20379_IG08
+ jl G_M20379_IG11
test edx, edx
- jg SHORT G_M20379_IG09
+ jg G_M20379_IG12
mov edi, gword ptr [ebp+0x08]
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M20379_IG10
- ;; size=15 bbWeight=1 PerfScore 4.75
+ je G_M20379_IG13
+ ;; size=27 bbWeight=1 PerfScore 4.75
G_M20379_IG03: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
lea edx, bword ptr [esi+0x0C]
; byrRegs +[edx]
@@ -56,33 +56,22 @@ G_M20379_IG03: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M20379_IG07
+ jne SHORT G_M20379_IG06
mov ecx, gword ptr [esi+0x0C]
; gcrRegs +[ecx]
cmp ecx, gword ptr [D1FFAB1EH] ; static handle
- jne SHORT G_M20379_IG05
+ jne SHORT G_M20379_IG07
;; size=34 bbWeight=1 PerfScore 17.50
-G_M20379_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M20379_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
mov ebx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ebx]
- jmp SHORT G_M20379_IG06
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M20379_IG05: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx] +[ecx]
- cmp ecx, gword ptr [D1FFAB1EH] ; static handle
- je SHORT G_M20379_IG13
- xor ebx, ebx
- ; gcrRegs +[ebx]
- cmp ecx, gword ptr [D1FFAB1EH] ; static handle
- cmove ebx, gword ptr [D1FFAB1EH] ; static handle
- ;; size=23 bbWeight=0.50 PerfScore 5.12
-G_M20379_IG06: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M20379_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
test ebx, ebx
- jne SHORT G_M20379_IG14
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M20379_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ jne G_M20379_IG16
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M20379_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[ebx]
pop ebx
pop esi
@@ -90,66 +79,23 @@ G_M20379_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
pop ebp
ret 4
;; size=7 bbWeight=1 PerfScore 4.00
-G_M20379_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- mov ecx, 22
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M20379_IG09: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, esi
+G_M20379_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx]
- call [System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:Initialize(int):int:this]
- ; gcrRegs -[ecx]
- mov edi, gword ptr [ebp+0x08]
- ; gcrRegs +[edi]
- test edi, edi
- jne SHORT G_M20379_IG03
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M20379_IG10: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x28]
- test edx, edx
- je SHORT G_M20379_IG11
- jmp SHORT G_M20379_IG12
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M20379_IG11: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov edx, eax
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M20379_IG12: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov ecx, edx
- call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
- ; gcrRegs +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- jmp G_M20379_IG03
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M20379_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edi]
- mov ebx, gword ptr [D1FFAB1EH] ; static handle
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ je G_M20379_IG17
+ xor ebx, ebx
; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M20379_IG07
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M20379_IG14: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x24]
- test edx, edx
- je SHORT G_M20379_IG15
- jmp SHORT G_M20379_IG16
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M20379_IG15: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ cmove ebx, gword ptr [D1FFAB1EH] ; static handle
+ jmp SHORT G_M20379_IG05
+ ;; size=29 bbWeight=0.50 PerfScore 6.12
+G_M20379_IG08: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov edx, eax
;; size=12 bbWeight=0 PerfScore 0.00
-G_M20379_IG16: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M20379_IG09: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov ecx, edx
mov edx, ebx
; gcrRegs +[edx]
@@ -161,14 +107,68 @@ G_M20379_IG16: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcrRegs -[eax]
; byrRegs -[edx]
;; size=17 bbWeight=0 PerfScore 0.00
-G_M20379_IG17: ; bbWeight=0, epilog, nogc, extend
+G_M20379_IG10: ; bbWeight=0, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 4
;; size=7 bbWeight=0 PerfScore 0.00
+G_M20379_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ mov ecx, 22
+ call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M20379_IG12: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ call [System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:Initialize(int):int:this]
+ ; gcrRegs -[ecx]
+ mov edi, gword ptr [ebp+0x08]
+ ; gcrRegs +[edi]
+ test edi, edi
+ jne G_M20379_IG03
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M20379_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x28]
+ test edx, edx
+ je SHORT G_M20379_IG14
+ jmp SHORT G_M20379_IG15
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M20379_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov edx, eax
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M20379_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ecx, edx
+ call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
+ ; gcrRegs +[eax]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ jmp G_M20379_IG03
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M20379_IG16: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax edi] +[ebx]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x24]
+ test edx, edx
+ je SHORT G_M20379_IG08
+ jmp SHORT G_M20379_IG09
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M20379_IG17: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx]
+ mov ebx, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[ebx]
+ jmp G_M20379_IG05
+ ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 231, prolog size 6, PerfScore 39.12, instruction count 82, allocated bytes for code 231 (MethodHash=fbe3b064) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 256, prolog size 6, PerfScore 39.12, instruction count 81, allocated bytes for code 256 (MethodHash=fbe3b064) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================
+25 (+10.82%) : 42084.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer
1[System.__Canon]):this (Tier1)
@@ -17,7 +17,7 @@
; V05 tmp1 [V05,T03] ( 6, 3 ) ref -> edi
; V06 tmp2 [V06,T06] ( 3, 0 ) int -> edx "spilling helperCall"
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V08 tmp4 [V08,T04] ( 6, 2 ) ref -> ebx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V08 tmp4 [V08,T04] ( 5, 2 ) ref -> ebx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
; V09 tmp5 [V09,T02] ( 4, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V10 rat0 [V10,T07] ( 3, 0 ) int -> ecx "Spilling to split statement for tree"
; V11 rat1 [V11,T08] ( 3, 0 ) int -> edx "runtime lookup"
@@ -36,16 +36,16 @@ G_M20379_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov esi, ecx
; gcrRegs +[esi]
;; size=8 bbWeight=1 PerfScore 4.50
-G_M20379_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M20379_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
test edx, edx
- jl SHORT G_M20379_IG08
+ jl G_M20379_IG11
test edx, edx
- jg SHORT G_M20379_IG09
+ jg G_M20379_IG12
mov edi, gword ptr [ebp+0x08]
; gcrRegs +[edi]
test edi, edi
- je SHORT G_M20379_IG10
- ;; size=15 bbWeight=1 PerfScore 4.75
+ je G_M20379_IG13
+ ;; size=27 bbWeight=1 PerfScore 4.75
G_M20379_IG03: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
lea edx, bword ptr [esi+0x0C]
; byrRegs +[edx]
@@ -56,33 +56,22 @@ G_M20379_IG03: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov ecx, dword ptr [ecx+0x24]
mov ecx, dword ptr [ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M20379_IG07
+ jne SHORT G_M20379_IG06
mov ecx, gword ptr [esi+0x0C]
; gcrRegs +[ecx]
cmp ecx, gword ptr [D1FFAB1EH] ; static handle
- jne SHORT G_M20379_IG05
+ jne SHORT G_M20379_IG07
;; size=34 bbWeight=1 PerfScore 17.50
-G_M20379_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M20379_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
mov ebx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ebx]
- jmp SHORT G_M20379_IG06
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M20379_IG05: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx] +[ecx]
- cmp ecx, gword ptr [D1FFAB1EH] ; static handle
- je SHORT G_M20379_IG13
- xor ebx, ebx
- ; gcrRegs +[ebx]
- cmp ecx, gword ptr [D1FFAB1EH] ; static handle
- cmove ebx, gword ptr [D1FFAB1EH] ; static handle
- ;; size=23 bbWeight=0.50 PerfScore 5.12
-G_M20379_IG06: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M20379_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
test ebx, ebx
- jne SHORT G_M20379_IG14
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M20379_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
+ jne G_M20379_IG16
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M20379_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[ebx]
pop ebx
pop esi
@@ -90,66 +79,23 @@ G_M20379_IG07: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
pop ebp
ret 4
;; size=7 bbWeight=1 PerfScore 4.00
-G_M20379_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- mov ecx, 22
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M20379_IG09: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, esi
+G_M20379_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx]
- call [System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:Initialize(int):int:this]
- ; gcrRegs -[ecx]
- mov edi, gword ptr [ebp+0x08]
- ; gcrRegs +[edi]
- test edi, edi
- jne SHORT G_M20379_IG03
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M20379_IG10: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edi]
- mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x1C]
- test edx, edx
- je SHORT G_M20379_IG11
- jmp SHORT G_M20379_IG12
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M20379_IG11: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- mov edx, eax
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M20379_IG12: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov ecx, edx
- call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
- ; gcrRegs +[eax]
- mov edi, eax
- ; gcrRegs +[edi]
- jmp G_M20379_IG03
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M20379_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edi]
- mov ebx, gword ptr [D1FFAB1EH] ; static handle
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ je G_M20379_IG17
+ xor ebx, ebx
; gcrRegs +[ebx]
- test ebx, ebx
- je SHORT G_M20379_IG07
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M20379_IG14: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [esi]
- mov edx, dword ptr [ecx+0x24]
- mov edx, dword ptr [edx]
- mov edx, dword ptr [edx+0x18]
- test edx, edx
- je SHORT G_M20379_IG15
- jmp SHORT G_M20379_IG16
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M20379_IG15: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ cmp ecx, gword ptr [D1FFAB1EH] ; static handle
+ cmove ebx, gword ptr [D1FFAB1EH] ; static handle
+ jmp SHORT G_M20379_IG05
+ ;; size=29 bbWeight=0.50 PerfScore 6.12
+G_M20379_IG08: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov edx, eax
;; size=12 bbWeight=0 PerfScore 0.00
-G_M20379_IG16: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M20379_IG09: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov ecx, edx
mov edx, ebx
; gcrRegs +[edx]
@@ -161,14 +107,68 @@ G_M20379_IG16: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcrRegs -[eax]
; byrRegs -[edx]
;; size=17 bbWeight=0 PerfScore 0.00
-G_M20379_IG17: ; bbWeight=0, epilog, nogc, extend
+G_M20379_IG10: ; bbWeight=0, epilog, nogc, extend
pop ebx
pop esi
pop edi
pop ebp
ret 4
;; size=7 bbWeight=0 PerfScore 0.00
+G_M20379_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ mov ecx, 22
+ call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M20379_IG12: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ call [System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:Initialize(int):int:this]
+ ; gcrRegs -[ecx]
+ mov edi, gword ptr [ebp+0x08]
+ ; gcrRegs +[edi]
+ test edi, edi
+ jne G_M20379_IG03
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M20379_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edi]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x1C]
+ test edx, edx
+ je SHORT G_M20379_IG14
+ jmp SHORT G_M20379_IG15
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M20379_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ mov edx, eax
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M20379_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov ecx, edx
+ call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]]
+ ; gcrRegs +[eax]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ jmp G_M20379_IG03
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M20379_IG16: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax edi] +[ebx]
+ mov ecx, dword ptr [esi]
+ mov edx, dword ptr [ecx+0x24]
+ mov edx, dword ptr [edx]
+ mov edx, dword ptr [edx+0x18]
+ test edx, edx
+ je SHORT G_M20379_IG08
+ jmp SHORT G_M20379_IG09
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M20379_IG17: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx]
+ mov ebx, gword ptr [D1FFAB1EH] ; static handle
+ ; gcrRegs +[ebx]
+ jmp G_M20379_IG05
+ ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 231, prolog size 6, PerfScore 39.12, instruction count 82, allocated bytes for code 231 (MethodHash=fbe3b064) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 256, prolog size 6, PerfScore 39.12, instruction count 81, allocated bytes for code 256 (MethodHash=fbe3b064) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):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 |
57 |
2 |
14 |
41 |
-18 |
+84 |
benchmarks.run_tiered.windows.x86.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.windows.x86.checked.mch |
18 |
7 |
3 |
8 |
-135 |
+20 |
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 |
231 |
44 |
52 |
135 |
-317 |
+513 |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.windows.x86.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
306 |
53 |
69 |
184 |
-470 |
+617 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.x86.checked.mch |
24,492 |
4 |
24,488 |
1 (0.00%) |
1 (0.00%) |
benchmarks.run_pgo.windows.x86.checked.mch |
117,787 |
41,904 |
75,883 |
2 (0.00%) |
2 (0.00%) |
benchmarks.run_tiered.windows.x86.checked.mch |
47,882 |
28,747 |
19,135 |
1 (0.00%) |
1 (0.00%) |
coreclr_tests.run.windows.x86.checked.mch |
574,646 |
319,847 |
254,799 |
21 (0.00%) |
22 (0.00%) |
libraries.crossgen2.windows.x86.checked.mch |
242,615 |
15 |
242,600 |
4 (0.00%) |
4 (0.00%) |
libraries.pmi.windows.x86.checked.mch |
305,766 |
6 |
305,760 |
7 (0.00%) |
7 (0.00%) |
libraries_tests.run.windows.x86.Release.mch |
627,816 |
427,222 |
200,594 |
5 (0.00%) |
6 (0.00%) |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
316,432 |
21,910 |
294,522 |
3 (0.00%) |
3 (0.00%) |
realworld.run.windows.x86.checked.mch |
35,984 |
3 |
35,981 |
1 (0.00%) |
1 (0.00%) |
|
2,293,420 |
839,658 |
1,453,762 |
45 (0.00%) |
47 (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: 44949264 (overridden on cmd)
Total bytes of diff: 44949330 (overridden on cmd)
Total bytes of delta: 66 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
14 : 114739.dasm (1.89 % of base)
13 : 62429.dasm (1.63 % of base)
7 : 33824.dasm (0.87 % of base)
6 : 89913.dasm (2.54 % of base)
5 : 117268.dasm (1.89 % of base)
5 : 112910.dasm (1.89 % of base)
5 : 23029.dasm (0.69 % of base)
5 : 23423.dasm (0.69 % of base)
5 : 52917.dasm (0.69 % of base)
5 : 63577.dasm (0.69 % of base)
5 : 98389.dasm (0.69 % of base)
5 : 115033.dasm (0.69 % of base)
2 : 69542.dasm (0.32 % of base)
2 : 101041.dasm (1.55 % of base)
Top file improvements (bytes):
-14 : 108619.dasm (-1.83 % of base)
-4 : 47111.dasm (-1.72 % of base)
16 total files with Code Size differences (2 improved, 14 regressed), 29 unchanged.
Top method regressions (bytes):
14 (1.89 % of base) : 114739.dasm - Sigil.Impl.BufferedILGenerator`1+<>c__DisplayClass19_0[System.__Canon]:<Emit>b__1(System.Reflection.Emit.ILGenerator,ubyte,System.Text.StringBuilder):this (Tier1)
13 (1.63 % of base) : 62429.dasm - Sigil.Impl.BufferedILGenerator`1+<>c__DisplayClass19_0[System.__Canon]:<Emit>b__1(System.Reflection.Emit.ILGenerator,ubyte,System.Text.StringBuilder):this (Tier1)
7 (0.87 % of base) : 33824.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
6 (2.54 % of base) : 89913.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
5 (1.89 % of base) : 117268.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
5 (1.89 % of base) : 112910.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
5 (0.69 % of base) : 23029.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
5 (0.69 % of base) : 23423.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
5 (0.69 % of base) : 52917.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
5 (0.69 % of base) : 63577.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
5 (0.69 % of base) : 98389.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
5 (0.69 % of base) : 115033.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
2 (1.55 % of base) : 101041.dasm - BenchmarksGame.KNucleotide:SortByFrequencyAndCode(System.Collections.Generic.KeyValuePair`2[BenchmarksGame.ByteString,BenchmarksGame.KNucleotide+Count],System.Collections.Generic.KeyValuePair`2[BenchmarksGame.ByteString,BenchmarksGame.KNucleotide+Count]):int:this (Tier1)
2 (0.32 % of base) : 69542.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
Top method improvements (bytes):
-14 (-1.83 % of base) : 108619.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
-4 (-1.72 % of base) : 47111.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
Top method regressions (percentages):
6 (2.54 % of base) : 89913.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
5 (1.89 % of base) : 117268.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
5 (1.89 % of base) : 112910.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
14 (1.89 % of base) : 114739.dasm - Sigil.Impl.BufferedILGenerator`1+<>c__DisplayClass19_0[System.__Canon]:<Emit>b__1(System.Reflection.Emit.ILGenerator,ubyte,System.Text.StringBuilder):this (Tier1)
13 (1.63 % of base) : 62429.dasm - Sigil.Impl.BufferedILGenerator`1+<>c__DisplayClass19_0[System.__Canon]:<Emit>b__1(System.Reflection.Emit.ILGenerator,ubyte,System.Text.StringBuilder):this (Tier1)
2 (1.55 % of base) : 101041.dasm - BenchmarksGame.KNucleotide:SortByFrequencyAndCode(System.Collections.Generic.KeyValuePair`2[BenchmarksGame.ByteString,BenchmarksGame.KNucleotide+Count],System.Collections.Generic.KeyValuePair`2[BenchmarksGame.ByteString,BenchmarksGame.KNucleotide+Count]):int:this (Tier1)
7 (0.87 % of base) : 33824.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
5 (0.69 % of base) : 23029.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
5 (0.69 % of base) : 23423.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
5 (0.69 % of base) : 52917.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
5 (0.69 % of base) : 63577.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
5 (0.69 % of base) : 98389.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
5 (0.69 % of base) : 115033.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
2 (0.32 % of base) : 69542.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
Top method improvements (percentages):
-14 (-1.83 % of base) : 108619.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
-4 (-1.72 % of base) : 47111.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
coreclr_tests.run.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: 309385112 (overridden on cmd)
Total bytes of diff: 309384997 (overridden on cmd)
Total bytes of delta: -115 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
12 : 565887.dasm (1.65 % of base)
4 : 494069.dasm (1.78 % of base)
4 : 461737.dasm (1.34 % of base)
Top file improvements (bytes):
-87 : 236493.dasm (-32.95 % of base)
-14 : 306514.dasm (-1.83 % of base)
-11 : 565496.dasm (-5.73 % of base)
-7 : 565226.dasm (-0.97 % of base)
-7 : 568128.dasm (-0.98 % of base)
-7 : 571075.dasm (-0.98 % of base)
-2 : 236491.dasm (-1.61 % of base)
10 total files with Code Size differences (7 improved, 3 regressed), 8 unchanged.
Top method regressions (bytes):
12 (1.65 % of base) : 565887.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
4 (1.78 % of base) : 494069.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
4 (1.34 % of base) : 461737.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
Top method improvements (bytes):
-87 (-32.95 % of base) : 236493.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
-14 (-1.83 % of base) : 306514.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
-11 (-5.73 % of base) : 565496.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-7 (-0.97 % of base) : 565226.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-7 (-0.98 % of base) : 568128.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-7 (-0.98 % of base) : 571075.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-2 (-1.61 % of base) : 236491.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():int:this (FullOpts)
Top method regressions (percentages):
4 (1.78 % of base) : 494069.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
12 (1.65 % of base) : 565887.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
4 (1.34 % of base) : 461737.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
Top method improvements (percentages):
-87 (-32.95 % of base) : 236493.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
-11 (-5.73 % of base) : 565496.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-14 (-1.83 % of base) : 306514.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
-2 (-1.61 % of base) : 236491.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():int:this (FullOpts)
-7 (-0.98 % of base) : 568128.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-7 (-0.98 % of base) : 571075.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-7 (-0.97 % of base) : 565226.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
10 total methods with Code Size differences (7 improved, 3 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: 186668292 (overridden on cmd)
Total bytes of diff: 186668488 (overridden on cmd)
Total bytes of delta: 196 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
38 : 6098.dasm (4.79 % of base)
27 : 239511.dasm (2.00 % of base)
25 : 558029.dasm (4.67 % of base)
25 : 42084.dasm (10.82 % of base)
25 : 70763.dasm (10.82 % of base)
23 : 346084.dasm (4.41 % of base)
21 : 337482.dasm (9.09 % of base)
16 : 570638.dasm (5.32 % of base)
16 : 160787.dasm (5.32 % of base)
14 : 107931.dasm (2.65 % of base)
14 : 233930.dasm (2.65 % of base)
14 : 352206.dasm (2.65 % of base)
14 : 498261.dasm (2.65 % of base)
14 : 620311.dasm (2.62 % of base)
14 : 220428.dasm (2.65 % of base)
14 : 281413.dasm (2.65 % of base)
14 : 336422.dasm (2.62 % of base)
14 : 478789.dasm (2.65 % of base)
14 : 606403.dasm (2.65 % of base)
12 : 63460.dasm (3.99 % of base)
Top file improvements (bytes):
-22 : 545024.dasm (-3.25 % of base)
-18 : 615410.dasm (-2.67 % of base)
-17 : 322500.dasm (-2.75 % of base)
-13 : 29111.dasm (-1.54 % of base)
-13 : 68679.dasm (-1.54 % of base)
-12 : 60878.dasm (-1.43 % of base)
-11 : 373540.dasm (-1.41 % of base)
-10 : 158636.dasm (-1.48 % of base)
-9 : 323944.dasm (-0.72 % of base)
-9 : 107353.dasm (-0.65 % of base)
-9 : 236417.dasm (-1.61 % of base)
-8 : 160505.dasm (-1.01 % of base)
-8 : 452765.dasm (-1.19 % of base)
-8 : 542530.dasm (-1.16 % of base)
-7 : 149085.dasm (-0.92 % of base)
-7 : 100585.dasm (-3.65 % of base)
-7 : 110857.dasm (-3.65 % of base)
-7 : 237073.dasm (-0.92 % of base)
-7 : 39001.dasm (-1.11 % of base)
-7 : 349913.dasm (-0.98 % of base)
48 total files with Code Size differences (25 improved, 23 regressed), 20 unchanged.
Top method regressions (bytes):
38 (4.79 % of base) : 6098.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
27 (2.00 % of base) : 239511.dasm - System.Diagnostics.Tests.ProcessTests:TestArgumentParsing(System.String,System.String):this (Tier1)
25 (4.67 % of base) : 558029.dasm - Newtonsoft.Json.Utilities.MathUtils:IntLength(ulong):int (Tier1)
25 (10.82 % of base) : 42084.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
25 (10.82 % of base) : 70763.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
23 (4.41 % of base) : 346084.dasm - System.Runtime.CompilerServices.TaskAwaiter:ThrowForNonSuccess(System.Threading.Tasks.Task) (Tier1)
21 (9.09 % of base) : 337482.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
16 (5.32 % of base) : 570638.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
16 (5.32 % of base) : 160787.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
14 (2.65 % of base) : 107931.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 233930.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 352206.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 498261.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.62 % of base) : 620311.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 220428.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 281413.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.62 % of base) : 336422.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 478789.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 606403.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
12 (3.99 % of base) : 63460.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
Top method improvements (bytes):
-22 (-3.25 % of base) : 545024.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-18 (-2.67 % of base) : 615410.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-17 (-2.75 % of base) : 322500.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-13 (-1.54 % of base) : 29111.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-13 (-1.54 % of base) : 68679.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-12 (-1.43 % of base) : 60878.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-11 (-1.41 % of base) : 373540.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
-10 (-1.48 % of base) : 158636.dasm - System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:IntroSort(System.Span`1[uint],System.Span`1[System.__Canon],int) (Tier1)
-9 (-1.61 % of base) : 236417.dasm - Microsoft.Win32.RegistryKey:OpenSubKey(System.String,ubyte):Microsoft.Win32.RegistryKey:this (Tier1)
-9 (-0.65 % of base) : 107353.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-9 (-0.72 % of base) : 323944.dasm - System.SpanHelpers:LastIndexOfAny[System.__Canon](byref,System.__Canon,System.__Canon,int):int (Tier1)
-8 (-1.19 % of base) : 452765.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-8 (-1.16 % of base) : 542530.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-8 (-1.01 % of base) : 160505.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
-7 (-3.65 % of base) : 100585.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-7 (-3.65 % of base) : 110857.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-7 (-0.92 % of base) : 149085.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-7 (-0.92 % of base) : 237073.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-7 (-1.11 % of base) : 39001.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-7 (-0.98 % of base) : 349913.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
Top method regressions (percentages):
25 (10.82 % of base) : 42084.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
25 (10.82 % of base) : 70763.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
21 (9.09 % of base) : 337482.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
16 (5.32 % of base) : 570638.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
16 (5.32 % of base) : 160787.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
11 (4.95 % of base) : 341884.dasm - System.Threading.Overlapped:Pack(System.Threading.IOCompletionCallback,System.Object):uint:this (Tier1)
38 (4.79 % of base) : 6098.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
25 (4.67 % of base) : 558029.dasm - Newtonsoft.Json.Utilities.MathUtils:IntLength(ulong):int (Tier1)
23 (4.41 % of base) : 346084.dasm - System.Runtime.CompilerServices.TaskAwaiter:ThrowForNonSuccess(System.Threading.Tasks.Task) (Tier1)
12 (3.99 % of base) : 63460.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
8 (2.66 % of base) : 46678.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
8 (2.66 % of base) : 72243.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
14 (2.65 % of base) : 107931.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 233930.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 352206.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 498261.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 220428.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 281413.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 478789.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
14 (2.65 % of base) : 606403.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
Top method improvements (percentages):
-7 (-3.65 % of base) : 100585.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-7 (-3.65 % of base) : 110857.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
-22 (-3.25 % of base) : 545024.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-17 (-2.75 % of base) : 322500.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-18 (-2.67 % of base) : 615410.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-9 (-1.61 % of base) : 236417.dasm - Microsoft.Win32.RegistryKey:OpenSubKey(System.String,ubyte):Microsoft.Win32.RegistryKey:this (Tier1)
-13 (-1.54 % of base) : 29111.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-13 (-1.54 % of base) : 68679.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-10 (-1.48 % of base) : 158636.dasm - System.Collections.Generic.GenericArraySortHelper`2[uint,System.__Canon]:IntroSort(System.Span`1[uint],System.Span`1[System.__Canon],int) (Tier1)
-12 (-1.43 % of base) : 60878.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-5 (-1.42 % of base) : 616586.dasm - System.Threading.Tasks.ConcurrentExclusiveSchedulerPair+ConcurrentExclusiveTaskScheduler:.ctor(System.Threading.Tasks.ConcurrentExclusiveSchedulerPair,int,ubyte):this (Tier1)
-11 (-1.41 % of base) : 373540.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
-4 (-1.25 % of base) : 182724.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-4 (-1.25 % of base) : 337902.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-8 (-1.19 % of base) : 452765.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-5 (-1.16 % of base) : 591693.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
-8 (-1.16 % of base) : 542530.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-7 (-1.11 % of base) : 39001.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
-5 (-1.10 % of base) : 579793.dasm - Microsoft.CodeAnalysis.SwitchConstantValueHelper:CompareSwitchCaseLabelConstants(Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.ConstantValue):int (Tier1)
-8 (-1.01 % of base) : 160505.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)