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 (-312 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 -192
libraries_tests.run.linux.arm.Release.mch 243,880,786 -116

FullOpts (-312 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 -192
libraries_tests.run.linux.arm.Release.mch 122,911,654 -116

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

-4 (-1.80%) : 183471.dasm - System.Decimal:ToInt16(System.Decimal):short (Tier1)

@@ -68,23 +68,17 @@ G_M29542_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr r3, [sp+0x0C] orrs r0, r3 cmp r0, 0
- bne SHORT G_M29542_IG06
+ bne SHORT G_M29542_IG05
ldr r0, [sp+0x08] ldr r3, [sp] cmp r3, 0
- blt SHORT G_M29542_IG05
+ blt SHORT G_M29542_IG06
;; size=18 bbWeight=1 PerfScore 9.00 G_M29542_IG04: ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp r0, 0
- blt SHORT G_M29542_IG06 - b SHORT G_M29542_IG07 - ;; size=6 bbWeight=0.69 PerfScore 2.08 -G_M29542_IG05: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - rsbs r0, r0, 0 - cmp r0, 0 - ble SHORT G_M29542_IG07 - ;; size=6 bbWeight=0.31 PerfScore 0.92 -G_M29542_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bge SHORT G_M29542_IG07 + ;; size=4 bbWeight=0.69 PerfScore 1.38 +G_M29542_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -115,8 +109,12 @@ G_M29542_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blx r3 // CORINFO_HELP_THROW ; gcrRegs -[r0 r4] ; gcr arg pop 0
- bkpt - ;; size=62 bbWeight=0 PerfScore 0.00
+ ;; size=60 bbWeight=0 PerfScore 0.00 +G_M29542_IG06: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + rsbs r0, r0, 0 + cmp r0, 0 + bgt SHORT G_M29542_IG05 + ;; size=6 bbWeight=0.31 PerfScore 0.92
G_M29542_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz sxth r3, r0 cmp r0, r3 @@ -156,7 +154,7 @@ G_M29542_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 222, prolog size 16, PerfScore 46.00, instruction count 87, allocated bytes for code 222 (MethodHash=94b38c99) for method System.Decimal:ToInt16(System.Decimal):short (Tier1)
+; Total bytes of code 218, prolog size 16, PerfScore 45.31, instruction count 85, allocated bytes for code 218 (MethodHash=94b38c99) for method System.Decimal:ToInt16(System.Decimal):short (Tier1)
; ============================================================ Unwind Info: @@ -168,7 +166,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 93 (0x0005d) Actual length = 186 (0x0000ba)
+ Function Length : 91 (0x0005b) Actual length = 182 (0x0000b6)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-1.17%) : 176637.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)

@@ -46,48 +46,27 @@ G_M28334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] cmp r1, 2
- bhi SHORT G_M28334_IG08
+ bhi SHORT G_M28334_IG06
cmp r1, 1
- beq SHORT G_M28334_IG05
+ beq SHORT G_M28334_IG07
;; size=8 bbWeight=1 PerfScore 4.00 G_M28334_IG03: ; bbWeight=25, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz cmp r1, 2
- beq SHORT G_M28334_IG06
+ beq SHORT G_M28334_IG08
;; size=4 bbWeight=25 PerfScore 50.00 G_M28334_IG04: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ldr r3, [sp] ldr r1, [sp+0x04] b SHORT G_M28334_IG09 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M28334_IG05: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ldr r1, [sp] - ldr r3, [sp+0x04] - ldr r2, [r0+0x10] - asr lr, r2, 31 - adds r2, r1, r2 - adcs r1, r3, lr - bvs SHORT G_M28334_IG07 - mov r3, r2 - b SHORT G_M28334_IG09 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M28334_IG06: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp] - ldr r1, [sp+0x04] - ldr r2, [r0+0x0C] - asr lr, r2, 31 - adds r3, r3, r2 - adcs r1, r1, lr - bvs SHORT G_M28334_IG07 - b SHORT G_M28334_IG09 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_OVERFLOW ; gcr arg pop 0 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M28334_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -122,10 +101,29 @@ G_M28334_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blx r3 // CORINFO_HELP_THROW ; gcrRegs -[r0 r4] ; gcr arg pop 0
- bkpt - ;; size=72 bbWeight=0 PerfScore 0.00 -G_M28334_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ;; size=70 bbWeight=0 PerfScore 0.00 +G_M28334_IG07: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
+ ldr r1, [sp] + ldr r3, [sp+0x04] + ldr r2, [r0+0x10] + asr lr, r2, 31 + adds r2, r1, r2 + adcs r1, r3, lr + bvs SHORT G_M28334_IG05 + mov r3, r2 + b SHORT G_M28334_IG09 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M28334_IG08: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ldr r3, [sp] + ldr r1, [sp+0x04] + ldr r2, [r0+0x0C] + asr lr, r2, 31 + adds r3, r3, r2 + adcs r1, r1, lr + bvs SHORT G_M28334_IG05 + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M28334_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
cmp r1, 0 blt SHORT G_M28334_IG11 movs r2, 0 @@ -220,7 +218,7 @@ G_M28334_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=72 bbWeight=0 PerfScore 0.00
-; Total bytes of code 342, prolog size 20, PerfScore 75.00, instruction count 119, allocated bytes for code 342 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
+; Total bytes of code 338, prolog size 20, PerfScore 75.00, instruction count 117, allocated bytes for code 338 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
; ============================================================ Unwind Info: @@ -232,7 +230,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 130 (0x00082) Actual length = 260 (0x000104)
+ Function Length : 128 (0x00080) Actual length = 256 (0x000100)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-1.17%) : 148727.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)

@@ -46,48 +46,27 @@ G_M28334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] cmp r1, 2
- bhi SHORT G_M28334_IG08
+ bhi SHORT G_M28334_IG06
cmp r1, 1
- beq SHORT G_M28334_IG05
+ beq SHORT G_M28334_IG07
;; size=8 bbWeight=1 PerfScore 4.00 G_M28334_IG03: ; bbWeight=20, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz cmp r1, 2
- beq SHORT G_M28334_IG06
+ beq SHORT G_M28334_IG08
;; size=4 bbWeight=20 PerfScore 40.00 G_M28334_IG04: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ldr r3, [sp] ldr r1, [sp+0x04] b SHORT G_M28334_IG09 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M28334_IG05: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ldr r1, [sp] - ldr r3, [sp+0x04] - ldr r2, [r0+0x10] - asr lr, r2, 31 - adds r2, r1, r2 - adcs r1, r3, lr - bvs SHORT G_M28334_IG07 - mov r3, r2 - b SHORT G_M28334_IG09 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M28334_IG06: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp] - ldr r1, [sp+0x04] - ldr r2, [r0+0x0C] - asr lr, r2, 31 - adds r3, r3, r2 - adcs r1, r1, lr - bvs SHORT G_M28334_IG07 - b SHORT G_M28334_IG09 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_OVERFLOW ; gcr arg pop 0 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M28334_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -122,10 +101,29 @@ G_M28334_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blx r3 // CORINFO_HELP_THROW ; gcrRegs -[r0 r4] ; gcr arg pop 0
- bkpt - ;; size=72 bbWeight=0 PerfScore 0.00 -G_M28334_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ;; size=70 bbWeight=0 PerfScore 0.00 +G_M28334_IG07: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
+ ldr r1, [sp] + ldr r3, [sp+0x04] + ldr r2, [r0+0x10] + asr lr, r2, 31 + adds r2, r1, r2 + adcs r1, r3, lr + bvs SHORT G_M28334_IG05 + mov r3, r2 + b SHORT G_M28334_IG09 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M28334_IG08: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ldr r3, [sp] + ldr r1, [sp+0x04] + ldr r2, [r0+0x0C] + asr lr, r2, 31 + adds r3, r3, r2 + adcs r1, r1, lr + bvs SHORT G_M28334_IG05 + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M28334_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
cmp r1, 0 blt SHORT G_M28334_IG11 movs r2, 0 @@ -220,7 +218,7 @@ G_M28334_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=72 bbWeight=0 PerfScore 0.00
-; Total bytes of code 342, prolog size 20, PerfScore 65.00, instruction count 119, allocated bytes for code 342 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
+; Total bytes of code 338, prolog size 20, PerfScore 65.00, instruction count 117, allocated bytes for code 338 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
; ============================================================ Unwind Info: @@ -232,7 +230,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 130 (0x00082) Actual length = 260 (0x000104)
+ Function Length : 128 (0x00080) Actual length = 256 (0x000100)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+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.Span1[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.20%) : 404420.dasm - System.Threading.ThreadLocal`1+IdManager[int]:ReturnId(int,ubyte):this (Tier1)

@@ -70,7 +70,7 @@ G_M19555_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre G_M19555_IG03: ; bbWeight=1, gcVars=00080000 {V03}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz ldrb r1, [sp+0x2C] // [V04 loc1] cmp r1, 0
- bne G_M19555_IG16
+ bne G_M19555_IG22
add r1, sp, 44 // [V04 loc1] mov r0, r7 ; gcrRegs +[r0] @@ -128,7 +128,7 @@ G_M19555_IG05: ; bbWeight=1, gcrefRegs=01A0 {r5 r7 r8}, byrefRegs=0000 {} blx r3 // <unknown method> ; gcr arg pop 0 cmp r4, 0
- bne G_M19555_IG15
+ bne G_M19555_IG21
;; size=30 bbWeight=1 PerfScore 10.00 G_M19555_IG06: ; bbWeight=1, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz ldr lr, [r8+0x04] @@ -147,19 +147,19 @@ G_M19555_IG06: ; bbWeight=1, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0000 tst r0, r0 bmi SHORT G_M19555_IG07 tst r1, r1
- bne G_M19555_IG18
+ bne SHORT G_M19555_IG15
b SHORT G_M19555_IG08
- ;; size=40 bbWeight=1 PerfScore 14.00
+ ;; size=38 bbWeight=1 PerfScore 14.00
G_M19555_IG07: ; bbWeight=1, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz cmp r1, -1
- bne G_M19555_IG18 - ;; size=8 bbWeight=1 PerfScore 2.00
+ bne SHORT G_M19555_IG15 + ;; size=6 bbWeight=1 PerfScore 2.00
G_M19555_IG08: ; bbWeight=1, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0000 {}, byref, isz ldr lr, [sp] // [V22 tmp17] ; gcrRegs +[lr] ldr r3, [lr+0x04] cmp r0, r3
- bhs G_M19555_IG17
+ bhs SHORT G_M19555_IG14
add r3, lr, 8 ; byrRegs +[r3] lsls r0, r0, 2 @@ -176,12 +176,12 @@ G_M19555_IG08: ; bbWeight=1, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0000 ; gcrRegs -[lr] cmp lr, 0 blt SHORT G_M19555_IG13
- ;; size=46 bbWeight=1 PerfScore 15.00
+ ;; size=44 bbWeight=1 PerfScore 15.00
G_M19555_IG09: ; bbWeight=1, gcVars=00083800 {V03 V10 V14 V15}, gcrefRegs=01B4 {r2 r4 r5 r7 r8}, byrefRegs=0008 {r3}, gcvars, byref, isz ; GC ptr vars -{V22} ldr r0, [r2+0x04] cmp lr, r0
- bhs SHORT G_M19555_IG17
+ bhs SHORT G_M19555_IG14
str lr, [sp+0x24] // [V17 tmp12] lsl r0, lr, 4 adds r0, 8 @@ -191,19 +191,19 @@ G_M19555_IG09: ; bbWeight=1, gcVars=00083800 {V03 V10 V14 V15}, gcrefRegs ; GC ptr vars +{V18} ldr r0, [r12] cmp r0, r9
- bne SHORT G_M19555_IG20
+ bne SHORT G_M19555_IG17
cmp r4, 0
- bne SHORT G_M19555_IG14
+ bne SHORT G_M19555_IG20
ldr r0, [r12+0x08] cmp r0, r6
- bne SHORT G_M19555_IG20
+ bne SHORT G_M19555_IG17
;; size=44 bbWeight=1 PerfScore 16.00 G_M19555_IG10: ; bbWeight=1, gcVars=00082820 {V03 V14 V15 V18}, gcrefRegs=01A0 {r5 r7 r8}, byrefRegs=1008 {r3 r12}, gcvars, byref, isz ; gcrRegs -[r2 r4] ; GC ptr vars -{V10} str r1, [sp+0x28] // [V16 tmp11] cmp r1, 0
- bge SHORT G_M19555_IG21
+ bge SHORT G_M19555_IG18
ldr r0, [r12+0x04] adds r0, r0, 1 str r0, [r3] @@ -264,9 +264,83 @@ G_M19555_IG13: ; bbWeight=1, gcVars=00080000 {V03}, gcrefRegs=00A0 {r5 r7 str r6, [r0+r3] b SHORT G_M19555_IG24 ;; size=32 bbWeight=1 PerfScore 15.00
-G_M19555_IG14: ; bbWeight=0, gcVars=00083820 {V03 V10 V14 V15 V18}, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=1008 {r3 r12}, gcvars, byref, isz - ; gcrRegs -[r7] +[r4 r8] - ; byrRegs -[r0] +[r3 r12]
+G_M19555_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r5 r7] + ; byrRegs -[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M19555_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_OVERFLOW + ; gcr arg pop 0 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M19555_IG16: ; bbWeight=0, gcVars=00083820 {V03 V10 V14 V15 V18}, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r5 r8] + ; GC ptr vars +{V10 V12 V13 V14 V15 V18} + cmp r0, 0 + ldr r1, [sp+0x28] // [V16 tmp11] + ldr r3, [sp+0x0C] // [V14 tmp9] + ; byrRegs +[r3] + ldr r4, [sp+0x10] // [V10 tmp5] + ; gcrRegs +[r4] + ldr r7, [sp+0x14] // [V03 loc0] + ; gcrRegs +[r7] + ldr r12, [sp+0x04] // [V18 tmp13] + ; byrRegs +[r12] + bne SHORT G_M19555_IG10 + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M19555_IG17: ; bbWeight=0, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=1008 {r3 r12}, byref, isz + ldr lr, [sp+0x24] // [V17 tmp12] + mov r1, lr + ldr lr, [r12+0x04] + add r10, r10, 1 + ldr r2, [sp+0x08] // [V15 tmp10] + ; gcrRegs +[r2] + ldr r12, [r2+0x04] + ; byrRegs -[r12] + cmp r12, r10 + blo SHORT G_M19555_IG19 + cmp lr, 0 + bge SHORT G_M19555_IG09 + b SHORT G_M19555_IG13 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M19555_IG18: ; bbWeight=0, gcVars=00080820 {V03 V15 V18}, gcrefRegs=01A0 {r5 r7 r8}, byrefRegs=1000 {r12}, gcvars, byref, isz + ; gcrRegs -[r2 r4] + ; byrRegs -[r3] +[r12] + ; GC ptr vars -{V10 V12 V13 V14} + ldr r2, [sp+0x08] // [V15 tmp10] + ; gcrRegs +[r2] + ldr r3, [r2+0x04] + ldr r1, [sp+0x28] // [V16 tmp11] + cmp r1, r3 + bhs SHORT G_M19555_IG14 + lsls r3, r1, 4 + adds r3, 8 + adds r3, r2, r3 + ; byrRegs +[r3] + ldr r2, [r12+0x04] + ; gcrRegs -[r2] + str r2, [r3+0x04] + b SHORT G_M19555_IG11 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M19555_IG19: ; bbWeight=0, gcVars=00080000 {V03}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r5 r8] + ; byrRegs -[r3 r12] + ; GC ptr vars -{V15 V18} + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported() + ; gcr arg pop 0 + bkpt + ;; size=14 bbWeight=0 PerfScore 0.00 +G_M19555_IG20: ; bbWeight=0, gcVars=00083820 {V03 V10 V14 V15 V18}, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=1008 {r3 r12}, gcvars, byref, isz + ; gcrRegs -[r7] +[r4-r5 r8] + ; byrRegs +[r3 r12]
; GC ptr vars +{V10 V12 V13 V14 V15 V18} str r1, [sp+0x28] // [V16 tmp11] ldr r1, [r12+0x08] @@ -281,9 +355,9 @@ G_M19555_IG14: ; bbWeight=0, gcVars=00083820 {V03 V10 V14 V15 V18}, gcref ; gcrRegs -[r0] ; byrRegs -[r3 r12] ; gcr arg pop 0
- b SHORT G_M19555_IG19
+ b SHORT G_M19555_IG16
;; size=24 bbWeight=0 PerfScore 0.00
-G_M19555_IG15: ; bbWeight=0, gcVars=00081000 {V03 V10}, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19555_IG21: ; bbWeight=0, gcVars=00081000 {V03 V10}, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4 r7] ; GC ptr vars -{V12 V13 V14 V15 V18} mov r0, r4 @@ -301,7 +375,7 @@ G_M19555_IG15: ; bbWeight=0, gcVars=00081000 {V03 V10}, gcrefRegs=01B0 {r ; gcrRegs +[r4] b SHORT G_M19555_IG06 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M19555_IG16: ; bbWeight=0, gcVars=00080000 {V03}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref
+G_M19555_IG22: ; bbWeight=0, gcVars=00080000 {V03}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r4-r5 r8] ; GC ptr vars -{V10} movw r3, 0xd1ff @@ -311,79 +385,6 @@ G_M19555_IG16: ; bbWeight=0, gcVars=00080000 {V03}, gcrefRegs=0080 {r7}, ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M19555_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r7] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M19555_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_OVERFLOW - ; gcr arg pop 0 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M19555_IG19: ; bbWeight=0, gcVars=00083820 {V03 V10 V14 V15 V18}, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r5 r8] - ; GC ptr vars +{V10 V12 V13 V14 V15 V18} - cmp r0, 0 - ldr r1, [sp+0x28] // [V16 tmp11] - ldr r3, [sp+0x0C] // [V14 tmp9] - ; byrRegs +[r3] - ldr r4, [sp+0x10] // [V10 tmp5] - ; gcrRegs +[r4] - ldr r7, [sp+0x14] // [V03 loc0] - ; gcrRegs +[r7] - ldr r12, [sp+0x04] // [V18 tmp13] - ; byrRegs +[r12] - bne SHORT G_M19555_IG10 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M19555_IG20: ; bbWeight=0, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=1008 {r3 r12}, byref, isz - ldr lr, [sp+0x24] // [V17 tmp12] - mov r1, lr - ldr lr, [r12+0x04] - add r10, r10, 1 - ldr r2, [sp+0x08] // [V15 tmp10] - ; gcrRegs +[r2] - ldr r12, [r2+0x04] - ; byrRegs -[r12] - cmp r12, r10 - blo SHORT G_M19555_IG22 - cmp lr, 0 - bge G_M19555_IG09 - b SHORT G_M19555_IG13 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M19555_IG21: ; bbWeight=0, gcVars=00080820 {V03 V15 V18}, gcrefRegs=01A0 {r5 r7 r8}, byrefRegs=1000 {r12}, gcvars, byref, isz - ; gcrRegs -[r2 r4] - ; byrRegs -[r3] +[r12] - ; GC ptr vars -{V10 V12 V13 V14} - ldr r2, [sp+0x08] // [V15 tmp10] - ; gcrRegs +[r2] - ldr r3, [r2+0x04] - ldr r1, [sp+0x28] // [V16 tmp11] - cmp r1, r3 - bhs SHORT G_M19555_IG17 - lsls r3, r1, 4 - adds r3, 8 - adds r3, r2, r3
...

-4 (-1.17%) : 310945.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)

@@ -46,48 +46,27 @@ G_M28334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] cmp r1, 2
- bhi SHORT G_M28334_IG08
+ bhi SHORT G_M28334_IG06
cmp r1, 1
- beq SHORT G_M28334_IG05
+ beq SHORT G_M28334_IG07
;; size=8 bbWeight=1 PerfScore 4.00 G_M28334_IG03: ; bbWeight=20, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz cmp r1, 2
- beq SHORT G_M28334_IG06
+ beq SHORT G_M28334_IG08
;; size=4 bbWeight=20 PerfScore 40.00 G_M28334_IG04: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ldr r3, [sp] ldr r1, [sp+0x04] b SHORT G_M28334_IG09 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M28334_IG05: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ldr r1, [sp] - ldr r3, [sp+0x04] - ldr r2, [r0+0x10] - asr lr, r2, 31 - adds r2, r1, r2 - adcs r1, r3, lr - bvs SHORT G_M28334_IG07 - mov r3, r2 - b SHORT G_M28334_IG09 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M28334_IG06: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp] - ldr r1, [sp+0x04] - ldr r2, [r0+0x0C] - asr lr, r2, 31 - adds r3, r3, r2 - adcs r1, r1, lr - bvs SHORT G_M28334_IG07 - b SHORT G_M28334_IG09 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_OVERFLOW ; gcr arg pop 0 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M28334_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -122,10 +101,29 @@ G_M28334_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blx r3 // CORINFO_HELP_THROW ; gcrRegs -[r0 r4] ; gcr arg pop 0
- bkpt - ;; size=72 bbWeight=0 PerfScore 0.00 -G_M28334_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ;; size=70 bbWeight=0 PerfScore 0.00 +G_M28334_IG07: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
+ ldr r1, [sp] + ldr r3, [sp+0x04] + ldr r2, [r0+0x10] + asr lr, r2, 31 + adds r2, r1, r2 + adcs r1, r3, lr + bvs SHORT G_M28334_IG05 + mov r3, r2 + b SHORT G_M28334_IG09 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M28334_IG08: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz + ldr r3, [sp] + ldr r1, [sp+0x04] + ldr r2, [r0+0x0C] + asr lr, r2, 31 + adds r3, r3, r2 + adcs r1, r1, lr + bvs SHORT G_M28334_IG05 + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M28334_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
cmp r1, 0 blt SHORT G_M28334_IG11 movs r2, 0 @@ -220,7 +218,7 @@ G_M28334_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=72 bbWeight=0 PerfScore 0.00
-; Total bytes of code 342, prolog size 20, PerfScore 65.00, instruction count 119, allocated bytes for code 342 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
+; Total bytes of code 338, prolog size 20, PerfScore 65.00, instruction count 117, allocated bytes for code 338 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
; ============================================================ Unwind Info: @@ -232,7 +230,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 130 (0x00082) Actual length = 260 (0x000104)
+ Function Length : 128 (0x00080) Actual length = 256 (0x000100)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+0.75%) : 71351.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span1[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.Span1[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.Span1[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 25 22 0 3 -192 +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 88 51 15 22 -184 +68
librariestestsnotieredcompilation.run.linux.arm.Release.mch 0 0 0 0 -0 +0
realworld.run.linux.arm.checked.mch 0 0 0 0 -0 +0
117 75 15 27 -380 +68

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: 321764074 (overridden on cmd)
Total bytes of delta: -192 (-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 : 181147.dasm (-1.17 % of base)
          -4 : 299324.dasm (-0.44 % of base)
          -4 : 301649.dasm (-0.44 % of base)
          -4 : 303255.dasm (-0.44 % of base)
          -4 : 186599.dasm (-1.17 % of base)
          -4 : 210776.dasm (-1.17 % of base)
          -4 : 300775.dasm (-0.44 % of base)
          -4 : 301807.dasm (-0.44 % of base)
          -4 : 303648.dasm (-0.44 % of base)
          -4 : 308329.dasm (-0.49 % of base)
          -4 : 148727.dasm (-1.17 % of base)
          -4 : 183471.dasm (-1.80 % of base)
          -4 : 176637.dasm (-1.17 % of base)
          -4 : 271734.dasm (-0.44 % of base)
          -4 : 301083.dasm (-0.44 % of base)
          -4 : 302365.dasm (-0.44 % of base)
          -4 : 304298.dasm (-0.44 % of base)

22 total files with Code Size differences (22 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 (-1.80 % of base) : 183471.dasm - System.Decimal:ToInt16(System.Decimal):short (Tier1)
          -4 (-1.17 % of base) : 181147.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 186599.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 210776.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 148727.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 176637.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long: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) : 301649.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) : 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) : 303648.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) : 271734.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) : 302365.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)

Top method improvements (percentages):
        -102 (-35.42 % of base) : 201994.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
          -4 (-1.80 % of base) : 183471.dasm - System.Decimal:ToInt16(System.Decimal):short (Tier1)
          -4 (-1.17 % of base) : 181147.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 186599.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 210776.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 148727.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 176637.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
         -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) : 299324.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) : 303255.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) : 303648.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) : 301083.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) : 304298.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)

22 total methods with Code Size differences (22 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: 243880670 (overridden on cmd)
Total bytes of delta: -116 (-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 : 331177.dasm (0.49 % of base)
           4 : 547453.dasm (0.61 % of base)
           4 : 134145.dasm (0.61 % of base)
           2 : 450139.dasm (0.47 % of base)
           2 : 505385.dasm (0.25 % of base)
           2 : 671729.dasm (0.39 % of base)
           2 : 707757.dasm (0.60 % of base)
           2 : 712500.dasm (0.40 % of base)
           2 : 556792.dasm (0.08 % of base)

Top file improvements (bytes):
         -14 : 722758.dasm (-1.99 % of base)
          -8 : 187780.dasm (-1.06 % of base)
          -8 : 404420.dasm (-1.20 % of base)
          -8 : 622205.dasm (-1.14 % of base)
          -6 : 222350.dasm (-0.80 % of base)
          -6 : 141420.dasm (-0.69 % of base)
          -6 : 200388.dasm (-0.67 % of base)
          -4 : 242548.dasm (-0.59 % of base)
          -4 : 310945.dasm (-1.17 % of base)
          -4 : 322538.dasm (-1.17 % of base)
          -4 : 332710.dasm (-1.17 % of base)
          -4 : 387090.dasm (-0.48 % of base)
          -4 : 484145.dasm (-0.55 % of base)
          -4 : 182072.dasm (-1.17 % of base)
          -4 : 248167.dasm (-0.48 % of base)
          -4 : 271545.dasm (-0.48 % of base)
          -4 : 329727.dasm (-1.17 % of base)
          -4 : 380978.dasm (-0.48 % of base)
          -4 : 433542.dasm (-0.49 % of base)
          -4 : 443316.dasm (-1.17 % of base)

42 total files with Code Size differences (27 improved, 15 regressed), 21 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.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.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.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)
           2 (0.47 % of base) : 450139.dasm - System.Xml.XmlWellFormedWriter:WriteEndElementAsync_NoAdvanceState():System.Threading.Tasks.Task: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)
          -8 (-1.20 % of base) : 404420.dasm - System.Threading.ThreadLocal`1+IdManager[int]:ReturnId(int,ubyte):this (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.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.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 (-1.17 % of base) : 310945.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 322538.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 332710.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 182072.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 329727.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 443316.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 402654.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (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) : 387090.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.48 % of base) : 248167.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)

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) : 547453.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) : 134145.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.47 % of base) : 450139.dasm - System.Xml.XmlWellFormedWriter:WriteEndElementAsync_NoAdvanceState():System.Threading.Tasks.Task: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.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.20 % of base) : 404420.dasm - System.Threading.ThreadLocal`1+IdManager[int]:ReturnId(int,ubyte):this (Tier1)
          -4 (-1.17 % of base) : 310945.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 322538.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 332710.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 182072.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 329727.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 443316.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
          -4 (-1.17 % of base) : 402654.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (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) : 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) : 258306.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)



windows x86

Diffs are based on 2,293,449 contexts (839,658 MinOpts, 1,453,791 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+171 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 44,974,365 +66
coreclr_tests.run.windows.x86.checked.mch 309,384,825 -111
libraries_tests.run.windows.x86.Release.mch 186,683,192 +216

FullOpts (+171 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 38,385,734 +66
coreclr_tests.run.windows.x86.checked.mch 107,596,927 -111
libraries_tests.run.windows.x86.Release.mch 88,409,560 +216

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.Span1[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.Span1[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.Span1[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.IEqualityComparer1[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.IEqualityComparer1[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.IEqualityComparer1[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.IEqualityComparer1[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.IEqualityComparer1[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.IEqualityComparer1[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.Span1[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.IEqualityComparer1[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.IEqualityComparer1[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.IEqualityComparer1[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 19 7 4 8 -135 +24
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 243 45 60 138 -321 +537
librariestestsnotieredcompilation.run.windows.x86.Release.mch 0 0 0 0 -0 +0
realworld.run.windows.x86.checked.mch 0 0 0 0 -0 +0
319 54 78 187 -474 +645

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,805 41,904 75,901 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,827 427,222 200,605 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,449 839,658 1,453,791 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: 44974365 (overridden on cmd)
Total bytes of diff: 44974431 (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 : 112910.dasm (1.89 % of base)
           5 : 23029.dasm (0.69 % of base)
           5 : 52917.dasm (0.69 % of base)
           5 : 23423.dasm (0.69 % of base)
           5 : 63577.dasm (0.69 % of base)
           5 : 98389.dasm (0.69 % of base)
           5 : 117268.dasm (1.89 % 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) : 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 (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 (0.69 % of base) : 23029.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) : 23423.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) : 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 (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)
          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) : 52917.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) : 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: 309384825 (overridden on cmd)
Total bytes of diff: 309384714 (overridden on cmd)
Total bytes of delta: -111 (-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 : 461737.dasm (1.34 % of base)
           4 : 546207.dasm (1.13 % of base)
           4 : 494069.dasm (1.78 % 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 : 571075.dasm (-0.98 % of base)
          -7 : 565226.dasm (-0.97 % of base)
          -7 : 568128.dasm (-0.98 % of base)
          -2 : 236491.dasm (-1.61 % of base)

11 total files with Code Size differences (7 improved, 4 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.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)
           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.13 % of base) : 546207.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineMethodCore(System.String,int,int,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]):System.Reflection.Emit.MethodBuilder: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.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)
          -7 (-0.98 % of base) : 568128.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)
           4 (1.13 % of base) : 546207.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineMethodCore(System.String,int,int,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]):System.Reflection.Emit.MethodBuilder: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) : 571075.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.97 % of base) : 565226.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)

11 total methods with Code Size differences (7 improved, 4 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: 186683192 (overridden on cmd)
Total bytes of diff: 186683408 (overridden on cmd)
Total bytes of delta: 216 (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 : 42084.dasm (10.82 % of base)
          25 : 70763.dasm (10.82 % of base)
          25 : 558029.dasm (4.67 % of base)
          23 : 346084.dasm (4.41 % of base)
          21 : 337482.dasm (9.09 % of base)
          16 : 160787.dasm (5.32 % of base)
          16 : 570638.dasm (5.32 % 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)
          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 : 107931.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 : 107353.dasm (-0.65 % of base)
          -9 : 236417.dasm (-1.61 % of base)
          -9 : 323944.dasm (-0.72 % of base)
          -8 : 160505.dasm (-1.01 % of base)
          -8 : 452765.dasm (-1.19 % of base)
          -8 : 542530.dasm (-1.16 % of base)
          -7 : 349913.dasm (-0.98 % of base)
          -7 : 149085.dasm (-0.92 % of base)
          -7 : 237073.dasm (-0.92 % of base)
          -7 : 39001.dasm (-1.11 % of base)
          -7 : 100585.dasm (-3.65 % of base)
          -7 : 110857.dasm (-3.65 % 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) : 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)
          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)
          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)
          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) : 107931.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.98 % of base) : 349913.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String: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)

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