Diffs are based on 2,501,660 contexts (1,003,806 MinOpts, 1,497,854 FullOpts).
MISSED contexts: base: 3,546 (0.14%), diff: 3,557 (0.14%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.arm64.checked.mch | 15,579,776 | +368 |
benchmarks.run_pgo.linux.arm64.checked.mch | 80,916,176 | -14,972 |
benchmarks.run_tiered.linux.arm64.checked.mch | 24,709,612 | -140 |
coreclr_tests.run.linux.arm64.checked.mch | 509,948,648 | -38,868 |
libraries.crossgen2.linux.arm64.checked.mch | 55,736,760 | +24 |
libraries.pmi.linux.arm64.checked.mch | 75,993,172 | -4,048 |
libraries_tests.run.linux.arm64.Release.mch | 381,327,700 | -46,900 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 162,523,364 | -21,244 |
realworld.run.linux.arm64.checked.mch | 15,906,968 | -172 |
smoke_tests.nativeaot.linux.arm64.checked.mch | 2,948,924 | -196 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.arm64.checked.mch | 15,276,768 | +368 |
benchmarks.run_pgo.linux.arm64.checked.mch | 55,979,716 | -14,972 |
benchmarks.run_tiered.linux.arm64.checked.mch | 4,924,756 | -140 |
coreclr_tests.run.linux.arm64.checked.mch | 160,723,592 | -38,868 |
libraries.crossgen2.linux.arm64.checked.mch | 55,735,124 | +24 |
libraries.pmi.linux.arm64.checked.mch | 75,873,188 | -4,048 |
libraries_tests.run.linux.arm64.Release.mch | 166,030,560 | -46,900 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 149,042,152 | -21,244 |
realworld.run.linux.arm64.checked.mch | 15,321,600 | -172 |
smoke_tests.nativeaot.linux.arm64.checked.mch | 2,947,976 | -196 |
@@ -59,10 +59,8 @@ G_M65029_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M65029_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M65029_IG04
- cbz x1, G_M65029_IG08
- b G_M65029_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M65029_IG07
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M65029_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbnz x1, G_M65029_IG05
@@ -81,21 +79,19 @@ G_M65029_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M65029_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M65029_IG08
ldr w3, [x1, #0x08]
- cbz w3, G_M65029_IG08
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M65029_IG09
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w3, G_M65029_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M65029_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
- ; gcrRegs -[x0] +[x1]
+G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
add x1, x1, #12
; gcrRegs -[x1]
@@ -114,13 +110,13 @@ G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x4
; gcrRegs +[x0]
; byrRegs -[x0 x2]
- ;; size=36 bbWeight=0.50 PerfScore 3.75
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
G_M65029_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 124, prolog size 8, PerfScore 16.50, instruction count 31, allocated bytes for code 124 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 15.50, instruction count 29, allocated bytes for code 116 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -131,7 +127,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -78,10 +78,8 @@ G_M49441_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M49441_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M49441_IG04
- cbz x1, G_M49441_IG07
- b G_M49441_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M49441_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M49441_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -92,31 +90,29 @@ G_M49441_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M49441_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M49441_IG07
ldr w3, [x1, #0x08]
- cbz w3, G_M49441_IG07
+ cbnz w3, G_M49441_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
+G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1]
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M49441_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x1]
add x4, x1, #12
; byrRegs +[x4]
mov x5, x4
; byrRegs +[x5]
sxtw w6, w3
- b G_M49441_IG08
- ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1]
- ; byrRegs -[x4-x5]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M49441_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0030 {x4 x5}, gcvars, byref, isz
- ; gcrRegs +[x1]
- ; byrRegs +[x4-x5]
cmp w6, #0
ble G_M49441_IG09
ldrh w5, [x5]
; byrRegs -[x5]
cmp w5, #47
beq G_M49441_IG04
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M49441_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
; gcrRegs -[x1]
add x0, x0, #12
@@ -139,7 +135,7 @@ G_M49441_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 132, prolog size 8, PerfScore 18.50, instruction count 33, allocated bytes for code 132 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 17.50, instruction count 31, allocated bytes for code 124 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -150,7 +146,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet
1+Node[System.Canon],System.Collections.Generic.SortedSet`1+Node[System.Canon]):ubyte:this (FullOpts)@@ -36,12 +36,8 @@ G_M938_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byr
ldrb w0, [x0, #0x20]
; gcrRegs -[x0]
cmp w0, #1
- bne G_M938_IG04
- mov w0, #2
- cmp w1, #0
- cinc w0, w0, ne
- b G_M938_IG06
- ;; size=28 bbWeight=0.50 PerfScore 3.50
+ beq G_M938_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
G_M938_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w1, #0
cset x0, eq
@@ -50,12 +46,17 @@ G_M938_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M938_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M938_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #2
+ cmp w1, #0
+ cinc w0, w0, ne
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
+G_M938_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 80, prolog size 8, PerfScore 15.50, instruction count 20, allocated bytes for code 80 (MethodHash=eeeffc55) for method System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 15.00, instruction count 19, allocated bytes for code 76 (MethodHash=eeeffc55) for method System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -22,26 +22,20 @@ G_M65033_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x0C]
cmp w1, #1
- beq G_M65033_IG05
+ beq G_M65033_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M65033_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
cmp w1, #2
- bne G_M65033_IG07
+ bne G_M65033_IG08
ldr w1, [x0, #0x10]
add w1, w1, #1
str w1, [x0, #0x10]
ldr w2, [x0, #0x18]
cmp w1, w2
- beq G_M65033_IG07
- mov w0, #1
- ; gcrRegs -[x0]
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M65033_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
+ beq G_M65033_IG08
+ b G_M65033_IG06
+ ;; size=36 bbWeight=0.50 PerfScore 5.75
+G_M65033_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w1, [x0, #0x14]
str w1, [x0, #0x10]
mov w1, #2
@@ -49,23 +43,30 @@ G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov w0, #1
; gcrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M65033_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M65033_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M65033_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M65033_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movn w1, #0
str w1, [x0, #0x0C]
mov w0, wzr
; gcrRegs -[x0]
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 112, prolog size 8, PerfScore 18.50, instruction count 28, allocated bytes for code 112 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 19.00, instruction count 29, allocated bytes for code 116 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -76,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -37,73 +37,77 @@ G_M3894_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
add x1, x0, x1
mov w4, wzr
cmp x0, x1
- bhs G_M3894_IG11
+ bhs G_M3894_IG05
;; size=20 bbWeight=1 PerfScore 3.50
G_M3894_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add x5, x0, #2
ldrh w0, [x0]
cmp w0, #128
- bge G_M3894_IG05
+ bge G_M3894_IG06
;; size=16 bbWeight=4 PerfScore 20.00
G_M3894_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #1
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M3894_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
- cmp w0, #0xD1FFAB1E
- bge G_M3894_IG06
- mov w6, #2
- b G_M3894_IG08
- ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ mov x5, x0
+ b G_M3894_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M3894_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ bge G_M3894_IG07
+ mov w6, #2
+ b G_M3894_IG09
+ ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
movn w6, #0xD1FFAB1E
add w0, w0, w6
mov w6, #0xD1FFAB1E
cmp x5, x1
ccmp w0, w6, c, lo
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
ldrh w0, [x5]
movn w6, #0xD1FFAB1E
add w0, w0, w6
cmp w0, #0xD1FFAB1E
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
mov w6, #4
add x5, x5, #2
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=56 bbWeight=2 PerfScore 22.00
-G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+G_M3894_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #3
;; size=4 bbWeight=2 PerfScore 1.00
-G_M3894_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+G_M3894_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add w0, w4, w6
cmp w0, w2
- bgt G_M3894_IG10
+ bgt G_M3894_IG11
sxtw w4, w0
cmp x5, x1
+ blo G_M3894_IG10
+ b G_M3894_IG12
+ ;; size=28 bbWeight=4 PerfScore 20.00
+G_M3894_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov x0, x5
- blo G_M3894_IG03
- ;; size=28 bbWeight=4 PerfScore 18.00
-G_M3894_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- b G_M3894_IG11
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3894_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ b G_M3894_IG03
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M3894_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w0, #1
cmp w6, #4
cinc w0, w0, ge
sbfiz x0, x0, #1, #32
sub x5, x5, x0
- mov x0, x5
- ;; size=24 bbWeight=0.50 PerfScore 1.75
-G_M3894_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- str x0, [x3]
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
+G_M3894_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ str x5, [x3]
mov w0, w4
;; size=8 bbWeight=1 PerfScore 1.50
-G_M3894_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M3894_IG13: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 80.75, instruction count 50, allocated bytes for code 200 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
+; Total bytes of code 208, prolog size 8, PerfScore 85.75, instruction count 52, allocated bytes for code 208 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -114,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -16,7 +16,7 @@
;
; Lcl frame size = 0
-G_M26551_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M26551_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
@@ -47,7 +47,7 @@ G_M26551_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
G_M26551_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w0, w0, #15
cmp w0, #1
- bls G_M26551_IG05
+ bls G_M26551_IG07
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x20, #0x88]
@@ -55,20 +55,9 @@ G_M26551_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x1
; gcrRegs -[x0]
cbnz w0, G_M26551_IG03
- ;; size=32 bbWeight=4 PerfScore 42.00
+ b G_M26551_IG09
+ ;; size=36 bbWeight=4 PerfScore 46.00
G_M26551_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x21, #0x28]
- ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M26551_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
- br x1
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M26551_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x20, #0x88]
@@ -79,20 +68,36 @@ G_M26551_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs +[x0]
ldr x1, [x21, #0x28]
;; size=24 bbWeight=0.50 PerfScore 5.50
+G_M26551_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x30
+ br x1
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M26551_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ldr x1, [x21, #0x28]
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M26551_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
br x1
;; size=16 bbWeight=0.50 PerfScore 2.00
-RWD00 dd G_M26551_IG05 - G_M26551_IG02
+G_M26551_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ b G_M26551_IG07
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+RWD00 dd G_M26551_IG07 - G_M26551_IG02
+ dd G_M26551_IG05 - G_M26551_IG02
+ dd G_M26551_IG07 - G_M26551_IG02
+ dd G_M26551_IG07 - G_M26551_IG02
dd G_M26551_IG07 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
-; Total bytes of code 172, prolog size 16, PerfScore 163.25, instruction count 43, allocated bytes for code 172 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
+; Total bytes of code 180, prolog size 16, PerfScore 167.75, instruction count 45, allocated bytes for code 180 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +108,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -38,30 +38,22 @@ G_M57887_IG04: ; bbWeight=0, epilog, nogc, extend
G_M57887_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0 x2]
tst w1, #255
- beq G_M57887_IG07
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M57887_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- b G_M57887_IG08
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M57887_IG07: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x2]
+ bne G_M57887_IG06
ldr w1, [x2, #0x5C]
and w1, w1, #7
cmp w1, #6
- beq G_M57887_IG08
- b G_M57887_IG03
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M57887_IG08: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ bne G_M57887_IG03
+ ;; size=24 bbWeight=1 PerfScore 6.50
+G_M57887_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
ldr x0, [x0, #0x18]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M57887_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG07: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 13.00, instruction count 18, allocated bytes for code 72 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 12.00, instruction count 16, allocated bytes for code 64 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
@@ -72,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,12 +10,12 @@
; Final local variable assignments
;
; V00 this [V00,T06] ( 5, 4 ) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T03] ( 9, 18.93) ref -> x19 class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T03] ( 8, 16.20) ref -> x19 class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T07] ( 3, 2.04) ref -> x21 class-hnd single-def <System.__Canon[]>
; V03 loc1 [V03,T09] ( 4, 0.75) ref -> x21 class-hnd single-def <System.__Canon[]>
; V04 loc2 [V04,T08] ( 5, 1.39) int -> x22
-; V05 loc3 [V05,T02] ( 6, 22.07) ref -> x23 class-hnd <System.__Canon>
-; V06 loc4 [V06,T01] ( 9, 28.53) int -> x24
+; V05 loc3 [V05,T02] ( 6, 19.34) ref -> x23 class-hnd <System.__Canon>
+; V06 loc4 [V06,T01] ( 6, 25.80) int -> x24
; V07 loc5 [V07,T00] ( 5, 31.25) ref -> x0 class-hnd <System.__Canon>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T05] ( 2, 12.60) int -> x0 "guarded devirt return temp"
@@ -40,7 +40,7 @@ G_M50755_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M50755_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x21, [x20, #0x08]
; gcrRegs +[x21]
- cbnz x21, G_M50755_IG07
+ cbnz x21, G_M50755_IG05
;; size=8 bbWeight=1 PerfScore 4.00
G_M50755_IG03: ; bbWeight=0.96, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
@@ -59,39 +59,28 @@ G_M50755_IG04: ; bbWeight=0.96, epilog, nogc, extend
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=0.96 PerfScore 4.79
-G_M50755_IG05: ; bbWeight=6.05, gcVars=0000000000000000 {}, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x19-x21 x23]
- ldr x1, [x23, #0x50]
- ldr x0, [x0, #0x50]
- ; gcrRegs -[x0]
- cmp x1, x0
- bne G_M50755_IG14
- ;; size=16 bbWeight=6.05 PerfScore 45.37
-G_M50755_IG06: ; bbWeight=48.39, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
- b G_M50755_IG15
- ;; size=4 bbWeight=48.39 PerfScore 48.39
-G_M50755_IG07: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x23]
+G_M50755_IG05: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x21]
mov w22, wzr
ldr w0, [x21, #0x08]
cmp w0, #0
- ble G_M50755_IG17
+ ble G_M50755_IG14
;; size=16 bbWeight=0.04 PerfScore 0.21
-G_M50755_IG08: ; bbWeight=0.32, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG06: ; bbWeight=0.32, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, #16
; byrRegs +[x0]
ldr x23, [x0, w22, UXTW #3]
; gcrRegs +[x23]
- cbz x23, G_M50755_IG17
+ cbz x23, G_M50755_IG14
;; size=12 bbWeight=0.32 PerfScore 1.45
-G_M50755_IG09: ; bbWeight=0.30, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG07: ; bbWeight=0.30, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
mov w24, wzr
ldr w0, [x19, #0x08]
cmp w0, #0
- ble G_M50755_IG16
+ ble G_M50755_IG13
;; size=16 bbWeight=0.30 PerfScore 1.50
-G_M50755_IG10: ; bbWeight=6.30, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG08: ; bbWeight=6.30, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add x0, x19, #16
; byrRegs +[x0]
ldr x0, [x0, w24, UXTW #3]
@@ -102,9 +91,9 @@ G_M50755_IG10: ; bbWeight=6.30, gcrefRegs=B80000 {x19 x20 x21 x23}, byref
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M50755_IG13
+ bne G_M50755_IG10
;; size=32 bbWeight=6.30 PerfScore 59.86
-G_M50755_IG11: ; bbWeight=6.05, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG09: ; bbWeight=6.05, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
mov x1, x23
; gcrRegs +[x1]
ldr x1, [x1]
@@ -113,13 +102,15 @@ G_M50755_IG11: ; bbWeight=6.05, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, by
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- beq G_M50755_IG05
- ;; size=28 bbWeight=6.05 PerfScore 39.32
-G_M50755_IG12: ; bbWeight=1.51, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+ bne G_M50755_IG11
+ ldr x1, [x23, #0x50]
+ ldr x0, [x0, #0x50]
; gcrRegs -[x0]
- b G_M50755_IG19
- ;; size=4 bbWeight=1.51 PerfScore 1.51
-G_M50755_IG13: ; bbWeight=6.30, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+ cmp x1, x0
+ bne G_M50755_IG11
+ b G_M50755_IG12
+ ;; size=48 bbWeight=6.05 PerfScore 90.73
+G_M50755_IG10: ; bbWeight=6.30, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
mov x1, x23
; gcrRegs +[x1]
@@ -129,16 +120,16 @@ G_M50755_IG13: ; bbWeight=6.30, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, by
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbnz w0, G_M50755_IG15
+ cbnz w0, G_M50755_IG12
;; size=24 bbWeight=6.30 PerfScore 72.46
-G_M50755_IG14: ; bbWeight=6.30, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG11: ; bbWeight=6.30, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
ldr w1, [x19, #0x08]
cmp w1, w24
- ble G_M50755_IG16
- b G_M50755_IG10
+ bgt G_M50755_IG08
+ b G_M50755_IG13
;; size=20 bbWeight=6.30 PerfScore 37.80
-G_M50755_IG15: ; bbWeight=3.02, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M50755_IG12: ; bbWeight=0.30, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sxtw x1, w24
mov x0, x19
; gcrRegs +[x0]
@@ -147,14 +138,14 @@ G_M50755_IG15: ; bbWeight=3.02, gcrefRegs=B80000 {x19 x20 x21 x23}, byref
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2 x23]
; gcr arg pop 0
- ;; size=16 bbWeight=3.02 PerfScore 7.56
-G_M50755_IG16: ; bbWeight=0.34, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.30 PerfScore 0.75
+G_M50755_IG13: ; bbWeight=0.34, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1
ldr w14, [x21, #0x08]
cmp w14, w22
- bgt G_M50755_IG08
+ bgt G_M50755_IG06
;; size=16 bbWeight=0.34 PerfScore 1.71
-G_M50755_IG17: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M50755_IG14: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
add x14, x20, #8
; byrRegs +[x14]
@@ -164,23 +155,15 @@ G_M50755_IG17: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x15 x19-x20]
; byrRegs -[x14]
;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M50755_IG18: ; bbWeight=0.04, epilog, nogc, extend
+G_M50755_IG15: ; bbWeight=0.04, epilog, nogc, extend
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=0.04 PerfScore 0.21
-G_M50755_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x21 x23]
- add w24, w24, #1
- ldr w0, [x19, #0x08]
- cmp w0, w24
- bgt G_M50755_IG10
- b G_M50755_IG16
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 28, PerfScore 333.64, instruction count 81, allocated bytes for code 324 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
+; Total bytes of code 300, prolog size 28, PerfScore 282.97, instruction count 75, allocated bytes for code 300 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
; ============================================================
Unwind Info:
@@ -191,7 +174,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 324 (0x000144)
+ Function Length : 75 (0x0004b) Actual length = 300 (0x00012c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,12 +10,12 @@
; Final local variable assignments
;
; V00 this [V00,T06] ( 5, 4 ) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T03] ( 9, 31.47) ref -> x19 class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T03] ( 8, 26.60) ref -> x19 class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T08] ( 3, 2.08) ref -> x21 class-hnd single-def <System.__Canon[]>
; V03 loc1 [V03,T09] ( 4, 1.34) ref -> x21 class-hnd single-def <System.__Canon[]>
; V04 loc2 [V04,T07] ( 5, 2.49) int -> x22
-; V05 loc3 [V05,T02] ( 6, 39.44) ref -> x23 class-hnd <System.__Canon>
-; V06 loc4 [V06,T01] ( 9, 50.99) int -> x24
+; V05 loc3 [V05,T02] ( 6, 34.57) ref -> x23 class-hnd <System.__Canon>
+; V06 loc4 [V06,T01] ( 6, 46.12) int -> x24
; V07 loc5 [V07,T00] ( 5, 55.86) ref -> x0 class-hnd <System.__Canon>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T05] ( 2, 22.52) int -> x0 "guarded devirt return temp"
@@ -40,7 +40,7 @@ G_M50755_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M50755_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x21, [x20, #0x08]
; gcrRegs +[x21]
- cbnz x21, G_M50755_IG07
+ cbnz x21, G_M50755_IG05
;; size=8 bbWeight=1 PerfScore 4.00
G_M50755_IG03: ; bbWeight=0.93, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
@@ -59,39 +59,28 @@ G_M50755_IG04: ; bbWeight=0.93, epilog, nogc, extend
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=0.93 PerfScore 4.62
-G_M50755_IG05: ; bbWeight=10.81, gcVars=0000000000000000 {}, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x19-x21 x23]
- ldr x1, [x23, #0x50]
- ldr x0, [x0, #0x50]
- ; gcrRegs -[x0]
- cmp x1, x0
- bne G_M50755_IG14
- ;; size=16 bbWeight=10.81 PerfScore 81.09
-G_M50755_IG06: ; bbWeight=86.50, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
- b G_M50755_IG15
- ;; size=4 bbWeight=86.50 PerfScore 86.50
-G_M50755_IG07: ; bbWeight=0.07, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x23]
+G_M50755_IG05: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x21]
mov w22, wzr
ldr w0, [x21, #0x08]
cmp w0, #0
- ble G_M50755_IG17
+ ble G_M50755_IG14
;; size=16 bbWeight=0.07 PerfScore 0.37
-G_M50755_IG08: ; bbWeight=0.57, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG06: ; bbWeight=0.57, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, #16
; byrRegs +[x0]
ldr x23, [x0, w22, UXTW #3]
; gcrRegs +[x23]
- cbz x23, G_M50755_IG17
+ cbz x23, G_M50755_IG14
;; size=12 bbWeight=0.57 PerfScore 2.59
-G_M50755_IG09: ; bbWeight=0.54, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG07: ; bbWeight=0.54, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
mov w24, wzr
ldr w0, [x19, #0x08]
cmp w0, #0
- ble G_M50755_IG16
+ ble G_M50755_IG13
;; size=16 bbWeight=0.54 PerfScore 2.69
-G_M50755_IG10: ; bbWeight=11.26, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG08: ; bbWeight=11.26, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add x0, x19, #16
; byrRegs +[x0]
ldr x0, [x0, w24, UXTW #3]
@@ -102,9 +91,9 @@ G_M50755_IG10: ; bbWeight=11.26, gcrefRegs=B80000 {x19 x20 x21 x23}, byre
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M50755_IG13
+ bne G_M50755_IG10
;; size=32 bbWeight=11.26 PerfScore 106.99
-G_M50755_IG11: ; bbWeight=10.81, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG09: ; bbWeight=10.81, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
mov x1, x23
; gcrRegs +[x1]
ldr x1, [x1]
@@ -113,13 +102,15 @@ G_M50755_IG11: ; bbWeight=10.81, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, b
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- beq G_M50755_IG05
- ;; size=28 bbWeight=10.81 PerfScore 70.28
-G_M50755_IG12: ; bbWeight=2.70, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+ bne G_M50755_IG11
+ ldr x1, [x23, #0x50]
+ ldr x0, [x0, #0x50]
; gcrRegs -[x0]
- b G_M50755_IG19
- ;; size=4 bbWeight=2.70 PerfScore 2.70
-G_M50755_IG13: ; bbWeight=11.26, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+ cmp x1, x0
+ bne G_M50755_IG11
+ b G_M50755_IG12
+ ;; size=48 bbWeight=10.81 PerfScore 162.18
+G_M50755_IG10: ; bbWeight=11.26, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
mov x1, x23
; gcrRegs +[x1]
@@ -129,16 +120,16 @@ G_M50755_IG13: ; bbWeight=11.26, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, b
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbnz w0, G_M50755_IG15
+ cbnz w0, G_M50755_IG12
;; size=24 bbWeight=11.26 PerfScore 129.52
-G_M50755_IG14: ; bbWeight=11.26, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG11: ; bbWeight=11.26, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
ldr w1, [x19, #0x08]
cmp w1, w24
- ble G_M50755_IG16
- b G_M50755_IG10
+ bgt G_M50755_IG08
+ b G_M50755_IG13
;; size=20 bbWeight=11.26 PerfScore 67.58
-G_M50755_IG15: ; bbWeight=5.41, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M50755_IG12: ; bbWeight=0.54, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sxtw x1, w24
mov x0, x19
; gcrRegs +[x0]
@@ -147,14 +138,14 @@ G_M50755_IG15: ; bbWeight=5.41, gcrefRegs=B80000 {x19 x20 x21 x23}, byref
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2 x23]
; gcr arg pop 0
- ;; size=16 bbWeight=5.41 PerfScore 13.52
-G_M50755_IG16: ; bbWeight=0.61, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.54 PerfScore 1.34
+G_M50755_IG13: ; bbWeight=0.61, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1
ldr w14, [x21, #0x08]
cmp w14, w22
- bgt G_M50755_IG08
+ bgt G_M50755_IG06
;; size=16 bbWeight=0.61 PerfScore 3.06
-G_M50755_IG17: ; bbWeight=0.07, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M50755_IG14: ; bbWeight=0.07, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
add x14, x20, #8
; byrRegs +[x14]
@@ -164,23 +155,15 @@ G_M50755_IG17: ; bbWeight=0.07, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x15 x19-x20]
; byrRegs -[x14]
;; size=12 bbWeight=0.07 PerfScore 0.15
-G_M50755_IG18: ; bbWeight=0.07, epilog, nogc, extend
+G_M50755_IG15: ; bbWeight=0.07, epilog, nogc, extend
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=0.07 PerfScore 0.38
-G_M50755_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x21 x23]
- add w24, w24, #1
- ldr w0, [x19, #0x08]
- cmp w0, w24
- bgt G_M50755_IG10
- b G_M50755_IG16
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 28, PerfScore 583.38, instruction count 81, allocated bytes for code 324 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
+; Total bytes of code 300, prolog size 28, PerfScore 492.82, instruction count 75, allocated bytes for code 300 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
; ============================================================
Unwind Info:
@@ -191,7 +174,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 324 (0x000144)
+ Function Length : 75 (0x0004b) Actual length = 300 (0x00012c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,7 +9,7 @@
; 5 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 4.40) byref -> x19 this single-def
+; V00 this [V00,T00] ( 10, 4.40) byref -> x19 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T03] ( 3, 1.20) int -> x0 "Span.get_Item index"
; V03 tmp2 [V03,T02] ( 3, 1.20) byref -> x1 "Span.get_Item ptrToSpan"
@@ -60,7 +60,7 @@ G_M7781_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
ldrh w0, [x1, w0, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M7781_IG05
+ blo G_M7781_IG04
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; byrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
@@ -68,21 +68,25 @@ G_M7781_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M7781_IG06
- ;; size=60 bbWeight=0.20 PerfScore 4.40
-G_M7781_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldr w0, [x19, #0x20]
- add w0, w0, #1
- str w0, [x19, #0x20]
- b G_M7781_IG02
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M7781_IG05: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cbnz w0, G_M7781_IG05
+ b G_M7781_IG06
+ ;; size=64 bbWeight=0.20 PerfScore 4.60
+G_M7781_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M7781_IG04
+ tbz w0, #7, G_M7781_IG06
;; size=20 bbWeight=0.20 PerfScore 1.10
+G_M7781_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ldr w0, [x19, #0x20]
+ add w0, w0, #1
+ str w0, [x19, #0x20]
+ ldr w0, [x19, #0x20]
+ ldr w1, [x19, #0x38]
+ cmp w0, w1
+ blt G_M7781_IG03
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M7781_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x19]
ldr x19, [sp, #0x18]
@@ -95,7 +99,7 @@ G_M7781_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 16, PerfScore 20.00, instruction count 37, allocated bytes for code 148 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 164, prolog size 16, PerfScore 20.20, instruction count 41, allocated bytes for code 164 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
; ============================================================
Unwind Info:
@@ -106,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,7 +9,7 @@
; 5 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 4.40) byref -> x19 this single-def
+; V00 this [V00,T00] ( 10, 4.40) byref -> x19 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T03] ( 3, 1.20) int -> x0 "Span.get_Item index"
; V03 tmp2 [V03,T02] ( 3, 1.20) byref -> x1 "Span.get_Item ptrToSpan"
@@ -60,7 +60,7 @@ G_M7781_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
ldrh w0, [x1, w0, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M7781_IG05
+ blo G_M7781_IG04
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; byrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
@@ -68,21 +68,25 @@ G_M7781_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M7781_IG06
- ;; size=60 bbWeight=0.20 PerfScore 4.40
-G_M7781_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldr w0, [x19, #0x20]
- add w0, w0, #1
- str w0, [x19, #0x20]
- b G_M7781_IG02
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M7781_IG05: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cbnz w0, G_M7781_IG05
+ b G_M7781_IG06
+ ;; size=64 bbWeight=0.20 PerfScore 4.60
+G_M7781_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M7781_IG04
+ tbz w0, #7, G_M7781_IG06
;; size=20 bbWeight=0.20 PerfScore 1.10
+G_M7781_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ldr w0, [x19, #0x20]
+ add w0, w0, #1
+ str w0, [x19, #0x20]
+ ldr w0, [x19, #0x20]
+ ldr w1, [x19, #0x38]
+ cmp w0, w1
+ blt G_M7781_IG03
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M7781_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x19]
ldr x19, [sp, #0x18]
@@ -95,7 +99,7 @@ G_M7781_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 16, PerfScore 20.00, instruction count 37, allocated bytes for code 148 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 164, prolog size 16, PerfScore 20.20, instruction count 41, allocated bytes for code 164 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
; ============================================================
Unwind Info:
@@ -106,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,7 +9,7 @@
; 5 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 4.40) byref -> x19 this single-def
+; V00 this [V00,T00] ( 10, 4.40) byref -> x19 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T03] ( 3, 1.20) int -> x0 "Span.get_Item index"
; V03 tmp2 [V03,T02] ( 3, 1.20) byref -> x1 "Span.get_Item ptrToSpan"
@@ -60,7 +60,7 @@ G_M7781_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
ldrh w0, [x1, w0, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M7781_IG05
+ blo G_M7781_IG04
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; byrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
@@ -68,21 +68,25 @@ G_M7781_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M7781_IG06
- ;; size=60 bbWeight=0.20 PerfScore 4.40
-G_M7781_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldr w0, [x19, #0x20]
- add w0, w0, #1
- str w0, [x19, #0x20]
- b G_M7781_IG02
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M7781_IG05: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cbnz w0, G_M7781_IG05
+ b G_M7781_IG06
+ ;; size=64 bbWeight=0.20 PerfScore 4.60
+G_M7781_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M7781_IG04
+ tbz w0, #7, G_M7781_IG06
;; size=20 bbWeight=0.20 PerfScore 1.10
+G_M7781_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ldr w0, [x19, #0x20]
+ add w0, w0, #1
+ str w0, [x19, #0x20]
+ ldr w0, [x19, #0x20]
+ ldr w1, [x19, #0x38]
+ cmp w0, w1
+ blt G_M7781_IG03
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M7781_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x19]
ldr x19, [sp, #0x18]
@@ -95,7 +99,7 @@ G_M7781_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 16, PerfScore 20.00, instruction count 37, allocated bytes for code 148 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 164, prolog size 16, PerfScore 20.20, instruction count 41, allocated bytes for code 164 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
; ============================================================
Unwind Info:
@@ -106,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -78,10 +78,8 @@ G_M49441_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M49441_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M49441_IG04
- cbz x1, G_M49441_IG07
- b G_M49441_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M49441_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M49441_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -92,31 +90,29 @@ G_M49441_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M49441_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M49441_IG07
ldr w3, [x1, #0x08]
- cbz w3, G_M49441_IG07
+ cbnz w3, G_M49441_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
+G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1]
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M49441_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x1]
add x4, x1, #12
; byrRegs +[x4]
mov x5, x4
; byrRegs +[x5]
sxtw w6, w3
- b G_M49441_IG08
- ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1]
- ; byrRegs -[x4-x5]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M49441_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0030 {x4 x5}, gcvars, byref, isz
- ; gcrRegs +[x1]
- ; byrRegs +[x4-x5]
cmp w6, #0
ble G_M49441_IG09
ldrh w5, [x5]
; byrRegs -[x5]
cmp w5, #47
beq G_M49441_IG04
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M49441_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
; gcrRegs -[x1]
add x0, x0, #12
@@ -139,7 +135,7 @@ G_M49441_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 132, prolog size 8, PerfScore 18.50, instruction count 33, allocated bytes for code 132 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 17.50, instruction count 31, allocated bytes for code 124 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -150,7 +146,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,90 +9,84 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 12, 8.50) byref -> x0 this single-def
-; V01 loc0 [V01,T01] ( 8, 5 ) ubyte -> x19
+; V01 loc0 [V01,T01] ( 8, 5 ) ubyte -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V04 tmp2 [V04,T07] ( 3, 1.50) int -> x1
; V05 tmp3 [V05,T08] ( 3, 1.50) int -> x1
;* V06 tmp4 [V06,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp5 [V07,T06] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
+; V07 tmp5 [V07,T06] ( 2, 2 ) byref -> x3 single-def "Inlining Arg"
;* V08 tmp6 [V08,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V10 tmp8 [V10,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V11 cse0 [V11,T05] ( 5, 2.50) int -> x1 "CSE - aggressive"
-; V12 cse1 [V12,T02] ( 8, 4 ) ref -> x21 multi-def "CSE - aggressive"
-; V13 cse2 [V13,T04] ( 5, 3.50) ref -> x1 multi-def "CSE - aggressive"
-; V14 cse3 [V14,T03] ( 6, 4 ) ref -> x20 "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 5, 2.50) int -> x3 "CSE - aggressive"
+; V12 cse1 [V12,T02] ( 8, 4 ) ref -> x4 multi-def "CSE - aggressive"
+; V13 cse2 [V13,T04] ( 5, 3.50) ref -> x3 multi-def "CSE - aggressive"
+; V14 cse3 [V14,T03] ( 6, 4 ) ref -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
G_M35532_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=16 bbWeight=1 PerfScore 3.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M35532_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w19, #1
- ldr x20, [x0]
- ; gcrRegs +[x20]
- cbz x20, G_M35532_IG04
+ mov w1, #1
+ ldr x2, [x0]
+ ; gcrRegs +[x2]
+ cbz x2, G_M35532_IG04
;; size=12 bbWeight=1 PerfScore 4.50
-G_M35532_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- ldr x1, [x0, #0x10]
- ; gcrRegs +[x1]
- cbnz x1, G_M35532_IG04
- ldr x21, [x0, #0x08]
- ; gcrRegs +[x21]
- cmp x21, #0
- csel w19, w19, wzr, ne
+G_M35532_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ ldr x3, [x0, #0x10]
+ ; gcrRegs +[x3]
+ cbnz x3, G_M35532_IG04
+ ldr x4, [x0, #0x08]
+ ; gcrRegs +[x4]
+ cmp x4, #0
+ csel w1, w1, wzr, ne
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M35532_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- ; gcrRegs -[x1 x21]
- ldr x1, [x0, #0x10]
- ; gcrRegs +[x1]
- cbz x1, G_M35532_IG06
+G_M35532_IG04: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ ; gcrRegs -[x3-x4]
+ ldr x3, [x0, #0x10]
+ ; gcrRegs +[x3]
+ cbz x3, G_M35532_IG06
;; size=8 bbWeight=1 PerfScore 4.00
-G_M35532_IG05: ; bbWeight=0.50, gcrefRegs=100002 {x1 x20}, byrefRegs=0001 {x0}, byref, isz
- ldr x21, [x0, #0x08]
- ; gcrRegs +[x21]
- cbz x21, G_M35532_IG06
- ldr w1, [x1, #0x08]
- ; gcrRegs -[x1]
- ldr w2, [x21, #0x08]
- cmp w1, w2
+G_M35532_IG05: ; bbWeight=0.50, gcrefRegs=000C {x2 x3}, byrefRegs=0001 {x0}, byref, isz
+ ldr x4, [x0, #0x08]
+ ; gcrRegs +[x4]
+ cbz x4, G_M35532_IG06
+ ldr w3, [x3, #0x08]
+ ; gcrRegs -[x3]
+ ldr w4, [x4, #0x08]
+ ; gcrRegs -[x4]
+ cmp w3, w4
bne G_M35532_IG06
- mov w19, wzr
+ mov w1, wzr
b G_M35532_IG07
;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M35532_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- ; gcrRegs -[x21]
- cbnz w19, G_M35532_IG14
+G_M35532_IG06: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ cbnz w1, G_M35532_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35532_IG07: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- add x1, x0, #24
- ; byrRegs +[x1]
- ldr w1, [x1, #0x40]
- ; byrRegs -[x1]
- cmp w1, #1
+G_M35532_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ add x3, x0, #24
+ ; byrRegs +[x3]
+ ldr w3, [x3, #0x40]
+ ; byrRegs -[x3]
+ cmp w3, #1
beq G_M35532_IG08
- cmp w1, #3
+ cmp w3, #3
beq G_M35532_IG08
- cmp w1, #2
+ cmp w3, #2
beq G_M35532_IG08
- cmp w1, #4
- beq G_M35532_IG08
- ldr w1, [x0, #0x58]
- cmp w1, #5
- bne G_M35532_IG14
- b G_M35532_IG11
- ;; size=56 bbWeight=0.50 PerfScore 7.50
-G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- cbz x20, G_M35532_IG09
- ldr w1, [x20, #0x08]
+ cmp w3, #4
+ bne G_M35532_IG11
+ ;; size=40 bbWeight=0.50 PerfScore 4.75
+G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ cbz x2, G_M35532_IG09
+ ldr w1, [x2, #0x08]
ldr x2, [x0, #0x28]
- ; gcrRegs +[x2]
ldr w2, [x2, #0x08]
; gcrRegs -[x2]
cmp w1, w2
@@ -100,34 +94,37 @@ G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x
b G_M35532_IG10
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M35532_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- ; gcrRegs -[x20]
mov w1, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M35532_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- uxtb w19, w1
+ uxtb w1, w1
b G_M35532_IG14
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M35532_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- ; gcrRegs +[x20]
- ldr x21, [x0, #0x08]
- ; gcrRegs +[x21]
- cbz x21, G_M35532_IG14
- cbz x20, G_M35532_IG12
- ldr w1, [x20, #0x08]
- ldr w2, [x21, #0x08]
+G_M35532_IG11: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ ; gcrRegs +[x2]
+ ldr w3, [x0, #0x58]
+ cmp w3, #5
+ bne G_M35532_IG14
+ ldr x4, [x0, #0x08]
+ ; gcrRegs +[x4]
+ cbz x4, G_M35532_IG14
+ cbz x2, G_M35532_IG12
+ ldr w1, [x2, #0x08]
+ ldr w2, [x4, #0x08]
+ ; gcrRegs -[x2]
cmp w1, w2
cset x1, ne
b G_M35532_IG13
- ;; size=32 bbWeight=0.50 PerfScore 6.50
+ ;; size=44 bbWeight=0.50 PerfScore 8.75
G_M35532_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- ; gcrRegs -[x20-x21]
+ ; gcrRegs -[x4]
mov w1, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M35532_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- uxtb w19, w1
+ uxtb w1, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M35532_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- cbnz w19, G_M35532_IG16
+ cbnz w1, G_M35532_IG16
add x0, x0, #24
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -135,12 +132,11 @@ G_M35532_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
ldr x1, [x1]
;; size=24 bbWeight=1 PerfScore 6.00
G_M35532_IG15: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x1
; gcr arg pop 0
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M35532_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -177,7 +173,7 @@ G_M35532_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 348, prolog size 16, PerfScore 55.50, instruction count 87, allocated bytes for code 348 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (Tier1)
+; Total bytes of code 336, prolog size 12, PerfScore 53.00, instruction count 84, allocated bytes for code 336 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (Tier1)
; ============================================================
Unwind Info:
@@ -188,7 +184,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 87 (0x00057) Actual length = 348 (0x00015c)
+ Function Length : 84 (0x00054) Actual length = 336 (0x000150)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -196,9 +192,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -154,10 +154,8 @@ G_M53601_IG02: ; bbWeight=1, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=00
;; size=4 bbWeight=1 PerfScore 1.00
G_M53601_IG03: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x0, #0x08]
- cbz w20, G_M53601_IG04
- cbz x1, G_M53601_IG06
- b G_M53601_IG05
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w20, G_M53601_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M53601_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -174,11 +172,10 @@ G_M53601_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M53601_IG05: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x19]
+ cbz x1, G_M53601_IG06
ldr w21, [x1, #0x08]
- cbz w21, G_M53601_IG06
- cbz x2, G_M53601_IG08
- b G_M53601_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w21, G_M53601_IG07
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M53601_IG06: ; bbWeight=0.50, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, x2
@@ -194,11 +191,10 @@ G_M53601_IG06: ; bbWeight=0.50, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=00
;; size=32 bbWeight=0.50 PerfScore 3.75
G_M53601_IG07: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x19]
+ cbz x2, G_M53601_IG08
ldr w22, [x2, #0x08]
- cbz w22, G_M53601_IG08
- cbz x19, G_M53601_IG10
- b G_M53601_IG09
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w22, G_M53601_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M53601_IG08: ; bbWeight=0.50, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x2, x19
@@ -213,16 +209,12 @@ G_M53601_IG08: ; bbWeight=0.50, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M53601_IG09: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x19]
+ cbz x19, G_M53601_IG10
ldr w23, [x19, #0x08]
- cbz w23, G_M53601_IG10
- add x3, x19, #12
- ; byrRegs +[x3]
- sxtw w4, w23
- b G_M53601_IG11
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ cbnz w23, G_M53601_IG11
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M53601_IG10: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- ; byrRegs -[x3]
movz x3, #0xD1FFAB1E // code for System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -231,9 +223,11 @@ G_M53601_IG10: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000
; gcrRegs -[x1-x2]
b G_M53601_IG15
;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M53601_IG11: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0008 {x3}, byref, isz
+G_M53601_IG11: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x19]
+ add x3, x19, #12
; byrRegs +[x3]
+ sxtw w4, w23
cmp w4, #0
ble G_M53601_IG12
ldrh w3, [x3]
@@ -242,7 +236,7 @@ G_M53601_IG11: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs
bne G_M53601_IG12
mov x0, x19
b G_M53601_IG15
- ;; size=28 bbWeight=0.50 PerfScore 3.75
+ ;; size=36 bbWeight=0.50 PerfScore 4.25
G_M53601_IG12: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
add x24, x2, #12
; byrRegs +[x24]
@@ -331,7 +325,7 @@ G_M53601_IG15: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
-; Total bytes of code 476, prolog size 24, PerfScore 65.75, instruction count 119, allocated bytes for code 476 (MethodHash=75ef2e9e) for method System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
+; Total bytes of code 460, prolog size 24, PerfScore 63.75, instruction count 115, allocated bytes for code 460 (MethodHash=75ef2e9e) for method System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -342,7 +336,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 119 (0x00077) Actual length = 476 (0x0001dc)
+ Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -22,26 +22,20 @@ G_M65033_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x0C]
cmp w1, #1
- beq G_M65033_IG05
+ beq G_M65033_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M65033_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
cmp w1, #2
- bne G_M65033_IG07
+ bne G_M65033_IG08
ldr w1, [x0, #0x10]
add w1, w1, #1
str w1, [x0, #0x10]
ldr w2, [x0, #0x18]
cmp w1, w2
- beq G_M65033_IG07
- mov w0, #1
- ; gcrRegs -[x0]
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M65033_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
+ beq G_M65033_IG08
+ b G_M65033_IG06
+ ;; size=36 bbWeight=0.50 PerfScore 5.75
+G_M65033_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w1, [x0, #0x14]
str w1, [x0, #0x10]
mov w1, #2
@@ -49,23 +43,30 @@ G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov w0, #1
; gcrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M65033_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M65033_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M65033_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M65033_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movn w1, #0
str w1, [x0, #0x0C]
mov w0, wzr
; gcrRegs -[x0]
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 112, prolog size 8, PerfScore 18.50, instruction count 28, allocated bytes for code 112 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 19.00, instruction count 29, allocated bytes for code 116 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -76,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -37,73 +37,77 @@ G_M3894_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
add x1, x0, x1
mov w4, wzr
cmp x0, x1
- bhs G_M3894_IG11
+ bhs G_M3894_IG05
;; size=20 bbWeight=1 PerfScore 3.50
G_M3894_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add x5, x0, #2
ldrh w0, [x0]
cmp w0, #128
- bge G_M3894_IG05
+ bge G_M3894_IG06
;; size=16 bbWeight=4 PerfScore 20.00
G_M3894_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #1
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M3894_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
- cmp w0, #0xD1FFAB1E
- bge G_M3894_IG06
- mov w6, #2
- b G_M3894_IG08
- ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ mov x5, x0
+ b G_M3894_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M3894_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ bge G_M3894_IG07
+ mov w6, #2
+ b G_M3894_IG09
+ ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
movn w6, #0xD1FFAB1E
add w0, w0, w6
mov w6, #0xD1FFAB1E
cmp x5, x1
ccmp w0, w6, c, lo
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
ldrh w0, [x5]
movn w6, #0xD1FFAB1E
add w0, w0, w6
cmp w0, #0xD1FFAB1E
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
mov w6, #4
add x5, x5, #2
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=56 bbWeight=2 PerfScore 22.00
-G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+G_M3894_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #3
;; size=4 bbWeight=2 PerfScore 1.00
-G_M3894_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+G_M3894_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add w0, w4, w6
cmp w0, w2
- bgt G_M3894_IG10
+ bgt G_M3894_IG11
sxtw w4, w0
cmp x5, x1
+ blo G_M3894_IG10
+ b G_M3894_IG12
+ ;; size=28 bbWeight=4 PerfScore 20.00
+G_M3894_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov x0, x5
- blo G_M3894_IG03
- ;; size=28 bbWeight=4 PerfScore 18.00
-G_M3894_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- b G_M3894_IG11
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3894_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ b G_M3894_IG03
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M3894_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w0, #1
cmp w6, #4
cinc w0, w0, ge
sbfiz x0, x0, #1, #32
sub x5, x5, x0
- mov x0, x5
- ;; size=24 bbWeight=0.50 PerfScore 1.75
-G_M3894_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- str x0, [x3]
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
+G_M3894_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ str x5, [x3]
mov w0, w4
;; size=8 bbWeight=1 PerfScore 1.50
-G_M3894_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M3894_IG13: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 80.75, instruction count 50, allocated bytes for code 200 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (Tier1)
+; Total bytes of code 208, prolog size 8, PerfScore 85.75, instruction count 52, allocated bytes for code 208 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (Tier1)
; ============================================================
Unwind Info:
@@ -114,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -13,59 +13,69 @@
; V02 arg2 [V02,T07] ( 10, 91 ) ref -> x2 class-hnd single-def <int[,,]>
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
; V04 loc1 [V04,T10] ( 7, 48 ) int -> x5
-; V05 loc2 [V05,T09] ( 7, 60 ) int -> registers
+; V05 loc2 [V05,T09] ( 7, 60 ) int -> x4
; V06 loc3 [V06,T08] ( 7, 90 ) int -> x3
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T01] ( 3, 96 ) int -> x13 "MD array shared temp"
-; V09 tmp2 [V09,T02] ( 3, 96 ) int -> x12 "MD array shared temp"
-; V10 tmp3 [V10,T03] ( 3, 96 ) int -> x12 "MD array shared temp"
-; V11 tmp4 [V11,T04] ( 3, 96 ) int -> x14 "MD array shared temp"
-; V12 tmp5 [V12,T05] ( 3, 96 ) int -> x12 "MD array shared temp"
-; V13 tmp6 [V13,T06] ( 3, 96 ) int -> x15 "MD array shared temp"
-; V14 cse0 [V14,T16] ( 3, 24.01) int -> x7 hoist "CSE - aggressive"
-; V15 cse1 [V15,T20] ( 3, 11 ) int -> x4 hoist "CSE - aggressive"
-; V16 cse2 [V16,T19] ( 3, 18 ) int -> x3 "CSE - aggressive"
-; V17 cse3 [V17,T17] ( 2, 20 ) int -> x10 hoist "CSE - aggressive"
-; V18 cse4 [V18,T25] ( 2, 0.02) int -> x7 hoist "CSE - aggressive"
-; V19 cse5 [V19,T23] ( 3, 2.02) int -> x6 hoist "CSE - aggressive"
-; V20 cse6 [V20,T22] ( 3, 4 ) int -> x10 hoist "CSE - aggressive"
-; V21 cse7 [V21,T24] ( 2, 1.01) int -> x9 hoist "CSE - moderate"
-; V22 cse8 [V22,T21] ( 2, 8.01) int -> x8 hoist "CSE - aggressive"
-; V23 cse9 [V23,T18] ( 2, 20 ) int -> x11 hoist "CSE - aggressive"
-; V24 cse10 [V24,T11] ( 3, 48 ) int -> x14 "CSE - aggressive"
-; V25 cse11 [V25,T12] ( 3, 48 ) int -> x14 "CSE - aggressive"
-; V26 cse12 [V26,T13] ( 3, 48 ) int -> x15 "CSE - aggressive"
-; V27 cse13 [V27,T14] ( 3, 48 ) int -> x12 "CSE - aggressive"
+; V08 tmp1 [V08,T01] ( 3, 96 ) int -> x8 "MD array shared temp"
+; V09 tmp2 [V09,T02] ( 3, 96 ) int -> x10 "MD array shared temp"
+; V10 tmp3 [V10,T03] ( 3, 96 ) int -> x10 "MD array shared temp"
+; V11 tmp4 [V11,T04] ( 3, 96 ) int -> x9 "MD array shared temp"
+; V12 tmp5 [V12,T05] ( 3, 96 ) int -> x10 "MD array shared temp"
+; V13 tmp6 [V13,T06] ( 3, 96 ) int -> x11 "MD array shared temp"
+; V14 cse0 [V14,T16] ( 3, 24.01) int -> x21 hoist "CSE - aggressive"
+; V15 cse1 [V15,T20] ( 3, 11 ) int -> x25 hoist "CSE - aggressive"
+; V16 cse2 [V16,T19] ( 3, 18 ) int -> x23 "CSE - aggressive"
+; V17 cse3 [V17,T17] ( 2, 20 ) int -> x6 hoist "CSE - aggressive"
+; V18 cse4 [V18,T25] ( 2, 0.02) int -> x6 hoist "CSE - aggressive"
+; V19 cse5 [V19,T23] ( 3, 2.02) int -> x19 hoist "CSE - aggressive"
+; V20 cse6 [V20,T22] ( 3, 4 ) int -> x24 hoist "CSE - aggressive"
+; V21 cse7 [V21,T24] ( 2, 1.01) int -> x22 hoist "CSE - moderate"
+; V22 cse8 [V22,T21] ( 2, 8.01) int -> x20 hoist "CSE - aggressive"
+; V23 cse9 [V23,T18] ( 2, 20 ) int -> x7 hoist "CSE - aggressive"
+; V24 cse10 [V24,T11] ( 3, 48 ) int -> x9 "CSE - aggressive"
+; V25 cse11 [V25,T12] ( 3, 48 ) int -> x9 "CSE - aggressive"
+; V26 cse12 [V26,T13] ( 3, 48 ) int -> x11 "CSE - aggressive"
+; V27 cse13 [V27,T14] ( 3, 48 ) int -> x10 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M4144_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x50]!
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ str x25, [sp, #0x48]
mov fp, sp
- ldr w0, [fp, #0x5C]
- ldp x2, x1, [fp, #0x48]
+ ldr w0, [fp, #0x9C]
+ ldp x2, x1, [fp, #0x88]
; gcrRegs +[x1-x2]
- ldp w4, w5, [fp, #0x3C]
- ldr w3, [fp, #0x38]
- ;; size=24 bbWeight=0.01 PerfScore 0.11
+ ldp w4, w5, [fp, #0x7C]
+ ldr w3, [fp, #0x78]
+ ;; size=40 bbWeight=0.01 PerfScore 0.14
G_M4144_IG02: ; bbWeight=0.01, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ldr w6, [x1, #0x24]
- ldp w8, w7, [x1, #0x14]
- add w7, w6, w7
- sub w7, w7, #1
- ldr w9, [x1, #0x10]
- b G_M4144_IG12
+ ldr w19, [x1, #0x24]
+ ldp w20, w6, [x1, #0x14]
+ add w6, w19, w6
+ sub w21, w6, #1
+ ldr w22, [x1, #0x10]
+ b G_M4144_IG11
;; size=24 bbWeight=0.01 PerfScore 0.11
-G_M4144_IG03: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- sxtw w5, w10
- cmp w4, w5
- bge G_M4144_IG07
+G_M4144_IG03: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ ldr w24, [x1, #0x1C]
+ add w3, w24, w22
+ sub w25, w3, #1
+ b G_M4144_IG09
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M4144_IG04: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+ sxtw w5, w24
+ cmp w25, w5
+ bge G_M4144_IG08
;; size=12 bbWeight=2 PerfScore 4.00
-G_M4144_IG04: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4144_IG05: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
sub w0, w0, #1
- cbnz w0, G_M4144_IG03
+ cbnz w0, G_M4144_IG04
;; size=8 bbWeight=8 PerfScore 12.00
-G_M4144_IG05: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+G_M4144_IG06: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
mov x1, x2
@@ -78,115 +88,109 @@ G_M4144_IG05: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, by
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 6.50
-G_M4144_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+G_M4144_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x25, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x50
add sp, sp, #80
ret lr
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M4144_IG07: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=1 PerfScore 7.50
+G_M4144_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1-x2]
- ldr w11, [x1, #0x20]
- cmp w3, w11
+ ldr w4, [x1, #0x20]
+ cmp w23, w4
bge G_M4144_IG10
;; size=12 bbWeight=2 PerfScore 9.00
-G_M4144_IG08: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4144_IG09: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
add w5, w5, #1
- cmp w4, w5
- bge G_M4144_IG07
- ;; size=12 bbWeight=8 PerfScore 16.00
-G_M4144_IG09: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- b G_M4144_IG04
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M4144_IG10: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- mov w4, w11
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M4144_IG11: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- sxtw w3, w6
+ cmp w25, w5
+ bge G_M4144_IG08
+ b G_M4144_IG05
+ ;; size=16 bbWeight=8 PerfScore 24.00
+G_M4144_IG10: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ sxtw w3, w19
;; size=4 bbWeight=2 PerfScore 1.00
-G_M4144_IG12: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- cmp w7, w3
- blt G_M4144_IG15
+G_M4144_IG11: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+ cmp w21, w3
+ blt G_M4144_IG14
;; size=8 bbWeight=8 PerfScore 12.00
-G_M4144_IG13: ; bbWeight=4, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ldr w10, [x2, #0x1C]
- sub w10, w5, w10
- ldr w11, [x2, #0x10]
+G_M4144_IG12: ; bbWeight=4, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ ldr w6, [x2, #0x1C]
+ sub w6, w5, w6
+ ldr w7, [x2, #0x10]
;; size=12 bbWeight=4 PerfScore 26.00
-G_M4144_IG14: ; bbWeight=16, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- sxtw w13, w10
- cmp w13, w11
- bhs G_M4144_IG17
- ldr w14, [x2, #0x14]
- ldr w12, [x2, #0x20]
- sub w12, w4, w12
- cmp w12, w14
- bhs G_M4144_IG17
- madd w13, w13, w14, w12
- ldr w14, [x2, #0x18]
- ldr w12, [x2, #0x24]
- sub w12, w3, w12
- cmp w12, w14
- bhs G_M4144_IG17
- madd w13, w13, w14, w12
- ubfiz x13, x13, #2, #32
- add x13, x13, #40
- ldr w14, [x1, #0x1C]
- sub w14, w5, w14
- ldp w12, w15, [x1, #0x10]
- cmp w14, w12
- bhs G_M4144_IG17
- ldr w12, [x1, #0x20]
- sub w12, w4, w12
- cmp w12, w15
- bhs G_M4144_IG17
- madd w14, w14, w15, w12
- ldr w12, [x1, #0x18]
- ldr w15, [x1, #0x24]
- sub w15, w3, w15
- cmp w15, w12
- bhs G_M4144_IG17
- madd w14, w14, w12, w15
- ubfiz x14, x14, #2, #32
- add x14, x14, #40
- ldr w14, [x1, x14]
- str w14, [x2, x13]
+G_M4144_IG13: ; bbWeight=16, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+ sxtw w8, w6
+ cmp w8, w7
+ bhs G_M4144_IG15
+ ldr w9, [x2, #0x14]
+ ldr w10, [x2, #0x20]
+ sub w10, w4, w10
+ cmp w10, w9
+ bhs G_M4144_IG15
+ madd w8, w8, w9, w10
+ ldr w9, [x2, #0x18]
+ ldr w10, [x2, #0x24]
+ sub w10, w3, w10
+ cmp w10, w9
+ bhs G_M4144_IG15
+ madd w8, w8, w9, w10
+ ubfiz x8, x8, #2, #32
+ add x8, x8, #40
+ ldr w9, [x1, #0x1C]
+ sub w9, w5, w9
+ ldp w10, w11, [x1, #0x10]
+ cmp w9, w10
+ bhs G_M4144_IG15
+ ldr w10, [x1, #0x20]
+ sub w10, w4, w10
+ cmp w10, w11
+ bhs G_M4144_IG15
+ madd w9, w9, w11, w10
+ ldr w10, [x1, #0x18]
+ ldr w11, [x1, #0x24]
+ sub w11, w3, w11
+ cmp w11, w10
+ bhs G_M4144_IG15
+ madd w9, w9, w10, w11
+ ubfiz x9, x9, #2, #32
+ add x9, x9, #40
+ ldr w9, [x1, x9]
+ str w9, [x2, x8]
add w3, w3, #1
...
@@ -13,7 +13,7 @@
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 3, 3 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
@@ -21,72 +21,71 @@
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref single-def
-; V13 tmp4 [V13,T11] ( 2, 2 ) int -> x1
+;* V13 tmp4 [V13,T10] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref single-def
-;* V16 tmp7 [V16,T30] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T12] ( 2, 2 ) int -> x1 single-def
+;* V16 tmp7 [V16,T29] ( 0, 0 ) int -> zero-ref
+;* V17 tmp8 [V17,T11] ( 0, 0 ) int -> zero-ref single-def
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref single-def
-; V19 tmp10 [V19,T13] ( 2, 2 ) int -> x2
-; V20 tmp11 [V20,T14] ( 2, 2 ) int -> x1 single-def
+;* V19 tmp10 [V19,T12] ( 0, 0 ) int -> zero-ref
+;* V20 tmp11 [V20,T13] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref single-def
-; V22 tmp13 [V22,T15] ( 2, 2 ) int -> x0
-; V23 tmp14 [V23,T16] ( 2, 2 ) int -> x0 single-def
+;* V22 tmp13 [V22,T14] ( 0, 0 ) int -> zero-ref
+;* V23 tmp14 [V23,T15] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref single-def
-;* V25 tmp16 [V25,T31] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T17] ( 2, 2 ) int -> x0 single-def
+;* V25 tmp16 [V25,T30] ( 0, 0 ) int -> zero-ref
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29,T16] ( 0, 0 ) int -> zero-ref single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref single-def
-;* V32 tmp23 [V32,T32] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32,T31] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref single-def
-;* V34 tmp25 [V34,T33] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V34 tmp25 [V34,T32] ( 0, 0 ) int -> zero-ref
+;* V35 tmp26 [V35,T17] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref single-def
-;* V37 tmp28 [V37,T20] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V37 tmp28 [V37,T18] ( 0, 0 ) int -> zero-ref
+;* V38 tmp29 [V38,T19] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref single-def
-;* V40 tmp31 [V40,T34] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V40 tmp31 [V40,T33] ( 0, 0 ) int -> zero-ref
+;* V41 tmp32 [V41,T20] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref single-def
-;* V43 tmp34 [V43,T23] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T35] ( 0, 0 ) int -> zero-ref single-def
+;* V43 tmp34 [V43,T21] ( 0, 0 ) int -> zero-ref
+;* V44 tmp35 [V44,T34] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref single-def
-;* V46 tmp37 [V46,T36] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T24] ( 2, 2 ) int -> x0 single-def
+;* V46 tmp37 [V46,T35] ( 0, 0 ) int -> zero-ref
+;* V47 tmp38 [V47,T22] ( 0, 0 ) int -> zero-ref single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref single-def
-;* V49 tmp40 [V49,T37] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T25] ( 2, 2 ) int -> x0 single-def
+;* V49 tmp40 [V49,T36] ( 0, 0 ) int -> zero-ref
+;* V50 tmp41 [V50,T23] ( 0, 0 ) int -> zero-ref single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref single-def
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref single-def
-;* V53 tmp44 [V53,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T38] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56,T37] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref single-def
-;* V58 tmp49 [V58,T39] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T27] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp49 [V58,T38] ( 0, 0 ) int -> zero-ref
+;* V59 tmp50 [V59,T24] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref single-def
-;* V61 tmp52 [V61,T28] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T29] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp52 [V61,T25] ( 0, 0 ) int -> zero-ref
+;* V62 tmp53 [V62,T26] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref single-def
-;* V64 tmp55 [V64,T40] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T41] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp55 [V64,T39] ( 0, 0 ) int -> zero-ref
+;* V65 tmp56 [V65,T40] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref single-def
-;* V67 tmp58 [V67,T42] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T43] ( 0, 0 ) int -> zero-ref single-def
+;* V67 tmp58 [V67,T41] ( 0, 0 ) int -> zero-ref
+; V68 tmp59 [V68,T27] ( 2, 2 ) int -> x1 single-def
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref single-def
-;* V70 tmp61 [V70,T44] ( 0, 0 ) int -> zero-ref
-;* V71 cse0 [V71,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
-; V72 cse1 [V72,T03] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V73 cse2 [V73,T09] ( 2, 2 ) int -> x0 "CSE - moderate"
-; V74 cse3 [V74,T01] ( 2, 2 ) int -> x2 "CSE - moderate"
-; V75 cse4 [V75,T04] ( 2, 2 ) int -> x1 "CSE - moderate"
+; V70 tmp61 [V70,T28] ( 2, 2 ) int -> x0
+;* V71 cse0 [V71,T03] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V72 cse1 [V72,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+;* V73 cse2 [V73,T09] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V74 cse3 [V74,T01] ( 2, 2 ) int -> x1 "CSE - moderate"
+;* V75 cse4 [V75,T04] ( 0, 0 ) int -> zero-ref "CSE - moderate"
; V76 cse5 [V76,T05] ( 2, 2 ) int -> x0 "CSE - moderate"
; V77 cse6 [V77,T06] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V78 cse7 [V78,T10] ( 2, 2 ) int -> x0 "CSE - moderate"
;
; Lcl frame size = 8
@@ -137,24 +136,17 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w1, #12
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldp w0, w1, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ ;; size=148 bbWeight=1 PerfScore 26.50
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 172, prolog size 12, PerfScore 33.00, instruction count 43, allocated bytes for code 172 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -165,7 +157,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,79 +10,78 @@
;
;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc2 [V02,T03] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V02 loc2 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd exact single-def <testout1>
; V03 loc3 [V03,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
; V06 tmp2 [V06,T00] ( 3, 6 ) ref -> x0 class-hnd exact single-def "dup spill" <<unknown class>>
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref single-def
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref single-def
-; V09 tmp5 [V09,T11] ( 2, 2 ) int -> x1
+;* V09 tmp5 [V09,T10] ( 0, 0 ) int -> zero-ref
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref single-def
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref single-def
-;* V12 tmp8 [V12,T30] ( 0, 0 ) int -> zero-ref
-; V13 tmp9 [V13,T12] ( 2, 2 ) int -> x1 single-def
+;* V12 tmp8 [V12,T29] ( 0, 0 ) int -> zero-ref
+;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref single-def
-; V15 tmp11 [V15,T13] ( 2, 2 ) int -> x2
-; V16 tmp12 [V16,T14] ( 2, 2 ) int -> x1 single-def
+;* V15 tmp11 [V15,T12] ( 0, 0 ) int -> zero-ref
+;* V16 tmp12 [V16,T13] ( 0, 0 ) int -> zero-ref single-def
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref single-def
-; V18 tmp14 [V18,T15] ( 2, 2 ) int -> x0
-; V19 tmp15 [V19,T16] ( 2, 2 ) int -> x0 single-def
+;* V18 tmp14 [V18,T14] ( 0, 0 ) int -> zero-ref
+;* V19 tmp15 [V19,T15] ( 0, 0 ) int -> zero-ref single-def
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref single-def
-;* V21 tmp17 [V21,T31] ( 0, 0 ) int -> zero-ref
-; V22 tmp18 [V22,T17] ( 2, 2 ) int -> x0 single-def
+;* V21 tmp17 [V21,T30] ( 0, 0 ) int -> zero-ref
+;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref
-;* V25 tmp21 [V25,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V25 tmp21 [V25,T16] ( 0, 0 ) int -> zero-ref single-def
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref single-def
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref single-def
-;* V28 tmp24 [V28,T32] ( 0, 0 ) int -> zero-ref single-def
+;* V28 tmp24 [V28,T31] ( 0, 0 ) int -> zero-ref single-def
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref single-def
-;* V30 tmp26 [V30,T33] ( 0, 0 ) int -> zero-ref
-;* V31 tmp27 [V31,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V30 tmp26 [V30,T32] ( 0, 0 ) int -> zero-ref
+;* V31 tmp27 [V31,T17] ( 0, 0 ) int -> zero-ref single-def
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref single-def
-;* V33 tmp29 [V33,T20] ( 0, 0 ) int -> zero-ref
-;* V34 tmp30 [V34,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V33 tmp29 [V33,T18] ( 0, 0 ) int -> zero-ref
+;* V34 tmp30 [V34,T19] ( 0, 0 ) int -> zero-ref single-def
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref single-def
-;* V36 tmp32 [V36,T34] ( 0, 0 ) int -> zero-ref
-;* V37 tmp33 [V37,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V36 tmp32 [V36,T33] ( 0, 0 ) int -> zero-ref
+;* V37 tmp33 [V37,T20] ( 0, 0 ) int -> zero-ref single-def
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref single-def
-;* V39 tmp35 [V39,T23] ( 0, 0 ) int -> zero-ref
-;* V40 tmp36 [V40,T35] ( 0, 0 ) int -> zero-ref single-def
+;* V39 tmp35 [V39,T21] ( 0, 0 ) int -> zero-ref
+;* V40 tmp36 [V40,T34] ( 0, 0 ) int -> zero-ref single-def
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref single-def
-;* V42 tmp38 [V42,T36] ( 0, 0 ) int -> zero-ref
-; V43 tmp39 [V43,T24] ( 2, 2 ) int -> x0 single-def
+;* V42 tmp38 [V42,T35] ( 0, 0 ) int -> zero-ref
+;* V43 tmp39 [V43,T22] ( 0, 0 ) int -> zero-ref single-def
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref single-def
-;* V45 tmp41 [V45,T37] ( 0, 0 ) int -> zero-ref
-; V46 tmp42 [V46,T25] ( 2, 2 ) int -> x0 single-def
+;* V45 tmp41 [V45,T36] ( 0, 0 ) int -> zero-ref
+;* V46 tmp42 [V46,T23] ( 0, 0 ) int -> zero-ref single-def
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref single-def
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref single-def
-;* V49 tmp45 [V49,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V49 tmp45 [V49 ] ( 0, 0 ) int -> zero-ref
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp48 [V52,T38] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp48 [V52,T37] ( 0, 0 ) int -> zero-ref single-def
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref single-def
-;* V54 tmp50 [V54,T39] ( 0, 0 ) int -> zero-ref
-;* V55 tmp51 [V55,T27] ( 0, 0 ) int -> zero-ref single-def
+;* V54 tmp50 [V54,T38] ( 0, 0 ) int -> zero-ref
+;* V55 tmp51 [V55,T24] ( 0, 0 ) int -> zero-ref single-def
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref single-def
-;* V57 tmp53 [V57,T28] ( 0, 0 ) int -> zero-ref
-;* V58 tmp54 [V58,T29] ( 0, 0 ) int -> zero-ref single-def
+;* V57 tmp53 [V57,T25] ( 0, 0 ) int -> zero-ref
+;* V58 tmp54 [V58,T26] ( 0, 0 ) int -> zero-ref single-def
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref single-def
-;* V60 tmp56 [V60,T40] ( 0, 0 ) int -> zero-ref
-;* V61 tmp57 [V61,T41] ( 0, 0 ) int -> zero-ref single-def
+;* V60 tmp56 [V60,T39] ( 0, 0 ) int -> zero-ref
+;* V61 tmp57 [V61,T40] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref single-def
-;* V63 tmp59 [V63,T42] ( 0, 0 ) int -> zero-ref
-;* V64 tmp60 [V64,T43] ( 0, 0 ) int -> zero-ref single-def
+;* V63 tmp59 [V63,T41] ( 0, 0 ) int -> zero-ref
+; V64 tmp60 [V64,T27] ( 2, 2 ) int -> x1 single-def
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref single-def
-;* V66 tmp62 [V66,T44] ( 0, 0 ) int -> zero-ref
-;* V67 cse0 [V67,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
-; V68 cse1 [V68,T04] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V69 cse2 [V69,T09] ( 2, 2 ) int -> x0 "CSE - moderate"
-; V70 cse3 [V70,T02] ( 2, 2 ) int -> x2 "CSE - moderate"
-; V71 cse4 [V71,T05] ( 2, 2 ) int -> x1 "CSE - moderate"
+; V66 tmp62 [V66,T28] ( 2, 2 ) int -> x0
+;* V67 cse0 [V67,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V68 cse1 [V68,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+;* V69 cse2 [V69,T09] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V70 cse3 [V70,T02] ( 2, 2 ) int -> x1 "CSE - moderate"
+;* V71 cse4 [V71,T05] ( 0, 0 ) int -> zero-ref "CSE - moderate"
; V72 cse5 [V72,T06] ( 2, 2 ) int -> x0 "CSE - moderate"
; V73 cse6 [V73,T07] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V74 cse7 [V74,T10] ( 2, 2 ) int -> x0 "CSE - moderate"
;
; Lcl frame size = 8
@@ -133,24 +132,17 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w1, #12
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldp w0, w1, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ ;; size=148 bbWeight=1 PerfScore 26.50
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 172, prolog size 12, PerfScore 33.00, instruction count 43, allocated bytes for code 172 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -161,7 +153,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -11,17 +11,15 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 4, 3.50) ref -> x21 class-hnd single-def <System.Type>
-; V03 arg3 [V03,T01] ( 7, 4.25) ref -> x20 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T01] ( 6, 4 ) ref -> x20 class-hnd single-def <System.Object>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp2 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp3 [V08,T10] ( 0, 0 ) int -> zero-ref
-; V09 tmp4 [V09,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V10 tmp5 [V10,T05] ( 3, 1.50) ref -> x4 class-hnd "Inline return value spill temp" <<unknown class>>
-; V11 cse0 [V11,T04] ( 4, 1.75) long -> x0 "CSE - moderate"
-; V12 cse1 [V12,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V13 cse2 [V13,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V07 tmp2 [V07,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp3 [V08,T08] ( 0, 0 ) int -> zero-ref
+; V09 tmp4 [V09,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V10 tmp5 [V10,T04] ( 3, 1.50) ref -> x4 class-hnd "Inline return value spill temp" <<unknown class>>
+; V11 cse0 [V11,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
; Lcl frame size = 8
@@ -38,36 +36,34 @@ G_M32564_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=28 bbWeight=1 PerfScore 5.00
G_M32564_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x21, x1
- bne G_M32564_IG07
- ;; size=20 bbWeight=1 PerfScore 3.00
-G_M32564_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M32564_IG07
- ldr x1, [x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- bne G_M32564_IG07
- cmp x1, x0
- beq G_M32564_IG05
- ;; size=36 bbWeight=0.50 PerfScore 4.25
-G_M32564_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x21]
- mov x1, x20
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
+ cmp x21, x0
+ bne G_M32564_IG04
+ ;; size=20 bbWeight=1 PerfScore 3.00
+G_M32564_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M32564_IG04
+ ldr x0, [x20]
+ movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M32564_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ cmp x0, x2
+ beq G_M32564_IG06
+ ;; size=28 bbWeight=0.50 PerfScore 3.50
+G_M32564_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M32564_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
+G_M32564_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M32564_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x19 x21]
ldrb w0, [x20, #0x08]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
@@ -80,34 +76,23 @@ G_M32564_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
;; size=40 bbWeight=0.50 PerfScore 6.25
-G_M32564_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x3
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M32564_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M32564_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x2] +[x19 x21]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M32564_IG09
- ;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M32564_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M32564_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M32564_IG11
+ beq G_M32564_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M32564_IG10: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M32564_IG09: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -119,7 +104,7 @@ G_M32564_IG10: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M32564_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M32564_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -137,7 +122,7 @@ G_M32564_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
ldr x4, [x4, #0x18]
; gcrRegs -[x4]
;; size=36 bbWeight=0.50 PerfScore 6.00
-G_M32564_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
@@ -145,7 +130,7 @@ G_M32564_IG12: ; bbWeight=0.50, epilog, nogc, extend
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 296, prolog size 28, PerfScore 40.62, instruction count 74, allocated bytes for code 296 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
+; Total bytes of code 264, prolog size 28, PerfScore 38.38, instruction count 66, allocated bytes for code 264 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
; ============================================================
Unwind Info:
@@ -156,7 +141,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,84 +8,83 @@
; 0 inlinees with PGO data; 25 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> x4
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T06] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T09] ( 2, 2 ) int -> x1 single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T10] ( 2, 2 ) int -> x1 single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp11 [V20,T11] ( 2, 2 ) int -> x1 single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T12] ( 2, 2 ) int -> x0 single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T13] ( 2, 2 ) int -> x0 single-def
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T17] ( 2, 2 ) int -> x0 single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T18] ( 2, 2 ) int -> x0 single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T07] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T26] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T08] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V75 cse4 [V75,T03] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T04] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V77 cse6 [V77,T05] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> x1 "CSE - aggressive"
+; V72 cse1 [V72,T09] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V73 cse2 [V73,T03] ( 4, 4 ) int -> x2 "CSE - aggressive"
+; V74 cse3 [V74,T04] ( 4, 4 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T05] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T06] ( 4, 4 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -133,27 +132,35 @@ G_M37238_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w2, [x1]
mov w2, #0xD1FFAB1E
strh w2, [x1, #0x04]
- movn w1, #12
- str w1, [x19, #0x08]
+ movn w2, #12
+ str w2, [x19, #0x08]
+ mov w2, #0xD1FFAB1E
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldr w2, [x19, #0x08]
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w4, w2, w3
+ add w4, w4, w0
+ add w4, w4, #17
+ ldr w1, [x1]
+ add w4, w4, w1
+ add w1, w4, w2
+ add w1, w1, w3
+ add w4, w1, #10
+ add w4, w4, w0
+ add w4, w4, w2
+ add w1, w4, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ add w4, w0, #17
+ mov w0, w4
+ ;; size=208 bbWeight=1 PerfScore 39.00
G_M37238_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=bccd6e89) for method testout1:Sub_Funclet_145():int (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 45.50, instruction count 58, allocated bytes for code 232 (MethodHash=bccd6e89) for method testout1:Sub_Funclet_145():int (FullOpts)
; ============================================================
Unwind Info:
@@ -164,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,84 +8,83 @@
; 0 inlinees with PGO data; 33 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> x4
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T06] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T09] ( 2, 2 ) int -> x1 single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T10] ( 2, 2 ) int -> x1 single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp11 [V20,T11] ( 2, 2 ) int -> x1 single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T12] ( 2, 2 ) int -> x0 single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T13] ( 2, 2 ) int -> x0 single-def
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-;* V32 tmp23 [V32,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T17] ( 2, 2 ) int -> x0 single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T18] ( 2, 2 ) int -> x0 single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T07] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T26] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T08] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V75 cse4 [V75,T03] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T04] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V77 cse6 [V77,T05] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> x1 "CSE - aggressive"
+; V72 cse1 [V72,T09] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V73 cse2 [V73,T03] ( 4, 4 ) int -> x2 "CSE - aggressive"
+; V74 cse3 [V74,T04] ( 4, 4 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T05] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T06] ( 4, 4 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -133,27 +132,35 @@ G_M51184_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w2, [x1]
mov w2, #0xD1FFAB1E
strh w2, [x1, #0x04]
- movn w1, #12
- str w1, [x19, #0x08]
+ movn w2, #12
+ str w2, [x19, #0x08]
+ mov w2, #0xD1FFAB1E
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldr w2, [x19, #0x08]
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w4, w2, w3
+ add w4, w4, w0
+ add w4, w4, #17
+ ldr w1, [x1]
+ add w4, w4, w1
+ add w1, w4, w2
+ add w1, w1, w3
+ add w4, w1, #10
+ add w4, w4, w0
+ add w4, w4, w2
+ add w1, w4, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ add w4, w0, #17
+ mov w0, w4
+ ;; size=208 bbWeight=1 PerfScore 39.00
G_M51184_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=0d8a380f) for method testout1:Sub_Funclet_107():int (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 45.50, instruction count 58, allocated bytes for code 232 (MethodHash=0d8a380f) for method testout1:Sub_Funclet_107():int (FullOpts)
; ============================================================
Unwind Info:
@@ -164,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,84 +8,83 @@
; 0 inlinees with PGO data; 29 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> x4
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T05] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T09] ( 2, 2 ) int -> x1 single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp11 [V20,T10] ( 2, 2 ) int -> x1 single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T11] ( 2, 2 ) int -> x0 single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T12] ( 2, 2 ) int -> x0 single-def
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-;* V32 tmp23 [V32,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T16] ( 2, 2 ) int -> x0 single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T17] ( 2, 2 ) int -> x0 single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T06] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T25] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T07] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V75 cse4 [V75,T08] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T03] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V77 cse6 [V77,T04] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> x1 "CSE - aggressive"
+; V72 cse1 [V72,T09] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V73 cse2 [V73,T03] ( 4, 4 ) int -> x2 "CSE - aggressive"
+; V74 cse3 [V74,T04] ( 4, 4 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T05] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T06] ( 4, 4 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -133,27 +132,35 @@ G_M37173_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w2, [x1]
mov w2, #0xD1FFAB1E
strh w2, [x1, #0x04]
- movn w1, #12
- str w1, [x19, #0x08]
+ movn w2, #12
+ str w2, [x19, #0x08]
+ mov w2, #0xD1FFAB1E
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldr w2, [x19, #0x08]
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w4, w2, w3
+ add w4, w4, w0
+ add w4, w4, #17
+ ldr w1, [x1]
+ add w4, w4, w1
+ add w1, w4, w2
+ add w1, w1, w3
+ add w4, w1, #10
+ add w4, w4, w0
+ add w4, w4, w2
+ add w1, w4, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ add w4, w0, #17
+ mov w0, w4
+ ;; size=208 bbWeight=1 PerfScore 39.00
G_M37173_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=49726eca) for method testout1:Sub_Funclet_223():int (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 45.50, instruction count 58, allocated bytes for code 232 (MethodHash=49726eca) for method testout1:Sub_Funclet_223():int (FullOpts)
; ============================================================
Unwind Info:
@@ -164,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -96,10 +96,8 @@ G_M48965_IG02: ; bbWeight=1, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000
;; size=4 bbWeight=1 PerfScore 1.00
G_M48965_IG03: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
ldr w19, [x0, #0x08]
- cbz w19, G_M48965_IG04
- cbz x1, G_M48965_IG06
- b G_M48965_IG05
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w19, G_M48965_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M48965_IG04: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -114,11 +112,10 @@ G_M48965_IG04: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0000
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M48965_IG05: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x4]
+ cbz x1, G_M48965_IG06
ldr w3, [x1, #0x08]
- cbz w3, G_M48965_IG06
- cbz x4, G_M48965_IG08
- b G_M48965_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w3, G_M48965_IG07
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M48965_IG06: ; bbWeight=0.50, gcrefRegs=0015 {x0 x2 x4}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, x4
@@ -132,11 +129,10 @@ G_M48965_IG06: ; bbWeight=0.50, gcrefRegs=0015 {x0 x2 x4}, byrefRegs=0000
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M48965_IG07: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x4]
+ cbz x4, G_M48965_IG08
ldr w5, [x4, #0x08]
- cbz w5, G_M48965_IG08
- cbz x2, G_M48965_IG10
- b G_M48965_IG09
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w5, G_M48965_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M48965_IG08: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -148,16 +144,12 @@ G_M48965_IG08: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000
;; size=20 bbWeight=0.50 PerfScore 3.00
G_M48965_IG09: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x4]
+ cbz x2, G_M48965_IG10
ldr w7, [x2, #0x08]
- cbz w7, G_M48965_IG10
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M48965_IG11
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w7, G_M48965_IG11
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M48965_IG10: ; bbWeight=0.50, gcrefRegs=0013 {x0 x1 x4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x2]
mov x2, x4
; gcrRegs +[x2]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -167,8 +159,10 @@ G_M48965_IG10: ; bbWeight=0.50, gcrefRegs=0013 {x0 x1 x4}, byrefRegs=0000
; gcrRegs -[x1-x2 x4]
b G_M48965_IG12
;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M48965_IG11: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0001 {x0}, byref
- ; gcrRegs -[x0] +[x1-x2 x4]
+G_M48965_IG11: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x1-x2 x4]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
add x6, x1, #12
; byrRegs +[x6]
@@ -190,14 +184,14 @@ G_M48965_IG11: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0001
blr x8
; gcrRegs +[x0]
; byrRegs -[x0 x2 x4 x6]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
+ ;; size=44 bbWeight=0.50 PerfScore 4.25
G_M48965_IG12: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 236, prolog size 12, PerfScore 37.25, instruction count 59, allocated bytes for code 236 (MethodHash=a8d740ba) for method System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 35.25, instruction count 55, allocated bytes for code 220 (MethodHash=a8d740ba) for method System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -208,7 +202,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -60,10 +60,8 @@ G_M65029_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M65029_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M65029_IG04
- cbz x1, G_M65029_IG08
- b G_M65029_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M65029_IG07
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M65029_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbnz x1, G_M65029_IG05
@@ -83,21 +81,19 @@ G_M65029_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M65029_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M65029_IG08
ldr w3, [x1, #0x08]
- cbz w3, G_M65029_IG08
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M65029_IG09
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w3, G_M65029_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M65029_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
- ; gcrRegs -[x0] +[x1]
+G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
sxtw w11, w2
add x2, x1, #12
@@ -110,13 +106,13 @@ G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x4
; gcrRegs +[x0]
; byrRegs -[x0 x2]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
+ ;; size=32 bbWeight=0.50 PerfScore 3.50
G_M65029_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 8, PerfScore 18.75, instruction count 30, allocated bytes for code 120 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 17.75, instruction count 28, allocated bytes for code 112 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -12,20 +12,20 @@
; V00 arg0 [V00,T08] ( 6, 8 ) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T13] ( 4, 3.50) byref -> x1 single-def
; V02 arg2 [V02,T12] ( 5, 3.50) byref -> x19 single-def
-; V03 loc0 [V03,T00] ( 26, 69 ) int -> x20
-; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x23
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> [fp+0x14] single-def
-; V06 loc3 [V06,T16] ( 7, 3.50) int -> x2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x11
-; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x4
-; V09 loc6 [V09,T06] ( 7, 17 ) int -> x2
+; V03 loc0 [V03,T00] ( 26, 69 ) int -> x2
+; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x4
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> x5 single-def
+; V06 loc3 [V06,T16] ( 7, 3.50) int -> x6
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x7
+; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x8
+; V09 loc6 [V09,T06] ( 7, 17 ) int -> x6
; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> x4
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x20 "impSpillLclRefs"
+; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x2 "impSpillLclRefs"
;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x2 "Inlining Arg"
+; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x5 "Inlining Arg"
;* V15 tmp4 [V15,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x3 "Inlining Arg"
+; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x5 "Inlining Arg"
;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -33,199 +33,186 @@
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value"
-; V24 cse0 [V24,T09] ( 4, 9 ) int -> x23 "CSE - aggressive"
-; V25 cse1 [V25,T03] ( 10, 32 ) int -> x21 hoist "CSE - aggressive"
-; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x22 "CSE - aggressive"
+; V24 cse0 [V24,T09] ( 4, 9 ) int -> x4 "CSE - aggressive"
+; V25 cse1 [V25,T03] ( 10, 32 ) int -> x11 hoist "CSE - aggressive"
+; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x3 "CSE - aggressive"
;
; Lcl frame size = 8
G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
mov x19, x2
; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
; gcrRegs +[x0]
; byrRegs +[x1]
- ldr w20, [x1]
- ldr w21, [x0, #0x08]
+ ldr w2, [x1]
+ ldr w11, [x0, #0x08]
;; size=8 bbWeight=1 PerfScore 6.00
G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w21, w20
- beq G_M24207_IG29
+ cmp w11, w2
+ beq G_M24207_IG27
;; size=8 bbWeight=8 PerfScore 12.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w20, w21
- bhs G_M24207_IG35
- add x22, x0, #12
- ; byrRegs +[x22]
- ldrh w23, [x22, w20, UXTW #2]
- sxtw w2, w23
- cmp w2, #32
- ccmp w2, #9, z, ne
- ccmp w2, #13, z, ne
- beq G_M24207_IG07
+ cmp w2, w11
+ bhs G_M24207_IG33
+ add x3, x0, #12
+ ; byrRegs +[x3]
+ ldrh w4, [x3, w2, UXTW #2]
+ sxtw w5, w4
+ cmp w5, #32
+ ccmp w5, #9, z, ne
+ ccmp w5, #13, z, ne
+ beq G_M24207_IG06
;; size=36 bbWeight=4 PerfScore 32.00
-G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, #10
- beq G_M24207_IG07
+G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w5, #10
+ bne G_M24207_IG07
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- sxtw w3, w23
- cmp w3, #34
- beq G_M24207_IG09
- b G_M24207_IG08
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
- ; byrRegs -[x22]
- add w20, w20, #1
+G_M24207_IG06: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
+ ; byrRegs -[x3]
+ add w2, w2, #1
b G_M24207_IG03
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; byrRegs +[x22]
- cmp w3, #39
- beq G_M24207_IG09
- mov w23, wzr
+G_M24207_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ ; byrRegs +[x3]
+ sxtw w5, w4
+ cmp w5, #34
+ beq G_M24207_IG08
+ cmp w5, #39
+ bne G_M24207_IG09
+ ;; size=20 bbWeight=0.50 PerfScore 1.75
+G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ add w2, w2, #1
b G_M24207_IG10
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ mov w4, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w3, w20
- sxtw w2, w21
- mov w11, wzr
+G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sxtw w5, w2
+ sxtw w6, w11
+ mov w7, wzr
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w21, w20
- ble G_M24207_IG17
- cmp w20, w21
- bhs G_M24207_IG35
- ldrh w4, [x22, w20, UXTW #2]
- cmp w4, #92
+G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w11, w2
+ ble G_M24207_IG16
+ cmp w2, w11
+ bhs G_M24207_IG33
+ ldrh w8, [x3, w2, UXTW #2]
+ cmp w8, #92
bne G_M24207_IG12
- mov w11, #1
- add w20, w20, #2
+ mov w7, #1
+ add w2, w2, #2
b G_M24207_IG11
;; size=40 bbWeight=4 PerfScore 38.00
-G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG15
+G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cbnz w4, G_M24207_IG14
;; size=4 bbWeight=4 PerfScore 4.00
-G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w4, #61
- beq G_M24207_IG19
- cmp w4, #44
- beq G_M24207_IG19
- cmp w4, #34
- beq G_M24207_IG29
- cmp w4, #39
- bne G_M24207_IG16
- ;; size=32 bbWeight=2 PerfScore 12.00
-G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x1 x22]
- b G_M24207_IG29
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; gcrRegs +[x0]
- ; byrRegs +[x1 x22]
- cmp w4, w23
+G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w8, #61
beq G_M24207_IG18
+ cmp w8, #44
+ beq G_M24207_IG18
+ cmp w8, #34
+ beq G_M24207_IG27
+ cmp w8, #39
+ bne G_M24207_IG15
+ b G_M24207_IG27
+ ;; size=36 bbWeight=2 PerfScore 14.00
+G_M24207_IG14: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w8, w4
+ beq G_M24207_IG17
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+G_M24207_IG15: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ add w2, w2, #1
b G_M24207_IG11
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w20, w21
- b G_M24207_IG19
+G_M24207_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sxtw w2, w11
+ b G_M24207_IG18
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w2, w20
- add w20, w2, #1
+G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sxtw w6, w2
+ add w2, w6, #1
;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG25
- sub w2, w20, #1
- b G_M24207_IG21
+G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cbnz w4, G_M24207_IG24
+ sub w6, w2, #1
+ b G_M24207_IG20
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sub w2, w2, #1
+G_M24207_IG19: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sub w6, w6, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, w3
- blt G_M24207_IG22
- cmp w2, w21
- bhs G_M24207_IG35
- ldrh w4, [x22, w2, UXTW #2]
+G_M24207_IG20: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w6, w5
+ blt G_M24207_IG21
+ cmp w6, w11
+ bhs G_M24207_IG33
...
@@ -17,7 +17,7 @@
;
; Lcl frame size = 0
-G_M58850_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M58850_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
@@ -30,7 +30,7 @@ G_M58850_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
; gcrRegs +[x1]
mov x21, x1
; gcrRegs +[x21]
- cbz x21, G_M58850_IG04
+ cbz x21, G_M58850_IG06
adrp x22, [HIGH RELOC #0xD1FFAB1E]
add x22, x22, [LOW RELOC #0xD1FFAB1E]
;; size=16 bbWeight=1 PerfScore 2.50
@@ -44,9 +44,9 @@ G_M58850_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1]
- cbnz w0, G_M58850_IG06
+ cbnz w0, G_M58850_IG04
tst w20, #255
- beq G_M58850_IG04
+ beq G_M58850_IG06
mov x0, x21
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -57,10 +57,11 @@ G_M58850_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
mov x21, x0
; gcrRegs +[x21]
cbnz x21, G_M58850_IG03
- ;; size=60 bbWeight=4 PerfScore 70.00
+ b G_M58850_IG08
+ ;; size=64 bbWeight=4 PerfScore 74.00
G_M58850_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19 x21]
- mov w0, wzr
+ mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M58850_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
@@ -69,7 +70,7 @@ G_M58850_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
G_M58850_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M58850_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
@@ -77,8 +78,11 @@ G_M58850_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M58850_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b G_M58850_IG06
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 140, prolog size 16, PerfScore 81.50, instruction count 35, allocated bytes for code 140 (MethodHash=d4151a1d) for method Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.Symbols.ISymbolInternal,ubyte):ubyte:this (FullOpts)
+; Total bytes of code 148, prolog size 16, PerfScore 86.00, instruction count 37, allocated bytes for code 148 (MethodHash=d4151a1d) for method Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.Symbols.ISymbolInternal,ubyte):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -89,7 +93,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -17,20 +17,20 @@
;
; Lcl frame size = 0
-G_M12753_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12753_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M12753_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M12753_IG04
+ cbz x0, G_M12753_IG06
;; size=4 bbWeight=1 PerfScore 1.00
G_M12753_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w11, [x0, #0x12]
cmp w11, #117
- beq G_M12753_IG06
+ beq G_M12753_IG04
cmp w11, #188
- bne G_M12753_IG04
+ bne G_M12753_IG06
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -38,17 +38,9 @@ G_M12753_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr x0, [x0, #0x20]
cbnz x0, G_M12753_IG03
- ;; size=44 bbWeight=4 PerfScore 60.00
-G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ b G_M12753_IG08
+ ;; size=48 bbWeight=4 PerfScore 64.00
+G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -56,12 +48,25 @@ G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcr arg pop 0
ldr x0, [x0, #0x20]
;; size=20 bbWeight=0.50 PerfScore 4.00
+G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M12753_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M12753_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ b G_M12753_IG06
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 96, prolog size 8, PerfScore 68.75, instruction count 24, allocated bytes for code 96 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
+; Total bytes of code 104, prolog size 8, PerfScore 73.25, instruction count 26, allocated bytes for code 104 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
; ============================================================
Unwind Info:
@@ -72,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,52 +9,55 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 5 ) byref -> x0 this single-def
+; V00 this [V00,T00] ( 5, 2 ) byref -> x0 this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[int]>
-; V02 loc0 [V02,T03] ( 4, 3.50) int -> x11
+; V02 loc0 [V02,T03] ( 4, 0 ) int -> x11
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V05 tmp2 [V05,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 tmp3 [V06,T01] ( 5, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T01] ( 5, 1 ) byref -> [fp+0x18] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp4 [V07,T02] ( 2, 1 ) int -> [fp+0x24] single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V08 tmp5 [V08,T05] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
-G_M34588_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M34588_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x30]!
+ str x19, [sp, #0x28]
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M34588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
- ; byrRegs +[x0-x1]
+ str x1, [fp, #0x18] // [V06 tmp3]
+ ; GC ptr vars +{V06}
+ str w2, [fp, #0x24] // [V07 tmp4]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M34588_IG02: ; bbWeight=0, gcVars=0000000000000002 {V06}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
+ ; byrRegs +[x0]
+ ldr w2, [fp, #0x24] // [V07 tmp4]
cmp w2, #4
- bne G_M34588_IG06
+ bne G_M34588_IG04
+ ldr x1, [fp, #0x18] // [V06 tmp3]
+ ; byrRegs +[x1]
ldr w11, [x1, #0x0C]
movn w2, #0xD1FFAB1E LSL #16
tst w11, w2
- bne G_M34588_IG06
- ;; size=24 bbWeight=1 PerfScore 6.50
-G_M34588_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
+ bne G_M34588_IG04
and w2, w11, #0xD1FFAB1E
cmp w2, #0xD1FFAB1E, LSL #12
- bhi G_M34588_IG06
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M34588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref
+ bhi G_M34588_IG04
ldp w2, w3, [x1]
add x2, x2, x3, LSL #32
str x2, [x0, #0x08]
ldr w1, [x1, #0x08]
; byrRegs -[x1]
stp w11, w1, [x0]
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M34588_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=64 bbWeight=0 PerfScore 0.00
+G_M34588_IG03: ; bbWeight=0, epilog, nogc, extend
+ ldr x19, [sp, #0x28]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M34588_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M34588_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x0]
+ ; GC ptr vars -{V06}
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x11]
@@ -86,7 +89,7 @@ G_M34588_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 12, PerfScore 23.00, instruction count 41, allocated bytes for code 164 (MethodHash=290178e3) for method System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
+; Total bytes of code 180, prolog size 12, PerfScore 0.00, instruction count 45, allocated bytes for code 180 (MethodHash=290178e3) for method System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -97,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,8 +108,8 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
E4 end
@@ -33,37 +33,25 @@ G_M54442_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldr d1, [@RWD08]
str d1, [fp, #0x10] // [V08 cse0]
fcmp d8, d1
- bhs G_M54442_IG04
+ blo G_M54442_IG04
;; size=28 bbWeight=1 PerfScore 25.00
-G_M54442_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- b G_M54442_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M54442_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M54442_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
fcmp d8, d1
- bgt G_M54442_IG05
+ bgt G_M54442_IG06
fcmp d8, d1
- bne G_M54442_IG06
- b G_M54442_IG07
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M54442_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- b G_M54442_IG09
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M54442_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
+ beq G_M54442_IG04
fcmp d8, d8
- beq G_M54442_IG09
- b G_M54442_IG03
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M54442_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ beq G_M54442_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M54442_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str x1, [x0, #0x18]
;; size=4 bbWeight=1 PerfScore 1.00
-G_M54442_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M54442_IG05: ; bbWeight=1, epilog, nogc, extend
ldr d8, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M54442_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54442_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -85,7 +73,7 @@ RWD00 dq 416312D000000000h ; 10000000
RWD08 dq 41DFFFFFFFC00000h ; 2.14748365e+09
-; Total bytes of code 148, prolog size 12, PerfScore 37.25, instruction count 37, allocated bytes for code 148 (MethodHash=b6192b55) for method System.Net.Http.Headers.RetryConditionHeaderValue:.ctor(System.TimeSpan):this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 35.50, instruction count 33, allocated bytes for code 132 (MethodHash=b6192b55) for method System.Net.Http.Headers.RetryConditionHeaderValue:.ctor(System.TimeSpan):this (FullOpts)
; ============================================================
Unwind Info:
@@ -96,7 +84,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -24,32 +24,24 @@ G_M14136_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M14136_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
fcmp d0, d1
- blo G_M14136_IG07
+ blo G_M14136_IG05
;; size=8 bbWeight=1 PerfScore 2.00
G_M14136_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
fcmp d0, d1
- bgt G_M14136_IG06
+ bgt G_M14136_IG04
fcmp d0, d1
- bne G_M14136_IG05
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M14136_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- b G_M14136_IG06
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M14136_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
+ beq G_M14136_IG04
fcmp d0, d0
- beq G_M14136_IG06
+ beq G_M14136_IG04
fcmp d1, d1
- beq G_M14136_IG07
- b G_M14136_IG04
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M14136_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ beq G_M14136_IG05
+ ;; size=32 bbWeight=0.50 PerfScore 4.00
+G_M14136_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M14136_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M14136_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:ThrowLess[double](double,double,System.String)
movk x1, #0xD1FFAB1E LSL #16
@@ -60,7 +52,7 @@ G_M14136_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 8, PerfScore 10.50, instruction count 22, allocated bytes for code 88 (MethodHash=b47cc8c7) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[double](double,double,System.String) (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 9.50, instruction count 20, allocated bytes for code 80 (MethodHash=b47cc8c7) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[double](double,double,System.String) (FullOpts)
; ============================================================
Unwind Info:
@@ -71,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -12,23 +12,22 @@
; V01 arg1 [V01,T00] ( 9, 12.50) ref -> x19 class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator>
; V02 loc0 [V02,T11] ( 3, 1.50) ref -> x15 class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V04 tmp1 [V04,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V05 tmp2 [V05,T03] ( 3, 3 ) ref -> x12 class-hnd single-def "Inlining Arg" <<unknown class>>
; V06 tmp3 [V06,T06] ( 2, 2 ) ref -> x14 class-hnd single-def "Inlining Arg" <<unknown class>>
; V07 tmp4 [V07,T07] ( 2, 2 ) ref -> x14 class-hnd single-def "Inlining Arg" <<unknown class>>
; V08 tmp5 [V08,T08] ( 2, 2 ) ref -> x14 class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
; V09 tmp6 [V09,T09] ( 2, 2 ) ref -> x14 class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V11 tmp8 [V11,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp8 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V12 tmp9 [V12,T05] ( 3, 2.97) ref -> x1 class-hnd "Inlining Arg" <<unknown class>>
; V13 tmp10 [V13,T10] ( 2, 1.97) ref -> x2 class-hnd exact "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
; V14 tmp11 [V14,T04] ( 3, 3 ) ref -> x14 single-def "arr expr"
; V15 cse0 [V15,T02] ( 4, 10.50) ref -> x21 "CSE - aggressive"
; V16 cse1 [V16,T12] ( 3, 1.50) ref -> x14 "CSE - moderate"
; V17 cse2 [V17,T13] ( 3, 1.50) ref -> x14 "CSE - moderate"
-; V18 cse3 [V18,T15] ( 3, 1.50) int -> x12 "CSE - moderate"
-; V19 cse4 [V19,T14] ( 3, 1.50) ref -> x0 "CSE - moderate"
-; V20 cse5 [V20,T16] ( 3, 1.48) int -> x4 "CSE - moderate"
+; V18 cse3 [V18,T14] ( 3, 1.50) ref -> x0 "CSE - moderate"
+; V19 cse4 [V19,T15] ( 3, 1.48) int -> x4 "CSE - moderate"
;
; Lcl frame size = 8
@@ -79,33 +78,19 @@ G_M54730_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x14, [x20, #0x20]
; gcrRegs +[x14]
cmp x14, x15
- beq G_M54730_IG08
- cbz x14, G_M54730_IG08
+ beq G_M54730_IG06
+ cbz x14, G_M54730_IG06
ldr x14, [x20, #0x48]
mov x12, x14
; gcrRegs +[x12]
- cbz x12, G_M54730_IG08
+ cbz x12, G_M54730_IG06
ldr w12, [x12, #0x10]
; gcrRegs -[x12]
- cbz w12, G_M54730_IG08
- cbnz w12, G_M54730_IG07
- ;; size=56 bbWeight=0.50 PerfScore 11.25
-G_M54730_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x14-x15 x19-x20]
- movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- blr x0
- ; gcr arg pop 0
- brk_unix #0
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M54730_IG07: ; bbWeight=0.50, gcrefRegs=18C000 {x14 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x14-x15 x19-x20]
+ cbz w12, G_M54730_IG06
ldr x14, [x14, #0x08]
ldr w12, [x14, #0x08]
cmp w12, #0
- bls G_M54730_IG17
+ bls G_M54730_IG15
ldr x14, [x14, #0x10]
ldr x14, [x14, #0x08]
ldr x14, [x14, #0x08]
@@ -114,18 +99,18 @@ G_M54730_IG07: ; bbWeight=0.50, gcrefRegs=18C000 {x14 x15 x19 x20}, byref
; gcrRegs -[x14]
cmp w14, #3
bne G_M54730_IG03
- ;; size=44 bbWeight=0.50 PerfScore 12.00
-G_M54730_IG08: ; bbWeight=0.50, gcrefRegs=188000 {x15 x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=96 bbWeight=0.50 PerfScore 22.75
+G_M54730_IG06: ; bbWeight=0.50, gcrefRegs=188000 {x15 x19 x20}, byrefRegs=0000 {}, byref
add x14, x20, #32
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- b G_M54730_IG13
+ b G_M54730_IG11
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M54730_IG09: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M54730_IG07: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
- cbnz x21, G_M54730_IG10
+ cbnz x21, G_M54730_IG08
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator:FindNextTypeForInstanceMethods():ubyte:this
@@ -135,9 +120,9 @@ G_M54730_IG09: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x1
; gcrRegs -[x0 x21]
; gcr arg pop 0
- cbz w0, G_M54730_IG11
+ cbz w0, G_M54730_IG09
;; size=32 bbWeight=2 PerfScore 16.00
-G_M54730_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M54730_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator:FindNextMethod():ubyte:this
@@ -148,15 +133,15 @@ G_M54730_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0]
; gcr arg pop 0
;; size=24 bbWeight=2 PerfScore 12.00
-G_M54730_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M54730_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x21, [x19, #0x38]
; gcrRegs +[x21]
ldr x0, [x20, #0x20]
; gcrRegs +[x0]
cmp x21, x0
- beq G_M54730_IG09
+ beq G_M54730_IG07
;; size=16 bbWeight=4 PerfScore 30.00
-G_M54730_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M54730_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x19, #0x30]
; gcrRegs +[x0]
@@ -176,16 +161,16 @@ G_M54730_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; byrRegs -[x14]
cbz x0, G_M54730_IG03
;; size=32 bbWeight=0.50 PerfScore 4.00
-G_M54730_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M54730_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x1, [x20, #0x90]
; gcrRegs +[x1]
ldr x2, [x20, #0x20]
; gcrRegs +[x2]
ldr w4, [x1, #0x10]
- cbz w4, G_M54730_IG15
+ cbz w4, G_M54730_IG13
;; size=16 bbWeight=0.50 PerfScore 5.00
-G_M54730_IG14: ; bbWeight=0.48, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M54730_IG12: ; bbWeight=0.48, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x1, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -198,25 +183,25 @@ G_M54730_IG14: ; bbWeight=0.48, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRe
blr x5
; gcrRegs -[x1-x2]
; gcr arg pop 0
- tbz w0, #31, G_M54730_IG11
+ tbz w0, #31, G_M54730_IG09
;; size=44 bbWeight=0.48 PerfScore 5.55
-G_M54730_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54730_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M54730_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M54730_IG14: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M54730_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54730_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 404, prolog size 24, PerfScore 117.05, instruction count 101, allocated bytes for code 404 (MethodHash=ad392a35) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
+; Total bytes of code 376, prolog size 24, PerfScore 116.55, instruction count 94, allocated bytes for code 376 (MethodHash=ad392a35) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -227,7 +212,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 101 (0x00065) Actual length = 404 (0x000194)
+ Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1+Node[System.Numerics.Vector
1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)@@ -14,15 +14,16 @@
; V03 tmp1 [V03,T04] ( 2, 1 ) int -> x2
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T05] ( 2, 0 ) ref -> x0 "argument with side effect"
-; V06 cse0 [V06,T02] ( 4, 3 ) int -> x3 "CSE - aggressive"
+; V06 cse0 [V06,T02] ( 4, 3 ) int -> x19 "CSE - aggressive"
; V07 cse1 [V07,T03] ( 3, 2.50) ref -> x2 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M32963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M32963_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
tbnz w1, #31, G_M32963_IG11
@@ -37,8 +38,8 @@ G_M32963_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
G_M32963_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
- ldr w3, [x2, #0x18]
- cmp w1, w3
+ ldr w19, [x2, #0x18]
+ cmp w1, w19
bge G_M32963_IG07
;; size=16 bbWeight=1 PerfScore 7.50
G_M32963_IG05: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
@@ -52,14 +53,15 @@ G_M32963_IG05: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
ldr x2, [x2]
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M32963_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x2
; gcr arg pop 0
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M32963_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp w1, w3
+ cmp w1, w19
ble G_M32963_IG09
- sub w1, w1, w3
+ sub w1, w1, w19
sub w1, w1, #1
ldr x0, [x0, #0x10]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
@@ -69,17 +71,19 @@ G_M32963_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr wzr, [x0]
;; size=40 bbWeight=0.50 PerfScore 6.50
G_M32963_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x2
; gcr arg pop 0
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M32963_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
ldr q0, [x0, #0x20]
;; size=4 bbWeight=0.50 PerfScore 1.50
G_M32963_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M32963_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov w0, #0xD1FFAB1E
@@ -100,18 +104,18 @@ G_M32963_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 8, PerfScore 26.25, instruction count 46, allocated bytes for code 184 (MethodHash=86d47f3c) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)
+; Total bytes of code 200, prolog size 12, PerfScore 30.25, instruction count 50, allocated bytes for code 200 (MethodHash=86d47f3c) for method System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -125,7 +129,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -13,7 +13,7 @@
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V05 loc3 [V05,T02] ( 4, 2.50) ref -> x0 class-hnd <System.String>
+; V05 loc3 [V05,T02] ( 4, 2.50) ref -> registers class-hnd <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V08 tmp2 [V08,T03] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
@@ -28,43 +28,43 @@ G_M24419_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M24419_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
- cbz x0, G_M24419_IG06
+ cbz x0, G_M24419_IG05
;; size=4 bbWeight=1 PerfScore 1.00
G_M24419_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
cmp w2, #1
- bne G_M24419_IG06
+ bne G_M24419_IG05
;; size=12 bbWeight=0.25 PerfScore 1.12
G_M24419_IG04: ; bbWeight=0.12, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldrh w2, [x0, #0x0C]
cmp w2, #95
- bne G_M24419_IG06
+ beq G_M24419_IG08
;; size=12 bbWeight=0.12 PerfScore 0.56
-G_M24419_IG05: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x1
- ; gcrRegs +[x0]
- b G_M24419_IG11
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M24419_IG06: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG05: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cbz x1, G_M24419_IG10
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24419_IG07: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x1, #0x08]
cmp w2, #1
bne G_M24419_IG10
;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M24419_IG08: ; bbWeight=0.12, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG07: ; bbWeight=0.12, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldrh w2, [x1, #0x0C]
cmp w2, #95
- bne G_M24419_IG10
- ;; size=12 bbWeight=0.12 PerfScore 0.56
-G_M24419_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
+ beq G_M24419_IG09
+ b G_M24419_IG10
+ ;; size=16 bbWeight=0.12 PerfScore 0.69
+G_M24419_IG08: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
b G_M24419_IG11
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M24419_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1] +[x0]
+ mov x1, x0
; gcrRegs +[x1]
+ b G_M24419_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
mov x2, x1
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
@@ -77,13 +77,20 @@ G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M24419_IG11: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ mov x1, x0
+ ; gcrRegs +[x1]
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M24419_IG11: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M24419_IG12: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 8, PerfScore 13.38, instruction count 30, allocated bytes for code 120 (MethodHash=b70da09c) for method Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 132, prolog size 8, PerfScore 14.25, instruction count 33, allocated bytes for code 132 (MethodHash=b70da09c) for method Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -94,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,8 +8,8 @@
; 1 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 8, 24 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[ubyte]>
-; V01 loc0 [V01,T03] ( 9, 19.00) ref -> x20 class-hnd exact single-def <System.Collections.Generic.List`1[ubyte]>
+; V00 arg0 [V00,T02] ( 8, 20.50) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[ubyte]>
+; V01 loc0 [V01,T04] ( 9, 15.50) ref -> x20 class-hnd exact single-def <System.Collections.Generic.List`1[ubyte]>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[ubyte]>
; V03 loc2 [V03,T11] ( 3, 4 ) ubyte -> x1
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -21,15 +21,15 @@
;* V10 tmp6 [V10,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ubyte]>
;* V12 tmp8 [V12,T15] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T01] ( 6, 21 ) int -> x22 "field V02._index (fldOffset=0x8)" P-INDEP
+; V13 tmp9 [V13,T00] ( 6, 21 ) int -> x22 "field V02._index (fldOffset=0x8)" P-INDEP
; V14 tmp10 [V14,T06] ( 2, 9 ) int -> x21 single-def "field V02._version (fldOffset=0xc)" P-INDEP
; V15 tmp11 [V15,T05] ( 2, 6 ) ubyte -> x0 "field V02._current (fldOffset=0x10)" P-INDEP
; V16 tmp12 [V16,T13] ( 2, 2 ) ref -> x0 single-def "field V07._list (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17,T16] ( 0, 0 ) int -> zero-ref single-def "field V07._index (fldOffset=0x8)" P-INDEP
; V18 tmp14 [V18,T14] ( 2, 2 ) int -> x21 single-def "field V07._version (fldOffset=0xc)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07._current (fldOffset=0x10)" P-INDEP
-; V20 tmp16 [V20,T02] ( 3, 24 ) ref -> x0 "arr expr"
-; V21 cse0 [V21,T04] ( 3, 12 ) int -> x23 "CSE - aggressive"
+; V20 tmp16 [V20,T01] ( 3, 24 ) ref -> x0 "arr expr"
+; V21 cse0 [V21,T03] ( 3, 12 ) int -> x23 "CSE - aggressive"
; V22 cse1 [V22,T12] ( 2, 4 ) int -> x3 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -103,7 +103,7 @@ G_M37290_IG05: ; bbWeight=0.30, gcrefRegs=180000 {x19 x20}, byrefRegs=000
G_M37290_IG06: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x14]
cmp w21, w0
- bne G_M37290_IG11
+ bne G_M37290_IG14
;; size=12 bbWeight=8 PerfScore 36.00
G_M37290_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w23, [x19, #0x10]
@@ -113,7 +113,7 @@ G_M37290_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w22, w1
- bhs G_M37290_IG10
+ bhs G_M37290_IG13
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -122,25 +122,41 @@ G_M37290_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
add w22, w22, #1
b G_M37290_IG03
;; size=44 bbWeight=4 PerfScore 68.00
-G_M37290_IG08: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M37290_IG08: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x20, #0x10]
cmp w0, w23
- csel x0, x19, x20, eq
+ beq G_M37290_IG11
+ ;; size=12 bbWeight=4 PerfScore 18.00
+G_M37290_IG09: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ mov x0, x20
; gcrRegs +[x0]
- ;; size=12 bbWeight=4 PerfScore 16.00
-G_M37290_IG09: ; bbWeight=4, epilog, nogc, extend
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M37290_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M37290_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x19-x20]
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M37290_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x20] +[x19]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M37290_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M37290_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x19]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M37290_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37290_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -150,22 +166,25 @@ G_M37290_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 280, prolog size 24, PerfScore 199.60, instruction count 70, allocated bytes for code 280 (MethodHash=4e806e55) for method Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
+; Total bytes of code 308, prolog size 24, PerfScore 184.10, instruction count 77, allocated bytes for code 308 (MethodHash=4e806e55) for method Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 70 (0x00046) Actual length = 280 (0x000118)
+ Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
@@ -10,92 +10,75 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M16591_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M16591_IG07
+ cbz x20, G_M16591_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
- bne G_M16591_IG07
- cmp x1, x21
- beq G_M16591_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M16591_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M16591_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
ldr w1, [x20, #0x08]
str w1, [x0, #0x08]
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M16591_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M16591_IG11
+ beq G_M16591_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -107,7 +90,7 @@ G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -123,15 +106,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 252, prolog size 24, PerfScore 34.25, instruction count 63, allocated bytes for code 252 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 208, prolog size 20, PerfScore 28.38, instruction count 52, allocated bytes for code 208 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -142,7 +124,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -156,9 +138,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -10,92 +10,75 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M27952_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M27952_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M27952_IG07
+ cbz x20, G_M27952_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M27952_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
- bne G_M27952_IG07
- cmp x1, x21
- beq G_M27952_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M27952_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M27952_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M27952_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M27952_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M27952_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M27952_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M27952_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
ldr x1, [x20, #0x08]
str x1, [x0, #0x08]
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M27952_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M27952_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27952_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M27952_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M27952_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M27952_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27952_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M27952_IG11
+ beq G_M27952_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M27952_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M27952_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -107,7 +90,7 @@ G_M27952_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M27952_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -123,15 +106,14 @@ G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M27952_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M27952_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 252, prolog size 24, PerfScore 34.25, instruction count 63, allocated bytes for code 252 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
+; Total bytes of code 208, prolog size 20, PerfScore 28.38, instruction count 52, allocated bytes for code 208 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
; ============================================================
Unwind Info:
@@ -142,7 +124,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -156,9 +138,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -10,93 +10,76 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M16591_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M16591_IG07
+ cbz x20, G_M16591_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
- bne G_M16591_IG07
- cmp x1, x21
- beq G_M16591_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M16591_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M16591_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
ldrb w1, [x20, #0x08]
mvn w1, w1
strb w1, [x0, #0x08]
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=28 bbWeight=0.50 PerfScore 3.50
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M16591_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M16591_IG11
+ beq G_M16591_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -108,7 +91,7 @@ G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -124,15 +107,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 256, prolog size 24, PerfScore 34.50, instruction count 64, allocated bytes for code 256 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 212, prolog size 20, PerfScore 28.62, instruction count 53, allocated bytes for code 212 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -143,7 +125,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -157,9 +139,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet
1+GSW[System.Canon]]:IsSubsetOfSetWithCompatibleComparer(System.Collections.Generic.IReadOnlySet`1[System.Canon]):ubyte:this (Tier1-OSR)@@ -10,44 +10,48 @@
; 2 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T11] ( 4, 2.39) ref -> [fp+0x118] this class-hnd EH-live single-def tier0-frame <System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]]>
-; V01 arg1 [V01,T10] ( 3,101.89) ref -> x19 class-hnd single-def <System.Collections.Generic.IReadOnlySet`1[System.__Canon]>
+; V00 this [V00,T14] ( 5,102.27) ref -> [fp+0x118] this class-hnd EH-live single-def tier0-frame <System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]]>
+; V01 arg1 [V01,T15] ( 3,101.89) ref -> x19 class-hnd single-def <System.Collections.Generic.IReadOnlySet`1[System.__Canon]>
; V02 loc0 [V02 ] ( 11,801.05) struct (16) [fp+0x100] do-not-enreg[XSFR] multireg-ret addr-exposed ld-addr-op tier0-frame <System.Collections.Frozen.FrozenSet`1+Enumerator[System.__Canon]>
; V03 loc1 [V03 ] ( 1, 1 ) struct ( 8) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]>
-; V04 loc2 [V04,T07] ( 2,199.77) ref -> x21 class-hnd <System.__Canon>
-;* V05 loc3 [V05,T24] ( 0, 0 ) ubyte -> zero-ref
+; V04 loc2 [V04,T13] ( 2,199.77) ref -> x21 class-hnd <System.__Canon>
+;* V05 loc3 [V05,T28] ( 0, 0 ) ubyte -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "Indirect call through function pointer"
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Frozen.FrozenSet`1+Enumerator[System.__Canon]>
;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp5 [V11,T16] ( 6, 1.10) long -> x2 "Indirect call through function pointer"
+; V11 tmp5 [V11,T21] ( 6, 1.10) long -> x2 "Indirect call through function pointer"
;* V12 tmp6 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V13 tmp7 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V14 tmp8 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V15 tmp9 [V15,T00] ( 4,599.32) long -> x11 "VirtualCall with runtime lookup"
;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
-;* V17 tmp11 [V17,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V17 tmp11 [V17,T12] ( 2,200 ) ubyte -> x1 "Inline return value spill temp"
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V09._entries (fldOffset=0x0)" P-DEP
;* V19 tmp13 [V19 ] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x8)" P-DEP
; V20 tmp14 [V20,T01] ( 3,599.32) ref -> x2 "arr expr"
; V21 tmp15 [V21,T02] ( 3,599.32) int -> x1 "index expr"
-; V22 PSPSym [V22,T17] ( 1, 1 ) long -> [fp+0x10] do-not-enreg[V] "PSPSym"
-;* V23 cse0 [V23,T23] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V24 cse1 [V24,T09] ( 8,136.85) long -> x20 hoist multi-def "CSE - aggressive"
-; V25 cse2 [V25,T05] ( 3,299.66) ref -> x2 "CSE - aggressive"
-; V26 cse3 [V26,T06] ( 3,299.66) int -> x1 "CSE - aggressive"
-; V27 rat0 [V27,T13] ( 2, 1.13) long -> x1 "Spilling to split statement for tree"
-;* V28 rat1 [V28,T15] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V29 rat2 [V29,T12] ( 2, 1.13) long -> x1 "spilling expr"
-;* V30 rat3 [V30,T14] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V31 rat4 [V31,T03] ( 3,559.37) long -> x1 "spilling expr"
-; V32 rat5 [V32,T04] ( 3,447.49) long -> x11 "fgMakeTemp is creating a new local variable"
-; V33 rat6 [V33,T18] ( 3, 0.95) long -> x1 "spilling expr"
-; V34 rat7 [V34,T19] ( 3, 0.76) long -> x2 "fgMakeTemp is creating a new local variable"
-; V35 rat8 [V35,T21] ( 3, 0.49) long -> x20 "Spilling to split statement for tree"
-; V36 rat9 [V36,T20] ( 3, 0.58) long -> x1 "spilling expr"
-; V37 rat10 [V37,T22] ( 3, 0.47) long -> x2 "fgMakeTemp is creating a new local variable"
+; V22 PSPSym [V22,T22] ( 1, 1 ) long -> [fp+0x10] do-not-enreg[V] "PSPSym"
+;* V23 cse0 [V23,T16] ( 0, 0 ) long -> zero-ref hoist multi-def "CSE - aggressive"
+; V24 cse1 [V24,T09] ( 10,336.62) long -> x20 hoist multi-def "CSE - aggressive"
+; V25 cse2 [V25,T10] ( 3,299.66) ref -> x2 "CSE - aggressive"
+; V26 cse3 [V26,T11] ( 3,299.66) int -> x1 "CSE - aggressive"
+; V27 rat0 [V27,T18] ( 2, 1.13) long -> x20 "Spilling to split statement for tree"
+;* V28 rat1 [V28,T20] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V29 rat2 [V29,T17] ( 2, 1.13) long -> x1 "spilling expr"
+;* V30 rat3 [V30,T19] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V31 rat4 [V31,T05] ( 2,399.55) long -> x1 "Spilling to split statement for tree"
+;* V32 rat5 [V32,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V33 rat6 [V33,T03] ( 2,399.55) long -> x1 "spilling expr"
+;* V34 rat7 [V34,T06] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V35 rat8 [V35,T04] ( 3,559.37) long -> x1 "spilling expr"
+; V36 rat9 [V36,T07] ( 3,447.49) long -> x11 "fgMakeTemp is creating a new local variable"
+; V37 rat10 [V37,T23] ( 3, 0.95) long -> x1 "spilling expr"
+; V38 rat11 [V38,T24] ( 3, 0.76) long -> x2 "fgMakeTemp is creating a new local variable"
+; V39 rat12 [V39,T26] ( 3, 0.49) long -> x1 "Spilling to split statement for tree"
+; V40 rat13 [V40,T25] ( 3, 0.58) long -> x2 "spilling expr"
+; V41 rat14 [V41,T27] ( 3, 0.47) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -61,22 +65,20 @@ G_M30499_IG01: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldp x19, x0, [fp, #0xD1FFAB1E]
; gcrRegs +[x0 x19]
;; size=28 bbWeight=0.28 PerfScore 2.27
-G_M30499_IG02: ; bbWeight=0.28, gcVars=0000000000000800 {V00}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00 V11}
+G_M30499_IG02: ; bbWeight=0.28, gcVars=0000000000004000 {V00}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V00}
ldr x20, [x0]
- mov x1, x20
- ldr x1, [x1, #0x38]
+ ldr x1, [x20, #0x38]
ldr x1, [x1, #0x08]
ldr x1, [x1, #0x10]
cmp x1, #128
- ble G_M30499_IG11
- ;; size=28 bbWeight=0.28 PerfScore 3.97
-G_M30499_IG03: ; bbWeight=0.23, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- b G_M30499_IG11
+ ble G_M30499_IG12
+ ;; size=24 bbWeight=0.28 PerfScore 3.82
+G_M30499_IG03: ; bbWeight=0.23, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ b G_M30499_IG12
;; size=4 bbWeight=0.23 PerfScore 0.23
G_M30499_IG04: ; bbWeight=35.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x21]
+ ; gcrRegs -[x0] +[x21]
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -84,23 +86,33 @@ G_M30499_IG04: ; bbWeight=35.96, gcrefRegs=280000 {x19 x21}, byrefRegs=00
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov x11, x0
- b G_M30499_IG10
+ b G_M30499_IG11
;; size=28 bbWeight=35.96 PerfScore 161.82
G_M30499_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x21]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M30499_IG06: ; bbWeight=99.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19]
+G_M30499_IG06: ; bbWeight=99.89, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0 x19]
+ ldr x20, [x0]
+ mov x1, x20
+ ldr x1, [x1, #0x38]
+ ldr x1, [x1, #0x08]
+ ldr x1, [x1, #0x10]
+ cmp x1, #128
+ ble G_M30499_IG07
+ ;; size=28 bbWeight=99.89 PerfScore 1398.41
+G_M30499_IG07: ; bbWeight=99.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
ldr w1, [fp, #0xD1FFAB1E] // [V02 loc0+0x08]
ldr x2, [fp, #0xD1FFAB1E] // [V02 loc0]
; gcrRegs +[x2]
ldr w3, [x2, #0x08]
cmp w1, w3
- blo G_M30499_IG08
+ blo G_M30499_IG09
;; size=20 bbWeight=99.89 PerfScore 849.04
-G_M30499_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30499_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x2 x19]
movz x1, #0xD1FFAB1E // code for System.Collections.ThrowHelper:ThrowInvalidOperationException()
movk x1, #0xD1FFAB1E LSL #16
@@ -110,7 +122,7 @@ G_M30499_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M30499_IG08: ; bbWeight=99.89, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+G_M30499_IG09: ; bbWeight=99.89, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2 x19]
ldr w3, [x2, #0x08]
cmp w1, w3
@@ -127,11 +139,11 @@ G_M30499_IG08: ; bbWeight=99.89, gcrefRegs=80004 {x2 x19}, byrefRegs=0000
cmp x2, #136
ble G_M30499_IG04
;; size=40 bbWeight=99.89 PerfScore 1847.90
-G_M30499_IG09: ; bbWeight=79.91, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M30499_IG10: ; bbWeight=79.91, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x11, [x1, #0x88]
cbz x11, G_M30499_IG04
;; size=8 bbWeight=79.91 PerfScore 319.64
-G_M30499_IG10: ; bbWeight=99.89, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M30499_IG11: ; bbWeight=99.89, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
mov x1, x21
@@ -140,9 +152,11 @@ G_M30499_IG10: ; bbWeight=99.89, gcrefRegs=280000 {x19 x21}, byrefRegs=00
blr x2
; gcrRegs -[x0-x1 x21]
; gcr arg pop 0
- cbz w0, G_M30499_IG12
+ cbz w0, G_M30499_IG13
;; size=20 bbWeight=99.89 PerfScore 599.32
-G_M30499_IG11: ; bbWeight=100, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M30499_IG12: ; bbWeight=100, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [fp, #0xD1FFAB1E] // [V00 this]
+ ; gcrRegs +[x0]
ldr w1, [fp, #0xD1FFAB1E] // [V02 loc0+0x08]
add w1, w1, #1
str w1, [fp, #0xD1FFAB1E] // [V02 loc0+0x08]
@@ -158,51 +172,58 @@ G_M30499_IG11: ; bbWeight=100, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
str w1, [fp, #0xD1FFAB1E] // [V02 loc0+0x08]
- b G_M30499_IG16
- ;; size=48 bbWeight=100 PerfScore 1900.00
-G_M30499_IG12: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+ mov w1, wzr
+ cbnz w1, G_M30499_IG06
+ b G_M30499_IG17
+ ;; size=60 bbWeight=100 PerfScore 2250.00
+G_M30499_IG13: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x19]
+ ldr x0, [fp, #0xD1FFAB1E] // [V00 this]
+ ; gcrRegs +[x0]
ldr x1, [x20, #0x38]
ldr x1, [x1, #0x08]
ldr x2, [x1, #0x10]
cmp x2, #144
- ble G_M30499_IG20
- ;; size=20 bbWeight=0.17 PerfScore 1.78
-G_M30499_IG13: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ble G_M30499_IG21
+ ;; size=24 bbWeight=0.17 PerfScore 2.12
+G_M30499_IG14: ; bbWeight=0.14, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x2, [x1, #0x90]
- cbz x2, G_M30499_IG20
+ cbz x2, G_M30499_IG21
;; size=8 bbWeight=0.14 PerfScore 0.54
-G_M30499_IG14: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30499_IG15: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
add x0, fp, #0xD1FFAB1E // [V02 loc0]
blr x2
; gcr arg pop 0
mov w0, wzr
;; size=12 bbWeight=0.17 PerfScore 0.34
-G_M30499_IG15: ; bbWeight=0.17, epilog, nogc, extend
+G_M30499_IG16: ; bbWeight=0.17, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #0xD1FFAB1E
ret lr
;; size=20 bbWeight=0.17 PerfScore 0.93
-G_M30499_IG16: ; bbWeight=0.10, gcVars=0000000000000800 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30499_IG17: ; bbWeight=0.10, gcVars=0000000000004000 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
ldr x0, [fp, #0x10] // [V22 PSPSym]
- bl G_M30499_IG21
+ ; gcrRegs -[x0]
+ bl G_M30499_IG22
;; size=8 bbWeight=0.10 PerfScore 0.31
-G_M30499_IG17: ; bbWeight=0.10, nogc, extend
+G_M30499_IG18: ; bbWeight=0.10, nogc, extend
nop
;; size=4 bbWeight=0.10 PerfScore 0.05
-G_M30499_IG18: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30499_IG19: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
;; size=4 bbWeight=0.10 PerfScore 0.05
-G_M30499_IG19: ; bbWeight=0.10, epilog, nogc, extend
+G_M30499_IG20: ; bbWeight=0.10, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #0xD1FFAB1E
ret lr
;; size=20 bbWeight=0.10 PerfScore 0.57
-G_M30499_IG20: ; bbWeight=0.06, gcVars=0000000000000800 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30499_IG21: ; bbWeight=0.06, gcVars=0000000000004000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...
1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList
1Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
-; V01 loc0 [V01,T01] ( 7, 2.32) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
+; V01 loc0 [V01,T01] ( 7, 2.24) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
; V02 loc1 [V02,T02] ( 3, 0.13) ushort -> x1
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,23 +25,28 @@ G_M207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
;; size=8 bbWeight=1 PerfScore 1.50
G_M207_IG02: ; bbWeight=1.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M207_IG04
+ cbnz x0, G_M207_IG04
;; size=4 bbWeight=1.04 PerfScore 1.04
-G_M207_IG03: ; bbWeight=0.07, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M207_IG03: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M207_IG04: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
; gcrRegs +[x1]
cmp x0, x1
- bne G_M207_IG05
- ;; size=24 bbWeight=0.07 PerfScore 0.44
-G_M207_IG04: ; bbWeight=0.07, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ beq G_M207_IG03
+ b G_M207_IG06
+ ;; size=28 bbWeight=0.07 PerfScore 0.51
+G_M207_IG05: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.07 PerfScore 0.15
-G_M207_IG05: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [x0, #0x08]
+ b G_M207_IG02
+ ;; size=8 bbWeight=0.04 PerfScore 0.17
+G_M207_IG06: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0, #0x10]
; gcrRegs +[x1]
ldrh w1, [x1, #0x0C]
@@ -51,12 +56,11 @@ G_M207_IG05: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0001
mov w3, #0xD1FFAB1E
cmp w2, #2
ccmp w1, w3, z, hi
- beq G_M207_IG04
- ldr x0, [x0, #0x08]
- b G_M207_IG02
- ;; size=40 bbWeight=0.04 PerfScore 0.57
+ beq G_M207_IG03
+ b G_M207_IG05
+ ;; size=36 bbWeight=0.04 PerfScore 0.45
-; Total bytes of code 84, prolog size 8, PerfScore 3.70, instruction count 21, allocated bytes for code 84 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
+; Total bytes of code 92, prolog size 8, PerfScore 3.67, instruction count 23, allocated bytes for code 92 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
; ============================================================
Unwind Info:
@@ -67,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList
1Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
-; V01 loc0 [V01,T01] ( 7, 2.89) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
+; V01 loc0 [V01,T01] ( 7, 2.67) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
; V02 loc1 [V02,T02] ( 3, 0.33) ushort -> x1
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,23 +25,28 @@ G_M207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
;; size=8 bbWeight=1 PerfScore 1.50
G_M207_IG02: ; bbWeight=1.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M207_IG04
+ cbnz x0, G_M207_IG04
;; size=4 bbWeight=1.11 PerfScore 1.11
-G_M207_IG03: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M207_IG03: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M207_IG04: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
; gcrRegs +[x1]
cmp x0, x1
- bne G_M207_IG05
- ;; size=24 bbWeight=0.22 PerfScore 1.33
-G_M207_IG04: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ beq G_M207_IG03
+ b G_M207_IG06
+ ;; size=28 bbWeight=0.22 PerfScore 1.56
+G_M207_IG05: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.22 PerfScore 0.44
-G_M207_IG05: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [x0, #0x08]
+ b G_M207_IG02
+ ;; size=8 bbWeight=0.11 PerfScore 0.44
+G_M207_IG06: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0, #0x10]
; gcrRegs +[x1]
ldrh w1, [x1, #0x0C]
@@ -51,12 +56,11 @@ G_M207_IG05: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0001
mov w3, #0xD1FFAB1E
cmp w2, #2
ccmp w1, w3, z, hi
- beq G_M207_IG04
- ldr x0, [x0, #0x08]
- b G_M207_IG02
- ;; size=40 bbWeight=0.11 PerfScore 1.50
+ beq G_M207_IG03
+ b G_M207_IG05
+ ;; size=36 bbWeight=0.11 PerfScore 1.17
-; Total bytes of code 84, prolog size 8, PerfScore 5.89, instruction count 21, allocated bytes for code 84 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
+; Total bytes of code 92, prolog size 8, PerfScore 5.78, instruction count 23, allocated bytes for code 92 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
; ============================================================
Unwind Info:
@@ -67,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,90 +10,75 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <ManagedTests.DynamicCSharp.Conformance.dynamic.statements.cnst.readonly08.readonly08.MyStruct2>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M16591_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M16591_IG07
+ cbz x20, G_M16591_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- add x0, x21, #0xD1FFAB1E
- cmp x1, x0
- bne G_M16591_IG07
- add x0, x21, #0xD1FFAB1E
- cmp x1, x0
- beq G_M16591_IG05
- ;; size=40 bbWeight=0.50 PerfScore 4.25
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M16591_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M16591_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- add x0, x21, #0xD1FFAB1E
- bl CORINFO_HELP_UNBOX
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
ldr w1, [x20, #0x08]
str w1, [x0, #0x08]
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M16591_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M16591_IG11
+ beq G_M16591_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -101,7 +86,7 @@ G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -117,15 +102,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 228, prolog size 24, PerfScore 32.50, instruction count 57, allocated bytes for code 228 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 192, prolog size 20, PerfScore 27.25, instruction count 48, allocated bytes for code 192 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -136,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -150,9 +134,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -10,16 +10,14 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T07] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T02] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T07] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V09 cse0 [V09,T03] ( 4, 1.75) long -> x0 "CSE - moderate"
-; V10 cse1 [V10,T05] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V11 cse2 [V11,T08] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V06 tmp3 [V06,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T05] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V08 tmp5 [V08,T03] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V09 cse0 [V09,T06] ( 2, 1 ) long -> x1 "CSE - moderate"
;
; Lcl frame size = 0
@@ -33,59 +31,46 @@ G_M44930_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=20 bbWeight=1 PerfScore 3.50
G_M44930_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M44930_IG07
+ cbz x20, G_M44930_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M44930_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- bne G_M44930_IG07
- cmp x1, x0
- beq G_M44930_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M44930_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M44930_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ldr w0, [x20, #0x08]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M44930_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44930_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M44930_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M44930_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x10]
strb wzr, [x19, #0x10]
- cbz w0, G_M44930_IG09
+ cbz w0, G_M44930_IG08
mov w0, wzr
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M44930_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44930_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M44930_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x19]
+ ldr w0, [x20, #0x08]
+ ;; size=4 bbWeight=0.50 PerfScore 1.50
+G_M44930_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M44930_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M44930_IG11
+ beq G_M44930_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M44930_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M44930_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -93,7 +78,7 @@ G_M44930_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M44930_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M44930_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -109,14 +94,14 @@ G_M44930_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M44930_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 204, prolog size 20, PerfScore 27.75, instruction count 51, allocated bytes for code 204 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
+; Total bytes of code 172, prolog size 20, PerfScore 25.50, instruction count 43, allocated bytes for code 172 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,16 +10,14 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T07] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T02] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T07] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V09 cse0 [V09,T03] ( 4, 1.75) long -> x0 "CSE - moderate"
-; V10 cse1 [V10,T05] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V11 cse2 [V11,T08] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V06 tmp3 [V06,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T05] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V08 tmp5 [V08,T03] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V09 cse0 [V09,T06] ( 2, 1 ) long -> x1 "CSE - moderate"
;
; Lcl frame size = 0
@@ -33,59 +31,46 @@ G_M44174_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=20 bbWeight=1 PerfScore 3.50
G_M44174_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M44174_IG07
+ cbz x20, G_M44174_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M44174_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- bne G_M44174_IG07
- cmp x1, x0
- beq G_M44174_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M44174_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M44174_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ldrb w0, [x20, #0x08]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M44174_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44174_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M44174_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M44174_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x10]
strb wzr, [x19, #0x10]
- cbz w0, G_M44174_IG09
+ cbz w0, G_M44174_IG08
mov w0, wzr
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M44174_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M44174_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44174_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M44174_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x19]
+ ldrb w0, [x20, #0x08]
+ ;; size=4 bbWeight=0.50 PerfScore 1.50
+G_M44174_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M44174_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M44174_IG11
+ beq G_M44174_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M44174_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M44174_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -93,7 +78,7 @@ G_M44174_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M44174_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M44174_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -109,14 +94,14 @@ G_M44174_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M44174_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M44174_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 204, prolog size 20, PerfScore 27.75, instruction count 51, allocated bytes for code 204 (MethodHash=493d5371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
+; Total bytes of code 172, prolog size 20, PerfScore 25.50, instruction count 43, allocated bytes for code 172 (MethodHash=493d5371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -56,12 +56,11 @@ G_M4885_IG05: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {},
ldr w4, [x2, #0x08]
cmp w4, w3
blo G_M4885_IG04
- add x2, x2, #16
+ b G_M4885_IG08
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M4885_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
; gcrRegs -[x2]
; byrRegs +[x2]
- sxtw w4, w3
- ;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M4885_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
mov w3, w4
add x0, x0, #28
; gcrRegs -[x0]
@@ -77,8 +76,16 @@ G_M4885_IG07: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M4885_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0 x2]
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
+ sxtw w4, w3
+ b G_M4885_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 8, PerfScore 20.75, instruction count 30, allocated bytes for code 120 (MethodHash=8f5cecea) for method System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 21.75, instruction count 32, allocated bytes for code 128 (MethodHash=8f5cecea) for method System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
; ============================================================
Unwind Info:
@@ -89,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,114 +8,95 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4 ) long -> [fp+0x18] EH-live single-def
+; V00 TypeCtx [V00,T00] ( 8, 3 ) long -> [fp+0x28] EH-live single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[int]>
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
-; V03 loc0 [V03,T07] ( 5, 3 ) ref -> [fp+0x10] do-not-enreg[M] class-hnd EH-live <System.Exception>
+; V02 arg1 [V02,T01] ( 4, 2 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
+; V03 loc0 [V03,T06] ( 5, 0 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <System.Exception>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V09 tmp2 [V09,T08] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
-; V10 tmp3 [V10,T00] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V11 tmp4 [V11,T11] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V12 tmp5 [V12,T04] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp6 [V13,T05] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V14 tmp7 [V14,T12] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V15 PSPSym [V15,T10] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V16 cse0 [V16,T06] ( 7, 3.50) long -> x19 multi-def "CSE - aggressive"
-; V17 cse1 [V17,T09] ( 3, 2 ) long -> x20 "CSE - moderate"
+; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
+; V09 tmp2 [V09,T08] ( 3, 0 ) long -> x4 "fgMakeTemp is creating a new local variable"
+; V10 tmp3 [V10,T05] ( 6, 0 ) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V11 tmp4 [V11,T09] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp5 [V12,T02] ( 2, 1 ) byref -> [fp+0x10] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp6 [V13,T03] ( 2, 1 ) int -> [fp+0x24] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V14 tmp7 [V14,T10] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V15 PSPSym [V15,T04] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 32
+; Lcl frame size = 48
-G_M22620_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M22620_IG01: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x30]
mov fp, sp
add x4, sp, #64
- stp x0, x4, [fp, #0x20] // [V15 PSPSym]
- str x0, [fp, #0x18] // [V00 TypeCtx]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M22620_IG02: ; bbWeight=1, gcrefRegs=0008 {x3}, byrefRegs=0002 {x1}, byref
+ stp x0, x4, [fp, #0x30] // [V15 PSPSym]
+ str x0, [fp, #0x28] // [V00 TypeCtx]
+ str x1, [fp, #0x10] // [V12 tmp5]
+ ; GC ptr vars +{V12}
+ str w2, [fp, #0x24] // [V13 tmp6]
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M22620_IG02: ; bbWeight=0, gcVars=0000000000000004 {V12}, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x3]
+ ldr x1, [fp, #0x10] // [V12 tmp5]
; byrRegs +[x1]
+ ldr w2, [fp, #0x24] // [V13 tmp6]
ldr x0, [x3, #0x08]
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
+ ; GC ptr vars -{V12}
blr x3
; gcrRegs -[x0]
; byrRegs -[x1]
; gcr arg pop 0
- str xzr, [fp, #0x10] // [V03 loc0]
+ str xzr, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
- ;; size=16 bbWeight=1 PerfScore 8.00
-G_M22620_IG03: ; bbWeight=1, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr x0, [fp, #0x10] // [V03 loc0]
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M22620_IG03: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x0]
- cbz x0, G_M22620_IG09
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
+ cbz x0, G_M22620_IG05
+ ldr x0, [fp, #0x28] // [V00 TypeCtx]
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
- ldr x1, [fp, #0x10] // [V03 loc0]
+ ldr x1, [x0, #0x38]
+ ldr x0, [x1]
+ ldr x1, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M22620_IG08
- ;; size=40 bbWeight=1 PerfScore 16.00
-G_M22620_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- mov x2, x19
- cmp x20, x2
- beq G_M22620_IG06
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M22620_IG05: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ cbz x0, G_M22620_IG07
+ ldr x2, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x4, [x3, #0x38]
+ ldr x4, [x4]
+ cmp x2, x4
+ beq G_M22620_IG04
+ mov x0, x4
; gcrRegs -[x0]
- mov x0, x2
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M22620_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- cmp x20, x19
- bne G_M22620_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M22620_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M22620_IG08: ; bbWeight=0, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- mov x0, x19
- bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- ldr x1, [fp, #0x10] // [V03 loc0]
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
+ ;; size=68 bbWeight=0 PerfScore 0.00
+G_M22620_IG04: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x2, [x3, #0x38]
ldr x2, [x2]
- ; GC ptr vars -{V03}
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- bl CORINFO_HELP_THROW
+ cmp x1, x2
+ bne G_M22620_IG07
+ b G_M22620_IG06
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M22620_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M22620_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
+ ; GC ptr vars -{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
; gcr arg pop 0
@@ -127,40 +108,66 @@ G_M22620_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bl CORINFO_HELP_THROW
; gcrRegs -[x0]
+ ; gcr arg pop 0
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M22620_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs +[x0]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M22620_IG07: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ ; GC ptr vars +{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
+ bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ ldr x1, [fp, #0x18] // [V03 loc0]
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ ; GC ptr vars -{V03}
+ blr x2
+ ; gcrRegs -[x1]
+ ; gcr arg pop 0
+ bl CORINFO_HELP_THROW
+ ; gcrRegs -[x0]
; gcr arg pop 0
brk_unix #0
;; size=48 bbWeight=0 PerfScore 0.00
-G_M22620_IG10: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M22620_IG08: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp fp, lr, [sp, #-0x20]!
add x3, fp, #64
str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M22620_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- str x0, [fp, #0x10] // [V03 loc0]
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M22620_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
adr x0, [G_M22620_IG03]
; gcrRegs -[x0]
;; size=8 bbWeight=0 PerfScore 0.00
-G_M22620_IG12: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+G_M22620_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 24, PerfScore 36.38, instruction count 61, allocated bytes for code 244 (MethodHash=0395a7a3) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 272, prolog size 28, PerfScore 0.00, instruction count 68, allocated bytes for code 272 (MethodHash=0395a7a3) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,12 +175,9 @@ Unwind Info:
...
@@ -8,114 +8,95 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4 ) long -> [fp+0x18] EH-live single-def
+; V00 TypeCtx [V00,T00] ( 8, 3 ) long -> [fp+0x28] EH-live single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[int]>
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
-; V03 loc0 [V03,T07] ( 5, 3 ) ref -> [fp+0x10] do-not-enreg[M] class-hnd EH-live <System.Exception>
+; V02 arg1 [V02,T01] ( 4, 2 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
+; V03 loc0 [V03,T06] ( 5, 0 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <System.Exception>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V09 tmp2 [V09,T08] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
-; V10 tmp3 [V10,T00] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V11 tmp4 [V11,T11] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V12 tmp5 [V12,T04] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp6 [V13,T05] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V14 tmp7 [V14,T12] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V15 PSPSym [V15,T10] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V16 cse0 [V16,T06] ( 7, 3.50) long -> x19 multi-def "CSE - aggressive"
-; V17 cse1 [V17,T09] ( 3, 2 ) long -> x20 "CSE - moderate"
+; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
+; V09 tmp2 [V09,T08] ( 3, 0 ) long -> x4 "fgMakeTemp is creating a new local variable"
+; V10 tmp3 [V10,T05] ( 6, 0 ) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V11 tmp4 [V11,T09] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp5 [V12,T02] ( 2, 1 ) byref -> [fp+0x10] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp6 [V13,T03] ( 2, 1 ) int -> [fp+0x24] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V14 tmp7 [V14,T10] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V15 PSPSym [V15,T04] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 32
+; Lcl frame size = 48
-G_M57052_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M57052_IG01: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x30]
mov fp, sp
add x4, sp, #64
- stp x0, x4, [fp, #0x20] // [V15 PSPSym]
- str x0, [fp, #0x18] // [V00 TypeCtx]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M57052_IG02: ; bbWeight=1, gcrefRegs=0008 {x3}, byrefRegs=0002 {x1}, byref
+ stp x0, x4, [fp, #0x30] // [V15 PSPSym]
+ str x0, [fp, #0x28] // [V00 TypeCtx]
+ str x1, [fp, #0x10] // [V12 tmp5]
+ ; GC ptr vars +{V12}
+ str w2, [fp, #0x24] // [V13 tmp6]
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M57052_IG02: ; bbWeight=0, gcVars=0000000000000004 {V12}, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x3]
+ ldr x1, [fp, #0x10] // [V12 tmp5]
; byrRegs +[x1]
+ ldr w2, [fp, #0x24] // [V13 tmp6]
ldr x0, [x3, #0x08]
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
+ ; GC ptr vars -{V12}
blr x3
; gcrRegs -[x0]
; byrRegs -[x1]
; gcr arg pop 0
- str xzr, [fp, #0x10] // [V03 loc0]
+ str xzr, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
- ;; size=16 bbWeight=1 PerfScore 8.00
-G_M57052_IG03: ; bbWeight=1, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr x0, [fp, #0x10] // [V03 loc0]
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M57052_IG03: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x0]
- cbz x0, G_M57052_IG09
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
+ cbz x0, G_M57052_IG05
+ ldr x0, [fp, #0x28] // [V00 TypeCtx]
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
- ldr x1, [fp, #0x10] // [V03 loc0]
+ ldr x1, [x0, #0x38]
+ ldr x0, [x1]
+ ldr x1, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M57052_IG08
- ;; size=40 bbWeight=1 PerfScore 16.00
-G_M57052_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- mov x2, x19
- cmp x20, x2
- beq G_M57052_IG06
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M57052_IG05: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ cbz x0, G_M57052_IG07
+ ldr x2, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x4, [x3, #0x38]
+ ldr x4, [x4]
+ cmp x2, x4
+ beq G_M57052_IG04
+ mov x0, x4
; gcrRegs -[x0]
- mov x0, x2
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M57052_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- cmp x20, x19
- bne G_M57052_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M57052_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M57052_IG08: ; bbWeight=0, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- mov x0, x19
- bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- ldr x1, [fp, #0x10] // [V03 loc0]
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
+ ;; size=68 bbWeight=0 PerfScore 0.00
+G_M57052_IG04: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x2, [x3, #0x38]
ldr x2, [x2]
- ; GC ptr vars -{V03}
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- bl CORINFO_HELP_THROW
+ cmp x1, x2
+ bne G_M57052_IG07
+ b G_M57052_IG06
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M57052_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M57052_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
+ ; GC ptr vars -{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
; gcr arg pop 0
@@ -127,40 +108,66 @@ G_M57052_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bl CORINFO_HELP_THROW
; gcrRegs -[x0]
+ ; gcr arg pop 0
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M57052_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs +[x0]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M57052_IG07: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ ; GC ptr vars +{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
+ bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ ldr x1, [fp, #0x18] // [V03 loc0]
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ ; GC ptr vars -{V03}
+ blr x2
+ ; gcrRegs -[x1]
+ ; gcr arg pop 0
+ bl CORINFO_HELP_THROW
+ ; gcrRegs -[x0]
; gcr arg pop 0
brk_unix #0
;; size=48 bbWeight=0 PerfScore 0.00
-G_M57052_IG10: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M57052_IG08: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp fp, lr, [sp, #-0x20]!
add x3, fp, #64
str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M57052_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- str x0, [fp, #0x10] // [V03 loc0]
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M57052_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
adr x0, [G_M57052_IG03]
; gcrRegs -[x0]
;; size=8 bbWeight=0 PerfScore 0.00
-G_M57052_IG12: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+G_M57052_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 24, PerfScore 36.38, instruction count 61, allocated bytes for code 244 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 272, prolog size 28, PerfScore 0.00, instruction count 68, allocated bytes for code 272 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,12 +175,9 @@ Unwind Info:
...
@@ -11,20 +11,20 @@
; V00 arg0 [V00,T08] ( 6, 8 ) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T13] ( 4, 3.50) byref -> x1 single-def
; V02 arg2 [V02,T12] ( 5, 3.50) byref -> x19 single-def
-; V03 loc0 [V03,T00] ( 26, 69 ) int -> x20
-; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x23
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> x3 single-def
-; V06 loc3 [V06,T16] ( 7, 3.50) int -> x2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x4
-; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x5
-; V09 loc6 [V09,T06] ( 7, 17 ) int -> x2
+; V03 loc0 [V03,T00] ( 26, 69 ) int -> x2
+; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x5
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> x6 single-def
+; V06 loc3 [V06,T16] ( 7, 3.50) int -> x7
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x8
+; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x9
+; V09 loc6 [V09,T06] ( 7, 17 ) int -> x7
; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> x5
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x20 "impSpillLclRefs"
+; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x2 "impSpillLclRefs"
;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x2 "Inlining Arg"
+; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x6 "Inlining Arg"
;* V15 tmp4 [V15,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x3 "Inlining Arg"
+; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x6 "Inlining Arg"
;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -32,199 +32,186 @@
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value"
-; V24 cse0 [V24,T09] ( 4, 9 ) int -> x23 "CSE - aggressive"
-; V25 cse1 [V25,T03] ( 10, 32 ) int -> x21 hoist "CSE - aggressive"
-; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x22 "CSE - aggressive"
+; V24 cse0 [V24,T09] ( 4, 9 ) int -> x5 "CSE - aggressive"
+; V25 cse1 [V25,T03] ( 10, 32 ) int -> x3 hoist "CSE - aggressive"
+; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x4 "CSE - aggressive"
;
; Lcl frame size = 8
G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
mov x19, x2
; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
; gcrRegs +[x0]
; byrRegs +[x1]
- ldr w20, [x1]
- ldr w21, [x0, #0x08]
+ ldr w2, [x1]
+ ldr w3, [x0, #0x08]
;; size=8 bbWeight=1 PerfScore 6.00
G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w21, w20
- beq G_M24207_IG29
+ cmp w3, w2
+ beq G_M24207_IG27
;; size=8 bbWeight=8 PerfScore 12.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w20, w21
- bhs G_M24207_IG35
- add x22, x0, #12
- ; byrRegs +[x22]
- ldrh w23, [x22, w20, UXTW #2]
- sxtw w2, w23
- cmp w2, #32
- ccmp w2, #9, z, ne
- ccmp w2, #13, z, ne
- beq G_M24207_IG07
+ cmp w2, w3
+ bhs G_M24207_IG33
+ add x4, x0, #12
+ ; byrRegs +[x4]
+ ldrh w5, [x4, w2, UXTW #2]
+ sxtw w6, w5
+ cmp w6, #32
+ ccmp w6, #9, z, ne
+ ccmp w6, #13, z, ne
+ beq G_M24207_IG06
;; size=36 bbWeight=4 PerfScore 32.00
-G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, #10
- beq G_M24207_IG07
+G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w6, #10
+ bne G_M24207_IG07
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- sxtw w3, w23
- cmp w3, #34
- beq G_M24207_IG09
- b G_M24207_IG08
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
- ; byrRegs -[x22]
- add w20, w20, #1
+G_M24207_IG06: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
+ ; byrRegs -[x4]
+ add w2, w2, #1
b G_M24207_IG03
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; byrRegs +[x22]
- cmp w3, #39
- beq G_M24207_IG09
- mov w23, wzr
+G_M24207_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ ; byrRegs +[x4]
+ sxtw w6, w5
+ cmp w6, #34
+ beq G_M24207_IG08
+ cmp w6, #39
+ bne G_M24207_IG09
+ ;; size=20 bbWeight=0.50 PerfScore 1.75
+G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ add w2, w2, #1
b G_M24207_IG10
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ mov w5, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w3, w20
- sxtw w2, w21
- mov w4, wzr
+G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sxtw w6, w2
+ sxtw w7, w3
+ mov w8, wzr
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w21, w20
- ble G_M24207_IG17
- cmp w20, w21
- bhs G_M24207_IG35
- ldrh w5, [x22, w20, UXTW #2]
- cmp w5, #92
+G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w3, w2
+ ble G_M24207_IG16
+ cmp w2, w3
+ bhs G_M24207_IG33
+ ldrh w9, [x4, w2, UXTW #2]
+ cmp w9, #92
bne G_M24207_IG12
- mov w4, #1
- add w20, w20, #2
+ mov w8, #1
+ add w2, w2, #2
b G_M24207_IG11
;; size=40 bbWeight=4 PerfScore 38.00
-G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG15
+G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cbnz w5, G_M24207_IG14
;; size=4 bbWeight=4 PerfScore 4.00
-G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w5, #61
- beq G_M24207_IG19
- cmp w5, #44
- beq G_M24207_IG19
- cmp w5, #34
- beq G_M24207_IG29
- cmp w5, #39
- bne G_M24207_IG16
- ;; size=32 bbWeight=2 PerfScore 12.00
-G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x1 x22]
- b G_M24207_IG29
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; gcrRegs +[x0]
- ; byrRegs +[x1 x22]
- cmp w5, w23
+G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w9, #61
beq G_M24207_IG18
+ cmp w9, #44
+ beq G_M24207_IG18
+ cmp w9, #34
+ beq G_M24207_IG27
+ cmp w9, #39
+ bne G_M24207_IG15
+ b G_M24207_IG27
+ ;; size=36 bbWeight=2 PerfScore 14.00
+G_M24207_IG14: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w9, w5
+ beq G_M24207_IG17
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+G_M24207_IG15: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ add w2, w2, #1
b G_M24207_IG11
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w20, w21
- b G_M24207_IG19
+G_M24207_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sxtw w2, w3
+ b G_M24207_IG18
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w2, w20
- add w20, w2, #1
+G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sxtw w7, w2
+ add w2, w7, #1
;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG25
- sub w2, w20, #1
- b G_M24207_IG21
+G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cbnz w5, G_M24207_IG24
+ sub w7, w2, #1
+ b G_M24207_IG20
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sub w2, w2, #1
+G_M24207_IG19: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sub w7, w7, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, w3
- blt G_M24207_IG22
- cmp w2, w21
- bhs G_M24207_IG35
- ldrh w5, [x22, w2, UXTW #2]
+G_M24207_IG20: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w7, w6
+ blt G_M24207_IG21
+ cmp w7, w3
+ bhs G_M24207_IG33
...
@@ -11,25 +11,24 @@
; V00 arg0 [V00,T02] ( 7, 5 ) ref -> x19 class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 4, 3.50) byref -> x20 single-def
; V02 arg2 [V02,T04] ( 4, 3.50) byref -> x21 single-def
-; V03 loc0 [V03,T08] ( 5, 4 ) int -> x23
+; V03 loc0 [V03,T08] ( 5, 2.50) int -> x22
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
-; V05 loc2 [V05,T01] ( 6, 18.50) int -> x24
+; V05 loc2 [V05,T01] ( 6, 17 ) int -> x0
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
;* V08 tmp2 [V08,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp3 [V09,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T00] ( 5, 36 ) ushort -> x1 "Inlining Arg"
-; V11 cse0 [V11,T05] ( 4, 5.50) int -> x22 "CSE - aggressive"
-; V12 cse1 [V12,T06] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
+; V10 tmp4 [V10,T00] ( 5, 36 ) ushort -> x3 "Inlining Arg"
+; V11 cse0 [V11,T05] ( 4, 5.50) int -> x2 "CSE - aggressive"
+; V12 cse1 [V12,T06] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive"
; V13 cse2 [V13,T07] ( 3, 3 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
G_M22854_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -37,7 +36,7 @@ G_M22854_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x20]
mov x21, x2
; byrRegs +[x21]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=28 bbWeight=1 PerfScore 5.00
G_M22854_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -59,64 +58,60 @@ G_M22854_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20
cbz x19, G_M22854_IG04
;; size=40 bbWeight=1 PerfScore 6.50
G_M22854_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
- ldr w22, [x19, #0x08]
- cbz w22, G_M22854_IG04
- mov w23, wzr
- mov w24, wzr
- cmp w22, #0
- ble G_M22854_IG12
- b G_M22854_IG06
- ;; size=28 bbWeight=0.50 PerfScore 3.75
+ ldr w2, [x19, #0x08]
+ cbnz w2, G_M22854_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M22854_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x20-x21]
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M22854_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M22854_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, gcvars, byref
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M22854_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, gcvars, byref, isz
; gcrRegs +[x19]
; byrRegs +[x20-x21]
- add x0, x19, #12
- ; byrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M22854_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300001 {x0 x20 x21}, byref, isz
- ldrh w1, [x0, w24, UXTW #2]
- mov w2, #0xD1FFAB1E
- mov w3, #0xD1FFAB1E
- cmp w1, #45
- ccmp w1, w2, z, ne
- ccmp w1, w3, z, ne
- beq G_M22854_IG11
+ mov w22, wzr
+ mov w0, wzr
+ cmp w2, #0
+ ble G_M22854_IG11
+ add x1, x19, #12
+ ; byrRegs +[x1]
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
+G_M22854_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300002 {x1 x20 x21}, byref, isz
+ ldrh w3, [x1, w0, UXTW #2]
+ mov w4, #0xD1FFAB1E
+ mov w5, #0xD1FFAB1E
+ cmp w3, #45
+ ccmp w3, w4, z, ne
+ ccmp w3, w5, z, ne
+ beq G_M22854_IG10
;; size=28 bbWeight=4 PerfScore 26.00
-G_M22854_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=300001 {x0 x20 x21}, byref, isz
- mov w2, #0xD1FFAB1E
- cmp w1, w2
- beq G_M22854_IG11
+G_M22854_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=300002 {x1 x20 x21}, byref, isz
+ mov w4, #0xD1FFAB1E
+ cmp w3, w4
+ beq G_M22854_IG10
;; size=12 bbWeight=2 PerfScore 4.00
-G_M22854_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300001 {x0 x20 x21}, byref, isz
- add w24, w24, #1
- cmp w22, w24
+G_M22854_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300002 {x1 x20 x21}, byref, isz
+ add w0, w0, #1
+ cmp w2, w0
bgt G_M22854_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
+ b G_M22854_IG11
+ ;; size=16 bbWeight=4 PerfScore 12.00
G_M22854_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref
- ; byrRegs -[x0]
- b G_M22854_IG12
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M22854_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref
- sxtw w23, w24
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M22854_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
- cmp w23, #0
+ ; byrRegs -[x1]
+ sxtw w22, w0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22854_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
+ cmp w22, #0
ble G_M22854_IG04
mov x0, x19
; gcrRegs +[x0]
- mov w2, w23
+ mov w2, w22
mov w1, wzr
movz x3, #0xD1FFAB1E // code for System.String:Substring(int,int):System.String:this
movk x3, #0xD1FFAB1E LSL #16
@@ -131,7 +126,7 @@ G_M22854_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14 x20]
- add w1, w23, #1
+ add w1, w22, #1
mov x0, x19
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for System.String:Substring(int):System.String:this
@@ -150,15 +145,14 @@ G_M22854_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {
; byrRegs -[x14 x21]
mov w0, #1
;; size=96 bbWeight=0.50 PerfScore 9.75
-G_M22854_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30]
+G_M22854_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 304, prolog size 32, PerfScore 71.00, instruction count 76, allocated bytes for code 304 (MethodHash=b068a6b9) for method System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
+; Total bytes of code 288, prolog size 28, PerfScore 71.25, instruction count 72, allocated bytes for code 288 (MethodHash=b068a6b9) for method System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -169,7 +163,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
+ Function Length : 72 (0x00048) Actual length = 288 (0x000120)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -181,9 +175,9 @@ Unwind Info:
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
E6 save_next
- E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E4 end
E4 end
E4 end
@@ -11,7 +11,7 @@
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T00] ( 5, 44 ) ref -> x19 class-hnd exact "impAppendStmt" <System.String>
-; V03 tmp2 [V03,T02] ( 5, 15 ) ref -> registers class-hnd "Inline return value spill temp" <System.String>
+; V03 tmp2 [V03,T02] ( 5, 15 ) ref -> x20 class-hnd "Inline return value spill temp" <System.String>
; V04 tmp3 [V04,T01] ( 5, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -81,10 +81,8 @@ G_M26077_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=68 bbWeight=8 PerfScore 144.00
G_M26077_IG03: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr w1, [x19, #0x08]
- cbz w1, G_M26077_IG04
- cbz x0, G_M26077_IG07
- b G_M26077_IG06
- ;; size=16 bbWeight=2 PerfScore 12.00
+ cbnz w1, G_M26077_IG06
+ ;; size=8 bbWeight=2 PerfScore 8.00
G_M26077_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
mov x20, x0
@@ -101,21 +99,19 @@ G_M26077_IG05: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
;; size=4 bbWeight=2 PerfScore 2.00
G_M26077_IG06: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] +[x0 x19]
+ cbz x0, G_M26077_IG07
ldr w3, [x0, #0x08]
- cbz w3, G_M26077_IG07
- add x2, x19, #12
- ; byrRegs +[x2]
- b G_M26077_IG08
- ;; size=16 bbWeight=2 PerfScore 11.00
+ cbnz w3, G_M26077_IG08
+ ;; size=12 bbWeight=2 PerfScore 10.00
G_M26077_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ; byrRegs -[x2]
mov x20, x19
; gcrRegs +[x20]
b G_M26077_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M26077_IG08: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
- ; gcrRegs -[x19-x20] +[x0]
+G_M26077_IG08: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20] +[x0]
+ add x2, x19, #12
; byrRegs +[x2]
add x0, x0, #12
; gcrRegs -[x0]
@@ -130,15 +126,13 @@ G_M26077_IG08: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, by
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs +[x0]
+ ; gcrRegs -[x19] +[x0]
; byrRegs -[x0 x2]
- mov x19, x0
- ; gcrRegs +[x19]
- mov x20, x19
+ mov x20, x0
; gcrRegs +[x20]
;; size=44 bbWeight=2 PerfScore 17.00
G_M26077_IG09: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x0]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -159,7 +153,7 @@ G_M26077_IG11: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 232, prolog size 12, PerfScore 274.50, instruction count 58, allocated bytes for code 232 (MethodHash=15049a22) for method ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 269.50, instruction count 55, allocated bytes for code 220 (MethodHash=15049a22) for method ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -170,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -22,26 +22,20 @@ G_M65033_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x0C]
cmp w1, #1
- beq G_M65033_IG05
+ beq G_M65033_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M65033_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
cmp w1, #2
- bne G_M65033_IG07
+ bne G_M65033_IG08
ldr w1, [x0, #0x10]
add w1, w1, #1
str w1, [x0, #0x10]
ldr w2, [x0, #0x18]
cmp w1, w2
- beq G_M65033_IG07
- mov w0, #1
- ; gcrRegs -[x0]
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M65033_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
+ beq G_M65033_IG08
+ b G_M65033_IG06
+ ;; size=36 bbWeight=0.50 PerfScore 5.75
+G_M65033_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w1, [x0, #0x14]
str w1, [x0, #0x10]
mov w1, #2
@@ -49,23 +43,30 @@ G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov w0, #1
; gcrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M65033_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M65033_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M65033_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M65033_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movn w1, #0
str w1, [x0, #0x0C]
mov w0, wzr
; gcrRegs -[x0]
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 112, prolog size 8, PerfScore 18.50, instruction count 28, allocated bytes for code 112 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 19.00, instruction count 29, allocated bytes for code 116 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -76,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -37,73 +37,77 @@ G_M3894_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
add x1, x0, x1
mov w4, wzr
cmp x0, x1
- bhs G_M3894_IG11
+ bhs G_M3894_IG05
;; size=20 bbWeight=1 PerfScore 3.50
G_M3894_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add x5, x0, #2
ldrh w0, [x0]
cmp w0, #128
- bge G_M3894_IG05
+ bge G_M3894_IG06
;; size=16 bbWeight=4 PerfScore 20.00
G_M3894_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #1
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M3894_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
- cmp w0, #0xD1FFAB1E
- bge G_M3894_IG06
- mov w6, #2
- b G_M3894_IG08
- ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ mov x5, x0
+ b G_M3894_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M3894_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ bge G_M3894_IG07
+ mov w6, #2
+ b G_M3894_IG09
+ ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
movn w6, #0xD1FFAB1E
add w0, w0, w6
mov w6, #0xD1FFAB1E
cmp x5, x1
ccmp w0, w6, c, lo
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
ldrh w0, [x5]
movn w6, #0xD1FFAB1E
add w0, w0, w6
cmp w0, #0xD1FFAB1E
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
mov w6, #4
add x5, x5, #2
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=56 bbWeight=2 PerfScore 22.00
-G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+G_M3894_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #3
;; size=4 bbWeight=2 PerfScore 1.00
-G_M3894_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+G_M3894_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add w0, w4, w6
cmp w0, w2
- bgt G_M3894_IG10
+ bgt G_M3894_IG11
sxtw w4, w0
cmp x5, x1
+ blo G_M3894_IG10
+ b G_M3894_IG12
+ ;; size=28 bbWeight=4 PerfScore 20.00
+G_M3894_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov x0, x5
- blo G_M3894_IG03
- ;; size=28 bbWeight=4 PerfScore 18.00
-G_M3894_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- b G_M3894_IG11
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3894_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ b G_M3894_IG03
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M3894_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w0, #1
cmp w6, #4
cinc w0, w0, ge
sbfiz x0, x0, #1, #32
sub x5, x5, x0
- mov x0, x5
- ;; size=24 bbWeight=0.50 PerfScore 1.75
-G_M3894_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- str x0, [x3]
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
+G_M3894_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ str x5, [x3]
mov w0, w4
;; size=8 bbWeight=1 PerfScore 1.50
-G_M3894_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M3894_IG13: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 80.75, instruction count 50, allocated bytes for code 200 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
+; Total bytes of code 208, prolog size 8, PerfScore 85.75, instruction count 52, allocated bytes for code 208 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -114,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -19,7 +19,7 @@
;
; Lcl frame size = 8
-G_M5512_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M5512_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
@@ -47,7 +47,7 @@ G_M5512_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M5512_IG09
+ cbnz w0, G_M5512_IG07
;; size=44 bbWeight=2 PerfScore 35.00
G_M5512_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x10]
@@ -56,11 +56,11 @@ G_M5512_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
mov w1, #0xD1FFAB1E
; gcrRegs -[x1]
cmp w0, w1
- beq G_M5512_IG07
+ beq G_M5512_IG09
ldr x19, [x19, #0x08]
;; size=24 bbWeight=2 PerfScore 22.00
G_M5512_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M5512_IG07
+ cbz x19, G_M5512_IG09
;; size=4 bbWeight=8 PerfScore 8.00
G_M5512_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
@@ -70,10 +70,11 @@ G_M5512_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
; gcrRegs +[x1]
cmp x19, x1
bne G_M5512_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ b G_M5512_IG11
+ ;; size=28 bbWeight=4 PerfScore 28.00
G_M5512_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x19]
- mov w0, wzr
+ mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M5512_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
@@ -81,15 +82,18 @@ G_M5512_IG08: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M5512_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M5512_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M5512_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b G_M5512_IG09
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 148, prolog size 12, PerfScore 100.00, instruction count 37, allocated bytes for code 148 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
+; Total bytes of code 156, prolog size 12, PerfScore 104.50, instruction count 39, allocated bytes for code 156 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -100,7 +104,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -76,10 +76,8 @@ G_M49441_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
;; size=4 bbWeight=1 PerfScore 1.00
G_M49441_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x08]
- cbz w0, G_M49441_IG04
- cbz x20, G_M49441_IG07
- b G_M49441_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w0, G_M49441_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M49441_IG04: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
mov x0, x20
@@ -93,16 +91,12 @@ G_M49441_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=16 bbWeight=0.50 PerfScore 2.50
G_M49441_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
+ cbz x20, G_M49441_IG07
ldr w21, [x20, #0x08]
- cbz w21, G_M49441_IG07
- add x0, x20, #12
- ; byrRegs +[x0]
- sxtw w1, w21
- b G_M49441_IG09
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ cbnz w21, G_M49441_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- ; byrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -112,9 +106,11 @@ G_M49441_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M49441_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M49441_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x20]
+ add x0, x20, #12
; byrRegs +[x0]
+ sxtw w1, w21
bl System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte
; byrRegs -[x0]
cbnz w0, G_M49441_IG04
@@ -127,7 +123,7 @@ G_M49441_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
bl <unknown method>
; gcrRegs -[x19-x20] +[x0]
; byrRegs -[x0 x2]
- ;; size=28 bbWeight=0.50 PerfScore 3.75
+ ;; size=36 bbWeight=0.50 PerfScore 4.25
G_M49441_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -135,7 +131,7 @@ G_M49441_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 148, prolog size 16, PerfScore 23.25, instruction count 37, allocated bytes for code 148 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 140, prolog size 16, PerfScore 22.25, instruction count 35, allocated bytes for code 140 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
; ============================================================
Cfi Info:
1[ushort],System.ReadOnlySpan
1[ushort],int):int:this (FullOpts)@@ -88,7 +88,7 @@ G_M8857_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0041 {x0 x6},
; byrRegs +[x2]
bl <unknown method>
; byrRegs -[x0 x2 x6]
- b G_M8857_IG08
+ b G_M8857_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M8857_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0041 {x0 x6}, byref
; byrRegs +[x0 x6]
@@ -96,34 +96,31 @@ G_M8857_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0041 {x0 x6},
; byrRegs +[x2]
bl <unknown method>
; byrRegs -[x0 x2 x6]
- b G_M8857_IG08
+ b G_M8857_IG07
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M8857_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0041 {x0 x6}, byref, isz
; byrRegs +[x0 x6]
mov w2, #0xD1FFAB1E
cmp w5, w2
- bne G_M8857_IG07
- b G_M8857_IG04
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M8857_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0041 {x0 x6}, byref, isz
+ beq G_M8857_IG04
mov w2, #0xD1FFAB1E
cmp w5, w2
- bne G_M8857_IG09
+ bne G_M8857_IG08
b G_M8857_IG05
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M8857_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=28 bbWeight=0.50 PerfScore 2.50
+G_M8857_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0 x6]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M8857_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8857_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #69
mov w1, #85
bl System.ThrowHelper:ThrowArgumentException(int,int)
brk_unix #0
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 116, prolog size 8, PerfScore 13.00, instruction count 29, allocated bytes for code 116 (MethodHash=5574dd66) for method System.Globalization.CompareInfo:IndexOf(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 12.50, instruction count 28, allocated bytes for code 112 (MethodHash=5574dd66) for method System.Globalization.CompareInfo:IndexOf(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (FullOpts)
; ============================================================
Cfi Info:
@@ -47,10 +47,8 @@ G_M26691_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
;; size=4 bbWeight=1 PerfScore 1.00
G_M26691_IG03: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w23, [x20, #0x08]
- cbz w23, G_M26691_IG04
- cbz x21, G_M26691_IG07
- b G_M26691_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w23, G_M26691_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M26691_IG04: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
mov x0, x21
@@ -71,11 +69,10 @@ G_M26691_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M26691_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x2] +[x20]
+ cbz x21, G_M26691_IG07
ldr w24, [x21, #0x08]
- cbz w24, G_M26691_IG07
- cbz x22, G_M26691_IG10
- b G_M26691_IG09
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w24, G_M26691_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M26691_IG07: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
mov x0, x20
@@ -96,11 +93,10 @@ G_M26691_IG08: ; bbWeight=0.50, epilog, nogc, extend
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M26691_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x2] +[x21]
+ cbz x22, G_M26691_IG10
ldr w25, [x22, #0x08]
- cbz w25, G_M26691_IG10
- cbz x19, G_M26691_IG14
- b G_M26691_IG12
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w25, G_M26691_IG12
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M26691_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
mov x0, x20
@@ -121,8 +117,30 @@ G_M26691_IG11: ; bbWeight=0.50, epilog, nogc, extend
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M26691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x2] +[x22]
+ cbz x19, G_M26691_IG13
ldr w0, [x19, #0x08]
- cbz w0, G_M26691_IG14
+ cbnz w0, G_M26691_IG15
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
+G_M26691_IG13: ; bbWeight=0.50, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ mov x1, x21
+ ; gcrRegs +[x1]
+ mov x2, x22
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
+G_M26691_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x25, x26, [sp, #0x40]
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x50
+ b <unknown method>
+ ; gcr arg pop 0
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M26691_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x0-x2] +[x19]
mov w0, w24
add x0, x0, w23, UXTW
add x0, x0, w25, UXTW
@@ -130,7 +148,7 @@ G_M26691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780
add x0, x0, w1, UXTW
mov x1, #0xD1FFAB1E
cmp x0, x1
- bgt G_M26691_IG16
+ bgt G_M26691_IG17
bl System.String:FastAllocateString(int):System.String
; gcrRegs +[x0]
; gcr arg pop 0
@@ -169,8 +187,8 @@ G_M26691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=780
; gcr arg pop 0
mov x0, x26
; gcrRegs +[x0]
- ;; size=116 bbWeight=0.50 PerfScore 12.25
-G_M26691_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=108 bbWeight=0.50 PerfScore 10.25
+G_M26691_IG16: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
@@ -178,32 +196,14 @@ G_M26691_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M26691_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x26] +[x20-x22]
- mov x0, x20
- ; gcrRegs +[x0]
- mov x1, x21
- ; gcrRegs +[x1]
- mov x2, x22
- ; gcrRegs +[x2]
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M26691_IG15: ; bbWeight=0.50, epilog, nogc, extend
- ldp x25, x26, [sp, #0x40]
- ldp x23, x24, [sp, #0x30]
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x50
- b <unknown method>
- ; gcr arg pop 0
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M26691_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0-x2 x20-x22]
+G_M26691_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x26]
bl System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 384, prolog size 40, PerfScore 47.75, instruction count 96, allocated bytes for code 384 (MethodHash=389697bc) for method System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
+; Total bytes of code 372, prolog size 40, PerfScore 46.25, instruction count 93, allocated bytes for code 372 (MethodHash=389697bc) for method System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
; ============================================================
Cfi Info:
@@ -82,58 +82,64 @@ G_M25962_IG08: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
ldrsb wzr, [x20]
;; size=12 bbWeight=0.50 PerfScore 2.25
G_M25962_IG09: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- str x20, [fp, #0x18] // [V06 loc3]
+ stp x20, x20, [fp, #0x10] // [V00 arg0], [V06 loc3]
+ ; GC ptr vars +{V00}
ldr x0, [fp, #0x18] // [V06 loc3]
; byrRegs +[x0]
sub x1, x0, #4
;; size=12 bbWeight=4 PerfScore 14.00
-G_M25962_IG10: ; bbWeight=32, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25962_IG10: ; bbWeight=32, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x20]
; byrRegs -[x0]
ldr w0, [x1]
and w2, w0, #0xD1FFAB1E
- cbnz w2, G_M25962_IG13
+ cbnz w2, G_M25962_IG12
;; size=12 bbWeight=32 PerfScore 144.00
-G_M25962_IG11: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25962_IG11: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
orr w2, w0, w19
mov w3, w0
casal w3, w2, [x1]
cmp w3, w0
bne G_M25962_IG10
- ;; size=20 bbWeight=16 PerfScore 88.00
-G_M25962_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
b G_M25962_IG26
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M25962_IG13: ; bbWeight=32, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x20]
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M25962_IG12: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
and w3, w0, #0xD1FFAB1E
mov w4, #0xD1FFAB1E
cmp w3, w4
beq G_M25962_IG23
- tbnz w0, #27, G_M25962_IG24
+ tbnz w0, #27, G_M25962_IG15
uxth w2, w0
cmp w2, w19
bne G_M25962_IG16
;; size=32 bbWeight=32 PerfScore 176.00
-G_M25962_IG14: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25962_IG13: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w2, w0, #16, LSL #12
tst w2, #0xD1FFAB1E
- beq G_M25962_IG24
+ beq G_M25962_IG14
mov w3, w0
casal w3, w2, [x1]
cmp w3, w0
bne G_M25962_IG10
- ;; size=28 bbWeight=16 PerfScore 112.00
-G_M25962_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
b G_M25962_IG26
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M25962_IG16: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=16 PerfScore 128.00
+G_M25962_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x20, [fp, #0x10] // [V00 arg0]
; gcrRegs +[x20]
+ b G_M25962_IG24
+ ;; size=8 bbWeight=8 PerfScore 24.00
+G_M25962_IG15: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ ldr x20, [fp, #0x10] // [V00 arg0]
+ ; gcrRegs +[x20]
+ b G_M25962_IG24
+ ;; size=8 bbWeight=16 PerfScore 48.00
+G_M25962_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
str xzr, [fp, #0x18] // [V06 loc3]
cbz w21, G_M25962_IG20
;; size=8 bbWeight=4 PerfScore 8.00
-G_M25962_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25962_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w22, #0xD1FFAB1E
ble G_M25962_IG18
adrp x1, [HIGH RELOC #0xD1FFAB1E]
@@ -145,32 +151,29 @@ G_M25962_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=24 bbWeight=2 PerfScore 8.00
-G_M25962_IG18: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25962_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w22, #0
ble G_M25962_IG20
- str x20, [fp, #0x10] // [V00 arg0]
- ; GC ptr vars +{V00}
mov w0, w22
- ;; size=16 bbWeight=2 PerfScore 6.00
-G_M25962_IG19: ; bbWeight=2, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x20]
+ ;; size=12 bbWeight=2 PerfScore 4.00
+G_M25962_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
bl <unknown method>
; gcr arg pop 0
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr w0, [x0]
- ldr x20, [fp, #0x10] // [V00 arg0]
- ; gcrRegs +[x20]
cbnz w0, G_M25962_IG28
- ;; size=24 bbWeight=2 PerfScore 16.00
-G_M25962_IG20: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
+ ;; size=20 bbWeight=2 PerfScore 12.00
+G_M25962_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1
cmp w22, w21
+ ldr x20, [fp, #0x10] // [V00 arg0]
+ ; gcrRegs +[x20]
ble G_M25962_IG09
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M25962_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=4 PerfScore 16.00
+G_M25962_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20]
+ ; GC ptr vars -{V00}
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M25962_IG22: ; bbWeight=0.50, epilog, nogc, extend
@@ -206,14 +209,14 @@ G_M25962_IG27: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M25962_IG28: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x20]
+G_M25962_IG28: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V00 V08}
bl CORINFO_HELP_POLL_GC
; gcr arg pop 0
b G_M25962_IG20
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 392, prolog size 32, PerfScore 606.50, instruction count 98, allocated bytes for code 392 (MethodHash=c3c79a95) for method System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
+; Total bytes of code 404, prolog size 32, PerfScore 711.50, instruction count 101, allocated bytes for code 404 (MethodHash=c3c79a95) for method System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
; ============================================================
Cfi Info:
@@ -23,17 +23,17 @@ G_M11536_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.50
G_M11536_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M11536_IG06
+ cbz x0, G_M11536_IG05
add x1, x0, #16
; byrRegs +[x1]
ldar w1, [x1]
; byrRegs -[x1]
- tbnz w1, #0, G_M11536_IG05
+ tbnz w1, #0, G_M11536_IG06
;; size=16 bbWeight=1 PerfScore 5.50
G_M11536_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0, #0x08]
cmn x1, #1
- beq G_M11536_IG05
+ beq G_M11536_IG06
;; size=12 bbWeight=0.50 PerfScore 2.25
G_M11536_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
@@ -42,6 +42,14 @@ G_M11536_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
;; size=12 bbWeight=1 PerfScore 4.00
G_M11536_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
+ adrp x0, [HIGH RELOC #0xD1FFAB1E]
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ; gcrRegs +[x0]
+ bl System.ArgumentNullException:Throw(System.String)
+ ; gcrRegs -[x0]
+ brk_unix #0
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M11536_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class>
add x0, x0, [LOW RELOC #0xD1FFAB1E]
bl CORINFO_HELP_NEWSFAST
@@ -60,17 +68,10 @@ G_M11536_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[x0]
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M11536_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- adrp x0, [HIGH RELOC #0xD1FFAB1E]
- add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ; gcrRegs +[x0]
- bl System.ArgumentNullException:Throw(System.String)
- ; gcrRegs -[x0]
brk_unix #0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 12, PerfScore 14.25, instruction count 28, allocated bytes for code 112 (MethodHash=02e6d2ef) for method System.Net.Sockets.Socket:ValidateHandle(System.Net.Sockets.SafeSocketHandle):System.Net.Sockets.SafeSocketHandle (FullOpts)
+; Total bytes of code 116, prolog size 12, PerfScore 14.25, instruction count 29, allocated bytes for code 116 (MethodHash=02e6d2ef) for method System.Net.Sockets.Socket:ValidateHandle(System.Net.Sockets.SafeSocketHandle):System.Net.Sockets.SafeSocketHandle (FullOpts)
; ============================================================
Cfi Info:
@@ -23,13 +23,13 @@ G_M46483_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.50
G_M46483_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
- cbz x1, G_M46483_IG07
- tbnz w2, #31, G_M46483_IG06
+ cbz x1, G_M46483_IG06
+ tbnz w2, #31, G_M46483_IG07
;; size=8 bbWeight=1 PerfScore 2.00
G_M46483_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
mov w14, #0xD1FFAB1E
cmp w2, w14
- bgt G_M46483_IG06
+ bgt G_M46483_IG07
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M46483_IG04: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
str w2, [x0, #0x10]
@@ -47,6 +47,14 @@ G_M46483_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
G_M46483_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ adrp x0, [HIGH RELOC #0xD1FFAB1E]
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ; gcrRegs +[x0]
+ bl System.ArgumentNullException:Throw(System.String)
+ ; gcrRegs -[x0]
+ brk_unix #0
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M46483_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class>
add x0, x0, [LOW RELOC #0xD1FFAB1E]
bl CORINFO_HELP_NEWSFAST
@@ -62,17 +70,10 @@ G_M46483_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[x0]
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M46483_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- adrp x0, [HIGH RELOC #0xD1FFAB1E]
- add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ; gcrRegs +[x0]
- bl System.ArgumentNullException:Throw(System.String)
- ; gcrRegs -[x0]
brk_unix #0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 112, prolog size 12, PerfScore 12.50, instruction count 28, allocated bytes for code 112 (MethodHash=d1844a6c) for method System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this (FullOpts)
+; Total bytes of code 116, prolog size 12, PerfScore 12.50, instruction count 29, allocated bytes for code 116 (MethodHash=d1844a6c) for method System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this (FullOpts)
; ============================================================
Cfi Info:
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.linux.arm64.checked.mch | 1,414 | 287 | 197 | 930 | -1,556 | +1,924 |
benchmarks.run_pgo.linux.arm64.checked.mch | 10,706 | 5,547 | 1,568 | 3,591 | -27,264 | +12,292 |
benchmarks.run_tiered.linux.arm64.checked.mch | 615 | 92 | 82 | 441 | -1,112 | +972 |
coreclr_tests.run.linux.arm64.checked.mch | 20,947 | 10,308 | 1,108 | 9,531 | -47,300 | +8,432 |
libraries.crossgen2.linux.arm64.checked.mch | 4,696 | 523 | 393 | 3,780 | -3,224 | +3,248 |
libraries.pmi.linux.arm64.checked.mch | 10,522 | 2,260 | 1,415 | 6,847 | -14,120 | +10,072 |
libraries_tests.run.linux.arm64.Release.mch | 41,250 | 13,166 | 6,812 | 21,272 | -107,120 | +60,220 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 18,612 | 3,684 | 1,412 | 13,516 | -32,060 | +10,816 |
realworld.run.linux.arm64.checked.mch | 1,661 | 258 | 206 | 1,197 | -1,740 | +1,568 |
smoke_tests.nativeaot.linux.arm64.checked.mch | 463 | 71 | 45 | 347 | -536 | +340 |
110,886 | 36,196 | 13,238 | 61,452 | -236,032 | +109,884 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.linux.arm64.checked.mch | 33,636 | 2,755 | 30,881 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.linux.arm64.checked.mch | 153,704 | 60,106 | 93,598 | 152 (0.10%) | 152 (0.10%) |
benchmarks.run_tiered.linux.arm64.checked.mch | 63,983 | 47,942 | 16,041 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.linux.arm64.checked.mch | 628,136 | 383,770 | 244,366 | 334 (0.05%) | 335 (0.05%) |
libraries.crossgen2.linux.arm64.checked.mch | 233,777 | 15 | 233,762 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.linux.arm64.checked.mch | 294,238 | 6 | 294,232 | 1 (0.00%) | 2 (0.00%) |
libraries_tests.run.linux.arm64.Release.mch | 737,784 | 487,495 | 250,289 | 3,053 (0.41%) | 3,054 (0.41%) |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 304,057 | 21,560 | 282,497 | 6 (0.00%) | 14 (0.00%) |
realworld.run.linux.arm64.checked.mch | 33,304 | 151 | 33,153 | 0 (0.00%) | 0 (0.00%) |
smoke_tests.nativeaot.linux.arm64.checked.mch | 19,041 | 6 | 19,035 | 0 (0.00%) | 0 (0.00%) |
2,501,660 | 1,003,806 | 1,497,854 | 3,546 (0.14%) | 3,557 (0.14%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15579776 (overridden on cmd)
Total bytes of diff: 15580144 (overridden on cmd)
Total bytes of delta: 368 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
100 : 28414.dasm (0.49 % of base)
100 : 28851.dasm (0.52 % of base)
60 : 13360.dasm (3.14 % of base)
44 : 542.dasm (2.29 % of base)
40 : 22379.dasm (0.42 % of base)
36 : 18267.dasm (0.61 % of base)
36 : 18317.dasm (1.04 % of base)
36 : 22973.dasm (0.46 % of base)
32 : 11481.dasm (0.22 % of base)
32 : 30817.dasm (0.86 % of base)
32 : 32879.dasm (0.84 % of base)
32 : 9055.dasm (2.04 % of base)
32 : 29206.dasm (2.35 % of base)
32 : 29744.dasm (0.23 % of base)
28 : 29742.dasm (0.47 % of base)
28 : 1739.dasm (0.27 % of base)
28 : 20136.dasm (0.60 % of base)
24 : 11476.dasm (0.30 % of base)
24 : 17479.dasm (1.21 % of base)
24 : 33030.dasm (0.23 % of base)
Top file improvements (bytes):
-32 : 11489.dasm (-0.32 % of base)
-32 : 12480.dasm (-0.32 % of base)
-28 : 4120.dasm (-0.52 % of base)
-24 : 6901.dasm (-0.68 % of base)
-16 : 3431.dasm (-3.36 % of base)
-16 : 3513.dasm (-1.25 % of base)
-16 : 12345.dasm (-4.04 % of base)
-16 : 14072.dasm (-1.26 % of base)
-16 : 9141.dasm (-1.20 % of base)
-12 : 11497.dasm (-0.12 % of base)
-12 : 4165.dasm (-4.62 % of base)
-12 : 7191.dasm (-0.17 % of base)
-12 : 755.dasm (-1.92 % of base)
-12 : 12679.dasm (-0.56 % of base)
-12 : 19749.dasm (-0.43 % of base)
-12 : 2345.dasm (-3.33 % of base)
-12 : 2597.dasm (-0.36 % of base)
-12 : 1039.dasm (-1.27 % of base)
-12 : 12117.dasm (-3.45 % of base)
-12 : 28854.dasm (-0.22 % of base)
71 total files with Code Size differences (35 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
100 (0.49 % of base) : 28414.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
100 (0.52 % of base) : 28851.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
60 (3.14 % of base) : 13360.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
44 (2.29 % of base) : 542.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (0.42 % of base) : 22379.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (0.46 % of base) : 22973.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (1.04 % of base) : 18317.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 18267.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
32 (0.22 % of base) : 11481.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (0.23 % of base) : 29744.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (2.35 % of base) : 29206.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterLocation:Write2_Location(System.String,System.String,MicroBenchmarks.Serializers.Location,ubyte,ubyte):this (FullOpts)
32 (0.84 % of base) : 32879.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
32 (0.86 % of base) : 30817.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
32 (2.04 % of base) : 9055.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
28 (0.47 % of base) : 29742.dasm - (dynamicClass):_DynamicMethod9(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
28 (0.60 % of base) : 20136.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__checkConstraintLanguageVersionAndRuntimeSupportForConversion|210_2(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
28 (0.27 % of base) : 1739.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
24 (0.23 % of base) : 33030.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)
24 (0.30 % of base) : 11476.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
24 (1.21 % of base) : 17479.dasm - Interop+procfs:TryParseStatusFile(System.String,byref):ubyte (FullOpts)
Top method improvements (bytes):
-32 (-0.32 % of base) : 12480.dasm - Jil.Deserialize.Methods:ParseISO8601Date(System.IO.TextReader,ushort[],int,int):System.DateTime (FullOpts)
-32 (-0.32 % of base) : 11489.dasm - Jil.Deserialize.Methods:ParseISO8601DateThunkReader(byref,ushort[],int,int):System.DateTime (FullOpts)
-28 (-0.52 % of base) : 4120.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
-24 (-0.68 % of base) : 6901.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
-16 (-1.25 % of base) : 3513.dasm - Interop+Crypto:HashAlgorithmToEvp(System.String):long (FullOpts)
-16 (-3.36 % of base) : 3431.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-16 (-1.20 % of base) : 9141.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-16 (-4.04 % of base) : 12345.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-16 (-1.26 % of base) : 14072.dasm - System.Xml.XmlBinaryReader:ReadElementContentAsInt():int:this (FullOpts)
-12 (-1.27 % of base) : 1039.dasm - BenchmarkDotNet.Engines.EngineActualStage:.ctor(BenchmarkDotNet.Engines.IEngine):this (FullOpts)
-12 (-0.22 % of base) : 28854.dasm - Jil.Deserialize.Methods:SkipWithLeadChar(System.IO.TextReader,int) (FullOpts)
-12 (-0.12 % of base) : 11497.dasm - Jil.Deserialize.Methods:SkipWithLeadCharThunkReader(byref,int) (FullOpts)
-12 (-0.43 % of base) : 19749.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-12 (-3.33 % of base) : 2345.dasm - System.Collections.Queue:.ctor(int,float):this (FullOpts)
-12 (-0.56 % of base) : 12679.dasm - System.Decimal+DecCalc:VarDecDiv(byref,byref) (FullOpts)
-12 (-4.62 % of base) : 4165.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-12 (-3.45 % of base) : 12117.dasm - System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
-12 (-1.92 % of base) : 755.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-12 (-0.36 % of base) : 2597.dasm - System.Text.RegularExpressions.RegexParser:ScanGroupOpen():System.Text.RegularExpressions.RegexNode:this (FullOpts)
-12 (-0.17 % of base) : 7191.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WritePrimitive(System.Xml.Serialization.TypeMapping,System.String):this (FullOpts)
Top method regressions (percentages):
8 (4.65 % of base) : 15270.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
8 (4.00 % of base) : 21208.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
4 (3.57 % of base) : 6566.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
60 (3.14 % of base) : 13360.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
8 (2.74 % of base) : 7842.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
12 (2.73 % of base) : 29918.dasm - System.Linq.Tests.Perf_Enumerable:EmptyTakeSelectToArray():this (FullOpts)
32 (2.35 % of base) : 29206.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterLocation:Write2_Location(System.String,System.String,MicroBenchmarks.Serializers.Location,ubyte,ubyte):this (FullOpts)
44 (2.29 % of base) : 542.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
4 (2.22 % of base) : 2456.dasm - System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this (FullOpts)
4 (2.22 % of base) : 17753.dasm - System.Xml.XmlTextReaderImpl:MoveToNextContentNode(ubyte):ubyte:this (FullOpts)
8 (2.13 % of base) : 19936.dasm - Microsoft.CodeAnalysis.Compilation:CommonBindScriptClass():Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
32 (2.04 % of base) : 9055.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
4 (2.00 % of base) : 17081.dasm - System.Net.Sockets.Socket:ValidateHandle(System.Net.Sockets.SafeSocketHandle):System.Net.Sockets.SafeSocketHandle (FullOpts)
12 (1.92 % of base) : 15988.dasm - System.Collections.Immutable.ImmutableExtensions:ToArray[int](System.Collections.Generic.IEnumerable`1[int],int):int[] (FullOpts)
20 (1.88 % of base) : 15248.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterIndexViewModel:Write3_CampaignSummaryViewModel(System.String,System.String,MicroBenchmarks.Serializers.CampaignSummaryViewModel,ubyte,ubyte):this (FullOpts)
16 (1.85 % of base) : 12772.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
4 (1.75 % of base) : 20854.dasm - Microsoft.Cci.MetadataWriter:GetDefiningUnitReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IUnitReference (FullOpts)
4 (1.61 % of base) : 19587.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetNullableAnalysisValue():System.Nullable`1[ubyte]:this (FullOpts)
12 (1.36 % of base) : 16181.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
4 (1.27 % of base) : 180.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (FullOpts)
Top method improvements (percentages):
-8 (-6.45 % of base) : 15383.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-8 (-6.06 % of base) : 1975.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-4 (-5.00 % of base) : 4922.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
-12 (-4.62 % of base) : 4165.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-16 (-4.04 % of base) : 12345.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-4 (-3.57 % of base) : 16639.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
-12 (-3.45 % of base) : 12117.dasm - System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
-16 (-3.36 % of base) : 3431.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-12 (-3.33 % of base) : 2345.dasm - System.Collections.Queue:.ctor(int,float):this (FullOpts)
-4 (-3.23 % of base) : 20072.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
-8 (-2.78 % of base) : 12207.dasm - System.IO.Pipes.NamedPipeClientStream:ConnectInternal(int,System.Threading.CancellationToken,int):this (FullOpts)
-8 (-2.41 % of base) : 16205.dasm - System.Collections.IterateForEach`1[int]:Stack():int:this (FullOpts)
-4 (-2.27 % of base) : 4704.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 13318.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 14485.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 21535.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 22543.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 28677.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 8622.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 7944.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80916176 (overridden on cmd)
Total bytes of diff: 80901204 (overridden on cmd)
Total bytes of delta: -14972 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
284 : 134867.dasm (11.11 % of base)
100 : 114762.dasm (0.49 % of base)
100 : 121879.dasm (0.52 % of base)
40 : 97418.dasm (0.42 % of base)
36 : 100640.dasm (0.46 % of base)
32 : 101774.dasm (2.20 % of base)
32 : 150248.dasm (4.02 % of base)
32 : 28559.dasm (0.22 % of base)
32 : 95543.dasm (2.20 % of base)
32 : 121632.dasm (2.20 % of base)
32 : 130486.dasm (0.23 % of base)
32 : 130696.dasm (2.69 % of base)
32 : 139225.dasm (2.20 % of base)
32 : 147816.dasm (2.20 % of base)
32 : 23595.dasm (2.20 % of base)
32 : 54210.dasm (2.20 % of base)
28 : 100966.dasm (4.76 % of base)
28 : 123888.dasm (4.76 % of base)
28 : 92783.dasm (4.76 % of base)
28 : 114136.dasm (4.76 % of base)
Top file improvements (bytes):
-504 : 147752.dasm (-34.90 % of base)
-456 : 147769.dasm (-33.14 % of base)
-156 : 70760.dasm (-21.55 % of base)
-156 : 70731.dasm (-21.55 % of base)
-72 : 50583.dasm (-3.10 % of base)
-64 : 94632.dasm (-1.80 % of base)
-56 : 70761.dasm (-0.90 % of base)
-56 : 102666.dasm (-6.70 % of base)
-44 : 134744.dasm (-3.10 % of base)
-40 : 1077.dasm (-1.25 % of base)
-40 : 75812.dasm (-2.89 % of base)
-40 : 85640.dasm (-0.21 % of base)
-36 : 69858.dasm (-0.67 % of base)
-36 : 48315.dasm (-0.81 % of base)
-36 : 94549.dasm (-2.79 % of base)
-36 : 32188.dasm (-0.81 % of base)
-36 : 43925.dasm (-0.81 % of base)
-32 : 91787.dasm (-0.53 % of base)
-32 : 125442.dasm (-0.72 % of base)
-32 : 69938.dasm (-1.54 % of base)
72 total files with Code Size differences (35 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
284 (11.11 % of base) : 134867.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
100 (0.49 % of base) : 114762.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
100 (0.52 % of base) : 121879.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
40 (0.42 % of base) : 97418.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (0.46 % of base) : 100640.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location (FullOpts)
32 (0.22 % of base) : 28559.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (0.23 % of base) : 130486.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (2.20 % of base) : 101774.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.20 % of base) : 95543.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.20 % of base) : 121632.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.20 % of base) : 139225.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.20 % of base) : 147816.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.20 % of base) : 23595.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.20 % of base) : 54210.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.69 % of base) : 130696.dasm - System.Reflection.TypeNameParser:ParseNamedTypeName():System.Reflection.TypeNameParser+TypeName:this (Tier1)
32 (4.02 % of base) : 150248.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem[System.__Canon](System.Action`1[System.__Canon],System.__Canon,ubyte):ubyte (Tier1)
28 (4.76 % of base) : 100966.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
28 (4.76 % of base) : 123888.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
28 (4.76 % of base) : 92783.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
28 (4.76 % of base) : 114136.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
Top method improvements (bytes):
-504 (-34.90 % of base) : 147752.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-456 (-33.14 % of base) : 147769.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-156 (-21.55 % of base) : 70760.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 70731.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-72 (-3.10 % of base) : 50583.dasm - System.Net.Security.Tests.SslStreamTests+<WriteReadAsync>d__33:MoveNext():this (Tier1-OSR)
-64 (-1.80 % of base) : 94632.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:Free():this (Tier1)
-56 (-6.70 % of base) : 102666.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-56 (-0.90 % of base) : 70761.dasm - LUDecomp:Run():double:this (Tier1)
-44 (-3.10 % of base) : 134744.dasm - System.Text.RegularExpressions.RegexCharClass:MayOverlap(System.String,System.String):ubyte (Tier1)
-40 (-0.21 % of base) : 85640.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindSimpleBinaryOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-40 (-2.89 % of base) : 75812.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
-40 (-1.25 % of base) : 1077.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateMethods(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeMethodInfo[]:this (Tier0-FullOpts)
-36 (-2.79 % of base) : 94549.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:SetSlotAssigned(int,byref):this (Tier1)
-36 (-0.81 % of base) : 48315.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
-36 (-0.81 % of base) : 32188.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
-36 (-0.81 % of base) : 43925.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
-36 (-0.67 % of base) : 69858.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
-32 (-0.72 % of base) : 125442.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
-32 (-1.54 % of base) : 69938.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
-32 (-0.53 % of base) : 91787.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
Top method regressions (percentages):
284 (11.11 % of base) : 134867.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
16 (10.81 % of base) : 49847.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (10.81 % of base) : 58399.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (10.81 % of base) : 5543.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (10.81 % of base) : 7466.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (10.81 % of base) : 44919.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (7.14 % of base) : 49848.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
16 (7.14 % of base) : 44923.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
16 (7.14 % of base) : 58400.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
16 (7.14 % of base) : 7467.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
16 (5.48 % of base) : 153180.dasm - System.Reflection.TypeNameParser:GetNextToken():int:this (Tier1)
8 (5.13 % of base) : 59722.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
8 (4.76 % of base) : 91830.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.Net.Sockets.SocketAsyncEngine+SocketIOEvent]:Enqueue(System.Net.Sockets.SocketAsyncEngine+SocketIOEvent):this (Tier1)
28 (4.76 % of base) : 100966.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
28 (4.76 % of base) : 123888.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
28 (4.76 % of base) : 92783.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
28 (4.76 % of base) : 114136.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
28 (4.76 % of base) : 118825.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
28 (4.76 % of base) : 120816.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
28 (4.76 % of base) : 58658.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
Top method improvements (percentages):
-504 (-34.90 % of base) : 147752.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-456 (-33.14 % of base) : 147769.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-156 (-21.55 % of base) : 70760.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 70731.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-8 (-11.11 % of base) : 5856.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-24 (-7.41 % of base) : 112419.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
-24 (-7.41 % of base) : 28562.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
-24 (-7.41 % of base) : 114763.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
-20 (-7.25 % of base) : 103169.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-20 (-7.25 % of base) : 58164.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-20 (-7.25 % of base) : 54244.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-20 (-7.25 % of base) : 111701.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-20 (-7.25 % of base) : 109169.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-16 (-7.02 % of base) : 17466.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner2(int[,],byref) (Tier1-OSR)
-16 (-6.90 % of base) : 17464.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner1(int[,],byref) (Tier1-OSR)
-56 (-6.70 % of base) : 102666.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-4 (-6.67 % of base) : 37030.dasm - System.Math:Max(double,double):double (Tier1)
-4 (-6.25 % of base) : 142611.dasm - System.Math:Max(double,double):double (Tier1)
-4 (-6.25 % of base) : 21287.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-4 (-6.25 % of base) : 22319.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 24709612 (overridden on cmd)
Total bytes of diff: 24709472 (overridden on cmd)
Total bytes of delta: -140 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
100 : 57319.dasm (0.49 % of base)
100 : 58077.dasm (0.52 % of base)
44 : 43053.dasm (2.29 % of base)
40 : 53009.dasm (0.42 % of base)
36 : 41559.dasm (0.61 % of base)
36 : 50627.dasm (1.04 % of base)
36 : 53786.dasm (0.46 % of base)
32 : 23776.dasm (0.22 % of base)
32 : 59272.dasm (0.23 % of base)
32 : 49397.dasm (8.60 % of base)
28 : 59270.dasm (0.47 % of base)
24 : 24810.dasm (0.25 % of base)
24 : 23728.dasm (0.30 % of base)
24 : 62981.dasm (0.23 % of base)
12 : 35038.dasm (0.20 % of base)
12 : 36261.dasm (0.28 % of base)
12 : 47270.dasm (0.58 % of base)
12 : 24392.dasm (0.53 % of base)
12 : 37682.dasm (0.49 % of base)
8 : 19130.dasm (1.28 % of base)
Top file improvements (bytes):
-420 : 63677.dasm (-31.44 % of base)
-152 : 38820.dasm (-14.13 % of base)
-56 : 53833.dasm (-6.97 % of base)
-28 : 30298.dasm (-0.52 % of base)
-16 : 19036.dasm (-1.25 % of base)
-16 : 29664.dasm (-3.36 % of base)
-12 : 10414.dasm (-0.57 % of base)
-12 : 29794.dasm (-3.45 % of base)
-12 : 45940.dasm (-1.23 % of base)
-12 : 4928.dasm (-1.92 % of base)
-8 : 19209.dasm (-6.06 % of base)
-8 : 4894.dasm (-1.67 % of base)
-8 : 51553.dasm (-1.87 % of base)
-8 : 53839.dasm (-0.49 % of base)
-8 : 29571.dasm (-0.46 % of base)
-8 : 29815.dasm (-0.85 % of base)
-8 : 41026.dasm (-1.75 % of base)
-8 : 24861.dasm (-0.42 % of base)
-8 : 30304.dasm (-0.82 % of base)
-8 : 45973.dasm (-0.20 % of base)
65 total files with Code Size differences (28 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
100 (0.49 % of base) : 57319.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
100 (0.52 % of base) : 58077.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
44 (2.29 % of base) : 43053.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier1)
40 (0.42 % of base) : 53009.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (0.46 % of base) : 53786.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (1.04 % of base) : 50627.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (Tier1)
36 (0.61 % of base) : 41559.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
32 (0.22 % of base) : 23776.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (0.23 % of base) : 59272.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (8.60 % of base) : 49397.dasm - Benchstone.MDBenchI.MDGeneralArray:Bench(int,int[,,],int[,,]):ubyte (Tier1-OSR)
28 (0.47 % of base) : 59270.dasm - (dynamicClass):_DynamicMethod9(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
24 (0.23 % of base) : 62981.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)
24 (0.25 % of base) : 24810.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)
24 (0.30 % of base) : 23728.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
12 (0.20 % of base) : 35038.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
12 (0.28 % of base) : 36261.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
12 (0.58 % of base) : 47270.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:AddSynthesizedReturnTypeAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (Tier1)
12 (0.53 % of base) : 24392.dasm - System.IO.Tests.Perf_RandomAccess+<WriteAsync>d__17:MoveNext():this (Tier1)
12 (0.49 % of base) : 37682.dasm - System.IO.Tests.Perf_RandomAccess+<WriteGatherAsync>d__22:MoveNext():this (Tier1)
8 (1.32 % of base) : 46137.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
Top method improvements (bytes):
-420 (-31.44 % of base) : 63677.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-152 (-14.13 % of base) : 38820.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-56 (-6.97 % of base) : 53833.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-28 (-0.52 % of base) : 30298.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
-16 (-1.25 % of base) : 19036.dasm - Interop+Crypto:HashAlgorithmToEvp(System.String):long (Tier1)
-16 (-3.36 % of base) : 29664.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-12 (-1.23 % of base) : 45940.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
-12 (-0.57 % of base) : 10414.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-12 (-3.45 % of base) : 29794.dasm - System.Security.Cryptography.ECParameters:Validate():this (Tier1)
-12 (-1.92 % of base) : 4928.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
-8 (-1.87 % of base) : 51553.dasm - Microsoft.CodeAnalysis.Compilation:SyntaxTreeCommonFeatures(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxTree]):System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String] (Tier1)
-8 (-0.20 % of base) : 45973.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:LoadMembers():this (Tier1)
-8 (-1.75 % of base) : 41026.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxFactory:EndOfLine(System.String,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxTrivia (Tier1)
-8 (-0.49 % of base) : 53839.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
-8 (-6.06 % of base) : 19209.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-8 (-0.42 % of base) : 24861.dasm - System.IO.Tests.Perf_FileStream+<WriteAsync>d__37:MoveNext():this (Tier1)
-8 (-0.82 % of base) : 30304.dasm - System.Net.Security.SslStream:GenerateToken(System.ReadOnlySpan`1[ubyte]):System.Net.Security.ProtocolToken:this (Tier1)
-8 (-0.85 % of base) : 29815.dasm - System.Security.Cryptography.ECCurve:Validate():this (Tier1)
-8 (-0.46 % of base) : 29571.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:ProcessSafeContents(byref,byref,byref,byref,byref,byref) (Tier1)
-8 (-1.67 % of base) : 4894.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
Top method regressions (percentages):
32 (8.60 % of base) : 49397.dasm - Benchstone.MDBenchI.MDGeneralArray:Bench(int,int[,,],int[,,]):ubyte (Tier1-OSR)
8 (4.00 % of base) : 47454.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (Tier1)
4 (3.57 % of base) : 10428.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
8 (2.74 % of base) : 49257.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
8 (2.35 % of base) : 37897.dasm - Neural:DoNNetIteration(long):long (Tier1-OSR)
8 (2.35 % of base) : 35337.dasm - NeuralJagged:DoNNetIteration(long):long (Tier1-OSR)
44 (2.29 % of base) : 43053.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier1)
4 (2.22 % of base) : 25165.dasm - System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this (Tier1)
4 (1.75 % of base) : 47100.dasm - Microsoft.Cci.MetadataWriter:GetDefiningUnitReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IUnitReference (Tier1)
4 (1.61 % of base) : 46555.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetNullableAnalysisValue():System.Nullable`1[ubyte]:this (Tier1)
4 (1.39 % of base) : 2847.dasm - System.IO.Stream:ReadAtLeastCore(System.Span`1[ubyte],int,ubyte):int:this (Tier1)
4 (1.37 % of base) : 59641.dasm - Benchstone.BenchI.Array2:Bench(int):ubyte (Tier1-OSR)
8 (1.32 % of base) : 46137.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
8 (1.28 % of base) : 19130.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:CircularCopyUtf16BE(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]) (Tier1)
4 (1.27 % of base) : 950.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
4 (1.19 % of base) : 23845.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (Tier1)
4 (1.18 % of base) : 20207.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:DetermineIsCompatibleWithCurrentOptions():this (Tier1)
4 (1.16 % of base) : 50967.dasm - Microsoft.CodeAnalysis.SyntaxNode+ChildSyntaxListEnumeratorStack:TryGetNextAsNodeInSpan(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
4 (1.08 % of base) : 18730.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (Tier1)
36 (1.04 % of base) : 50627.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (Tier1)
Top method improvements (percentages):
-420 (-31.44 % of base) : 63677.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-152 (-14.13 % of base) : 38820.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-56 (-6.97 % of base) : 53833.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-8 (-6.06 % of base) : 19209.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-12 (-3.45 % of base) : 29794.dasm - System.Security.Cryptography.ECParameters:Validate():this (Tier1)
-16 (-3.36 % of base) : 29664.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-4 (-2.13 % of base) : 39154.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)
-4 (-2.08 % of base) : 24125.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-4 (-2.04 % of base) : 1440.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
-4 (-2.04 % of base) : 19591.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (Tier1)
-4 (-1.92 % of base) : 4656.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-1.92 % of base) : 4928.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
-8 (-1.87 % of base) : 51553.dasm - Microsoft.CodeAnalysis.Compilation:SyntaxTreeCommonFeatures(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxTree]):System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String] (Tier1)
-8 (-1.75 % of base) : 41026.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxFactory:EndOfLine(System.String,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxTrivia (Tier1)
-8 (-1.67 % of base) : 4894.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
-4 (-1.27 % of base) : 23411.dasm - Benchstone.MDBenchI.MDArray2:Bench(int):ubyte (Tier1-OSR)
-16 (-1.25 % of base) : 19036.dasm - Interop+Crypto:HashAlgorithmToEvp(System.String):long (Tier1)
-12 (-1.23 % of base) : 45940.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
-4 (-1.05 % of base) : 4346.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
-4 (-1.03 % of base) : 30322.dasm - System.Net.Security.TargetHostNameHelper:NormalizeHostName(System.String):System.String (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 509948648 (overridden on cmd)
Total bytes of diff: 509909780 (overridden on cmd)
Total bytes of delta: -38868 (-0.01 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
120 : 415462.dasm (3.36 % of base)
100 : 424977.dasm (2.89 % of base)
88 : 625540.dasm (1.85 % of base)
80 : 561490.dasm (3.60 % of base)
60 : 439898.dasm (34.88 % of base)
56 : 440315.dasm (32.56 % of base)
52 : 323635.dasm (24.07 % of base)
52 : 323639.dasm (24.07 % of base)
48 : 416023.dasm (2.29 % of base)
44 : 299919.dasm (8.87 % of base)
44 : 532928.dasm (2.29 % of base)
40 : 625407.dasm (0.46 % of base)
40 : 425146.dasm (2.03 % of base)
36 : 260057.dasm (1.04 % of base)
36 : 532449.dasm (1.04 % of base)
36 : 532399.dasm (0.61 % of base)
36 : 187231.dasm (1.07 % of base)
36 : 426333.dasm (1.42 % of base)
32 : 439826.dasm (16.00 % of base)
32 : 439788.dasm (16.00 % of base)
Top file improvements (bytes):
-504 : 252889.dasm (-34.90 % of base)
-168 : 316496.dasm (-31.82 % of base)
-156 : 248393.dasm (-21.55 % of base)
-156 : 387274.dasm (-2.88 % of base)
-156 : 248380.dasm (-21.55 % of base)
-156 : 614376.dasm (-2.91 % of base)
-156 : 386402.dasm (-2.91 % of base)
-156 : 613929.dasm (-2.91 % of base)
-128 : 560076.dasm (-4.14 % of base)
-56 : 416100.dasm (-1.12 % of base)
-56 : 312916.dasm (-8.09 % of base)
-56 : 570467.dasm (-8.05 % of base)
-52 : 248403.dasm (-0.83 % of base)
-52 : 425904.dasm (-0.96 % of base)
-48 : 549755.dasm (-5.66 % of base)
-48 : 415378.dasm (-2.31 % of base)
-40 : 425578.dasm (-1.13 % of base)
-36 : 419138.dasm (-0.75 % of base)
-32 : 266928.dasm (-10.26 % of base)
-32 : 266980.dasm (-10.81 % of base)
69 total files with Code Size differences (35 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
120 (3.36 % of base) : 415462.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
100 (2.89 % of base) : 424977.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
88 (1.85 % of base) : 625540.dasm - Internal.IL.Stubs.UnsafeIntrinsics:EmitIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (FullOpts)
80 (3.60 % of base) : 561490.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
60 (34.88 % of base) : 439898.dasm - testout1:Sub_Funclet_221():int (FullOpts)
56 (32.56 % of base) : 440315.dasm - testout1:Sub_Funclet_221():int (FullOpts)
52 (24.07 % of base) : 323635.dasm - testout1:Test1(int):int (Tier1-OSR)
52 (24.07 % of base) : 323639.dasm - testout1:Test2(int):int (Tier1-OSR)
48 (2.29 % of base) : 416023.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
44 (8.87 % of base) : 299919.dasm - RetBufferBug:Main():int (Tier1-OSR)
44 (2.29 % of base) : 532928.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (0.46 % of base) : 625407.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
40 (2.03 % of base) : 425146.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
36 (1.42 % of base) : 426333.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.MethodEntryPointTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
36 (1.04 % of base) : 532449.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 532399.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
36 (1.04 % of base) : 260057.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
36 (1.07 % of base) : 187231.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
32 (16.00 % of base) : 439788.dasm - testout1:Sub_Funclet_107():int (FullOpts)
32 (16.00 % of base) : 439826.dasm - testout1:Sub_Funclet_145():int (FullOpts)
Top method improvements (bytes):
-504 (-34.90 % of base) : 252889.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-168 (-31.82 % of base) : 316496.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
-156 (-21.55 % of base) : 248393.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 248380.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-2.91 % of base) : 614376.dasm - StrSwitchFinalTest:Run():int:this (FullOpts)
-156 (-2.91 % of base) : 613929.dasm - StrSwitchFinalTest:Run():int:this (FullOpts)
-156 (-2.88 % of base) : 387274.dasm - StrSwitchFinalTest:Run():int:this (Tier0-FullOpts)
-156 (-2.91 % of base) : 386402.dasm - StrSwitchFinalTest:Run():int:this (Tier0-FullOpts)
-128 (-4.14 % of base) : 560076.dasm - Test_baduwinfo1:bar(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String):int (FullOpts)
-56 (-1.12 % of base) : 416100.dasm - Internal.TypeSystem.MetadataVirtualMethodAlgorithm:ResolveInterfaceMethodToDefaultImplementationOnType(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MetadataType,byref):int (Tier1)
-56 (-8.05 % of base) : 570467.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-56 (-8.09 % of base) : 312916.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (Tier0-FullOpts)
-52 (-0.83 % of base) : 248403.dasm - LUDecomp:Run():double:this (Tier1)
-52 (-0.96 % of base) : 425904.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int (Tier1)
-48 (-5.66 % of base) : 549755.dasm - BinderTracingTests.Helpers:AssemblyNamesMatch(System.Reflection.AssemblyName,System.Reflection.AssemblyName):ubyte (FullOpts)
-48 (-2.31 % of base) : 415378.dasm - Internal.TypeSystem.MetadataVirtualMethodAlgorithm:FindMatchingVirtualMethodOnTypeByNameAndSig(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,ubyte,System.Func`3[Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc,ubyte]):Internal.TypeSystem.MethodDesc (Tier1)
-40 (-1.13 % of base) : 425578.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
-36 (-0.75 % of base) : 419138.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int (Tier1)
-32 (-10.81 % of base) : 266980.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-32 (-10.26 % of base) : 266928.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
Top method regressions (percentages):
60 (34.88 % of base) : 439898.dasm - testout1:Sub_Funclet_221():int (FullOpts)
56 (32.56 % of base) : 440315.dasm - testout1:Sub_Funclet_221():int (FullOpts)
52 (24.07 % of base) : 323635.dasm - testout1:Test1(int):int (Tier1-OSR)
52 (24.07 % of base) : 323639.dasm - testout1:Test2(int):int (Tier1-OSR)
32 (16.00 % of base) : 439788.dasm - testout1:Sub_Funclet_107():int (FullOpts)
32 (16.00 % of base) : 439826.dasm - testout1:Sub_Funclet_145():int (FullOpts)
32 (16.00 % of base) : 439900.dasm - testout1:Sub_Funclet_223():int (FullOpts)
28 (14.00 % of base) : 440205.dasm - testout1:Sub_Funclet_107():int (FullOpts)
28 (14.00 % of base) : 440243.dasm - testout1:Sub_Funclet_145():int (FullOpts)
28 (14.00 % of base) : 440317.dasm - testout1:Sub_Funclet_223():int (FullOpts)
24 (12.77 % of base) : 439825.dasm - testout1:Sub_Funclet_144():int (FullOpts)
24 (12.77 % of base) : 440242.dasm - testout1:Sub_Funclet_144():int (FullOpts)
16 (11.11 % of base) : 316703.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
20 (10.42 % of base) : 440244.dasm - testout1:Sub_Funclet_146():int (FullOpts)
20 (10.42 % of base) : 439827.dasm - testout1:Sub_Funclet_146():int (FullOpts)
20 (10.42 % of base) : 439864.dasm - testout1:Sub_Funclet_184():int (FullOpts)
20 (10.42 % of base) : 439895.dasm - testout1:Sub_Funclet_218():int (FullOpts)
20 (10.42 % of base) : 440312.dasm - testout1:Sub_Funclet_218():int (FullOpts)
20 (10.42 % of base) : 439899.dasm - testout1:Sub_Funclet_222():int (FullOpts)
20 (10.42 % of base) : 440316.dasm - testout1:Sub_Funclet_222():int (FullOpts)
Top method improvements (percentages):
-504 (-34.90 % of base) : 252889.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-168 (-31.82 % of base) : 316496.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
-156 (-21.55 % of base) : 248393.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 248380.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-28 (-14.00 % of base) : 440817.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-28 (-14.00 % of base) : 441233.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-32 (-10.81 % of base) : 266980.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-32 (-10.26 % of base) : 266928.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
-28 (-8.33 % of base) : 267001.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
-56 (-8.09 % of base) : 312916.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (Tier0-FullOpts)
-56 (-8.05 % of base) : 570467.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-16 (-7.02 % of base) : 251179.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner2(int[,],byref) (Tier1-OSR)
-28 (-6.93 % of base) : 548463.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
-16 (-6.90 % of base) : 251173.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner1(int[,],byref) (Tier1-OSR)
-4 (-6.25 % of base) : 387766.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-4 (-6.25 % of base) : 640.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-4 (-6.25 % of base) : 24084.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-4 (-6.25 % of base) : 25672.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-4 (-6.25 % of base) : 309575.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-4 (-6.25 % of base) : 387271.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55736760 (overridden on cmd)
Total bytes of diff: 55736784 (overridden on cmd)
Total bytes of delta: 24 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
132 : 87479.dasm (0.35 % of base)
84 : 48061.dasm (0.27 % of base)
52 : 134101.dasm (1.33 % of base)
44 : 141749.dasm (2.28 % of base)
40 : 165506.dasm (1.89 % of base)
40 : 177786.dasm (1.85 % of base)
40 : 52870.dasm (1.39 % of base)
32 : 105292.dasm (2.35 % of base)
32 : 52866.dasm (2.13 % of base)
32 : 13996.dasm (0.30 % of base)
32 : 172658.dasm (2.24 % of base)
32 : 172659.dasm (2.18 % of base)
32 : 18894.dasm (2.12 % of base)
28 : 162890.dasm (1.45 % of base)
28 : 164260.dasm (4.22 % of base)
28 : 173351.dasm (1.73 % of base)
24 : 11000.dasm (0.49 % of base)
24 : 187827.dasm (0.63 % of base)
24 : 52863.dasm (0.51 % of base)
24 : 202432.dasm (1.82 % of base)
Top file improvements (bytes):
-84 : 173348.dasm (-7.81 % of base)
-52 : 10306.dasm (-2.19 % of base)
-44 : 170305.dasm (-1.75 % of base)
-36 : 146546.dasm (-6.34 % of base)
-36 : 193596.dasm (-6.34 % of base)
-32 : 163920.dasm (-3.98 % of base)
-32 : 202433.dasm (-0.86 % of base)
-28 : 101203.dasm (-1.51 % of base)
-28 : 104116.dasm (-0.66 % of base)
-28 : 44698.dasm (-1.62 % of base)
-24 : 11287.dasm (-0.84 % of base)
-24 : 80903.dasm (-0.74 % of base)
-20 : 148933.dasm (-2.38 % of base)
-20 : 43931.dasm (-0.46 % of base)
-16 : 28941.dasm (-3.77 % of base)
-16 : 33711.dasm (-2.65 % of base)
-16 : 164510.dasm (-0.28 % of base)
-16 : 107434.dasm (-0.30 % of base)
-16 : 81006.dasm (-0.59 % of base)
-16 : 8411.dasm (-3.25 % of base)
71 total files with Code Size differences (34 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
132 (0.35 % of base) : 87479.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
84 (0.27 % of base) : 48061.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
52 (1.33 % of base) : 134101.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this (FullOpts)
44 (2.28 % of base) : 141749.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (1.39 % of base) : 52870.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
40 (1.89 % of base) : 165506.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (1.85 % of base) : 177786.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
32 (2.13 % of base) : 52866.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
32 (2.35 % of base) : 105292.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler:GetWellKnownTag(System.String):int (FullOpts)
32 (2.24 % of base) : 172658.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:SystemTypeName(System.String):System.String (FullOpts)
32 (2.18 % of base) : 172659.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:VbTypeName(System.String):System.String (FullOpts)
32 (0.30 % of base) : 13996.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
32 (2.12 % of base) : 18894.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
28 (1.73 % of base) : 173351.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception:this (FullOpts)
28 (4.22 % of base) : 164260.dasm - System.Data.Common.BigIntegerStorage:ConvertToBigInteger(System.Object,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
28 (1.45 % of base) : 162890.dasm - System.Data.Common.DbColumn:get_Item(System.String):System.Object:this (FullOpts)
24 (1.82 % of base) : 202432.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):ubyte:this (FullOpts)
24 (0.51 % of base) : 52863.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
24 (0.63 % of base) : 187827.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
24 (0.49 % of base) : 11000.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
Top method improvements (bytes):
-84 (-7.81 % of base) : 173348.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-52 (-2.19 % of base) : 10306.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:GenerateMembersElement(System.Object,System.Xml.Serialization.XmlMembersMapping):this (FullOpts)
-44 (-1.75 % of base) : 170305.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-36 (-6.34 % of base) : 146546.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-36 (-6.34 % of base) : 193596.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-0.86 % of base) : 202433.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
-32 (-3.98 % of base) : 163920.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],ubyte):this (FullOpts)
-28 (-1.62 % of base) : 44698.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTupleBinaryOperatorNestedInfo(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.TupleBinaryOperatorInfo+Multiple:this (FullOpts)
-28 (-0.66 % of base) : 104116.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+IntoClauseBinder:BindIntoSelector(Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],System.Collections.Generic.HashSet`1[System.String],Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax],ubyte,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-28 (-1.51 % of base) : 101203.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-24 (-0.74 % of base) : 80903.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindUserDefinedShortCircuitingOperator(Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundUserDefinedShortCircuitingOperator:this (FullOpts)
-24 (-0.84 % of base) : 11287.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WritePrimitive(System.Xml.Serialization.TypeMapping,System.Func`2[System.Object,System.String],System.Object):System.Object:this (FullOpts)
-20 (-0.46 % of base) : 43931.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
-20 (-2.38 % of base) : 148933.dasm - Microsoft.CodeAnalysis.Text.SourceText:ContentEqualsImpl(Microsoft.CodeAnalysis.Text.SourceText):ubyte:this (FullOpts)
-16 (-0.59 % of base) : 81006.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ComputeVariableType(Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-16 (-0.30 % of base) : 107434.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ImplementsHelper:FindExplicitlyImplementedMember[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],byref):System.__Canon (FullOpts)
-16 (-0.28 % of base) : 94625.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
-16 (-0.28 % of base) : 164510.dasm - System.Data.XmlDataTreeWriter:XmlDataRowWriter(System.Data.DataRow,System.String):this (FullOpts)
-16 (-2.65 % of base) : 33711.dasm - System.Diagnostics.Tracing.ActivityTracker+ActivityInfo:AddIdToGuid(ulong,int,uint,ubyte):int (FullOpts)
-16 (-3.77 % of base) : 28941.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
Top method regressions (percentages):
16 (9.76 % of base) : 11984.dasm - System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
8 (8.33 % of base) : 50456.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
8 (5.71 % of base) : 151081.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
8 (5.71 % of base) : 198064.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.Symbols.ISymbolInternal,ubyte):ubyte:this (FullOpts)
4 (4.55 % of base) : 30770.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
28 (4.22 % of base) : 164260.dasm - System.Data.Common.BigIntegerStorage:ConvertToBigInteger(System.Object,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
8 (4.08 % of base) : 1594.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
8 (4.00 % of base) : 139142.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
4 (4.00 % of base) : 218179.dasm - System.Threading.ReaderWriterLock+ThreadLocalLockEntry:GetCurrent(long):System.Threading.ReaderWriterLock+ThreadLocalLockEntry (FullOpts)
8 (3.77 % of base) : 164886.dasm - System.Xml.XPathNodePointer:DecideXPNodeTypeForTextNodes(System.Xml.XmlNode):int:this (FullOpts)
8 (3.64 % of base) : 60701.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
4 (3.57 % of base) : 204805.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
8 (3.08 % of base) : 76189.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
12 (2.78 % of base) : 173640.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
8 (2.78 % of base) : 33337.dasm - System.DateTimeParse:ProcessDateTimeSuffix(byref,byref,byref):ubyte (FullOpts)
8 (2.70 % of base) : 31693.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
32 (2.35 % of base) : 105292.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler:GetWellKnownTag(System.String):int (FullOpts)
4 (2.33 % of base) : 210740.dasm - CommandLine.Core.ValueMapper:CountOfMaxNumberOfValues(CommandLine.Core.Specification):CSharpx.Maybe`1[int] (FullOpts)
44 (2.28 % of base) : 141749.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
4 (2.27 % of base) : 172178.dasm - System.Net.Sockets.SocketAsyncContext+AsyncOperation:TryCancel():ubyte:this (FullOpts)
Top method improvements (percentages):
-84 (-7.81 % of base) : 173348.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-16 (-6.78 % of base) : 22951.dasm - System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
-8 (-6.67 % of base) : 22949.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-36 (-6.34 % of base) : 146546.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-36 (-6.34 % of base) : 193596.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-12 (-5.77 % of base) : 22950.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
-4 (-5.00 % of base) : 222822.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
-8 (-4.65 % of base) : 28939.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-12 (-4.17 % of base) : 28940.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-32 (-3.98 % of base) : 163920.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],ubyte):this (FullOpts)
-16 (-3.77 % of base) : 28941.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-4 (-3.70 % of base) : 22968.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
-4 (-3.33 % of base) : 182969.dasm - System.Data.Odbc.OdbcParameter:set_SourceVersion(int):this (FullOpts)
-4 (-3.33 % of base) : 8430.dasm - System.Xml.XPath.XPathNavigator:IsValidChildType(int):ubyte:this (FullOpts)
-16 (-3.25 % of base) : 8411.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:CachesResult(System.Xml.Xsl.Qil.QilNode):ubyte (FullOpts)
-4 (-3.23 % of base) : 44351.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
-16 (-2.65 % of base) : 33711.dasm - System.Diagnostics.Tracing.ActivityTracker+ActivityInfo:AddIdToGuid(ulong,int,uint,ubyte):int (FullOpts)
-4 (-2.56 % of base) : 157721.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
-4 (-2.56 % of base) : 5995.dasm - System.Xml.Serialization.XmlSerializationReader:IsXmlnsAttribute(System.String):ubyte:this (FullOpts)
-4 (-2.50 % of base) : 195474.dasm - Microsoft.CodeAnalysis.RuntimeMembers.MemberDescriptor:get_ParametersCount():int:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 75993172 (overridden on cmd)
Total bytes of diff: 75989124 (overridden on cmd)
Total bytes of delta: -4048 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
100 : 93837.dasm (0.25 % of base)
52 : 33112.dasm (0.15 % of base)
52 : 28871.dasm (1.62 % of base)
48 : 196671.dasm (1.21 % of base)
44 : 29711.dasm (0.66 % of base)
44 : 168903.dasm (2.29 % of base)
40 : 281282.dasm (2.87 % of base)
40 : 82618.dasm (0.45 % of base)
40 : 86539.dasm (0.17 % of base)
40 : 198326.dasm (2.01 % of base)
40 : 19250.dasm (0.62 % of base)
40 : 247055.dasm (2.06 % of base)
40 : 149812.dasm (1.64 % of base)
40 : 263165.dasm (2.29 % of base)
36 : 38012.dasm (1.04 % of base)
36 : 86534.dasm (0.44 % of base)
36 : 22689.dasm (7.38 % of base)
36 : 38005.dasm (0.61 % of base)
32 : 14896.dasm (1.09 % of base)
32 : 158283.dasm (5.76 % of base)
Top file improvements (bytes):
-88 : 292717.dasm (-2.80 % of base)
-80 : 166954.dasm (-2.48 % of base)
-72 : 163632.dasm (-0.25 % of base)
-60 : 287391.dasm (-2.47 % of base)
-60 : 208842.dasm (-1.52 % of base)
-56 : 81492.dasm (-8.24 % of base)
-52 : 204439.dasm (-3.34 % of base)
-44 : 194599.dasm (-3.86 % of base)
-44 : 246961.dasm (-1.68 % of base)
-40 : 171425.dasm (-0.66 % of base)
-40 : 17673.dasm (-4.13 % of base)
-40 : 194610.dasm (-4.76 % of base)
-40 : 197621.dasm (-2.68 % of base)
-40 : 15080.dasm (-1.78 % of base)
-36 : 197874.dasm (-2.72 % of base)
-36 : 12320.dasm (-0.68 % of base)
-36 : 243539.dasm (-4.25 % of base)
-32 : 192218.dasm (-3.85 % of base)
-32 : 222642.dasm (-5.84 % of base)
-32 : 181014.dasm (-5.84 % of base)
77 total files with Code Size differences (38 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
100 (0.25 % of base) : 93837.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
52 (1.62 % of base) : 28871.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructInvocationExpression(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
52 (0.15 % of base) : 33112.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
48 (1.21 % of base) : 196671.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this (FullOpts)
44 (0.66 % of base) : 29711.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<BindElementOrIndexerAccess>g__bindInlineArrayElementAccess|499_1(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BoundExpression,int,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,int,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
44 (2.29 % of base) : 168903.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (0.45 % of base) : 82618.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
40 (1.64 % of base) : 149812.dasm - Microsoft.Build.Evaluation.ExpressionShredder:GetReferencedItemExpressions(System.String,int,int):System.Collections.Generic.List`1[Microsoft.Build.Evaluation.ExpressionShredder+ItemExpressionCapture] (FullOpts)
40 (0.17 % of base) : 86539.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
40 (2.01 % of base) : 198326.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (2.06 % of base) : 247055.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (2.87 % of base) : 281282.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
40 (2.29 % of base) : 263165.dasm - System.Web.HttpUtility+HttpQSCollection:ToString():System.String:this (FullOpts)
40 (0.62 % of base) : 19250.dasm - System.Xml.DtdParser+<ParseAttlistTypeAsync>d__161:MoveNext():this (FullOpts)
36 (1.04 % of base) : 38012.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 38005.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
36 (0.44 % of base) : 86534.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureAndProduceBoundNode(Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTypeExpression,Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.Location):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
36 (7.38 % of base) : 22689.dasm - System.Xml.Xsl.Xslt.QilGenerator:CompileSingleKey(System.Collections.Generic.List`1[System.Xml.Xsl.Xslt.Key],System.Xml.Xsl.Qil.QilIterator,System.Xml.Xsl.Qil.QilIterator):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
32 (2.13 % of base) : 163656.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:VbTypeName(System.String):System.String (FullOpts)
32 (5.76 % of base) : 158283.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:Insert(int,System.Numerics.Vector`1[float]):System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:this (FullOpts)
Top method improvements (bytes):
-88 (-2.80 % of base) : 292717.dasm - System.DirectoryServices.Protocols.LdapConnection:BuildAttributes(System.Collections.CollectionBase,System.Collections.ArrayList):System.DirectoryServices.Protocols.LdapMod[] (FullOpts)
-80 (-2.48 % of base) : 166954.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-72 (-0.25 % of base) : 163632.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-60 (-1.52 % of base) : 208842.dasm - System.Runtime.Serialization.SchemaExporter:ExportGenericInfo(System.Type,System.String,System.String):System.Xml.XmlElement:this (FullOpts)
-60 (-2.47 % of base) : 287391.dasm - System.Xml.Linq.XNodeBuilder:WriteEntityRef(System.String):this (FullOpts)
-56 (-8.24 % of base) : 81492.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-52 (-3.34 % of base) : 204439.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-44 (-3.86 % of base) : 194599.dasm - Newtonsoft.Json.JsonReader:ReadAsBytes():ubyte[]:this (FullOpts)
-44 (-1.68 % of base) : 246961.dasm - System.Net.Security.EndpointChannelBindingToken:GetHashForChannelBinding(System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte[] (FullOpts)
-40 (-2.68 % of base) : 197621.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ReadElement(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Converters.IXmlDocument,Newtonsoft.Json.Converters.IXmlNode,System.String,System.Xml.XmlNamespaceManager):this (FullOpts)
-40 (-4.76 % of base) : 194610.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (FullOpts)
-40 (-0.66 % of base) : 171425.dasm - System.Security.Cryptography.Pkcs.Pkcs12SafeContents:ReadBags(System.ReadOnlyMemory`1[ubyte]):System.Collections.Generic.List`1[System.Security.Cryptography.Pkcs.Pkcs12SafeBag] (FullOpts)
-40 (-1.78 % of base) : 15080.dasm - System.Xml.XmlUtf8RawTextWriter+<DisposeAsyncCore>d__85:MoveNext():this (FullOpts)
-40 (-4.13 % of base) : 17673.dasm - System.Xml.XmlWellFormedWriter+AttributeValueCache:WriteEntityRef(System.String):this (FullOpts)
-36 (-2.72 % of base) : 197874.dasm - Newtonsoft.Json.JsonTextWriter+<WriteIndentAsync>d__13:MoveNext():this (FullOpts)
-36 (-0.68 % of base) : 12320.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
-36 (-4.25 % of base) : 243539.dasm - System.Security.Cryptography.Rfc2898DeriveBytes:ValidateHashAlgorithm(System.Security.Cryptography.HashAlgorithmName) (FullOpts)
-32 (-5.84 % of base) : 222642.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-5.84 % of base) : 181014.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-0.56 % of base) : 35493.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
Top method regressions (percentages):
28 (10.00 % of base) : 153182.dasm - Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
12 (10.00 % of base) : 30362.dasm - Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
16 (8.70 % of base) : 158281.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)
16 (8.70 % of base) : 159357.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)
36 (7.38 % of base) : 22689.dasm - System.Xml.Xsl.Xslt.QilGenerator:CompileSingleKey(System.Collections.Generic.List`1[System.Xml.Xsl.Xslt.Key],System.Xml.Xsl.Qil.QilIterator,System.Xml.Xsl.Qil.QilIterator):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
8 (6.67 % of base) : 281833.dasm - System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
16 (6.56 % of base) : 148885.dasm - Microsoft.Build.Graph.ProjectInterpretation:SplitPropertyNames(System.String):System.Collections.Generic.IReadOnlyCollection`1[System.String] (FullOpts)
8 (6.45 % of base) : 281845.dasm - System.IO.Hashing.XxHash64:GetCurrentHashAsUInt64():ulong:this (FullOpts)
16 (6.06 % of base) : 153023.dasm - Microsoft.Build.Shared.EncodingUtilities:SimilarToEncoding(System.Text.Encoding,System.Text.Encoding):ubyte (FullOpts)
32 (5.76 % of base) : 158283.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:Insert(int,System.Numerics.Vector`1[float]):System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:this (FullOpts)
8 (5.71 % of base) : 187668.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
8 (5.71 % of base) : 229253.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.Symbols.ISymbolInternal,ubyte):ubyte:this (FullOpts)
20 (5.49 % of base) : 255458.dasm - Microsoft.Extensions.Diagnostics.Metrics.ListenerSubscription:IsMoreSpecific(Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,ubyte):ubyte (FullOpts)
8 (5.13 % of base) : 156519.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]:Sort(System.Comparison`1[ubyte]):this (FullOpts)
8 (4.76 % of base) : 47602.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
4 (4.76 % of base) : 249250.dasm - System.Data.ProviderBase.DbConnectionFactory:FindConnectionOptions(System.Data.Common.DbConnectionPoolKey):System.Data.Common.DbConnectionOptions:this (FullOpts)
8 (4.65 % of base) : 170820.dasm - System.Security.Cryptography.CryptoPool:Return(ubyte[],int) (FullOpts)
8 (4.65 % of base) : 242087.dasm - System.Security.Cryptography.CryptoPool:Return(ubyte[],int) (FullOpts)
8 (4.65 % of base) : 16271.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
12 (4.23 % of base) : 286764.dasm - Microsoft.CSharp.CSharpModifierAttributeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
Top method improvements (percentages):
-16 (-10.81 % of base) : 176688.dasm - System.Net.Http.Headers.RetryConditionHeaderValue:.ctor(System.TimeSpan):this (FullOpts)
-8 (-9.09 % of base) : 870.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThan[double](double,double,System.String) (FullOpts)
-56 (-8.24 % of base) : 81492.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-28 (-6.93 % of base) : 166126.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
-16 (-6.78 % of base) : 14462.dasm - System.Xml.XmlSqlBinaryReader+QName:MatchPrefix(System.String,System.String):ubyte:this (FullOpts)
-28 (-6.14 % of base) : 258053.dasm - System.Diagnostics.ActivityLink:op_Inequality(System.Diagnostics.ActivityLink,System.Diagnostics.ActivityLink):ubyte (FullOpts)
-28 (-6.09 % of base) : 287095.dasm - System.Xml.Linq.XDocumentType:DeepEquals(System.Xml.Linq.XNode):ubyte:this (FullOpts)
-28 (-5.98 % of base) : 205818.dasm - System.ComponentModel.LookupBindingPropertiesAttribute:Equals(System.Object):ubyte:this (FullOpts)
-20 (-5.88 % of base) : 258731.dasm - System.Diagnostics.Metrics.StringSequence3:Equals(System.Diagnostics.Metrics.StringSequence3):ubyte:this (FullOpts)
-24 (-5.88 % of base) : 247465.dasm - System.Reflection.TypeLoading.RoAssemblyName:Equals(System.Reflection.TypeLoading.RoAssemblyName):ubyte:this (FullOpts)
-24 (-5.88 % of base) : 198701.dasm - System.Reflection.TypeLoading.RoAssemblyName:Equals(System.Reflection.TypeLoading.RoAssemblyName):ubyte:this (FullOpts)
-20 (-5.88 % of base) : 14467.dasm - System.Xml.XmlSqlBinaryReader+QName:Equals(System.Xml.XmlSqlBinaryReader+QName):ubyte:this (FullOpts)
-32 (-5.84 % of base) : 222642.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-5.84 % of base) : 181014.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-16 (-5.56 % of base) : 180546.dasm - Microsoft.CodeAnalysis.SuppressionDescriptor:Equals(Microsoft.CodeAnalysis.SuppressionDescriptor):ubyte:this (FullOpts)
-16 (-5.56 % of base) : 222177.dasm - Microsoft.CodeAnalysis.SuppressionDescriptor:Equals(Microsoft.CodeAnalysis.SuppressionDescriptor):ubyte:this (FullOpts)
-4 (-5.56 % of base) : 285558.dasm - System.Formats.Asn1.SpanBasedEncoding:GetBytes(ulong,int,ulong,int):int:this (FullOpts)
-4 (-5.56 % of base) : 285563.dasm - System.Formats.Asn1.SpanBasedEncoding:GetChars(ulong,int,ulong,int):int:this (FullOpts)
-8 (-5.41 % of base) : 177074.dasm - Roslyn.Utilities.PathUtilities:CombinePaths(System.String,System.String):System.String (FullOpts)
-16 (-5.41 % of base) : 12353.dasm - System.ComponentModel.DesignerAttribute:Equals(System.Object):ubyte:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 381327700 (overridden on cmd)
Total bytes of diff: 381280800 (overridden on cmd)
Total bytes of delta: -46900 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
140 : 178797.dasm (3.27 % of base)
136 : 707193.dasm (0.99 % of base)
136 : 670859.dasm (1.59 % of base)
132 : 36814.dasm (1.14 % of base)
132 : 90516.dasm (4.15 % of base)
128 : 702305.dasm (4.05 % of base)
124 : 62151.dasm (4.02 % of base)
124 : 73081.dasm (2.34 % of base)
120 : 106867.dasm (1.55 % of base)
116 : 113403.dasm (16.11 % of base)
112 : 367266.dasm (0.79 % of base)
112 : 60137.dasm (2.32 % of base)
108 : 83148.dasm (2.02 % of base)
104 : 707889.dasm (0.49 % of base)
92 : 489135.dasm (2.30 % of base)
92 : 706639.dasm (0.85 % of base)
88 : 676796.dasm (0.80 % of base)
88 : 93115.dasm (1.86 % of base)
88 : 410050.dasm (0.62 % of base)
76 : 115501.dasm (1.39 % of base)
Top file improvements (bytes):
-196 : 705746.dasm (-1.77 % of base)
-168 : 227711.dasm (-8.38 % of base)
-132 : 702693.dasm (-0.81 % of base)
-128 : 80341.dasm (-1.09 % of base)
-120 : 469607.dasm (-1.37 % of base)
-116 : 86961.dasm (-1.50 % of base)
-112 : 230824.dasm (-4.11 % of base)
-108 : 719923.dasm (-0.88 % of base)
-108 : 368421.dasm (-0.78 % of base)
-100 : 70583.dasm (-0.67 % of base)
-100 : 562325.dasm (-1.27 % of base)
-100 : 83811.dasm (-0.83 % of base)
-96 : 564580.dasm (-1.28 % of base)
-92 : 255626.dasm (-0.75 % of base)
-92 : 187895.dasm (-0.74 % of base)
-92 : 549115.dasm (-0.75 % of base)
-88 : 523003.dasm (-2.08 % of base)
-88 : 625452.dasm (-2.02 % of base)
-84 : 105301.dasm (-1.06 % of base)
-84 : 315197.dasm (-1.00 % of base)
94 total files with Code Size differences (55 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
140 (3.27 % of base) : 178797.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
136 (1.59 % of base) : 670859.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,ubyte,ubyte,ubyte,int,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState],ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (Tier1)
136 (0.99 % of base) : 707193.dasm - Microsoft.CodeAnalysis.Formatting.TokenStream:GetColumn(Microsoft.CodeAnalysis.Formatting.TokenData,System.Func`3[Microsoft.CodeAnalysis.Formatting.TokenData,Microsoft.CodeAnalysis.Formatting.TokenData,Microsoft.CodeAnalysis.Formatting.TriviaData]):int:this (Tier1)
132 (1.14 % of base) : 36814.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
132 (4.15 % of base) : 90516.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (Tier1)
128 (4.05 % of base) : 702305.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (Tier1)
124 (4.02 % of base) : 62151.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (Tier1)
124 (2.34 % of base) : 73081.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
120 (1.55 % of base) : 106867.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:BindCore(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,System.Linq.Expressions.Expression[],System.Dynamic.DynamicMetaObject[],byref):System.Linq.Expressions.Expression:this (Tier1)
116 (16.11 % of base) : 113403.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
112 (2.32 % of base) : 60137.dasm - Microsoft.CodeAnalysis.CombineNode`2[int,int]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]]:this (Tier1)
112 (0.79 % of base) : 367266.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
108 (2.02 % of base) : 83148.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
104 (0.49 % of base) : 707889.dasm - Roslyn.Utilities.EnumerableExtensions:Do[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation](System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation],System.Action`1[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation]):System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation] (Tier1)
92 (0.85 % of base) : 706639.dasm - Microsoft.CodeAnalysis.Formatting.FormattingContext:AddSuppressOperations(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation],System.Threading.CancellationToken):this (Tier1)
92 (2.30 % of base) : 489135.dasm - System.Runtime.Caching.MemoryCacheStore:Dispose():this (Tier1-OSR)
88 (0.80 % of base) : 676796.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1-OSR)
88 (1.86 % of base) : 93115.dasm - Microsoft.CodeAnalysis.CombineNode`2[int,int]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]]:this (Tier1)
88 (0.62 % of base) : 410050.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
76 (1.39 % of base) : 115501.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
Top method improvements (bytes):
-196 (-1.77 % of base) : 705746.dasm - Microsoft.CodeAnalysis.CSharp.Simplification.Simplifiers.NameSimplifier:TrySimplify(Microsoft.CodeAnalysis.CSharp.Syntax.NameSyntax,Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.CSharp.Simplification.CSharpSimplifierOptions,byref,byref,System.Threading.CancellationToken):ubyte:this (Tier1)
-168 (-8.38 % of base) : 227711.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[System.__Canon]:IEnumerable_Generic_GetEnumerator_ReturnsUniqueEnumerator(int):this (Tier1)
-132 (-0.81 % of base) : 702693.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
-128 (-1.09 % of base) : 80341.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-120 (-1.37 % of base) : 469607.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestInvalid(System.String[],System.String,System.String[]):int:this (Tier1)
-116 (-1.50 % of base) : 86961.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:EarlyDecodeDeprecatedOrExperimentalOrObsoleteAttribute(byref,byref,byref,byref):ubyte (Tier1)
-112 (-4.11 % of base) : 230824.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_GetEnumerator_ReturnsUniqueEnumerator(int):this (Tier1)
-108 (-0.88 % of base) : 719923.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-108 (-0.78 % of base) : 368421.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
-100 (-0.67 % of base) : 70583.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-100 (-0.83 % of base) : 83811.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
-100 (-1.27 % of base) : 562325.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-96 (-1.28 % of base) : 564580.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
-92 (-0.75 % of base) : 255626.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-92 (-0.74 % of base) : 187895.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-92 (-0.75 % of base) : 549115.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-88 (-2.02 % of base) : 625452.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.Text.Json.Serialization.Tests.NumberHandlingTests+StructWithNumbers]:PopulatePropertiesFastPath(System.Object,System.Text.Json.Serialization.Metadata.JsonTypeInfo,System.Text.Json.JsonSerializerOptions,byref,byref) (Tier1)
-88 (-2.08 % of base) : 523003.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-84 (-1.06 % of base) : 105301.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-84 (-1.00 % of base) : 315197.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
Top method regressions (percentages):
116 (16.11 % of base) : 113403.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
8 (9.52 % of base) : 175264.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
8 (9.52 % of base) : 54438.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
44 (8.94 % of base) : 216213.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]]:IsSubsetOfSetWithCompatibleComparer(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (Tier1-OSR)
16 (8.70 % of base) : 43602.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRef(int):byref:this (Tier1)
32 (8.08 % of base) : 169478.dasm - System.Reflection.AssemblyNameParser:ParsePKT(System.String,ubyte):ubyte[]:this (Tier1)
16 (7.14 % of base) : 673042.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
16 (7.14 % of base) : 190246.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
16 (7.14 % of base) : 670549.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
12 (6.67 % of base) : 689776.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetMetadataReference(Microsoft.CodeAnalysis.Symbols.IAssemblySymbolInternal):Microsoft.CodeAnalysis.MetadataReference:this (Tier1)
32 (6.45 % of base) : 397602.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 491328.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 132227.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 731980.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 735187.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 154539.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 202896.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 320523.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 335826.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 392515.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
Top method improvements (percentages):
-44 (-17.46 % of base) : 99642.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
-44 (-17.46 % of base) : 99661.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-17.19 % of base) : 99621.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-17.19 % of base) : 99632.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-40 (-15.38 % of base) : 296345.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,double):System.Object (FullOpts)
-40 (-15.15 % of base) : 296347.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,float):System.Object (FullOpts)
-36 (-14.75 % of base) : 286175.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.strcts.strct003.strct003.S+S2):System.Object (FullOpts)
-32 (-14.55 % of base) : 100218.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-32 (-14.55 % of base) : 99433.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-32 (-14.55 % of base) : 99891.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):long (FullOpts)
-32 (-14.55 % of base) : 99734.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):long (FullOpts)
-32 (-14.55 % of base) : 99713.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
-32 (-14.55 % of base) : 99884.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
-32 (-14.55 % of base) : 99918.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ulong (FullOpts)
-32 (-14.55 % of base) : 99835.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-32 (-14.29 % of base) : 99777.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):double (FullOpts)
-32 (-14.29 % of base) : 99940.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):double (FullOpts)
-32 (-14.29 % of base) : 99757.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):float (FullOpts)
-32 (-14.29 % of base) : 99929.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):float (FullOpts)
-32 (-13.79 % of base) : 290609.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,double):System.Object (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 162523364 (overridden on cmd)
Total bytes of diff: 162502120 (overridden on cmd)
Total bytes of delta: -21244 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
184 : 291850.dasm (4.22 % of base)
128 : 42510.dasm (1.67 % of base)
128 : 48258.dasm (1.67 % of base)
100 : 42639.dasm (3.22 % of base)
84 : 127087.dasm (2.85 % of base)
72 : 127616.dasm (2.55 % of base)
64 : 48290.dasm (1.58 % of base)
64 : 42538.dasm (1.55 % of base)
52 : 5482.dasm (0.16 % of base)
48 : 173829.dasm (0.83 % of base)
44 : 117682.dasm (1.59 % of base)
44 : 266129.dasm (0.70 % of base)
44 : 3549.dasm (2.29 % of base)
44 : 272840.dasm (2.17 % of base)
40 : 302190.dasm (2.48 % of base)
40 : 148326.dasm (2.87 % of base)
40 : 179187.dasm (2.06 % of base)
36 : 2300.dasm (1.04 % of base)
36 : 266274.dasm (0.43 % of base)
36 : 46135.dasm (1.50 % of base)
Top file improvements (bytes):
-224 : 173827.dasm (-1.27 % of base)
-156 : 164894.dasm (-8.23 % of base)
-156 : 165090.dasm (-8.21 % of base)
-116 : 197526.dasm (-3.15 % of base)
-116 : 44125.dasm (-1.98 % of base)
-88 : 176422.dasm (-1.97 % of base)
-80 : 24703.dasm (-2.48 % of base)
-76 : 59206.dasm (-0.26 % of base)
-72 : 6436.dasm (-1.46 % of base)
-68 : 274048.dasm (-1.30 % of base)
-64 : 274386.dasm (-1.60 % of base)
-56 : 115149.dasm (-8.24 % of base)
-52 : 118492.dasm (-2.06 % of base)
-52 : 101261.dasm (-15.85 % of base)
-48 : 118296.dasm (-2.05 % of base)
-48 : 164147.dasm (-1.61 % of base)
-48 : 164835.dasm (-1.77 % of base)
-44 : 154266.dasm (-1.70 % of base)
-44 : 171026.dasm (-1.32 % of base)
-40 : 14893.dasm (-1.26 % of base)
75 total files with Code Size differences (39 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
184 (4.22 % of base) : 291850.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
128 (1.67 % of base) : 42510.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
128 (1.67 % of base) : 48258.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
100 (3.22 % of base) : 42639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
84 (2.85 % of base) : 127087.dasm - System.IO.Pipelines.Tests.SchedulerFacts+<DefaultWriterSchedulerRunsOnSynchronizationContext>d__7:MoveNext():this (FullOpts)
72 (2.55 % of base) : 127616.dasm - System.IO.Pipelines.Tests.SchedulerFacts+<UseSynchronizationContextFalseIgnoresSyncContextForWriterScheduler>d__6:MoveNext():this (FullOpts)
64 (1.58 % of base) : 48290.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
64 (1.55 % of base) : 42538.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
52 (0.16 % of base) : 5482.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
48 (0.83 % of base) : 173829.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestInvalid(System.String[],System.String,System.String[]):int:this (FullOpts)
44 (1.59 % of base) : 117682.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectoryAsync_File_Tests+<LinkBeforeTargetAsync>d__13:MoveNext():this (FullOpts)
44 (2.29 % of base) : 3549.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
44 (2.17 % of base) : 272840.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1075_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
44 (0.70 % of base) : 266129.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:EmitIndexOfAnyCustomHelper(System.String,System.Collections.Generic.Dictionary`2[System.String,System.String[]],ubyte):System.String (FullOpts)
40 (2.06 % of base) : 179187.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (2.87 % of base) : 148326.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
40 (2.48 % of base) : 302190.dasm - System.Web.HttpUtility+HttpQSCollection:ToString():System.String:this (FullOpts)
36 (0.43 % of base) : 266274.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertCollectionExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedCollectionExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundCollectionExpression:this (FullOpts)
36 (1.04 % of base) : 2300.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (1.50 % of base) : 46135.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
Top method improvements (bytes):
-224 (-1.27 % of base) : 173827.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
-156 (-8.23 % of base) : 164894.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1:Write2_wrapper(System.Object[]):this (FullOpts)
-156 (-8.21 % of base) : 165090.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithArrayPropertyHavingChoice:Write3_Item(System.String,System.String,SerializationTypes.TypeWithArrayPropertyHavingChoice,ubyte,ubyte):this (FullOpts)
-116 (-1.98 % of base) : 44125.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
-116 (-3.15 % of base) : 197526.dasm - System.Runtime.Serialization.SchemaExporter:ExportGenericInfo(System.Type,System.String,System.String):System.Xml.XmlElement:this (FullOpts)
-88 (-1.97 % of base) : 176422.dasm - System.Xml.XmlWriterApiTests.TCFullEndElement+TCWriteValue+TCWriteState:InvokeMethod(System.Xml.XmlWriter,System.String):this (FullOpts)
-80 (-2.48 % of base) : 24703.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-76 (-0.26 % of base) : 59206.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-72 (-1.46 % of base) : 6436.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDefaultArgumentsAndParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],byref,byref,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
-68 (-1.30 % of base) : 274048.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1658_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-64 (-1.60 % of base) : 274386.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1927_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-8.24 % of base) : 115149.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-52 (-15.85 % of base) : 101261.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage04d.usage04d.Parent,System.Object,System.Object):System.Object (FullOpts)
-52 (-2.06 % of base) : 118492.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectoryAsync_Stream_Tests+<ExtractToDirectory_ExactRootDirMatch_SymLinks_TargetOutside_Throws_Async>d__21:MoveNext():this (FullOpts)
-48 (-1.61 % of base) : 164147.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSerializerAttributes:Write3_XmlSerializerAttributes(System.String,System.String,SerializationTypes.XmlSerializerAttributes,ubyte,ubyte):this (FullOpts)
-48 (-1.77 % of base) : 164835.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSerializerAttributes:Write3_XmlSerializerAttributes(System.String,System.String,SerializationTypes.XmlSerializerAttributes,ubyte,ubyte):this (FullOpts)
-48 (-2.05 % of base) : 118296.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectoryAsync_Stream_Tests+<ExtractToDirectory_ExactRootDirMatch_Directory_Relative_Throws_Async>d__18:MoveNext():this (FullOpts)
-44 (-1.70 % of base) : 154266.dasm - System.Net.Security.EndpointChannelBindingToken:GetHashForChannelBinding(System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte[] (FullOpts)
-44 (-1.32 % of base) : 171026.dasm - System.Xml.XmlSchemaTests.TestData:.cctor() (FullOpts)
-40 (-1.26 % of base) : 14893.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.ElasticTriviaFormattingRule:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int (FullOpts)
Top method regressions (percentages):
28 (11.48 % of base) : 67291.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
28 (11.48 % of base) : 69112.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
8 (6.67 % of base) : 125209.dasm - System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
8 (6.45 % of base) : 125154.dasm - System.IO.Hashing.XxHash64:GetCurrentHashAsUInt64():ulong:this (FullOpts)
20 (5.49 % of base) : 38283.dasm - Microsoft.Extensions.Diagnostics.Metrics.ListenerSubscription:IsMoreSpecific(Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,ubyte):ubyte (FullOpts)
20 (5.49 % of base) : 38209.dasm - Microsoft.Extensions.Diagnostics.Metrics.ListenerSubscription:IsMoreSpecific(Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,ubyte):ubyte (FullOpts)
8 (5.41 % of base) : 22295.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
8 (5.41 % of base) : 33982.dasm - System.Security.Cryptography.CryptoPool:Return(ubyte[],int) (FullOpts)
8 (5.41 % of base) : 216962.dasm - System.Security.Cryptography.CryptoPool:Return(ubyte[],int) (FullOpts)
8 (4.65 % of base) : 42078.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
184 (4.22 % of base) : 291850.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
8 (4.00 % of base) : 47141.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
16 (3.85 % of base) : 97705.dasm - System.Diagnostics.Tests.FileVersionInfoTest:FileVersionInfo_EmptyFVI():this (FullOpts)
4 (3.57 % of base) : 18536.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
8 (3.45 % of base) : 30902.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
100 (3.22 % of base) : 42639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
8 (2.90 % of base) : 106638.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms12b.prms12b.Parent,System.Object):System.Object (FullOpts)
40 (2.87 % of base) : 148326.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
12 (2.86 % of base) : 57713.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
84 (2.85 % of base) : 127087.dasm - System.IO.Pipelines.Tests.SchedulerFacts+<DefaultWriterSchedulerRunsOnSynchronizationContext>d__7:MoveNext():this (FullOpts)
Top method improvements (percentages):
-52 (-15.85 % of base) : 101261.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage04d.usage04d.Parent,System.Object,System.Object):System.Object (FullOpts)
-36 (-15.79 % of base) : 101419.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-32 (-15.69 % of base) : 25557.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-32 (-15.69 % of base) : 25603.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-32 (-14.29 % of base) : 101206.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ManagedTests.DynamicCSharp.Conformance.dynamic.overloadResolution.Operators.Oneclass2operates.conversion.onedynamicparam001.onedynamicparam001.Target (FullOpts)
-36 (-13.64 % of base) : 106097.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,double):System.Object (FullOpts)
-36 (-13.64 % of base) : 105871.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,float):System.Object (FullOpts)
-36 (-13.43 % of base) : 106100.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,float):System.Object (FullOpts)
-32 (-12.90 % of base) : 25663.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,Microsoft.CSharp.RuntimeBinder.Tests.RuntimeBinderTests+Builder`1[System.Object],System.Object) (FullOpts)
-28 (-12.73 % of base) : 27464.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
-28 (-12.73 % of base) : 27512.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 28893.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 102729.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 110382.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 109232.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 25793.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 25806.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 25920.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-32 (-12.31 % of base) : 101181.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,System.Object):System.Object (FullOpts)
-28 (-12.28 % of base) : 104873.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15906968 (overridden on cmd)
Total bytes of diff: 15906796 (overridden on cmd)
Total bytes of delta: -172 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
52 : 16162.dasm (0.16 % of base)
44 : 542.dasm (2.29 % of base)
36 : 16585.dasm (0.61 % of base)
36 : 30090.dasm (1.91 % of base)
36 : 16625.dasm (1.04 % of base)
32 : 2451.dasm (2.12 % of base)
28 : 16610.dasm (1.41 % of base)
28 : 21426.dasm (0.60 % of base)
28 : 31969.dasm (0.27 % of base)
24 : 27694.dasm (0.45 % of base)
24 : 8787.dasm (0.26 % of base)
24 : 24965.dasm (0.71 % of base)
24 : 26129.dasm (0.91 % of base)
20 : 30275.dasm (2.33 % of base)
16 : 28278.dasm (0.45 % of base)
16 : 27742.dasm (0.18 % of base)
16 : 5600.dasm (1.66 % of base)
16 : 14321.dasm (1.56 % of base)
16 : 14476.dasm (0.18 % of base)
16 : 22682.dasm (1.19 % of base)
Top file improvements (bytes):
-80 : 9352.dasm (-0.75 % of base)
-56 : 2926.dasm (-7.41 % of base)
-36 : 14641.dasm (-0.91 % of base)
-32 : 19805.dasm (-0.57 % of base)
-32 : 14201.dasm (-2.38 % of base)
-32 : 14294.dasm (-2.65 % of base)
-32 : 18582.dasm (-5.84 % of base)
-28 : 15011.dasm (-0.52 % of base)
-20 : 3066.dasm (-1.67 % of base)
-16 : 14061.dasm (-1.69 % of base)
-16 : 29915.dasm (-2.48 % of base)
-16 : 30478.dasm (-5.26 % of base)
-16 : 2303.dasm (-4.04 % of base)
-16 : 2959.dasm (-0.68 % of base)
-16 : 3705.dasm (-0.26 % of base)
-16 : 1095.dasm (-1.67 % of base)
-16 : 18498.dasm (-1.20 % of base)
-16 : 31652.dasm (-0.11 % of base)
-16 : 31879.dasm (-1.24 % of base)
-12 : 11599.dasm (-5.17 % of base)
67 total files with Code Size differences (32 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
52 (0.16 % of base) : 16162.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
44 (2.29 % of base) : 542.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
36 (1.91 % of base) : 30090.dasm - Interop+procfs:TryParseStatusFile(System.String,byref):ubyte (FullOpts)
36 (1.04 % of base) : 16625.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 16585.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
32 (2.12 % of base) : 2451.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
28 (0.60 % of base) : 21426.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__checkConstraintLanguageVersionAndRuntimeSupportForConversion|210_2(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
28 (1.41 % of base) : 16610.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
28 (0.27 % of base) : 31969.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
24 (0.26 % of base) : 8787.dasm - FSharp.Compiler.TypedTreeOps:mkExprAddrOfExprAux(FSharp.Compiler.TcGlobals+TcGlobals,ubyte,ubyte,FSharp.Compiler.TypedTreeOps+Mutates,FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ValRef],FSharp.Compiler.Text.Range):System.Tuple`4[Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+Val,FSharp.Compiler.TypedTree+Expr]],FSharp.Compiler.TypedTree+Expr,ubyte,ubyte] (FullOpts)
24 (0.71 % of base) : 24965.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetEnumeratorInfoCore(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,byref,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):int:this (FullOpts)
24 (0.91 % of base) : 26129.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryBindIndexOrRangeImplicitIndexer(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):ubyte:this (FullOpts)
24 (0.45 % of base) : 27694.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitLockStatement(Microsoft.CodeAnalysis.CSharp.BoundLockStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
20 (2.33 % of base) : 30275.dasm - System.Management.Automation.MutableTuple:MakeTupleType(System.Type[],int,int):System.Type (FullOpts)
16 (1.66 % of base) : 5600.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
16 (0.39 % of base) : 24773.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertToArrayIndex(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
16 (1.19 % of base) : 22682.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetParamArrayArgument(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],System.Collections.Immutable.ImmutableArray`1[System.String],int,int,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.TypedConstant (FullOpts)
16 (0.45 % of base) : 28278.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitStringSwitchJumpTable(System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.ConstantValue,System.Object][],Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,Microsoft.CodeAnalysis.CodeGen.LocalOrParameter,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
16 (0.18 % of base) : 27742.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitReadonlySpanAsBlobWrapper(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
16 (1.56 % of base) : 14321.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
Top method improvements (bytes):
-80 (-0.75 % of base) : 9352.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-56 (-7.41 % of base) : 2926.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-36 (-0.91 % of base) : 14641.dasm - System.Net.HttpWebRequest+<SendRequest>d__196:MoveNext():this (FullOpts)
-32 (-5.84 % of base) : 18582.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-0.57 % of base) : 19805.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-32 (-2.65 % of base) : 14294.dasm - Microsoft.ML.Data.BufferBuilder`1[float]:GetResult(byref):this (FullOpts)
-32 (-2.38 % of base) : 14201.dasm - Microsoft.ML.Data.TextLoader+VectorPipe`1+VectorValue[System.ReadOnlyMemory`1[ushort]]:Get(byref):this (FullOpts)
-28 (-0.52 % of base) : 15011.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
-20 (-1.67 % of base) : 3066.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
-16 (-1.67 % of base) : 1095.dasm - BenchmarkDotNet.Engines.EngineActualStage:.ctor(BenchmarkDotNet.Engines.IEngine):this (FullOpts)
-16 (-0.26 % of base) : 3705.dasm - FSharp.Compiler.CompilerImports:TcConfig.TryResolveLibsUsingMSBuildRules.Static(FSharp.Compiler.CompilerConfig+TcConfig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+AssemblyReference],FSharp.Compiler.Text.Range,FSharp.Compiler.CompilerImports+ResolveAssemblyReferenceMode):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerImports+AssemblyResolution],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+UnresolvedAssemblyReference]] (FullOpts)
-16 (-0.68 % of base) : 2959.dasm - Interop:GetExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte):System.Exception (FullOpts)
-16 (-1.20 % of base) : 18498.dasm - Interop+Crypto:HashAlgorithmToEvp(System.String):long (FullOpts)
-16 (-1.69 % of base) : 14061.dasm - Microsoft.ML.Data.VBuffer`1[double]:Copy(double[],int,byref,int) (FullOpts)
-16 (-2.48 % of base) : 29915.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-16 (-1.24 % of base) : 31879.dasm - System.Linq.Expressions.Expression:ValidateTryAndCatchHaveSameType(System.Type,System.Linq.Expressions.Expression,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.CatchBlock]) (FullOpts)
-16 (-5.26 % of base) : 30478.dasm - System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
-16 (-0.11 % of base) : 31652.dasm - System.Management.Automation.Language.Tokenizer:NextToken():System.Management.Automation.Language.Token:this (FullOpts)
-16 (-4.04 % of base) : 2303.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-12 (-5.17 % of base) : 11599.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
Top method regressions (percentages):
8 (5.41 % of base) : 17940.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
8 (4.00 % of base) : 29305.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
4 (3.57 % of base) : 26293.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
8 (3.45 % of base) : 23507.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
8 (2.74 % of base) : 3016.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
4 (2.63 % of base) : 22025.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:ContainsDroppedIdentifierCharacters(System.String):ubyte (FullOpts)
20 (2.33 % of base) : 30275.dasm - System.Management.Automation.MutableTuple:MakeTupleType(System.Type[],int,int):System.Type (FullOpts)
44 (2.29 % of base) : 542.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
4 (2.22 % of base) : 14953.dasm - System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this (FullOpts)
8 (2.13 % of base) : 22945.dasm - Microsoft.CodeAnalysis.Compilation:CommonBindScriptClass():Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
32 (2.12 % of base) : 2451.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
4 (2.00 % of base) : 23187.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:HasInitializer(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (FullOpts)
12 (1.92 % of base) : 14078.dasm - System.Collections.Immutable.ImmutableExtensions:ToArray[double](System.Collections.Generic.IEnumerable`1[double],int):double[] (FullOpts)
12 (1.91 % of base) : 14360.dasm - Microsoft.ML.Trainers.LbfgsTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainModelCore(Microsoft.ML.TrainContext):System.__Canon:this (FullOpts)
36 (1.91 % of base) : 30090.dasm - Interop+procfs:TryParseStatusFile(System.String,byref):ubyte (FullOpts)
4 (1.85 % of base) : 30795.dasm - System.Management.Automation.LogProvider:GetPSLevelFromSeverity(System.String):ubyte (FullOpts)
4 (1.75 % of base) : 28850.dasm - Microsoft.Cci.MetadataWriter:GetDefiningUnitReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IUnitReference (FullOpts)
16 (1.66 % of base) : 5600.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
4 (1.61 % of base) : 19761.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetNullableAnalysisValue():System.Nullable`1[ubyte]:this (FullOpts)
16 (1.56 % of base) : 14321.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
Top method improvements (percentages):
-56 (-7.41 % of base) : 2926.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-32 (-5.84 % of base) : 18582.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-16 (-5.26 % of base) : 30478.dasm - System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
-12 (-5.17 % of base) : 11599.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
-16 (-4.04 % of base) : 2303.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-4 (-3.23 % of base) : 21269.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
-8 (-2.90 % of base) : 2645.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-4 (-2.86 % of base) : 32639.dasm - System.Management.Automation.WildcardPattern:ContainsWildcardCharacters(System.String):ubyte (FullOpts)
-4 (-2.78 % of base) : 31128.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
-12 (-2.68 % of base) : 3398.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-32 (-2.65 % of base) : 14294.dasm - Microsoft.ML.Data.BufferBuilder`1[float]:GetResult(byref):this (FullOpts)
-16 (-2.48 % of base) : 29915.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-32 (-2.38 % of base) : 14201.dasm - Microsoft.ML.Data.TextLoader+VectorPipe`1+VectorValue[System.ReadOnlyMemory`1[ushort]]:Get(byref):this (FullOpts)
-4 (-2.33 % of base) : 29532.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEmbeddedAttributeSymbolBase:GetMembers(System.String):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
-4 (-2.13 % of base) : 13530.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
-4 (-2.13 % of base) : 5118.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
-4 (-2.13 % of base) : 30437.dasm - System.Management.Automation.ExecutionContext:TryGetFromAssemblyCache(System.String,System.String,byref):ubyte:this (FullOpts)
-4 (-2.08 % of base) : 15369.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-4 (-2.04 % of base) : 111.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
-4 (-2.04 % of base) : 3664.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2948924 (overridden on cmd)
Total bytes of diff: 2948728 (overridden on cmd)
Total bytes of delta: -196 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
64 : 383.dasm (5.76 % of base)
28 : 13442.dasm (0.32 % of base)
24 : 15221.dasm (1.60 % of base)
12 : 1350.dasm (3.06 % of base)
12 : 16212.dasm (0.68 % of base)
12 : 1928.dasm (0.70 % of base)
8 : 15621.dasm (0.98 % of base)
8 : 15126.dasm (0.90 % of base)
8 : 15422.dasm (0.97 % of base)
8 : 15652.dasm (0.35 % of base)
8 : 5424.dasm (0.93 % of base)
8 : 2810.dasm (2.82 % of base)
8 : 2466.dasm (0.86 % of base)
8 : 3849.dasm (2.47 % of base)
4 : 12690.dasm (2.50 % of base)
4 : 15470.dasm (3.57 % of base)
4 : 15567.dasm (3.57 % of base)
4 : 14656.dasm (0.70 % of base)
4 : 15718.dasm (1.67 % of base)
4 : 15864.dasm (0.25 % of base)
Top file improvements (bytes):
-52 : 2103.dasm (-3.22 % of base)
-52 : 15538.dasm (-3.22 % of base)
-52 : 2578.dasm (-3.22 % of base)
-20 : 13900.dasm (-2.66 % of base)
-16 : 13582.dasm (-0.92 % of base)
-16 : 16334.dasm (-0.88 % of base)
-16 : 16511.dasm (-0.88 % of base)
-12 : 1372.dasm (-3.12 % of base)
-12 : 15201.dasm (-1.16 % of base)
-12 : 15150.dasm (-1.55 % of base)
-8 : 13627.dasm (-0.59 % of base)
-8 : 14951.dasm (-2.22 % of base)
-8 : 13460.dasm (-0.76 % of base)
-8 : 18396.dasm (-0.95 % of base)
-8 : 12752.dasm (-0.95 % of base)
-8 : 2470.dasm (-5.41 % of base)
-8 : 818.dasm (-2.94 % of base)
-8 : 1776.dasm (-0.59 % of base)
-4 : 12607.dasm (-2.22 % of base)
-4 : 1424.dasm (-2.13 % of base)
61 total files with Code Size differences (31 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
64 (5.76 % of base) : 383.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
28 (0.32 % of base) : 13442.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
24 (1.60 % of base) : 15221.dasm - Interop+procfs:TryParseStatusFile(System.String,byref):ubyte (FullOpts)
12 (0.68 % of base) : 16212.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
12 (0.70 % of base) : 1928.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
12 (3.06 % of base) : 1350.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
8 (2.47 % of base) : 3849.dasm - Internal.Runtime.TypeLoader.MetadataNameExtensions:GetContainingModuleName(Internal.Metadata.NativeFormat.TypeDefinitionHandle,Internal.Metadata.NativeFormat.MetadataReader):System.String (FullOpts)
8 (0.93 % of base) : 5424.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
8 (2.82 % of base) : 2810.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
8 (0.90 % of base) : 15126.dasm - System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26:MoveNext():this (FullOpts)
8 (0.35 % of base) : 15652.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
8 (0.86 % of base) : 2466.dasm - System.TerminalFormatStrings:GetTitle(System.TermInfo+Database):System.String (FullOpts)
8 (0.97 % of base) : 15422.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
8 (0.98 % of base) : 15621.dasm - System.Uri:GetHostViaCustomSyntax():this (FullOpts)
4 (2.50 % of base) : 12690.dasm - Generics+TestGenericInlining:Run() (FullOpts)
4 (2.50 % of base) : 18353.dasm - Generics+TestGenericInlining:Run() (FullOpts)
4 (0.40 % of base) : 5708.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetVirtualResolveData(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,System.RuntimeTypeHandle,System.RuntimeTypeHandle[],byref,byref):ubyte (FullOpts)
4 (1.18 % of base) : 8410.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:.ctor(Internal.TypeSystem.TypeSystemContext,System.RuntimeTypeHandle,int,System.ReadOnlySpan`1[ubyte],int):this (FullOpts)
4 (2.38 % of base) : 18122.dasm - ReflectionTest+TestMethodConsistency:Run() (FullOpts)
4 (2.38 % of base) : 18965.dasm - ReflectionTest+TestMethodConsistency:Run() (FullOpts)
Top method improvements (bytes):
-52 (-3.22 % of base) : 2103.dasm - Interop:GetExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte):System.Exception (FullOpts)
-52 (-3.22 % of base) : 15538.dasm - Interop:GetExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte):System.Exception (FullOpts)
-52 (-3.22 % of base) : 2578.dasm - Interop:GetExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte):System.Exception (FullOpts)
-20 (-2.66 % of base) : 13900.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (FullOpts)
-16 (-0.88 % of base) : 16334.dasm - Interop:GetExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte):System.Exception (FullOpts)
-16 (-0.88 % of base) : 16511.dasm - Interop:GetExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte):System.Exception (FullOpts)
-16 (-0.92 % of base) : 13582.dasm - System.Linq.Expressions.Expression:Switch(System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.SwitchCase]):System.Linq.Expressions.SwitchExpression (FullOpts)
-12 (-1.16 % of base) : 15201.dasm - System.Diagnostics.Process:ForkAndExecProcess(System.Diagnostics.ProcessStartInfo,System.String,System.String[],System.String[],System.String,ubyte,uint,uint,uint[],byref,byref,byref,ubyte,ubyte):ubyte:this (FullOpts)
-12 (-1.55 % of base) : 15150.dasm - System.SpanHelpers:LastIndexOfAnyValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,short,short,short,short,int):int (FullOpts)
-12 (-3.12 % of base) : 1372.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-8 (-0.95 % of base) : 18396.dasm - Interfaces:TestArrayInterfaces():int (FullOpts)
-8 (-0.95 % of base) : 12752.dasm - Interfaces:TestArrayInterfaces():int (FullOpts)
-8 (-0.59 % of base) : 1776.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Resize(int,ubyte):this (FullOpts)
-8 (-0.59 % of base) : 13627.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Resize(int,ubyte):this (FullOpts)
-8 (-5.41 % of base) : 2470.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-8 (-0.76 % of base) : 13460.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileMemberInit(System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.MemberBinding]):this (FullOpts)
-8 (-2.22 % of base) : 14951.dasm - System.Reflection.AssemblyNameParser:ParseProcessorArchitecture(System.String):int:this (FullOpts)
-8 (-2.94 % of base) : 818.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-4 (-2.94 % of base) : 3693.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
-4 (-2.33 % of base) : 18100.dasm - ReflectionTest+TestAttributeInheritance:Run() (FullOpts)
Top method regressions (percentages):
64 (5.76 % of base) : 383.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
4 (3.57 % of base) : 15567.dasm - System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this (FullOpts)
4 (3.57 % of base) : 15470.dasm - System.Net.Sockets.Socket:ValidateHandle(System.Net.Sockets.SafeSocketHandle):System.Net.Sockets.SafeSocketHandle (FullOpts)
12 (3.06 % of base) : 1350.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
8 (2.82 % of base) : 2810.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
4 (2.50 % of base) : 12690.dasm - Generics+TestGenericInlining:Run() (FullOpts)
4 (2.50 % of base) : 18353.dasm - Generics+TestGenericInlining:Run() (FullOpts)
8 (2.47 % of base) : 3849.dasm - Internal.Runtime.TypeLoader.MetadataNameExtensions:GetContainingModuleName(Internal.Metadata.NativeFormat.TypeDefinitionHandle,Internal.Metadata.NativeFormat.MetadataReader):System.String (FullOpts)
4 (2.38 % of base) : 18122.dasm - ReflectionTest+TestMethodConsistency:Run() (FullOpts)
4 (2.38 % of base) : 18965.dasm - ReflectionTest+TestMethodConsistency:Run() (FullOpts)
4 (1.67 % of base) : 15718.dasm - System.Net.Sockets.SocketAsyncContext+AsyncOperation:TryCancel():ubyte:this (FullOpts)
24 (1.60 % of base) : 15221.dasm - Interop+procfs:TryParseStatusFile(System.String,byref):ubyte (FullOpts)
4 (1.52 % of base) : 6312.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
4 (1.45 % of base) : 14567.dasm - System.ConsolePal:SetTerminalCursorPosition(int,int) (FullOpts)
4 (1.28 % of base) : 427.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (FullOpts)
4 (1.18 % of base) : 8410.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:.ctor(Internal.TypeSystem.TypeSystemContext,System.RuntimeTypeHandle,int,System.ReadOnlySpan`1[ubyte],int):this (FullOpts)
8 (0.98 % of base) : 15621.dasm - System.Uri:GetHostViaCustomSyntax():this (FullOpts)
8 (0.97 % of base) : 15422.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)
8 (0.93 % of base) : 5424.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
8 (0.90 % of base) : 15126.dasm - System.Diagnostics.ProcessWaitState+<WaitForExitAsync>d__26:MoveNext():this (FullOpts)
Top method improvements (percentages):
-8 (-5.41 % of base) : 2470.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-4 (-3.45 % of base) : 16584.dasm - System.Globalization.CompareInfo:IndexOf(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (FullOpts)
-52 (-3.22 % of base) : 2103.dasm - Interop:GetExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte):System.Exception (FullOpts)
-52 (-3.22 % of base) : 15538.dasm - Interop:GetExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte):System.Exception (FullOpts)
-52 (-3.22 % of base) : 2578.dasm - Interop:GetExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte):System.Exception (FullOpts)
-12 (-3.12 % of base) : 1372.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-4 (-2.94 % of base) : 3693.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
-8 (-2.94 % of base) : 818.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-20 (-2.66 % of base) : 13900.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (FullOpts)
-4 (-2.33 % of base) : 18100.dasm - ReflectionTest+TestAttributeInheritance:Run() (FullOpts)
-4 (-2.33 % of base) : 18980.dasm - ReflectionTest+TestAttributeInheritance:Run() (FullOpts)
-4 (-2.27 % of base) : 13755.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-4 (-2.22 % of base) : 12607.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-2.22 % of base) : 14951.dasm - System.Reflection.AssemblyNameParser:ParseProcessorArchitecture(System.String):int:this (FullOpts)
-4 (-2.13 % of base) : 16580.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (FullOpts)
-4 (-2.13 % of base) : 1424.dasm - System.Reflection.AssemblyName:get_FullName():System.String:this (FullOpts)
-4 (-2.08 % of base) : 942.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-4 (-2.00 % of base) : 399.dasm - System.String:Concat(System.String,System.String):System.String (FullOpts)
-4 (-1.89 % of base) : 2460.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:MoveNext():ubyte:this (FullOpts)
-4 (-1.72 % of base) : 1225.dasm - System.Runtime.CompilerServices.ClassConstructorRunner+Cctor:Release(System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle) (FullOpts)
Diffs are based on 2,595,038 contexts (1,052,329 MinOpts, 1,542,709 FullOpts).
MISSED contexts: base: 3,596 (0.14%), diff: 3,597 (0.14%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.x64.checked.mch | 13,736,862 | +1,312 |
benchmarks.run_pgo.linux.x64.checked.mch | 66,799,627 | -28,244 |
benchmarks.run_tiered.linux.x64.checked.mch | 17,373,587 | +249 |
coreclr_tests.run.linux.x64.checked.mch | 458,880,954 | -56,518 |
libraries.crossgen2.linux.x64.checked.mch | 38,668,832 | -2,688 |
libraries.pmi.linux.x64.checked.mch | 59,972,991 | -4,424 |
libraries_tests.run.linux.x64.Release.mch | 329,976,844 | -101,989 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 130,000,373 | -12,847 |
realworld.run.linux.x64.checked.mch | 13,194,305 | -2,952 |
smoke_tests.nativeaot.linux.x64.checked.mch | 4,197,516 | -769 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.linux.x64.checked.mch | 13,470,069 | +1,312 |
benchmarks.run_pgo.linux.x64.checked.mch | 46,969,870 | -28,244 |
benchmarks.run_tiered.linux.x64.checked.mch | 3,695,827 | +249 |
coreclr_tests.run.linux.x64.checked.mch | 132,322,819 | -56,518 |
libraries.crossgen2.linux.x64.checked.mch | 38,667,630 | -2,688 |
libraries.pmi.linux.x64.checked.mch | 59,860,121 | -4,424 |
libraries_tests.run.linux.x64.Release.mch | 145,587,323 | -101,989 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 119,341,902 | -12,847 |
realworld.run.linux.x64.checked.mch | 12,805,199 | -2,952 |
smoke_tests.nativeaot.linux.x64.checked.mch | 4,196,605 | -769 |
@@ -71,22 +71,43 @@ G_M46385_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15},
G_M46385_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
mov r9d, dword ptr [rbx+0x08]
test r9d, r9d
- je SHORT G_M46385_IG04
+ jne SHORT G_M46385_IG05
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M46385_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ mov edi, 36
+ jmp SHORT G_M46385_IG09
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M46385_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
cmp r9d, 1
- jne G_M46385_IG16
+ jne G_M46385_IG17
movzx rdi, word ptr [rbx+0x0C]
or edi, 32
cmp edi, 100
- jg G_M46385_IG12
+ jg SHORT G_M46385_IG06
cmp edi, 98
- je G_M46385_IG14
+ je SHORT G_M46385_IG08
cmp edi, 100
- jne G_M46385_IG17
- ;; size=53 bbWeight=0.50 PerfScore 5.25
-G_M46385_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov edi, 36
+ jne G_M46385_IG18
+ jmp SHORT G_M46385_IG04
+ ;; size=38 bbWeight=0.50 PerfScore 4.62
+G_M46385_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ cmp edi, 110
+ je SHORT G_M46385_IG07
+ cmp edi, 112
+ je SHORT G_M46385_IG08
+ cmp edi, 120
+ jne G_M46385_IG18
+ mov edi, 68
+ jmp SHORT G_M46385_IG09
+ ;; size=26 bbWeight=0.50 PerfScore 3.00
+G_M46385_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ mov edi, 32
+ jmp SHORT G_M46385_IG09
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M46385_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
+ mov edi, 38
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M46385_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
+G_M46385_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
call <unknown method>
; gcrRegs +[rax]
mov r14, rax
@@ -95,32 +116,41 @@ G_M46385_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15},
; byrRegs +[rsi]
mov edx, dword ptr [r14+0x08]
test rbx, rbx
- jne G_M46385_IG15
- ;; size=25 bbWeight=1 PerfScore 5.00
-G_M46385_IG06: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8040 {rsi r15}, byref
+ jne SHORT G_M46385_IG11
+ ;; size=21 bbWeight=1 PerfScore 5.00
+G_M46385_IG10: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8040 {rsi r15}, byref, isz
; gcrRegs -[rax rbx]
xor r8, r8
; byrRegs +[r8]
xor r9d, r9d
- ;; size=6 bbWeight=0.50 PerfScore 0.25
-G_M46385_IG07: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8140 {rsi r8 r15}, byref, isz
+ jmp SHORT G_M46385_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
+G_M46385_IG11: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=8040 {rsi r15}, byref
+ ; gcrRegs +[rbx]
+ ; byrRegs -[r8]
+ lea r8, bword ptr [rbx+0x0C]
+ ; byrRegs +[r8]
+ mov r9d, dword ptr [rbx+0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
+G_M46385_IG12: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8140 {rsi r8 r15}, byref, isz
+ ; gcrRegs -[rbx]
lea rcx, [rbp-0x20]
mov rdi, r15
; byrRegs +[rdi]
call [<unknown method>]
; byrRegs -[rsi rdi r8 r15]
test eax, eax
- je SHORT G_M46385_IG09
+ je SHORT G_M46385_IG14
;; size=17 bbWeight=1 PerfScore 5.00
-G_M46385_IG08: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M46385_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rbp-0x20]
cmp edi, dword ptr [r14+0x08]
sete dil
movzx rdi, dil
test dil, dil
- jne SHORT G_M46385_IG10
+ jne SHORT G_M46385_IG15
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46385_IG09: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M46385_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -128,11 +158,11 @@ G_M46385_IG09: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=26 bbWeight=0.50 PerfScore 1.75
-G_M46385_IG10: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M46385_IG15: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rax, r14
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M46385_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M46385_IG16: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -140,46 +170,17 @@ G_M46385_IG11: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M46385_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
- ; gcrRegs -[rax r14] +[rbx]
- ; byrRegs +[r15]
- cmp edi, 110
- je SHORT G_M46385_IG13
- cmp edi, 112
- je SHORT G_M46385_IG14
- cmp edi, 120
- jne SHORT G_M46385_IG17
- mov edi, 68
- jmp G_M46385_IG05
- ;; size=25 bbWeight=0.50 PerfScore 3.00
-G_M46385_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov edi, 32
- jmp G_M46385_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M46385_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov edi, 38
- jmp G_M46385_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M46385_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=8040 {rsi r15}, byref
- ; gcrRegs +[r14]
- ; byrRegs +[rsi]
- lea r8, bword ptr [rbx+0x0C]
- ; byrRegs +[r8]
- mov r9d, dword ptr [rbx+0x08]
- jmp G_M46385_IG07
- ;; size=13 bbWeight=0.50 PerfScore 2.25
-G_M46385_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r14]
- ; byrRegs -[rsi r8 r15]
+G_M46385_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r14]
call [System.Guid:ThrowBadGuidFormatSpecification()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M46385_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46385_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Guid:ThrowBadGuidFormatSpecification()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 261, prolog size 12, PerfScore 38.88, instruction count 72, allocated bytes for code 261 (MethodHash=c08c4ace) for method System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
+; Total bytes of code 243, prolog size 12, PerfScore 39.88, instruction count 73, allocated bytes for code 243 (MethodHash=c08c4ace) for method System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -21,20 +21,20 @@
; V10 loc6 [V10,T15] ( 3, 5 ) int -> [rbp-0x38]
; V11 loc7 [V11 ] ( 20, 83.50) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
; V12 loc8 [V12,T16] ( 3, 1.50) int -> rcx
-; V13 loc9 [V13,T08] ( 7, 14 ) ushort -> rcx
+; V13 loc9 [V13,T08] ( 7, 14 ) ushort -> rsi
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V15 tmp1 [V15 ] ( 0, 0 ) int -> zero-ref
-; V16 tmp2 [V16,T00] ( 3, 96 ) int -> rcx "dup spill"
+; V16 tmp2 [V16,T00] ( 3, 96 ) int -> rsi "dup spill"
;* V17 tmp3 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp4 [V18 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V19 tmp5 [V19,T12] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
+; V19 tmp5 [V19,T12] ( 3, 6 ) long -> rcx "Inline stloc first use temp"
;* V20 tmp6 [V20 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V21 tmp7 [V21 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V22 tmp8 [V22 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V23 tmp9 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V24 cse0 [V24,T01] ( 3, 48 ) int -> rcx "CSE - aggressive"
-; V25 cse1 [V25,T10] ( 5, 10 ) int -> rcx multi-def "CSE - moderate"
-; V26 cse2 [V26,T17] ( 3, 1.50) int -> rdi "CSE - moderate"
+; V24 cse0 [V24,T01] ( 3, 48 ) int -> rsi "CSE - aggressive"
+; V25 cse1 [V25,T10] ( 5, 10 ) int -> rsi multi-def "CSE - moderate"
+; V26 cse2 [V26,T17] ( 3, 1.50) int -> rsi "CSE - moderate"
;
; Lcl frame size = 24
@@ -57,227 +57,230 @@ G_M23448_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
xor r12d, r12d
xor edx, edx
xor eax, eax
- mov dword ptr [rbp-0x2C], eax
xor r9d, r9d
- xor r10d, r10d
+ xor edi, edi
+ mov r10d, 1
mov r11d, 1
- mov r8d, 1
- movsxd rdi, r13d
- cmp word ptr [r15+2*rdi], 58
+ movsxd rsi, r13d
+ cmp word ptr [r15+2*rsi], 58
jne SHORT G_M23448_IG04
- ;; size=39 bbWeight=1 PerfScore 7.00
+ ;; size=35 bbWeight=1 PerfScore 6.00
G_M23448_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- lea edi, [r13+0x01]
- cmp edi, dword ptr [rbx]
- jge G_M23448_IG29
- movsxd rdi, edi
- cmp word ptr [r15+2*rdi], 58
- jne G_M23448_IG29
+ lea esi, [r13+0x01]
+ cmp esi, dword ptr [rbx]
+ jge G_M23448_IG27
+ movsxd rsi, esi
+ cmp word ptr [r15+2*rsi], 58
+ jne G_M23448_IG27
;; size=27 bbWeight=0.50 PerfScore 4.38
-G_M23448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M23448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rbp-0x40], r13d
- mov edi, dword ptr [rbp-0x40]
- cmp edi, dword ptr [rbx]
- jge SHORT G_M23448_IG07
- ;; size=11 bbWeight=0.50 PerfScore 3.00
+ mov esi, dword ptr [rbp-0x40]
+ cmp esi, dword ptr [rbx]
+ jge G_M23448_IG21
+ ;; size=15 bbWeight=0.50 PerfScore 3.00
G_M23448_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov dword ptr [rbp-0x30], r10d
- test r10d, r10d
- jne SHORT G_M23448_IG08
- ;; size=9 bbWeight=4 PerfScore 9.00
+ test edi, edi
+ jne SHORT G_M23448_IG07
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M23448_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- movsxd rdi, dword ptr [rbp-0x40]
- movzx rcx, word ptr [r15+2*rdi]
- lea edi, [rcx-0x30]
- mov rsi, 0xD1FFAB1E
- shlx rsi, rsi, rdi
- add rdi, -64
- and rdi, rsi
- jge SHORT G_M23448_IG10
- jmp SHORT G_M23448_IG09
+ movsxd rsi, dword ptr [rbp-0x40]
+ movzx rsi, word ptr [r15+2*rsi]
+ lea ecx, [rsi-0x30]
+ mov r8, 0xD1FFAB1E
+ shlx r8, r8, rcx
+ add rcx, -64
+ and rcx, r8
+ jge SHORT G_M23448_IG09
+ jmp SHORT G_M23448_IG08
;; size=38 bbWeight=2 PerfScore 19.50
-G_M23448_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- mov dword ptr [rbp-0x30], r10d
- mov dword ptr [rbp-0x34], r11d
- jmp G_M23448_IG23
- ;; size=13 bbWeight=0.25 PerfScore 1.00
-G_M23448_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- movsxd rcx, dword ptr [rbp-0x40]
- movzx rcx, word ptr [r15+2*rcx]
- lea edi, [rcx-0x30]
- cmp edi, 9
- ja SHORT G_M23448_IG10
+G_M23448_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ movsxd rsi, dword ptr [rbp-0x40]
+ movzx rsi, word ptr [r15+2*rsi]
+ lea ecx, [rsi-0x30]
+ cmp ecx, 9
+ ja SHORT G_M23448_IG09
;; size=17 bbWeight=2 PerfScore 13.50
-G_M23448_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M23448_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
inc edx
- xor r11d, r11d
- mov dword ptr [rbp-0x34], r11d
- jmp G_M23448_IG22
- ;; size=14 bbWeight=2 PerfScore 7.00
-G_M23448_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ xor r10d, r10d
+ jmp G_M23448_IG20
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M23448_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp edx, 4
- jg G_M23448_IG29
+ jg G_M23448_IG27
test edx, edx
- je SHORT G_M23448_IG11
+ je SHORT G_M23448_IG10
inc r12d
- mov r8d, dword ptr [rbp-0x40]
- sub r8d, edx
+ mov r11d, dword ptr [rbp-0x40]
+ sub r11d, edx
;; size=23 bbWeight=2 PerfScore 8.00
-G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- cmp ecx, 46
- ja SHORT G_M23448_IG12
- cmp ecx, 37
- je SHORT G_M23448_IG14
- cmp ecx, 46
- jne G_M23448_IG29
+G_M23448_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp esi, 46
+ ja SHORT G_M23448_IG11
+ cmp esi, 37
+ je SHORT G_M23448_IG12
+ cmp esi, 46
+ jne G_M23448_IG27
test r9d, r9d
- mov dword ptr [rbp-0x34], r11d
- jne G_M23448_IG29
+ mov dword ptr [rbp-0x30], edi
+ mov dword ptr [rbp-0x34], r10d
+ mov dword ptr [rbp-0x2C], eax
+ jne G_M23448_IG27
+ jmp G_M23448_IG18
+ ;; size=43 bbWeight=2 PerfScore 20.00
+G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp esi, 47
+ je G_M23448_IG17
+ cmp esi, 58
+ je SHORT G_M23448_IG15
+ cmp esi, 93
+ je SHORT G_M23448_IG14
+ jmp G_M23448_IG23
+ ;; size=24 bbWeight=2 PerfScore 11.50
+G_M23448_IG12: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ mov esi, dword ptr [rbp-0x40]
+ inc esi
+ mov dword ptr [rbp-0x40], esi
+ cmp esi, dword ptr [rbx]
+ je G_M23448_IG27
+ movsxd rsi, dword ptr [rbp-0x40]
+ movzx rsi, word ptr [r15+2*rsi]
+ cmp esi, 93
+ je SHORT G_M23448_IG14
+ cmp esi, 47
+ jne SHORT G_M23448_IG12
+ ;; size=35 bbWeight=16 PerfScore 220.00
+G_M23448_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M23448_IG17
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M23448_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ mov r13d, dword ptr [rbp-0x40]
+ mov esi, dword ptr [rbx]
+ mov dword ptr [rbp-0x40], esi
+ jmp G_M23448_IG20
+ ;; size=14 bbWeight=2 PerfScore 12.00
+G_M23448_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp dword ptr [rbp-0x40], 0
+ jle SHORT G_M23448_IG16
+ mov r10d, dword ptr [rbp-0x40]
+ dec r10d
+ movsxd rdx, r10d
+ cmp word ptr [r15+2*rdx], 58
+ jne SHORT G_M23448_IG16
+ test eax, eax
+ jne G_M23448_IG27
+ mov dword ptr [rbp-0x2C], 1
+ xor r10d, r10d
+ mov dword ptr [rbp-0x34], r10d
+ mov eax, dword ptr [rbp-0x2C]
+ jmp SHORT G_M23448_IG19
+ ;; size=51 bbWeight=2 PerfScore 30.00
+G_M23448_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ mov dword ptr [rbp-0x34], 1
+ jmp SHORT G_M23448_IG19
+ ;; size=9 bbWeight=8 PerfScore 24.00
+G_M23448_IG17: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ xor edx, edx
+ test r12d, r12d
+ sete dl
+ or edi, edx
+ movzx rdx, r14b
+ or edx, edi
+ jne G_M23448_IG27
+ mov dword ptr [rbp-0x30], 1
+ mov edi, dword ptr [rbp-0x30]
+ jmp SHORT G_M23448_IG16
+ ;; size=34 bbWeight=16 PerfScore 116.00
+G_M23448_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov edx, dword ptr [rbx]
mov dword ptr [rbp-0x40], edx
lea rdx, [rbp-0x40]
mov rdi, r15
- mov dword ptr [rbp-0x38], r8d
- mov esi, r8d
+ mov dword ptr [rbp-0x38], r11d
+ mov esi, r11d
mov ecx, 1
xor r8d, r8d
call [<unknown method>]
; gcr arg pop 0
test eax, eax
- je G_M23448_IG29
- jmp G_M23448_IG20
- ;; size=78 bbWeight=2 PerfScore 35.50
-G_M23448_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- cmp ecx, 47
- je G_M23448_IG19
- cmp ecx, 58
- je SHORT G_M23448_IG17
- cmp ecx, 93
- je SHORT G_M23448_IG16
...
@@ -52,38 +52,23 @@ G_M34819_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
G_M34819_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
- je SHORT G_M34819_IG04
- test rbx, rbx
- je G_M34819_IG12
- jmp SHORT G_M34819_IG08
- ;; size=20 bbWeight=0.50 PerfScore 3.25
+ jne SHORT G_M34819_IG09
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M34819_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
test rbx, rbx
- je SHORT G_M34819_IG06
+ je SHORT G_M34819_IG05
cmp dword ptr [rbx+0x08], 0
- je SHORT G_M34819_IG06
- mov rax, rbx
- ; gcrRegs +[rax]
- ;; size=14 bbWeight=0.50 PerfScore 2.75
-G_M34819_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M34819_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rbx]
+ jne SHORT G_M34819_IG07
+ ;; size=11 bbWeight=0.50 PerfScore 2.62
+G_M34819_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rax, rsi
; gcrRegs +[rax]
;; size=13 bbWeight=0.50 PerfScore 0.25
-G_M34819_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M34819_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -93,30 +78,65 @@ G_M34819_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M34819_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rsi] +[rbx r15]
+G_M34819_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rsi] +[rbx]
+ mov rax, rbx
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M34819_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M34819_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[r15]
+ test rbx, rbx
+ je SHORT G_M34819_IG10
cmp dword ptr [rbx+0x08], 0
- je G_M34819_IG12
+ jne SHORT G_M34819_IG12
+ ;; size=11 bbWeight=0.50 PerfScore 2.62
+G_M34819_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ mov rax, r15
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M34819_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M34819_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rbx]
mov r13d, r14d
mov edi, r13d
add edi, dword ptr [rbx+0x08]
- js G_M34819_IG14
+ js SHORT G_M34819_IG16
call <unknown method>
; gcrRegs +[rax]
mov r12, rax
; gcrRegs +[r12]
test r12, r12
- jne SHORT G_M34819_IG09
+ jne SHORT G_M34819_IG13
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
- ;; size=57 bbWeight=0.50 PerfScore 7.25
-G_M34819_IG09: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=43 bbWeight=0.50 PerfScore 5.25
+G_M34819_IG13: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r12+0x08], r14d
- jge SHORT G_M34819_IG10
+ jge SHORT G_M34819_IG14
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -124,7 +144,7 @@ G_M34819_IG09: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=26 bbWeight=0.50 PerfScore 3.75
-G_M34819_IG10: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+G_M34819_IG14: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
lea rdi, bword ptr [r12+0x0C]
; byrRegs +[rdi]
lea rsi, bword ptr [r15+0x0C]
@@ -144,7 +164,7 @@ G_M34819_IG10: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0
mov rax, r12
; gcrRegs +[rax]
;; size=39 bbWeight=0.50 PerfScore 4.25
-G_M34819_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M34819_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -154,28 +174,13 @@ G_M34819_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M34819_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r12] +[r15]
- mov rax, r15
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M34819_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M34819_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r15]
+G_M34819_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r12]
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 266, prolog size 16, PerfScore 39.38, instruction count 88, allocated bytes for code 266 (MethodHash=f9bb77fc) for method System.String:Concat(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 252, prolog size 16, PerfScore 38.38, instruction count 87, allocated bytes for code 252 (MethodHash=f9bb77fc) for method System.String:Concat(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -80,7 +80,7 @@ G_M33104_IG02: ; bbWeight=1, gcrefRegs=A000 {r13 r15}, byrefRegs=0008 {rb
mov edx, dword ptr [r12+0x08]
mov dword ptr [rbp-0x30], edx
test edx, edx
- jle G_M33104_IG14
+ jle G_M33104_IG18
mov edi, dword ptr [r12+0x08]
;; size=81 bbWeight=1 PerfScore 22.75
G_M33104_IG03: ; bbWeight=3.96, gcVars=0000000000000008 {V05}, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, gcvars, byref
@@ -114,9 +114,9 @@ G_M33104_IG03: ; bbWeight=3.96, gcVars=0000000000000008 {V05}, gcrefRegs=
mov gword ptr [rbp-0x48], rax
; GC ptr vars +{V08}
cmp gword ptr [rbp-0x40], 0
- jne G_M33104_IG13
+ jne G_M33104_IG17
;; size=84 bbWeight=3.96 PerfScore 87.12
-G_M33104_IG04: ; bbWeight=1.98, gcVars=0000000000000108 {V05 V08}, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+G_M33104_IG04: ; bbWeight=1.98, gcVars=0000000000000108 {V05 V08}, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rax]
mov rdi, gword ptr [rbx]
; gcrRegs +[rdi]
@@ -126,7 +126,7 @@ G_M33104_IG04: ; bbWeight=1.98, gcVars=0000000000000108 {V05 V08}, gcrefR
call [r11]<unknown method>
; gcrRegs -[rdi] +[rax]
cmp rax, gword ptr [rbp-0x48]
- je G_M33104_IG12
+ je G_M33104_IG16
mov rdi, gword ptr [rbx]
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x08]
@@ -142,8 +142,8 @@ G_M33104_IG04: ; bbWeight=1.98, gcVars=0000000000000108 {V05 V08}, gcrefR
; GC ptr vars +{V05}
xor ecx, ecx
cmp dword ptr [rbp-0x2C], 0
- jle SHORT G_M33104_IG11
- ;; size=83 bbWeight=1.98 PerfScore 48.01
+ jle G_M33104_IG15
+ ;; size=87 bbWeight=1.98 PerfScore 48.01
G_M33104_IG05: ; bbWeight=15.84, gcVars=0000000000000108 {V05 V08}, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs -[rax]
mov rdi, gword ptr [rbx]
@@ -165,7 +165,7 @@ G_M33104_IG05: ; bbWeight=15.84, gcVars=0000000000000108 {V05 V08}, gcref
inc eax
mov ecx, dword ptr [rbp-0x2C]
cmp eax, ecx
- jl SHORT G_M33104_IG10
+ jl SHORT G_M33104_IG14
;; size=53 bbWeight=15.84 PerfScore 273.24
G_M33104_IG06: ; bbWeight=3.96, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, byref, isz
mov rax, gword ptr [rbp-0x40]
@@ -190,45 +190,22 @@ G_M33104_IG07: ; bbWeight=1.98, gcVars=0000000000000100 {V08}, gcrefRegs=
; gcrRegs +[rax]
mov ecx, dword ptr [rbp-0x2C]
;; size=29 bbWeight=1.98 PerfScore 12.87
-G_M33104_IG08: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=B001 {rax r12 r13 r15}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M33104_IG08: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=B001 {rax r12 r13 r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; GC ptr vars -{V05}
inc ecx
mov edi, dword ptr [rbp-0x30]
cmp ecx, edi
+ jl SHORT G_M33104_IG13
+ ;; size=9 bbWeight=3.96 PerfScore 9.90
+G_M33104_IG09: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[r12-r13 r15]
mov gword ptr [rbp-0x40], rax
; GC ptr vars +{V05}
- jl G_M33104_IG03
- ;; size=17 bbWeight=3.96 PerfScore 13.86
-G_M33104_IG09: ; bbWeight=1, gcVars=0000000000000008 {V05}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; gcrRegs -[rax r12-r13 r15]
- jmp SHORT G_M33104_IG14
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M33104_IG10: ; bbWeight=7.92, gcVars=0000000000000108 {V05 V08}, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; gcrRegs +[r12-r13 r15]
- ; GC ptr vars +{V08}
- mov dword ptr [rbp-0x2C], ecx
- mov ecx, eax
- jmp SHORT G_M33104_IG05
- ;; size=7 bbWeight=7.92 PerfScore 25.74
-G_M33104_IG11: ; bbWeight=0.99, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, byref, isz
- mov ecx, dword ptr [rbp-0x2C]
- jmp SHORT G_M33104_IG06
- ;; size=5 bbWeight=0.99 PerfScore 2.97
-G_M33104_IG12: ; bbWeight=0.99, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, byref, isz
- mov ecx, dword ptr [rbp-0x2C]
- jmp SHORT G_M33104_IG06
- ;; size=5 bbWeight=0.99 PerfScore 2.97
-G_M33104_IG13: ; bbWeight=1.98, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, byref, isz
- mov ecx, dword ptr [rbp-0x2C]
- jmp SHORT G_M33104_IG06
- ;; size=5 bbWeight=1.98 PerfScore 5.94
-G_M33104_IG14: ; bbWeight=1, gcVars=0000000000000008 {V05}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; gcrRegs -[r12-r13 r15]
- ; GC ptr vars -{V08}
- cmp gword ptr [rbp-0x40], 0
- je SHORT G_M33104_IG16
- ;; size=7 bbWeight=1 PerfScore 3.00
-G_M33104_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ test rax, rax
+ je SHORT G_M33104_IG11
+ ;; size=9 bbWeight=1 PerfScore 2.25
+G_M33104_IG10: ; bbWeight=0.50, gcVars=0000000000000008 {V05}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -250,10 +227,10 @@ G_M33104_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
; gcrRegs -[rsi r15]
; byrRegs -[rbx rdi]
;; size=42 bbWeight=0.50 PerfScore 2.75
-G_M33104_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M33104_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M33104_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M33104_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop r12
@@ -263,8 +240,41 @@ G_M33104_IG17: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
+G_M33104_IG13: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=B001 {rax r12 r13 r15}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs +[rax r12-r13 r15]
+ ; byrRegs +[rbx]
+ mov gword ptr [rbp-0x40], rax
+ ; GC ptr vars +{V05}
+ jmp G_M33104_IG03
+ ;; size=9 bbWeight=1.98 PerfScore 5.94
+G_M33104_IG14: ; bbWeight=7.92, gcVars=0000000000000108 {V05 V08}, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs -[rax]
+ ; GC ptr vars +{V08}
+ mov dword ptr [rbp-0x2C], ecx
+ mov ecx, eax
+ jmp G_M33104_IG05
+ ;; size=10 bbWeight=7.92 PerfScore 25.74
+G_M33104_IG15: ; bbWeight=0.99, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, byref
+ mov ecx, dword ptr [rbp-0x2C]
+ jmp G_M33104_IG06
+ ;; size=8 bbWeight=0.99 PerfScore 2.97
+G_M33104_IG16: ; bbWeight=0.99, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, byref
+ mov ecx, dword ptr [rbp-0x2C]
+ jmp G_M33104_IG06
+ ;; size=8 bbWeight=0.99 PerfScore 2.97
+G_M33104_IG17: ; bbWeight=1.98, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0008 {rbx}, byref
+ mov ecx, dword ptr [rbp-0x2C]
+ jmp G_M33104_IG06
+ ;; size=8 bbWeight=1.98 PerfScore 5.94
+G_M33104_IG18: ; bbWeight=0.50, gcVars=0000000000000008 {V05}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ; gcrRegs -[r12-r13 r15]
+ ; GC ptr vars -{V08}
+ mov rax, gword ptr [rbp-0x40]
+ ; gcrRegs +[rax]
+ jmp SHORT G_M33104_IG09
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 476, prolog size 19, PerfScore 524.38, instruction count 132, allocated bytes for code 476 (MethodHash=1a577eaf) for method System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String) (FullOpts)
+; Total bytes of code 499, prolog size 19, PerfScore 525.11, instruction count 135, allocated bytes for code 499 (MethodHash=1a577eaf) for method System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String) (FullOpts)
; ============================================================
Unwind Info:
@@ -26,7 +26,7 @@
;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V17 tmp12 [V17,T03] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
-; V18 tmp13 [V18,T00] ( 6, 52 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
+; V18 tmp13 [V18,T00] ( 6, 52 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
; V19 tmp14 [V19,T05] ( 2, 8 ) byref -> rdi "impAppendStmt"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -45,7 +45,7 @@
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V37 tmp32 [V37,T08] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V37 tmp32 [V37,T08] ( 3, 3 ) ref -> rdx single-def "arr expr"
; V38 tmp33 [V38,T10] ( 3, 3 ) int -> rsi "index expr"
; V39 cse0 [V39,T02] ( 4, 18.50) int -> r14 "CSE - aggressive"
; V40 cse1 [V40,T15] ( 2, 1 ) ref -> rax "CSE - aggressive"
@@ -69,7 +69,7 @@ G_M51747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=22 bbWeight=1 PerfScore 8.00
G_M51747_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je G_M51747_IG16
+ je G_M51747_IG17
mov r14d, dword ptr [rbx+0x08]
test r14d, r14d
jne SHORT G_M51747_IG05
@@ -103,60 +103,61 @@ G_M51747_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
; byrRegs -[rdi]
; gcr arg pop 0
mov r12d, eax
- mov rdi, gword ptr [r15+0x08]
- ; gcrRegs +[rdi]
+ mov rdx, gword ptr [r15+0x08]
+ ; gcrRegs +[rdx]
mov esi, r12d
and esi, dword ptr [r15+0x14]
- cmp esi, dword ptr [rdi+0x08]
- jae SHORT G_M51747_IG15
- mov rax, gword ptr [rdi+8*rsi+0x10]
+ cmp esi, dword ptr [rdx+0x08]
+ jae G_M51747_IG16
+ mov rax, gword ptr [rdx+8*rsi+0x10]
; gcrRegs +[rax]
test rax, rax
je SHORT G_M51747_IG11
- ;; size=57 bbWeight=0.50 PerfScore 8.75
+ ;; size=61 bbWeight=0.50 PerfScore 8.75
G_M51747_IG06: ; bbWeight=4, gcrefRegs=8009 {rax rbx r15}, byrefRegs=2000 {r13}, byref, isz
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rdx]
cmp dword ptr [rax+0x18], r12d
- jne SHORT G_M51747_IG10
+ jne SHORT G_M51747_IG13
;; size=6 bbWeight=4 PerfScore 16.00
G_M51747_IG07: ; bbWeight=2, gcrefRegs=8009 {rax rbx r15}, byrefRegs=2000 {r13}, byref, isz
- mov rcx, gword ptr [rax+0x08]
- ; gcrRegs +[rcx]
- cmp byte ptr [rcx], cl
- cmp rcx, rbx
- je SHORT G_M51747_IG13
- ;; size=11 bbWeight=2 PerfScore 12.50
-G_M51747_IG08: ; bbWeight=16, gcrefRegs=800B {rax rcx rbx r15}, byrefRegs=2000 {r13}, byref, isz
- cmp dword ptr [rcx+0x08], r14d
- jne SHORT G_M51747_IG10
- ;; size=6 bbWeight=16 PerfScore 64.00
-G_M51747_IG09: ; bbWeight=2, gcrefRegs=800B {rax rcx rbx r15}, byrefRegs=2000 {r13}, byref, isz
mov gword ptr [rbp-0x30], rax
; GC ptr vars +{V04}
- lea rdi, bword ptr [rcx+0x0C]
+ mov rdx, gword ptr [rax+0x08]
+ ; gcrRegs +[rdx]
+ cmp byte ptr [rdx], dl
+ cmp rdx, rbx
+ je SHORT G_M51747_IG14
+ ;; size=15 bbWeight=2 PerfScore 14.50
+G_M51747_IG08: ; bbWeight=16, gcVars=0000000000000002 {V04}, gcrefRegs=800C {rdx rbx r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ cmp dword ptr [rdx+0x08], r14d
+ jne SHORT G_M51747_IG10
+ ;; size=6 bbWeight=16 PerfScore 64.00
+G_M51747_IG09: ; bbWeight=2, gcrefRegs=800C {rdx rbx r15}, byrefRegs=2000 {r13}, byref, isz
+ lea rdi, bword ptr [rdx+0x0C]
; byrRegs +[rdi]
- mov edx, dword ptr [rcx+0x08]
+ mov edx, dword ptr [rdx+0x08]
+ ; gcrRegs -[rdx]
add edx, edx
mov rsi, r13
; byrRegs +[rsi]
call [<unknown method>]
- ; gcrRegs -[rax rcx]
; byrRegs -[rsi rdi]
; gcr arg pop 0
test eax, eax
+ jne SHORT G_M51747_IG14
+ ;; size=22 bbWeight=2 PerfScore 14.50
+G_M51747_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=2000 {r13}, byref, isz
mov rax, gword ptr [rbp-0x30]
; gcrRegs +[rax]
- jne SHORT G_M51747_IG13
- ;; size=30 bbWeight=2 PerfScore 18.50
-G_M51747_IG10: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=8009 {rax rbx r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
- ; GC ptr vars -{V04}
mov rax, gword ptr [rax+0x10]
test rax, rax
jne SHORT G_M51747_IG06
- ;; size=9 bbWeight=4 PerfScore 13.00
-G_M51747_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ;; size=13 bbWeight=4 PerfScore 17.00
+G_M51747_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
; byrRegs -[r13]
+ ; GC ptr vars -{V04}
mov rdi, r15
; gcrRegs +[rdi]
mov rsi, rbx
@@ -177,10 +178,21 @@ G_M51747_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51747_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+G_M51747_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=8009 {rax rbx r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
+ ; gcrRegs +[rbx r15]
+ ; byrRegs +[r13]
+ mov gword ptr [rbp-0x30], rax
+ ; GC ptr vars +{V04}
+ jmp SHORT G_M51747_IG10
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M51747_IG14: ; bbWeight=0.50, gcVars=0000000000000002 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx r15]
+ ; byrRegs -[r13]
+ mov rax, gword ptr [rbp-0x30]
+ ; gcrRegs +[rax]
mov rax, gword ptr [rax+0x08]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M51747_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -190,12 +202,13 @@ G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51747_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M51747_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
+ ; GC ptr vars -{V04}
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M51747_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51747_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -209,7 +222,7 @@ G_M51747_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 269, prolog size 22, PerfScore 154.75, instruction count 89, allocated bytes for code 269 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
+; Total bytes of code 283, prolog size 22, PerfScore 163.25, instruction count 92, allocated bytes for code 283 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -11,35 +11,37 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Linq.Tests.Perf_Enumerable>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T04] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <<unknown class>>
-; V03 tmp2 [V03,T03] ( 3, 4 ) ref -> rbx class-hnd "impAppendStmt" <System.Collections.Generic.IEnumerable`1[int]>
+; V03 tmp2 [V03,T03] ( 3, 4 ) ref -> r14 class-hnd "impAppendStmt" <System.Collections.Generic.IEnumerable`1[int]>
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
; V05 tmp4 [V05,T05] ( 4, 3.50) ref -> rsi
-; V06 tmp5 [V06,T02] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V06 tmp5 [V06,T02] ( 5, 5 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V07 tmp6 [V07,T00] ( 5, 8 ) ref -> r15 class-hnd single-def "Inlining Arg" <int[]>
;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <int[]>
;* V09 tmp8 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <int[]>
-; V11 tmp10 [V11,T10] ( 3, 1.50) ref -> rbx class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[int]>
+; V11 tmp10 [V11,T10] ( 3, 1.50) ref -> r14 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[int]>
; V12 tmp11 [V12,T11] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V13 tmp12 [V13,T08] ( 4, 2 ) ref -> rbx class-hnd "Inline stloc first use temp" <System.Collections.Generic.IEnumerable`1[int]>
-; V14 tmp13 [V14,T09] ( 4, 2 ) ref -> rbx
+; V13 tmp12 [V13,T08] ( 4, 2 ) ref -> r14 class-hnd "Inline stloc first use temp" <System.Collections.Generic.IEnumerable`1[int]>
+; V14 tmp13 [V14,T09] ( 4, 2 ) ref -> r14
;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <int[]>
-; V16 tmp15 [V16,T01] ( 6, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+ListPartition`1[int]>
+; V16 tmp15 [V16,T01] ( 6, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+ListPartition`1[int]>
;* V17 tmp16 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+EnumerablePartition`1[int]>
; V18 tmp17 [V18,T06] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V19 cse0 [V19,T07] ( 3, 2.50) ref -> rbx "CSE - moderate"
;* V20 cse1 [V20,T12] ( 0, 0 ) long -> zero-ref "CSE - moderate"
;* V21 cse2 [V21,T13] ( 0, 0 ) long -> zero-ref "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M60061_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
- ;; size=9 bbWeight=1 PerfScore 3.50
-G_M60061_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ push rax
+ lea rbp, [rsp+0x20]
+ ;; size=12 bbWeight=1 PerfScore 5.50
+G_M60061_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E
mov esi, 62
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
@@ -49,40 +51,36 @@ G_M60061_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r15, rbx
; gcrRegs +[r15]
test r15, r15
- je G_M60061_IG13
+ je G_M60061_IG14
cmp dword ptr [r15+0x08], 0
- jne SHORT G_M60061_IG04
- ;; size=52 bbWeight=1 PerfScore 9.25
-G_M60061_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- jmp SHORT G_M60061_IG08
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M60061_IG04: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx] +[r15]
+ je G_M60061_IG08
+ ;; size=56 bbWeight=1 PerfScore 9.25
+G_M60061_IG03: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx]
mov rsi, r15
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[rsi] +[rax]
test rax, rax
- jne SHORT G_M60061_IG07
- jmp SHORT G_M60061_IG06
+ jne SHORT G_M60061_IG06
+ jmp SHORT G_M60061_IG05
;; size=25 bbWeight=0.50 PerfScore 2.38
-G_M60061_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax r15] +[rbx]
- jmp SHORT G_M60061_IG08
+G_M60061_IG04: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax r15] +[r14]
+ jmp SHORT G_M60061_IG07
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M60061_IG06: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx] +[r15]
+G_M60061_IG05: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14] +[r15]
mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable+ListPartition`1[int]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov r14, rax
+ ; gcrRegs +[r14]
call <unknown method>
; gcrRegs -[rax]
- mov dword ptr [rbx+0x08], eax
- lea rdi, bword ptr [rbx+0x18]
+ mov dword ptr [r14+0x08], eax
+ lea rdi, bword ptr [r14+0x18]
; byrRegs +[rdi]
mov rsi, r15
; gcrRegs +[rsi]
@@ -90,102 +88,113 @@ G_M60061_IG06: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {},
; gcrRegs -[rsi r15]
; byrRegs -[rdi]
xor edi, edi
- mov dword ptr [rbx+0x14], edi
- mov dword ptr [rbx+0x20], 9
- jmp SHORT G_M60061_IG05
- ;; size=52 bbWeight=0.50 PerfScore 4.75
-G_M60061_IG07: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx] +[rax]
+ mov dword ptr [r14+0x14], edi
+ mov dword ptr [r14+0x20], 9
+ jmp SHORT G_M60061_IG04
+ ;; size=55 bbWeight=0.50 PerfScore 4.75
+G_M60061_IG06: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14] +[rax]
mov rdi, rax
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method>
mov esi, 10
call [r11]<unknown method>
; gcrRegs -[rdi]
- mov rbx, rax
- ; gcrRegs +[rbx]
- test rbx, rbx
- jne SHORT G_M60061_IG08
+ mov r14, rax
+ ; gcrRegs +[r14]
+ test r14, r14
+ jne SHORT G_M60061_IG07
mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rbx, gword ptr [rdi]
+ mov r14, gword ptr [rdi]
;; size=42 bbWeight=0.50 PerfScore 3.75
-G_M60061_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M60061_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ jmp SHORT G_M60061_IG09
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M60061_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14] +[rbx]
+ mov r14, rbx
+ ; gcrRegs +[r14]
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M60061_IG09: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M60061_IG14
+ je G_M60061_IG15
;; size=13 bbWeight=1 PerfScore 4.00
-G_M60061_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M60061_IG10: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
test rsi, rsi
- jne SHORT G_M60061_IG11
+ jne SHORT G_M60061_IG12
;; size=18 bbWeight=1 PerfScore 3.50
-G_M60061_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M60061_IG11: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- mov r15, rax
- ; gcrRegs +[r15]
+ mov rbx, rax
+ ; gcrRegs +[rbx]
mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
test rsi, rsi
- je SHORT G_M60061_IG15
- lea rdi, bword ptr [r15+0x08]
+ je SHORT G_M60061_IG16
+ lea rdi, bword ptr [rbx+0x08]
; byrRegs +[rdi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
mov rdi, 0xD1FFAB1E ; code for <unknown method>
- mov qword ptr [r15+0x18], rdi
+ mov qword ptr [rbx+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi]
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi]
;; size=80 bbWeight=0.50 PerfScore 4.75
-G_M60061_IG11: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
- mov rdi, rbx
+G_M60061_IG12: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ mov rdi, r14
; gcrRegs +[rdi]
call [<unknown method>]
- ; gcrRegs -[rbx rsi rdi] +[rax]
+ ; gcrRegs -[rsi rdi r14] +[rax]
mov rdi, rax
; gcrRegs +[rdi]
call [System.Linq.Enumerable:ToArray[int](System.Collections.Generic.IEnumerable`1[int]):int[]]
; gcrRegs -[rdi]
nop
;; size=19 bbWeight=1 PerfScore 6.75
-G_M60061_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M60061_IG13: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M60061_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M60061_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov edi, 17
call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)]
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M60061_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+G_M60061_IG15: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r14]
mov rdi, 0xD1FFAB1E
mov esi, 973
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp G_M60061_IG09
+ jmp G_M60061_IG10
;; size=25 bbWeight=0 PerfScore 0.00
-G_M60061_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+G_M60061_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
call [System.MulticastDelegate:ThrowNullThisInDelegateToInstance()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
...
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4575
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4575
; 2 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -33,7 +33,7 @@
;
; Lcl frame size = 0
-G_M31300_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M31300_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push r15
push rbx
@@ -41,117 +41,39 @@ G_M31300_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rdi
; gcrRegs +[rbx]
;; size=12 bbWeight=1 PerfScore 3.75
-G_M31300_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M31300_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r15, gword ptr [rbx+0x10]
; gcrRegs +[r15]
test r15, r15
- je G_M31300_IG14
- ;; size=13 bbWeight=1 PerfScore 3.25
-G_M31300_IG03: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ jne SHORT G_M31300_IG04
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M31300_IG03: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ mov r15, gword ptr [rbx+0x18]
+ ; gcrRegs +[r15]
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M31300_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rsi, r15
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rsi] +[rax]
cmp rax, r15
- je G_M31300_IG15
- mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple
+ jne SHORT G_M31300_IG06
+ ;; size=23 bbWeight=1 PerfScore 2.75
+G_M31300_IG05: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp qword ptr [r15], rax
- jne G_M31300_IG16
- mov rdi, gword ptr [r15+0x38]
- ; gcrRegs +[rdi]
- ;; size=50 bbWeight=1 PerfScore 9.00
-G_M31300_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- test rdi, rdi
- je SHORT G_M31300_IG06
- mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol
- cmp qword ptr [rdi], rax
- jne G_M31300_IG17
- mov ecx, dword ptr [rdi+0x88]
- sar ecx, 10
- and ecx, 15
- ;; size=36 bbWeight=1 PerfScore 8.25
-G_M31300_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- cmp ecx, 10
- je SHORT G_M31300_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M31300_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- xor eax, eax
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M31300_IG07: ; bbWeight=1, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M31300_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- mov rdi, gword ptr [rbx+0x10]
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M31300_IG10
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0xD0]
- call [rax+0x20]<unknown method>
- ; gcrRegs -[rdi]
- cmp eax, 1
- sete al
- movzx rax, al
- test eax, eax
- je SHORT G_M31300_IG10
- mov eax, 2
- ;; size=40 bbWeight=0 PerfScore 0.00
-G_M31300_IG09: ; bbWeight=0, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M31300_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rdi, gword ptr [rbx+0x10]
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M31300_IG12
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0xF8]
- call [rax]<unknown method>
- ; gcrRegs -[rbx rdi]
- test eax, eax
- je SHORT G_M31300_IG12
- mov eax, 3
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M31300_IG11: ; bbWeight=0, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M31300_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov eax, 1
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M31300_IG13: ; bbWeight=0, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M31300_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
- mov r15, gword ptr [rbx+0x18]
- ; gcrRegs +[r15]
- jmp G_M31300_IG03
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M31300_IG15: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, r15
; gcrRegs +[rdi]
- jmp G_M31300_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M31300_IG16: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M31300_IG08
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M31300_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
+ mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple
+ cmp qword ptr [r15], rax
+ je SHORT G_M31300_IG09
+ ;; size=15 bbWeight=1 PerfScore 4.25
+G_M31300_IG07: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, r15
; gcrRegs +[rdi]
mov rax, qword ptr [r15]
@@ -160,19 +82,106 @@ G_M31300_IG16: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs -[rdi r15] +[rax]
mov rdi, rax
; gcrRegs +[rdi]
- jmp G_M31300_IG04
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M31300_IG17: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M31300_IG08: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ test rdi, rdi
+ je SHORT G_M31300_IG13
+ mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol
+ cmp qword ptr [rdi], rax
+ je SHORT G_M31300_IG15
+ jmp SHORT G_M31300_IG10
+ ;; size=22 bbWeight=1 PerfScore 7.50
+G_M31300_IG09: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi] +[r15]
+ mov rdi, gword ptr [r15+0x38]
+ ; gcrRegs +[rdi]
+ jmp SHORT G_M31300_IG08
+ ;; size=6 bbWeight=1 PerfScore 4.00
+G_M31300_IG10: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0xA8]
call [rax+0x18]<unknown method>
; gcrRegs -[rdi]
mov ecx, eax
- jmp G_M31300_IG05
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M31300_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, 10
+ jne SHORT G_M31300_IG13
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M31300_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdi, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
+ je SHORT G_M31300_IG18
+ jmp SHORT G_M31300_IG16
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M31300_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rdi]
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M31300_IG14: ; bbWeight=1, epilog, nogc, extend
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=5 bbWeight=1 PerfScore 2.50
+G_M31300_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx rdi]
+ mov ecx, dword ptr [rdi+0x88]
+ sar ecx, 10
+ and ecx, 15
+ jmp SHORT G_M31300_IG11
+ ;; size=14 bbWeight=1 PerfScore 4.75
+G_M31300_IG16: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0xD0]
+ call [rax+0x20]<unknown method>
+ ; gcrRegs -[rdi]
+ cmp eax, 1
+ sete al
+ movzx rax, al
+ test eax, eax
+ je SHORT G_M31300_IG18
+ mov eax, 2
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M31300_IG17: ; bbWeight=0, epilog, nogc, extend
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M31300_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov rdi, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
+ je SHORT G_M31300_IG20
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0xF8]
+ call [rax]<unknown method>
+ ; gcrRegs -[rbx rdi]
+ test eax, eax
+ je SHORT G_M31300_IG20
+ mov eax, 3
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M31300_IG19: ; bbWeight=0, epilog, nogc, extend
+ pop rbx
...
@@ -15,7 +15,7 @@
;
; Lcl frame size = 0
-G_M23529_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M23529_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
mov rbp, rsp
;; size=4 bbWeight=1 PerfScore 1.25
@@ -35,16 +35,15 @@ G_M23529_IG04: ; bbWeight=0.67, epilog, nogc, extend
G_M23529_IG05: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
cmp qword ptr [rsi], rdi
- jne SHORT G_M23529_IG06
- jmp SHORT G_M23529_IG03
- ;; size=7 bbWeight=0.33 PerfScore 2.00
-G_M23529_IG06: ; bbWeight=0.33, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M23529_IG03
+ ;; size=5 bbWeight=0.33 PerfScore 1.33
+G_M23529_IG06: ; bbWeight=0.33, epilog, nogc, extend
pop rbp
tail.jmp [System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object]
; gcr arg pop 0
;; size=7 bbWeight=0.33 PerfScore 0.83
-; Total bytes of code 28, prolog size 4, PerfScore 6.50, instruction count 12, allocated bytes for code 28 (MethodHash=3733a416) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 26, prolog size 4, PerfScore 5.83, instruction count 11, allocated bytes for code 26 (MethodHash=3733a416) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -35,16 +35,15 @@ G_M23529_IG04: ; bbWeight=1, epilog, nogc, extend
G_M23529_IG05: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
cmp qword ptr [rsi], rdi
- jne SHORT G_M23529_IG06
- jmp SHORT G_M23529_IG03
- ;; size=7 bbWeight=0.33 PerfScore 2.00
+ je SHORT G_M23529_IG03
+ ;; size=5 bbWeight=0.33 PerfScore 1.33
G_M23529_IG06: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp
tail.jmp [System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object]
; gcr arg pop 0
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 28, prolog size 4, PerfScore 6.25, instruction count 12, allocated bytes for code 28 (MethodHash=3733a416) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 26, prolog size 4, PerfScore 5.58, instruction count 11, allocated bytes for code 26 (MethodHash=3733a416) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -5,12 +5,12 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 9442
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 9442
; 8 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 9, 5.24) ref -> rbx class-hnd single-def <System.Threading.IThreadPoolWorkItem>
-; V01 arg1 [V01,T06] ( 3, 3 ) ubyte -> r15 single-def
+; V01 arg1 [V01,T06] ( 4, 3 ) ubyte -> r15 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 4, 8 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue>
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -51,28 +51,18 @@ G_M29172_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=22 bbWeight=1 PerfScore 8.00
G_M29172_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- jne SHORT G_M29172_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov edi, 44
- call [System.ThrowHelper:ThrowArgumentNullException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ je G_M29172_IG16
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M29172_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M29172_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M29172_IG06
+ ;; size=17 bbWeight=1 PerfScore 2.75
+G_M29172_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; System.Threading.Channels.VoidAsyncOperationWithData`1[System.Object[]]
cmp qword ptr [rax], rsi
- je SHORT G_M29172_IG07
+ je SHORT G_M29172_IG05
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29172_IG06: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG04: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, rbx
; gcrRegs +[rsi]
@@ -80,73 +70,28 @@ G_M29172_IG06: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- jmp SHORT G_M29172_IG08
+ jmp SHORT G_M29172_IG06
;; size=20 bbWeight=0.23 PerfScore 0.82
-G_M29172_IG07: ; bbWeight=0.27, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29172_IG05: ; bbWeight=0.27, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.27 PerfScore 0.07
-G_M29172_IG08: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
test rax, rax
- je SHORT G_M29172_IG10
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
- mov edi, 44
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ jne G_M29172_IG17
mov rax, 0xD1FFAB1E ; const ptr
+ ; gcrRegs -[rax]
mov r14, gword ptr [rax]
; gcrRegs +[r14]
cmp byte ptr [r14+0x34], 0
- je SHORT G_M29172_IG12
- ;; size=20 bbWeight=1 PerfScore 6.25
-G_M29172_IG11: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- ; gcrRegs +[rdi]
- cmp byte ptr [rdi+0x9D], 0
- je SHORT G_M29172_IG12
- mov rdi, 0xD1FFAB1E ; const ptr
- ; gcrRegs -[rdi]
- mov rdi, gword ptr [rdi]
- ; gcrRegs +[rdi]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M29172_IG12: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ jne G_M29172_IG18
+ ;; size=33 bbWeight=1 PerfScore 7.50
+G_M29172_IG07: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
test r15b, r15b
- je SHORT G_M29172_IG14
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG13: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- mov edi, 5
- call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- ; byrRegs +[rax]
- ; gcr arg pop 0
- mov rdi, gword ptr [rax+0x40]
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M29172_IG14
- mov rdi, gword ptr [rdi+0x18]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- cmp dword ptr [rdi], edi
- call [<unknown method>]
- ; gcrRegs -[rbx rsi rdi]
- ; byrRegs -[rax]
- ; gcr arg pop 0
- jmp SHORT G_M29172_IG18
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M29172_IG14: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+ jne G_M29172_IG19
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M29172_IG08: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r14+0x08]
; gcrRegs +[rdi]
mov r13, gword ptr [rdi+0x10]
@@ -154,28 +99,19 @@ G_M29172_IG14: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
mov r12, gword ptr [r13+0x08]
; gcrRegs +[r12]
;; size=12 bbWeight=1 PerfScore 6.00
-G_M29172_IG15: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG09: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [r13+0xA0]
mov dword ptr [rbp-0x2C], eax
mov esi, eax
and esi, dword ptr [r13+0x18]
cmp esi, dword ptr [r12+0x08]
- jae G_M29172_IG23
+ jae G_M29172_IG15
shl rsi, 4
lea r15, bword ptr [r12+rsi+0x10]
; byrRegs +[r15]
mov ecx, dword ptr [r15+0x08]
sub ecx, eax
- je SHORT G_M29172_IG17
- ;; size=44 bbWeight=1 PerfScore 15.00
-G_M29172_IG16: ; bbWeight=0, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r15]
- test ecx, ecx
- jge SHORT G_M29172_IG15
- jmp G_M29172_IG24
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M29172_IG17: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=8000 {r15}, byref, isz
- ; byrRegs +[r15]
+ jne G_M29172_IG20
lea rsi, bword ptr [r13+0xA0]
; byrRegs +[rsi]
lea ecx, [rax+0x01]
@@ -183,7 +119,7 @@ G_M29172_IG17: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefR
cmpxchg dword ptr [rsi], ecx
cmp eax, dword ptr [rbp-0x2C]
mov dword ptr [rbp-0x30], ecx
- jne SHORT G_M29172_IG15
+ jne SHORT G_M29172_IG09
mov rdi, r15
; gcrRegs -[rdi]
; byrRegs +[rdi]
@@ -195,8 +131,8 @@ G_M29172_IG17: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefR
; byrRegs -[rdi]
mov ebx, dword ptr [rbp-0x30]
mov dword ptr [r15+0x08], ebx
- ;; size=40 bbWeight=1 PerfScore 26.50
-G_M29172_IG18: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=88 bbWeight=1 PerfScore 41.50
+G_M29172_IG10: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r15]
add r14, 116
; gcrRegs -[r14]
@@ -206,9 +142,9 @@ G_M29172_IG18: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
lock
cmpxchg dword ptr [r14], edi
test eax, eax
- jne SHORT G_M29172_IG21
+ jne SHORT G_M29172_IG12
;; size=20 bbWeight=1 PerfScore 20.00
-G_M29172_IG19: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG11: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
mov rdi, 0xD1FFAB1E ; const ptr
mov r13, gword ptr [rdi]
@@ -224,19 +160,13 @@ G_M29172_IG19: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
cmp dword ptr [r13+0x164], 6
- je SHORT G_M29172_IG21
+ jne SHORT G_M29172_IG14
;; size=42 bbWeight=0.92 PerfScore 23.87
-G_M29172_IG20: ; bbWeight=0.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
- mov rdi, r13
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rdi r13]
- ; gcr arg pop 0
- ;; size=9 bbWeight=0.00 PerfScore 0.00
-G_M29172_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29172_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13]
mov eax, 1
;; size=5 bbWeight=1 PerfScore 0.25
-G_M29172_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M29172_IG13: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -246,21 +176,82 @@ G_M29172_IG22: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M29172_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29172_IG14: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r13]
+ mov rdi, r13
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rdi r13]
+ ; gcr arg pop 0
+ jmp SHORT G_M29172_IG12
+ ;; size=11 bbWeight=0.00 PerfScore 0.00
+G_M29172_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M29172_IG24: ; bbWeight=0, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rdi r14]
+G_M29172_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov edi, 44
+ call [System.ThrowHelper:ThrowArgumentNullException(int)]
+ ; gcr arg pop 0
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M29172_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
@@ -5,12 +5,12 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7647
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7647
; 8 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 9, 5.19) ref -> rbx class-hnd single-def <System.Threading.IThreadPoolWorkItem>
-; V01 arg1 [V01,T05] ( 3, 3 ) ubyte -> r15 single-def
+; V01 arg1 [V01,T05] ( 4, 3 ) ubyte -> r15 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 4, 8 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue>
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -51,28 +51,18 @@ G_M29172_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=22 bbWeight=1 PerfScore 8.00
G_M29172_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- jne SHORT G_M29172_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov edi, 44
- call [System.ThrowHelper:ThrowArgumentNullException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ je G_M29172_IG16
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M29172_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M29172_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M29172_IG06
+ ;; size=17 bbWeight=1 PerfScore 2.75
+G_M29172_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; System.Threading.Channels.AsyncOperation`1[ubyte]
cmp qword ptr [rax], rsi
- je SHORT G_M29172_IG07
+ je SHORT G_M29172_IG05
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29172_IG06: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG04: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, rbx
; gcrRegs +[rsi]
@@ -80,73 +70,28 @@ G_M29172_IG06: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- jmp SHORT G_M29172_IG08
+ jmp SHORT G_M29172_IG06
;; size=20 bbWeight=0.19 PerfScore 0.67
-G_M29172_IG07: ; bbWeight=0.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29172_IG05: ; bbWeight=0.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.31 PerfScore 0.08
-G_M29172_IG08: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
test rax, rax
- je SHORT G_M29172_IG10
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
- mov edi, 44
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ jne G_M29172_IG17
mov rax, 0xD1FFAB1E ; const ptr
+ ; gcrRegs -[rax]
mov r14, gword ptr [rax]
; gcrRegs +[r14]
cmp byte ptr [r14+0x34], 0
- je SHORT G_M29172_IG12
- ;; size=20 bbWeight=1 PerfScore 6.25
-G_M29172_IG11: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- ; gcrRegs +[rdi]
- cmp byte ptr [rdi+0x9D], 0
- je SHORT G_M29172_IG12
- mov rdi, 0xD1FFAB1E ; const ptr
- ; gcrRegs -[rdi]
- mov rdi, gword ptr [rdi]
- ; gcrRegs +[rdi]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M29172_IG12: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ jne G_M29172_IG18
+ ;; size=33 bbWeight=1 PerfScore 7.50
+G_M29172_IG07: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
test r15b, r15b
- je SHORT G_M29172_IG14
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG13: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- mov edi, 5
- call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- ; byrRegs +[rax]
- ; gcr arg pop 0
- mov rdi, gword ptr [rax+0x40]
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M29172_IG14
- mov rdi, gword ptr [rdi+0x18]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- cmp dword ptr [rdi], edi
- call [<unknown method>]
- ; gcrRegs -[rbx rsi rdi]
- ; byrRegs -[rax]
- ; gcr arg pop 0
- jmp SHORT G_M29172_IG18
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M29172_IG14: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+ jne G_M29172_IG19
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M29172_IG08: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r14+0x08]
; gcrRegs +[rdi]
mov r13, gword ptr [rdi+0x10]
@@ -154,28 +99,19 @@ G_M29172_IG14: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
mov r12, gword ptr [r13+0x08]
; gcrRegs +[r12]
;; size=12 bbWeight=1 PerfScore 6.00
-G_M29172_IG15: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG09: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [r13+0xA0]
mov dword ptr [rbp-0x2C], eax
mov esi, eax
and esi, dword ptr [r13+0x18]
cmp esi, dword ptr [r12+0x08]
- jae G_M29172_IG23
+ jae G_M29172_IG15
shl rsi, 4
lea r15, bword ptr [r12+rsi+0x10]
; byrRegs +[r15]
mov ecx, dword ptr [r15+0x08]
sub ecx, eax
- je SHORT G_M29172_IG17
- ;; size=44 bbWeight=1 PerfScore 15.00
-G_M29172_IG16: ; bbWeight=0, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r15]
- test ecx, ecx
- jge SHORT G_M29172_IG15
- jmp G_M29172_IG24
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M29172_IG17: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=8000 {r15}, byref, isz
- ; byrRegs +[r15]
+ jne G_M29172_IG20
lea rsi, bword ptr [r13+0xA0]
; byrRegs +[rsi]
lea ecx, [rax+0x01]
@@ -183,7 +119,7 @@ G_M29172_IG17: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefR
cmpxchg dword ptr [rsi], ecx
cmp eax, dword ptr [rbp-0x2C]
mov dword ptr [rbp-0x30], ecx
- jne SHORT G_M29172_IG15
+ jne SHORT G_M29172_IG09
mov rdi, r15
; gcrRegs -[rdi]
; byrRegs +[rdi]
@@ -195,8 +131,8 @@ G_M29172_IG17: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefR
; byrRegs -[rdi]
mov ebx, dword ptr [rbp-0x30]
mov dword ptr [r15+0x08], ebx
- ;; size=40 bbWeight=1 PerfScore 26.50
-G_M29172_IG18: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=88 bbWeight=1 PerfScore 41.50
+G_M29172_IG10: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r15]
add r14, 116
; gcrRegs -[r14]
@@ -206,10 +142,23 @@ G_M29172_IG18: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
lock
cmpxchg dword ptr [r14], edi
test eax, eax
- jne SHORT G_M29172_IG21
+ je SHORT G_M29172_IG13
;; size=20 bbWeight=1 PerfScore 20.00
-G_M29172_IG19: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r14]
+ mov eax, 1
+ ;; size=5 bbWeight=1 PerfScore 0.25
+G_M29172_IG12: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=1 PerfScore 4.25
+G_M29172_IG13: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, 0xD1FFAB1E ; const ptr
mov r13, gword ptr [rdi]
; gcrRegs +[r13]
@@ -224,43 +173,83 @@ G_M29172_IG19: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
cmp dword ptr [r13+0x164], 6
- je SHORT G_M29172_IG21
+ je SHORT G_M29172_IG11
;; size=42 bbWeight=0.29 PerfScore 7.59
-G_M29172_IG20: ; bbWeight=0.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+G_M29172_IG14: ; bbWeight=0.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
mov rdi, r13
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rdi r13]
; gcr arg pop 0
- ;; size=9 bbWeight=0.00 PerfScore 0.00
-G_M29172_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, 1
- ;; size=5 bbWeight=1 PerfScore 0.25
-G_M29172_IG22: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M29172_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ jmp SHORT G_M29172_IG11
+ ;; size=11 bbWeight=0.00 PerfScore 0.00
+G_M29172_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M29172_IG24: ; bbWeight=0, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rdi r14]
...
@@ -5,12 +5,12 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 9726
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 9726
; 8 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 9, 5.22) ref -> rbx class-hnd single-def <System.Threading.IThreadPoolWorkItem>
-; V01 arg1 [V01,T06] ( 3, 3 ) ubyte -> r15 single-def
+; V01 arg1 [V01,T06] ( 4, 3 ) ubyte -> r15 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 4, 8 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue>
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -51,28 +51,18 @@ G_M29172_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=22 bbWeight=1 PerfScore 8.00
G_M29172_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- jne SHORT G_M29172_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov edi, 44
- call [System.ThrowHelper:ThrowArgumentNullException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ je G_M29172_IG16
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M29172_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M29172_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M29172_IG06
+ ;; size=17 bbWeight=1 PerfScore 2.75
+G_M29172_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; System.Threading.Channels.AsyncOperation`1[ubyte]
cmp qword ptr [rax], rsi
- je SHORT G_M29172_IG07
+ je SHORT G_M29172_IG05
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29172_IG06: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG04: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, rbx
; gcrRegs +[rsi]
@@ -80,73 +70,28 @@ G_M29172_IG06: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- jmp SHORT G_M29172_IG08
+ jmp SHORT G_M29172_IG06
;; size=20 bbWeight=0.22 PerfScore 0.77
-G_M29172_IG07: ; bbWeight=0.28, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29172_IG05: ; bbWeight=0.28, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.28 PerfScore 0.07
-G_M29172_IG08: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
test rax, rax
- je SHORT G_M29172_IG10
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
- mov edi, 44
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ jne G_M29172_IG17
mov rax, 0xD1FFAB1E ; const ptr
+ ; gcrRegs -[rax]
mov r14, gword ptr [rax]
; gcrRegs +[r14]
cmp byte ptr [r14+0x34], 0
- je SHORT G_M29172_IG12
- ;; size=20 bbWeight=1 PerfScore 6.25
-G_M29172_IG11: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
- ; gcrRegs +[rdi]
- cmp byte ptr [rdi+0x9D], 0
- je SHORT G_M29172_IG12
- mov rdi, 0xD1FFAB1E ; const ptr
- ; gcrRegs -[rdi]
- mov rdi, gword ptr [rdi]
- ; gcrRegs +[rdi]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M29172_IG12: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ jne G_M29172_IG18
+ ;; size=33 bbWeight=1 PerfScore 7.50
+G_M29172_IG07: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
test r15b, r15b
- je SHORT G_M29172_IG14
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG13: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- mov edi, 5
- call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- ; byrRegs +[rax]
- ; gcr arg pop 0
- mov rdi, gword ptr [rax+0x40]
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M29172_IG14
- mov rdi, gword ptr [rdi+0x18]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- cmp dword ptr [rdi], edi
- call [<unknown method>]
- ; gcrRegs -[rbx rsi rdi]
- ; byrRegs -[rax]
- ; gcr arg pop 0
- jmp SHORT G_M29172_IG18
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M29172_IG14: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+ jne G_M29172_IG19
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M29172_IG08: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r14+0x08]
; gcrRegs +[rdi]
mov r13, gword ptr [rdi+0x10]
@@ -154,28 +99,19 @@ G_M29172_IG14: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
mov r12, gword ptr [r13+0x08]
; gcrRegs +[r12]
;; size=12 bbWeight=1 PerfScore 6.00
-G_M29172_IG15: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG09: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [r13+0xA0]
mov dword ptr [rbp-0x2C], eax
mov esi, eax
and esi, dword ptr [r13+0x18]
cmp esi, dword ptr [r12+0x08]
- jae G_M29172_IG23
+ jae G_M29172_IG15
shl rsi, 4
lea r15, bword ptr [r12+rsi+0x10]
; byrRegs +[r15]
mov ecx, dword ptr [r15+0x08]
sub ecx, eax
- je SHORT G_M29172_IG17
- ;; size=44 bbWeight=1 PerfScore 15.00
-G_M29172_IG16: ; bbWeight=0, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r15]
- test ecx, ecx
- jge SHORT G_M29172_IG15
- jmp G_M29172_IG24
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M29172_IG17: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefRegs=8000 {r15}, byref, isz
- ; byrRegs +[r15]
+ jne G_M29172_IG20
lea rsi, bword ptr [r13+0xA0]
; byrRegs +[rsi]
lea ecx, [rax+0x01]
@@ -183,7 +119,7 @@ G_M29172_IG17: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefR
cmpxchg dword ptr [rsi], ecx
cmp eax, dword ptr [rbp-0x2C]
mov dword ptr [rbp-0x30], ecx
- jne SHORT G_M29172_IG15
+ jne SHORT G_M29172_IG09
mov rdi, r15
; gcrRegs -[rdi]
; byrRegs +[rdi]
@@ -195,8 +131,8 @@ G_M29172_IG17: ; bbWeight=1, gcrefRegs=7088 {rbx rdi r12 r13 r14}, byrefR
; byrRegs -[rdi]
mov ebx, dword ptr [rbp-0x30]
mov dword ptr [r15+0x08], ebx
- ;; size=40 bbWeight=1 PerfScore 26.50
-G_M29172_IG18: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=88 bbWeight=1 PerfScore 41.50
+G_M29172_IG10: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r15]
add r14, 116
; gcrRegs -[r14]
@@ -206,9 +142,9 @@ G_M29172_IG18: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
lock
cmpxchg dword ptr [r14], edi
test eax, eax
- jne SHORT G_M29172_IG21
+ jne SHORT G_M29172_IG12
;; size=20 bbWeight=1 PerfScore 20.00
-G_M29172_IG19: ; bbWeight=0.85, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG11: ; bbWeight=0.85, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
mov rdi, 0xD1FFAB1E ; const ptr
mov r13, gword ptr [rdi]
@@ -224,19 +160,13 @@ G_M29172_IG19: ; bbWeight=0.85, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
cmp dword ptr [r13+0x164], 6
- je SHORT G_M29172_IG21
+ jne SHORT G_M29172_IG14
;; size=42 bbWeight=0.85 PerfScore 22.08
-G_M29172_IG20: ; bbWeight=0.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
- mov rdi, r13
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rdi r13]
- ; gcr arg pop 0
- ;; size=9 bbWeight=0.00 PerfScore 0.00
-G_M29172_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29172_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13]
mov eax, 1
;; size=5 bbWeight=1 PerfScore 0.25
-G_M29172_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M29172_IG13: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -246,21 +176,82 @@ G_M29172_IG22: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M29172_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29172_IG14: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r13]
+ mov rdi, r13
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rdi r13]
+ ; gcr arg pop 0
+ jmp SHORT G_M29172_IG12
+ ;; size=11 bbWeight=0.00 PerfScore 0.00
+G_M29172_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M29172_IG24: ; bbWeight=0, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rdi r14]
+G_M29172_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov edi, 44
+ call [System.ThrowHelper:ThrowArgumentNullException(int)]
+ ; gcr arg pop 0
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M29172_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
@@ -71,22 +71,43 @@ G_M46385_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15},
G_M46385_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
mov r9d, dword ptr [rbx+0x08]
test r9d, r9d
- je SHORT G_M46385_IG04
+ jne SHORT G_M46385_IG05
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M46385_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ mov edi, 36
+ jmp SHORT G_M46385_IG09
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M46385_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
cmp r9d, 1
- jne G_M46385_IG16
+ jne G_M46385_IG17
movzx rdi, word ptr [rbx+0x0C]
or edi, 32
cmp edi, 100
- jg G_M46385_IG12
+ jg SHORT G_M46385_IG06
cmp edi, 98
- je G_M46385_IG14
+ je SHORT G_M46385_IG08
cmp edi, 100
- jne G_M46385_IG17
- ;; size=53 bbWeight=0.50 PerfScore 5.25
-G_M46385_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov edi, 36
+ jne G_M46385_IG18
+ jmp SHORT G_M46385_IG04
+ ;; size=38 bbWeight=0.50 PerfScore 4.62
+G_M46385_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ cmp edi, 110
+ je SHORT G_M46385_IG07
+ cmp edi, 112
+ je SHORT G_M46385_IG08
+ cmp edi, 120
+ jne G_M46385_IG18
+ mov edi, 68
+ jmp SHORT G_M46385_IG09
+ ;; size=26 bbWeight=0.50 PerfScore 3.00
+G_M46385_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ mov edi, 32
+ jmp SHORT G_M46385_IG09
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M46385_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
+ mov edi, 38
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M46385_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
+G_M46385_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
call <unknown method>
; gcrRegs +[rax]
mov r14, rax
@@ -95,32 +116,41 @@ G_M46385_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15},
; byrRegs +[rsi]
mov edx, dword ptr [r14+0x08]
test rbx, rbx
- jne G_M46385_IG15
- ;; size=25 bbWeight=1 PerfScore 5.00
-G_M46385_IG06: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8040 {rsi r15}, byref
+ jne SHORT G_M46385_IG11
+ ;; size=21 bbWeight=1 PerfScore 5.00
+G_M46385_IG10: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8040 {rsi r15}, byref, isz
; gcrRegs -[rax rbx]
xor r8, r8
; byrRegs +[r8]
xor r9d, r9d
- ;; size=6 bbWeight=0.50 PerfScore 0.25
-G_M46385_IG07: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8140 {rsi r8 r15}, byref, isz
+ jmp SHORT G_M46385_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
+G_M46385_IG11: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=8040 {rsi r15}, byref
+ ; gcrRegs +[rbx]
+ ; byrRegs -[r8]
+ lea r8, bword ptr [rbx+0x0C]
+ ; byrRegs +[r8]
+ mov r9d, dword ptr [rbx+0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
+G_M46385_IG12: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8140 {rsi r8 r15}, byref, isz
+ ; gcrRegs -[rbx]
lea rcx, [rbp-0x20]
mov rdi, r15
; byrRegs +[rdi]
call [<unknown method>]
; byrRegs -[rsi rdi r8 r15]
test eax, eax
- je SHORT G_M46385_IG09
+ je SHORT G_M46385_IG14
;; size=17 bbWeight=1 PerfScore 5.00
-G_M46385_IG08: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M46385_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rbp-0x20]
cmp edi, dword ptr [r14+0x08]
sete dil
movzx rdi, dil
test dil, dil
- jne SHORT G_M46385_IG10
+ jne SHORT G_M46385_IG15
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M46385_IG09: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M46385_IG14: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -128,11 +158,11 @@ G_M46385_IG09: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=26 bbWeight=0.50 PerfScore 1.75
-G_M46385_IG10: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M46385_IG15: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rax, r14
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M46385_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M46385_IG16: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -140,46 +170,17 @@ G_M46385_IG11: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M46385_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
- ; gcrRegs -[rax r14] +[rbx]
- ; byrRegs +[r15]
- cmp edi, 110
- je SHORT G_M46385_IG13
- cmp edi, 112
- je SHORT G_M46385_IG14
- cmp edi, 120
- jne SHORT G_M46385_IG17
- mov edi, 68
- jmp G_M46385_IG05
- ;; size=25 bbWeight=0.50 PerfScore 3.00
-G_M46385_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov edi, 32
- jmp G_M46385_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M46385_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov edi, 38
- jmp G_M46385_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M46385_IG15: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=8040 {rsi r15}, byref
- ; gcrRegs +[r14]
- ; byrRegs +[rsi]
- lea r8, bword ptr [rbx+0x0C]
- ; byrRegs +[r8]
- mov r9d, dword ptr [rbx+0x08]
- jmp G_M46385_IG07
- ;; size=13 bbWeight=0.50 PerfScore 2.25
-G_M46385_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r14]
- ; byrRegs -[rsi r8 r15]
+G_M46385_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r14]
call [System.Guid:ThrowBadGuidFormatSpecification()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M46385_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46385_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Guid:ThrowBadGuidFormatSpecification()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 261, prolog size 12, PerfScore 38.88, instruction count 72, allocated bytes for code 261 (MethodHash=c08c4ace) for method System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (Tier1)
+; Total bytes of code 243, prolog size 12, PerfScore 39.88, instruction count 73, allocated bytes for code 243 (MethodHash=c08c4ace) for method System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (Tier1)
; ============================================================
Unwind Info:
@@ -52,38 +52,23 @@ G_M34819_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
G_M34819_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
- je SHORT G_M34819_IG04
- test rbx, rbx
- je G_M34819_IG12
- jmp SHORT G_M34819_IG08
- ;; size=20 bbWeight=0.50 PerfScore 3.25
+ jne SHORT G_M34819_IG09
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M34819_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
test rbx, rbx
- je SHORT G_M34819_IG06
+ je SHORT G_M34819_IG05
cmp dword ptr [rbx+0x08], 0
- je SHORT G_M34819_IG06
- mov rax, rbx
- ; gcrRegs +[rax]
- ;; size=14 bbWeight=0.50 PerfScore 2.75
-G_M34819_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M34819_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rbx]
+ jne SHORT G_M34819_IG07
+ ;; size=11 bbWeight=0.50 PerfScore 2.62
+G_M34819_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rax, rsi
; gcrRegs +[rax]
;; size=13 bbWeight=0.50 PerfScore 0.25
-G_M34819_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M34819_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -93,30 +78,65 @@ G_M34819_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M34819_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rsi] +[rbx r15]
+G_M34819_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rsi] +[rbx]
+ mov rax, rbx
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M34819_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M34819_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[r15]
+ test rbx, rbx
+ je SHORT G_M34819_IG10
cmp dword ptr [rbx+0x08], 0
- je G_M34819_IG12
+ jne SHORT G_M34819_IG12
+ ;; size=11 bbWeight=0.50 PerfScore 2.62
+G_M34819_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ mov rax, r15
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M34819_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M34819_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rbx]
mov r13d, r14d
mov edi, r13d
add edi, dword ptr [rbx+0x08]
- js G_M34819_IG14
+ js SHORT G_M34819_IG16
call <unknown method>
; gcrRegs +[rax]
mov r12, rax
; gcrRegs +[r12]
test r12, r12
- jne SHORT G_M34819_IG09
+ jne SHORT G_M34819_IG13
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
- ;; size=57 bbWeight=0.50 PerfScore 7.25
-G_M34819_IG09: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=43 bbWeight=0.50 PerfScore 5.25
+G_M34819_IG13: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r12+0x08], r14d
- jge SHORT G_M34819_IG10
+ jge SHORT G_M34819_IG14
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -124,7 +144,7 @@ G_M34819_IG09: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rsi rdi]
;; size=26 bbWeight=0.50 PerfScore 3.75
-G_M34819_IG10: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+G_M34819_IG14: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
lea rdi, bword ptr [r12+0x0C]
; byrRegs +[rdi]
lea rsi, bword ptr [r15+0x0C]
@@ -144,7 +164,7 @@ G_M34819_IG10: ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0
mov rax, r12
; gcrRegs +[rax]
;; size=39 bbWeight=0.50 PerfScore 4.25
-G_M34819_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M34819_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -154,28 +174,13 @@ G_M34819_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M34819_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r12] +[r15]
- mov rax, r15
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M34819_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M34819_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r15]
+G_M34819_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r12]
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 266, prolog size 16, PerfScore 39.38, instruction count 88, allocated bytes for code 266 (MethodHash=f9bb77fc) for method System.String:Concat(System.String,System.String):System.String (Tier1)
+; Total bytes of code 252, prolog size 16, PerfScore 38.38, instruction count 87, allocated bytes for code 252 (MethodHash=f9bb77fc) for method System.String:Concat(System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -80,11 +80,8 @@ G_M49441_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
G_M49441_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
mov edx, dword ptr [rdi+0x08]
test edx, edx
- je SHORT G_M49441_IG04
- test rsi, rsi
- je SHORT G_M49441_IG07
- jmp SHORT G_M49441_IG06
- ;; size=14 bbWeight=0.50 PerfScore 3.25
+ jne SHORT G_M49441_IG06
+ ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M49441_IG04: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rax, rsi
@@ -96,19 +93,14 @@ G_M49441_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=2 bbWeight=0.50 PerfScore 0.75
G_M49441_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rdi]
+ test rsi, rsi
+ je SHORT G_M49441_IG07
mov ecx, dword ptr [rsi+0x08]
test ecx, ecx
- je SHORT G_M49441_IG07
- lea rax, bword ptr [rsi+0x0C]
- ; byrRegs +[rax]
- mov r8, rax
- ; byrRegs +[r8]
- mov r9d, ecx
- jmp SHORT G_M49441_IG09
- ;; size=19 bbWeight=0.50 PerfScore 3.12
+ jne SHORT G_M49441_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- ; byrRegs -[rax r8]
mov rax, rdi
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
@@ -116,14 +108,18 @@ G_M49441_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M49441_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0101 {rax r8}, gcvars, byref, isz
+G_M49441_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rsi]
- ; byrRegs +[rax r8]
+ lea rax, bword ptr [rsi+0x0C]
+ ; byrRegs +[rax]
+ mov r8, rax
+ ; byrRegs +[r8]
+ mov r9d, ecx
test r9d, r9d
jle SHORT G_M49441_IG10
cmp word ptr [r8], 47
je SHORT G_M49441_IG04
- ;; size=12 bbWeight=0.50 PerfScore 2.62
+ ;; size=22 bbWeight=0.50 PerfScore 3.12
G_M49441_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0001 {rax}, byref
; gcrRegs -[rsi]
; byrRegs -[r8]
@@ -143,7 +139,7 @@ G_M49441_IG11: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-; Total bytes of code 82, prolog size 4, PerfScore 16.00, instruction count 34, allocated bytes for code 82 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
+; Total bytes of code 78, prolog size 4, PerfScore 14.00, instruction count 32, allocated bytes for code 78 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 18 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 6, 19 ) byref -> rbx this single-def
+; V00 this [V00,T06] ( 6, 19 ) byref -> rbx this single-def
; V01 arg1 [V01,T13] ( 4, 6 ) byref -> r15 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -32,9 +32,9 @@
;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V24 tmp21 [V24,T07] ( 5, 14.50) ref -> r13 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V24 tmp21 [V24,T05] ( 5, 28.50) ref -> r14 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
; V25 tmp22 [V25,T00] ( 6,336 ) byref -> r14 "Inlining Arg"
-; V26 tmp23 [V26,T06] ( 3, 18 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V26 tmp23 [V26,T07] ( 3, 18 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V27 tmp24 [V27,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V28 tmp25 [V28,T01] ( 3,144 ) int -> rdi "Inline stloc first use temp"
;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref "field V05.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
@@ -68,9 +68,9 @@ G_M45554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M45554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
jmp SHORT G_M45554_IG10
;; size=2 bbWeight=1 PerfScore 2.00
-G_M45554_IG03: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r15}, byref, isz
- ; gcrRegs +[r13]
- mov rdi, r13
+G_M45554_IG03: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
+ ; gcrRegs +[r14]
+ mov rdi, r14
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.SyntaxNode:get_FullSpan():Microsoft.CodeAnalysis.Text.TextSpan:this]
; gcrRegs -[rdi]
@@ -82,10 +82,10 @@ G_M45554_IG03: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r1
mov edx, dword ptr [rbp-0x28]
jmp SHORT G_M45554_IG05
;; size=28 bbWeight=2 PerfScore 25.00
-G_M45554_IG04: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r15}, byref
+G_M45554_IG04: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov edx, ecx
;; size=2 bbWeight=2 PerfScore 0.50
-G_M45554_IG05: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M45554_IG05: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
mov ecx, eax
add ecx, dword ptr [r15+0x04]
mov edi, ecx
@@ -95,12 +95,12 @@ G_M45554_IG05: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r1
jle SHORT G_M45554_IG06
jmp SHORT G_M45554_IG07
;; size=20 bbWeight=2 PerfScore 19.50
-G_M45554_IG06: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r15}, byref
+G_M45554_IG06: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
mov esi, edi
;; size=2 bbWeight=2 PerfScore 0.50
-G_M45554_IG07: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M45554_IG07: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
cmp edx, esi
- jl SHORT G_M45554_IG19
+ jl G_M45554_IG19
cmp dword ptr [rbp-0x24], 0
jne SHORT G_M45554_IG10
cmp ecx, dword ptr [rbp-0x28]
@@ -109,16 +109,16 @@ G_M45554_IG07: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r1
setge al
movzx rax, al
jmp SHORT G_M45554_IG09
- ;; size=26 bbWeight=2 PerfScore 25.00
-G_M45554_IG08: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r15}, byref
+ ;; size=30 bbWeight=2 PerfScore 25.00
+G_M45554_IG08: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
xor eax, eax
;; size=2 bbWeight=2 PerfScore 0.50
-G_M45554_IG09: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M45554_IG09: ; bbWeight=2, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz
test eax, eax
jne SHORT G_M45554_IG19
;; size=4 bbWeight=2 PerfScore 2.50
G_M45554_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
- ; gcrRegs -[r13]
+ ; gcrRegs -[r14]
mov rdi, gword ptr [rbx]
; gcrRegs +[rdi]
mov esi, dword ptr [rbx+0x08]
@@ -139,35 +139,37 @@ G_M45554_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=C008 {rbx r14 r
mov r13, rax
; gcrRegs +[r13]
test r13, r13
- jne SHORT G_M45554_IG14
+ jne SHORT G_M45554_IG15
;; size=21 bbWeight=8 PerfScore 68.00
G_M45554_IG12: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=C008 {rbx r14 r15}, byref, isz
; gcrRegs -[rax r13]
mov edi, dword ptr [r14+0x0C]
inc edi
cmp edi, dword ptr [r14+0x08]
- jge SHORT G_M45554_IG15
+ jge SHORT G_M45554_IG14
;; size=12 bbWeight=64 PerfScore 400.00
G_M45554_IG13: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=C008 {rbx r14 r15}, byref, isz
mov dword ptr [r14+0x0C], edi
jmp SHORT G_M45554_IG11
;; size=6 bbWeight=16 PerfScore 48.00
-G_M45554_IG14: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r15}, byref, isz
- ; gcrRegs +[r13]
+G_M45554_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
; byrRegs -[r14]
+ xor r14, r14
+ ; gcrRegs +[r14]
jmp SHORT G_M45554_IG16
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M45554_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
- ; gcrRegs -[r13]
- xor r13, r13
- ; gcrRegs +[r13]
+ ;; size=5 bbWeight=16 PerfScore 36.00
+G_M45554_IG15: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r15}, byref
+ ; gcrRegs -[r14] +[r13]
+ mov r14, r13
+ ; gcrRegs +[r14]
;; size=3 bbWeight=2 PerfScore 0.50
-G_M45554_IG16: ; bbWeight=8, gcrefRegs=2000 {r13}, byrefRegs=8008 {rbx r15}, byref
- test r13, r13
+G_M45554_IG16: ; bbWeight=8, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref
+ ; gcrRegs -[r13]
+ test r14, r14
jne G_M45554_IG03
;; size=9 bbWeight=8 PerfScore 10.00
G_M45554_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[r13]
+ ; gcrRegs -[r14]
; byrRegs -[r15]
dec dword ptr [rbx+0x08]
xor rax, rax
@@ -182,10 +184,10 @@ G_M45554_IG18: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M45554_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[r13]
+G_M45554_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[r14]
; byrRegs -[rbx]
- mov rax, r13
+ mov rax, r14
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M45554_IG20: ; bbWeight=0.50, epilog, nogc, extend
@@ -198,12 +200,12 @@ G_M45554_IG20: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=13 bbWeight=0.50 PerfScore 1.88
G_M45554_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r13]
+ ; gcrRegs -[rax r14]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 17, PerfScore 709.75, instruction count 84, allocated bytes for code 224 (MethodHash=e83c4e0d) for method Microsoft.CodeAnalysis.SyntaxNode+ChildSyntaxListEnumeratorStack:TryGetNextAsNodeInSpan(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
+; Total bytes of code 231, prolog size 17, PerfScore 741.75, instruction count 85, allocated bytes for code 231 (MethodHash=e83c4e0d) for method Microsoft.CodeAnalysis.SyntaxNode+ChildSyntaxListEnumeratorStack:TryGetNextAsNodeInSpan(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
; ============================================================
Unwind Info:
@@ -117,7 +117,7 @@ G_M52295_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
G_M52295_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref
; GC ptr vars +{V00}
cmp dword ptr [rdi+0x14], 0x2710
- jge G_M52295_IG21
+ jge G_M52295_IG23
;; size=13 bbWeight=1 PerfScore 4.00
G_M52295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
@@ -128,7 +128,7 @@ G_M52295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rdx, gword ptr [rbx+0x10]
; gcrRegs +[rdx]
cmp byte ptr [rdx+0x24], 0
- jne G_M52295_IG08
+ jne G_M52295_IG13
lea rsi, [rbp+0x78]
mov rdi, rax
; gcrRegs +[rdi]
@@ -146,11 +146,11 @@ G_M52295_IG04: ; bbWeight=4, nogc, extend
vmovdqu xmm0, xmmword ptr [rbp+0x98]
vmovdqu xmmword ptr [rbp+0xC8], xmm0
;; size=29 bbWeight=4 PerfScore 36.00
-G_M52295_IG05: ; bbWeight=4, isz, extend
+G_M52295_IG05: ; bbWeight=4, extend
mov r15, gword ptr [rbp+0xA8]
; gcrRegs +[r15]
test r15, r15
- je G_M52295_IG09
+ je G_M52295_IG15
mov rsi, r15
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Pipelines.ReadResult]
@@ -158,7 +158,7 @@ G_M52295_IG05: ; bbWeight=4, isz, extend
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
test rax, rax
- jne G_M52295_IG09
+ jne G_M52295_IG15
mov rsi, r15
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; <unknown class>
@@ -169,16 +169,10 @@ G_M52295_IG05: ; bbWeight=4, isz, extend
test rax, rax
setne dil
test dil, dil
- jne SHORT G_M52295_IG06
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- mov rdi, rsi
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rax rsi rdi]
- ; gcr arg pop 0
- ;; size=94 bbWeight=4 PerfScore 51.00
-G_M52295_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ je G_M52295_IG14
+ ;; size=79 bbWeight=4 PerfScore 37.00
+G_M52295_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rsi, r15
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Pipelines.ReadResult]
@@ -186,12 +180,135 @@ G_M52295_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M52295_IG10
+ je G_M52295_IG16
test dword ptr [rax+0x34], 0xD1FFAB1E
- jne G_M52295_IG11
- ;; size=36 bbWeight=4 PerfScore 27.00
-G_M52295_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx r15]
+ je G_M52295_IG17
+ ;; size=40 bbWeight=4 PerfScore 27.00
+G_M52295_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r15]
+ mov r14, gword ptr [rbp+0xA8]
+ ; gcrRegs +[r14]
+ test r14, r14
+ je G_M52295_IG19
+ ;; size=16 bbWeight=8 PerfScore 18.00
+G_M52295_IG08: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Pipelines.ReadResult]
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
+ test rax, rax
+ jne G_M52295_IG19
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFANY
+ ; gcrRegs -[rsi]
+ ; gcr arg pop 0
+ xor edi, edi
+ test rax, rax
+ setne dil
+ test dil, dil
+ je G_M52295_IG18
+ ;; size=63 bbWeight=4 PerfScore 28.00
+G_M52295_IG09: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Pipelines.ReadResult]
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
+ mov r13, rax
+ ; gcrRegs +[r13]
+ test r13, r13
+ je G_M52295_IG22
+ mov edi, dword ptr [r13+0x34]
+ and edi, 0xD1FFAB1E
+ cmp edi, 0xD1FFAB1E
+ je SHORT G_M52295_IG10
+ mov rdi, r13
+ ; gcrRegs +[rdi]
+ xor esi, esi
+ call [<unknown method>]
+ ; gcrRegs -[rax rdi r14]
+ ; gcr arg pop 0
+ ;; size=59 bbWeight=4 PerfScore 40.00
+G_M52295_IG10: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ mov edi, dword ptr [r13+0x34]
+ and edi, 0xD1FFAB1E
+ cmp edi, 0xD1FFAB1E
+ je SHORT G_M52295_IG11
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ ;; size=44 bbWeight=4 PerfScore 28.00
+G_M52295_IG11: ; bbWeight=4, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, nogc
+ vmovdqu ymm0, ymmword ptr [r13+0x38]
+ vmovdqu ymmword ptr [rbp-0x40], ymm0
+ ;; size=11 bbWeight=4 PerfScore 24.00
+G_M52295_IG12: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13]
+ mov rsi, gword ptr [rbp-0x38]
+ ; gcrRegs +[rsi]
+ mov edx, dword ptr [rbp-0x28]
+ mov r15, bword ptr [rbp+0x130]
+ ; byrRegs +[r15]
+ mov rdi, gword ptr [r15+0x08]
+ ; gcrRegs +[rdi]
+ and edx, 0xD1FFAB1E
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x48]
+ call [rax+0x38]<unknown method>
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ inc dword ptr [r15+0x14]
+ cmp dword ptr [r15+0x14], 0x2710
+ jl G_M52295_IG03
+ jmp G_M52295_IG23
+ ;; size=57 bbWeight=8 PerfScore 170.00
+G_M52295_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ ; byrRegs -[r15]
+ mov edi, 70
+ call [System.ThrowHelper:ThrowObjectDisposedException(int)]
+ ; gcr arg pop 0
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M52295_IG14: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx r15]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ jmp G_M52295_IG06
+ ;; size=24 bbWeight=4 PerfScore 22.00
+G_M52295_IG15: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ test r15, r15
+ jne G_M52295_IG06
+ jmp G_M52295_IG07
+ ;; size=14 bbWeight=4 PerfScore 13.00
+G_M52295_IG16: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ mov rdi, r15
+ ; gcrRegs +[rdi]
+ movsx rsi, word ptr [rbp+0xB0]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rdi r15]
+ ; gcr arg pop 0
+ test eax, eax
+ jne G_M52295_IG07
+ ;; size=32 bbWeight=4 PerfScore 31.00
+G_M52295_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
xor edi, edi
mov r15, bword ptr [rbp+0x130]
; byrRegs +[r15]
@@ -218,143 +335,34 @@ G_M52295_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rax rsi]
; gcr arg pop 0
- jmp G_M52295_IG31
+ jmp G_M52295_IG33
;; size=79 bbWeight=1 PerfScore 18.75
-G_M52295_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52295_IG18: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx r14]
; byrRegs -[r15]
- mov edi, 70
- call [System.ThrowHelper:ThrowObjectDisposedException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M52295_IG09: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx r15]
- test r15, r15
- jne G_M52295_IG06
- jmp SHORT G_M52295_IG11
- ;; size=11 bbWeight=4 PerfScore 13.00
-G_M52295_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, r15
- ; gcrRegs +[rdi]
- movsx rsi, word ptr [rbp+0xB0]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
- ; gcrRegs -[rdi r15]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M52295_IG11
- jmp G_M52295_IG07
- ;; size=33 bbWeight=4 PerfScore 39.00
-G_M52295_IG11: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r14, gword ptr [rbp+0xA8]
- ; gcrRegs +[r14]
- test r14, r14
- je SHORT G_M52295_IG13
- ;; size=12 bbWeight=8 PerfScore 18.00
-G_M52295_IG12: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
- mov rsi, r14
- ; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Pipelines.ReadResult]
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rsi] +[rax]
- ; gcr arg pop 0
...
@@ -26,7 +26,7 @@
;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V17 tmp12 [V17,T03] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
-; V18 tmp13 [V18,T00] ( 6, 52 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
+; V18 tmp13 [V18,T00] ( 6, 52 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
; V19 tmp14 [V19,T05] ( 2, 8 ) byref -> rdi "impAppendStmt"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -45,7 +45,7 @@
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V37 tmp32 [V37,T08] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V37 tmp32 [V37,T08] ( 3, 3 ) ref -> rdx single-def "arr expr"
; V38 tmp33 [V38,T10] ( 3, 3 ) int -> rsi "index expr"
; V39 cse0 [V39,T02] ( 4, 18.50) int -> r14 "CSE - aggressive"
; V40 cse1 [V40,T15] ( 2, 1 ) ref -> rax "CSE - aggressive"
@@ -69,7 +69,7 @@ G_M51747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=22 bbWeight=1 PerfScore 8.00
G_M51747_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je G_M51747_IG16
+ je G_M51747_IG17
mov r14d, dword ptr [rbx+0x08]
test r14d, r14d
jne SHORT G_M51747_IG05
@@ -103,60 +103,61 @@ G_M51747_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
; byrRegs -[rdi]
; gcr arg pop 0
mov r12d, eax
- mov rdi, gword ptr [r15+0x08]
- ; gcrRegs +[rdi]
+ mov rdx, gword ptr [r15+0x08]
+ ; gcrRegs +[rdx]
mov esi, r12d
and esi, dword ptr [r15+0x14]
- cmp esi, dword ptr [rdi+0x08]
- jae SHORT G_M51747_IG15
- mov rax, gword ptr [rdi+8*rsi+0x10]
+ cmp esi, dword ptr [rdx+0x08]
+ jae G_M51747_IG16
+ mov rax, gword ptr [rdx+8*rsi+0x10]
; gcrRegs +[rax]
test rax, rax
je SHORT G_M51747_IG11
- ;; size=57 bbWeight=0.50 PerfScore 8.75
+ ;; size=61 bbWeight=0.50 PerfScore 8.75
G_M51747_IG06: ; bbWeight=4, gcrefRegs=8009 {rax rbx r15}, byrefRegs=2000 {r13}, byref, isz
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rdx]
cmp dword ptr [rax+0x18], r12d
- jne SHORT G_M51747_IG10
+ jne SHORT G_M51747_IG13
;; size=6 bbWeight=4 PerfScore 16.00
G_M51747_IG07: ; bbWeight=2, gcrefRegs=8009 {rax rbx r15}, byrefRegs=2000 {r13}, byref, isz
- mov rcx, gword ptr [rax+0x08]
- ; gcrRegs +[rcx]
- cmp byte ptr [rcx], cl
- cmp rcx, rbx
- je SHORT G_M51747_IG13
- ;; size=11 bbWeight=2 PerfScore 12.50
-G_M51747_IG08: ; bbWeight=16, gcrefRegs=800B {rax rcx rbx r15}, byrefRegs=2000 {r13}, byref, isz
- cmp dword ptr [rcx+0x08], r14d
- jne SHORT G_M51747_IG10
- ;; size=6 bbWeight=16 PerfScore 64.00
-G_M51747_IG09: ; bbWeight=2, gcrefRegs=800B {rax rcx rbx r15}, byrefRegs=2000 {r13}, byref, isz
mov gword ptr [rbp-0x30], rax
; GC ptr vars +{V04}
- lea rdi, bword ptr [rcx+0x0C]
+ mov rdx, gword ptr [rax+0x08]
+ ; gcrRegs +[rdx]
+ cmp byte ptr [rdx], dl
+ cmp rdx, rbx
+ je SHORT G_M51747_IG14
+ ;; size=15 bbWeight=2 PerfScore 14.50
+G_M51747_IG08: ; bbWeight=16, gcVars=0000000000000002 {V04}, gcrefRegs=800C {rdx rbx r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ cmp dword ptr [rdx+0x08], r14d
+ jne SHORT G_M51747_IG10
+ ;; size=6 bbWeight=16 PerfScore 64.00
+G_M51747_IG09: ; bbWeight=2, gcrefRegs=800C {rdx rbx r15}, byrefRegs=2000 {r13}, byref, isz
+ lea rdi, bword ptr [rdx+0x0C]
; byrRegs +[rdi]
- mov edx, dword ptr [rcx+0x08]
+ mov edx, dword ptr [rdx+0x08]
+ ; gcrRegs -[rdx]
add edx, edx
mov rsi, r13
; byrRegs +[rsi]
call [<unknown method>]
- ; gcrRegs -[rax rcx]
; byrRegs -[rsi rdi]
; gcr arg pop 0
test eax, eax
+ jne SHORT G_M51747_IG14
+ ;; size=22 bbWeight=2 PerfScore 14.50
+G_M51747_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=2000 {r13}, byref, isz
mov rax, gword ptr [rbp-0x30]
; gcrRegs +[rax]
- jne SHORT G_M51747_IG13
- ;; size=30 bbWeight=2 PerfScore 18.50
-G_M51747_IG10: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=8009 {rax rbx r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
- ; GC ptr vars -{V04}
mov rax, gword ptr [rax+0x10]
test rax, rax
jne SHORT G_M51747_IG06
- ;; size=9 bbWeight=4 PerfScore 13.00
-G_M51747_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ;; size=13 bbWeight=4 PerfScore 17.00
+G_M51747_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
; byrRegs -[r13]
+ ; GC ptr vars -{V04}
mov rdi, r15
; gcrRegs +[rdi]
mov rsi, rbx
@@ -177,10 +178,21 @@ G_M51747_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51747_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+G_M51747_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=8009 {rax rbx r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
+ ; gcrRegs +[rbx r15]
+ ; byrRegs +[r13]
+ mov gword ptr [rbp-0x30], rax
+ ; GC ptr vars +{V04}
+ jmp SHORT G_M51747_IG10
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M51747_IG14: ; bbWeight=0.50, gcVars=0000000000000002 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx r15]
+ ; byrRegs -[r13]
+ mov rax, gword ptr [rbp-0x30]
+ ; gcrRegs +[rax]
mov rax, gword ptr [rax+0x08]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M51747_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -190,12 +202,13 @@ G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51747_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M51747_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
+ ; GC ptr vars -{V04}
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M51747_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51747_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 5
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -209,7 +222,7 @@ G_M51747_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 269, prolog size 22, PerfScore 154.75, instruction count 89, allocated bytes for code 269 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier1)
+; Total bytes of code 283, prolog size 22, PerfScore 163.25, instruction count 92, allocated bytes for code 283 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier1)
; ============================================================
Unwind Info:
@@ -13,7 +13,7 @@
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T02] ( 4, 4 ) ref -> rbx class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 3, 3 ) ref -> rbx class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V07 loc7 [V07,T06] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 5, 5 ) ref -> rax class-hnd exact single-def <<unknown class>>
@@ -21,71 +21,70 @@
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref single-def
-; V13 tmp4 [V13,T10] ( 2, 2 ) int -> rcx
+;* V13 tmp4 [V13,T09] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref single-def
-;* V16 tmp7 [V16,T29] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T11] ( 2, 2 ) int -> rcx single-def
+;* V16 tmp7 [V16,T28] ( 0, 0 ) int -> zero-ref
+;* V17 tmp8 [V17,T10] ( 0, 0 ) int -> zero-ref single-def
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref single-def
-; V19 tmp10 [V19,T12] ( 2, 2 ) int -> rdx
-; V20 tmp11 [V20,T13] ( 2, 2 ) int -> rcx single-def
+;* V19 tmp10 [V19,T11] ( 0, 0 ) int -> zero-ref
+;* V20 tmp11 [V20,T12] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref single-def
-; V22 tmp13 [V22,T14] ( 2, 2 ) int -> rax
-; V23 tmp14 [V23,T15] ( 2, 2 ) int -> rax single-def
+;* V22 tmp13 [V22,T13] ( 0, 0 ) int -> zero-ref
+;* V23 tmp14 [V23,T14] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref single-def
-;* V25 tmp16 [V25,T30] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T16] ( 2, 2 ) int -> rax single-def
+;* V25 tmp16 [V25,T29] ( 0, 0 ) int -> zero-ref
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29,T15] ( 0, 0 ) int -> zero-ref single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref single-def
-;* V32 tmp23 [V32,T31] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32,T30] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref single-def
-;* V34 tmp25 [V34,T32] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V34 tmp25 [V34,T31] ( 0, 0 ) int -> zero-ref
+;* V35 tmp26 [V35,T16] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref single-def
-;* V37 tmp28 [V37,T19] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V37 tmp28 [V37,T17] ( 0, 0 ) int -> zero-ref
+;* V38 tmp29 [V38,T18] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref single-def
-;* V40 tmp31 [V40,T33] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V40 tmp31 [V40,T32] ( 0, 0 ) int -> zero-ref
+;* V41 tmp32 [V41,T19] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref single-def
-;* V43 tmp34 [V43,T22] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T34] ( 0, 0 ) int -> zero-ref single-def
+;* V43 tmp34 [V43,T20] ( 0, 0 ) int -> zero-ref
+;* V44 tmp35 [V44,T33] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref single-def
-;* V46 tmp37 [V46,T35] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T23] ( 2, 2 ) int -> rax single-def
+;* V46 tmp37 [V46,T34] ( 0, 0 ) int -> zero-ref
+;* V47 tmp38 [V47,T21] ( 0, 0 ) int -> zero-ref single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref single-def
-;* V49 tmp40 [V49,T36] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T24] ( 2, 2 ) int -> rax single-def
+;* V49 tmp40 [V49,T35] ( 0, 0 ) int -> zero-ref
+;* V50 tmp41 [V50,T22] ( 0, 0 ) int -> zero-ref single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref single-def
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref single-def
-;* V53 tmp44 [V53,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T37] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56,T36] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref single-def
-;* V58 tmp49 [V58,T38] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp49 [V58,T37] ( 0, 0 ) int -> zero-ref
+;* V59 tmp50 [V59,T23] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref single-def
-;* V61 tmp52 [V61,T27] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T28] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp52 [V61,T24] ( 0, 0 ) int -> zero-ref
+;* V62 tmp53 [V62,T25] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref single-def
-;* V64 tmp55 [V64,T39] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T40] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp55 [V64,T38] ( 0, 0 ) int -> zero-ref
+;* V65 tmp56 [V65,T39] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref single-def
-;* V67 tmp58 [V67,T41] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T42] ( 0, 0 ) int -> zero-ref single-def
+;* V67 tmp58 [V67,T40] ( 0, 0 ) int -> zero-ref
+; V68 tmp59 [V68,T26] ( 2, 2 ) int -> rcx single-def
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref single-def
-;* V70 tmp61 [V70,T43] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T03] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V72 cse1 [V72,T07] ( 2, 2 ) int -> rax "CSE - moderate"
+; V70 tmp61 [V70,T27] ( 2, 2 ) int -> rax
+;* V71 cse0 [V71,T03] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V72 cse1 [V72,T07] ( 0, 0 ) int -> zero-ref "CSE - moderate"
;* V73 cse2 [V73,T08] ( 0, 0 ) int -> zero-ref "CSE - conservative"
-; V74 cse3 [V74,T01] ( 2, 2 ) int -> rdx "CSE - moderate"
-; V75 cse4 [V75,T04] ( 2, 2 ) int -> rcx "CSE - conservative"
+; V74 cse3 [V74,T01] ( 2, 2 ) int -> rcx "CSE - moderate"
+;* V75 cse4 [V75,T04] ( 0, 0 ) int -> zero-ref "CSE - conservative"
; V76 cse5 [V76,T05] ( 2, 2 ) int -> rax "CSE - conservative"
-; V77 cse6 [V77,T09] ( 2, 2 ) int -> rax "CSE - moderate"
;
; Lcl frame size = 8
@@ -117,18 +116,11 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov byte ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
- mov ecx, dword ptr [rbx+0x08]
- add ecx, 17
- mov edx, dword ptr [rax+0x14]
- add ecx, edx
+ mov ecx, dword ptr [rax+0x14]
mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
add eax, ecx
- add eax, 3
- add eax, -5
- add eax, 3
- add eax, -5
- ;; size=154 bbWeight=1 PerfScore 21.50
+ ;; size=134 bbWeight=1 PerfScore 18.00
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
@@ -136,7 +128,7 @@ G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 169, prolog size 8, PerfScore 27.25, instruction count 37, allocated bytes for code 169 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 149, prolog size 8, PerfScore 23.75, instruction count 30, allocated bytes for code 149 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -10,78 +10,77 @@
;
;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc2 [V02,T03] ( 4, 4 ) ref -> rbx class-hnd exact single-def <testout1>
+; V02 loc2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd exact single-def <testout1>
; V03 loc3 [V03,T01] ( 5, 5 ) ref -> rax class-hnd exact single-def <<unknown class>>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
; V06 tmp2 [V06,T00] ( 3, 6 ) ref -> rax class-hnd exact single-def "dup spill" <<unknown class>>
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref single-def
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref single-def
-; V09 tmp5 [V09,T10] ( 2, 2 ) int -> rcx
+;* V09 tmp5 [V09,T09] ( 0, 0 ) int -> zero-ref
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref single-def
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref single-def
-;* V12 tmp8 [V12,T29] ( 0, 0 ) int -> zero-ref
-; V13 tmp9 [V13,T11] ( 2, 2 ) int -> rcx single-def
+;* V12 tmp8 [V12,T28] ( 0, 0 ) int -> zero-ref
+;* V13 tmp9 [V13,T10] ( 0, 0 ) int -> zero-ref single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref single-def
-; V15 tmp11 [V15,T12] ( 2, 2 ) int -> rdx
-; V16 tmp12 [V16,T13] ( 2, 2 ) int -> rcx single-def
+;* V15 tmp11 [V15,T11] ( 0, 0 ) int -> zero-ref
+;* V16 tmp12 [V16,T12] ( 0, 0 ) int -> zero-ref single-def
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref single-def
-; V18 tmp14 [V18,T14] ( 2, 2 ) int -> rax
-; V19 tmp15 [V19,T15] ( 2, 2 ) int -> rax single-def
+;* V18 tmp14 [V18,T13] ( 0, 0 ) int -> zero-ref
+;* V19 tmp15 [V19,T14] ( 0, 0 ) int -> zero-ref single-def
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref single-def
-;* V21 tmp17 [V21,T30] ( 0, 0 ) int -> zero-ref
-; V22 tmp18 [V22,T16] ( 2, 2 ) int -> rax single-def
+;* V21 tmp17 [V21,T29] ( 0, 0 ) int -> zero-ref
+;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref
-;* V25 tmp21 [V25,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V25 tmp21 [V25,T15] ( 0, 0 ) int -> zero-ref single-def
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref single-def
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref single-def
-;* V28 tmp24 [V28,T31] ( 0, 0 ) int -> zero-ref single-def
+;* V28 tmp24 [V28,T30] ( 0, 0 ) int -> zero-ref single-def
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref single-def
-;* V30 tmp26 [V30,T32] ( 0, 0 ) int -> zero-ref
-;* V31 tmp27 [V31,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V30 tmp26 [V30,T31] ( 0, 0 ) int -> zero-ref
+;* V31 tmp27 [V31,T16] ( 0, 0 ) int -> zero-ref single-def
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref single-def
-;* V33 tmp29 [V33,T19] ( 0, 0 ) int -> zero-ref
-;* V34 tmp30 [V34,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V33 tmp29 [V33,T17] ( 0, 0 ) int -> zero-ref
+;* V34 tmp30 [V34,T18] ( 0, 0 ) int -> zero-ref single-def
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref single-def
-;* V36 tmp32 [V36,T33] ( 0, 0 ) int -> zero-ref
-;* V37 tmp33 [V37,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V36 tmp32 [V36,T32] ( 0, 0 ) int -> zero-ref
+;* V37 tmp33 [V37,T19] ( 0, 0 ) int -> zero-ref single-def
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref single-def
-;* V39 tmp35 [V39,T22] ( 0, 0 ) int -> zero-ref
-;* V40 tmp36 [V40,T34] ( 0, 0 ) int -> zero-ref single-def
+;* V39 tmp35 [V39,T20] ( 0, 0 ) int -> zero-ref
+;* V40 tmp36 [V40,T33] ( 0, 0 ) int -> zero-ref single-def
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref single-def
-;* V42 tmp38 [V42,T35] ( 0, 0 ) int -> zero-ref
-; V43 tmp39 [V43,T23] ( 2, 2 ) int -> rax single-def
+;* V42 tmp38 [V42,T34] ( 0, 0 ) int -> zero-ref
+;* V43 tmp39 [V43,T21] ( 0, 0 ) int -> zero-ref single-def
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref single-def
-;* V45 tmp41 [V45,T36] ( 0, 0 ) int -> zero-ref
-; V46 tmp42 [V46,T24] ( 2, 2 ) int -> rax single-def
+;* V45 tmp41 [V45,T35] ( 0, 0 ) int -> zero-ref
+;* V46 tmp42 [V46,T22] ( 0, 0 ) int -> zero-ref single-def
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref single-def
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref single-def
-;* V49 tmp45 [V49,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V49 tmp45 [V49 ] ( 0, 0 ) int -> zero-ref
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp48 [V52,T37] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp48 [V52,T36] ( 0, 0 ) int -> zero-ref single-def
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref single-def
-;* V54 tmp50 [V54,T38] ( 0, 0 ) int -> zero-ref
-;* V55 tmp51 [V55,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V54 tmp50 [V54,T37] ( 0, 0 ) int -> zero-ref
+;* V55 tmp51 [V55,T23] ( 0, 0 ) int -> zero-ref single-def
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref single-def
-;* V57 tmp53 [V57,T27] ( 0, 0 ) int -> zero-ref
-;* V58 tmp54 [V58,T28] ( 0, 0 ) int -> zero-ref single-def
+;* V57 tmp53 [V57,T24] ( 0, 0 ) int -> zero-ref
+;* V58 tmp54 [V58,T25] ( 0, 0 ) int -> zero-ref single-def
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref single-def
-;* V60 tmp56 [V60,T39] ( 0, 0 ) int -> zero-ref
-;* V61 tmp57 [V61,T40] ( 0, 0 ) int -> zero-ref single-def
+;* V60 tmp56 [V60,T38] ( 0, 0 ) int -> zero-ref
+;* V61 tmp57 [V61,T39] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref single-def
-;* V63 tmp59 [V63,T41] ( 0, 0 ) int -> zero-ref
-;* V64 tmp60 [V64,T42] ( 0, 0 ) int -> zero-ref single-def
+;* V63 tmp59 [V63,T40] ( 0, 0 ) int -> zero-ref
+; V64 tmp60 [V64,T26] ( 2, 2 ) int -> rcx single-def
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref single-def
-;* V66 tmp62 [V66,T43] ( 0, 0 ) int -> zero-ref
-; V67 cse0 [V67,T04] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V68 cse1 [V68,T07] ( 2, 2 ) int -> rax "CSE - moderate"
+; V66 tmp62 [V66,T27] ( 2, 2 ) int -> rax
+;* V67 cse0 [V67,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V68 cse1 [V68,T07] ( 0, 0 ) int -> zero-ref "CSE - moderate"
;* V69 cse2 [V69,T08] ( 0, 0 ) int -> zero-ref "CSE - conservative"
-; V70 cse3 [V70,T02] ( 2, 2 ) int -> rdx "CSE - moderate"
-; V71 cse4 [V71,T05] ( 2, 2 ) int -> rcx "CSE - conservative"
+; V70 cse3 [V70,T02] ( 2, 2 ) int -> rcx "CSE - moderate"
+;* V71 cse4 [V71,T05] ( 0, 0 ) int -> zero-ref "CSE - conservative"
; V72 cse5 [V72,T06] ( 2, 2 ) int -> rax "CSE - conservative"
-; V73 cse6 [V73,T09] ( 2, 2 ) int -> rax "CSE - moderate"
;
; Lcl frame size = 8
@@ -113,18 +112,11 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov byte ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
- mov ecx, dword ptr [rbx+0x08]
- add ecx, 17
- mov edx, dword ptr [rax+0x14]
- add ecx, edx
+ mov ecx, dword ptr [rax+0x14]
mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
add eax, ecx
- add eax, 3
- add eax, -5
- add eax, 3
- add eax, -5
- ;; size=154 bbWeight=1 PerfScore 21.50
+ ;; size=134 bbWeight=1 PerfScore 18.00
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
@@ -132,7 +124,7 @@ G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 169, prolog size 8, PerfScore 27.25, instruction count 37, allocated bytes for code 169 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 149, prolog size 8, PerfScore 23.75, instruction count 30, allocated bytes for code 149 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -14,7 +14,7 @@
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T08] ( 2, 4 ) ref -> rax class-hnd single-def "impAppendStmt" <int[]>
-; V05 tmp2 [V05,T11] ( 2, 2 ) int -> rbx "Inline return value spill temp"
+; V05 tmp2 [V05,T11] ( 2, 2 ) int -> r11 "Inline return value spill temp"
; V06 tmp3 [V06,T07] ( 4, 5.15) byref -> rax single-def "Inline stloc first use temp"
; V07 tmp4 [V07,T01] ( 3, 7.14) long -> rcx "Inlining Arg"
; V08 tmp5 [V08,T06] ( 4, 5.72) int -> rdx "Inline stloc first use temp"
@@ -22,18 +22,16 @@
; V10 tmp7 [V10,T03] ( 5, 6.70) byref -> r9 "Inline stloc first use temp"
; V11 tmp8 [V11,T04] ( 5, 6.29) int -> r10 "Inline stloc first use temp"
; V12 tmp9 [V12,T09] ( 2, 3.14) long -> r11 "Inline stloc first use temp"
-; V13 tmp10 [V13,T10] ( 3, 2.98) long -> rbx "Inline stloc first use temp"
+; V13 tmp10 [V13,T10] ( 3, 2.98) long -> r11 "Inline stloc first use temp"
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp12 [V15 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M33150_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M33150_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
@@ -64,9 +62,9 @@ G_M33150_IG03: ; bbWeight=1.57, gcrefRegs=0040 {rsi}, byrefRegs=0001 {rax
jne SHORT G_M33150_IG07
;; size=31 bbWeight=1.57 PerfScore 11.40
G_M33150_IG04: ; bbWeight=0.99, gcrefRegs=0040 {rsi}, byrefRegs=0201 {rax r9}, byref, isz
- mov rbx, rdi
- xor rbx, qword ptr [r9+0x10]
- cmp rbx, 1
+ mov r11, rdi
+ xor r11, qword ptr [r9+0x10]
+ cmp r11, 1
ja SHORT G_M33150_IG07
;; size=13 bbWeight=0.99 PerfScore 4.46
G_M33150_IG05: ; bbWeight=0.99, gcrefRegs=0040 {rsi}, byrefRegs=0200 {r9}, byref, isz
@@ -76,10 +74,10 @@ G_M33150_IG05: ; bbWeight=0.99, gcrefRegs=0040 {rsi}, byrefRegs=0200 {r9}
;; size=5 bbWeight=0.99 PerfScore 3.97
G_M33150_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r9]
- cmp ebx, 1
+ cmp r11d, 1
jne SHORT G_M33150_IG09
jmp SHORT G_M33150_IG11
- ;; size=7 bbWeight=1 PerfScore 3.25
+ ;; size=8 bbWeight=1 PerfScore 3.25
G_M33150_IG07: ; bbWeight=0.58, gcrefRegs=0040 {rsi}, byrefRegs=0001 {rax}, byref, isz
; byrRegs +[rax]
test r10d, r10d
@@ -100,24 +98,20 @@ G_M33150_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
nop
;; size=6 bbWeight=1 PerfScore 1.25
G_M33150_IG10: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M33150_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rsi]
mov rax, rsi
; gcrRegs +[rax]
;; size=3 bbWeight=0 PerfScore 0.00
G_M33150_IG12: ; bbWeight=0, epilog, nogc, extend
- add rsp, 8
- pop rbx
pop rbp
ret
- ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 161, prolog size 8, PerfScore 48.53, instruction count 51, allocated bytes for code 161 (MethodHash=c42d7e81) for method System.Runtime.CompilerServices.CastHelpers:ChkCast_Helper(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 148, prolog size 4, PerfScore 45.53, instruction count 45, allocated bytes for code 148 (MethodHash=c42d7e81) for method System.Runtime.CompilerServices.CastHelpers:ChkCast_Helper(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -125,11 +119,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -9,10 +9,10 @@
; 4 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 5 ) byref -> rbx this single-def
+; V00 this [V00,T01] ( 9, 5 ) byref -> rbx this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 6 ) int -> rdi "Span.get_Item index"
-; V03 tmp2 [V03,T02] ( 3, 6 ) byref -> rax "Span.get_Item ptrToSpan"
+; V02 tmp1 [V02,T03] ( 3, 6 ) int -> r15 "Span.get_Item index"
+; V03 tmp2 [V03,T02] ( 3, 6 ) byref -> rdi "Span.get_Item ptrToSpan"
; V04 tmp3 [V04,T05] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
; V05 tmp4 [V05,T00] ( 4, 8 ) ushort -> rdi "Inlining Arg"
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -34,60 +34,66 @@
;* V22 tmp21 [V22 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V23 tmp22 [V23 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V25 cse0 [V25,T04] ( 3, 3 ) int -> rdi "CSE - aggressive"
+; V25 cse0 [V25,T04] ( 5, 3 ) int -> r15 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M7781_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
+ push r15
push rbx
- push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
; byrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M7781_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov edi, dword ptr [rbx+0x20]
- cmp edi, dword ptr [rbx+0x38]
- jge SHORT G_M7781_IG05
- lea rax, bword ptr [rbx+0x30]
- ; byrRegs +[rax]
- cmp edi, dword ptr [rax+0x08]
- jae SHORT G_M7781_IG06
- mov rax, bword ptr [rax]
- movzx rdi, word ptr [rax+2*rdi]
+ mov r15d, dword ptr [rbx+0x20]
+ cmp r15d, dword ptr [rbx+0x38]
+ jge SHORT G_M7781_IG06
+ ;; size=10 bbWeight=1 PerfScore 6.00
+G_M7781_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ lea rdi, bword ptr [rbx+0x30]
+ ; byrRegs +[rdi]
+ cmp r15d, dword ptr [rdi+0x08]
+ jae SHORT G_M7781_IG07
+ mov rdi, bword ptr [rdi]
+ mov eax, r15d
+ movzx rdi, word ptr [rdi+2*rax]
+ ; byrRegs -[rdi]
cmp edi, 256
jb SHORT G_M7781_IG04
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; byrRegs -[rax]
; gcr arg pop 0
test eax, eax
- je SHORT G_M7781_IG05
- ;; size=42 bbWeight=1 PerfScore 20.00
-G_M7781_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- inc dword ptr [rbx+0x20]
- jmp SHORT G_M7781_IG02
- ;; size=5 bbWeight=0 PerfScore 0.00
+ jne SHORT G_M7781_IG05
+ jmp SHORT G_M7781_IG06
+ ;; size=40 bbWeight=1 PerfScore 16.25
G_M7781_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov edi, edi
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
- jne SHORT G_M7781_IG03
+ je SHORT G_M7781_IG06
;; size=18 bbWeight=1 PerfScore 4.50
-G_M7781_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M7781_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ inc dword ptr [rbx+0x20]
+ mov r15d, dword ptr [rbx+0x20]
+ cmp r15d, dword ptr [rbx+0x38]
+ jl SHORT G_M7781_IG03
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M7781_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbx]
- add rsp, 8
pop rbx
+ pop r15
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M7781_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=1 PerfScore 2.50
+G_M7781_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 89, prolog size 11, PerfScore 30.50, instruction count 30, allocated bytes for code 89 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 104, prolog size 12, PerfScore 33.00, instruction count 34, allocated bytes for code 104 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
; ============================================================
Unwind Info:
@@ -95,11 +101,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
+ SizeOfProlog : 0x04
CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -9,10 +9,10 @@
; 4 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 5 ) byref -> rbx this single-def
+; V00 this [V00,T01] ( 9, 5 ) byref -> rbx this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 6 ) int -> rdi "Span.get_Item index"
-; V03 tmp2 [V03,T02] ( 3, 6 ) byref -> rax "Span.get_Item ptrToSpan"
+; V02 tmp1 [V02,T03] ( 3, 6 ) int -> r15 "Span.get_Item index"
+; V03 tmp2 [V03,T02] ( 3, 6 ) byref -> rdi "Span.get_Item ptrToSpan"
; V04 tmp3 [V04,T05] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
; V05 tmp4 [V05,T00] ( 4, 8 ) ushort -> rdi "Inlining Arg"
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -34,60 +34,66 @@
;* V22 tmp21 [V22 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V23 tmp22 [V23 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V25 cse0 [V25,T04] ( 3, 3 ) int -> rdi "CSE - aggressive"
+; V25 cse0 [V25,T04] ( 5, 3 ) int -> r15 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M7781_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
+ push r15
push rbx
- push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
; byrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M7781_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov edi, dword ptr [rbx+0x20]
- cmp edi, dword ptr [rbx+0x38]
- jge SHORT G_M7781_IG05
- lea rax, bword ptr [rbx+0x30]
- ; byrRegs +[rax]
- cmp edi, dword ptr [rax+0x08]
- jae SHORT G_M7781_IG06
- mov rax, bword ptr [rax]
- movzx rdi, word ptr [rax+2*rdi]
+ mov r15d, dword ptr [rbx+0x20]
+ cmp r15d, dword ptr [rbx+0x38]
+ jge SHORT G_M7781_IG06
+ ;; size=10 bbWeight=1 PerfScore 6.00
+G_M7781_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ lea rdi, bword ptr [rbx+0x30]
+ ; byrRegs +[rdi]
+ cmp r15d, dword ptr [rdi+0x08]
+ jae SHORT G_M7781_IG07
+ mov rdi, bword ptr [rdi]
+ mov eax, r15d
+ movzx rdi, word ptr [rdi+2*rax]
+ ; byrRegs -[rdi]
cmp edi, 256
jb SHORT G_M7781_IG04
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; byrRegs -[rax]
; gcr arg pop 0
test eax, eax
- je SHORT G_M7781_IG05
- ;; size=42 bbWeight=1 PerfScore 20.00
-G_M7781_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- inc dword ptr [rbx+0x20]
- jmp SHORT G_M7781_IG02
- ;; size=5 bbWeight=0 PerfScore 0.00
+ jne SHORT G_M7781_IG05
+ jmp SHORT G_M7781_IG06
+ ;; size=40 bbWeight=1 PerfScore 16.25
G_M7781_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov edi, edi
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rdi+rax], 128
- jne SHORT G_M7781_IG03
+ je SHORT G_M7781_IG06
;; size=18 bbWeight=1 PerfScore 4.50
-G_M7781_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M7781_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ inc dword ptr [rbx+0x20]
+ mov r15d, dword ptr [rbx+0x20]
+ cmp r15d, dword ptr [rbx+0x38]
+ jl SHORT G_M7781_IG03
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M7781_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbx]
- add rsp, 8
pop rbx
+ pop r15
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M7781_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=5 bbWeight=1 PerfScore 2.50
+G_M7781_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 89, prolog size 11, PerfScore 30.50, instruction count 30, allocated bytes for code 89 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 104, prolog size 12, PerfScore 33.00, instruction count 34, allocated bytes for code 104 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
; ============================================================
Unwind Info:
@@ -95,11 +101,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
+ SizeOfProlog : 0x04
CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -8,83 +8,82 @@
; 0 inlinees with PGO data; 25 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> rsi
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 3, 3 ) ref -> rbx class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> rbx class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T05] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 5, 5 ) ref -> rax class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T06] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 5, 5 ) ref -> rax class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 tmp5 [V14,T09] ( 0, 0 ) int -> zero-ref single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-;* V17 tmp8 [V17,T10] ( 0, 0 ) int -> zero-ref single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-;* V20 tmp11 [V20,T11] ( 0, 0 ) int -> zero-ref single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-;* V23 tmp14 [V23,T12] ( 0, 0 ) int -> zero-ref single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-;* V32 tmp23 [V32,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp38 [V47,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp41 [V50,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-; V68 tmp59 [V68,T21] ( 2, 2 ) int -> rcx single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-;* V71 cse0 [V71,T06] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-;* V72 cse1 [V72,T02] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T03] ( 2, 2 ) int -> rcx "CSE - aggressive"
-;* V74 cse3 [V74,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V75 cse4 [V75,T07] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V76 cse5 [V76,T08] ( 2, 2 ) long -> rcx "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> rsi "CSE - aggressive"
+; V72 cse1 [V72,T03] ( 4, 4 ) int -> rdx "CSE - aggressive"
+; V73 cse2 [V73,T04] ( 4, 4 ) int -> rdi "CSE - aggressive"
+; V74 cse3 [V74,T05] ( 4, 4 ) int -> rax "CSE - aggressive"
+; V75 cse4 [V75,T07] ( 3, 3 ) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 8
@@ -117,11 +116,21 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov byte ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
- mov ecx, dword ptr [rax+0x14]
+ mov edx, dword ptr [rbx+0x08]
+ mov edi, dword ptr [rax+0x14]
+ lea esi, [rdx+rdi]
mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
- add eax, ecx
- ;; size=140 bbWeight=1 PerfScore 18.25
+ lea esi, [rsi+rax+0x11]
+ add esi, dword ptr [rcx]
+ add esi, edx
+ lea esi, [rsi+rdi+0x0A]
+ add esi, eax
+ add edx, esi
+ add edx, edi
+ lea esi, [rdx+rax+0x11]
+ mov eax, esi
+ ;; size=168 bbWeight=1 PerfScore 27.75
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
pop rbx
@@ -129,7 +138,7 @@ G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 155, prolog size 8, PerfScore 24.00, instruction count 31, allocated bytes for code 155 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 183, prolog size 8, PerfScore 33.50, instruction count 41, allocated bytes for code 183 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -48,19 +48,15 @@ G_M60484_IG02: ; bbWeight=1, gcVars=0000000000000200 {V05}, gcrefRegs=D00
mov r8d, dword ptr [r15+0x08]
mov dword ptr [rbp-0x30], r8d
cmp r8d, ecx
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
- jle SHORT G_M60484_IG08
+ jle SHORT G_M60484_IG05
test rbx, rbx
- je SHORT G_M60484_IG07
+ je SHORT G_M60484_IG06
test ecx, ecx
jl SHORT G_M60484_IG06
cmp dword ptr [rbx+0x08], r8d
- mov gword ptr [rbp-0x38], rax
- jl SHORT G_M60484_IG05
- ;; size=40 bbWeight=1 PerfScore 13.25
+ jl SHORT G_M60484_IG04
+ ;; size=32 bbWeight=1 PerfScore 11.25
G_M60484_IG03: ; bbWeight=3.96, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
mov dword ptr [rbp-0x2C], ecx
mov edx, ecx
mov rsi, gword ptr [r15+8*rdx+0x10]
@@ -73,52 +69,31 @@ G_M60484_IG03: ; bbWeight=3.96, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
call [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
; gcrRegs -[rdx rsi rdi]
test eax, eax
- jne G_M60484_IG14
+ jne SHORT G_M60484_IG10
mov ecx, dword ptr [rbp-0x2C]
inc ecx
mov eax, dword ptr [rbp-0x30]
cmp eax, ecx
jg SHORT G_M60484_IG03
- ;; size=46 bbWeight=3.96 PerfScore 64.35
-G_M60484_IG04: ; bbWeight=1, gcrefRegs=5000 {r12 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx r15]
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
- jmp SHORT G_M60484_IG11
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M60484_IG05: ; bbWeight=0.50, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rbx r15]
+ jmp SHORT G_M60484_IG07
+ ;; size=44 bbWeight=3.96 PerfScore 72.27
+G_M60484_IG04: ; bbWeight=0.50, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rbp-0x30]
- jmp SHORT G_M60484_IG09
+ jmp SHORT G_M60484_IG06
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M60484_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D009 {rax rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax]
- ; GC ptr vars -{V05}
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V05}
- jmp SHORT G_M60484_IG09
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M60484_IG07: ; bbWeight=0.50, gcrefRegs=D009 {rax rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; GC ptr vars -{V05}
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V05}
- jmp SHORT G_M60484_IG09
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M60484_IG08: ; bbWeight=0.50, gcrefRegs=5001 {rax r12 r14}, byrefRegs=0000 {}, byref, isz
+G_M60484_IG05: ; bbWeight=0.50, gcrefRegs=5000 {r12 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx r15]
- ; GC ptr vars -{V05}
- jmp SHORT G_M60484_IG11
+ jmp SHORT G_M60484_IG07
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M60484_IG09: ; bbWeight=0.04, gcVars=0000000000000200 {V05}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[rbx r15]
- ; GC ptr vars +{V05 V09}
+G_M60484_IG06: ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx r15]
cmp ecx, r8d
- jae SHORT G_M60484_IG16
+ jae SHORT G_M60484_IG12
mov esi, ecx
mov rsi, gword ptr [r15+8*rsi+0x10]
; gcrRegs +[rsi]
cmp ecx, dword ptr [rbx+0x08]
- jae SHORT G_M60484_IG16
+ jae SHORT G_M60484_IG12
mov dword ptr [rbp-0x2C], ecx
mov edx, ecx
mov rdx, gword ptr [rbx+8*rdx+0x10]
@@ -129,32 +104,28 @@ G_M60484_IG09: ; bbWeight=0.04, gcVars=0000000000000200 {V05}, gcrefRegs=
call [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
; gcrRegs -[rdx rsi rdi]
test eax, eax
- jne SHORT G_M60484_IG14
+ jne SHORT G_M60484_IG10
mov eax, dword ptr [rbp-0x2C]
inc eax
cmp dword ptr [rbp-0x30], eax
mov ecx, eax
- jg SHORT G_M60484_IG13
+ jg SHORT G_M60484_IG09
;; size=54 bbWeight=0.04 PerfScore 0.91
-G_M60484_IG10: ; bbWeight=0.02, gcrefRegs=5000 {r12 r14}, byrefRegs=0000 {}, byref
+G_M60484_IG07: ; bbWeight=0.50, gcrefRegs=5000 {r12 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r15]
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
- ;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M60484_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=5001 {rax r12 r14}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V05 V09}
mov rdi, r12
; gcrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]
- mov rdx, rax
+ mov rdx, gword ptr [rbp-0x38]
; gcrRegs +[rdx]
mov ecx, r13d
+ ; GC ptr vars -{V05}
call [System.Runtime.Serialization.XmlObjectSerializerReadContext:HandleMemberNotFound(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.ExtensionDataObject,int):this]
- ; gcrRegs -[rax rdx rsi rdi r12 r14]
+ ; gcrRegs -[rdx rsi rdi r12 r14]
mov eax, dword ptr [rbp-0x30]
- ;; size=21 bbWeight=0.50 PerfScore 2.50
-G_M60484_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=22 bbWeight=0.50 PerfScore 2.88
+G_M60484_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -164,18 +135,18 @@ G_M60484_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M60484_IG13: ; bbWeight=0.02, gcVars=0000000000000200 {V05}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60484_IG09: ; bbWeight=0.02, gcVars=0000000000000200 {V05}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r12 r14-r15]
; GC ptr vars +{V05 V09}
mov r8d, dword ptr [rbp-0x30]
- jmp SHORT G_M60484_IG09
+ jmp SHORT G_M60484_IG06
;; size=6 bbWeight=0.02 PerfScore 0.06
-G_M60484_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60484_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx r12 r14-r15]
; GC ptr vars -{V05 V09}
mov eax, dword ptr [rbp-0x2C]
;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M60484_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M60484_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -185,12 +156,12 @@ G_M60484_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M60484_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M60484_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 275, prolog size 19, PerfScore 103.34, instruction count 97, allocated bytes for code 275 (MethodHash=625f13bb) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
+; Total bytes of code 244, prolog size 19, PerfScore 103.62, instruction count 89, allocated bytes for code 244 (MethodHash=625f13bb) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -48,19 +48,15 @@ G_M11155_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=C00
mov r8d, dword ptr [r15+0x08]
mov dword ptr [rbp-0x30], r8d
cmp r8d, ecx
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
- jle SHORT G_M11155_IG08
+ jle SHORT G_M11155_IG05
test rbx, rbx
- je SHORT G_M11155_IG07
+ je SHORT G_M11155_IG06
test ecx, ecx
jl SHORT G_M11155_IG06
cmp dword ptr [rbx+0x08], r8d
- mov gword ptr [rbp-0x38], rax
- jl SHORT G_M11155_IG05
- ;; size=40 bbWeight=1 PerfScore 13.25
+ jl SHORT G_M11155_IG04
+ ;; size=32 bbWeight=1 PerfScore 11.25
G_M11155_IG03: ; bbWeight=3.96, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
mov dword ptr [rbp-0x2C], ecx
mov edx, ecx
mov rsi, gword ptr [r15+8*rdx+0x10]
@@ -73,52 +69,31 @@ G_M11155_IG03: ; bbWeight=3.96, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
call [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
; gcrRegs -[rdx rsi rdi]
test eax, eax
- jne G_M11155_IG14
+ jne G_M11155_IG10
mov ecx, dword ptr [rbp-0x2C]
inc ecx
mov eax, dword ptr [rbp-0x30]
cmp eax, ecx
jg SHORT G_M11155_IG03
- ;; size=46 bbWeight=3.96 PerfScore 64.35
-G_M11155_IG04: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx r15]
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
- jmp SHORT G_M11155_IG11
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M11155_IG05: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rbx r15]
+ jmp SHORT G_M11155_IG07
+ ;; size=48 bbWeight=3.96 PerfScore 72.27
+G_M11155_IG04: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [rbp-0x30]
- jmp SHORT G_M11155_IG09
+ jmp SHORT G_M11155_IG06
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M11155_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax]
- ; GC ptr vars -{V00}
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V00}
- jmp SHORT G_M11155_IG09
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M11155_IG07: ; bbWeight=0.50, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- ; GC ptr vars -{V00}
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V00}
- jmp SHORT G_M11155_IG09
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M11155_IG08: ; bbWeight=0.50, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, byref, isz
+G_M11155_IG05: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx r15]
- ; GC ptr vars -{V00}
- jmp SHORT G_M11155_IG11
+ jmp SHORT G_M11155_IG07
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M11155_IG09: ; bbWeight=0.04, gcVars=0000000000000200 {V00}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[rbx r15]
- ; GC ptr vars +{V00 V09}
+G_M11155_IG06: ; bbWeight=0.04, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx r15]
cmp ecx, r8d
- jae G_M11155_IG17
+ jae G_M11155_IG13
mov esi, ecx
mov rsi, gword ptr [r15+8*rsi+0x10]
; gcrRegs +[rsi]
cmp ecx, dword ptr [rbx+0x08]
- jae G_M11155_IG17
+ jae G_M11155_IG13
mov dword ptr [rbp-0x2C], ecx
mov edx, ecx
mov rdx, gword ptr [rbx+8*rdx+0x10]
@@ -129,31 +104,61 @@ G_M11155_IG09: ; bbWeight=0.04, gcVars=0000000000000200 {V00}, gcrefRegs=
call [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
; gcrRegs -[rdx rsi rdi]
test eax, eax
- jne SHORT G_M11155_IG14
+ jne SHORT G_M11155_IG10
mov eax, dword ptr [rbp-0x2C]
inc eax
cmp dword ptr [rbp-0x30], eax
mov ecx, eax
- jg SHORT G_M11155_IG13
+ jg SHORT G_M11155_IG09
;; size=62 bbWeight=0.04 PerfScore 0.91
-G_M11155_IG10: ; bbWeight=0.02, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M11155_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r15]
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
- ;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M11155_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V00 V09}
- mov rdi, rax
+ mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
mov rsi, r14
; gcrRegs +[rsi]
mov rdx, gword ptr [rbp+0x10]
; gcrRegs +[rdx]
mov ecx, r13d
+ ; GC ptr vars -{V00}
call [System.Runtime.Serialization.XmlObjectSerializerReadContext:HandleMemberNotFound(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.ExtensionDataObject,int):this]
- ; gcrRegs -[rax rdx rsi rdi r14]
+ ; gcrRegs -[rdx rsi rdi r14]
mov eax, dword ptr [rbp-0x30]
- ;; size=22 bbWeight=0.50 PerfScore 2.88
+ ;; size=23 bbWeight=0.50 PerfScore 3.25
+G_M11155_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 24
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M11155_IG09: ; bbWeight=0.02, gcVars=0000000000000200 {V00}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx r14-r15]
+ ; GC ptr vars +{V00 V09}
+ mov r8d, dword ptr [rbp-0x30]
+ jmp SHORT G_M11155_IG06
+ ;; size=6 bbWeight=0.02 PerfScore 0.06
+G_M11155_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rbx]
+ ; GC ptr vars -{V00 V09}
+ mov ebx, dword ptr [rbp-0x2C]
+ cmp r12d, ebx
+ jge SHORT G_M11155_IG11
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ mov esi, r13d
+ mov edx, r12d
+ mov rcx, r15
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdi r14-r15]
+ ;; size=26 bbWeight=0.50 PerfScore 3.12
+G_M11155_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, ebx
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11155_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
@@ -164,46 +169,12 @@ G_M11155_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M11155_IG13: ; bbWeight=0.02, gcVars=0000000000000200 {V00}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx r14-r15]
- ; GC ptr vars +{V00 V09}
- mov r8d, dword ptr [rbp-0x30]
- jmp SHORT G_M11155_IG09
- ;; size=6 bbWeight=0.02 PerfScore 0.06
-G_M11155_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rbx]
- ; GC ptr vars -{V00 V09}
- mov ebx, dword ptr [rbp-0x2C]
- cmp r12d, ebx
- jge SHORT G_M11155_IG15
- mov rdi, r14
- ; gcrRegs +[rdi]
- mov esi, r13d
- mov edx, r12d
- mov rcx, r15
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdi r14-r15]
- ;; size=26 bbWeight=0.50 PerfScore 3.12
-G_M11155_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, ebx
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M11155_IG16: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 24
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M11155_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M11155_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 309, prolog size 19, PerfScore 106.47, instruction count 105, allocated bytes for code 309 (MethodHash=f103d46c) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
+; Total bytes of code 282, prolog size 19, PerfScore 106.74, instruction count 97, allocated bytes for code 282 (MethodHash=f103d46c) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -36,30 +36,30 @@ G_M10594_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rax, rsi
; gcrRegs +[rax]
;; size=7 bbWeight=1 PerfScore 1.50
-G_M10594_IG02: ; bbWeight=1, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref
+G_M10594_IG02: ; bbWeight=1, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx rdi]
test rax, rax
- je G_M10594_IG11
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M10594_IG03: ; bbWeight=0.50, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref
+ je SHORT G_M10594_IG10
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M10594_IG03: ; bbWeight=0.50, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rax+0x08], 0
- je G_M10594_IG11
- ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M10594_IG04: ; bbWeight=1, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref
+ je SHORT G_M10594_IG10
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M10594_IG04: ; bbWeight=1, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
test rdx, rdx
- je G_M10594_IG12
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M10594_IG05: ; bbWeight=0.50, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref
+ je SHORT G_M10594_IG11
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M10594_IG05: ; bbWeight=0.50, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rdx+0x08], 0
- je G_M10594_IG12
- ;; size=10 bbWeight=0.50 PerfScore 2.00
+ je SHORT G_M10594_IG11
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
G_M10594_IG06: ; bbWeight=1, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
test rcx, rcx
- je SHORT G_M10594_IG10
+ je SHORT G_M10594_IG12
;; size=5 bbWeight=1 PerfScore 1.25
G_M10594_IG07: ; bbWeight=0.50, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rcx+0x08], 0
- je SHORT G_M10594_IG10
+ je SHORT G_M10594_IG12
;; size=6 bbWeight=0.50 PerfScore 2.00
G_M10594_IG08: ; bbWeight=1, gcrefRegs=0087 {rax rcx rdx rdi}, byrefRegs=0000 {}, byref, nogc
mov rsi, gword ptr [rbp+0x10]
@@ -89,20 +89,8 @@ G_M10594_IG09: ; bbWeight=1, epilog, nogc, extend
pop rbp
tail.jmp [r11]<unknown method>
;; size=4 bbWeight=1 PerfScore 2.50
-G_M10594_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rdx rsi rdi]
- mov rsi, qword ptr [(reloc)] ; const ptr
- mov rsi, gword ptr [rsi]
- ; gcrRegs +[rsi]
- mov rdi, rcx
- ; gcrRegs +[rdi]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rcx rsi rdi]
- ; gcr arg pop 0
- int3
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M10594_IG11: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rax]
+G_M10594_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx rdx rsi rdi]
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -113,7 +101,7 @@ G_M10594_IG11: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
; gcr arg pop 0
int3
;; size=20 bbWeight=0 PerfScore 0.00
-G_M10594_IG12: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M10594_IG11: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
@@ -125,8 +113,20 @@ G_M10594_IG12: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
int3
;; size=20 bbWeight=0 PerfScore 0.00
+G_M10594_IG12: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx]
+ mov rsi, qword ptr [(reloc)] ; const ptr
+ mov rsi, gword ptr [rsi]
+ ; gcrRegs +[rsi]
+ mov rdi, rcx
+ ; gcrRegs +[rdi]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rcx rsi rdi]
+ ; gcr arg pop 0
+ int3
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 7, PerfScore 33.50, instruction count 51, allocated bytes for code 192 (MethodHash=ba9fd69d) for method System.Reflection.Emit.TypeBuilder:DefinePInvokeMethod(System.String,System.String,System.String,int,int,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
+; Total bytes of code 176, prolog size 7, PerfScore 33.50, instruction count 51, allocated bytes for code 176 (MethodHash=ba9fd69d) for method System.Reflection.Emit.TypeBuilder:DefinePInvokeMethod(System.String,System.String,System.String,int,int,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
; ============================================================
Unwind Info:
@@ -53,11 +53,11 @@ G_M50985_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2000 {r1
; gcrRegs +[r12]
xor edi, edi
test ebx, ebx
- jle SHORT G_M50985_IG06
+ jle SHORT G_M50985_IG05
test r15, r15
- je SHORT G_M50985_IG05
+ je SHORT G_M50985_IG04
cmp dword ptr [r15+0x08], ebx
- jl SHORT G_M50985_IG05
+ jl SHORT G_M50985_IG04
;; size=28 bbWeight=1 PerfScore 10.25
G_M50985_IG03: ; bbWeight=3.96, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
; gcrRegs -[rax]
@@ -66,34 +66,32 @@ G_M50985_IG03: ; bbWeight=3.96, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2
inc edi
cmp edi, ebx
jl SHORT G_M50985_IG03
- ;; size=18 bbWeight=3.96 PerfScore 10.89
-G_M50985_IG04: ; bbWeight=1, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
- jmp SHORT G_M50985_IG06
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M50985_IG05: ; bbWeight=0.04, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ jmp SHORT G_M50985_IG05
+ ;; size=20 bbWeight=3.96 PerfScore 18.81
+G_M50985_IG04: ; bbWeight=0.04, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
cmp edi, dword ptr [r15+0x08]
- jae G_M50985_IG39
+ jae G_M50985_IG36
mov r11d, edi
mov dword ptr [r15+4*r11+0x10], -1
inc edi
cmp edi, ebx
- jl SHORT G_M50985_IG05
+ jl SHORT G_M50985_IG04
;; size=28 bbWeight=0.04 PerfScore 0.27
-G_M50985_IG06: ; bbWeight=1, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref
+G_M50985_IG05: ; bbWeight=1, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref
xor eax, eax
mov ecx, dword ptr [r14+0x08]
mov dword ptr [rbp-0x34], ecx
test ecx, ecx
jle G_M50985_IG18
cmp dword ptr [r12+0x08], ecx
- jl G_M50985_IG13
+ jl G_M50985_IG12
;; size=28 bbWeight=1 PerfScore 8.50
-G_M50985_IG07: ; bbWeight=3.96, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
+G_M50985_IG06: ; bbWeight=3.96, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
xor edx, edx
test ebx, ebx
- jle SHORT G_M50985_IG11
+ jle SHORT G_M50985_IG09
;; size=6 bbWeight=3.96 PerfScore 5.94
-G_M50985_IG08: ; bbWeight=15.84, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
+G_M50985_IG07: ; bbWeight=15.84, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov dword ptr [rbp-0x2C], eax
mov edi, eax
mov rsi, gword ptr [r14+8*rdi+0x10]
@@ -123,43 +121,44 @@ G_M50985_IG08: ; bbWeight=15.84, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=
mov edx, dword ptr [rbp-0x30]
inc edx
cmp edx, ebx
- mov eax, dword ptr [rbp-0x2C]
jl SHORT G_M50985_IG08
- ;; size=67 bbWeight=15.84 PerfScore 411.84
-G_M50985_IG09: ; bbWeight=1.98, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
jmp SHORT G_M50985_IG11
- ;; size=2 bbWeight=1.98 PerfScore 3.96
+ ;; size=66 bbWeight=15.84 PerfScore 427.68
+G_M50985_IG08: ; bbWeight=7.92, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ mov eax, dword ptr [rbp-0x2C]
+ jmp SHORT G_M50985_IG07
+ ;; size=5 bbWeight=7.92 PerfScore 23.76
+G_M50985_IG09: ; bbWeight=1.98, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ mov dword ptr [rbp-0x2C], eax
+ jmp SHORT G_M50985_IG11
+ ;; size=5 bbWeight=1.98 PerfScore 5.94
G_M50985_IG10: ; bbWeight=1.98, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref
mov edx, dword ptr [rbp-0x30]
cmp edx, dword ptr [r15+0x08]
- jae G_M50985_IG39
+ jae G_M50985_IG36
mov edi, edx
- mov eax, dword ptr [rbp-0x2C]
- mov dword ptr [r15+4*rdi+0x10], eax
- mov edi, eax
+ mov r11d, dword ptr [rbp-0x2C]
+ mov dword ptr [r15+4*rdi+0x10], r11d
+ mov edi, r11d
mov byte ptr [r12+rdi+0x10], 1
- ;; size=31 bbWeight=1.98 PerfScore 16.83
-G_M50985_IG11: ; bbWeight=3.96, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ mov dword ptr [rbp-0x2C], r11d
+ ;; size=37 bbWeight=1.98 PerfScore 18.81
+G_M50985_IG11: ; bbWeight=3.96, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref
cmp edx, ebx
- je G_M50985_IG37
- inc eax
- mov ecx, dword ptr [rbp-0x34]
- cmp ecx, eax
- jg SHORT G_M50985_IG07
- ;; size=17 bbWeight=3.96 PerfScore 14.85
-G_M50985_IG12: ; bbWeight=1, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
- ; byrRegs -[r13]
+ je G_M50985_IG34
+ mov r11d, dword ptr [rbp-0x2C]
+ inc r11d
+ cmp dword ptr [rbp-0x34], r11d
+ mov eax, r11d
+ jg G_M50985_IG06
jmp G_M50985_IG18
- ;; size=5 bbWeight=1 PerfScore 2.00
-G_M50985_IG13: ; bbWeight=0.04, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
- ; gcrRegs +[r14]
- ; byrRegs +[r13]
+ ;; size=33 bbWeight=3.96 PerfScore 30.69
+G_M50985_IG12: ; bbWeight=0.04, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
xor edx, edx
test ebx, ebx
- jle SHORT G_M50985_IG17
+ jle SHORT G_M50985_IG15
;; size=6 bbWeight=0.04 PerfScore 0.06
-G_M50985_IG14: ; bbWeight=0.16, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
+G_M50985_IG13: ; bbWeight=0.16, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov dword ptr [rbp-0x2C], eax
mov edi, eax
mov rdi, gword ptr [r14+8*rdi+0x10]
@@ -190,53 +189,61 @@ G_M50985_IG14: ; bbWeight=0.16, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2
mov eax, dword ptr [rbp-0x30]
inc eax
cmp eax, ebx
+ jl SHORT G_M50985_IG14
+ jmp SHORT G_M50985_IG17
+ ;; size=66 bbWeight=0.16 PerfScore 4.32
+G_M50985_IG14: ; bbWeight=0.08, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov edx, eax
mov eax, dword ptr [rbp-0x2C]
- jl SHORT G_M50985_IG14
- ;; size=69 bbWeight=0.16 PerfScore 4.20
+ jmp SHORT G_M50985_IG13
+ ;; size=7 bbWeight=0.08 PerfScore 0.26
G_M50985_IG15: ; bbWeight=0.02, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ mov dword ptr [rbp-0x2C], eax
+ mov eax, edx
jmp SHORT G_M50985_IG17
- ;; size=2 bbWeight=0.02 PerfScore 0.04
+ ;; size=7 bbWeight=0.02 PerfScore 0.07
G_M50985_IG16: ; bbWeight=0.02, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref
- mov edx, dword ptr [rbp-0x30]
- cmp edx, dword ptr [r15+0x08]
- jae G_M50985_IG39
- mov edi, edx
- mov eax, dword ptr [rbp-0x2C]
- mov dword ptr [r15+4*rdi+0x10], eax
- cmp eax, dword ptr [r12+0x08]
- jae G_M50985_IG39
- mov edi, eax
- mov byte ptr [r12+rdi+0x10], 1
- ;; size=42 bbWeight=0.02 PerfScore 0.25
-G_M50985_IG17: ; bbWeight=0.04, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref
- cmp edx, ebx
- je G_M50985_IG37
- inc eax
- mov ecx, dword ptr [rbp-0x34]
- cmp ecx, eax
- jg G_M50985_IG13
- ;; size=21 bbWeight=0.04 PerfScore 0.15
+ mov eax, dword ptr [rbp-0x30]
+ cmp eax, dword ptr [r15+0x08]
+ jae G_M50985_IG36
+ mov ecx, eax
+ mov edx, dword ptr [rbp-0x2C]
+ mov dword ptr [r15+4*rcx+0x10], edx
+ cmp edx, dword ptr [r12+0x08]
+ jae G_M50985_IG36
+ mov ecx, edx
+ mov byte ptr [r12+rcx+0x10], 1
+ mov dword ptr [rbp-0x2C], edx
+ ;; size=45 bbWeight=0.02 PerfScore 0.27
+G_M50985_IG17: ; bbWeight=0.04, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ cmp eax, ebx
+ je G_M50985_IG34
+ mov edx, dword ptr [rbp-0x2C]
+ inc edx
+ mov eax, dword ptr [rbp-0x34]
+ cmp eax, edx
+ jg SHORT G_M50985_IG22
+ ;; size=20 bbWeight=0.04 PerfScore 0.19
G_M50985_IG18: ; bbWeight=0.50, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
; byrRegs -[r13]
xor eax, eax
xor ecx, ecx
test ebx, ebx
- jle G_M50985_IG35
+ jle G_M50985_IG32
test r15, r15
- je SHORT G_M50985_IG29
+ je SHORT G_M50985_IG27
cmp dword ptr [r15+0x08], ebx
- jl SHORT G_M50985_IG29
+ jl SHORT G_M50985_IG27
;; size=23 bbWeight=0.50 PerfScore 3.50
G_M50985_IG19: ; bbWeight=3.96, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
mov edx, ecx
cmp dword ptr [r15+4*rdx+0x10], -1
- jne SHORT G_M50985_IG27
+ jne SHORT G_M50985_IG26
;; size=10 bbWeight=3.96 PerfScore 16.83
G_M50985_IG20: ; bbWeight=1.98, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
cmp eax, ebx
- jge SHORT G_M50985_IG27
+ jge SHORT G_M50985_IG26
test eax, eax
jl SHORT G_M50985_IG23
cmp dword ptr [r12+0x08], ebx
@@ -245,85 +252,83 @@ G_M50985_IG20: ; bbWeight=1.98, gcrefRegs=9000 {r12 r15}, byrefRegs=0000
G_M50985_IG21: ; bbWeight=15.68, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
mov edx, eax
cmp byte ptr [r12+rdx+0x10], 0
- je SHORT G_M50985_IG26
+ je SHORT G_M50985_IG25
inc eax
cmp eax, ebx
jl SHORT G_M50985_IG21
- ;; size=16 bbWeight=15.68 PerfScore 90.17
-G_M50985_IG22: ; bbWeight=1.98, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M50985_IG27
- ;; size=2 bbWeight=1.98 PerfScore 3.96
+ jmp SHORT G_M50985_IG26
+ ;; size=18 bbWeight=15.68 PerfScore 121.53
+G_M50985_IG22: ; bbWeight=0.02, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=2000 {r13}, byref
+ ; gcrRegs +[r14]
+ ; byrRegs +[r13]
+ mov eax, edx
+ jmp G_M50985_IG12
+ ;; size=7 bbWeight=0.02 PerfScore 0.05
G_M50985_IG23: ; bbWeight=0.02, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
+ ; byrRegs -[r13]
mov edx, dword ptr [r12+0x08]
;; size=5 bbWeight=0.02 PerfScore 0.04
G_M50985_IG24: ; bbWeight=0.16, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
cmp eax, dword ptr [r12+0x08]
- jae G_M50985_IG39
+ jae G_M50985_IG36
mov edx, eax
...
@@ -17,21 +17,21 @@
;
; Lcl frame size = 0
-G_M12753_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12753_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
mov rbp, rsp
;; size=4 bbWeight=1 PerfScore 1.25
G_M12753_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M12753_IG04
+ je SHORT G_M12753_IG06
;; size=5 bbWeight=1 PerfScore 1.25
G_M12753_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
movzx rax, byte ptr [rdi+0x12]
cmp eax, 117
- je SHORT G_M12753_IG06
+ je SHORT G_M12753_IG04
cmp eax, 188
- jne SHORT G_M12753_IG04
+ jne SHORT G_M12753_IG06
call [CORINFO_HELP_READYTORUN_CHKCAST]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
@@ -39,29 +39,34 @@ G_M12753_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
; gcrRegs +[rdi]
test rdi, rdi
jne SHORT G_M12753_IG03
- ;; size=31 bbWeight=4 PerfScore 43.00
-G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rdi]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rdi]
+ jmp SHORT G_M12753_IG08
+ ;; size=33 bbWeight=4 PerfScore 51.00
+G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
call [CORINFO_HELP_READYTORUN_CHKCAST]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
mov rax, gword ptr [rax+0x20]
;; size=10 bbWeight=0.50 PerfScore 2.50
+G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M12753_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M12753_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ jmp SHORT G_M12753_IG06
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 56, prolog size 4, PerfScore 49.62, instruction count 20, allocated bytes for code 56 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
+; Total bytes of code 60, prolog size 4, PerfScore 58.62, instruction count 22, allocated bytes for code 60 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
; ============================================================
Unwind Info:
@@ -9,39 +9,40 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 5 ) byref -> rdi this single-def
+; V00 this [V00,T00] ( 5, 2 ) byref -> rdi this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[int]>
-; V02 loc0 [V02,T03] ( 4, 3.50) int -> rax
+; V02 loc0 [V02,T03] ( 4, 0 ) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V05 tmp2 [V05,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 tmp3 [V06,T01] ( 5, 5 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T01] ( 5, 1 ) byref -> [rbp-0x18] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp4 [V07,T02] ( 2, 1 ) int -> [rbp-0x0C] single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V08 tmp5 [V08,T05] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
-G_M34588_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34588_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push rbx
- push rax
- lea rbp, [rsp+0x10]
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M34588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00C0 {rsi rdi}, byref, isz
- ; byrRegs +[rsi rdi]
- cmp edx, 4
- jne SHORT G_M34588_IG06
+ sub rsp, 24
+ lea rbp, [rsp+0x20]
+ mov bword ptr [rbp-0x18], rsi
+ ; GC ptr vars +{V06}
+ mov dword ptr [rbp-0x0C], edx
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M34588_IG02: ; bbWeight=0, gcVars=0000000000000002 {V06}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+ ; byrRegs +[rdi]
+ cmp dword ptr [rbp-0x0C], 4
+ jne SHORT G_M34588_IG04
+ mov rsi, bword ptr [rbp-0x18]
+ ; byrRegs +[rsi]
mov eax, dword ptr [rsi+0x0C]
test eax, 0xD1FFAB1E
- jne SHORT G_M34588_IG06
- ;; size=15 bbWeight=1 PerfScore 4.50
-G_M34588_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jne SHORT G_M34588_IG04
mov ecx, eax
and ecx, 0xD1FFAB1E
cmp ecx, 0xD1FFAB1E
- ja SHORT G_M34588_IG06
- ;; size=16 bbWeight=0.50 PerfScore 0.88
-G_M34588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00C0 {rsi rdi}, byref
+ ja SHORT G_M34588_IG04
mov ecx, dword ptr [rsi]
mov edx, dword ptr [rsi+0x04]
shl rdx, 32
@@ -50,15 +51,16 @@ G_M34588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00C0 {rsi rdi},
mov ecx, dword ptr [rsi+0x08]
mov dword ptr [rdi+0x04], ecx
mov dword ptr [rdi], eax
- ;; size=24 bbWeight=1 PerfScore 9.75
-G_M34588_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ ;; size=60 bbWeight=0 PerfScore 0.00
+G_M34588_IG03: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 24
pop rbx
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M34588_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M34588_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rsi rdi]
+ ; GC ptr vars -{V06}
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
mov rbx, rax
@@ -77,7 +79,7 @@ G_M34588_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=37 bbWeight=0 PerfScore 0.00
-; Total bytes of code 107, prolog size 8, PerfScore 20.88, instruction count 34, allocated bytes for code 107 (MethodHash=290178e3) for method System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
+; Total bytes of code 122, prolog size 11, PerfScore 0.00, instruction count 37, allocated bytes for code 122 (MethodHash=290178e3) for method System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -85,11 +87,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
+ SizeOfProlog : 0x06
CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -13,7 +13,7 @@
; V02 arg2 [V02,T07] ( 6, 9.50) ref -> r15 class-hnd single-def <System.String>
; V03 loc0 [V03,T12] ( 3, 6 ) int -> r13
; V04 loc1 [V04,T03] ( 6, 17.50) int -> r12
-; V05 loc2 [V05,T05] ( 4, 14 ) ref -> [rbp-0x38] class-hnd <<unknown class>>
+; V05 loc2 [V05,T05] ( 4, 14 ) ref -> [rbp-0x38] class-hnd spill-single-def <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T04] ( 3, 17 ) ref -> rax "CASTCLASS eval op1"
; V08 tmp2 [V08,T15] ( 3, 5 ) long -> rdi "fgMakeTemp is creating a new local variable"
@@ -34,7 +34,7 @@
;* V23 tmp17 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp18 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp19 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V26 cse0 [V26,T09] ( 3, 10 ) long -> [rbp-0x30] "CSE - moderate"
+; V26 cse0 [V26,T09] ( 3, 10 ) long -> [rbp-0x30] spill-single-def "CSE - moderate"
; V27 cse1 [V27,T13] ( 3, 5.50) int -> rdx "CSE - moderate"
; V28 cse2 [V28,T14] ( 3, 5.50) int -> rdx "CSE - moderate"
;
@@ -66,7 +66,7 @@ G_M15178_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov r13d, eax
xor r12d, r12d
test r13d, r13d
- jle G_M15178_IG15
+ jle G_M15178_IG14
;; size=28 bbWeight=1 PerfScore 9.00
G_M15178_IG03: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
lea rdi, bword ptr [r14+0x10]
@@ -98,10 +98,10 @@ G_M15178_IG06: ; bbWeight=4, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=
; gcrRegs -[rax]
mov rax, rcx
; gcrRegs +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
mov gword ptr [rbp-0x38], rax
; GC ptr vars +{V05}
+ mov rdi, rax
+ ; gcrRegs +[rdi]
mov rcx, qword ptr [rax]
; gcrRegs -[rcx]
mov rcx, qword ptr [rcx+0x68]
@@ -109,20 +109,15 @@ G_M15178_IG06: ; bbWeight=4, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=
call [rcx+0x30]<unknown method>
; gcrRegs -[rdi]
cmp rax, rbx
- je SHORT G_M15178_IG09
+ je SHORT G_M15178_IG08
;; size=29 bbWeight=4 PerfScore 43.00
G_M15178_IG07: ; bbWeight=1.75, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je SHORT G_M15178_IG14
- ;; size=5 bbWeight=1.75 PerfScore 2.19
-G_M15178_IG08: ; bbWeight=1.75, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [rbp-0x38]
- ; gcrRegs +[rcx]
- mov r8, qword ptr [rbp-0x30]
- jmp SHORT G_M15178_IG17
- ;; size=10 bbWeight=1.75 PerfScore 7.00
-G_M15178_IG09: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx]
+ je SHORT G_M15178_IG13
+ jmp SHORT G_M15178_IG16
+ ;; size=7 bbWeight=1.75 PerfScore 5.69
+G_M15178_IG08: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
mov rcx, qword ptr [rbp-0x30]
@@ -130,22 +125,22 @@ G_M15178_IG09: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
call [rcx+0x18]<unknown method>
; gcrRegs -[rdi] +[rax]
cmp rax, r15
- je G_M15178_IG20
- ;; size=20 bbWeight=2 PerfScore 12.50
-G_M15178_IG10: ; bbWeight=1.75, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M15178_IG19
+ ;; size=16 bbWeight=2 PerfScore 12.50
+G_M15178_IG09: ; bbWeight=1.75, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je SHORT G_M15178_IG14
+ je SHORT G_M15178_IG13
+ ;; size=5 bbWeight=1.75 PerfScore 2.19
+G_M15178_IG10: ; bbWeight=1.75, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ test r15, r15
+ je SHORT G_M15178_IG13
;; size=5 bbWeight=1.75 PerfScore 2.19
G_M15178_IG11: ; bbWeight=1.75, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- test r15, r15
- je SHORT G_M15178_IG14
- ;; size=5 bbWeight=1.75 PerfScore 2.19
-G_M15178_IG12: ; bbWeight=1.75, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov edx, dword ptr [rax+0x08]
cmp edx, dword ptr [r15+0x08]
- jne SHORT G_M15178_IG14
+ jne SHORT G_M15178_IG13
;; size=9 bbWeight=1.75 PerfScore 10.50
-G_M15178_IG13: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M15178_IG12: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
lea rdi, bword ptr [rax+0x0C]
; byrRegs +[rdi]
add edx, edx
@@ -155,18 +150,18 @@ G_M15178_IG13: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=
; gcrRegs -[rax]
; byrRegs -[rsi rdi]
test eax, eax
- jne SHORT G_M15178_IG20
+ jne SHORT G_M15178_IG19
;; size=20 bbWeight=2 PerfScore 11.00
-G_M15178_IG14: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M15178_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
inc r12d
cmp r12d, r13d
jl G_M15178_IG03
;; size=12 bbWeight=4 PerfScore 6.00
-G_M15178_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15178_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r14-r15]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M15178_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M15178_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -176,21 +171,18 @@ G_M15178_IG16: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M15178_IG17: ; bbWeight=1.75, gcVars=0000000000000000 {}, gcrefRegs=C00B {rax rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax rcx rbx r14-r15]
+G_M15178_IG16: ; bbWeight=1.75, gcVars=0000000000000020 {V05}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rax rbx r14-r15]
+ ; GC ptr vars +{V05}
test rbx, rbx
- je SHORT G_M15178_IG14
+ je SHORT G_M15178_IG13
;; size=5 bbWeight=1.75 PerfScore 2.19
-G_M15178_IG18: ; bbWeight=1.75, gcrefRegs=C00B {rax rcx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M15178_IG17: ; bbWeight=1.75, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov edx, dword ptr [rax+0x08]
cmp edx, dword ptr [rbx+0x08]
- mov gword ptr [rbp-0x38], rcx
- ; GC ptr vars +{V05}
- mov qword ptr [rbp-0x30], r8
- jne SHORT G_M15178_IG14
- ;; size=16 bbWeight=1.75 PerfScore 14.00
-G_M15178_IG19: ; bbWeight=2, gcVars=0000000000000020 {V05}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rcx]
+ jne SHORT G_M15178_IG13
+ ;; size=8 bbWeight=1.75 PerfScore 10.50
+G_M15178_IG18: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
lea rdi, bword ptr [rax+0x0C]
; byrRegs +[rdi]
add edx, edx
@@ -200,20 +192,15 @@ G_M15178_IG19: ; bbWeight=2, gcVars=0000000000000020 {V05}, gcrefRegs=C00
; gcrRegs -[rax]
; byrRegs -[rsi rdi]
test eax, eax
- je SHORT G_M15178_IG14
- mov rcx, gword ptr [rbp-0x38]
- ; gcrRegs +[rcx]
- mov r8, qword ptr [rbp-0x30]
- mov gword ptr [rbp-0x38], rcx
- mov qword ptr [rbp-0x30], r8
- jmp G_M15178_IG09
- ;; size=41 bbWeight=2 PerfScore 23.00
-G_M15178_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx rbx r14-r15]
+ je SHORT G_M15178_IG13
+ jmp SHORT G_M15178_IG08
+ ;; size=22 bbWeight=2 PerfScore 15.00
+G_M15178_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx r14-r15]
; GC ptr vars -{V05}
mov eax, r12d
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M15178_IG21: ; bbWeight=0.50, epilog, nogc, extend
+G_M15178_IG20: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -224,7 +211,7 @@ G_M15178_IG21: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 318, prolog size 19, PerfScore 182.76, instruction count 102, allocated bytes for code 318 (MethodHash=c3c1c4b5) for method System.Xml.XmlNamedNodeMap:FindNodeOffset(System.String,System.String):int:this (FullOpts)
+; Total bytes of code 279, prolog size 19, PerfScore 167.76, instruction count 94, allocated bytes for code 279 (MethodHash=c3c1c4b5) for method System.Xml.XmlNamedNodeMap:FindNodeOffset(System.String,System.String):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T00] ( 7, 5.94) ref -> rdi class-hnd single-def <System.String>
; V01 arg1 [V01,T01] ( 4, 4 ) byref -> rbx single-def
-; V02 loc0 [V02,T02] ( 5, 4 ) int -> rsi
+; V02 loc0 [V02,T02] ( 5, 4 ) int -> rax
;* V03 loc1 [V03,T08] ( 0, 0 ) ubyte -> zero-ref EH-live single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
@@ -19,122 +19,114 @@
;* V08 tmp4 [V08,T05] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V10 tmp6 [V10,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 PSPSym [V11,T07] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym"
-; V12 cse0 [V12,T03] ( 4, 3.88) int -> r15 "CSE - aggressive"
+; V11 PSPSym [V11,T07] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[V] "PSPSym"
+; V12 cse0 [V12,T03] ( 4, 3.88) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M53527_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rsp
+ push rax
+ lea rbp, [rsp+0x10]
+ mov qword ptr [rbp-0x10], rsp
mov rbx, rsi
; byrRegs +[rbx]
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=15 bbWeight=1 PerfScore 4.75
G_M53527_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[rdi]
xor eax, eax
mov qword ptr [rbx], rax
test rdi, rdi
- je SHORT G_M53527_IG06
+ je SHORT G_M53527_IG04
;; size=10 bbWeight=1 PerfScore 2.50
G_M53527_IG03: ; bbWeight=0.94, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- mov r15d, dword ptr [rdi+0x08]
- test r15d, r15d
- je SHORT G_M53527_IG06
- ;; size=9 bbWeight=0.94 PerfScore 3.05
-G_M53527_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- mov esi, 10
- cmp r15d, 2
- jl SHORT G_M53527_IG10
- ;; size=11 bbWeight=1 PerfScore 1.50
-G_M53527_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M53527_IG08
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M53527_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov esi, dword ptr [rdi+0x08]
+ test esi, esi
+ jne SHORT G_M53527_IG06
+ ;; size=7 bbWeight=0.94 PerfScore 3.05
+G_M53527_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
; byrRegs -[rbx]
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
-G_M53527_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+G_M53527_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
-G_M53527_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M53527_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs +[rdi]
; byrRegs +[rbx]
- mov eax, dword ptr [rdi+0x0C]
- or eax, 0xD1FFAB1E
- cmp eax, 0xD1FFAB1E
- jne SHORT G_M53527_IG10
- ;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M53527_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- mov esi, 16
- jmp SHORT G_M53527_IG12
+ mov eax, 10
+ cmp esi, 2
+ jl SHORT G_M53527_IG09
+ ;; size=10 bbWeight=1 PerfScore 1.50
+G_M53527_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
+ mov ecx, dword ptr [rdi+0x0C]
+ or ecx, 0xD1FFAB1E
+ cmp ecx, 0xD1FFAB1E
+ jne SHORT G_M53527_IG09
+ ;; size=17 bbWeight=0.50 PerfScore 1.75
+G_M53527_IG08: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
+ mov eax, 16
+ jmp SHORT G_M53527_IG11
;; size=7 bbWeight=1 PerfScore 2.25
-G_M53527_IG10: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- test r15d, r15d
- jle SHORT G_M53527_IG12
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M53527_IG11: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
- mov eax, 8
+G_M53527_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
+ test esi, esi
+ jle SHORT G_M53527_IG11
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M53527_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
+ mov esi, 8
cmp word ptr [rdi+0x0C], 48
- cmove esi, eax
+ cmove eax, esi
;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M53527_IG12: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
+G_M53527_IG11: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
+ mov esi, eax
call [System.Convert:ToUInt64(System.String,int):ulong]
; gcrRegs -[rdi]
; gcr arg pop 0
mov qword ptr [rbx], rax
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M53527_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=11 bbWeight=1 PerfScore 4.25
+G_M53527_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
mov eax, 1
;; size=5 bbWeight=1 PerfScore 0.25
-G_M53527_IG14: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+G_M53527_IG13: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
-G_M53527_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M53527_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
-G_M53527_IG16: ; bbWeight=0, epilog, nogc, extend
- add rsp, 16
+G_M53527_IG15: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M53527_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M53527_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
- push r15
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x20]
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M53527_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- lea rax, G_M53527_IG15
+ lea rbp, [rbp+0x10]
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M53527_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ lea rax, G_M53527_IG14
;; size=7 bbWeight=0 PerfScore 0.00
-G_M53527_IG19: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 16
+G_M53527_IG18: ; bbWeight=0, funclet epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 20, PerfScore 30.05, instruction count 62, allocated bytes for code 172 (MethodHash=93cc2ee8) for method Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt64(System.String,byref):ubyte (FullOpts)
+; Total bytes of code 152, prolog size 15, PerfScore 28.05, instruction count 56, allocated bytes for code 152 (MethodHash=93cc2ee8) for method Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt64(System.String,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -142,29 +134,27 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
Unwind Info:
>> Start offset : 0xd1ffab1e (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt64(System.String,byref):ubyte
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M53527_IG12..G_M53527_IG13) handled by [G_M53527_IG17..END) (class: 1000015)
+EH#0: try [G_M53527_IG11..G_M53527_IG12) handled by [G_M53527_IG16..END) (class: 1000015)
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T00] ( 7, 5.94) ref -> rdi class-hnd single-def <System.String>
; V01 arg1 [V01,T01] ( 4, 4 ) byref -> rbx single-def
-; V02 loc0 [V02,T02] ( 5, 4 ) int -> rsi
+; V02 loc0 [V02,T02] ( 5, 4 ) int -> rax
;* V03 loc1 [V03,T08] ( 0, 0 ) ubyte -> zero-ref EH-live single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
@@ -19,121 +19,113 @@
;* V08 tmp4 [V08,T05] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V10 tmp6 [V10,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 PSPSym [V11,T07] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym"
-; V12 cse0 [V12,T03] ( 4, 3.88) int -> r15 "CSE - aggressive"
+; V11 PSPSym [V11,T07] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[V] "PSPSym"
+; V12 cse0 [V12,T03] ( 4, 3.88) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64594_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rsp
+ push rax
+ lea rbp, [rsp+0x10]
+ mov qword ptr [rbp-0x10], rsp
mov rbx, rsi
; byrRegs +[rbx]
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=15 bbWeight=1 PerfScore 4.75
G_M64594_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[rdi]
mov word ptr [rbx], 0
test rdi, rdi
- je SHORT G_M64594_IG06
+ je SHORT G_M64594_IG04
;; size=10 bbWeight=1 PerfScore 2.25
G_M64594_IG03: ; bbWeight=0.94, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- mov r15d, dword ptr [rdi+0x08]
- test r15d, r15d
- je SHORT G_M64594_IG06
- ;; size=9 bbWeight=0.94 PerfScore 3.05
-G_M64594_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- mov esi, 10
- cmp r15d, 2
- jl SHORT G_M64594_IG10
- ;; size=11 bbWeight=1 PerfScore 1.50
-G_M64594_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M64594_IG08
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M64594_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov esi, dword ptr [rdi+0x08]
+ test esi, esi
+ jne SHORT G_M64594_IG06
+ ;; size=7 bbWeight=0.94 PerfScore 3.05
+G_M64594_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
; byrRegs -[rbx]
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
-G_M64594_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+G_M64594_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
-G_M64594_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M64594_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs +[rdi]
; byrRegs +[rbx]
- mov eax, dword ptr [rdi+0x0C]
- or eax, 0xD1FFAB1E
- cmp eax, 0xD1FFAB1E
- jne SHORT G_M64594_IG10
- ;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M64594_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- mov esi, 16
- jmp SHORT G_M64594_IG12
+ mov eax, 10
+ cmp esi, 2
+ jl SHORT G_M64594_IG09
+ ;; size=10 bbWeight=1 PerfScore 1.50
+G_M64594_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
+ mov ecx, dword ptr [rdi+0x0C]
+ or ecx, 0xD1FFAB1E
+ cmp ecx, 0xD1FFAB1E
+ jne SHORT G_M64594_IG09
+ ;; size=17 bbWeight=0.50 PerfScore 1.75
+G_M64594_IG08: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
+ mov eax, 16
+ jmp SHORT G_M64594_IG11
;; size=7 bbWeight=1 PerfScore 2.25
-G_M64594_IG10: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- test r15d, r15d
- jle SHORT G_M64594_IG12
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M64594_IG11: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
- mov eax, 8
+G_M64594_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
+ test esi, esi
+ jle SHORT G_M64594_IG11
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M64594_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
+ mov esi, 8
cmp word ptr [rdi+0x0C], 48
- cmove esi, eax
+ cmove eax, esi
;; size=13 bbWeight=0.50 PerfScore 1.75
-G_M64594_IG12: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
+G_M64594_IG11: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
+ mov esi, eax
call [System.Convert:ToUInt16(System.String,int):ushort]
; gcrRegs -[rdi]
; gcr arg pop 0
mov word ptr [rbx], ax
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M64594_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=11 bbWeight=1 PerfScore 4.25
+G_M64594_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
mov eax, 1
;; size=5 bbWeight=1 PerfScore 0.25
-G_M64594_IG14: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+G_M64594_IG13: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
-G_M64594_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M64594_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
-G_M64594_IG16: ; bbWeight=0, epilog, nogc, extend
- add rsp, 16
+G_M64594_IG15: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M64594_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M64594_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
- push r15
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x20]
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M64594_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- lea rax, G_M64594_IG15
+ lea rbp, [rbp+0x10]
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M64594_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ lea rax, G_M64594_IG14
;; size=7 bbWeight=0 PerfScore 0.00
-G_M64594_IG19: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 16
+G_M64594_IG18: ; bbWeight=0, funclet epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 20, PerfScore 29.80, instruction count 61, allocated bytes for code 172 (MethodHash=6a4903ad) for method Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt16(System.String,byref):ubyte (FullOpts)
+; Total bytes of code 152, prolog size 15, PerfScore 27.80, instruction count 55, allocated bytes for code 152 (MethodHash=6a4903ad) for method Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt16(System.String,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -141,29 +133,27 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
Unwind Info:
>> Start offset : 0xd1ffab1e (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt16(System.String,byref):ubyte
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M64594_IG12..G_M64594_IG13) handled by [G_M64594_IG17..END) (class: 1000015)
+EH#0: try [G_M64594_IG11..G_M64594_IG12) handled by [G_M64594_IG16..END) (class: 1000015)
@@ -21,7 +21,7 @@
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.UInt128>
-; V13 tmp9 [V13 ] ( 3, 3 ) struct (16) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
+; V13 tmp9 [V13 ] ( 3, 0 ) struct (16) [rbp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.UInt128>
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.UInt128>
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline stloc first use temp" <System.UInt128>
@@ -49,39 +49,39 @@
;* V38 tmp34 [V38 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V40 tmp36 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V41 tmp37 [V41,T44] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V42 tmp38 [V42,T16] ( 2, 2 ) long -> rsi "Inline stloc first use temp"
+;* V41 tmp37 [V41,T45] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V42 tmp38 [V42,T16] ( 2, 0 ) long -> rsi "Inline stloc first use temp"
;* V43 tmp39 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V44 tmp40 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V45 tmp41 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V46 tmp42 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V47 tmp43 [V47,T06] ( 3, 3 ) long -> r8 "Inline stloc first use temp"
+; V47 tmp43 [V47,T06] ( 3, 0 ) long -> r9 "Inline stloc first use temp"
;* V48 tmp44 [V48 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V49 tmp45 [V49,T17] ( 2, 2 ) long -> rdx "Inline stloc first use temp"
+; V49 tmp45 [V49,T17] ( 2, 0 ) long -> rdx "Inline stloc first use temp"
;* V50 tmp46 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V51 tmp47 [V51 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Int128>
;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V53 tmp49 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V54 tmp50 [V54 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V56 tmp52 [V56,T45] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V57 tmp53 [V57,T18] ( 2, 2 ) long -> r15 "Inline stloc first use temp"
+;* V56 tmp52 [V56,T46] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V57 tmp53 [V57,T18] ( 2, 0 ) long -> r15 "Inline stloc first use temp"
;* V58 tmp54 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V59 tmp55 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V60 tmp56 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V61 tmp57 [V61 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V62 tmp58 [V62,T04] ( 3, 3 ) long -> rax "Inline stloc first use temp"
+; V62 tmp58 [V62,T04] ( 3, 0 ) long -> rsi "Inline stloc first use temp"
;* V63 tmp59 [V63 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V64 tmp60 [V64,T07] ( 2, 2 ) long -> rdx "Inline stloc first use temp"
+; V64 tmp60 [V64,T07] ( 2, 0 ) long -> rdx "Inline stloc first use temp"
;* V65 tmp61 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V66 tmp62 [V66 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V67 tmp63 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V68 tmp64 [V68 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V69 tmp65 [V69,T53] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V69 tmp65 [V69,T47] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V70 tmp66 [V70 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V71 tmp67 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V72 tmp68 [V72 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V73 tmp69 [V73,T54] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V73 tmp69 [V73,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V74 tmp70 [V74 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V75 tmp71 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V76 tmp72 [V76 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
@@ -89,20 +89,20 @@
;* V78 tmp74 [V78 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V79 tmp75 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V80 tmp76 [V80 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V81 tmp77 [V81,T55] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V81 tmp77 [V81,T49] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V82 tmp78 [V82 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V83 tmp79 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V84 tmp80 [V84 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V85 tmp81 [V85,T52] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V85 tmp81 [V85,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V86 tmp82 [V86 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V87 tmp83 [V87,T02] ( 3, 3 ) long -> r14 single-def "field V00._lower (fldOffset=0x0)" P-INDEP
-; V88 tmp84 [V88,T00] ( 4, 4 ) long -> rbx single-def "field V00._upper (fldOffset=0x8)" P-INDEP
-; V89 tmp85 [V89,T03] ( 3, 3 ) long -> r13 single-def "field V01._lower (fldOffset=0x0)" P-INDEP
-; V90 tmp86 [V90,T01] ( 4, 4 ) long -> r15 single-def "field V01._upper (fldOffset=0x8)" P-INDEP
-; V91 tmp87 [V91,T14] ( 3, 2.50) long -> rax "field V02._lower (fldOffset=0x0)" P-INDEP
-; V92 tmp88 [V92,T15] ( 3, 2 ) long -> rdx "field V02._upper (fldOffset=0x8)" P-INDEP
-; V93 tmp89 [V93,T19] ( 2, 2 ) long -> rcx "field V03._lower (fldOffset=0x0)" P-INDEP
-; V94 tmp90 [V94,T05] ( 4, 3 ) long -> rdi "field V03._upper (fldOffset=0x8)" P-INDEP
+; V87 tmp83 [V87,T02] ( 3, 1 ) long -> [rbp-0x28] single-def "field V00._lower (fldOffset=0x0)" P-INDEP
+; V88 tmp84 [V88,T00] ( 4, 1 ) long -> [rbp-0x30] single-def "field V00._upper (fldOffset=0x8)" P-INDEP
+; V89 tmp85 [V89,T03] ( 3, 1 ) long -> [rbp-0x38] single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+; V90 tmp86 [V90,T01] ( 4, 1 ) long -> [rbp-0x40] single-def "field V01._upper (fldOffset=0x8)" P-INDEP
+; V91 tmp87 [V91,T08] ( 3, 0 ) long -> rsi "field V02._lower (fldOffset=0x0)" P-INDEP
+; V92 tmp88 [V92,T09] ( 3, 0 ) long -> rdx "field V02._upper (fldOffset=0x8)" P-INDEP
+; V93 tmp89 [V93,T20] ( 2, 0 ) long -> rcx "field V03._lower (fldOffset=0x0)" P-INDEP
+; V94 tmp90 [V94,T05] ( 4, 0 ) long -> rdi "field V03._upper (fldOffset=0x8)" P-INDEP
;* V95 tmp91 [V95 ] ( 0, 0 ) long -> zero-ref "field V05._lower (fldOffset=0x0)" P-INDEP
;* V96 tmp92 [V96 ] ( 0, 0 ) long -> zero-ref "field V05._upper (fldOffset=0x8)" P-INDEP
;* V97 tmp93 [V97 ] ( 0, 0 ) long -> zero-ref "field V06._lower (fldOffset=0x0)" P-INDEP
@@ -119,153 +119,152 @@
;* V108 tmp104 [V108 ] ( 0, 0 ) long -> zero-ref "field V11._upper (fldOffset=0x8)" P-INDEP
;* V109 tmp105 [V109 ] ( 0, 0 ) long -> zero-ref "field V12._lower (fldOffset=0x0)" P-INDEP
;* V110 tmp106 [V110 ] ( 0, 0 ) long -> zero-ref "field V12._upper (fldOffset=0x8)" P-INDEP
-; V111 tmp107 [V111 ] ( 2, 2 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V13._lower (fldOffset=0x0)" P-DEP
-; V112 tmp108 [V112 ] ( 2, 2 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V13._upper (fldOffset=0x8)" P-DEP
+; V111 tmp107 [V111 ] ( 2, 0 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V13._lower (fldOffset=0x0)" P-DEP
+; V112 tmp108 [V112 ] ( 2, 0 ) long -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V13._upper (fldOffset=0x8)" P-DEP
;* V113 tmp109 [V113 ] ( 0, 0 ) long -> zero-ref "field V14._lower (fldOffset=0x0)" P-INDEP
;* V114 tmp110 [V114 ] ( 0, 0 ) long -> zero-ref "field V14._upper (fldOffset=0x8)" P-INDEP
;* V115 tmp111 [V115 ] ( 0, 0 ) long -> zero-ref "field V15._lower (fldOffset=0x0)" P-DEP
;* V116 tmp112 [V116 ] ( 0, 0 ) long -> zero-ref "field V15._upper (fldOffset=0x8)" P-DEP
-; V117 tmp113 [V117,T20] ( 2, 2 ) long -> rax "field V16._lower (fldOffset=0x0)" P-INDEP
-; V118 tmp114 [V118,T21] ( 2, 2 ) long -> rdx "field V16._upper (fldOffset=0x8)" P-INDEP
-; V119 tmp115 [V119,T08] ( 3, 3 ) long -> rax "field V17._lower (fldOffset=0x0)" P-INDEP
-; V120 tmp116 [V120,T22] ( 2, 2 ) long -> rdx "field V17._upper (fldOffset=0x8)" P-INDEP
+; V117 tmp113 [V117,T21] ( 2, 0 ) long -> rax "field V16._lower (fldOffset=0x0)" P-INDEP
+; V118 tmp114 [V118,T22] ( 2, 0 ) long -> rdx "field V16._upper (fldOffset=0x8)" P-INDEP
+; V119 tmp115 [V119,T10] ( 3, 0 ) long -> rax "field V17._lower (fldOffset=0x0)" P-INDEP
+; V120 tmp116 [V120,T23] ( 2, 0 ) long -> rdx "field V17._upper (fldOffset=0x8)" P-INDEP
;* V121 tmp117 [V121 ] ( 0, 0 ) long -> zero-ref "field V18._lower (fldOffset=0x0)" P-INDEP
;* V122 tmp118 [V122 ] ( 0, 0 ) long -> zero-ref "field V18._upper (fldOffset=0x8)" P-INDEP
;* V123 tmp119 [V123 ] ( 0, 0 ) long -> zero-ref "field V19._lower (fldOffset=0x0)" P-INDEP
;* V124 tmp120 [V124 ] ( 0, 0 ) long -> zero-ref "field V19._upper (fldOffset=0x8)" P-INDEP
-; V125 tmp121 [V125,T09] ( 3, 3 ) long -> r8 "field V20._lower (fldOffset=0x0)" P-INDEP
-; V126 tmp122 [V126,T23] ( 2, 2 ) long -> rdx "field V20._upper (fldOffset=0x8)" P-INDEP
+; V125 tmp121 [V125,T11] ( 3, 0 ) long -> r9 "field V20._lower (fldOffset=0x0)" P-INDEP
+; V126 tmp122 [V126,T24] ( 2, 0 ) long -> rdx "field V20._upper (fldOffset=0x8)" P-INDEP
;* V127 tmp123 [V127 ] ( 0, 0 ) long -> zero-ref "field V21._lower (fldOffset=0x0)" P-INDEP
;* V128 tmp124 [V128 ] ( 0, 0 ) long -> zero-ref "field V21._upper (fldOffset=0x8)" P-INDEP
;* V129 tmp125 [V129 ] ( 0, 0 ) long -> zero-ref "field V22._lower (fldOffset=0x0)" P-INDEP
;* V130 tmp126 [V130 ] ( 0, 0 ) long -> zero-ref "field V22._upper (fldOffset=0x8)" P-INDEP
-;* V131 tmp127 [V131,T46] ( 0, 0 ) long -> zero-ref "field V23._lower (fldOffset=0x0)" P-INDEP
-;* V132 tmp128 [V132,T47] ( 0, 0 ) long -> zero-ref "field V23._upper (fldOffset=0x8)" P-INDEP
-;* V133 tmp129 [V133,T48] ( 0, 0 ) long -> zero-ref "field V26._lower (fldOffset=0x0)" P-INDEP
-;* V134 tmp130 [V134,T49] ( 0, 0 ) long -> zero-ref "field V26._upper (fldOffset=0x8)" P-INDEP
-; V135 tmp131 [V135,T24] ( 2, 2 ) long -> rcx "field V29._lower (fldOffset=0x0)" P-INDEP
-; V136 tmp132 [V136,T25] ( 2, 2 ) long -> rdi "field V29._upper (fldOffset=0x8)" P-INDEP
-; V137 tmp133 [V137,T26] ( 2, 2 ) long -> rcx "field V30._lower (fldOffset=0x0)" P-INDEP
-; V138 tmp134 [V138,T27] ( 2, 2 ) long -> rdi "field V30._upper (fldOffset=0x8)" P-INDEP
-; V139 tmp135 [V139,T28] ( 2, 2 ) long -> rax "field V33._lower (fldOffset=0x0)" P-INDEP
-; V140 tmp136 [V140,T29] ( 2, 2 ) long -> rdx "field V33._upper (fldOffset=0x8)" P-INDEP
-; V141 tmp137 [V141,T30] ( 2, 2 ) long -> rsi "field V36._lower (fldOffset=0x0)" P-INDEP
-; V142 tmp138 [V142,T10] ( 3, 3 ) long -> rsi "field V36._upper (fldOffset=0x8)" P-INDEP
+;* V131 tmp127 [V131,T50] ( 0, 0 ) long -> zero-ref "field V23._lower (fldOffset=0x0)" P-INDEP
+;* V132 tmp128 [V132,T51] ( 0, 0 ) long -> zero-ref "field V23._upper (fldOffset=0x8)" P-INDEP
+;* V133 tmp129 [V133,T52] ( 0, 0 ) long -> zero-ref "field V26._lower (fldOffset=0x0)" P-INDEP
+;* V134 tmp130 [V134,T53] ( 0, 0 ) long -> zero-ref "field V26._upper (fldOffset=0x8)" P-INDEP
+; V135 tmp131 [V135,T25] ( 2, 0 ) long -> rcx "field V29._lower (fldOffset=0x0)" P-INDEP
+; V136 tmp132 [V136,T26] ( 2, 0 ) long -> rdi "field V29._upper (fldOffset=0x8)" P-INDEP
+; V137 tmp133 [V137,T27] ( 2, 0 ) long -> rcx "field V30._lower (fldOffset=0x0)" P-INDEP
+; V138 tmp134 [V138,T28] ( 2, 0 ) long -> rdi "field V30._upper (fldOffset=0x8)" P-INDEP
+; V139 tmp135 [V139,T29] ( 2, 0 ) long -> rax "field V33._lower (fldOffset=0x0)" P-INDEP
+; V140 tmp136 [V140,T30] ( 2, 0 ) long -> rdx "field V33._upper (fldOffset=0x8)" P-INDEP
+; V141 tmp137 [V141,T31] ( 2, 0 ) long -> rsi "field V36._lower (fldOffset=0x0)" P-INDEP
+; V142 tmp138 [V142,T12] ( 3, 0 ) long -> rsi "field V36._upper (fldOffset=0x8)" P-INDEP
;* V143 tmp139 [V143 ] ( 0, 0 ) long -> zero-ref "field V40._lower (fldOffset=0x0)" P-INDEP
;* V144 tmp140 [V144 ] ( 0, 0 ) long -> zero-ref "field V40._upper (fldOffset=0x8)" P-INDEP
-; V145 tmp141 [V145,T31] ( 2, 2 ) long -> rsi "field V43._lower (fldOffset=0x0)" P-INDEP
-; V146 tmp142 [V146,T32] ( 2, 2 ) long -> rsi "field V43._upper (fldOffset=0x8)" P-INDEP
-; V147 tmp143 [V147,T33] ( 2, 2 ) long -> r13 "field V44._lower (fldOffset=0x0)" P-INDEP
-; V148 tmp144 [V148,T34] ( 2, 2 ) long -> rsi "field V44._upper (fldOffset=0x8)" P-INDEP
-; V149 tmp145 [V149,T35] ( 2, 2 ) long -> r8 "field V50._lower (fldOffset=0x0)" P-INDEP
-; V150 tmp146 [V150,T36] ( 2, 2 ) long -> rdx "field V50._upper (fldOffset=0x8)" P-INDEP
-; V151 tmp147 [V151,T37] ( 2, 2 ) long -> r15 "field V51._lower (fldOffset=0x0)" P-INDEP
-; V152 tmp148 [V152,T11] ( 3, 3 ) long -> r15 "field V51._upper (fldOffset=0x8)" P-INDEP
+; V145 tmp141 [V145,T32] ( 2, 0 ) long -> rsi "field V43._lower (fldOffset=0x0)" P-INDEP
+; V146 tmp142 [V146,T33] ( 2, 0 ) long -> rsi "field V43._upper (fldOffset=0x8)" P-INDEP
+; V147 tmp143 [V147,T34] ( 2, 0 ) long -> r8 "field V44._lower (fldOffset=0x0)" P-INDEP
+; V148 tmp144 [V148,T35] ( 2, 0 ) long -> rsi "field V44._upper (fldOffset=0x8)" P-INDEP
+; V149 tmp145 [V149,T36] ( 2, 0 ) long -> r9 "field V50._lower (fldOffset=0x0)" P-INDEP
+; V150 tmp146 [V150,T37] ( 2, 0 ) long -> rdx "field V50._upper (fldOffset=0x8)" P-INDEP
+; V151 tmp147 [V151,T38] ( 2, 0 ) long -> r15 "field V51._lower (fldOffset=0x0)" P-INDEP
+; V152 tmp148 [V152,T13] ( 3, 0 ) long -> r15 "field V51._upper (fldOffset=0x8)" P-INDEP
;* V153 tmp149 [V153 ] ( 0, 0 ) long -> zero-ref "field V55._lower (fldOffset=0x0)" P-INDEP
;* V154 tmp150 [V154 ] ( 0, 0 ) long -> zero-ref "field V55._upper (fldOffset=0x8)" P-INDEP
-; V155 tmp151 [V155,T38] ( 2, 2 ) long -> r15 "field V58._lower (fldOffset=0x0)" P-INDEP
-; V156 tmp152 [V156,T39] ( 2, 2 ) long -> r15 "field V58._upper (fldOffset=0x8)" P-INDEP
-; V157 tmp153 [V157,T40] ( 2, 2 ) long -> r14 "field V59._lower (fldOffset=0x0)" P-INDEP
-; V158 tmp154 [V158,T41] ( 2, 2 ) long -> rbx "field V59._upper (fldOffset=0x8)" P-INDEP
-;* V159 tmp155 [V159,T50] ( 0, 0 ) long -> zero-ref "field V65._lower (fldOffset=0x0)" P-INDEP
-;* V160 tmp156 [V160,T51] ( 0, 0 ) long -> zero-ref "field V65._upper (fldOffset=0x8)" P-INDEP
+; V155 tmp151 [V155,T39] ( 2, 0 ) long -> r15 "field V58._lower (fldOffset=0x0)" P-INDEP
+; V156 tmp152 [V156,T40] ( 2, 0 ) long -> r15 "field V58._upper (fldOffset=0x8)" P-INDEP
+; V157 tmp153 [V157,T41] ( 2, 0 ) long -> rax "field V59._lower (fldOffset=0x0)" P-INDEP
+; V158 tmp154 [V158,T42] ( 2, 0 ) long -> rbx "field V59._upper (fldOffset=0x8)" P-INDEP
+;* V159 tmp155 [V159,T54] ( 0, 0 ) long -> zero-ref "field V65._lower (fldOffset=0x0)" P-INDEP
+;* V160 tmp156 [V160,T55] ( 0, 0 ) long -> zero-ref "field V65._upper (fldOffset=0x8)" P-INDEP
;* V161 tmp157 [V161 ] ( 0, 0 ) long -> zero-ref "field V67._lower (fldOffset=0x0)" P-INDEP
;* V162 tmp158 [V162 ] ( 0, 0 ) long -> zero-ref "field V67._upper (fldOffset=0x8)" P-INDEP
;* V163 tmp159 [V163 ] ( 0, 0 ) long -> zero-ref "field V71._lower (fldOffset=0x0)" P-INDEP
;* V164 tmp160 [V164 ] ( 0, 0 ) long -> zero-ref "field V71._upper (fldOffset=0x8)" P-INDEP
-; V165 tmp161 [V165,T42] ( 2, 1 ) long -> rax "field V75._lower (fldOffset=0x0)" P-INDEP
-; V166 tmp162 [V166,T43] ( 2, 1 ) long -> rdx "field V75._upper (fldOffset=0x8)" P-INDEP
+; V165 tmp161 [V165,T43] ( 2, 0 ) long -> rax "field V75._lower (fldOffset=0x0)" P-INDEP
+; V166 tmp162 [V166,T44] ( 2, 0 ) long -> rdx "field V75._upper (fldOffset=0x8)" P-INDEP
;* V167 tmp163 [V167 ] ( 0, 0 ) long -> zero-ref "field V79._lower (fldOffset=0x0)" P-INDEP
;* V168 tmp164 [V168 ] ( 0, 0 ) long -> zero-ref "field V79._upper (fldOffset=0x8)" P-INDEP
;* V169 tmp165 [V169 ] ( 0, 0 ) long -> zero-ref "field V83._lower (fldOffset=0x0)" P-INDEP
;* V170 tmp166 [V170 ] ( 0, 0 ) long -> zero-ref "field V83._upper (fldOffset=0x8)" P-INDEP
-; V171 cse0 [V171,T12] ( 2, 2 ) long -> rsi "CSE - moderate"
-; V172 cse1 [V172,T13] ( 2, 2 ) long -> r15 "CSE - moderate"
+; V171 cse0 [V171,T14] ( 2, 0 ) long -> rsi "CSE - moderate"
+; V172 cse1 [V172,T15] ( 2, 0 ) long -> r15 "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 48
-G_M29692_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M29692_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
- push r13
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x30]
- mov r14, rdi
- mov rbx, rsi
- mov r13, rdx
- mov r15, rcx
- ;; size=29 bbWeight=1 PerfScore 6.75
-G_M29692_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, r14
- mov rsi, rbx
- mov rdx, r13
- mov rcx, r15
- lea r8, [rbp-0x30]
- call [<unknown method>]
- mov rcx, qword ptr [rbp-0x30]
+ sub rsp, 48
+ lea rbp, [rsp+0x40]
+ mov qword ptr [rbp-0x28], rdi
+ mov qword ptr [rbp-0x30], rsi
+ mov qword ptr [rbp-0x38], rdx
+ mov qword ptr [rbp-0x40], rcx
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M29692_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rbp-0x28]
+ mov rsi, qword ptr [rbp-0x30]
+ mov rdx, qword ptr [rbp-0x38]
+ mov rcx, qword ptr [rbp-0x40]
+ lea r8, [rbp-0x20]
+ call [<unknown method>]
+ mov rcx, qword ptr [rbp-0x20]
+ mov rdi, qword ptr [rbp-0x18]
+ mov rbx, qword ptr [rbp-0x30]
mov rsi, rbx
sar rsi, 63
- and r13, rsi
+ mov r8, rsi
+ and r8, qword ptr [rbp-0x38]
+ mov r15, qword ptr [rbp-0x40]
and rsi, r15
- mov r8, rax
- sub r8, r13
+ mov r9, rax
+ sub r9, r8
sub rdx, rsi
- cmp r8, rax
...
@@ -8,69 +8,76 @@
; 2 inlinees with PGO data; 7 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 8, 5.50) ref -> rbx class-hnd single-def <System.Text.Encoding>
-; V01 arg1 [V01,T01] ( 8, 5 ) ref -> r15 class-hnd single-def <System.Text.Encoding>
+; V00 arg0 [V00,T01] ( 7, 5 ) ref -> r15 class-hnd single-def <System.Text.Encoding>
+; V01 arg1 [V01,T00] ( 8, 5 ) ref -> rbx class-hnd single-def <System.Text.Encoding>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 6, 4.98) ref -> rbx class-hnd exact single-def "non-inline candidate call" <System.String>
-; V04 tmp2 [V04,T05] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V03 tmp1 [V03,T02] ( 6, 4.98) ref -> r15 class-hnd exact single-def "non-inline candidate call" <System.String>
+; V04 tmp2 [V04,T06] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V05 tmp3 [V05,T03] ( 5, 4.36) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V06 tmp4 [V06,T06] ( 4, 1 ) ubyte -> rax "Inline return value spill temp"
-; V07 tmp5 [V07,T04] ( 2, 1.23) byref -> rdi single-def "impAppendStmt"
+; V06 tmp4 [V06,T07] ( 4, 1 ) ubyte -> rax "Inline return value spill temp"
+; V07 tmp5 [V07,T05] ( 2, 1.23) byref -> rdi single-def "impAppendStmt"
;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp10 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V13 cse0 [V13,T04] ( 3, 1.50) long -> r14 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M3985_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rdi
- ; gcrRegs +[rbx]
- mov r15, rsi
+ push rax
+ lea rbp, [rsp+0x20]
+ mov r15, rdi
; gcrRegs +[r15]
- ;; size=15 bbWeight=1 PerfScore 4.00
+ mov rbx, rsi
+ ; gcrRegs +[rbx]
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M3985_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- test rbx, rbx
+ test r15, r15
jne SHORT G_M3985_IG05
;; size=5 bbWeight=1 PerfScore 1.25
-G_M3985_IG03: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+G_M3985_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
xor eax, eax
- test r15, r15
+ test rbx, rbx
sete al
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M3985_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
G_M3985_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- test r15, r15
+ ; gcrRegs +[r15]
+ test rbx, rbx
jne SHORT G_M3985_IG07
xor eax, eax
;; size=7 bbWeight=0.50 PerfScore 0.75
G_M3985_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
G_M3985_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp rbx, r15
+ cmp r15, rbx
je SHORT G_M3985_IG08
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x48]
+ mov r14, qword ptr [r15]
+ mov rax, qword ptr [r14+0x48]
call [rax+0x10]<unknown method>
; gcrRegs -[rsi rdi]
test eax, eax
@@ -81,81 +88,84 @@ G_M3985_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M3985_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
G_M3985_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r15]
+ mov rdi, r15
+ ; gcrRegs +[rdi]
+ mov rax, qword ptr [r14+0x50]
+ call [rax]<unknown method>
+ ; gcrRegs -[rdi r15] +[rax]
+ mov r15, rax
+ ; gcrRegs +[r15]
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x50]
- call [rax]<unknown method>
- ; gcrRegs -[rbx rdi] +[rax]
- mov rbx, rax
- ; gcrRegs +[rbx]
- mov rdi, r15
- ; gcrRegs +[rdi]
- mov rax, qword ptr [r15]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0x50]
call [rax]<unknown method>
- ; gcrRegs -[rdi r15] +[rax]
+ ; gcrRegs -[rbx rdi] +[rax]
mov rsi, rax
; gcrRegs +[rsi]
- cmp rbx, rsi
+ cmp r15, rsi
jne SHORT G_M3985_IG12
- ;; size=35 bbWeight=0.50 PerfScore 8.12
+ ;; size=32 bbWeight=0.50 PerfScore 7.12
G_M3985_IG11: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rbx rsi]
+ ; gcrRegs -[rax rsi r15]
mov eax, 1
jmp SHORT G_M3985_IG17
;; size=7 bbWeight=0.06 PerfScore 0.14
-G_M3985_IG12: ; bbWeight=0.44, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi]
- test rbx, rbx
+G_M3985_IG12: ; bbWeight=0.44, gcrefRegs=8040 {rsi r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rsi r15]
+ test r15, r15
je SHORT G_M3985_IG15
;; size=5 bbWeight=0.44 PerfScore 0.55
-G_M3985_IG13: ; bbWeight=0.44, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M3985_IG13: ; bbWeight=0.44, gcrefRegs=8040 {rsi r15}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
je SHORT G_M3985_IG15
;; size=5 bbWeight=0.44 PerfScore 0.55
-G_M3985_IG14: ; bbWeight=0.44, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rbx+0x08]
+G_M3985_IG14: ; bbWeight=0.44, gcrefRegs=8040 {rsi r15}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [r15+0x08]
cmp eax, dword ptr [rsi+0x08]
je SHORT G_M3985_IG16
- ;; size=8 bbWeight=0.44 PerfScore 2.63
+ ;; size=9 bbWeight=0.44 PerfScore 2.63
G_M3985_IG15: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rsi]
+ ; gcrRegs -[rsi r15]
xor eax, eax
jmp SHORT G_M3985_IG17
;; size=4 bbWeight=0.13 PerfScore 0.29
-G_M3985_IG16: ; bbWeight=0.31, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx rsi]
- lea rdi, bword ptr [rbx+0x0C]
+G_M3985_IG16: ; bbWeight=0.31, gcrefRegs=8040 {rsi r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi r15]
+ lea rdi, bword ptr [r15+0x0C]
; byrRegs +[rdi]
add rsi, 12
; gcrRegs -[rsi]
; byrRegs +[rsi]
- mov edx, dword ptr [rbx+0x08]
+ mov edx, dword ptr [r15+0x08]
add edx, edx
call [<unknown method>]
- ; gcrRegs -[rbx]
+ ; gcrRegs -[r15]
; byrRegs -[rsi rdi]
- ;; size=19 bbWeight=0.31 PerfScore 1.84
+ ;; size=20 bbWeight=0.31 PerfScore 1.84
G_M3985_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M3985_IG18: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 169, prolog size 9, PerfScore 31.12, instruction count 69, allocated bytes for code 169 (MethodHash=24b3f06e) for method Microsoft.Build.Shared.EncodingUtilities:SimilarToEncoding(System.Text.Encoding,System.Text.Encoding):ubyte (FullOpts)
+; Total bytes of code 195, prolog size 12, PerfScore 33.62, instruction count 78, allocated bytes for code 195 (MethodHash=24b3f06e) for method Microsoft.Build.Shared.EncodingUtilities:SimilarToEncoding(System.Text.Encoding,System.Text.Encoding):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -163,11 +173,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -8,50 +8,52 @@
; 1 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 8, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CSharp.CSharpModifierAttributeConverter>
+; V00 this [V00,T05] ( 8, 5.36) ref -> rbx this class-hnd single-def <Microsoft.CSharp.CSharpModifierAttributeConverter>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Globalization.CultureInfo>
; V03 arg3 [V03,T06] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Object>
; V04 loc0 [V04,T01] ( 6, 18.81) ref -> r15 class-hnd exact <System.String>
; V05 loc1 [V05,T03] ( 4, 9 ) ref -> r14 class-hnd exact single-def <<unknown class>>
-; V06 loc2 [V06,T02] ( 7, 17.50) int -> r13
+; V06 loc2 [V06,T02] ( 7, 17.86) int -> r13
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
; V09 tmp2 [V09,T07] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
-; V10 tmp3 [V10,T00] ( 6, 53.12) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
+; V10 tmp3 [V10,T00] ( 6, 53.12) ref -> r12 class-hnd exact "Inlining Arg" <System.String>
; V11 tmp4 [V11,T04] ( 2, 8 ) byref -> rdi "impAppendStmt"
;* V12 tmp5 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp6 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp10 [V17,T08] ( 3, 3 ) ref -> rax single-def "arr expr"
+; V17 tmp10 [V17,T08] ( 3, 4.08) ref -> rax single-def "arr expr"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M35171_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- lea rbp, [rsp+0x20]
+ push rax
+ lea rbp, [rsp+0x30]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 5.75
-G_M35171_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=19 bbWeight=1 PerfScore 7.75
+G_M35171_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
mov r15, rcx
; gcrRegs +[r15]
test r15, r15
- je SHORT G_M35171_IG09
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M35171_IG03: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ je G_M35171_IG11
+ ;; size=12 bbWeight=1 PerfScore 1.50
+G_M35171_IG03: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rdi, 0xD1FFAB1E ; System.String
cmp qword ptr [r15], rdi
- jne SHORT G_M35171_IG09
- ;; size=15 bbWeight=0.25 PerfScore 1.06
+ jne G_M35171_IG11
+ ;; size=19 bbWeight=0.25 PerfScore 1.06
G_M35171_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx
; gcrRegs +[rdi]
@@ -64,58 +66,19 @@ G_M35171_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcrRegs +[r14]
xor r13d, r13d
cmp dword ptr [r14+0x08], 0
- jle SHORT G_M35171_IG09
+ jle SHORT G_M35171_IG11
;; size=26 bbWeight=0.50 PerfScore 5.88
G_M35171_IG05: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov edx, r13d
- mov rdx, gword ptr [r14+8*rdx+0x10]
- ; gcrRegs +[rdx]
- cmp byte ptr [rdx], dl
- cmp rdx, r15
- je SHORT G_M35171_IG11
- ;; size=15 bbWeight=4 PerfScore 26.00
-G_M35171_IG06: ; bbWeight=10.56, gcrefRegs=C00C {rdx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov esi, dword ptr [rdx+0x08]
- cmp esi, dword ptr [r15+0x08]
+ mov edi, r13d
+ mov r12, gword ptr [r14+8*rdi+0x10]
+ ; gcrRegs +[r12]
+ cmp byte ptr [r12], r12b
+ cmp r12, r15
jne SHORT G_M35171_IG08
- ;; size=9 bbWeight=10.56 PerfScore 63.35
-G_M35171_IG07: ; bbWeight=2, gcrefRegs=C00C {rdx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- lea rdi, bword ptr [rdx+0x0C]
- ; byrRegs +[rdi]
- mov edx, dword ptr [rdx+0x08]
- ; gcrRegs -[rdx]
- add edx, edx
- lea rsi, bword ptr [r15+0x0C]
- ; byrRegs +[rsi]
- call [<unknown method>]
- ; byrRegs -[rsi rdi]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M35171_IG11
- ;; size=23 bbWeight=2 PerfScore 15.00
-G_M35171_IG08: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- inc r13d
- cmp dword ptr [r14+0x08], r13d
- jg SHORT G_M35171_IG05
- ;; size=9 bbWeight=4 PerfScore 17.00
-G_M35171_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14-r15]
- mov rdi, rbx
- ; gcrRegs +[rdi]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x58]
- ;; size=10 bbWeight=0.50 PerfScore 2.12
-G_M35171_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop rbx
- pop r13
- pop r14
- pop r15
- pop rbp
- tail.jmp [rax+0x10]<unknown method>
- ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M35171_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rdi]
+ ;; size=17 bbWeight=4 PerfScore 26.00
+G_M35171_IG06: ; bbWeight=0.68, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r12 r14-r15]
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, qword ptr [rbx]
@@ -125,25 +88,69 @@ G_M35171_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcr arg pop 0
cmp r13d, dword ptr [rax+0x08]
jae SHORT G_M35171_IG13
- mov ecx, r13d
- mov rax, gword ptr [rax+8*rcx+0x10]
- ;; size=26 bbWeight=0.50 PerfScore 6.75
-G_M35171_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ mov edx, r13d
+ mov rax, gword ptr [rax+8*rdx+0x10]
+ ;; size=26 bbWeight=0.68 PerfScore 9.18
+G_M35171_IG07: ; bbWeight=0.68, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=15 bbWeight=0.68 PerfScore 2.89
+G_M35171_IG08: ; bbWeight=10.56, gcVars=0000000000000000 {}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rbx r12 r14-r15]
+ mov edx, dword ptr [r12+0x08]
+ cmp edx, dword ptr [r15+0x08]
+ jne SHORT G_M35171_IG10
+ ;; size=11 bbWeight=10.56 PerfScore 63.35
+G_M35171_IG09: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ lea rdi, bword ptr [r12+0x0C]
+ ; byrRegs +[rdi]
+ mov edx, dword ptr [r12+0x08]
+ add edx, edx
+ lea rsi, bword ptr [r15+0x0C]
+ ; byrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[r12]
+ ; byrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M35171_IG06
+ ;; size=26 bbWeight=2 PerfScore 15.00
+G_M35171_IG10: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ inc r13d
+ cmp dword ptr [r14+0x08], r13d
+ jg SHORT G_M35171_IG05
+ ;; size=9 bbWeight=4 PerfScore 17.00
+G_M35171_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14-r15]
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rax+0x58]
+ ;; size=10 bbWeight=0.50 PerfScore 2.12
+G_M35171_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ tail.jmp [rax+0x10]<unknown method>
+ ;; size=18 bbWeight=0.50 PerfScore 2.62
G_M35171_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
+ ; gcrRegs -[rbx rdi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 16, PerfScore 148.41, instruction count 64, allocated bytes for code 184 (MethodHash=e6b8769c) for method Microsoft.CSharp.CSharpModifierAttributeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
+; Total bytes of code 214, prolog size 19, PerfScore 154.36, instruction count 70, allocated bytes for code 214 (MethodHash=e6b8769c) for method Microsoft.CSharp.CSharpModifierAttributeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -151,12 +158,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0B
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -10,98 +10,79 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> rbx class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> r15 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> r15 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> rax single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> r14 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> rsi "CSE - moderate"
+; V08 tmp5 [V08,T07] ( 2, 1 ) ubyte -> rdi single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T05] ( 3, 1.50) long -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]
- ;; size=18 bbWeight=1 PerfScore 6.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M16591_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test r15, r15
- je SHORT G_M16591_IG07
+ je SHORT G_M16591_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [r15]
- mov r14, 0xD1FFAB1E ; <unknown class>
- cmp rsi, r14
- jne SHORT G_M16591_IG07
- je SHORT G_M16591_IG05
- ;; size=20 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rsi, r15
- ; gcrRegs +[rsi]
- mov rdi, r14
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.25 PerfScore 0.88
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- mov rdi, r14
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [r15], rdi
+ je SHORT G_M16591_IG06
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ movzx rdi, byte ptr [rbx+0x10]
+ mov byte ptr [rbx+0x10], 0
+ test edi, edi
+ je SHORT G_M16591_IG08
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=15 bbWeight=0.50 PerfScore 2.25
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
mov edi, dword ptr [r15+0x08]
mov dword ptr [rax+0x08], edi
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx]
- movzx rax, byte ptr [rbx+0x10]
- mov byte ptr [rbx+0x10], 0
- test eax, eax
- je SHORT G_M16591_IG09
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rbx], rdi
- je SHORT G_M16591_IG11
+ je SHORT G_M16591_IG10
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
call [CORINFO_HELP_CHKCASTCLASS_SPECIAL]
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
;; size=9 bbWeight=0.25 PerfScore 0.81
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rsi]
@@ -113,16 +94,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov rdi, gword ptr [rax+0x08]
; gcrRegs +[rdi]
;; size=23 bbWeight=0.50 PerfScore 2.38
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
tail.jmp [rax+0x18]<unknown method>
- ;; size=14 bbWeight=0.50 PerfScore 2.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 167, prolog size 18, PerfScore 25.44, instruction count 55, allocated bytes for code 167 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 127, prolog size 15, PerfScore 21.19, instruction count 41, allocated bytes for code 127 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -130,13 +109,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -10,99 +10,80 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> rbx class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> r15 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> r15 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> rax single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> r14 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> rsi "CSE - moderate"
+; V08 tmp5 [V08,T07] ( 2, 1 ) ubyte -> rdi single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T05] ( 3, 1.50) long -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]
- ;; size=18 bbWeight=1 PerfScore 6.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M16591_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test r15, r15
- je SHORT G_M16591_IG07
+ je SHORT G_M16591_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [r15]
- mov r14, 0xD1FFAB1E ; <unknown class>
- cmp rsi, r14
- jne SHORT G_M16591_IG07
- je SHORT G_M16591_IG05
- ;; size=20 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rsi, r15
- ; gcrRegs +[rsi]
- mov rdi, r14
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.25 PerfScore 0.88
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- mov rdi, r14
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [r15], rdi
+ je SHORT G_M16591_IG06
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ movzx rdi, byte ptr [rbx+0x10]
+ mov byte ptr [rbx+0x10], 0
+ test edi, edi
+ je SHORT G_M16591_IG08
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=15 bbWeight=0.50 PerfScore 2.25
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
mov edi, dword ptr [r15+0x08]
neg edi
mov dword ptr [rax+0x08], edi
- ;; size=17 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx]
- movzx rax, byte ptr [rbx+0x10]
- mov byte ptr [rbx+0x10], 0
- test eax, eax
- je SHORT G_M16591_IG09
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rbx], rdi
- je SHORT G_M16591_IG11
+ je SHORT G_M16591_IG10
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
call [CORINFO_HELP_CHKCASTCLASS_SPECIAL]
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
;; size=9 bbWeight=0.25 PerfScore 0.81
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rsi]
@@ -114,16 +95,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov rdi, gword ptr [rax+0x08]
; gcrRegs +[rdi]
;; size=23 bbWeight=0.50 PerfScore 2.38
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
tail.jmp [rax+0x18]<unknown method>
- ;; size=14 bbWeight=0.50 PerfScore 2.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 169, prolog size 18, PerfScore 25.56, instruction count 56, allocated bytes for code 169 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 129, prolog size 15, PerfScore 21.31, instruction count 42, allocated bytes for code 129 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -131,13 +110,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -10,101 +10,82 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> rbx class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> r15 class-hnd single-def <System.Object>
-; V03 loc0 [V03,T08] ( 2, 1 ) int -> rbx single-def
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> r15 class-hnd single-def <System.Object>
+; V03 loc0 [V03,T07] ( 2, 1 ) int -> rbx single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T10] ( 0, 0 ) int -> zero-ref
+;* V05 tmp1 [V05,T09] ( 0, 0 ) int -> zero-ref
; V06 tmp2 [V06,T03] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V07 tmp3 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V07 tmp3 [V07,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V08 tmp4 [V08,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <<unknown class>>
-; V10 tmp6 [V10,T09] ( 2, 1 ) ubyte -> rax single-def "Inline stloc first use temp"
-; V11 tmp7 [V11,T05] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
-; V12 cse0 [V12,T04] ( 5, 2.25) long -> r14 "CSE - aggressive"
-; V13 cse1 [V13,T06] ( 3, 1.50) long -> rsi "CSE - moderate"
+; V10 tmp6 [V10,T08] ( 2, 1 ) ubyte -> rdi single-def "Inline stloc first use temp"
+; V11 tmp7 [V11,T04] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
+; V12 cse0 [V12,T05] ( 3, 1.50) long -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]
- ;; size=18 bbWeight=1 PerfScore 6.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M16591_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test r15, r15
- je SHORT G_M16591_IG07
+ je SHORT G_M16591_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [r15]
- mov r14, 0xD1FFAB1E ; <unknown class>
- cmp rsi, r14
- jne SHORT G_M16591_IG07
- je SHORT G_M16591_IG05
- ;; size=20 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rsi, r15
- ; gcrRegs +[rsi]
- mov rdi, r14
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.25 PerfScore 0.88
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [r15], rdi
+ je SHORT G_M16591_IG06
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ movzx rdi, byte ptr [rbx+0x10]
+ mov byte ptr [rbx+0x10], 0
+ test edi, edi
+ je SHORT G_M16591_IG08
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=15 bbWeight=0.50 PerfScore 2.25
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
mov ebx, dword ptr [r15+0x08]
inc ebx
- mov rdi, r14
call CORINFO_HELP_NEWSFAST
; gcrRegs -[r15] +[rax]
; gcr arg pop 0
mov dword ptr [rax+0x08], ebx
- ;; size=17 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx r15]
- movzx rax, byte ptr [rbx+0x10]
- mov byte ptr [rbx+0x10], 0
- test eax, eax
- je SHORT G_M16591_IG09
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rbx], rdi
- je SHORT G_M16591_IG11
+ je SHORT G_M16591_IG10
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
call [CORINFO_HELP_CHKCASTCLASS_SPECIAL]
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
;; size=9 bbWeight=0.25 PerfScore 0.81
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rsi]
@@ -116,16 +97,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov rdi, gword ptr [rax+0x08]
; gcrRegs +[rdi]
;; size=23 bbWeight=0.50 PerfScore 2.38
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
tail.jmp [rax+0x18]<unknown method>
- ;; size=14 bbWeight=0.50 PerfScore 2.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 169, prolog size 18, PerfScore 25.56, instruction count 56, allocated bytes for code 169 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 129, prolog size 15, PerfScore 21.31, instruction count 42, allocated bytes for code 129 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -133,13 +112,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
1+Node[System.ValueTuple
3[int,int,System.__Canon]]:ItemRef(int):byref:this (Tier1)@@ -16,27 +16,75 @@
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T05] ( 2, 1.13) byref -> rax single-def "Inline return value spill temp"
; V06 tmp4 [V06,T06] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V07 cse0 [V07,T03] ( 4, 2.66) int -> rcx "CSE - aggressive"
+; V07 cse0 [V07,T03] ( 4, 2.66) int -> rbx "CSE - aggressive"
; V08 cse1 [V08,T04] ( 3, 2.39) ref -> rax "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M27713_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M27713_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M27713_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
test esi, esi
- jl SHORT G_M27713_IG03
+ jl SHORT G_M27713_IG10
xor eax, eax
cmp esi, dword ptr [rdi+0x18]
setl al
test al, al
- jne SHORT G_M27713_IG04
- ;; size=16 bbWeight=1 PerfScore 6.75
-G_M27713_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M27713_IG10
+ mov rax, gword ptr [rdi+0x08]
+ ; gcrRegs +[rax]
+ mov ebx, dword ptr [rax+0x18]
+ cmp esi, ebx
+ jge SHORT G_M27713_IG05
+ ;; size=27 bbWeight=1 PerfScore 12.00
+G_M27713_IG03: ; bbWeight=0.39, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ ;; size=3 bbWeight=0.39 PerfScore 0.10
+G_M27713_IG04: ; bbWeight=0.39, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this]
+ ; gcr arg pop 0
+ ;; size=12 bbWeight=0.39 PerfScore 1.26
+G_M27713_IG05: ; bbWeight=0.61, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ cmp esi, ebx
+ jle SHORT G_M27713_IG08
+ ;; size=4 bbWeight=0.61 PerfScore 0.77
+G_M27713_IG06: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ sub esi, ebx
+ dec esi
+ mov rdi, gword ptr [rdi+0x10]
+ cmp dword ptr [rdi], edi
+ ;; size=10 bbWeight=0.05 PerfScore 0.27
+G_M27713_IG07: ; bbWeight=0.05, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this]
+ ; gcr arg pop 0
+ ;; size=12 bbWeight=0.05 PerfScore 0.16
+G_M27713_IG08: ; bbWeight=0.56, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+ lea rax, bword ptr [rdi+0x20]
+ ; byrRegs +[rax]
+ ;; size=4 bbWeight=0.56 PerfScore 0.28
+G_M27713_IG09: ; bbWeight=0.56, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ ret
+ ;; size=7 bbWeight=0.56 PerfScore 1.27
+G_M27713_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rax]
mov edi, 0x57F
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -51,57 +99,8 @@ G_M27713_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=32 bbWeight=0 PerfScore 0.00
-G_M27713_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
- mov rax, gword ptr [rdi+0x08]
- ; gcrRegs +[rax]
- mov ecx, dword ptr [rax+0x18]
- cmp esi, ecx
- jge SHORT G_M27713_IG06
- ;; size=11 bbWeight=1 PerfScore 5.25
-G_M27713_IG05: ; bbWeight=0.39, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- jmp SHORT G_M27713_IG07
- ;; size=2 bbWeight=0.39 PerfScore 0.77
-G_M27713_IG06: ; bbWeight=0.61, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rdi]
- cmp esi, ecx
- jle SHORT G_M27713_IG09
- jmp SHORT G_M27713_IG11
- ;; size=6 bbWeight=0.61 PerfScore 1.99
-G_M27713_IG07: ; bbWeight=0.39, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi] +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- ;; size=3 bbWeight=0.39 PerfScore 0.10
-G_M27713_IG08: ; bbWeight=0.39, epilog, nogc, extend
- pop rbp
- tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this]
- ; gcr arg pop 0
- ;; size=7 bbWeight=0.39 PerfScore 0.97
-G_M27713_IG09: ; bbWeight=0.56, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- lea rax, bword ptr [rdi+0x20]
- ; byrRegs +[rax]
- ;; size=4 bbWeight=0.56 PerfScore 0.28
-G_M27713_IG10: ; bbWeight=0.56, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.56 PerfScore 0.85
-G_M27713_IG11: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rax]
- sub esi, ecx
- dec esi
- mov rdi, gword ptr [rdi+0x10]
- cmp dword ptr [rdi], edi
- ;; size=10 bbWeight=0.05 PerfScore 0.27
-G_M27713_IG12: ; bbWeight=0.05, epilog, nogc, extend
- pop rbp
- tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this]
- ; gcr arg pop 0
- ;; size=7 bbWeight=0.05 PerfScore 0.12
-; Total bytes of code 104, prolog size 4, PerfScore 18.60, instruction count 36, allocated bytes for code 104 (MethodHash=a29a93be) for method System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRef(int):byref:this (Tier1)
+; Total bytes of code 119, prolog size 8, PerfScore 19.60, instruction count 42, allocated bytes for code 119 (MethodHash=a29a93be) for method System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRef(int):byref:this (Tier1)
; ============================================================
Unwind Info:
@@ -109,9 +108,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -16,29 +16,79 @@
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T05] ( 2, 0.71) byref -> rax single-def "Inline return value spill temp"
; V06 tmp4 [V06,T06] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V07 cse0 [V07,T03] ( 4, 2.77) int -> rcx "CSE - aggressive"
+; V07 cse0 [V07,T03] ( 4, 2.77) int -> rbx "CSE - aggressive"
; V08 cse1 [V08,T04] ( 3, 2.44) ref -> rax "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M46553_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M46553_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M46553_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
test esi, esi
- jl SHORT G_M46553_IG04
+ jl SHORT G_M46553_IG12
;; size=4 bbWeight=1 PerfScore 1.25
G_M46553_IG03: ; bbWeight=0.99, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
xor eax, eax
cmp esi, dword ptr [rdi+0x1C]
setl al
test al, al
- jne SHORT G_M46553_IG05
+ je SHORT G_M46553_IG12
;; size=12 bbWeight=0.99 PerfScore 5.45
-G_M46553_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46553_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ mov rax, gword ptr [rdi+0x08]
+ ; gcrRegs +[rax]
+ mov ebx, dword ptr [rax+0x1C]
+ cmp esi, ebx
+ jge SHORT G_M46553_IG07
+ ;; size=11 bbWeight=1 PerfScore 5.25
+G_M46553_IG05: ; bbWeight=0.44, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ ;; size=3 bbWeight=0.44 PerfScore 0.11
+G_M46553_IG06: ; bbWeight=0.44, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this]
+ ; gcr arg pop 0
+ ;; size=12 bbWeight=0.44 PerfScore 1.42
+G_M46553_IG07: ; bbWeight=0.56, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ cmp esi, ebx
+ jle SHORT G_M46553_IG10
+ ;; size=4 bbWeight=0.56 PerfScore 0.70
+G_M46553_IG08: ; bbWeight=0.21, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ sub esi, ebx
+ dec esi
+ mov rdi, gword ptr [rdi+0x10]
+ cmp dword ptr [rdi], edi
+ ;; size=10 bbWeight=0.21 PerfScore 1.14
+G_M46553_IG09: ; bbWeight=0.21, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this]
+ ; gcr arg pop 0
+ ;; size=12 bbWeight=0.21 PerfScore 0.67
+G_M46553_IG10: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+ lea rax, bword ptr [rdi+0x18]
+ ; byrRegs +[rax]
+ ;; size=4 bbWeight=0.36 PerfScore 0.18
+G_M46553_IG11: ; bbWeight=0.36, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ ret
+ ;; size=7 bbWeight=0.36 PerfScore 0.80
+G_M46553_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rax]
mov edi, 0x57F
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -53,57 +103,8 @@ G_M46553_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=32 bbWeight=0 PerfScore 0.00
-G_M46553_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
- mov rax, gword ptr [rdi+0x08]
- ; gcrRegs +[rax]
- mov ecx, dword ptr [rax+0x1C]
- cmp esi, ecx
- jge SHORT G_M46553_IG07
- ;; size=11 bbWeight=1 PerfScore 5.25
-G_M46553_IG06: ; bbWeight=0.44, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- jmp SHORT G_M46553_IG08
- ;; size=2 bbWeight=0.44 PerfScore 0.87
-G_M46553_IG07: ; bbWeight=0.56, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rdi]
- cmp esi, ecx
- jle SHORT G_M46553_IG10
- jmp SHORT G_M46553_IG12
- ;; size=6 bbWeight=0.56 PerfScore 1.83
-G_M46553_IG08: ; bbWeight=0.44, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi] +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- ;; size=3 bbWeight=0.44 PerfScore 0.11
-G_M46553_IG09: ; bbWeight=0.44, epilog, nogc, extend
- pop rbp
- tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this]
- ; gcr arg pop 0
- ;; size=7 bbWeight=0.44 PerfScore 1.09
-G_M46553_IG10: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- lea rax, bword ptr [rdi+0x18]
- ; byrRegs +[rax]
- ;; size=4 bbWeight=0.36 PerfScore 0.18
-G_M46553_IG11: ; bbWeight=0.36, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.36 PerfScore 0.53
-G_M46553_IG12: ; bbWeight=0.21, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rax]
- sub esi, ecx
- dec esi
- mov rdi, gword ptr [rdi+0x10]
- cmp dword ptr [rdi], edi
- ;; size=10 bbWeight=0.21 PerfScore 1.14
-G_M46553_IG13: ; bbWeight=0.21, epilog, nogc, extend
- pop rbp
- tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRefUnchecked(int):byref:this]
- ; gcr arg pop 0
- ;; size=7 bbWeight=0.21 PerfScore 0.52
-; Total bytes of code 104, prolog size 4, PerfScore 19.47, instruction count 36, allocated bytes for code 104 (MethodHash=90984a26) for method System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRef(int):byref:this (Tier1)
+; Total bytes of code 119, prolog size 8, PerfScore 20.47, instruction count 42, allocated bytes for code 119 (MethodHash=90984a26) for method System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRef(int):byref:this (Tier1)
; ============================================================
Unwind Info:
@@ -111,9 +112,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
1+Node[System.ValueTuple
3[int,int,System.__Canon]]:ItemRef(int):byref:this (Tier1)@@ -16,27 +16,75 @@
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T05] ( 2, 1.20) byref -> rax single-def "Inline return value spill temp"
; V06 tmp4 [V06,T06] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V07 cse0 [V07,T03] ( 4, 2.68) int -> rcx "CSE - aggressive"
+; V07 cse0 [V07,T03] ( 4, 2.68) int -> rbx "CSE - aggressive"
; V08 cse1 [V08,T04] ( 3, 2.36) ref -> rax "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
-G_M27713_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M27713_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx
+ push rax
+ lea rbp, [rsp+0x10]
+ ;; size=8 bbWeight=1 PerfScore 3.50
G_M27713_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
test esi, esi
- jl SHORT G_M27713_IG03
+ jl SHORT G_M27713_IG10
xor eax, eax
cmp esi, dword ptr [rdi+0x18]
setl al
test al, al
- jne SHORT G_M27713_IG04
- ;; size=16 bbWeight=1 PerfScore 6.75
-G_M27713_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M27713_IG10
+ mov rax, gword ptr [rdi+0x08]
+ ; gcrRegs +[rax]
+ mov ebx, dword ptr [rax+0x18]
+ cmp esi, ebx
+ jge SHORT G_M27713_IG05
+ ;; size=27 bbWeight=1 PerfScore 12.00
+G_M27713_IG03: ; bbWeight=0.36, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ ;; size=3 bbWeight=0.36 PerfScore 0.09
+G_M27713_IG04: ; bbWeight=0.36, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this]
+ ; gcr arg pop 0
+ ;; size=12 bbWeight=0.36 PerfScore 1.17
+G_M27713_IG05: ; bbWeight=0.64, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ cmp esi, ebx
+ jle SHORT G_M27713_IG08
+ ;; size=4 bbWeight=0.64 PerfScore 0.80
+G_M27713_IG06: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ sub esi, ebx
+ dec esi
+ mov rdi, gword ptr [rdi+0x10]
+ cmp dword ptr [rdi], edi
+ ;; size=10 bbWeight=0.04 PerfScore 0.22
+G_M27713_IG07: ; bbWeight=0.04, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this]
+ ; gcr arg pop 0
+ ;; size=12 bbWeight=0.04 PerfScore 0.13
+G_M27713_IG08: ; bbWeight=0.60, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+ lea rax, bword ptr [rdi+0x20]
+ ; byrRegs +[rax]
+ ;; size=4 bbWeight=0.60 PerfScore 0.30
+G_M27713_IG09: ; bbWeight=0.60, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop rbp
+ ret
+ ;; size=7 bbWeight=0.60 PerfScore 1.35
+G_M27713_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rax]
mov edi, 0x57F
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -51,57 +99,8 @@ G_M27713_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=32 bbWeight=0 PerfScore 0.00
-G_M27713_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
- mov rax, gword ptr [rdi+0x08]
- ; gcrRegs +[rax]
- mov ecx, dword ptr [rax+0x18]
- cmp esi, ecx
- jge SHORT G_M27713_IG06
- ;; size=11 bbWeight=1 PerfScore 5.25
-G_M27713_IG05: ; bbWeight=0.36, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- jmp SHORT G_M27713_IG07
- ;; size=2 bbWeight=0.36 PerfScore 0.72
-G_M27713_IG06: ; bbWeight=0.64, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rdi]
- cmp esi, ecx
- jle SHORT G_M27713_IG09
- jmp SHORT G_M27713_IG11
- ;; size=6 bbWeight=0.64 PerfScore 2.08
-G_M27713_IG07: ; bbWeight=0.36, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi] +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- ;; size=3 bbWeight=0.36 PerfScore 0.09
-G_M27713_IG08: ; bbWeight=0.36, epilog, nogc, extend
- pop rbp
- tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this]
- ; gcr arg pop 0
- ;; size=7 bbWeight=0.36 PerfScore 0.90
-G_M27713_IG09: ; bbWeight=0.60, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- lea rax, bword ptr [rdi+0x20]
- ; byrRegs +[rax]
- ;; size=4 bbWeight=0.60 PerfScore 0.30
-G_M27713_IG10: ; bbWeight=0.60, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.60 PerfScore 0.90
-G_M27713_IG11: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rax]
- sub esi, ecx
- dec esi
- mov rdi, gword ptr [rdi+0x10]
- cmp dword ptr [rdi], edi
- ;; size=10 bbWeight=0.04 PerfScore 0.22
-G_M27713_IG12: ; bbWeight=0.04, epilog, nogc, extend
- pop rbp
- tail.jmp [System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRefUnchecked(int):byref:this]
- ; gcr arg pop 0
- ;; size=7 bbWeight=0.04 PerfScore 0.10
-; Total bytes of code 104, prolog size 4, PerfScore 18.56, instruction count 36, allocated bytes for code 104 (MethodHash=a29a93be) for method System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRef(int):byref:this (Tier1)
+; Total bytes of code 119, prolog size 8, PerfScore 19.56, instruction count 42, allocated bytes for code 119 (MethodHash=a29a93be) for method System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRef(int):byref:this (Tier1)
; ============================================================
Unwind Info:
@@ -109,9 +108,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -10,101 +10,82 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> rbx class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> r15 class-hnd single-def <System.Object>
-; V03 loc0 [V03,T08] ( 2, 1 ) int -> rbx single-def
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> r15 class-hnd single-def <System.Object>
+; V03 loc0 [V03,T07] ( 2, 1 ) int -> rbx single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T10] ( 0, 0 ) int -> zero-ref
+;* V05 tmp1 [V05,T09] ( 0, 0 ) int -> zero-ref
; V06 tmp2 [V06,T03] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V07 tmp3 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V07 tmp3 [V07,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V08 tmp4 [V08,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <<unknown class>>
-; V10 tmp6 [V10,T09] ( 2, 1 ) ubyte -> rax single-def "Inline stloc first use temp"
-; V11 tmp7 [V11,T05] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
-; V12 cse0 [V12,T04] ( 5, 2.25) long -> r14 "CSE - aggressive"
-; V13 cse1 [V13,T06] ( 3, 1.50) long -> rsi "CSE - moderate"
+; V10 tmp6 [V10,T08] ( 2, 1 ) ubyte -> rdi single-def "Inline stloc first use temp"
+; V11 tmp7 [V11,T04] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
+; V12 cse0 [V12,T05] ( 3, 1.50) long -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]
- ;; size=18 bbWeight=1 PerfScore 6.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M16591_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test r15, r15
- je SHORT G_M16591_IG07
+ je SHORT G_M16591_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [r15]
- mov r14, 0xD1FFAB1E ; <unknown class>
- cmp rsi, r14
- jne SHORT G_M16591_IG07
- je SHORT G_M16591_IG05
- ;; size=20 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rsi, r15
- ; gcrRegs +[rsi]
- mov rdi, r14
- call [CORINFO_HELP_UNBOX]
- ; gcrRegs -[rsi]
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.25 PerfScore 0.88
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [r15], rdi
+ je SHORT G_M16591_IG06
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ movzx rdi, byte ptr [rbx+0x10]
+ mov byte ptr [rbx+0x10], 0
+ test edi, edi
+ je SHORT G_M16591_IG08
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=15 bbWeight=0.50 PerfScore 2.25
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
mov ebx, dword ptr [r15+0x08]
inc ebx
- mov rdi, r14
call CORINFO_HELP_NEWSFAST
; gcrRegs -[r15] +[rax]
; gcr arg pop 0
mov dword ptr [rax+0x08], ebx
- ;; size=17 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ ;; size=14 bbWeight=0.50 PerfScore 2.12
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx r15]
- movzx rax, byte ptr [rbx+0x10]
- mov byte ptr [rbx+0x10], 0
- test eax, eax
- je SHORT G_M16591_IG09
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rbx], rdi
- je SHORT G_M16591_IG11
+ je SHORT G_M16591_IG10
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
;; size=8 bbWeight=0.25 PerfScore 0.31
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rsi]
@@ -116,16 +97,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov rdi, gword ptr [rax+0x08]
; gcrRegs +[rdi]
;; size=23 bbWeight=0.50 PerfScore 2.38
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
tail.jmp [rax+0x18]<unknown method>
- ;; size=14 bbWeight=0.50 PerfScore 2.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 168, prolog size 18, PerfScore 25.06, instruction count 56, allocated bytes for code 168 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 128, prolog size 15, PerfScore 20.81, instruction count 42, allocated bytes for code 128 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -133,13 +112,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -10,98 +10,79 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> rbx class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> r15 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> r15 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> rax single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> r14 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> rsi "CSE - moderate"
+; V08 tmp5 [V08,T07] ( 2, 1 ) ubyte -> rdi single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T05] ( 3, 1.50) long -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]
- ;; size=18 bbWeight=1 PerfScore 6.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M16591_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test r15, r15
- je SHORT G_M16591_IG07
+ je SHORT G_M16591_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [r15]
- mov r14, 0xD1FFAB1E ; <unknown class>
- cmp rsi, r14
- jne SHORT G_M16591_IG07
- je SHORT G_M16591_IG05
- ;; size=20 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rsi, r15
- ; gcrRegs +[rsi]
- mov rdi, r14
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- ; gcr arg pop 0
- ;; size=11 bbWeight=0.25 PerfScore 0.38
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- mov rdi, r14
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [r15], rdi
+ je SHORT G_M16591_IG06
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ movzx rdi, byte ptr [rbx+0x10]
+ mov byte ptr [rbx+0x10], 0
+ test edi, edi
+ je SHORT G_M16591_IG08
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=15 bbWeight=0.50 PerfScore 2.25
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
mov edi, dword ptr [r15+0x08]
mov dword ptr [rax+0x08], edi
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx]
- movzx rax, byte ptr [rbx+0x10]
- mov byte ptr [rbx+0x10], 0
- test eax, eax
- je SHORT G_M16591_IG09
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rbx], rdi
- je SHORT G_M16591_IG11
+ je SHORT G_M16591_IG10
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
;; size=8 bbWeight=0.25 PerfScore 0.31
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rsi]
@@ -113,16 +94,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov rdi, gword ptr [rax+0x08]
; gcrRegs +[rdi]
;; size=23 bbWeight=0.50 PerfScore 2.38
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
tail.jmp [rax+0x18]<unknown method>
- ;; size=14 bbWeight=0.50 PerfScore 2.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 165, prolog size 18, PerfScore 24.44, instruction count 55, allocated bytes for code 165 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 126, prolog size 15, PerfScore 20.69, instruction count 41, allocated bytes for code 126 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -130,13 +109,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -10,98 +10,79 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> rbx class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> r15 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> r15 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> rax single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> r14 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> rsi "CSE - moderate"
+; V08 tmp5 [V08,T07] ( 2, 1 ) ubyte -> rdi single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T05] ( 3, 1.50) long -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M27952_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
; gcrRegs +[r15]
- ;; size=18 bbWeight=1 PerfScore 6.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M27952_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test r15, r15
- je SHORT G_M27952_IG07
+ je SHORT G_M27952_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M27952_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, qword ptr [r15]
- mov r14, 0xD1FFAB1E ; System.DateTime
- cmp rsi, r14
- jne SHORT G_M27952_IG07
- je SHORT G_M27952_IG05
- ;; size=20 bbWeight=0.50 PerfScore 2.25
-G_M27952_IG04: ; bbWeight=0.25, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rsi, r15
- ; gcrRegs +[rsi]
- mov rdi, r14
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rsi]
- ; gcr arg pop 0
- ;; size=11 bbWeight=0.25 PerfScore 0.38
-G_M27952_IG05: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- mov rdi, r14
+ mov rdi, 0xD1FFAB1E ; System.DateTime
+ cmp qword ptr [r15], rdi
+ je SHORT G_M27952_IG06
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M27952_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ movzx rdi, byte ptr [rbx+0x10]
+ mov byte ptr [rbx+0x10], 0
+ test edi, edi
+ je SHORT G_M27952_IG08
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=15 bbWeight=0.50 PerfScore 2.25
+G_M27952_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M27952_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
mov rdi, qword ptr [r15+0x08]
mov qword ptr [rax+0x08], rdi
- ;; size=16 bbWeight=0.50 PerfScore 2.12
-G_M27952_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ ;; size=13 bbWeight=0.50 PerfScore 2.00
+G_M27952_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M27952_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M27952_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx]
- movzx rax, byte ptr [rbx+0x10]
- mov byte ptr [rbx+0x10], 0
- test eax, eax
- je SHORT G_M27952_IG09
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M27952_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M27952_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rbx], rdi
- je SHORT G_M27952_IG11
+ je SHORT G_M27952_IG10
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M27952_IG10: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M27952_IG09: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
;; size=8 bbWeight=0.25 PerfScore 0.31
-G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M27952_IG10: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rsi]
@@ -113,16 +94,14 @@ G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
mov rdi, gword ptr [rax+0x08]
; gcrRegs +[rdi]
;; size=23 bbWeight=0.50 PerfScore 2.38
-G_M27952_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+G_M27952_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
tail.jmp [rax+0x18]<unknown method>
- ;; size=14 bbWeight=0.50 PerfScore 2.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 166, prolog size 18, PerfScore 24.44, instruction count 55, allocated bytes for code 166 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
+; Total bytes of code 127, prolog size 15, PerfScore 20.69, instruction count 41, allocated bytes for code 127 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
; ============================================================
Unwind Info:
@@ -130,13 +109,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -21,7 +21,7 @@
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Int128>
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Int128>
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.UInt128>
-; V13 tmp9 [V13 ] ( 3, 3 ) struct (16) [rbp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
+; V13 tmp9 [V13 ] ( 3, 0 ) struct (16) [rbp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.UInt128>
;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.UInt128>
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.UInt128>
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline stloc first use temp" <System.UInt128>
@@ -49,39 +49,39 @@
;* V38 tmp34 [V38 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V40 tmp36 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V41 tmp37 [V41,T44] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V42 tmp38 [V42,T16] ( 2, 2 ) long -> rsi "Inline stloc first use temp"
+;* V41 tmp37 [V41,T45] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V42 tmp38 [V42,T16] ( 2, 0 ) long -> rsi "Inline stloc first use temp"
;* V43 tmp39 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V44 tmp40 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V45 tmp41 [V45 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V46 tmp42 [V46 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V47 tmp43 [V47,T06] ( 3, 3 ) long -> r8 "Inline stloc first use temp"
+; V47 tmp43 [V47,T06] ( 3, 0 ) long -> r9 "Inline stloc first use temp"
;* V48 tmp44 [V48 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V49 tmp45 [V49,T17] ( 2, 2 ) long -> rdx "Inline stloc first use temp"
+; V49 tmp45 [V49,T17] ( 2, 0 ) long -> rdx "Inline stloc first use temp"
;* V50 tmp46 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V51 tmp47 [V51 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Int128>
;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V53 tmp49 [V53 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V54 tmp50 [V54 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
-;* V56 tmp52 [V56,T45] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V57 tmp53 [V57,T18] ( 2, 2 ) long -> r15 "Inline stloc first use temp"
+;* V56 tmp52 [V56,T46] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V57 tmp53 [V57,T18] ( 2, 0 ) long -> r15 "Inline stloc first use temp"
;* V58 tmp54 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V59 tmp55 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V60 tmp56 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V61 tmp57 [V61 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V62 tmp58 [V62,T04] ( 3, 3 ) long -> rax "Inline stloc first use temp"
+; V62 tmp58 [V62,T04] ( 3, 0 ) long -> rsi "Inline stloc first use temp"
;* V63 tmp59 [V63 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V64 tmp60 [V64,T07] ( 2, 2 ) long -> rdx "Inline stloc first use temp"
+; V64 tmp60 [V64,T07] ( 2, 0 ) long -> rdx "Inline stloc first use temp"
;* V65 tmp61 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V66 tmp62 [V66 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V67 tmp63 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V68 tmp64 [V68 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V69 tmp65 [V69,T53] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V69 tmp65 [V69,T47] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V70 tmp66 [V70 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V71 tmp67 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V72 tmp68 [V72 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V73 tmp69 [V73,T54] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V73 tmp69 [V73,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V74 tmp70 [V74 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V75 tmp71 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V76 tmp72 [V76 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
@@ -89,20 +89,20 @@
;* V78 tmp74 [V78 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V79 tmp75 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V80 tmp76 [V80 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V81 tmp77 [V81,T55] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V81 tmp77 [V81,T49] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V82 tmp78 [V82 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V83 tmp79 [V83 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Int128>
;* V84 tmp80 [V84 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V85 tmp81 [V85,T52] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V85 tmp81 [V85,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V86 tmp82 [V86 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V87 tmp83 [V87,T02] ( 3, 3 ) long -> r14 single-def "field V00._lower (fldOffset=0x0)" P-INDEP
-; V88 tmp84 [V88,T00] ( 4, 4 ) long -> rbx single-def "field V00._upper (fldOffset=0x8)" P-INDEP
-; V89 tmp85 [V89,T03] ( 3, 3 ) long -> r13 single-def "field V01._lower (fldOffset=0x0)" P-INDEP
-; V90 tmp86 [V90,T01] ( 4, 4 ) long -> r15 single-def "field V01._upper (fldOffset=0x8)" P-INDEP
-; V91 tmp87 [V91,T14] ( 3, 2.50) long -> rax "field V02._lower (fldOffset=0x0)" P-INDEP
-; V92 tmp88 [V92,T15] ( 3, 2 ) long -> rdx "field V02._upper (fldOffset=0x8)" P-INDEP
-; V93 tmp89 [V93,T19] ( 2, 2 ) long -> rcx "field V03._lower (fldOffset=0x0)" P-INDEP
-; V94 tmp90 [V94,T05] ( 4, 3 ) long -> rdi "field V03._upper (fldOffset=0x8)" P-INDEP
+; V87 tmp83 [V87,T02] ( 3, 1 ) long -> [rbp-0x28] single-def "field V00._lower (fldOffset=0x0)" P-INDEP
+; V88 tmp84 [V88,T00] ( 4, 1 ) long -> [rbp-0x30] single-def "field V00._upper (fldOffset=0x8)" P-INDEP
+; V89 tmp85 [V89,T03] ( 3, 1 ) long -> [rbp-0x38] single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+; V90 tmp86 [V90,T01] ( 4, 1 ) long -> [rbp-0x40] single-def "field V01._upper (fldOffset=0x8)" P-INDEP
+; V91 tmp87 [V91,T08] ( 3, 0 ) long -> rsi "field V02._lower (fldOffset=0x0)" P-INDEP
+; V92 tmp88 [V92,T09] ( 3, 0 ) long -> rdx "field V02._upper (fldOffset=0x8)" P-INDEP
+; V93 tmp89 [V93,T20] ( 2, 0 ) long -> rcx "field V03._lower (fldOffset=0x0)" P-INDEP
+; V94 tmp90 [V94,T05] ( 4, 0 ) long -> rdi "field V03._upper (fldOffset=0x8)" P-INDEP
;* V95 tmp91 [V95 ] ( 0, 0 ) long -> zero-ref "field V05._lower (fldOffset=0x0)" P-INDEP
;* V96 tmp92 [V96 ] ( 0, 0 ) long -> zero-ref "field V05._upper (fldOffset=0x8)" P-INDEP
;* V97 tmp93 [V97 ] ( 0, 0 ) long -> zero-ref "field V06._lower (fldOffset=0x0)" P-INDEP
@@ -119,153 +119,152 @@
;* V108 tmp104 [V108 ] ( 0, 0 ) long -> zero-ref "field V11._upper (fldOffset=0x8)" P-INDEP
;* V109 tmp105 [V109 ] ( 0, 0 ) long -> zero-ref "field V12._lower (fldOffset=0x0)" P-INDEP
;* V110 tmp106 [V110 ] ( 0, 0 ) long -> zero-ref "field V12._upper (fldOffset=0x8)" P-INDEP
-; V111 tmp107 [V111 ] ( 2, 2 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V13._lower (fldOffset=0x0)" P-DEP
-; V112 tmp108 [V112 ] ( 2, 2 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V13._upper (fldOffset=0x8)" P-DEP
+; V111 tmp107 [V111 ] ( 2, 0 ) long -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V13._lower (fldOffset=0x0)" P-DEP
+; V112 tmp108 [V112 ] ( 2, 0 ) long -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V13._upper (fldOffset=0x8)" P-DEP
;* V113 tmp109 [V113 ] ( 0, 0 ) long -> zero-ref "field V14._lower (fldOffset=0x0)" P-INDEP
;* V114 tmp110 [V114 ] ( 0, 0 ) long -> zero-ref "field V14._upper (fldOffset=0x8)" P-INDEP
;* V115 tmp111 [V115 ] ( 0, 0 ) long -> zero-ref "field V15._lower (fldOffset=0x0)" P-DEP
;* V116 tmp112 [V116 ] ( 0, 0 ) long -> zero-ref "field V15._upper (fldOffset=0x8)" P-DEP
-; V117 tmp113 [V117,T20] ( 2, 2 ) long -> rax "field V16._lower (fldOffset=0x0)" P-INDEP
-; V118 tmp114 [V118,T21] ( 2, 2 ) long -> rdx "field V16._upper (fldOffset=0x8)" P-INDEP
-; V119 tmp115 [V119,T08] ( 3, 3 ) long -> rax "field V17._lower (fldOffset=0x0)" P-INDEP
-; V120 tmp116 [V120,T22] ( 2, 2 ) long -> rdx "field V17._upper (fldOffset=0x8)" P-INDEP
+; V117 tmp113 [V117,T21] ( 2, 0 ) long -> rax "field V16._lower (fldOffset=0x0)" P-INDEP
+; V118 tmp114 [V118,T22] ( 2, 0 ) long -> rdx "field V16._upper (fldOffset=0x8)" P-INDEP
+; V119 tmp115 [V119,T10] ( 3, 0 ) long -> rax "field V17._lower (fldOffset=0x0)" P-INDEP
+; V120 tmp116 [V120,T23] ( 2, 0 ) long -> rdx "field V17._upper (fldOffset=0x8)" P-INDEP
;* V121 tmp117 [V121 ] ( 0, 0 ) long -> zero-ref "field V18._lower (fldOffset=0x0)" P-INDEP
;* V122 tmp118 [V122 ] ( 0, 0 ) long -> zero-ref "field V18._upper (fldOffset=0x8)" P-INDEP
;* V123 tmp119 [V123 ] ( 0, 0 ) long -> zero-ref "field V19._lower (fldOffset=0x0)" P-INDEP
;* V124 tmp120 [V124 ] ( 0, 0 ) long -> zero-ref "field V19._upper (fldOffset=0x8)" P-INDEP
-; V125 tmp121 [V125,T09] ( 3, 3 ) long -> r8 "field V20._lower (fldOffset=0x0)" P-INDEP
-; V126 tmp122 [V126,T23] ( 2, 2 ) long -> rdx "field V20._upper (fldOffset=0x8)" P-INDEP
+; V125 tmp121 [V125,T11] ( 3, 0 ) long -> r9 "field V20._lower (fldOffset=0x0)" P-INDEP
+; V126 tmp122 [V126,T24] ( 2, 0 ) long -> rdx "field V20._upper (fldOffset=0x8)" P-INDEP
;* V127 tmp123 [V127 ] ( 0, 0 ) long -> zero-ref "field V21._lower (fldOffset=0x0)" P-INDEP
;* V128 tmp124 [V128 ] ( 0, 0 ) long -> zero-ref "field V21._upper (fldOffset=0x8)" P-INDEP
;* V129 tmp125 [V129 ] ( 0, 0 ) long -> zero-ref "field V22._lower (fldOffset=0x0)" P-INDEP
;* V130 tmp126 [V130 ] ( 0, 0 ) long -> zero-ref "field V22._upper (fldOffset=0x8)" P-INDEP
-;* V131 tmp127 [V131,T46] ( 0, 0 ) long -> zero-ref "field V23._lower (fldOffset=0x0)" P-INDEP
-;* V132 tmp128 [V132,T47] ( 0, 0 ) long -> zero-ref "field V23._upper (fldOffset=0x8)" P-INDEP
-;* V133 tmp129 [V133,T48] ( 0, 0 ) long -> zero-ref "field V26._lower (fldOffset=0x0)" P-INDEP
-;* V134 tmp130 [V134,T49] ( 0, 0 ) long -> zero-ref "field V26._upper (fldOffset=0x8)" P-INDEP
-; V135 tmp131 [V135,T24] ( 2, 2 ) long -> rcx "field V29._lower (fldOffset=0x0)" P-INDEP
-; V136 tmp132 [V136,T25] ( 2, 2 ) long -> rdi "field V29._upper (fldOffset=0x8)" P-INDEP
-; V137 tmp133 [V137,T26] ( 2, 2 ) long -> rcx "field V30._lower (fldOffset=0x0)" P-INDEP
-; V138 tmp134 [V138,T27] ( 2, 2 ) long -> rdi "field V30._upper (fldOffset=0x8)" P-INDEP
-; V139 tmp135 [V139,T28] ( 2, 2 ) long -> rax "field V33._lower (fldOffset=0x0)" P-INDEP
-; V140 tmp136 [V140,T29] ( 2, 2 ) long -> rdx "field V33._upper (fldOffset=0x8)" P-INDEP
-; V141 tmp137 [V141,T30] ( 2, 2 ) long -> rsi "field V36._lower (fldOffset=0x0)" P-INDEP
-; V142 tmp138 [V142,T10] ( 3, 3 ) long -> rsi "field V36._upper (fldOffset=0x8)" P-INDEP
+;* V131 tmp127 [V131,T50] ( 0, 0 ) long -> zero-ref "field V23._lower (fldOffset=0x0)" P-INDEP
+;* V132 tmp128 [V132,T51] ( 0, 0 ) long -> zero-ref "field V23._upper (fldOffset=0x8)" P-INDEP
+;* V133 tmp129 [V133,T52] ( 0, 0 ) long -> zero-ref "field V26._lower (fldOffset=0x0)" P-INDEP
+;* V134 tmp130 [V134,T53] ( 0, 0 ) long -> zero-ref "field V26._upper (fldOffset=0x8)" P-INDEP
+; V135 tmp131 [V135,T25] ( 2, 0 ) long -> rcx "field V29._lower (fldOffset=0x0)" P-INDEP
+; V136 tmp132 [V136,T26] ( 2, 0 ) long -> rdi "field V29._upper (fldOffset=0x8)" P-INDEP
+; V137 tmp133 [V137,T27] ( 2, 0 ) long -> rcx "field V30._lower (fldOffset=0x0)" P-INDEP
+; V138 tmp134 [V138,T28] ( 2, 0 ) long -> rdi "field V30._upper (fldOffset=0x8)" P-INDEP
+; V139 tmp135 [V139,T29] ( 2, 0 ) long -> rax "field V33._lower (fldOffset=0x0)" P-INDEP
+; V140 tmp136 [V140,T30] ( 2, 0 ) long -> rdx "field V33._upper (fldOffset=0x8)" P-INDEP
+; V141 tmp137 [V141,T31] ( 2, 0 ) long -> rsi "field V36._lower (fldOffset=0x0)" P-INDEP
+; V142 tmp138 [V142,T12] ( 3, 0 ) long -> rsi "field V36._upper (fldOffset=0x8)" P-INDEP
;* V143 tmp139 [V143 ] ( 0, 0 ) long -> zero-ref "field V40._lower (fldOffset=0x0)" P-INDEP
;* V144 tmp140 [V144 ] ( 0, 0 ) long -> zero-ref "field V40._upper (fldOffset=0x8)" P-INDEP
-; V145 tmp141 [V145,T31] ( 2, 2 ) long -> rsi "field V43._lower (fldOffset=0x0)" P-INDEP
-; V146 tmp142 [V146,T32] ( 2, 2 ) long -> rsi "field V43._upper (fldOffset=0x8)" P-INDEP
-; V147 tmp143 [V147,T33] ( 2, 2 ) long -> r13 "field V44._lower (fldOffset=0x0)" P-INDEP
-; V148 tmp144 [V148,T34] ( 2, 2 ) long -> rsi "field V44._upper (fldOffset=0x8)" P-INDEP
-; V149 tmp145 [V149,T35] ( 2, 2 ) long -> r8 "field V50._lower (fldOffset=0x0)" P-INDEP
-; V150 tmp146 [V150,T36] ( 2, 2 ) long -> rdx "field V50._upper (fldOffset=0x8)" P-INDEP
-; V151 tmp147 [V151,T37] ( 2, 2 ) long -> r15 "field V51._lower (fldOffset=0x0)" P-INDEP
-; V152 tmp148 [V152,T11] ( 3, 3 ) long -> r15 "field V51._upper (fldOffset=0x8)" P-INDEP
+; V145 tmp141 [V145,T32] ( 2, 0 ) long -> rsi "field V43._lower (fldOffset=0x0)" P-INDEP
+; V146 tmp142 [V146,T33] ( 2, 0 ) long -> rsi "field V43._upper (fldOffset=0x8)" P-INDEP
+; V147 tmp143 [V147,T34] ( 2, 0 ) long -> r8 "field V44._lower (fldOffset=0x0)" P-INDEP
+; V148 tmp144 [V148,T35] ( 2, 0 ) long -> rsi "field V44._upper (fldOffset=0x8)" P-INDEP
+; V149 tmp145 [V149,T36] ( 2, 0 ) long -> r9 "field V50._lower (fldOffset=0x0)" P-INDEP
+; V150 tmp146 [V150,T37] ( 2, 0 ) long -> rdx "field V50._upper (fldOffset=0x8)" P-INDEP
+; V151 tmp147 [V151,T38] ( 2, 0 ) long -> r15 "field V51._lower (fldOffset=0x0)" P-INDEP
+; V152 tmp148 [V152,T13] ( 3, 0 ) long -> r15 "field V51._upper (fldOffset=0x8)" P-INDEP
;* V153 tmp149 [V153 ] ( 0, 0 ) long -> zero-ref "field V55._lower (fldOffset=0x0)" P-INDEP
;* V154 tmp150 [V154 ] ( 0, 0 ) long -> zero-ref "field V55._upper (fldOffset=0x8)" P-INDEP
-; V155 tmp151 [V155,T38] ( 2, 2 ) long -> r15 "field V58._lower (fldOffset=0x0)" P-INDEP
-; V156 tmp152 [V156,T39] ( 2, 2 ) long -> r15 "field V58._upper (fldOffset=0x8)" P-INDEP
-; V157 tmp153 [V157,T40] ( 2, 2 ) long -> r14 "field V59._lower (fldOffset=0x0)" P-INDEP
-; V158 tmp154 [V158,T41] ( 2, 2 ) long -> rbx "field V59._upper (fldOffset=0x8)" P-INDEP
-;* V159 tmp155 [V159,T50] ( 0, 0 ) long -> zero-ref "field V65._lower (fldOffset=0x0)" P-INDEP
-;* V160 tmp156 [V160,T51] ( 0, 0 ) long -> zero-ref "field V65._upper (fldOffset=0x8)" P-INDEP
+; V155 tmp151 [V155,T39] ( 2, 0 ) long -> r15 "field V58._lower (fldOffset=0x0)" P-INDEP
+; V156 tmp152 [V156,T40] ( 2, 0 ) long -> r15 "field V58._upper (fldOffset=0x8)" P-INDEP
+; V157 tmp153 [V157,T41] ( 2, 0 ) long -> rax "field V59._lower (fldOffset=0x0)" P-INDEP
+; V158 tmp154 [V158,T42] ( 2, 0 ) long -> rbx "field V59._upper (fldOffset=0x8)" P-INDEP
+;* V159 tmp155 [V159,T54] ( 0, 0 ) long -> zero-ref "field V65._lower (fldOffset=0x0)" P-INDEP
+;* V160 tmp156 [V160,T55] ( 0, 0 ) long -> zero-ref "field V65._upper (fldOffset=0x8)" P-INDEP
;* V161 tmp157 [V161 ] ( 0, 0 ) long -> zero-ref "field V67._lower (fldOffset=0x0)" P-INDEP
;* V162 tmp158 [V162 ] ( 0, 0 ) long -> zero-ref "field V67._upper (fldOffset=0x8)" P-INDEP
;* V163 tmp159 [V163 ] ( 0, 0 ) long -> zero-ref "field V71._lower (fldOffset=0x0)" P-INDEP
;* V164 tmp160 [V164 ] ( 0, 0 ) long -> zero-ref "field V71._upper (fldOffset=0x8)" P-INDEP
-; V165 tmp161 [V165,T42] ( 2, 1 ) long -> rax "field V75._lower (fldOffset=0x0)" P-INDEP
-; V166 tmp162 [V166,T43] ( 2, 1 ) long -> rdx "field V75._upper (fldOffset=0x8)" P-INDEP
+; V165 tmp161 [V165,T43] ( 2, 0 ) long -> rax "field V75._lower (fldOffset=0x0)" P-INDEP
+; V166 tmp162 [V166,T44] ( 2, 0 ) long -> rdx "field V75._upper (fldOffset=0x8)" P-INDEP
;* V167 tmp163 [V167 ] ( 0, 0 ) long -> zero-ref "field V79._lower (fldOffset=0x0)" P-INDEP
;* V168 tmp164 [V168 ] ( 0, 0 ) long -> zero-ref "field V79._upper (fldOffset=0x8)" P-INDEP
;* V169 tmp165 [V169 ] ( 0, 0 ) long -> zero-ref "field V83._lower (fldOffset=0x0)" P-INDEP
;* V170 tmp166 [V170 ] ( 0, 0 ) long -> zero-ref "field V83._upper (fldOffset=0x8)" P-INDEP
-; V171 cse0 [V171,T12] ( 2, 2 ) long -> rsi "CSE - moderate"
-; V172 cse1 [V172,T13] ( 2, 2 ) long -> r15 "CSE - moderate"
+; V171 cse0 [V171,T14] ( 2, 0 ) long -> rsi "CSE - moderate"
+; V172 cse1 [V172,T15] ( 2, 0 ) long -> r15 "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 48
-G_M29692_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M29692_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
- push r13
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x30]
- mov r14, rdi
- mov rbx, rsi
- mov r13, rdx
- mov r15, rcx
- ;; size=29 bbWeight=1 PerfScore 6.75
-G_M29692_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, r14
- mov rsi, rbx
- mov rdx, r13
- mov rcx, r15
- lea r8, [rbp-0x30]
- call [<unknown method>]
- mov rcx, qword ptr [rbp-0x30]
+ sub rsp, 48
+ lea rbp, [rsp+0x40]
+ mov qword ptr [rbp-0x28], rdi
+ mov qword ptr [rbp-0x30], rsi
+ mov qword ptr [rbp-0x38], rdx
+ mov qword ptr [rbp-0x40], rcx
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M29692_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rbp-0x28]
+ mov rsi, qword ptr [rbp-0x30]
+ mov rdx, qword ptr [rbp-0x38]
+ mov rcx, qword ptr [rbp-0x40]
+ lea r8, [rbp-0x20]
+ call [<unknown method>]
+ mov rcx, qword ptr [rbp-0x20]
+ mov rdi, qword ptr [rbp-0x18]
+ mov rbx, qword ptr [rbp-0x30]
mov rsi, rbx
sar rsi, 63
- and r13, rsi
+ mov r8, rsi
+ and r8, qword ptr [rbp-0x38]
+ mov r15, qword ptr [rbp-0x40]
and rsi, r15
- mov r8, rax
- sub r8, r13
+ mov r9, rax
+ sub r9, r8
sub rdx, rsi
- cmp r8, rax
...
@@ -8,60 +8,61 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4 ) long -> [rbp-0x20] EH-live single-def
+; V00 TypeCtx [V00,T00] ( 8, 3 ) long -> [rbp-0x10] EH-live single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[int]>
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> rcx class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
-; V03 loc0 [V03,T07] ( 5, 3 ) ref -> [rbp-0x28] do-not-enreg[M] class-hnd EH-live <System.Exception>
+; V02 arg1 [V02,T01] ( 4, 2 ) ref -> rcx class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
+; V03 loc0 [V03,T06] ( 5, 0 ) ref -> [rbp-0x20] do-not-enreg[M] class-hnd EH-live <System.Exception>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T03] ( 3, 4.50) ref -> rax single-def "CASTCLASS eval op1"
-; V09 tmp2 [V09,T08] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V10 tmp3 [V10,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V11 tmp4 [V11,T11] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V12 tmp5 [V12,T04] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp6 [V13,T05] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V14 tmp7 [V14,T12] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V15 PSPSym [V15,T10] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
-; V16 cse0 [V16,T06] ( 7, 3.50) long -> rbx multi-def "CSE - aggressive"
-; V17 cse1 [V17,T09] ( 3, 2 ) long -> r15 "CSE - moderate"
+; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> rax single-def "CASTCLASS eval op1"
+; V09 tmp2 [V09,T08] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
+; V10 tmp3 [V10,T05] ( 6, 0 ) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V11 tmp4 [V11,T09] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp5 [V12,T02] ( 2, 1 ) byref -> [rbp-0x28] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp6 [V13,T03] ( 2, 1 ) int -> [rbp-0x14] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V14 tmp7 [V14,T10] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V15 PSPSym [V15,T04] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 32
+; Lcl frame size = 48
-G_M22620_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M22620_IG01: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- sub rsp, 32
+ sub rsp, 48
lea rbp, [rsp+0x30]
mov qword ptr [rbp-0x30], rsp
- mov qword ptr [rbp-0x18], rdi
- mov qword ptr [rbp-0x20], rdi
- ;; size=25 bbWeight=1 PerfScore 6.75
-G_M22620_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0040 {rsi}, byref
+ mov qword ptr [rbp-0x08], rdi
+ mov qword ptr [rbp-0x10], rdi
+ mov bword ptr [rbp-0x28], rsi
+ ; GC ptr vars +{V12}
+ mov dword ptr [rbp-0x14], edx
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M22620_IG02: ; bbWeight=0, gcVars=0000000000000004 {V12}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
+ mov rsi, bword ptr [rbp-0x28]
; byrRegs +[rsi]
+ mov edx, dword ptr [rbp-0x14]
mov rdi, gword ptr [rcx+0x08]
; gcrRegs +[rdi]
+ ; GC ptr vars -{V12}
call [rcx+0x18]<unknown method>
; gcrRegs -[rcx rdi]
; byrRegs -[rsi]
; gcr arg pop 0
xor rdi, rdi
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x28], rdi
+ mov gword ptr [rbp-0x20], rdi
; GC ptr vars +{V03}
- ;; size=13 bbWeight=1 PerfScore 6.25
-G_M22620_IG03: ; bbWeight=1, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M22620_IG03: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi]
- cmp gword ptr [rbp-0x28], 0
- je SHORT G_M22620_IG09
- mov rdi, qword ptr [rbp-0x20]
- mov rdi, qword ptr [rdi+0x38]
- mov rbx, qword ptr [rdi]
- mov rdi, rbx
- mov rsi, gword ptr [rbp-0x28]
+ cmp gword ptr [rbp-0x20], 0
+ je SHORT G_M22620_IG05
+ mov rdi, qword ptr [rbp-0x10]
+ mov rsi, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rsi]
+ mov rsi, gword ptr [rbp-0x20]
; gcrRegs +[rsi]
call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rsi] +[rax]
@@ -70,46 +71,71 @@ G_M22620_IG03: ; bbWeight=1, gcVars=0000000000000080 {V03}, gcrefRegs=000
; gcrRegs +[rcx]
test rcx, rcx
je SHORT G_M22620_IG08
- ;; size=38 bbWeight=1 PerfScore 11.75
-G_M22620_IG04: ; bbWeight=0.50, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov r15, qword ptr [rcx]
- mov rdi, rbx
- cmp r15, rdi
- je SHORT G_M22620_IG06
- ;; size=11 bbWeight=0.50 PerfScore 1.75
-G_M22620_IG05: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ mov rdi, qword ptr [rbp-0x10]
+ mov rsi, qword ptr [rdi+0x38]
+ mov rsi, qword ptr [rsi]
+ cmp qword ptr [rcx], rsi
+ je SHORT G_M22620_IG04
+ mov rdi, rsi
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[rsi]
+ ; gcrRegs -[rcx rsi]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.25 PerfScore 0.38
-G_M22620_IG06: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=65 bbWeight=0 PerfScore 0.00
+G_M22620_IG04: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp r15, rbx
+ mov rax, qword ptr [rcx]
+ mov rdi, qword ptr [rbp-0x10]
+ mov rdx, qword ptr [rdi+0x38]
+ cmp rax, qword ptr [rdx]
jne SHORT G_M22620_IG08
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M22620_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=9 bbWeight=1 PerfScore 2.75
-G_M22620_IG08: ; bbWeight=0, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rcx]
- mov rdi, rbx
+ jmp SHORT G_M22620_IG06
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M22620_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx]
+ ; GC ptr vars -{V03}
+ mov rdi, qword ptr [rbp-0x10]
+ mov rdi, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rdi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x28]
+ call [<unknown method>]
+ ; gcrRegs -[rdi]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ call CORINFO_HELP_THROW
+ ; gcrRegs -[rax rdi]
+ ; gcr arg pop 0
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M22620_IG06: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx]
+ mov rax, rcx
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0 PerfScore 0.00
+G_M22620_IG07: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 48
+ pop rbp
+ ret
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M22620_IG08: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rcx]
+ ; GC ptr vars +{V03}
+ mov rdi, qword ptr [rbp-0x10]
+ mov rdi, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rdi]
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ mov rsi, gword ptr [rbp-0x20]
; gcrRegs +[rsi]
; GC ptr vars -{V03}
call [<unknown method>]
@@ -119,52 +145,29 @@ G_M22620_IG08: ; bbWeight=0, gcVars=0000000000000080 {V03}, gcrefRegs=000
; gcrRegs +[rdi]
call CORINFO_HELP_THROW
; gcrRegs -[rax rdi]
- ; gcr arg pop 0
- ;; size=29 bbWeight=0 PerfScore 0.00
-G_M22620_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, qword ptr [rbp-0x20]
- mov rdi, qword ptr [rdi+0x38]
- mov rbx, qword ptr [rdi]
- mov rdi, rbx
- call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- call CORINFO_HELP_THROW
- ; gcrRegs -[rax rdi]
; gcr arg pop 0
int3
- ;; size=37 bbWeight=0 PerfScore 0.00
-G_M22620_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=38 bbWeight=0 PerfScore 0.00
+G_M22620_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rsi]
push rbp
- push r15
- push rbx
sub rsp, 16
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x30]
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M22620_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
- mov gword ptr [rbp-0x28], rsi
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M22620_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+ mov gword ptr [rbp-0x20], rsi
; GC ptr vars +{V03}
lea rax, G_M22620_IG03
;; size=11 bbWeight=0 PerfScore 0.00
-G_M22620_IG12: ; bbWeight=0, funclet epilog, nogc, extend
+G_M22620_IG11: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 16
- pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 25, PerfScore 31.12, instruction count 69, allocated bytes for code 220 (MethodHash=0395a7a3) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
...
@@ -8,60 +8,61 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4 ) long -> [rbp-0x20] EH-live single-def
+; V00 TypeCtx [V00,T00] ( 8, 3 ) long -> [rbp-0x10] EH-live single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[int]>
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> rcx class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
-; V03 loc0 [V03,T07] ( 5, 3 ) ref -> [rbp-0x28] do-not-enreg[M] class-hnd EH-live <System.Exception>
+; V02 arg1 [V02,T01] ( 4, 2 ) ref -> rcx class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
+; V03 loc0 [V03,T06] ( 5, 0 ) ref -> [rbp-0x20] do-not-enreg[M] class-hnd EH-live <System.Exception>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T03] ( 3, 4.50) ref -> rax single-def "CASTCLASS eval op1"
-; V09 tmp2 [V09,T08] ( 3, 2.50) long -> rdi "fgMakeTemp is creating a new local variable"
-; V10 tmp3 [V10,T00] ( 5, 7.50) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
-; V11 tmp4 [V11,T11] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V12 tmp5 [V12,T04] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp6 [V13,T05] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V14 tmp7 [V14,T12] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
-; V15 PSPSym [V15,T10] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
-; V16 cse0 [V16,T06] ( 7, 3.50) long -> rbx multi-def "CSE - aggressive"
-; V17 cse1 [V17,T09] ( 3, 2 ) long -> r15 "CSE - moderate"
+; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> rax single-def "CASTCLASS eval op1"
+; V09 tmp2 [V09,T08] ( 3, 0 ) long -> rsi "fgMakeTemp is creating a new local variable"
+; V10 tmp3 [V10,T05] ( 6, 0 ) ref -> registers class-hnd "spilling QMark2" <System.__Canon>
+; V11 tmp4 [V11,T09] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp5 [V12,T02] ( 2, 1 ) byref -> [rbp-0x28] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp6 [V13,T03] ( 2, 1 ) int -> [rbp-0x14] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V14 tmp7 [V14,T10] ( 2, 0 ) ref -> rdi single-def "argument with side effect"
+; V15 PSPSym [V15,T04] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 32
+; Lcl frame size = 48
-G_M57052_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M57052_IG01: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- sub rsp, 32
+ sub rsp, 48
lea rbp, [rsp+0x30]
mov qword ptr [rbp-0x30], rsp
- mov qword ptr [rbp-0x18], rdi
- mov qword ptr [rbp-0x20], rdi
- ;; size=25 bbWeight=1 PerfScore 6.75
-G_M57052_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0040 {rsi}, byref
+ mov qword ptr [rbp-0x08], rdi
+ mov qword ptr [rbp-0x10], rdi
+ mov bword ptr [rbp-0x28], rsi
+ ; GC ptr vars +{V12}
+ mov dword ptr [rbp-0x14], edx
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M57052_IG02: ; bbWeight=0, gcVars=0000000000000004 {V12}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
+ mov rsi, bword ptr [rbp-0x28]
; byrRegs +[rsi]
+ mov edx, dword ptr [rbp-0x14]
mov rdi, gword ptr [rcx+0x08]
; gcrRegs +[rdi]
+ ; GC ptr vars -{V12}
call [rcx+0x18]<unknown method>
; gcrRegs -[rcx rdi]
; byrRegs -[rsi]
; gcr arg pop 0
xor rdi, rdi
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x28], rdi
+ mov gword ptr [rbp-0x20], rdi
; GC ptr vars +{V03}
- ;; size=13 bbWeight=1 PerfScore 6.25
-G_M57052_IG03: ; bbWeight=1, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M57052_IG03: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi]
- cmp gword ptr [rbp-0x28], 0
- je SHORT G_M57052_IG09
- mov rdi, qword ptr [rbp-0x20]
- mov rdi, qword ptr [rdi+0x38]
- mov rbx, qword ptr [rdi]
- mov rdi, rbx
- mov rsi, gword ptr [rbp-0x28]
+ cmp gword ptr [rbp-0x20], 0
+ je SHORT G_M57052_IG05
+ mov rdi, qword ptr [rbp-0x10]
+ mov rsi, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rsi]
+ mov rsi, gword ptr [rbp-0x20]
; gcrRegs +[rsi]
call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rsi] +[rax]
@@ -70,46 +71,71 @@ G_M57052_IG03: ; bbWeight=1, gcVars=0000000000000080 {V03}, gcrefRegs=000
; gcrRegs +[rcx]
test rcx, rcx
je SHORT G_M57052_IG08
- ;; size=38 bbWeight=1 PerfScore 11.75
-G_M57052_IG04: ; bbWeight=0.50, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- mov r15, qword ptr [rcx]
- mov rdi, rbx
- cmp r15, rdi
- je SHORT G_M57052_IG06
- ;; size=11 bbWeight=0.50 PerfScore 1.75
-G_M57052_IG05: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+ mov rdi, qword ptr [rbp-0x10]
+ mov rsi, qword ptr [rdi+0x38]
+ mov rsi, qword ptr [rsi]
+ cmp qword ptr [rcx], rsi
+ je SHORT G_M57052_IG04
+ mov rdi, rsi
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[rsi]
+ ; gcrRegs -[rcx rsi]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.25 PerfScore 0.38
-G_M57052_IG06: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=65 bbWeight=0 PerfScore 0.00
+G_M57052_IG04: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp r15, rbx
+ mov rax, qword ptr [rcx]
+ mov rdi, qword ptr [rbp-0x10]
+ mov rdx, qword ptr [rdi+0x38]
+ cmp rax, qword ptr [rdx]
jne SHORT G_M57052_IG08
- mov rax, rcx
- ; gcrRegs +[rax]
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M57052_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=9 bbWeight=1 PerfScore 2.75
-G_M57052_IG08: ; bbWeight=0, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rcx]
- mov rdi, rbx
+ jmp SHORT G_M57052_IG06
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M57052_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx]
+ ; GC ptr vars -{V03}
+ mov rdi, qword ptr [rbp-0x10]
+ mov rdi, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rdi]
call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[rax]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x28]
+ call [<unknown method>]
+ ; gcrRegs -[rdi]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ call CORINFO_HELP_THROW
+ ; gcrRegs -[rax rdi]
+ ; gcr arg pop 0
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M57052_IG06: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx]
+ mov rax, rcx
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0 PerfScore 0.00
+G_M57052_IG07: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 48
+ pop rbp
+ ret
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M57052_IG08: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rcx]
+ ; GC ptr vars +{V03}
+ mov rdi, qword ptr [rbp-0x10]
+ mov rdi, qword ptr [rdi+0x38]
+ mov rdi, qword ptr [rdi]
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ mov rsi, gword ptr [rbp-0x20]
; gcrRegs +[rsi]
; GC ptr vars -{V03}
call [<unknown method>]
@@ -119,52 +145,29 @@ G_M57052_IG08: ; bbWeight=0, gcVars=0000000000000080 {V03}, gcrefRegs=000
; gcrRegs +[rdi]
call CORINFO_HELP_THROW
; gcrRegs -[rax rdi]
- ; gcr arg pop 0
- ;; size=29 bbWeight=0 PerfScore 0.00
-G_M57052_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, qword ptr [rbp-0x20]
- mov rdi, qword ptr [rdi+0x38]
- mov rbx, qword ptr [rdi]
- mov rdi, rbx
- call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- call CORINFO_HELP_THROW
- ; gcrRegs -[rax rdi]
; gcr arg pop 0
int3
- ;; size=37 bbWeight=0 PerfScore 0.00
-G_M57052_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=38 bbWeight=0 PerfScore 0.00
+G_M57052_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rsi]
push rbp
- push r15
- push rbx
sub rsp, 16
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
lea rbp, [rbp+0x30]
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M57052_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
- mov gword ptr [rbp-0x28], rsi
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M57052_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+ mov gword ptr [rbp-0x20], rsi
; GC ptr vars +{V03}
lea rax, G_M57052_IG03
;; size=11 bbWeight=0 PerfScore 0.00
-G_M57052_IG12: ; bbWeight=0, funclet epilog, nogc, extend
+G_M57052_IG11: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 16
- pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 25, PerfScore 31.12, instruction count 69, allocated bytes for code 220 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
...
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T00] ( 7, 6 ) ref -> rdi class-hnd single-def <System.String>
; V01 arg1 [V01,T01] ( 4, 4 ) byref -> rbx single-def
-; V02 loc0 [V02,T02] ( 5, 4 ) int -> rsi
+; V02 loc0 [V02,T02] ( 5, 4 ) int -> rax
;* V03 loc1 [V03,T08] ( 0, 0 ) ubyte -> zero-ref EH-live single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
@@ -19,117 +19,111 @@
;* V08 tmp4 [V08,T05] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V10 tmp6 [V10,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 PSPSym [V11,T07] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[V] "PSPSym"
-; V12 cse0 [V12,T03] ( 4, 4 ) int -> r15 "CSE - aggressive"
+; V11 PSPSym [V11,T07] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[V] "PSPSym"
+; V12 cse0 [V12,T03] ( 4, 4 ) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64594_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rsp
+ push rax
+ lea rbp, [rsp+0x10]
+ mov qword ptr [rbp-0x10], rsp
mov rbx, rsi
; byrRegs +[rbx]
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=15 bbWeight=1 PerfScore 4.75
G_M64594_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[rdi]
mov word ptr [rbx], 0
test rdi, rdi
- je SHORT G_M64594_IG04
- mov r15d, dword ptr [rdi+0x08]
- test r15d, r15d
- je SHORT G_M64594_IG04
- mov esi, 10
- cmp r15d, 2
- jl SHORT G_M64594_IG08
- ;; size=30 bbWeight=1 PerfScore 7.00
-G_M64594_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M64594_IG06
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M64594_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M64594_IG03
+ mov esi, dword ptr [rdi+0x08]
+ test esi, esi
+ jne SHORT G_M64594_IG05
+ ;; size=17 bbWeight=1 PerfScore 5.50
+G_M64594_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
; byrRegs -[rbx]
xor eax, eax
;; size=2 bbWeight=1 PerfScore 0.25
-G_M64594_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+G_M64594_IG04: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
-G_M64594_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M64594_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs +[rdi]
; byrRegs +[rbx]
- mov eax, dword ptr [rdi+0x0C]
- or eax, 0xD1FFAB1E
- cmp eax, 0xD1FFAB1E
+ mov eax, 10
+ cmp esi, 2
+ jl SHORT G_M64594_IG08
+ ;; size=10 bbWeight=1 PerfScore 1.50
+G_M64594_IG06: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
+ mov ecx, dword ptr [rdi+0x0C]
+ or ecx, 0xD1FFAB1E
+ cmp ecx, 0xD1FFAB1E
jne SHORT G_M64594_IG08
- ;; size=15 bbWeight=0.50 PerfScore 1.75
+ ;; size=17 bbWeight=0.50 PerfScore 1.75
G_M64594_IG07: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- mov esi, 16
+ mov eax, 16
jmp SHORT G_M64594_IG10
;; size=7 bbWeight=1 PerfScore 2.25
G_M64594_IG08: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
- test r15d, r15d
+ test esi, esi
jle SHORT G_M64594_IG10
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M64594_IG09: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
- mov eax, 8
+ mov esi, 8
cmp word ptr [rdi+0x0C], 48
- cmove esi, eax
+ cmove eax, esi
;; size=13 bbWeight=0.50 PerfScore 1.75
G_M64594_IG10: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
+ mov esi, eax
call [System.Convert:ToUInt16(System.String,int):ushort]
; gcrRegs -[rdi]
; gcr arg pop 0
mov word ptr [rbx], ax
- ;; size=9 bbWeight=1 PerfScore 4.00
+ ;; size=11 bbWeight=1 PerfScore 4.25
G_M64594_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
mov eax, 1
;; size=5 bbWeight=1 PerfScore 0.25
G_M64594_IG12: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=7 bbWeight=1 PerfScore 2.25
G_M64594_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
G_M64594_IG14: ; bbWeight=0, epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
G_M64594_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
- push r15
push rbx
- sub rsp, 16
+ push rax
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x20]
- ;; size=19 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x10]
+ ;; size=14 bbWeight=0 PerfScore 0.00
G_M64594_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
lea rax, G_M64594_IG13
;; size=7 bbWeight=0 PerfScore 0.00
G_M64594_IG17: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 16
+ add rsp, 8
pop rbx
- pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 20, PerfScore 30.00, instruction count 61, allocated bytes for code 172 (MethodHash=6a4903ad) for method Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt16(System.String,byref):ubyte (FullOpts)
+; Total bytes of code 152, prolog size 15, PerfScore 28.00, instruction count 55, allocated bytes for code 152 (MethodHash=6a4903ad) for method Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt16(System.String,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -137,28 +131,26 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
Unwind Info:
>> Start offset : 0xd1ffab1e (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x03
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt16(System.String,byref):ubyte
1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
@@ -11,35 +11,33 @@
; V00 arg0 [V00,T02] ( 7, 8.50) ref -> rbx class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 4, 3.50) byref -> r15 single-def
; V02 arg2 [V02,T04] ( 4, 3.50) byref -> r14 single-def
-; V03 loc0 [V03,T07] ( 5, 4 ) int -> r12
+; V03 loc0 [V03,T07] ( 5, 2.50) int -> r13
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
-; V05 loc2 [V05,T01] ( 6, 18.50) int -> rax
+; V05 loc2 [V05,T01] ( 6, 17 ) int -> rdx
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
;* V08 tmp2 [V08,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp3 [V09,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T00] ( 5, 28 ) ushort -> rcx "Inlining Arg"
-; V11 cse0 [V11,T05] ( 4, 5.50) int -> r13 "CSE - aggressive"
+; V10 tmp4 [V10,T00] ( 5, 28 ) ushort -> rsi "Inlining Arg"
+; V11 cse0 [V11,T05] ( 4, 5.50) int -> rdi "CSE - aggressive"
; V12 cse1 [V12,T06] ( 3, 3 ) ref -> r13 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M22854_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- push rax
- lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15, rsi
; byrRegs +[r15]
mov r14, rdx
; byrRegs +[r14]
- ;; size=25 bbWeight=1 PerfScore 8.25
+ ;; size=22 bbWeight=1 PerfScore 6.25
G_M22854_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
mov r13, 0xD1FFAB1E
; gcrRegs +[r13]
@@ -61,63 +59,60 @@ G_M22854_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r1
je SHORT G_M22854_IG04
;; size=37 bbWeight=1 PerfScore 4.50
G_M22854_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
- mov r13d, dword ptr [rbx+0x08]
- test r13d, r13d
- je SHORT G_M22854_IG04
- xor r12d, r12d
- xor eax, eax
- test r13d, r13d
- jle SHORT G_M22854_IG11
- jmp SHORT G_M22854_IG06
- ;; size=21 bbWeight=0.50 PerfScore 3.50
+ mov edi, dword ptr [rbx+0x08]
+ test edi, edi
+ jne SHORT G_M22854_IG06
+ ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M22854_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
; byrRegs -[r14-r15]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M22854_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M22854_IG06: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, gcvars, byref, isz
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
+G_M22854_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, gcvars, byref, isz
; gcrRegs +[rbx]
; byrRegs +[r14-r15]
- mov ecx, eax
- movzx rcx, word ptr [rbx+2*rcx+0x0C]
- cmp ecx, 45
+ xor r13d, r13d
+ xor edx, edx
+ test edi, edi
+ jle SHORT G_M22854_IG11
+ ;; size=9 bbWeight=0.50 PerfScore 0.88
+G_M22854_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
+ mov esi, edx
+ movzx rsi, word ptr [rbx+2*rsi+0x0C]
+ cmp esi, 45
je SHORT G_M22854_IG10
;; size=12 bbWeight=4 PerfScore 14.00
-G_M22854_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
- cmp ecx, 0x2013
+G_M22854_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
+ cmp esi, 0x2013
je SHORT G_M22854_IG10
- cmp ecx, 0x2014
+ cmp esi, 0x2014
je SHORT G_M22854_IG10
- cmp ecx, 0x2015
+ cmp esi, 0x2015
je SHORT G_M22854_IG10
;; size=24 bbWeight=2 PerfScore 7.50
-G_M22854_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
- inc eax
- cmp r13d, eax
- jg SHORT G_M22854_IG06
- ;; size=7 bbWeight=4 PerfScore 6.00
-G_M22854_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
+G_M22854_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
+ inc edx
+ cmp edi, edx
+ jg SHORT G_M22854_IG07
jmp SHORT G_M22854_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M22854_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref
- mov r12d, eax
- ;; size=3 bbWeight=2 PerfScore 0.50
+ ;; size=8 bbWeight=4 PerfScore 14.00
+G_M22854_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref
+ mov r13d, edx
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22854_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14 r15}, byref, isz
- test r12d, r12d
+ test r13d, r13d
jle SHORT G_M22854_IG04
mov rdi, rbx
; gcrRegs +[rdi]
- mov edx, r12d
+ mov edx, r13d
xor esi, esi
call [System.String:Substring(int,int):System.String:this]
; gcrRegs -[rdi] +[rax]
@@ -129,7 +124,7 @@ G_M22854_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi r15]
- lea esi, [r12+0x01]
+ lea esi, [r13+0x01]
mov rdi, rbx
; gcrRegs +[rdi]
call [System.String:Substring(int):System.String:this]
@@ -143,19 +138,17 @@ G_M22854_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=C000 {r14
; gcrRegs -[rax rsi]
; byrRegs -[rdi r14]
mov eax, 1
- ;; size=60 bbWeight=0.50 PerfScore 6.00
+ ;; size=59 bbWeight=0.50 PerfScore 6.00
G_M22854_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 223, prolog size 25, PerfScore 55.62, instruction count 76, allocated bytes for code 223 (MethodHash=b068a6b9) for method System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
+; Total bytes of code 201, prolog size 22, PerfScore 58.50, instruction count 69, allocated bytes for code 201 (MethodHash=b068a6b9) for method System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -163,14 +156,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0B
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]):System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)@@ -45,9 +45,9 @@ G_M42804_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
xor r13d, r13d
mov r12d, dword ptr [rbx+0x08]
test r12d, r12d
- jle G_M42804_IG13
+ jle G_M42804_IG10
;; size=19 bbWeight=1 PerfScore 3.75
-G_M42804_IG03: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M42804_IG03: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, r13d
mov rax, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[rax]
@@ -65,18 +65,17 @@ G_M42804_IG03: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov rsi, gword ptr [rbp-0x38]
; gcrRegs +[rsi]
cmp rax, rsi
- mov rax, gword ptr [rbp-0x40]
- je G_M42804_IG10
- ;; size=45 bbWeight=4 PerfScore 44.00
-G_M42804_IG04: ; bbWeight=2, gcVars=0000000000000040 {V05}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rsi]
+ je SHORT G_M42804_IG07
+ ;; size=37 bbWeight=4 PerfScore 40.00
+G_M42804_IG04: ; bbWeight=2, gcVars=0000000000000040 {V05}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax rsi]
; GC ptr vars -{V04}
test r14, r14
- jne SHORT G_M42804_IG10
+ jne SHORT G_M42804_IG07
mov esi, r12d
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_OBJ
- ; gcrRegs -[r14]
+ ; gcrRegs -[r14] +[rax]
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
@@ -85,7 +84,7 @@ G_M42804_IG04: ; bbWeight=2, gcVars=0000000000000040 {V05}, gcrefRegs=C00
test r13d, r13d
jle SHORT G_M42804_IG07
cmp r12d, r13d
- jl SHORT G_M42804_IG08
+ jl SHORT G_M42804_IG06
;; size=38 bbWeight=2 PerfScore 11.50
G_M42804_IG05: ; bbWeight=15.84, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov edx, eax
@@ -102,22 +101,11 @@ G_M42804_IG05: ; bbWeight=15.84, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=
inc eax
cmp eax, r13d
jl SHORT G_M42804_IG05
- ;; size=31 bbWeight=15.84 PerfScore 114.84
-G_M42804_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rax, gword ptr [rbp-0x40]
- ; gcrRegs +[rax]
- jmp SHORT G_M42804_IG10
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M42804_IG07: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rax, gword ptr [rbp-0x40]
- ; gcrRegs +[rax]
- jmp SHORT G_M42804_IG10
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M42804_IG08: ; bbWeight=0.16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+ jmp SHORT G_M42804_IG07
+ ;; size=33 bbWeight=15.84 PerfScore 146.52
+G_M42804_IG06: ; bbWeight=0.16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
cmp eax, r12d
- jae G_M42804_IG18
+ jae SHORT G_M42804_IG15
mov edx, eax
mov rdx, gword ptr [rbx+8*rdx+0x10]
; gcrRegs +[rdx]
@@ -132,43 +120,39 @@ G_M42804_IG08: ; bbWeight=0.16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
inc esi
cmp esi, r13d
mov eax, esi
- jl SHORT G_M42804_IG08
- ;; size=42 bbWeight=0.16 PerfScore 1.40
-G_M42804_IG09: ; bbWeight=0.08, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- mov rax, gword ptr [rbp-0x40]
- ; gcrRegs +[rax]
- ;; size=4 bbWeight=0.08 PerfScore 0.08
-G_M42804_IG10: ; bbWeight=4, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M42804_IG06
+ ;; size=38 bbWeight=0.16 PerfScore 1.40
+G_M42804_IG07: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
test r14, r14
- je SHORT G_M42804_IG12
+ je SHORT G_M42804_IG09
;; size=5 bbWeight=4 PerfScore 5.00
-G_M42804_IG11: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M42804_IG08: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
movsxd rsi, r13d
mov rdi, r14
; gcrRegs +[rdi]
- mov rdx, rax
+ mov rdx, gword ptr [rbp-0x40]
; gcrRegs +[rdx]
; GC ptr vars -{V05}
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rax rdx rdi]
+ ; gcrRegs -[rdx rdi]
; gcr arg pop 0
- ;; size=14 bbWeight=2 PerfScore 3.50
-G_M42804_IG12: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=2 PerfScore 5.00
+G_M42804_IG09: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
inc r13d
cmp r12d, r13d
jg G_M42804_IG03
;; size=12 bbWeight=4 PerfScore 6.00
-G_M42804_IG13: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M42804_IG10: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
test r14, r14
- jne SHORT G_M42804_IG16
+ jne SHORT G_M42804_IG13
;; size=5 bbWeight=1 PerfScore 1.25
-G_M42804_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M42804_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
mov rax, rbx
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M42804_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M42804_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -178,7 +162,7 @@ G_M42804_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M42804_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+G_M42804_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx] +[r14]
mov rsi, r14
; gcrRegs +[rsi]
@@ -188,7 +172,7 @@ G_M42804_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
; gcr arg pop 0
nop
;; size=20 bbWeight=0.50 PerfScore 1.88
-G_M42804_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M42804_IG14: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -198,14 +182,14 @@ G_M42804_IG17: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M42804_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M42804_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 311, prolog size 25, PerfScore 213.82, instruction count 99, allocated bytes for code 311 (MethodHash=99cf58cb) for method Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteNamedTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
+; Total bytes of code 286, prolog size 25, PerfScore 233.92, instruction count 94, allocated bytes for code 286 (MethodHash=99cf58cb) for method Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteNamedTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -51,7 +51,7 @@
; V40 tmp35 [V40,T16] ( 2, 2 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.String]>
; V41 tmp36 [V41,T02] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[System.String]>
; V42 tmp37 [V42,T13] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V43 cse0 [V43,T14] ( 11, 2.75) int -> rbx "CSE - moderate"
+; V43 cse0 [V43,T14] ( 11, 2.75) int -> rax "CSE - moderate"
;
; Lcl frame size = 8
@@ -69,16 +69,116 @@ G_M34998_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
je G_M34998_IG33
;; size=9 bbWeight=1 PerfScore 1.25
G_M34998_IG03: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov ebx, dword ptr [rdi+0x08]
- cmp ebx, 4
- jne SHORT G_M34998_IG06
+ mov eax, dword ptr [rdi+0x08]
+ cmp eax, 4
+ jne SHORT G_M34998_IG05
;; size=8 bbWeight=0.25 PerfScore 0.81
-G_M34998_IG04: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M34998_IG04: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ cmp qword ptr [rdi+0x0C], rcx
+ je G_M34998_IG23
+ ;; size=20 bbWeight=0.12 PerfScore 0.53
+G_M34998_IG05: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 6
+ jne SHORT G_M34998_IG07
+ ;; size=5 bbWeight=0.25 PerfScore 0.31
+G_M34998_IG06: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdi+0x0C]
+ mov edx, dword ptr [rdi+0x14]
+ xor edx, 0xD1FFAB1E
+ or rcx, rdx
+ je G_M34998_IG24
+ ;; size=32 bbWeight=0.12 PerfScore 0.84
+G_M34998_IG07: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 6
+ jne SHORT G_M34998_IG09
+ ;; size=5 bbWeight=0.25 PerfScore 0.31
+G_M34998_IG08: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdi+0x0C]
+ mov edx, dword ptr [rdi+0x14]
+ xor edx, 0xD1FFAB1E
+ or rcx, rdx
+ je G_M34998_IG25
+ ;; size=32 bbWeight=0.12 PerfScore 0.84
+G_M34998_IG09: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 4
+ jne SHORT G_M34998_IG11
+ ;; size=5 bbWeight=0.25 PerfScore 0.31
+G_M34998_IG10: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ cmp qword ptr [rdi+0x0C], rcx
+ je G_M34998_IG26
+ ;; size=20 bbWeight=0.12 PerfScore 0.53
+G_M34998_IG11: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 6
+ jne SHORT G_M34998_IG13
+ ;; size=5 bbWeight=0.25 PerfScore 0.31
+G_M34998_IG12: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdi+0x0C]
+ mov edx, dword ptr [rdi+0x14]
+ xor edx, 0xD1FFAB1E
+ or rcx, rdx
+ je G_M34998_IG27
+ ;; size=32 bbWeight=0.12 PerfScore 0.84
+G_M34998_IG13: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 6
+ jne SHORT G_M34998_IG15
+ ;; size=5 bbWeight=0.25 PerfScore 0.31
+G_M34998_IG14: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdi+0x0C]
+ mov edx, dword ptr [rdi+0x14]
+ xor edx, 0xD1FFAB1E
+ or rcx, rdx
+ je G_M34998_IG28
+ ;; size=32 bbWeight=0.12 PerfScore 0.84
+G_M34998_IG15: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 4
+ jne SHORT G_M34998_IG17
+ ;; size=5 bbWeight=0.25 PerfScore 0.31
+G_M34998_IG16: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ cmp qword ptr [rdi+0x0C], rcx
+ je G_M34998_IG29
+ ;; size=20 bbWeight=0.12 PerfScore 0.53
+G_M34998_IG17: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 6
+ jne SHORT G_M34998_IG19
+ ;; size=5 bbWeight=0.25 PerfScore 0.31
+G_M34998_IG18: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdi+0x0C]
+ mov edx, dword ptr [rdi+0x14]
+ xor edx, 0xD1FFAB1E
+ or rcx, rdx
+ je G_M34998_IG30
+ ;; size=32 bbWeight=0.12 PerfScore 0.84
+G_M34998_IG19: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 6
+ jne SHORT G_M34998_IG21
+ ;; size=5 bbWeight=0.25 PerfScore 0.31
+G_M34998_IG20: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdi+0x0C]
+ mov edx, dword ptr [rdi+0x14]
+ xor edx, 0xD1FFAB1E
+ or rcx, rdx
+ je G_M34998_IG31
+ ;; size=32 bbWeight=0.12 PerfScore 0.84
+G_M34998_IG21: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ cmp eax, 4
+ jne G_M34998_IG33
+ ;; size=9 bbWeight=0.25 PerfScore 0.31
+G_M34998_IG22: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E
cmp qword ptr [rdi+0x0C], rax
- jne SHORT G_M34998_IG06
- ;; size=16 bbWeight=0.12 PerfScore 0.53
-G_M34998_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jne G_M34998_IG33
+ jmp G_M34998_IG32
+ ;; size=25 bbWeight=0.12 PerfScore 0.78
+G_M34998_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rdi, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int]
call CORINFO_HELP_NEWSFAST
@@ -86,180 +186,72 @@ G_M34998_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov dword ptr [rax+0x08], 5
jmp G_M34998_IG34
;; size=27 bbWeight=0.50 PerfScore 2.12
-G_M34998_IG06: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rdi]
- cmp ebx, 6
- jne SHORT G_M34998_IG09
- ;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M34998_IG07: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E
- xor rax, qword ptr [rdi+0x0C]
- mov ecx, dword ptr [rdi+0x14]
- xor ecx, 0xD1FFAB1E
- or rax, rcx
- jne SHORT G_M34998_IG09
- ;; size=28 bbWeight=0.12 PerfScore 0.84
-G_M34998_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
+G_M34998_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
mov dword ptr [rax+0x08], 6
jmp G_M34998_IG34
;; size=27 bbWeight=0.50 PerfScore 2.12
-G_M34998_IG09: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rdi]
- cmp ebx, 6
- jne SHORT G_M34998_IG12
- ;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M34998_IG10: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E
- xor rax, qword ptr [rdi+0x0C]
- mov ecx, dword ptr [rdi+0x14]
- xor ecx, 0xD1FFAB1E
- or rax, rcx
- jne SHORT G_M34998_IG12
- ;; size=28 bbWeight=0.12 PerfScore 0.84
-G_M34998_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
+G_M34998_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
mov dword ptr [rax+0x08], 9
jmp G_M34998_IG34
;; size=27 bbWeight=0.50 PerfScore 2.12
-G_M34998_IG12: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rdi]
- cmp ebx, 4
- jne SHORT G_M34998_IG15
- ;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M34998_IG13: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E
- cmp qword ptr [rdi+0x0C], rax
- jne SHORT G_M34998_IG15
- ;; size=16 bbWeight=0.12 PerfScore 0.53
-G_M34998_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
+G_M34998_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
mov dword ptr [rax+0x08], 7
jmp G_M34998_IG34
;; size=27 bbWeight=0.50 PerfScore 2.12
-G_M34998_IG15: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rdi]
- cmp ebx, 6
- jne SHORT G_M34998_IG18
- ;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M34998_IG16: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E
- xor rax, qword ptr [rdi+0x0C]
- mov ecx, dword ptr [rdi+0x14]
- xor ecx, 0xD1FFAB1E
- or rax, rcx
- jne SHORT G_M34998_IG18
- ;; size=28 bbWeight=0.12 PerfScore 0.84
-G_M34998_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
+G_M34998_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
mov dword ptr [rax+0x08], 8
- jmp G_M34998_IG34
- ;; size=27 bbWeight=0.50 PerfScore 2.12
-G_M34998_IG18: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rdi]
- cmp ebx, 6
- jne SHORT G_M34998_IG21
- ;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M34998_IG19: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E
- xor rax, qword ptr [rdi+0x0C]
- mov ecx, dword ptr [rdi+0x14]
- xor ecx, 0xD1FFAB1E
- or rax, rcx
- jne SHORT G_M34998_IG21
- ;; size=28 bbWeight=0.12 PerfScore 0.84
-G_M34998_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
+ jmp SHORT G_M34998_IG34
+ ;; size=24 bbWeight=0.50 PerfScore 2.12
+G_M34998_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[int]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
mov dword ptr [rax+0x08], 10
- jmp G_M34998_IG34
...
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 4 ) ref -> rbx class-hnd single-def <FSharp.Compiler.CompilerConfig+TcConfigBuilder>
-; V01 arg1 [V01,T01] ( 5, 4 ) ref -> r15 class-hnd single-def <System.String>
-; V02 loc0 [V02,T02] ( 11, 3.25) ref -> rax class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T01] ( 6, 3.50) ref -> r15 class-hnd single-def <FSharp.Compiler.CompilerConfig+TcConfigBuilder>
+; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rbx class-hnd single-def <System.String>
+; V02 loc0 [V02,T02] ( 11, 3 ) ref -> rax class-hnd exact single-def <System.String>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.ErrorLogger+Error>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
@@ -18,11 +18,11 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V08 tmp4 [V08,T05] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V10 tmp6 [V10,T06] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V10 tmp6 [V10,T09] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V12 tmp8 [V12,T10] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V13 tmp9 [V13,T08] ( 2, 0 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Tuple`2[int,System.String]>
-; V14 tmp10 [V14,T07] ( 6, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.ErrorLogger+Error>
+; V13 tmp9 [V13,T07] ( 2, 0 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Tuple`2[int,System.String]>
+; V14 tmp10 [V14,T06] ( 6, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.ErrorLogger+Error>
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <FSharp.Compiler.Text.Range>
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <FSharp.Compiler.CompilerConfig+CompilerTarget>
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <FSharp.Compiler.CompilerConfig+CompilerTarget>
@@ -30,147 +30,136 @@
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <FSharp.Compiler.CompilerConfig+CompilerTarget>
;* V20 tmp16 [V20,T11] ( 0, 0 ) long -> zero-ref single-def "field V15.code1 (fldOffset=0x0)" P-INDEP
;* V21 tmp17 [V21,T12] ( 0, 0 ) long -> zero-ref single-def "field V15.code2 (fldOffset=0x8)" P-INDEP
-; V22 tmp18 [V22,T09] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V23 cse0 [V23,T03] ( 5, 1.25) int -> rdi "CSE - moderate"
+; V22 tmp18 [V22,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V23 cse0 [V23,T03] ( 5, 1 ) int -> r14 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M53613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rdi
- ; gcrRegs +[rbx]
- mov r15, rsi
+ push rax
+ lea rbp, [rsp+0x20]
+ mov r15, rdi
; gcrRegs +[r15]
- ;; size=15 bbWeight=1 PerfScore 4.00
+ mov rbx, rsi
+ ; gcrRegs +[rbx]
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M53613_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- cmp byte ptr [r15], r15b
+ cmp byte ptr [rbx], bl
mov rdi, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rdi]
; gcrRegs +[rdi]
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi]
call [System.Globalization.TextInfo:ToLower(System.String):System.String:this]
; gcrRegs -[rsi rdi] +[rax]
test rax, rax
- je G_M53613_IG17
- ;; size=34 bbWeight=1 PerfScore 9.75
+ je G_M53613_IG15
+ ;; size=33 bbWeight=1 PerfScore 9.75
G_M53613_IG03: ; bbWeight=0.25, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [rax+0x08]
- cmp edi, 3
- jne SHORT G_M53613_IG06
- ;; size=8 bbWeight=0.25 PerfScore 0.81
+ mov r14d, dword ptr [rax+0x08]
+ cmp r14d, 3
+ jne SHORT G_M53613_IG05
+ ;; size=10 bbWeight=0.25 PerfScore 0.81
G_M53613_IG04: ; bbWeight=0.12, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- mov esi, dword ptr [rax+0x0C]
+ mov edi, dword ptr [rax+0x0C]
+ xor edi, 0xD1FFAB1E
+ mov esi, dword ptr [rax+0x0E]
xor esi, 0xD1FFAB1E
- mov ecx, dword ptr [rax+0x0E]
- xor ecx, 0xD1FFAB1E
- or esi, ecx
- jne SHORT G_M53613_IG06
+ or edi, esi
+ je SHORT G_M53613_IG12
;; size=22 bbWeight=0.12 PerfScore 0.72
-G_M53613_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax r15]
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rdi]
- ; gcrRegs +[rsi]
- lea rdi, bword ptr [rbx+0xC0]
- ; byrRegs +[rdi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rbx rsi]
- ; byrRegs -[rdi]
- jmp G_M53613_IG15
- ;; size=30 bbWeight=0.50 PerfScore 2.88
-G_M53613_IG06: ; bbWeight=0.25, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax rbx r15]
- cmp edi, 6
- jne SHORT G_M53613_IG09
- ;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M53613_IG07: ; bbWeight=0.12, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E
- xor rsi, qword ptr [rax+0x0C]
- mov ecx, dword ptr [rax+0x14]
- xor ecx, 0xD1FFAB1E
- or rsi, rcx
- jne SHORT G_M53613_IG09
- ;; size=28 bbWeight=0.12 PerfScore 0.84
-G_M53613_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax r15]
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rdi]
- ; gcrRegs +[rsi]
- lea rdi, bword ptr [rbx+0xC0]
- ; byrRegs +[rdi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rbx rsi]
- ; byrRegs -[rdi]
- jmp SHORT G_M53613_IG15
- ;; size=27 bbWeight=0.50 PerfScore 2.88
-G_M53613_IG09: ; bbWeight=0.25, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax rbx r15]
- cmp edi, 7
- jne SHORT G_M53613_IG12
- ;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M53613_IG10: ; bbWeight=0.12, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E
- xor rsi, qword ptr [rax+0x0C]
- mov rcx, 0xD1FFAB1E
- xor rcx, qword ptr [rax+0x12]
- or rsi, rcx
- jne SHORT G_M53613_IG12
- ;; size=33 bbWeight=0.12 PerfScore 0.97
-G_M53613_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax r15]
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rdi]
- ; gcrRegs +[rsi]
- lea rdi, bword ptr [rbx+0xC0]
- ; byrRegs +[rdi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rbx rsi]
- ; byrRegs -[rdi]
- jmp SHORT G_M53613_IG15
- ;; size=27 bbWeight=0.50 PerfScore 2.88
-G_M53613_IG12: ; bbWeight=0.25, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax rbx r15]
- cmp edi, 6
- jne SHORT G_M53613_IG17
- ;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M53613_IG13: ; bbWeight=0.12, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M53613_IG05: ; bbWeight=0.25, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+ cmp r14d, 6
+ jne SHORT G_M53613_IG07
+ ;; size=6 bbWeight=0.25 PerfScore 0.31
+G_M53613_IG06: ; bbWeight=0.12, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E
xor rdi, qword ptr [rax+0x0C]
mov esi, dword ptr [rax+0x14]
xor esi, 0xD1FFAB1E
or rdi, rsi
- jne SHORT G_M53613_IG17
+ je SHORT G_M53613_IG13
;; size=28 bbWeight=0.12 PerfScore 0.84
-G_M53613_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax r15]
+G_M53613_IG07: ; bbWeight=0.25, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
+ cmp r14d, 7
+ jne G_M53613_IG16
+ ;; size=10 bbWeight=0.25 PerfScore 0.31
+G_M53613_IG08: ; bbWeight=0.12, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
+ mov rdi, 0xD1FFAB1E
+ xor rdi, qword ptr [rax+0x0C]
+ mov rsi, 0xD1FFAB1E
+ xor rsi, qword ptr [rax+0x12]
+ or rdi, rsi
+ jne G_M53613_IG16
+ ;; size=37 bbWeight=0.12 PerfScore 0.97
+G_M53613_IG09: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rbx]
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
- lea rdi, bword ptr [rbx+0xC0]
+ lea rdi, bword ptr [r15+0xC0]
; byrRegs +[rdi]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rbx rsi]
+ ; gcrRegs -[rsi r15]
; byrRegs -[rdi]
;; size=25 bbWeight=0.50 PerfScore 1.88
-G_M53613_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53613_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M53613_IG16: ; bbWeight=1, epilog, nogc, extend
+G_M53613_IG11: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
-G_M53613_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M53613_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r15]
- mov rdi, r15
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ ; gcrRegs +[rsi]
+ lea rdi, bword ptr [r15+0xC0]
+ ; byrRegs +[rdi]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rsi r15]
+ ; byrRegs -[rdi]
+ jmp SHORT G_M53613_IG10
+ ;; size=27 bbWeight=0.50 PerfScore 2.88
+G_M53613_IG13: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r15]
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ ; gcrRegs +[rsi]
+ lea rdi, bword ptr [r15+0xC0]
+ ; byrRegs +[rdi]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rsi r15]
+ ; byrRegs -[rdi]
+ jmp SHORT G_M53613_IG10
+ ;; size=27 bbWeight=0.50 PerfScore 2.88
+G_M53613_IG14: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r15]
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ ; gcrRegs +[rsi]
+ lea rdi, bword ptr [r15+0xC0]
+ ; byrRegs +[rdi]
...
@@ -10,7 +10,7 @@
;
; V00 this [V00,T02] ( 5, 3.50) ref -> r14 this class-hnd single-def <System.Management.Automation.Provider.NavigationCmdletProvider>
; V01 arg1 [V01,T01] ( 17, 10 ) ref -> r15 class-hnd <System.String>
-; V02 arg2 [V02,T00] ( 19, 10.50) ref -> rbx class-hnd <System.String>
+; V02 arg2 [V02,T00] ( 18, 10 ) ref -> rbx class-hnd <System.String>
; V03 arg3 [V03,T03] ( 3, 2.50) ubyte -> r13 single-def
;* V04 loc0 [V04,T33] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <System.IDisposable>
; V05 loc1 [V05,T04] ( 6, 3.50) ref -> rax class-hnd <System.String>
@@ -83,45 +83,111 @@ G_M32221_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[rbx]
mov r13d, ecx
;; size=35 bbWeight=1 PerfScore 8.75
-G_M32221_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32221_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
test r15, r15
- jne SHORT G_M32221_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M32221_IG03: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M32221_IG15
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M32221_IG03: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
test rbx, rbx
- je SHORT G_M32221_IG08
+ je G_M32221_IG14
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M32221_IG04: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
test rbx, rbx
- je SHORT G_M32221_IG10
- ;; size=10 bbWeight=0.50 PerfScore 1.25
-G_M32221_IG04: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ je G_M32221_IG16
cmp dword ptr [rbx+0x08], 0
- je SHORT G_M32221_IG10
+ je G_M32221_IG16
test r15, r15
- jne SHORT G_M32221_IG11
- ;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M32221_IG05: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- test rbx, rbx
- je SHORT G_M32221_IG12
- cmp dword ptr [rbx+0x08], 0
- je SHORT G_M32221_IG12
+ je G_M32221_IG17
+ ;; size=28 bbWeight=0.50 PerfScore 3.25
+G_M32221_IG05: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ cmp dword ptr [r15+0x08], 0
+ je G_M32221_IG17
+ ;; size=11 bbWeight=0.50 PerfScore 2.00
+G_M32221_IG06: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ cmp dword ptr [r15+0x08], 0
+ jne G_M32221_IG19
+ ;; size=11 bbWeight=0.50 PerfScore 2.00
+G_M32221_IG07: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ mov rsi, r15
+ ; gcrRegs +[rsi]
+ call [System.Management.Automation.Provider.NavigationCmdletProvider:NormalizePath(System.String):System.String:this]
+ ; gcrRegs -[rsi rdi r15] +[rax]
+ ; gcr arg pop 0
+ mov r15, rax
+ ; gcrRegs +[r15]
+ test r13b, r13b
+ jne SHORT G_M32221_IG08
mov rdi, r14
; gcrRegs +[rdi]
mov rsi, rbx
; gcrRegs +[rsi]
call [System.Management.Automation.Provider.NavigationCmdletProvider:NormalizePath(System.String):System.String:this]
- ; gcrRegs -[rbx rsi rdi r14-r15] +[rax]
+ ; gcrRegs -[rbx rsi rdi r14]
; gcr arg pop 0
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M32221_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- jmp G_M32221_IG23
+ mov rbx, rax
+ ; gcrRegs +[rbx]
+ ;; size=35 bbWeight=0.50 PerfScore 4.38
+G_M32221_IG08: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ test rbx, rbx
+ jne G_M32221_IG22
+ xor r14, r14
+ ; byrRegs +[r14]
+ xor r13d, r13d
+ ;; size=15 bbWeight=0.50 PerfScore 0.88
+G_M32221_IG09: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref, isz
+ mov r12, r14
+ ; byrRegs +[r12]
+ mov eax, r13d
+ cmp word ptr [rbx+0x0C], 47
+ jne SHORT G_M32221_IG10
+ test r13d, r13d
+ je SHORT G_M32221_IG13
+ add r14, 2
+ dec r13d
+ mov edi, r13d
+ not edi
+ shr edi, 31
+ call [<unknown method>]
+ ; gcrRegs -[rbx]
+ ; byrRegs -[r12]
+ ; gcr arg pop 0
+ mov r12, r14
+ ; byrRegs +[r12]
+ mov eax, r13d
+ mov dword ptr [rbp-0x2C], eax
+ mov eax, dword ptr [rbp-0x2C]
+ ;; size=51 bbWeight=0.50 PerfScore 6.38
+G_M32221_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=1000 {r12}, byref
+ ; byrRegs -[r14]
+ test r15, r15
+ jne G_M32221_IG23
+ xor rdi, rdi
+ ; byrRegs +[rdi]
+ xor esi, esi
+ ;; size=13 bbWeight=0.50 PerfScore 0.88
+G_M32221_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1080 {rdi r12}, byref
+ ; gcrRegs -[r15]
+ mov rdx, r12
+ ; byrRegs +[rdx]
+ mov ecx, eax
+ call [System.IO.Path:Join(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String]
+ ; gcrRegs +[rax]
+ ; byrRegs -[rdx rdi r12]
+ ; gcr arg pop 0
+ ;; size=11 bbWeight=0.50 PerfScore 1.75
+G_M32221_IG12: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ jmp G_M32221_IG24
;; size=5 bbWeight=1 PerfScore 2.00
-G_M32221_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32221_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M32221_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32221_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 0xD1FFAB1E
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -138,36 +204,44 @@ G_M32221_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdi]
; gcr arg pop 0
;; size=37 bbWeight=0 PerfScore 0.00
-G_M32221_IG09: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32221_IG15: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx r14-r15]
cmp dword ptr [r15+0x08], 0
- jne SHORT G_M32221_IG11
- test rbx, rbx
- jne SHORT G_M32221_IG04
- ;; size=12 bbWeight=0.50 PerfScore 2.62
-G_M32221_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne G_M32221_IG05
+ jmp G_M32221_IG04
+ ;; size=16 bbWeight=0.50 PerfScore 3.00
+G_M32221_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx r14-r15]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
- jmp SHORT G_M32221_IG06
+ jmp SHORT G_M32221_IG12
;; size=12 bbWeight=0.50 PerfScore 1.12
-G_M32221_IG11: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32221_IG17: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rbx r14-r15]
- cmp dword ptr [r15+0x08], 0
- jne SHORT G_M32221_IG13
- jmp SHORT G_M32221_IG05
- ;; size=9 bbWeight=0.50 PerfScore 3.00
-G_M32221_IG12: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- test r15, r15
- je G_M32221_IG16
- ;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M32221_IG13: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [r15+0x08], 0
- je G_M32221_IG16
test rbx, rbx
- je SHORT G_M32221_IG14
+ je SHORT G_M32221_IG18
cmp dword ptr [rbx+0x08], 0
- je SHORT G_M32221_IG14
+ je SHORT G_M32221_IG18
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ call [System.Management.Automation.Provider.NavigationCmdletProvider:NormalizePath(System.String):System.String:this]
+ ; gcrRegs -[rbx rsi rdi r14-r15] +[rax]
+ ; gcr arg pop 0
+ jmp SHORT G_M32221_IG12
+ ;; size=25 bbWeight=0.50 PerfScore 5.38
+G_M32221_IG18: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax] +[rbx r14-r15]
+ test r15, r15
+ je G_M32221_IG07
+ jmp G_M32221_IG06
+ ;; size=14 bbWeight=0.50 PerfScore 1.62
+G_M32221_IG19: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ test rbx, rbx
+ je SHORT G_M32221_IG20
+ cmp dword ptr [rbx+0x08], 0
+ je SHORT G_M32221_IG20
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -178,7 +252,7 @@ G_M32221_IG13: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs -[rsi rdi]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M32221_IG14
+ jne SHORT G_M32221_IG20
mov rsi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -189,18 +263,18 @@ G_M32221_IG13: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs -[rsi rdi]
; gcr arg pop 0
test eax, eax
- je SHORT G_M32221_IG16
- ;; size=84 bbWeight=0.50 PerfScore 11.62
-G_M32221_IG14: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ je G_M32221_IG07
+ ;; size=77 bbWeight=0.50 PerfScore 9.62
+G_M32221_IG20: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx r14]
mov edi, dword ptr [r15+0x08]
cmp word ptr [r15+2*rdi+0x0A], 47
- jne SHORT G_M32221_IG15
+ jne SHORT G_M32221_IG21
mov rax, r15
; gcrRegs +[rax]
- jmp G_M32221_IG06
+ jmp G_M32221_IG12
;; size=21 bbWeight=0.50 PerfScore 4.12
-G_M32221_IG15: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M32221_IG21: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov edi, 1
call <unknown method>
@@ -214,94 +288,21 @@ G_M32221_IG15: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rsi rdi r15]
; gcr arg pop 0
- jmp G_M32221_IG06
+ jmp G_M32221_IG12
;; size=33 bbWeight=0.50 PerfScore 3.88
...
@@ -7,14 +7,14 @@
; fully interruptible
; Final local variable assignments
;
-; V00 loc0 [V00,T01] ( 12,230.50) ref -> [rbp-0x38] class-hnd exact single-def <System.Threading.PortableThreadPool>
-; V01 loc1 [V01,T08] ( 3, 9 ) ref -> [rbp-0x40] class-hnd exact single-def <<unknown class>>
-; V02 loc2 [V02,T05] ( 4, 25 ) ref -> [rbp-0x48] class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T01] ( 12,230.50) ref -> [rbp-0x30] class-hnd exact single-def <System.Threading.PortableThreadPool>
+; V01 loc1 [V01,T08] ( 3, 9 ) ref -> [rbp-0x38] class-hnd exact single-def <<unknown class>>
+; V02 loc2 [V02,T05] ( 4, 25 ) ref -> [rbp-0x40] class-hnd exact single-def <<unknown class>>
; V03 loc3 [V03,T04] ( 5, 25.50) int -> r12
;* V04 loc4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.Threading.PortableThreadPool+ThreadCounts>
; V05 loc5 [V05,T06] ( 7, 21 ) int -> rdi
; V06 loc6 [V06,T07] ( 3, 12 ) int -> rax
-; V07 loc7 [V07,T03] ( 2, 32 ) ubyte -> [rbp-0x2C] ld-addr-op spill-single-def
+; V07 loc7 [V07,T03] ( 2, 32 ) ubyte -> r15 ld-addr-op
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T12] ( 2, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <System.Threading.Thread>
; V10 tmp2 [V10,T13] ( 4, 3.50) ref -> rdi
@@ -28,7 +28,7 @@
; V18 rat1 [V18,T10] ( 5, 6 ) long -> r13 "fgMakeTemp is creating a new local variable"
; V19 rat2 [V19,T00] ( 3,384 ) long -> r15 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 24
G_M43936_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -37,8 +37,8 @@ G_M43936_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
+ sub rsp, 24
+ lea rbp, [rsp+0x40]
;; size=19 bbWeight=1 PerfScore 6.75
G_M43936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
call CORINFO_HELP_READYTORUN_THREADSTATIC_BASE
@@ -66,13 +66,13 @@ G_M43936_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
; gcr arg pop 0
lea rax, [(reloc)]
cmp qword ptr [rax-0x08], 0
- jne G_M43936_IG34
+ jne G_M43936_IG29
mov rax, qword ptr [(reloc)]
mov rbx, gword ptr [rax+0x08]
; gcrRegs +[rbx]
lea rax, [(reloc)]
cmp qword ptr [rax-0x08], 0
- jne G_M43936_IG35
+ jne G_M43936_IG30
;; size=54 bbWeight=1 PerfScore 17.00
G_M43936_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rax, qword ptr [(reloc)]
@@ -81,55 +81,50 @@ G_M43936_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
cmp byte ptr [rax], al
mov r15, gword ptr [rbx+0x10]
; gcrRegs +[r15]
- mov gword ptr [rbp-0x40], r15
+ mov gword ptr [rbp-0x38], r15
; GC ptr vars +{V01}
lea rax, [(reloc)]
; gcrRegs -[rax]
cmp qword ptr [rax-0x08], 0
- jne G_M43936_IG36
+ jne G_M43936_IG31
;; size=39 bbWeight=1 PerfScore 14.50
-G_M43936_IG06: ; bbWeight=0.50, gcVars=0000000000000100 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43936_IG06: ; bbWeight=1, gcVars=0000000000000100 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r15]
- mov r15, gword ptr [rbp-0x40]
- ; gcrRegs +[r15]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M43936_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V01}
mov rax, qword ptr [(reloc)]
mov r14, gword ptr [rax+0x08]
; gcrRegs +[r14]
lea r13, [(reloc)]
cmp qword ptr [r13-0x08], 0
- jne G_M43936_IG37
+ jne G_M43936_IG32
;; size=29 bbWeight=1 PerfScore 8.50
-G_M43936_IG08: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M43936_IG07: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
mov r12d, dword ptr [r13+0x04]
lea r13, [(reloc)]
cmp qword ptr [r13-0x08], 0
- jne G_M43936_IG38
+ jne G_M43936_IG33
;; size=22 bbWeight=1 PerfScore 6.50
-G_M43936_IG09: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M43936_IG08: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
movsx rax, word ptr [r13]
test eax, eax
- je SHORT G_M43936_IG14
+ je SHORT G_M43936_IG13
;; size=9 bbWeight=1 PerfScore 5.25
-G_M43936_IG10: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+G_M43936_IG09: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref, isz
; byrRegs +[r13]
test eax, eax
- jge SHORT G_M43936_IG12
+ jge SHORT G_M43936_IG11
;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M43936_IG11: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M43936_IG10: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r13]
mov r12d, -1
- jmp SHORT G_M43936_IG14
+ jmp SHORT G_M43936_IG13
;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M43936_IG12: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+G_M43936_IG11: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref, isz
; byrRegs +[r13]
mov edi, dword ptr [rbx+0x48]
cmp eax, edi
- jle SHORT G_M43936_IG14
+ jle SHORT G_M43936_IG13
;; size=7 bbWeight=0.50 PerfScore 1.62
-G_M43936_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+G_M43936_IG12: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=2000 {r13}, byref, isz
lea rsi, bword ptr [rbx+0x48]
; byrRegs +[rsi]
lea edx, [rdi+0x01]
@@ -137,16 +132,16 @@ G_M43936_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
lock
cmpxchg dword ptr [rsi], edx
cmp eax, edi
- je SHORT G_M43936_IG11
+ je SHORT G_M43936_IG10
mov edi, eax
movsx rsi, word ptr [r13]
; byrRegs -[rsi]
cmp esi, edi
- jg SHORT G_M43936_IG13
+ jg SHORT G_M43936_IG12
;; size=28 bbWeight=4 PerfScore 104.00
-G_M43936_IG14: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M43936_IG13: ; bbWeight=8, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; byrRegs -[r13]
- mov gword ptr [rbp-0x48], r14
+ mov gword ptr [rbp-0x40], r14
; GC ptr vars +{V02}
mov rdi, r14
; gcrRegs +[rdi]
@@ -157,14 +152,11 @@ G_M43936_IG14: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs -[rdi r14]
; gcr arg pop 0
test eax, eax
- mov r14, gword ptr [rbp-0x48]
- ; gcrRegs +[r14]
- je G_M43936_IG31
- ;; size=34 bbWeight=8 PerfScore 64.00
-G_M43936_IG15: ; bbWeight=16, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V02}
+ je G_M43936_IG27
+ ;; size=30 bbWeight=8 PerfScore 56.00
+G_M43936_IG14: ; bbWeight=16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor r13d, r13d
- mov gword ptr [rbp-0x38], rbx
+ mov gword ptr [rbp-0x30], rbx
; GC ptr vars +{V00}
mov rdi, rbx
; gcrRegs +[rdi]
@@ -172,62 +164,55 @@ G_M43936_IG15: ; bbWeight=16, gcVars=0000000000000000 {}, gcrefRegs=C008
; gcrRegs -[rbx rdi]
; gcr arg pop 0
test eax, eax
- je G_M43936_IG26
+ je G_M43936_IG22
;; size=23 bbWeight=16 PerfScore 60.00
-G_M43936_IG16: ; bbWeight=8, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
- mov gword ptr [rbp-0x48], r14
- ; GC ptr vars +{V02}
- mov gword ptr [rbp-0x40], r15
- ; GC ptr vars +{V01}
- ;; size=8 bbWeight=8 PerfScore 16.00
-G_M43936_IG17: ; bbWeight=64, gcVars=0000000000000122 {V00 V01 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r14-r15]
+G_M43936_IG15: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call <unknown method>
; gcr arg pop 0
- mov rbx, gword ptr [rbp-0x38]
+ mov rbx, gword ptr [rbp-0x30]
; gcrRegs +[rbx]
mov dword ptr [rbx+0xE0], eax
cmp dword ptr [(reloc)], 0
- jne G_M43936_IG39
+ jne G_M43936_IG34
;; size=28 bbWeight=64 PerfScore 448.00
-G_M43936_IG18: ; bbWeight=64, gcVars=0000000000000120 {V01 V02}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43936_IG16: ; bbWeight=64, gcVars=0000000000000120 {V01 V02}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V00 V01}
call <unknown method>
; gcr arg pop 0
test eax, eax
- je G_M43936_IG27
- mov gword ptr [rbp-0x38], rbx
+ je SHORT G_M43936_IG23
+ mov gword ptr [rbp-0x30], rbx
; GC ptr vars +{V00}
cmp dword ptr [rbx+0x160], 0
- mov rbx, gword ptr [rbp-0x38]
- jle SHORT G_M43936_IG25
+ mov rbx, gword ptr [rbp-0x30]
+ jle SHORT G_M43936_IG24
; GC ptr vars -{V00}
call <unknown method>
; gcr arg pop 0
lea r15, [(reloc)]
cmp qword ptr [r15-0x08], 0
- jne G_M43936_IG40
- ;; size=53 bbWeight=64 PerfScore 880.00
-G_M43936_IG19: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M43936_IG35
+ ;; size=49 bbWeight=64 PerfScore 880.00
+G_M43936_IG17: ; bbWeight=64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r15+0x04], 1
- je SHORT G_M43936_IG22
+ je SHORT G_M43936_IG20
;; size=7 bbWeight=64 PerfScore 256.00
-G_M43936_IG20: ; bbWeight=32, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov gword ptr [rbp-0x38], rbx
+G_M43936_IG18: ; bbWeight=32, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov gword ptr [rbp-0x30], rbx
; GC ptr vars +{V00}
mov edi, 1
;; size=9 bbWeight=32 PerfScore 40.00
-G_M43936_IG21: ; bbWeight=32, gcVars=0000000000000122 {V00 V01 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M43936_IG19: ; bbWeight=32, gcVars=0000000000000122 {V00 V01 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx]
; GC ptr vars +{V01}
call <unknown method>
; gcr arg pop 0
cmp dword ptr [(reloc)], 0
- mov rbx, gword ptr [rbp-0x38]
+ mov rbx, gword ptr [rbp-0x30]
; gcrRegs +[rbx]
- jne G_M43936_IG41
+ jne G_M43936_IG36
;; size=22 bbWeight=32 PerfScore 192.00
-G_M43936_IG22: ; bbWeight=64, gcVars=0000000000000120 {V01 V02}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43936_IG20: ; bbWeight=64, gcVars=0000000000000120 {V01 V02}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V00 V01}
mov rdi, rbx
; gcrRegs +[rdi]
@@ -235,87 +220,67 @@ G_M43936_IG22: ; bbWeight=64, gcVars=0000000000000120 {V01 V02}, gcrefReg
; gcrRegs -[rdi]
...
@@ -21,8 +21,8 @@
; V11 loc6 [V11,T03] ( 8, 7 ) int -> r12 single-def
; V12 loc7 [V12,T07] ( 11, 5.50) long -> rax ld-addr-op
;* V13 loc8 [V13 ] ( 0, 0 ) long -> zero-ref single-def
-; V14 loc9 [V14,T08] ( 3, 4.50) long -> r14 single-def
-; V15 loc10 [V15,T00] ( 12, 20.54) int -> r13
+; V14 loc9 [V14,T08] ( 3, 4.50) long -> rcx single-def
+; V15 loc10 [V15,T00] ( 12, 20.54) int -> rdi
;* V16 loc11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.RuntimeTypeHandle>
;* V17 loc12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref <System.RuntimeMethodHandle>
; V18 OutArgs [V18 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -35,7 +35,7 @@
;* V25 tmp7 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
; V26 tmp8 [V26,T09] ( 3, 2.50) long -> r13 single-def "field V01._value (fldOffset=0x0)" P-INDEP
; V27 tmp9 [V27 ] ( 5, 4 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed "field V07._value (fldOffset=0x0)" P-DEP
-; V28 tmp10 [V28,T02] ( 4, 8 ) long -> rdx "field V16._value (fldOffset=0x0)" P-INDEP
+; V28 tmp10 [V28,T02] ( 4, 8 ) long -> rsi "field V16._value (fldOffset=0x0)" P-INDEP
; V29 tmp11 [V29,T13] ( 2, 2 ) long -> rbx single-def "field V17._value (fldOffset=0x0)" P-INDEP
;
; Lcl frame size = 136
@@ -130,7 +130,7 @@ G_M51005_IG06: ; bbWeight=1, gcVars=0000000000000400 {V08}, gcrefRegs=808
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- jne G_M51005_IG14
+ jne G_M51005_IG18
;; size=82 bbWeight=1 PerfScore 43.00
G_M51005_IG07: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
@@ -147,46 +147,86 @@ G_M51005_IG09: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
xor edi, edi
jmp SHORT G_M51005_IG11
;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M51005_IG10: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M51005_IG10: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov edi, r12d
sub edi, 1
- jo G_M51005_IG15
+ jo SHORT G_M51005_IG14
imul edi, edi, 8
- jo G_M51005_IG15
- ;; size=21 bbWeight=0.50 PerfScore 2.25
+ jo SHORT G_M51005_IG14
+ ;; size=13 bbWeight=0.50 PerfScore 2.25
G_M51005_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
add edi, 48
- jo G_M51005_IG15
+ jo SHORT G_M51005_IG14
movsxd rdi, edi
call System.Runtime.InteropServices.NativeMemory:Alloc(ulong):ulong
; gcr arg pop 0
test rax, rax
- je G_M51005_IG17
+ je SHORT G_M51005_IG13
mov qword ptr [rax], r13
mov qword ptr [rax+0x08], r14
movups xmm0, xmmword ptr [rbp-0x38]
movups xmmword ptr [rax+0x10], xmm0
mov dword ptr [rax+0x20], r12d
cmp byte ptr [rax], al
- lea r14, [rax+0x28]
- xor r13d, r13d
+ lea rcx, [rax+0x28]
+ xor edi, edi
test r12d, r12d
- jle SHORT G_M51005_IG13
+ jle SHORT G_M51005_IG17
test rbx, rbx
- je G_M51005_IG18
+ je SHORT G_M51005_IG16
cmp dword ptr [rbx+0x08], r12d
- jl G_M51005_IG18
- ;; size=78 bbWeight=0.50 PerfScore 11.00
+ jl SHORT G_M51005_IG16
+ ;; size=61 bbWeight=0.50 PerfScore 11.00
G_M51005_IG12: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov ecx, r13d
- mov rdx, qword ptr [rbx+8*rcx+0x10]
- movsxd rcx, r13d
- mov qword ptr [r14+8*rcx], rdx
- inc r13d
- cmp r13d, r12d
+ mov esi, edi
+ mov rsi, qword ptr [rbx+8*rsi+0x10]
+ movsxd rdx, edi
+ mov qword ptr [rcx+8*rdx], rsi
+ inc edi
+ cmp edi, r12d
jl SHORT G_M51005_IG12
- ;; size=23 bbWeight=3.96 PerfScore 19.80
-G_M51005_IG13: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M51005_IG17
+ ;; size=23 bbWeight=3.96 PerfScore 27.72
+G_M51005_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx r15]
+ lea rdi, [(reloc)] ; <unknown class>
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rbx, rax
+ ; gcrRegs +[rbx]
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ call <unknown method>
+ ; gcrRegs -[rax rdi]
+ ; gcr arg pop 0
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ call CORINFO_HELP_THROW
+ ; gcrRegs -[rbx rdi]
+ ; gcr arg pop 0
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M51005_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_OVERFLOW
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51005_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51005_IG16: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx r15]
+ cmp edi, dword ptr [rbx+0x08]
+ jae SHORT G_M51005_IG15
+ mov esi, edi
+ mov rsi, qword ptr [rbx+8*rsi+0x10]
+ movsxd rdx, edi
+ mov qword ptr [rcx+8*rdx], rsi
+ inc edi
+ cmp edi, r12d
+ jl SHORT G_M51005_IG16
+ ;; size=26 bbWeight=0.04 PerfScore 0.36
+G_M51005_IG17: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
inc rax
mov qword ptr [rbp-0x70], rax
@@ -214,51 +254,10 @@ G_M51005_IG13: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {},
; gcrRegs -[rdi r15]
; gcr arg pop 0
;; size=69 bbWeight=0.50 PerfScore 20.75
-G_M51005_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M51005_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rbx, qword ptr [rbp-0x70]
- jmp SHORT G_M51005_IG19
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M51005_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_OVERFLOW
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51005_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51005_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rdi, [(reloc)] ; <unknown class>
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- mov rdi, rbx
- ; gcrRegs +[rdi]
- call <unknown method>
- ; gcrRegs -[rax rdi]
- ; gcr arg pop 0
- mov rdi, rbx
- ; gcrRegs +[rdi]
- call CORINFO_HELP_THROW
- ; gcrRegs -[rbx rdi]
- ; gcr arg pop 0
- ;; size=31 bbWeight=0 PerfScore 0.00
-G_M51005_IG18: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx r15]
- cmp r13d, dword ptr [rbx+0x08]
- jae SHORT G_M51005_IG16
- mov edi, r13d
- mov rdx, qword ptr [rbx+8*rdi+0x10]
- movsxd rdi, r13d
- mov qword ptr [r14+8*rdi], rdx
- inc r13d
- cmp r13d, r12d
- jl SHORT G_M51005_IG18
- jmp G_M51005_IG13
- ;; size=34 bbWeight=0.04 PerfScore 0.44
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M51005_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r15]
mov rdi, gword ptr [rbp-0x80]
; gcrRegs +[rdi]
; GC ptr vars -{V08}
@@ -311,7 +310,7 @@ G_M51005_IG24: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 584, prolog size 70, PerfScore 141.32, instruction count 170, allocated bytes for code 584 (MethodHash=804938c2) for method Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
+; Total bytes of code 549, prolog size 70, PerfScore 147.16, instruction count 169, allocated bytes for code 549 (MethodHash=804938c2) for method Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
; ============================================================
Cfi Info:
@@ -23,15 +23,15 @@
; V13 loc9 [V13,T08] ( 7, 14 ) ushort -> rsi
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V15 tmp1 [V15 ] ( 0, 0 ) int -> zero-ref
-; V16 tmp2 [V16,T00] ( 3, 96 ) int -> rcx "dup spill"
+; V16 tmp2 [V16,T00] ( 3, 96 ) int -> rsi "dup spill"
;* V17 tmp3 [V17 ] ( 0, 0 ) int -> zero-ref
; V18 tmp4 [V18,T12] ( 2, 8 ) ushort -> rcx "Inlining Arg"
-; V19 tmp5 [V19,T13] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
+; V19 tmp5 [V19,T13] ( 3, 6 ) long -> r8 "Inline stloc first use temp"
;* V20 tmp6 [V20 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V21 tmp7 [V21 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V22 tmp8 [V22 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V23 tmp9 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V24 cse0 [V24,T01] ( 3, 48 ) int -> rcx "CSE - aggressive"
+; V24 cse0 [V24,T01] ( 3, 48 ) int -> rsi "CSE - aggressive"
; V25 cse1 [V25,T10] ( 5, 10 ) int -> rsi multi-def "CSE - moderate"
; V26 cse2 [V26,T18] ( 3, 1.50) int -> rcx "CSE - moderate"
;
@@ -56,232 +56,235 @@ G_M23448_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
xor r12d, r12d
xor edx, edx
xor eax, eax
- mov dword ptr [rbp-0x2C], eax
xor r9d, r9d
mov dword ptr [rbp-0x30], r9d
- xor r10d, r10d
+ xor edi, edi
+ mov r10d, 1
mov r11d, 1
- mov r8d, 1
movsxd rcx, r13d
cmp word ptr [r15+2*rcx], 58
jne SHORT G_M23448_IG04
- ;; size=43 bbWeight=1 PerfScore 8.00
+ ;; size=39 bbWeight=1 PerfScore 7.00
G_M23448_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
lea ecx, [r13+0x01]
cmp ecx, dword ptr [rbx]
- jge G_M23448_IG29
+ jge G_M23448_IG27
movsxd rcx, ecx
cmp word ptr [r15+2*rcx], 58
- jne G_M23448_IG29
+ jne G_M23448_IG27
;; size=27 bbWeight=0.50 PerfScore 4.38
-G_M23448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M23448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rbp-0x48], r13d
mov ecx, dword ptr [rbp-0x48]
cmp ecx, dword ptr [rbx]
- jge SHORT G_M23448_IG07
- ;; size=11 bbWeight=0.50 PerfScore 3.00
+ jge G_M23448_IG21
+ ;; size=15 bbWeight=0.50 PerfScore 3.00
G_M23448_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov dword ptr [rbp-0x34], r10d
- test r10d, r10d
- jne SHORT G_M23448_IG08
- ;; size=9 bbWeight=4 PerfScore 9.00
+ test edi, edi
+ jne SHORT G_M23448_IG07
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M23448_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
movsxd rcx, dword ptr [rbp-0x48]
movzx rsi, word ptr [r15+2*rcx]
mov ecx, esi
add ecx, -48
- mov edi, ecx
+ mov r8d, ecx
mov r9, 0xD1FFAB1E
- mov ecx, edi
+ mov ecx, r8d
shl r9, cl
- add rdi, -64
- and rdi, r9
- jge SHORT G_M23448_IG10
- jmp SHORT G_M23448_IG09
- ;; size=42 bbWeight=2 PerfScore 23.50
-G_M23448_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- mov dword ptr [rbp-0x34], r10d
- mov dword ptr [rbp-0x38], r11d
- jmp G_M23448_IG23
- ;; size=13 bbWeight=0.25 PerfScore 1.00
-G_M23448_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ add r8, -64
+ and r8, r9
+ jge SHORT G_M23448_IG09
+ jmp SHORT G_M23448_IG08
+ ;; size=44 bbWeight=2 PerfScore 23.50
+G_M23448_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
movsxd rsi, dword ptr [rbp-0x48]
movzx rsi, word ptr [r15+2*rsi]
- lea edi, [rsi-0x30]
- cmp edi, 9
- ja SHORT G_M23448_IG10
+ lea ecx, [rsi-0x30]
+ cmp ecx, 9
+ ja SHORT G_M23448_IG09
;; size=17 bbWeight=2 PerfScore 13.50
-G_M23448_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M23448_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
inc edx
- xor r11d, r11d
- mov dword ptr [rbp-0x38], r11d
- jmp G_M23448_IG22
- ;; size=14 bbWeight=2 PerfScore 7.00
-G_M23448_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ xor r10d, r10d
+ jmp G_M23448_IG20
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M23448_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp edx, 4
- jg G_M23448_IG29
+ jg G_M23448_IG27
test edx, edx
- je SHORT G_M23448_IG11
+ je SHORT G_M23448_IG10
inc r12d
- mov r8d, dword ptr [rbp-0x48]
- sub r8d, edx
+ mov r11d, dword ptr [rbp-0x48]
+ sub r11d, edx
;; size=23 bbWeight=2 PerfScore 8.00
-G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M23448_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp esi, 46
- ja SHORT G_M23448_IG12
+ ja SHORT G_M23448_IG11
cmp esi, 37
- je SHORT G_M23448_IG14
+ je SHORT G_M23448_IG12
cmp esi, 46
- jne G_M23448_IG29
+ jne G_M23448_IG27
cmp dword ptr [rbp-0x30], 0
- mov dword ptr [rbp-0x38], r11d
- jne G_M23448_IG29
+ mov dword ptr [rbp-0x34], edi
+ mov dword ptr [rbp-0x38], r10d
+ mov dword ptr [rbp-0x2C], eax
+ jne G_M23448_IG27
+ jmp G_M23448_IG18
+ ;; size=44 bbWeight=2 PerfScore 23.50
+G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp esi, 47
+ je G_M23448_IG17
+ cmp esi, 58
+ je SHORT G_M23448_IG15
+ cmp esi, 93
+ je SHORT G_M23448_IG14
+ jmp G_M23448_IG23
+ ;; size=24 bbWeight=2 PerfScore 11.50
+G_M23448_IG12: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ mov esi, dword ptr [rbp-0x48]
+ inc esi
+ mov dword ptr [rbp-0x48], esi
+ cmp esi, dword ptr [rbx]
+ je G_M23448_IG27
+ movsxd rsi, dword ptr [rbp-0x48]
+ movzx rsi, word ptr [r15+2*rsi]
+ cmp esi, 93
+ je SHORT G_M23448_IG14
+ cmp esi, 47
+ jne SHORT G_M23448_IG12
+ ;; size=35 bbWeight=16 PerfScore 220.00
+G_M23448_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M23448_IG17
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M23448_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ mov r13d, dword ptr [rbp-0x48]
+ mov esi, dword ptr [rbx]
+ mov dword ptr [rbp-0x48], esi
+ jmp G_M23448_IG20
+ ;; size=14 bbWeight=2 PerfScore 12.00
+G_M23448_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp dword ptr [rbp-0x48], 0
+ jle SHORT G_M23448_IG16
+ mov r10d, dword ptr [rbp-0x48]
+ dec r10d
+ movsxd rdx, r10d
+ cmp word ptr [r15+2*rdx], 58
+ jne SHORT G_M23448_IG16
+ test eax, eax
+ jne G_M23448_IG27
+ mov dword ptr [rbp-0x2C], 1
+ xor r10d, r10d
+ mov dword ptr [rbp-0x38], r10d
+ mov eax, dword ptr [rbp-0x2C]
+ jmp SHORT G_M23448_IG19
+ ;; size=51 bbWeight=2 PerfScore 30.00
+G_M23448_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ mov dword ptr [rbp-0x38], 1
+ jmp SHORT G_M23448_IG19
+ ;; size=9 bbWeight=8 PerfScore 24.00
+G_M23448_IG17: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ xor edx, edx
+ test r12d, r12d
+ sete dl
+ or edi, edx
+ movzx rdx, r14b
+ or edx, edi
+ jne G_M23448_IG27
+ mov dword ptr [rbp-0x34], 1
+ mov edi, dword ptr [rbp-0x34]
+ jmp SHORT G_M23448_IG16
+ ;; size=34 bbWeight=16 PerfScore 116.00
+G_M23448_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov edx, dword ptr [rbx]
mov dword ptr [rbp-0x48], edx
lea rdx, [rbp-0x48]
mov rdi, r15
- mov dword ptr [rbp-0x3C], r8d
- mov esi, r8d
+ mov dword ptr [rbp-0x3C], r11d
+ mov esi, r11d
mov ecx, 1
xor r8d, r8d
call <unknown method>
; gcr arg pop 0
test eax, eax
- je G_M23448_IG29
- jmp G_M23448_IG20
- ;; size=78 bbWeight=2 PerfScore 35.00
-G_M23448_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- cmp esi, 47
- je G_M23448_IG19
- cmp esi, 58
- je SHORT G_M23448_IG17
- cmp esi, 93
- je SHORT G_M23448_IG16
- ;; size=19 bbWeight=2 PerfScore 7.50
-G_M23448_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rbx]
- jmp G_M23448_IG29
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M23448_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
- mov ecx, dword ptr [rbp-0x48]
- inc ecx
- mov dword ptr [rbp-0x48], ecx
- cmp ecx, dword ptr [rbx]
- je G_M23448_IG29
- movsxd rcx, dword ptr [rbp-0x48]
- movzx rcx, word ptr [r15+2*rcx]
- cmp ecx, 93
- je SHORT G_M23448_IG16
- cmp ecx, 47
- jne SHORT G_M23448_IG14
- ;; size=35 bbWeight=16 PerfScore 220.00
...
@@ -11,7 +11,7 @@
; V01 arg1 [V01,T03] ( 3, 18 ) long -> rbx single-def
; V02 arg2 [V02,T04] ( 3, 18 ) ushort -> r15 single-def
; V03 arg3 [V03,T05] ( 3, 18 ) long -> r14 single-def
-; V04 loc0 [V04,T00] ( 11,110 ) long -> r12
+; V04 loc0 [V04,T00] ( 11,110 ) long -> registers
; V05 loc1 [V05,T02] ( 4, 25 ) ubyte -> [rbp-0x2C]
; V06 loc2 [V06 ] ( 2, 16.50) ushort -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
; V07 loc3 [V07,T13] ( 3, 1.50) long -> rax
@@ -53,7 +53,7 @@ G_M48740_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=5 bbWeight=1 PerfScore 0.50
G_M48740_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test r12, r12
- je SHORT G_M48740_IG09
+ je SHORT G_M48740_IG07
;; size=5 bbWeight=8 PerfScore 10.00
G_M48740_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rdx, r15w
@@ -66,55 +66,62 @@ G_M48740_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call System.Runtime.DispatchResolve:FindImplSlotForCurrentType(ulong,ulong,ushort,ubyte,ulong,ulong):ubyte
; gcr arg pop 0
test eax, eax
- jne SHORT G_M48740_IG10
+ jne SHORT G_M48740_IG11
mov edi, dword ptr [r12]
shr edi, 26
and edi, 31
cmp edi, 23
- je SHORT G_M48740_IG08
+ je SHORT G_M48740_IG06
;; size=46 bbWeight=16 PerfScore 144.00
G_M48740_IG05: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp edi, 24
- je SHORT G_M48740_IG08
+ jne SHORT G_M48740_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M48740_IG06: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ lea r12, [(reloc)]
+ mov eax, dword ptr [rbp-0x2C]
+ jmp SHORT G_M48740_IG04
+ ;; size=12 bbWeight=16 PerfScore 56.00
+G_M48740_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rbp-0x2C], eax
+ jmp SHORT G_M48740_IG09
+ ;; size=5 bbWeight=4 PerfScore 12.00
+G_M48740_IG08: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, r12
call Internal.Runtime.MethodTable:get_NonArrayBaseType():ulong:this
; gcr arg pop 0
mov r12, rax
test r12, r12
- mov eax, dword ptr [rbp-0x2C]
- jne SHORT G_M48740_IG04
- ;; size=19 bbWeight=16 PerfScore 60.00
-G_M48740_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M48740_IG09
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M48740_IG08: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea r12, [(reloc)]
+ jne SHORT G_M48740_IG10
+ ;; size=16 bbWeight=16 PerfScore 44.00
+G_M48740_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rbp-0x2C], 0
+ jne SHORT G_M48740_IG14
+ mov r12d, 1
+ mov rax, r13
+ mov rcx, rax
+ mov eax, r12d
+ mov r12, rcx
+ jmp SHORT G_M48740_IG03
+ ;; size=26 bbWeight=4 PerfScore 25.00
+G_M48740_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rbp-0x2C]
jmp SHORT G_M48740_IG04
- ;; size=12 bbWeight=16 PerfScore 56.00
-G_M48740_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test eax, eax
- jne SHORT G_M48740_IG13
- mov eax, 1
- mov r12, r13
- jmp SHORT G_M48740_IG03
- ;; size=14 bbWeight=4 PerfScore 15.00
-G_M48740_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=5 bbWeight=8 PerfScore 24.00
+G_M48740_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rdi, word ptr [rbp-0x38]
mov eax, edi
movzx rcx, word ptr [r12+0x10]
cmp eax, ecx
- jge SHORT G_M48740_IG11
+ jge SHORT G_M48740_IG12
mov rax, qword ptr [r13+8*rdi+0x18]
- jmp SHORT G_M48740_IG12
+ jmp SHORT G_M48740_IG13
;; size=23 bbWeight=0.50 PerfScore 4.25
-G_M48740_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M48740_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp edi, 0xFFFF
- je SHORT G_M48740_IG15
- cmp edi, 0xFFFE
je SHORT G_M48740_IG16
+ cmp edi, 0xFFFE
+ je SHORT G_M48740_IG17
sub edi, ecx
movzx rbx, di
mov rdi, r12
@@ -127,7 +134,7 @@ G_M48740_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movsxd rdi, dword ptr [rax]
add rax, rdi
;; size=41 bbWeight=0.50 PerfScore 4.62
-G_M48740_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M48740_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 24
pop rbx
pop r12
@@ -137,10 +144,10 @@ G_M48740_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M48740_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48740_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M48740_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M48740_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -150,7 +157,7 @@ G_M48740_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M48740_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48740_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov edi, 11
call <unknown method>
; gcrRegs +[rax]
@@ -161,7 +168,7 @@ G_M48740_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[rax rdi]
; gcr arg pop 0
;; size=18 bbWeight=0 PerfScore 0.00
-G_M48740_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48740_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 12
call <unknown method>
; gcrRegs +[rax]
@@ -174,7 +181,7 @@ G_M48740_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=19 bbWeight=0 PerfScore 0.00
-; Total bytes of code 272, prolog size 31, PerfScore 320.50, instruction count 93, allocated bytes for code 272 (MethodHash=d484419b) for method System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
+; Total bytes of code 289, prolog size 31, PerfScore 346.50, instruction count 98, allocated bytes for code 289 (MethodHash=d484419b) for method System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
; ============================================================
Cfi Info:
@@ -11,7 +11,7 @@
; V01 arg1 [V01,T03] ( 3, 18 ) long -> rbx single-def
; V02 arg2 [V02,T04] ( 3, 18 ) ushort -> r15 single-def
; V03 arg3 [V03,T05] ( 3, 18 ) long -> r14 single-def
-; V04 loc0 [V04,T00] ( 11,110 ) long -> r12
+; V04 loc0 [V04,T00] ( 11,110 ) long -> registers
; V05 loc1 [V05,T02] ( 4, 25 ) ubyte -> [rbp-0x2C]
; V06 loc2 [V06 ] ( 2, 16.50) ushort -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
; V07 loc3 [V07,T13] ( 3, 1.50) long -> rax
@@ -53,7 +53,7 @@ G_M48740_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=5 bbWeight=1 PerfScore 0.50
G_M48740_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test r12, r12
- je SHORT G_M48740_IG09
+ je SHORT G_M48740_IG07
;; size=5 bbWeight=8 PerfScore 10.00
G_M48740_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rdx, r15w
@@ -66,55 +66,62 @@ G_M48740_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call System.Runtime.DispatchResolve:FindImplSlotForCurrentType(ulong,ulong,ushort,ubyte,ulong,ulong):ubyte
; gcr arg pop 0
test eax, eax
- jne SHORT G_M48740_IG10
+ jne SHORT G_M48740_IG11
mov edi, dword ptr [r12]
shr edi, 26
and edi, 31
cmp edi, 23
- je SHORT G_M48740_IG08
+ je SHORT G_M48740_IG06
;; size=46 bbWeight=16 PerfScore 144.00
G_M48740_IG05: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp edi, 24
- je SHORT G_M48740_IG08
+ jne SHORT G_M48740_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M48740_IG06: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ lea r12, [(reloc)]
+ mov eax, dword ptr [rbp-0x2C]
+ jmp SHORT G_M48740_IG04
+ ;; size=12 bbWeight=16 PerfScore 56.00
+G_M48740_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rbp-0x2C], eax
+ jmp SHORT G_M48740_IG09
+ ;; size=5 bbWeight=4 PerfScore 12.00
+G_M48740_IG08: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, r12
call Internal.Runtime.MethodTable:get_NonArrayBaseType():ulong:this
; gcr arg pop 0
mov r12, rax
test r12, r12
- mov eax, dword ptr [rbp-0x2C]
- jne SHORT G_M48740_IG04
- ;; size=19 bbWeight=16 PerfScore 60.00
-G_M48740_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M48740_IG09
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M48740_IG08: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea r12, [(reloc)]
+ jne SHORT G_M48740_IG10
+ ;; size=16 bbWeight=16 PerfScore 44.00
+G_M48740_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rbp-0x2C], 0
+ jne SHORT G_M48740_IG14
+ mov r12d, 1
+ mov rax, r13
+ mov rcx, rax
+ mov eax, r12d
+ mov r12, rcx
+ jmp SHORT G_M48740_IG03
+ ;; size=26 bbWeight=4 PerfScore 25.00
+G_M48740_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rbp-0x2C]
jmp SHORT G_M48740_IG04
- ;; size=12 bbWeight=16 PerfScore 56.00
-G_M48740_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test eax, eax
- jne SHORT G_M48740_IG13
- mov eax, 1
- mov r12, r13
- jmp SHORT G_M48740_IG03
- ;; size=14 bbWeight=4 PerfScore 15.00
-G_M48740_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=5 bbWeight=8 PerfScore 24.00
+G_M48740_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rdi, word ptr [rbp-0x38]
mov eax, edi
movzx rcx, word ptr [r12+0x10]
cmp eax, ecx
- jge SHORT G_M48740_IG11
+ jge SHORT G_M48740_IG12
mov rax, qword ptr [r13+8*rdi+0x18]
- jmp SHORT G_M48740_IG12
+ jmp SHORT G_M48740_IG13
;; size=23 bbWeight=0.50 PerfScore 4.25
-G_M48740_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M48740_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp edi, 0xFFFF
- je SHORT G_M48740_IG15
- cmp edi, 0xFFFE
je SHORT G_M48740_IG16
+ cmp edi, 0xFFFE
+ je SHORT G_M48740_IG17
sub edi, ecx
movzx rbx, di
mov rdi, r12
@@ -127,7 +134,7 @@ G_M48740_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movsxd rdi, dword ptr [rax]
add rax, rdi
;; size=41 bbWeight=0.50 PerfScore 4.62
-G_M48740_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M48740_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 24
pop rbx
pop r12
@@ -137,10 +144,10 @@ G_M48740_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M48740_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48740_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M48740_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M48740_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -150,7 +157,7 @@ G_M48740_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M48740_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48740_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov edi, 11
call <unknown method>
; gcrRegs +[rax]
@@ -161,7 +168,7 @@ G_M48740_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[rax rdi]
; gcr arg pop 0
;; size=18 bbWeight=0 PerfScore 0.00
-G_M48740_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48740_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 12
call <unknown method>
; gcrRegs +[rax]
@@ -174,7 +181,7 @@ G_M48740_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=19 bbWeight=0 PerfScore 0.00
-; Total bytes of code 272, prolog size 31, PerfScore 320.50, instruction count 93, allocated bytes for code 272 (MethodHash=d484419b) for method System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
+; Total bytes of code 289, prolog size 31, PerfScore 346.50, instruction count 98, allocated bytes for code 289 (MethodHash=d484419b) for method System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
; ============================================================
Cfi Info:
@@ -11,7 +11,7 @@
; V01 arg1 [V01,T03] ( 3, 18 ) long -> rbx single-def
; V02 arg2 [V02,T04] ( 3, 18 ) ushort -> r15 single-def
; V03 arg3 [V03,T05] ( 3, 18 ) long -> r14 single-def
-; V04 loc0 [V04,T00] ( 11,110 ) long -> r12
+; V04 loc0 [V04,T00] ( 11,110 ) long -> registers
; V05 loc1 [V05,T02] ( 4, 25 ) ubyte -> [rbp-0x2C]
; V06 loc2 [V06 ] ( 2, 16.50) ushort -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op
; V07 loc3 [V07,T13] ( 3, 1.50) long -> rax
@@ -53,7 +53,7 @@ G_M48740_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=5 bbWeight=1 PerfScore 0.50
G_M48740_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test r12, r12
- je SHORT G_M48740_IG09
+ je SHORT G_M48740_IG07
;; size=5 bbWeight=8 PerfScore 10.00
G_M48740_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rdx, r15w
@@ -66,55 +66,62 @@ G_M48740_IG04: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call System.Runtime.DispatchResolve:FindImplSlotForCurrentType(ulong,ulong,ushort,ubyte,ulong,ulong):ubyte
; gcr arg pop 0
test eax, eax
- jne SHORT G_M48740_IG10
+ jne SHORT G_M48740_IG11
mov edi, dword ptr [r12]
shr edi, 26
and edi, 31
cmp edi, 23
- je SHORT G_M48740_IG08
+ je SHORT G_M48740_IG06
;; size=46 bbWeight=16 PerfScore 144.00
G_M48740_IG05: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp edi, 24
- je SHORT G_M48740_IG08
+ jne SHORT G_M48740_IG08
;; size=5 bbWeight=8 PerfScore 10.00
G_M48740_IG06: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ lea r12, [(reloc)]
+ mov eax, dword ptr [rbp-0x2C]
+ jmp SHORT G_M48740_IG04
+ ;; size=12 bbWeight=16 PerfScore 56.00
+G_M48740_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rbp-0x2C], eax
+ jmp SHORT G_M48740_IG09
+ ;; size=5 bbWeight=4 PerfScore 12.00
+G_M48740_IG08: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, r12
call Internal.Runtime.MethodTable:get_NonArrayBaseType():ulong:this
; gcr arg pop 0
mov r12, rax
test r12, r12
- mov eax, dword ptr [rbp-0x2C]
- jne SHORT G_M48740_IG04
- ;; size=19 bbWeight=16 PerfScore 60.00
-G_M48740_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M48740_IG09
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M48740_IG08: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea r12, [(reloc)]
+ jne SHORT G_M48740_IG10
+ ;; size=16 bbWeight=16 PerfScore 44.00
+G_M48740_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rbp-0x2C], 0
+ jne SHORT G_M48740_IG14
+ mov r12d, 1
+ mov rax, r13
+ mov rcx, rax
+ mov eax, r12d
+ mov r12, rcx
+ jmp SHORT G_M48740_IG03
+ ;; size=26 bbWeight=4 PerfScore 25.00
+G_M48740_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rbp-0x2C]
jmp SHORT G_M48740_IG04
- ;; size=12 bbWeight=16 PerfScore 56.00
-G_M48740_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test eax, eax
- jne SHORT G_M48740_IG13
- mov eax, 1
- mov r12, r13
- jmp SHORT G_M48740_IG03
- ;; size=14 bbWeight=4 PerfScore 15.00
-G_M48740_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=5 bbWeight=8 PerfScore 24.00
+G_M48740_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rdi, word ptr [rbp-0x38]
mov eax, edi
movzx rcx, word ptr [r12+0x10]
cmp eax, ecx
- jge SHORT G_M48740_IG11
+ jge SHORT G_M48740_IG12
mov rax, qword ptr [r13+8*rdi+0x18]
- jmp SHORT G_M48740_IG12
+ jmp SHORT G_M48740_IG13
;; size=23 bbWeight=0.50 PerfScore 4.25
-G_M48740_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M48740_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp edi, 0xFFFF
- je SHORT G_M48740_IG15
- cmp edi, 0xFFFE
je SHORT G_M48740_IG16
+ cmp edi, 0xFFFE
+ je SHORT G_M48740_IG17
sub edi, ecx
movzx rbx, di
mov rdi, r12
@@ -127,7 +134,7 @@ G_M48740_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movsxd rdi, dword ptr [rax]
add rax, rdi
;; size=41 bbWeight=0.50 PerfScore 4.62
-G_M48740_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M48740_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 24
pop rbx
pop r12
@@ -137,10 +144,10 @@ G_M48740_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M48740_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48740_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M48740_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M48740_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -150,7 +157,7 @@ G_M48740_IG14: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M48740_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M48740_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov edi, 11
call <unknown method>
; gcrRegs +[rax]
@@ -161,7 +168,7 @@ G_M48740_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[rax rdi]
; gcr arg pop 0
;; size=18 bbWeight=0 PerfScore 0.00
-G_M48740_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48740_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edi, 12
call <unknown method>
; gcrRegs +[rax]
@@ -174,7 +181,7 @@ G_M48740_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=19 bbWeight=0 PerfScore 0.00
-; Total bytes of code 272, prolog size 31, PerfScore 320.50, instruction count 93, allocated bytes for code 272 (MethodHash=d484419b) for method System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
+; Total bytes of code 289, prolog size 31, PerfScore 346.50, instruction count 98, allocated bytes for code 289 (MethodHash=d484419b) for method System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
; ============================================================
Cfi Info:
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.linux.x64.checked.mch | 1,430 | 455 | 249 | 726 | -4,239 | +5,551 |
benchmarks.run_pgo.linux.x64.checked.mch | 13,830 | 10,336 | 1,229 | 2,265 | -49,136 | +20,892 |
benchmarks.run_tiered.linux.x64.checked.mch | 595 | 166 | 86 | 343 | -1,885 | +2,134 |
coreclr_tests.run.linux.x64.checked.mch | 23,547 | 14,654 | 3,406 | 5,487 | -80,665 | +24,147 |
libraries.crossgen2.linux.x64.checked.mch | 4,711 | 998 | 517 | 3,196 | -8,328 | +5,640 |
libraries.pmi.linux.x64.checked.mch | 10,510 | 3,150 | 2,066 | 5,294 | -23,797 | +19,373 |
libraries_tests.run.linux.x64.Release.mch | 43,541 | 17,573 | 11,371 | 14,597 | -210,166 | +108,177 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 18,583 | 5,031 | 2,237 | 11,315 | -42,628 | +29,781 |
realworld.run.linux.x64.checked.mch | 1,671 | 481 | 255 | 935 | -5,206 | +2,254 |
smoke_tests.nativeaot.linux.x64.checked.mch | 915 | 235 | 124 | 556 | -1,951 | +1,182 |
119,333 | 53,079 | 21,540 | 44,714 | -428,001 | +219,131 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.linux.x64.checked.mch | 34,999 | 3,164 | 31,835 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.linux.x64.checked.mch | 155,971 | 58,399 | 97,572 | 149 (0.10%) | 149 (0.10%) |
benchmarks.run_tiered.linux.x64.checked.mch | 58,890 | 44,312 | 14,578 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.linux.x64.checked.mch | 694,090 | 429,241 | 264,849 | 323 (0.05%) | 323 (0.05%) |
libraries.crossgen2.linux.x64.checked.mch | 233,626 | 15 | 233,611 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.linux.x64.checked.mch | 295,421 | 6 | 295,415 | 1 (0.00%) | 1 (0.00%) |
libraries_tests.run.linux.x64.Release.mch | 756,825 | 495,271 | 261,554 | 3,117 (0.41%) | 3,118 (0.41%) |
librariestestsnotieredcompilation.run.linux.x64.Release.mch | 304,609 | 21,873 | 282,736 | 6 (0.00%) | 6 (0.00%) |
realworld.run.linux.x64.checked.mch | 33,167 | 39 | 33,128 | 0 (0.00%) | 0 (0.00%) |
smoke_tests.nativeaot.linux.x64.checked.mch | 27,440 | 9 | 27,431 | 0 (0.00%) | 0 (0.00%) |
2,595,038 | 1,052,329 | 1,542,709 | 3,596 (0.14%) | 3,597 (0.14%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13736862 (overridden on cmd)
Total bytes of diff: 13738174 (overridden on cmd)
Total bytes of delta: 1312 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
241 : 30915.dasm (7.48 % of base)
233 : 29949.dasm (7.21 % of base)
228 : 17555.dasm (6.42 % of base)
176 : 17192.dasm (8.48 % of base)
123 : 8233.dasm (6.39 % of base)
122 : 2133.dasm (2.82 % of base)
113 : 16446.dasm (6.49 % of base)
113 : 14621.dasm (6.60 % of base)
112 : 10415.dasm (6.91 % of base)
107 : 7726.dasm (3.54 % of base)
96 : 20041.dasm (1.93 % of base)
89 : 16515.dasm (6.05 % of base)
78 : 14530.dasm (2.40 % of base)
77 : 7728.dasm (3.94 % of base)
73 : 16503.dasm (7.38 % of base)
73 : 4896.dasm (1.86 % of base)
72 : 10409.dasm (1.47 % of base)
69 : 19723.dasm (5.76 % of base)
68 : 11628.dasm (4.74 % of base)
68 : 519.dasm (4.29 % of base)
Top file improvements (bytes):
-114 : 4151.dasm (-1.54 % of base)
-100 : 6788.dasm (-5.08 % of base)
-95 : 33625.dasm (-0.88 % of base)
-84 : 20635.dasm (-7.64 % of base)
-79 : 6786.dasm (-2.89 % of base)
-78 : 10155.dasm (-3.76 % of base)
-78 : 13018.dasm (-1.15 % of base)
-77 : 21525.dasm (-1.35 % of base)
-62 : 26786.dasm (-6.60 % of base)
-59 : 1534.dasm (-2.48 % of base)
-57 : 17073.dasm (-3.30 % of base)
-56 : 9876.dasm (-3.17 % of base)
-55 : 27503.dasm (-8.12 % of base)
-51 : 14397.dasm (-5.40 % of base)
-49 : 4136.dasm (-0.27 % of base)
-49 : 28387.dasm (-0.27 % of base)
-46 : 10656.dasm (-1.66 % of base)
-41 : 22386.dasm (-1.50 % of base)
-39 : 14680.dasm (-2.89 % of base)
-38 : 11891.dasm (-2.89 % of base)
66 total files with Code Size differences (34 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
241 (7.48 % of base) : 30915.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
233 (7.21 % of base) : 29949.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
228 (6.42 % of base) : 17555.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
176 (8.48 % of base) : 17192.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
123 (6.39 % of base) : 8233.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
122 (2.82 % of base) : 2133.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
113 (6.60 % of base) : 14621.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
113 (6.49 % of base) : 16446.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
112 (6.91 % of base) : 10415.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
107 (3.54 % of base) : 7726.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (FullOpts)
96 (1.93 % of base) : 20041.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
89 (6.05 % of base) : 16515.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
78 (2.40 % of base) : 14530.dasm - System.Formats.Tar.TarHeader+<WriteAsPaxAsync>d__93:MoveNext():this (FullOpts)
77 (3.94 % of base) : 7728.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
73 (1.86 % of base) : 4896.dasm - System.IO.File+<WriteToFileAsync>d__110:MoveNext():this (FullOpts)
73 (7.38 % of base) : 16503.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
72 (1.47 % of base) : 10409.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (FullOpts)
69 (5.76 % of base) : 19723.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (FullOpts)
68 (4.74 % of base) : 11628.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (FullOpts)
68 (4.29 % of base) : 519.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
Top method improvements (bytes):
-114 (-1.54 % of base) : 4151.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset (FullOpts)
-100 (-5.08 % of base) : 6788.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-95 (-0.88 % of base) : 33625.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
-84 (-7.64 % of base) : 20635.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-79 (-2.89 % of base) : 6786.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-78 (-1.15 % of base) : 13018.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
-78 (-3.76 % of base) : 10155.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartAttribute(System.String,System.String,System.String):this (FullOpts)
-77 (-1.35 % of base) : 21525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-62 (-6.60 % of base) : 26786.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-59 (-2.48 % of base) : 1534.dasm - BenchmarksGame.KNucleotide_9:Bench(BenchmarksGame.NucleotideHelpers,ubyte):ubyte (FullOpts)
-57 (-3.30 % of base) : 17073.dasm - System.Net.WebSockets.ManagedWebSocket:SendFrameLockAcquiredNonCancelableAsync(ubyte,ubyte,ubyte,System.ReadOnlyMemory`1[ubyte]):System.Threading.Tasks.ValueTask:this (FullOpts)
-56 (-3.17 % of base) : 9876.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
-55 (-8.12 % of base) : 27503.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[int],System.Collections.Immutable.ImmutableList`1+Builder[int],int,int,ubyte):this (FullOpts)
-51 (-5.40 % of base) : 14397.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
-49 (-0.27 % of base) : 28387.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
-49 (-0.27 % of base) : 4136.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
-46 (-1.66 % of base) : 10656.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
-41 (-1.50 % of base) : 22386.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
-39 (-2.89 % of base) : 14680.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-38 (-2.89 % of base) : 11891.dasm - System.Xml.XmlWellFormedWriter:PushNamespaceImplicit(System.String,System.String):this (FullOpts)
Top method regressions (percentages):
63 (9.06 % of base) : 16513.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
176 (8.48 % of base) : 17192.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
54 (7.70 % of base) : 15294.dasm - System.Threading.Tasks.ValueTaskPerfTest+<AwaitTcsAsValueTask>d__21:MoveNext():this (FullOpts)
241 (7.48 % of base) : 30915.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
73 (7.38 % of base) : 16503.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
233 (7.21 % of base) : 29949.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
112 (6.91 % of base) : 10415.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
113 (6.60 % of base) : 14621.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
113 (6.49 % of base) : 16446.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
228 (6.42 % of base) : 17555.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
123 (6.39 % of base) : 8233.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
89 (6.05 % of base) : 16515.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
63 (5.88 % of base) : 14549.dasm - System.Formats.Tar.TarWriter+<WriteFinalRecordsAsync>d__23:MoveNext():this (FullOpts)
69 (5.76 % of base) : 19723.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (FullOpts)
56 (5.59 % of base) : 11731.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedTask_ConfigureAwait>d__9:MoveNext():this (FullOpts)
56 (5.59 % of base) : 33782.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedTask>d__8:MoveNext():this (FullOpts)
56 (5.59 % of base) : 13583.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedValueTaskSource_ConfigureAwait>d__11:MoveNext():this (FullOpts)
56 (5.59 % of base) : 12158.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedValueTaskSource>d__10:MoveNext():this (FullOpts)
56 (5.56 % of base) : 14634.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromYieldingAsyncMethod>d__12:MoveNext():this (FullOpts)
58 (5.26 % of base) : 19410.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
Top method improvements (percentages):
-55 (-8.12 % of base) : 27503.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[int],System.Collections.Immutable.ImmutableList`1+Builder[int],int,int,ubyte):this (FullOpts)
-84 (-7.64 % of base) : 20635.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-18 (-6.90 % of base) : 797.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
-62 (-6.60 % of base) : 26786.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-37 (-5.73 % of base) : 28004.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
-51 (-5.40 % of base) : 14397.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
-14 (-5.26 % of base) : 162.dasm - System.String:Concat(System.String,System.String):System.String (FullOpts)
-100 (-5.08 % of base) : 6788.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-33 (-4.95 % of base) : 7038.dasm - System.IO.Pipelines.Pipe:PrepareFlushUnsynchronized(byref,byref,System.Threading.CancellationToken):this (FullOpts)
-4 (-4.88 % of base) : 2736.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-4 (-4.88 % of base) : 15468.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-34 (-4.65 % of base) : 1629.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (FullOpts)
-21 (-4.56 % of base) : 20730.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:Complete(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Threading.CancellationToken):this (FullOpts)
-31 (-3.97 % of base) : 55.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (FullOpts)
-6 (-3.92 % of base) : 2732.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-78 (-3.76 % of base) : 10155.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartAttribute(System.String,System.String,System.String):this (FullOpts)
-12 (-3.67 % of base) : 799.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-2 (-3.57 % of base) : 19560.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
-18 (-3.54 % of base) : 2128.dasm - System.Net.Security.SslAuthenticationOptions:UpdateOptions(System.Net.Security.SslClientAuthenticationOptions):this (FullOpts)
-14 (-3.32 % of base) : 709.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 66799627 (overridden on cmd)
Total bytes of diff: 66771383 (overridden on cmd)
Total bytes of delta: -28244 (-0.04 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
978 : 145965.dasm (34.59 % of base)
134 : 136738.dasm (8.11 % of base)
94 : 113437.dasm (21.12 % of base)
94 : 109353.dasm (21.12 % of base)
94 : 67079.dasm (21.12 % of base)
94 : 71155.dasm (21.12 % of base)
75 : 116543.dasm (15.62 % of base)
75 : 123273.dasm (15.62 % of base)
75 : 124555.dasm (15.62 % of base)
75 : 129494.dasm (15.62 % of base)
75 : 45279.dasm (15.62 % of base)
75 : 50922.dasm (15.62 % of base)
75 : 63651.dasm (15.62 % of base)
75 : 76716.dasm (15.62 % of base)
73 : 10959.dasm (15.21 % of base)
73 : 31517.dasm (15.21 % of base)
73 : 40280.dasm (15.21 % of base)
73 : 51185.dasm (15.21 % of base)
72 : 107472.dasm (10.06 % of base)
72 : 107593.dasm (16.18 % of base)
Top file improvements (bytes):
-508 : 37942.dasm (-37.00 % of base)
-451 : 37957.dasm (-33.33 % of base)
-211 : 98784.dasm (-7.77 % of base)
-200 : 73674.dasm (-30.40 % of base)
-200 : 73704.dasm (-30.40 % of base)
-178 : 54727.dasm (-8.44 % of base)
-146 : 60246.dasm (-5.82 % of base)
-144 : 73705.dasm (-2.18 % of base)
-130 : 74762.dasm (-3.75 % of base)
-123 : 76148.dasm (-2.90 % of base)
-122 : 51893.dasm (-4.94 % of base)
-119 : 93082.dasm (-5.55 % of base)
-97 : 140481.dasm (-3.22 % of base)
-95 : 128279.dasm (-2.21 % of base)
-94 : 71202.dasm (-6.18 % of base)
-94 : 93956.dasm (-6.18 % of base)
-90 : 128967.dasm (-4.72 % of base)
-90 : 31809.dasm (-4.71 % of base)
-86 : 101610.dasm (-3.48 % of base)
-86 : 109427.dasm (-3.47 % of base)
58 total files with Code Size differences (31 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
978 (34.59 % of base) : 145965.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
134 (8.11 % of base) : 136738.dasm - System.Threading.TimerQueue:TimerThread() (Tier1-OSR)
94 (21.12 % of base) : 113437.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
94 (21.12 % of base) : 109353.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
94 (21.12 % of base) : 67079.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
94 (21.12 % of base) : 71155.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 116543.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 123273.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 124555.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 129494.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 45279.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 50922.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 63651.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 76716.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
73 (15.21 % of base) : 10959.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
73 (15.21 % of base) : 31517.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
73 (15.21 % of base) : 40280.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
73 (15.21 % of base) : 51185.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
72 (10.06 % of base) : 107472.dasm - System.Threading.Tasks.TaskScheduler:InternalQueueTask(System.Threading.Tasks.Task):this (Tier1)
72 (16.18 % of base) : 107593.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
Top method improvements (bytes):
-508 (-37.00 % of base) : 37942.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-451 (-33.33 % of base) : 37957.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-211 (-7.77 % of base) : 98784.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:Free():this (Tier1)
-200 (-30.40 % of base) : 73674.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-200 (-30.40 % of base) : 73704.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-178 (-8.44 % of base) : 54727.dasm - System.Net.Security.Tests.SslStreamTests+<WriteReadAsync>d__33:MoveNext():this (Tier1-OSR)
-146 (-5.82 % of base) : 60246.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier1-OSR)
-144 (-2.18 % of base) : 73705.dasm - LUDecomp:Run():double:this (Tier1)
-130 (-3.75 % of base) : 74762.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
-123 (-2.90 % of base) : 76148.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<SendAsyncThenReceiveAsync_Task>d__9:MoveNext():this (Tier1-OSR)
-122 (-4.94 % of base) : 51893.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsync>d__7:MoveNext():this (Tier1-OSR)
-119 (-5.55 % of base) : 93082.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:FilterValidStackLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (Tier1)
-97 (-3.22 % of base) : 140481.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
-95 (-2.21 % of base) : 128279.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
-94 (-6.18 % of base) : 71202.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
-94 (-6.18 % of base) : 93956.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
-90 (-4.72 % of base) : 128967.dasm - Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark+<Parse_SequentialAsync>d__15:MoveNext():this (Tier1-OSR)
-90 (-4.71 % of base) : 31809.dasm - Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark+<Parse_SequentialAsync>d__15:MoveNext():this (Tier1-OSR)
-86 (-3.48 % of base) : 101610.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-86 (-3.47 % of base) : 109427.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method regressions (percentages):
978 (34.59 % of base) : 145965.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
94 (21.12 % of base) : 113437.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
94 (21.12 % of base) : 109353.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
94 (21.12 % of base) : 67079.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
94 (21.12 % of base) : 71155.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
72 (16.18 % of base) : 107593.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
72 (16.18 % of base) : 57426.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
72 (16.18 % of base) : 61663.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
72 (16.18 % of base) : 79248.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
72 (16.18 % of base) : 96692.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 116543.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 123273.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 124555.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 129494.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 45279.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 50922.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 63651.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
75 (15.62 % of base) : 76716.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
73 (15.21 % of base) : 10959.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
73 (15.21 % of base) : 31517.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
Top method improvements (percentages):
-508 (-37.00 % of base) : 37942.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-451 (-33.33 % of base) : 37957.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-200 (-30.40 % of base) : 73674.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-200 (-30.40 % of base) : 73704.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-26 (-9.59 % of base) : 98719.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ThisParameterSymbol:get_RefKind():ubyte:this (Tier1)
-178 (-8.44 % of base) : 54727.dasm - System.Net.Security.Tests.SslStreamTests+<WriteReadAsync>d__33:MoveNext():this (Tier1-OSR)
-211 (-7.77 % of base) : 98784.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:Free():this (Tier1)
-2 (-7.14 % of base) : 26478.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-2 (-7.14 % of base) : 6664.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-94 (-6.18 % of base) : 71202.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
-94 (-6.18 % of base) : 93956.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
-35 (-6.09 % of base) : 104361.dasm - System.Collections.Concurrent.AddRemoveFromDifferentThreads`1+<>c__DisplayClass6_0[int]:<SetupConcurrentBagIteration>b__1():this (Tier1-OSR)
-46 (-5.85 % of base) : 108226.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-146 (-5.82 % of base) : 60246.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier1-OSR)
-8 (-5.80 % of base) : 102211.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
-8 (-5.80 % of base) : 117941.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
-8 (-5.80 % of base) : 79400.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
-58 (-5.64 % of base) : 123596.dasm - System.Collections.Concurrent.AddRemoveFromSameThreads`1+<>c__DisplayClass5_0[int]:<SetupConcurrentBagIteration>b__1():this (Tier1-OSR)
-119 (-5.55 % of base) : 93082.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:FilterValidStackLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (Tier1)
-43 (-5.54 % of base) : 119531.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 17373587 (overridden on cmd)
Total bytes of diff: 17373836 (overridden on cmd)
Total bytes of delta: 249 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
268 : 35414.dasm (8.11 % of base)
228 : 35415.dasm (6.42 % of base)
162 : 33914.dasm (8.25 % of base)
123 : 9852.dasm (6.52 % of base)
122 : 32857.dasm (2.82 % of base)
96 : 43487.dasm (1.93 % of base)
77 : 10806.dasm (3.94 % of base)
69 : 54553.dasm (5.76 % of base)
68 : 44955.dasm (4.29 % of base)
68 : 22232.dasm (4.74 % of base)
67 : 35102.dasm (3.76 % of base)
64 : 6844.dasm (2.97 % of base)
59 : 50168.dasm (2.05 % of base)
58 : 37842.dasm (5.26 % of base)
48 : 54577.dasm (2.68 % of base)
48 : 37810.dasm (2.38 % of base)
42 : 30391.dasm (3.47 % of base)
38 : 54401.dasm (2.13 % of base)
37 : 5839.dasm (2.29 % of base)
34 : 31063.dasm (1.91 % of base)
Top file improvements (bytes):
-480 : 24399.dasm (-34.26 % of base)
-177 : 37833.dasm (-17.32 % of base)
-52 : 52723.dasm (-7.21 % of base)
-49 : 53985.dasm (-0.27 % of base)
-49 : 9537.dasm (-0.27 % of base)
-41 : 53216.dasm (-0.47 % of base)
-39 : 34616.dasm (-2.89 % of base)
-35 : 686.dasm (-1.72 % of base)
-34 : 5809.dasm (-4.65 % of base)
-34 : 32476.dasm (-2.88 % of base)
-33 : 55965.dasm (-0.32 % of base)
-31 : 1221.dasm (-3.97 % of base)
-29 : 54598.dasm (-0.29 % of base)
-26 : 37159.dasm (-0.63 % of base)
-21 : 55963.dasm (-0.47 % of base)
-19 : 16332.dasm (-0.81 % of base)
-18 : 52239.dasm (-6.90 % of base)
-18 : 55197.dasm (-1.79 % of base)
-17 : 19214.dasm (-1.48 % of base)
-16 : 37840.dasm (-1.62 % of base)
56 total files with Code Size differences (32 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
268 (8.11 % of base) : 35414.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
228 (6.42 % of base) : 35415.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
162 (8.25 % of base) : 33914.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier1-OSR)
123 (6.52 % of base) : 9852.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier1)
122 (2.82 % of base) : 32857.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
96 (1.93 % of base) : 43487.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
77 (3.94 % of base) : 10806.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (Tier1)
69 (5.76 % of base) : 54553.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1)
68 (4.74 % of base) : 22232.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1)
68 (4.29 % of base) : 44955.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier1)
67 (3.76 % of base) : 35102.dasm - System.IO.File+<InternalReadAllBytesUnknownLengthAsync>d__93:MoveNext():this (Tier1)
64 (2.97 % of base) : 6844.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
59 (2.05 % of base) : 50168.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (Tier1)
58 (5.26 % of base) : 37842.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
48 (2.68 % of base) : 54577.dasm - System.IO.Tests.Perf_RandomAccess+<WriteAsync>d__17:MoveNext():this (Tier1)
48 (2.38 % of base) : 37810.dasm - System.IO.Tests.Perf_RandomAccess+<WriteGatherAsync>d__22:MoveNext():this (Tier1)
42 (3.47 % of base) : 30391.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsyncWithCancellationToken>d__9:MoveNext():this (Tier1-OSR)
38 (2.13 % of base) : 54401.dasm - Benchstone.MDBenchF.MDRomber:Test():ubyte:this (Tier1-OSR)
37 (2.29 % of base) : 5839.dasm - System.IO.Tests.Perf_RandomAccess+<ReadAsync>d__16:MoveNext():this (Tier1)
34 (1.91 % of base) : 31063.dasm - System.IO.Tests.Perf_RandomAccess+<ReadScatterAsync>d__21:MoveNext():this (Tier1)
Top method improvements (bytes):
-480 (-34.26 % of base) : 24399.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-177 (-17.32 % of base) : 37833.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-52 (-7.21 % of base) : 52723.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-49 (-0.27 % of base) : 53985.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
-49 (-0.27 % of base) : 9537.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
-41 (-0.47 % of base) : 53216.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
-39 (-2.89 % of base) : 34616.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
-35 (-1.72 % of base) : 686.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-34 (-2.88 % of base) : 32476.dasm - System.Formats.Asn1.AsnWriter:PopTag(System.Formats.Asn1.Asn1Tag,int,ubyte):this (Tier1)
-34 (-4.65 % of base) : 5809.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1)
-33 (-0.32 % of base) : 55965.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
-31 (-3.97 % of base) : 1221.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
-29 (-0.29 % of base) : 54598.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
-26 (-0.63 % of base) : 37159.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
-21 (-0.47 % of base) : 55963.dasm - (dynamicClass):_DynamicMethod9(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
-19 (-0.81 % of base) : 16332.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
-18 (-6.90 % of base) : 52239.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (Tier1)
-18 (-1.79 % of base) : 55197.dasm - System.Threading.TimerQueue:FireNextTimers():this (Tier1)
-17 (-1.48 % of base) : 19214.dasm - System.Security.Cryptography.HMACCommon:ChangeKeyImpl(System.ReadOnlySpan`1[ubyte]):ubyte[]:this (Tier1)
-16 (-1.62 % of base) : 37840.dasm - LUDecomp:Run():double:this (Tier1)
Top method regressions (percentages):
162 (8.25 % of base) : 33914.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier1-OSR)
268 (8.11 % of base) : 35414.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
123 (6.52 % of base) : 9852.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier1)
228 (6.42 % of base) : 35415.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1)
69 (5.76 % of base) : 54553.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1)
58 (5.26 % of base) : 37842.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1)
14 (5.20 % of base) : 22129.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier1)
68 (4.74 % of base) : 22232.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1)
68 (4.29 % of base) : 44955.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier1)
77 (3.94 % of base) : 10806.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (Tier1)
67 (3.76 % of base) : 35102.dasm - System.IO.File+<InternalReadAllBytesUnknownLengthAsync>d__93:MoveNext():this (Tier1)
42 (3.47 % of base) : 30391.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsyncWithCancellationToken>d__9:MoveNext():this (Tier1-OSR)
7 (3.12 % of base) : 50266.dasm - Microsoft.CodeAnalysis.SyntaxNode+ChildSyntaxListEnumeratorStack:TryGetNextAsNodeInSpan(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
64 (2.97 % of base) : 6844.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
2 (2.94 % of base) : 6847.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
122 (2.82 % of base) : 32857.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
48 (2.68 % of base) : 54577.dasm - System.IO.Tests.Perf_RandomAccess+<WriteAsync>d__17:MoveNext():this (Tier1)
18 (2.39 % of base) : 30424.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1)
48 (2.38 % of base) : 37810.dasm - System.IO.Tests.Perf_RandomAccess+<WriteGatherAsync>d__22:MoveNext():this (Tier1)
37 (2.29 % of base) : 5839.dasm - System.IO.Tests.Perf_RandomAccess+<ReadAsync>d__16:MoveNext():this (Tier1)
Top method improvements (percentages):
-480 (-34.26 % of base) : 24399.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-177 (-17.32 % of base) : 37833.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-52 (-7.21 % of base) : 52723.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-18 (-6.90 % of base) : 52239.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (Tier1)
-14 (-5.26 % of base) : 3681.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
-4 (-4.88 % of base) : 5506.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-34 (-4.65 % of base) : 5809.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1)
-31 (-3.97 % of base) : 1221.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1)
-12 (-3.67 % of base) : 4115.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
-14 (-3.32 % of base) : 4148.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
-39 (-2.89 % of base) : 34616.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1)
-34 (-2.88 % of base) : 32476.dasm - System.Formats.Asn1.AsnWriter:PopTag(System.Formats.Asn1.Asn1Tag,int,ubyte):this (Tier1)
-6 (-2.80 % of base) : 24473.dasm - Benchstone.BenchI.CSieve:Test():ubyte:this (Tier1-OSR)
-8 (-2.38 % of base) : 19153.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-15 (-2.24 % of base) : 47429.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier1)
-2 (-1.87 % of base) : 51453.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier1)
-18 (-1.79 % of base) : 55197.dasm - System.Threading.TimerQueue:FireNextTimers():this (Tier1)
-2 (-1.75 % of base) : 1451.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
-2 (-1.75 % of base) : 13697.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (Tier1)
-2 (-1.75 % of base) : 48221.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 458880954 (overridden on cmd)
Total bytes of diff: 458824436 (overridden on cmd)
Total bytes of delta: -56518 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
228 : 591675.dasm (6.42 % of base)
171 : 420279.dasm (5.01 % of base)
158 : 411598.dasm (5.04 % of base)
135 : 622880.dasm (7.14 % of base)
112 : 413038.dasm (5.98 % of base)
96 : 592633.dasm (1.93 % of base)
91 : 420350.dasm (2.21 % of base)
81 : 416533.dasm (1.20 % of base)
80 : 417292.dasm (0.73 % of base)
79 : 416099.dasm (1.74 % of base)
73 : 420585.dasm (3.86 % of base)
68 : 593165.dasm (4.29 % of base)
63 : 413012.dasm (2.52 % of base)
60 : 279441.dasm (2.71 % of base)
60 : 292678.dasm (2.71 % of base)
59 : 236990.dasm (4.91 % of base)
59 : 592683.dasm (2.05 % of base)
58 : 590036.dasm (5.26 % of base)
58 : 348839.dasm (1.48 % of base)
54 : 420572.dasm (2.18 % of base)
Top file improvements (bytes):
-641 : 406446.dasm (-5.81 % of base)
-612 : 420517.dasm (-6.74 % of base)
-608 : 406038.dasm (-5.52 % of base)
-508 : 241819.dasm (-37.00 % of base)
-254 : 421720.dasm (-3.82 % of base)
-200 : 237148.dasm (-30.40 % of base)
-200 : 237135.dasm (-30.40 % of base)
-180 : 237158.dasm (-2.74 % of base)
-167 : 419181.dasm (-2.55 % of base)
-155 : 413875.dasm (-4.68 % of base)
-135 : 301808.dasm (-33.50 % of base)
-121 : 420927.dasm (-5.30 % of base)
-111 : 416180.dasm (-5.06 % of base)
-108 : 416004.dasm (-3.95 % of base)
-108 : 417661.dasm (-2.07 % of base)
-107 : 420546.dasm (-3.16 % of base)
-107 : 411400.dasm (-1.53 % of base)
-105 : 420852.dasm (-3.75 % of base)
-104 : 414124.dasm (-2.31 % of base)
-102 : 162085.dasm (-4.62 % of base)
76 total files with Code Size differences (36 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
228 (6.42 % of base) : 591675.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
171 (5.01 % of base) : 420279.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
158 (5.04 % of base) : 411598.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
135 (7.14 % of base) : 622880.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
112 (5.98 % of base) : 413038.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,byref):ubyte:this (Tier1)
96 (1.93 % of base) : 592633.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
91 (2.21 % of base) : 420350.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
81 (1.20 % of base) : 416533.dasm - Internal.JitInterface.CorInfoImpl:resolveVirtualMethod(ulong):ubyte:this (Tier1)
80 (0.73 % of base) : 417292.dasm - Internal.TypeSystem.RuntimeDeterminedTypeUtilities:ConvertInstantiationToSharedRuntimeForm(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation,byref):Internal.TypeSystem.Instantiation (Tier1)
79 (1.74 % of base) : 416099.dasm - ILCompiler.DependencyAnalysis.NodeFactory:CreateMethodEntrypoint(ILCompiler.DependencyAnalysis.TypeAndMethod):ILCompiler.DependencyAnalysis.IMethodNode:this (Tier1)
73 (3.86 % of base) : 420585.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,byref):ubyte:this (Tier1)
68 (4.29 % of base) : 593165.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
63 (2.52 % of base) : 413012.dasm - ILCompiler.Compilation+RootingServiceProvider:AddCompilationRoot(Internal.TypeSystem.MethodDesc,ubyte,System.String):this (Tier1)
60 (2.71 % of base) : 279441.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (Tier1-OSR)
60 (2.71 % of base) : 292678.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (Tier1-OSR)
59 (4.91 % of base) : 236990.dasm - Huffman:Run():double:this (Tier1)
59 (2.05 % of base) : 592683.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
58 (5.26 % of base) : 590036.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (FullOpts)
58 (1.48 % of base) : 348839.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
54 (2.18 % of base) : 420572.dasm - ILCompiler.Compilation+RootingServiceProvider:AddCompilationRoot(Internal.TypeSystem.MethodDesc,ubyte,System.String):this (Tier1)
Top method improvements (bytes):
-641 (-5.81 % of base) : 406446.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
-612 (-6.74 % of base) : 420517.dasm - Internal.TypeSystem.MetadataVirtualMethodAlgorithm:ResolveInterfaceMethodToDefaultImplementationOnType(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MetadataType,byref):int (Tier1)
-608 (-5.52 % of base) : 406038.dasm - ILCompiler.NativeAotNameMangler:ComputeMangledTypeName(Internal.TypeSystem.TypeDesc):System.String:this (Tier1-OSR)
-508 (-37.00 % of base) : 241819.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-254 (-3.82 % of base) : 421720.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.InliningInfoNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
-200 (-30.40 % of base) : 237148.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-200 (-30.40 % of base) : 237135.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-180 (-2.74 % of base) : 237158.dasm - LUDecomp:Run():double:this (Tier1)
-167 (-2.55 % of base) : 419181.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.InliningInfoNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
-155 (-4.68 % of base) : 413875.dasm - Internal.TypeSystem.MetadataVirtualMethodAlgorithm:ResolveInterfaceMethodToDefaultImplementationOnType(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MetadataType,byref):int (Tier1)
-135 (-33.50 % of base) : 301808.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
-121 (-5.30 % of base) : 420927.dasm - Internal.JitInterface.CorInfoImpl:GetJitInstantiation(Internal.TypeSystem.Instantiation):ulong:this (Tier1)
-111 (-5.06 % of base) : 416180.dasm - Internal.JitInterface.CorInfoImpl:GetJitInstantiation(Internal.TypeSystem.Instantiation):ulong:this (Tier1)
-108 (-2.07 % of base) : 417661.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AllMethodsOnTypeNode:GetStaticDependencies(ILCompiler.DependencyAnalysis.NodeFactory):System.Collections.Generic.IEnumerable`1[ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1+DependencyListEntry[ILCompiler.DependencyAnalysis.NodeFactory]]:this (Tier1)
-108 (-3.95 % of base) : 416004.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
-107 (-3.16 % of base) : 420546.dasm - ILCompiler.ReadyToRunCodegenCompilation:ComputeDependencyNodeDependencies(System.Collections.Generic.List`1[ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[ILCompiler.DependencyAnalysis.NodeFactory]]):this (Tier1-OSR)
-107 (-1.53 % of base) : 411400.dasm - ILCompiler.ReadyToRunVisibilityRootProvider:RootMethods(Internal.TypeSystem.MetadataType,System.String,ILCompiler.IRootingServiceProvider,ubyte):this (Tier1-OSR)
-105 (-3.75 % of base) : 420852.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
-104 (-2.31 % of base) : 414124.dasm - Internal.TypeSystem.CastingHelper:CanCastGenericParameterTo(Internal.TypeSystem.GenericParameterDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect):ubyte (Tier1)
-102 (-4.62 % of base) : 162085.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
Top method regressions (percentages):
28 (18.06 % of base) : 443034.dasm - testout1:Sub_Funclet_221():int (FullOpts)
15 (16.85 % of base) : 301992.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
15 (16.85 % of base) : 220760.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
26 (16.77 % of base) : 443451.dasm - testout1:Sub_Funclet_221():int (FullOpts)
30 (15.46 % of base) : 310967.dasm - testout1:Test1(int):int (Tier1-OSR)
30 (15.46 % of base) : 310969.dasm - testout1:Test2(int):int (Tier1-OSR)
16 (12.12 % of base) : 220759.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
15 (11.45 % of base) : 202870.dasm - System.Reflection.TypeNameParser:Skip():this (Instrumented Tier1)
44 (10.45 % of base) : 380327.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
44 (10.45 % of base) : 426979.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
45 (9.64 % of base) : 427120.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
45 (9.64 % of base) : 427768.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
44 (9.15 % of base) : 257141.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
44 (9.15 % of base) : 402794.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
37 (7.86 % of base) : 415688.dasm - System.Reflection.TypeNameParser:ParseNamedOrConstructedGenericTypeName():System.Reflection.TypeNameParser+TypeName:this (Tier1)
34 (7.28 % of base) : 224330.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
34 (7.28 % of base) : 380277.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
34 (7.28 % of base) : 402937.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
34 (7.28 % of base) : 426301.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
34 (7.28 % of base) : 426968.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
Top method improvements (percentages):
-508 (-37.00 % of base) : 241819.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-135 (-33.50 % of base) : 301808.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
-200 (-30.40 % of base) : 237148.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-200 (-30.40 % of base) : 237135.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-94 (-12.43 % of base) : 179588.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-91 (-12.08 % of base) : 114607.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-11.83 % of base) : 444407.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-20 (-11.83 % of base) : 444823.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-91 (-11.82 % of base) : 158567.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-13 (-8.07 % of base) : 266570.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCast_Helper(ulong,System.Object):System.Object (Tier1)
-65 (-7.78 % of base) : 592021.dasm - SciMark2.kernel:measureSparseMatmult(int,int,double,SciMark2.Random):double (FullOpts)
-58 (-7.75 % of base) : 417322.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,System.__Canon],ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+GenericLookupKey,int,byref):ubyte (Tier1)
-84 (-7.64 % of base) : 593332.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-26 (-7.58 % of base) : 244264.dasm - System.Linq.Expressions.Expression:Parameter(System.Type,System.String):System.Linq.Expressions.ParameterExpression (Tier1)
-19 (-7.31 % of base) : 257675.dasm - BinderTracingTests.BinderTracingTest+CustomALC:Load(System.Reflection.AssemblyName):System.Reflection.Assembly:this (Tier1)
-14 (-7.22 % of base) : 247410.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-49 (-7.18 % of base) : 399713.dasm - System.IO.TextWriter:WriteLine(System.String):this (Tier1)
-2 (-7.14 % of base) : 224857.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-2 (-7.14 % of base) : 245497.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-2 (-7.14 % of base) : 373993.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 38668832 (overridden on cmd)
Total bytes of diff: 38666144 (overridden on cmd)
Total bytes of delta: -2688 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
161 : 30504.dasm (0.52 % of base)
129 : 11301.dasm (8.92 % of base)
123 : 10774.dasm (4.13 % of base)
122 : 11732.dasm (3.70 % of base)
120 : 11355.dasm (4.33 % of base)
115 : 11736.dasm (4.00 % of base)
88 : 23865.dasm (6.76 % of base)
84 : 11353.dasm (4.66 % of base)
84 : 10772.dasm (8.40 % of base)
84 : 11401.dasm (5.39 % of base)
83 : 10766.dasm (3.94 % of base)
80 : 11308.dasm (9.09 % of base)
76 : 11472.dasm (9.30 % of base)
72 : 11726.dasm (3.36 % of base)
72 : 11730.dasm (5.48 % of base)
61 : 210347.dasm (2.27 % of base)
61 : 7270.dasm (3.44 % of base)
61 : 10983.dasm (5.83 % of base)
60 : 11002.dasm (1.76 % of base)
58 : 60385.dasm (4.71 % of base)
Top file improvements (bytes):
-386 : 125832.dasm (-1.51 % of base)
-197 : 44427.dasm (-10.68 % of base)
-132 : 191658.dasm (-3.89 % of base)
-131 : 204667.dasm (-6.19 % of base)
-112 : 170392.dasm (-4.08 % of base)
-112 : 122464.dasm (-4.08 % of base)
-100 : 21947.dasm (-5.28 % of base)
-90 : 170325.dasm (-4.22 % of base)
-86 : 20678.dasm (-3.72 % of base)
-84 : 125834.dasm (-3.73 % of base)
-84 : 139329.dasm (-7.37 % of base)
-84 : 181703.dasm (-7.37 % of base)
-70 : 43744.dasm (-8.06 % of base)
-67 : 51334.dasm (-5.50 % of base)
-64 : 50000.dasm (-3.03 % of base)
-59 : 125870.dasm (-4.62 % of base)
-58 : 126535.dasm (-7.18 % of base)
-48 : 151934.dasm (-5.66 % of base)
-48 : 23826.dasm (-2.46 % of base)
-46 : 203957.dasm (-1.95 % of base)
63 total files with Code Size differences (31 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
161 (0.52 % of base) : 30504.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
129 (8.92 % of base) : 11301.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
123 (4.13 % of base) : 10774.dasm - System.IO.BufferedStream+<ReadFromUnderlyingStreamAsync>d__48:MoveNext():this (FullOpts)
122 (3.70 % of base) : 11732.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (FullOpts)
120 (4.33 % of base) : 11355.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (FullOpts)
115 (4.00 % of base) : 11736.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (FullOpts)
88 (6.76 % of base) : 23865.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:VerifyNameShadowingInMethodBody(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
84 (8.40 % of base) : 10772.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
84 (4.66 % of base) : 11353.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
84 (5.39 % of base) : 11401.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
83 (3.94 % of base) : 10766.dasm - System.IO.BufferedStream+<CopyToAsyncCore>d__68:MoveNext():this (FullOpts)
80 (9.09 % of base) : 11308.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
76 (9.30 % of base) : 11472.dasm - System.IO.TextReader+<ReadBlockAsyncInternal>d__23:MoveNext():this (FullOpts)
72 (3.36 % of base) : 11726.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (FullOpts)
72 (5.48 % of base) : 11730.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<FlushAsyncInternal>d__55:MoveNext():this (FullOpts)
61 (2.27 % of base) : 210347.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this (FullOpts)
61 (5.83 % of base) : 10983.dasm - System.IO.File+<InternalReadAllBytesAsync>d__92:MoveNext():this (FullOpts)
61 (3.44 % of base) : 7270.dasm - System.Text.TranscodingStream+<<WriteAsync>g__WriteAsyncCore|50_0>d:MoveNext():this (FullOpts)
60 (1.76 % of base) : 11002.dasm - System.IO.File+<WriteToFileAsync>d__110:MoveNext():this (FullOpts)
58 (4.71 % of base) : 60385.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
Top method improvements (bytes):
-386 (-1.51 % of base) : 125832.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-197 (-10.68 % of base) : 44427.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-132 (-3.89 % of base) : 191658.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
-131 (-6.19 % of base) : 204667.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:GenerateMembersElement(System.Object,System.Xml.Serialization.XmlMembersMapping):this (FullOpts)
-112 (-4.08 % of base) : 170392.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-112 (-4.08 % of base) : 122464.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-100 (-5.28 % of base) : 21947.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-90 (-4.22 % of base) : 170325.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this (FullOpts)
-86 (-3.72 % of base) : 20678.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-84 (-7.37 % of base) : 139329.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-84 (-7.37 % of base) : 181703.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-84 (-3.73 % of base) : 125834.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-70 (-8.06 % of base) : 43744.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:MakeEventAccessorCall(Microsoft.CodeAnalysis.VisualBasic.BoundAddRemoveHandlerStatement,Microsoft.CodeAnalysis.VisualBasic.BoundEventAccess,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
-67 (-5.50 % of base) : 51334.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-64 (-3.03 % of base) : 50000.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)
-59 (-4.62 % of base) : 125870.dasm - Microsoft.VisualBasic.Conversion:Val(System.String):double (FullOpts)
-58 (-7.18 % of base) : 126535.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-48 (-2.46 % of base) : 23826.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindQueryOperatorCall(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.String,Microsoft.CodeAnalysis.VisualBasic.BoundMethodGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.Text.TextSpan,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-48 (-5.66 % of base) : 151934.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-46 (-1.95 % of base) : 203957.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
Top method regressions (percentages):
15 (14.02 % of base) : 186.dasm - System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
76 (9.30 % of base) : 11472.dasm - System.IO.TextReader+<ReadBlockAsyncInternal>d__23:MoveNext():this (FullOpts)
80 (9.09 % of base) : 11308.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
129 (8.92 % of base) : 11301.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
84 (8.40 % of base) : 10772.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
4 (7.14 % of base) : 58109.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
88 (6.76 % of base) : 23865.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:VerifyNameShadowingInMethodBody(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
42 (6.69 % of base) : 15471.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
46 (6.63 % of base) : 51138.dasm - Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+LocalState]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
46 (6.63 % of base) : 50260.dasm - Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[System.__Canon]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
6 (6.32 % of base) : 16065.dasm - System.Net.WebUtility:IndexOfHtmlEncodingChars(System.ReadOnlySpan`1[ushort]):int (FullOpts)
61 (5.83 % of base) : 10983.dasm - System.IO.File+<InternalReadAllBytesAsync>d__92:MoveNext():this (FullOpts)
27 (5.66 % of base) : 159201.dasm - System.Configuration.ClientConfigurationHost:OpenExeConfiguration(System.Configuration.ConfigurationFileMap,ubyte,int,System.String):System.Configuration.Configuration (FullOpts)
27 (5.66 % of base) : 163819.dasm - System.Configuration.ClientConfigurationHost:OpenExeConfiguration(System.Configuration.ConfigurationFileMap,ubyte,int,System.String):System.Configuration.Configuration (FullOpts)
43 (5.49 % of base) : 37884.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlNcName(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
72 (5.48 % of base) : 11730.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<FlushAsyncInternal>d__55:MoveNext():this (FullOpts)
16 (5.48 % of base) : 126827.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
84 (5.39 % of base) : 11401.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
19 (5.23 % of base) : 44531.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ReportOverloadResolutionFailedOrLateBound(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],int,ubyte,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
23 (5.18 % of base) : 134357.dasm - System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String) (FullOpts)
Top method improvements (percentages):
-31 (-11.27 % of base) : 116455.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
-197 (-10.68 % of base) : 44427.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-27 (-8.74 % of base) : 116456.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
-16 (-8.33 % of base) : 10625.dasm - System.Reflection.Emit.TypeBuilder:DefinePInvokeMethod(System.String,System.String,System.String,int,int,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
-70 (-8.06 % of base) : 43744.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:MakeEventAccessorCall(Microsoft.CodeAnalysis.VisualBasic.BoundAddRemoveHandlerStatement,Microsoft.CodeAnalysis.VisualBasic.BoundEventAccess,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
-16 (-8.04 % of base) : 10624.dasm - System.Reflection.Emit.TypeBuilder:DefinePInvokeMethod(System.String,System.String,System.String,int,int,System.Type,System.Type[],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
-84 (-7.37 % of base) : 139329.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-84 (-7.37 % of base) : 181703.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-25 (-7.29 % of base) : 202781.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:CachesResult(System.Xml.Xsl.Qil.QilNode):ubyte (FullOpts)
-58 (-7.18 % of base) : 126535.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-21 (-7.02 % of base) : 75004.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteNamedTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-18 (-6.87 % of base) : 2473.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
-34 (-6.48 % of base) : 205463.dasm - System.Xml.XmlSqlBinaryReader:AddQName():this (FullOpts)
-3 (-6.25 % of base) : 204415.dasm - System.Xml.Schema.Preprocessor:GetParentSchema(System.Xml.Schema.XmlSchemaObject):System.Xml.Schema.XmlSchema (FullOpts)
-131 (-6.19 % of base) : 204667.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:GenerateMembersElement(System.Object,System.Xml.Serialization.XmlMembersMapping):this (FullOpts)
-29 (-5.99 % of base) : 75234.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.BitVector,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]):ubyte (FullOpts)
-28 (-5.79 % of base) : 10290.dasm - System.Reflection.Emit.RuntimeModuleBuilder:DefinePInvokeMethodCore(System.String,System.String,System.String,int,int,System.Type,System.Type[],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
-48 (-5.66 % of base) : 151934.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-67 (-5.50 % of base) : 51334.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-100 (-5.28 % of base) : 21947.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 59972991 (overridden on cmd)
Total bytes of diff: 59968567 (overridden on cmd)
Total bytes of delta: -4424 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
140 : 21138.dasm (0.41 % of base)
137 : 184484.dasm (5.81 % of base)
124 : 249395.dasm (5.29 % of base)
122 : 285173.dasm (6.48 % of base)
109 : 143285.dasm (5.64 % of base)
107 : 132992.dasm (4.35 % of base)
98 : 251705.dasm (1.98 % of base)
98 : 249373.dasm (3.60 % of base)
96 : 52591.dasm (1.93 % of base)
89 : 185364.dasm (1.08 % of base)
88 : 164538.dasm (1.60 % of base)
85 : 290271.dasm (5.93 % of base)
83 : 184861.dasm (6.83 % of base)
78 : 37249.dasm (1.31 % of base)
78 : 290273.dasm (5.57 % of base)
77 : 164536.dasm (1.32 % of base)
75 : 253624.dasm (1.40 % of base)
74 : 184784.dasm (4.22 % of base)
72 : 204763.dasm (2.30 % of base)
72 : 222356.dasm (2.30 % of base)
Top file improvements (bytes):
-413 : 171517.dasm (-1.46 % of base)
-210 : 37114.dasm (-9.78 % of base)
-109 : 245777.dasm (-4.20 % of base)
-109 : 42994.dasm (-3.42 % of base)
-106 : 43321.dasm (-5.61 % of base)
-105 : 129574.dasm (-3.08 % of base)
-105 : 146615.dasm (-3.07 % of base)
-105 : 263268.dasm (-3.14 % of base)
-88 : 204799.dasm (-2.92 % of base)
-88 : 222392.dasm (-2.92 % of base)
-84 : 219872.dasm (-7.64 % of base)
-84 : 202243.dasm (-7.64 % of base)
-82 : 280461.dasm (-2.42 % of base)
-77 : 44176.dasm (-2.23 % of base)
-77 : 58625.dasm (-1.43 % of base)
-76 : 155454.dasm (-3.67 % of base)
-75 : 280330.dasm (-2.86 % of base)
-74 : 41396.dasm (-1.56 % of base)
-73 : 72860.dasm (-1.27 % of base)
-73 : 154321.dasm (-2.00 % of base)
72 total files with Code Size differences (37 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
140 (0.41 % of base) : 21138.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
137 (5.81 % of base) : 184484.dasm - System.Net.Http.MultipartContent+<SerializeToStreamAsyncCore>d__24:MoveNext():this (FullOpts)
124 (5.29 % of base) : 249395.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
122 (6.48 % of base) : 285173.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
109 (5.64 % of base) : 143285.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
107 (4.35 % of base) : 132992.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
98 (3.60 % of base) : 249373.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteDocTypeAsync>d__98:MoveNext():this (FullOpts)
98 (1.98 % of base) : 251705.dasm - System.Xml.XmlTextReaderImpl+<SkipDtdAsync>d__568:MoveNext():this (FullOpts)
96 (1.93 % of base) : 52591.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
89 (1.08 % of base) : 185364.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
88 (1.60 % of base) : 164538.dasm - System.Threading.Tasks.Dataflow.TransformManyBlock`2+<StoreOutputItemsNonReorderedWithIterationAsync>d__48[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)
85 (5.93 % of base) : 290271.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__43:MoveNext():this (FullOpts)
83 (6.83 % of base) : 184861.dasm - System.Net.Http.DecompressionHandler+DeflateDecompressedContent+ZLibOrDeflateStream+PeekFirstByteReadStream+<CopyToAsync>d__14:MoveNext():this (FullOpts)
78 (1.31 % of base) : 37249.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
78 (5.57 % of base) : 290273.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__44:MoveNext():this (FullOpts)
77 (1.32 % of base) : 164536.dasm - System.Threading.Tasks.Dataflow.TransformManyBlock`2+<StoreOutputItemsNonReorderedWithIterationAsync>d__48[System.__Canon,System.Nullable`1[int]]:MoveNext():this (FullOpts)
75 (1.40 % of base) : 253624.dasm - System.Xml.DtdParser+<ParseAttlistTypeAsync>d__161:MoveNext():this (FullOpts)
74 (4.22 % of base) : 184784.dasm - System.Net.Http.HttpConnection+<SendRequestContentAsync>d__61:MoveNext():this (FullOpts)
72 (2.30 % of base) : 204763.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetSimilarity(byref,byref):int:this (FullOpts)
72 (2.30 % of base) : 222356.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetSimilarity(byref,byref):int:this (FullOpts)
Top method improvements (bytes):
-413 (-1.46 % of base) : 171517.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-210 (-9.78 % of base) : 37114.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-109 (-3.42 % of base) : 42994.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)
-109 (-4.20 % of base) : 245777.dasm - System.DirectoryServices.Protocols.LdapConnection:BuildAttributes(System.Collections.CollectionBase,System.Collections.ArrayList):System.DirectoryServices.Protocols.LdapMod[] (FullOpts)
-106 (-5.61 % of base) : 43321.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-105 (-3.14 % of base) : 263268.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
-105 (-3.08 % of base) : 129574.dasm - System.Net.Http.X509ResourceClient+<>c__DisplayClass15_0+<<CreateDownloadBytesFunc>b__0>d:MoveNext():this (FullOpts)
-105 (-3.07 % of base) : 146615.dasm - System.Net.Http.X509ResourceClient+<>c__DisplayClass15_0+<<CreateDownloadBytesFunc>b__0>d:MoveNext():this (FullOpts)
-88 (-2.92 % of base) : 204799.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-88 (-2.92 % of base) : 222392.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-84 (-7.64 % of base) : 219872.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-84 (-7.64 % of base) : 202243.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-82 (-2.42 % of base) : 280461.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
-77 (-2.23 % of base) : 44176.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDeconstructSubpatterns(Microsoft.CodeAnalysis.CSharp.Syntax.PositionalPatternClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundDeconstructValuePlaceholder],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundPositionalSubpattern],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this (FullOpts)
-77 (-1.43 % of base) : 58625.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,ubyte,ubyte,ubyte,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-76 (-3.67 % of base) : 155454.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartAttribute(System.String,System.String,System.String):this (FullOpts)
-75 (-2.86 % of base) : 280330.dasm - Microsoft.Extensions.FileSystemGlobbing.Internal.Patterns.PatternBuilder:Build(System.String):Microsoft.Extensions.FileSystemGlobbing.Internal.IPattern:this (FullOpts)
-74 (-1.56 % of base) : 41396.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
-73 (-1.27 % of base) : 72860.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-73 (-2.00 % of base) : 154321.dasm - System.Runtime.Serialization.SchemaExporter:ExportGenericInfo(System.Type,System.String,System.String):System.Xml.XmlElement:this (FullOpts)
Top method regressions (percentages):
30 (16.30 % of base) : 173301.dasm - Microsoft.CSharp.CSharpModifierAttributeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
26 (15.38 % of base) : 106289.dasm - Microsoft.Build.Shared.EncodingUtilities:SimilarToEncoding(System.Text.Encoding,System.Text.Encoding):ubyte (FullOpts)
18 (9.57 % of base) : 1607.dasm - System.Int128:op_CheckedMultiply(System.Int128,System.Int128):System.Int128 (FullOpts)
65 (9.35 % of base) : 276393.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
16 (8.70 % of base) : 106463.dasm - Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
16 (8.00 % of base) : 143493.dasm - System.Security.Cryptography.ECDsa:SignData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,int):int:this (FullOpts)
20 (7.41 % of base) : 171800.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
16 (7.11 % of base) : 132281.dasm - System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
83 (6.83 % of base) : 184861.dasm - System.Net.Http.DecompressionHandler+DeflateDecompressedContent+ZLibOrDeflateStream+PeekFirstByteReadStream+<CopyToAsync>d__14:MoveNext():this (FullOpts)
20 (6.64 % of base) : 150946.dasm - System.Data.Odbc.OdbcDataReader:GetOrdinalFromBaseColName(System.String,System.String):int:this (FullOpts)
22 (6.63 % of base) : 295285.dasm - System.Threading.Channels.ChannelWriter`1[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts)
122 (6.48 % of base) : 285173.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
4 (6.45 % of base) : 270509.dasm - System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
23 (6.35 % of base) : 294169.dasm - System.Reflection.Emit.ModuleBuilderImpl:DefinePInvokeMethodCore(System.String,System.String,System.String,int,int,System.Type,System.Type[],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
4 (6.25 % of base) : 270521.dasm - System.IO.Hashing.XxHash64:GetCurrentHashAsUInt64():ulong:this (FullOpts)
20 (6.15 % of base) : 131802.dasm - System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)
67 (6.15 % of base) : 184478.dasm - System.Net.Http.MultipartContent+ContentReadStream+<DisposeAsync>d__7:MoveNext():this (FullOpts)
85 (5.93 % of base) : 290271.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__43:MoveNext():this (FullOpts)
137 (5.81 % of base) : 184484.dasm - System.Net.Http.MultipartContent+<SerializeToStreamAsyncCore>d__24:MoveNext():this (FullOpts)
109 (5.64 % of base) : 143285.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
Top method improvements (percentages):
-39 (-12.26 % of base) : 249705.dasm - System.Xml.XmlNamedNodeMap:FindNodeOffset(System.String,System.String):int:this (FullOpts)
-20 (-11.63 % of base) : 219648.dasm - Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt16(System.String,byref):ubyte (FullOpts)
-20 (-11.63 % of base) : 202034.dasm - Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt16(System.String,byref):ubyte (FullOpts)
-20 (-11.63 % of base) : 202033.dasm - Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt64(System.String,byref):ubyte (FullOpts)
-20 (-11.63 % of base) : 219647.dasm - Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt64(System.String,byref):ubyte (FullOpts)
-41 (-10.07 % of base) : 252876.dasm - System.Xml.XmlAttributeCollection:FindNodeOffsetNS(System.Xml.XmlAttribute):int:this (FullOpts)
-210 (-9.78 % of base) : 37114.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-69 (-8.62 % of base) : 91012.dasm - Microsoft.FSharp.Quotations.DerivedPatternsModule:DecimalPattern(Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Core.FSharpOption`1[System.Decimal] (FullOpts)
-55 (-8.12 % of base) : 243267.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[ubyte]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[ubyte],System.Collections.Immutable.ImmutableList`1+Builder[ubyte],int,int,ubyte):this (FullOpts)
-25 (-8.04 % of base) : 70921.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteNamedTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-84 (-7.64 % of base) : 219872.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-84 (-7.64 % of base) : 202243.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-27 (-7.42 % of base) : 252875.dasm - System.Xml.XmlAttributeCollection:get_ItemOf(System.String,System.String):System.Xml.XmlAttribute:this (FullOpts)
-71 (-7.32 % of base) : 145410.dasm - System.Security.Cryptography.X509Certificates.DSACertificateExtensions:CopyWithPrivateKey(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.DSA):System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
-4 (-7.14 % of base) : 994.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThan[double](double,double,System.String) (FullOpts)
-51 (-7.02 % of base) : 161447.dasm - System.Configuration.MgmtConfigurationRecord:ChangeConfigSource(System.Configuration.SectionInformation,System.String,System.String,System.String):this (FullOpts)
-51 (-6.98 % of base) : 190584.dasm - System.Configuration.MgmtConfigurationRecord:ChangeConfigSource(System.Configuration.SectionInformation,System.String,System.String,System.String):this (FullOpts)
-22 (-6.73 % of base) : 259948.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:CachesResult(System.Xml.Xsl.Qil.QilNode):ubyte (FullOpts)
-62 (-6.60 % of base) : 243254.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-48 (-6.41 % of base) : 138714.dasm - System.Reflection.PathAssemblyResolver:Resolve(System.Reflection.MetadataLoadContext,System.Reflection.AssemblyName):System.Reflection.Assembly:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 329976844 (overridden on cmd)
Total bytes of diff: 329874855 (overridden on cmd)
Total bytes of delta: -101989 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
500 : 704195.dasm (4.22 % of base)
332 : 697581.dasm (7.32 % of base)
298 : 624025.dasm (2.89 % of base)
256 : 693332.dasm (3.37 % of base)
200 : 62504.dasm (4.35 % of base)
198 : 531279.dasm (1.64 % of base)
197 : 94540.dasm (4.22 % of base)
181 : 697661.dasm (1.81 % of base)
170 : 683210.dasm (3.61 % of base)
159 : 716900.dasm (4.71 % of base)
152 : 698344.dasm (3.32 % of base)
146 : 579789.dasm (1.08 % of base)
142 : 114804.dasm (15.54 % of base)
137 : 427808.dasm (8.19 % of base)
134 : 334663.dasm (1.04 % of base)
134 : 427809.dasm (10.40 % of base)
132 : 116279.dasm (2.87 % of base)
127 : 336682.dasm (3.03 % of base)
126 : 49105.dasm (2.61 % of base)
125 : 631858.dasm (5.15 % of base)
Top file improvements (bytes):
-1079 : 185486.dasm (-42.85 % of base)
-976 : 185945.dasm (-7.80 % of base)
-703 : 50319.dasm (-4.48 % of base)
-632 : 708019.dasm (-5.78 % of base)
-622 : 85447.dasm (-4.03 % of base)
-556 : 236005.dasm (-8.14 % of base)
-544 : 94358.dasm (-3.08 % of base)
-513 : 82193.dasm (-4.42 % of base)
-475 : 72474.dasm (-4.71 % of base)
-444 : 727304.dasm (-2.84 % of base)
-396 : 20855.dasm (-4.17 % of base)
-386 : 76909.dasm (-4.07 % of base)
-375 : 26169.dasm (-5.65 % of base)
-330 : 757036.dasm (-2.60 % of base)
-295 : 63598.dasm (-5.00 % of base)
-294 : 206946.dasm (-2.43 % of base)
-289 : 128300.dasm (-2.26 % of base)
-277 : 417993.dasm (-8.84 % of base)
-274 : 106918.dasm (-8.75 % of base)
-274 : 516048.dasm (-8.75 % of base)
98 total files with Code Size differences (59 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
500 (4.22 % of base) : 704195.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1-OSR)
332 (7.32 % of base) : 697581.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier1)
298 (2.89 % of base) : 624025.dasm - System.Text.Json.Serialization.Converters.IListConverter`1[System.__Canon]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1-OSR)
256 (3.37 % of base) : 693332.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,ubyte,ubyte,ubyte,int,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState],ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (Tier1)
200 (4.35 % of base) : 62504.dasm - Microsoft.CodeAnalysis.CombineNode`2[int,int]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]]:this (Tier1)
198 (1.64 % of base) : 531279.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
197 (4.22 % of base) : 94540.dasm - Microsoft.CodeAnalysis.CombineNode`2[int,int]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]]:this (Tier1)
181 (1.81 % of base) : 697661.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte):ubyte (Tier1)
170 (3.61 % of base) : 683210.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,System.Nullable`1[int]]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
159 (4.71 % of base) : 716900.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindSubcaptures[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+FullInputReader[ulong]](System.ReadOnlySpan`1[ushort],int,int,System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+PerThreadData[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+Registers[ulong]:this (Tier1)
152 (3.32 % of base) : 698344.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
146 (1.08 % of base) : 579789.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
142 (15.54 % of base) : 114804.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
137 (8.19 % of base) : 427808.dasm - System.Net.Security.TlsFrameHelper:TryParseHelloFrame(System.ReadOnlySpan`1[ubyte],byref,int,System.Net.Security.TlsFrameHelper+HelloExtensionCallback):ubyte (Tier1)
134 (1.04 % of base) : 334663.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
134 (10.40 % of base) : 427809.dasm - System.Net.Security.TlsFrameHelper:TryParseClientHello(System.ReadOnlySpan`1[ubyte],byref,int,System.Net.Security.TlsFrameHelper+HelloExtensionCallback):ubyte (Tier1)
132 (2.87 % of base) : 116279.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
127 (3.03 % of base) : 336682.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str:IgnoreSubDirectoryFiles():this (Tier1)
126 (2.61 % of base) : 49105.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
125 (5.15 % of base) : 631858.dasm - System.Text.Json.Serialization.Converters.DictionaryOfTKeyTValueConverter`3[System.__Canon,System.__Canon,int]:OnWriteResume(System.Text.Json.Utf8JsonWriter,System.__Canon,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
Top method improvements (bytes):
-1079 (-42.85 % of base) : 185486.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ParseAdditionalSources(Microsoft.CodeAnalysis.ISourceGenerator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSyntaxTree]:this (Tier1)
-976 (-7.80 % of base) : 185945.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (Tier1)
-703 (-4.48 % of base) : 50319.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
-632 (-5.78 % of base) : 708019.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:BindAttributes(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],Microsoft.CodeAnalysis.CSharp.Binder):System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData,Microsoft.CodeAnalysis.CSharp.BoundAttribute]]:this (Tier1)
-622 (-4.03 % of base) : 85447.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
-556 (-8.14 % of base) : 236005.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-544 (-3.08 % of base) : 94358.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
-513 (-4.42 % of base) : 82193.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-475 (-4.71 % of base) : 72474.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-444 (-2.84 % of base) : 727304.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
-396 (-4.17 % of base) : 20855.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-386 (-4.07 % of base) : 76909.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-375 (-5.65 % of base) : 26169.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-330 (-2.60 % of base) : 757036.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-295 (-5.00 % of base) : 63598.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
-294 (-2.43 % of base) : 206946.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-289 (-2.26 % of base) : 128300.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-277 (-8.84 % of base) : 417993.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-274 (-8.75 % of base) : 106918.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-274 (-8.75 % of base) : 516048.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
Top method regressions (percentages):
142 (15.54 % of base) : 114804.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
15 (14.42 % of base) : 228557.dasm - System.Collections.Immutable.ImmutableList`1+Node[int]:ItemRef(int):byref:this (Tier1)
15 (14.42 % of base) : 82545.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRef(int):byref:this (Tier1)
15 (14.42 % of base) : 43914.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRef(int):byref:this (Tier1)
15 (14.02 % of base) : 660390.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.__Canon]:ItemRef(int):byref:this (Tier1)
15 (14.02 % of base) : 63728.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`2[System.__Canon,System.__Canon]]:ItemRef(int):byref:this (Tier1)
65 (13.49 % of base) : 419920.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.__Canon]:PartialQuickSort(int[],int,int,int,int):this (Tier1)
59 (12.02 % of base) : 336339.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.__Canon]:PartialQuickSort(int[],int,int,int,int):this (Tier1)
57 (11.83 % of base) : 323441.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.__Canon]:PartialQuickSort(int[],int,int,int,int):this (Tier1)
44 (11.70 % of base) : 531207.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (11.70 % of base) : 732531.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (11.70 % of base) : 744310.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (11.70 % of base) : 750016.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (11.70 % of base) : 80060.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (11.70 % of base) : 355055.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (11.70 % of base) : 405548.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (11.70 % of base) : 417859.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (11.70 % of base) : 750975.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (11.70 % of base) : 753612.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (11.70 % of base) : 409626.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
Top method improvements (percentages):
-1079 (-42.85 % of base) : 185486.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ParseAdditionalSources(Microsoft.CodeAnalysis.ISourceGenerator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSyntaxTree]:this (Tier1)
-40 (-23.95 % of base) : 101035.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-40 (-23.67 % of base) : 101022.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-40 (-23.67 % of base) : 101036.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-40 (-23.67 % of base) : 101326.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-23.49 % of base) : 103067.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
-40 (-23.39 % of base) : 101133.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-23.35 % of base) : 305226.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-40 (-23.26 % of base) : 297568.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-40 (-23.26 % of base) : 305204.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-23.08 % of base) : 308391.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-23.08 % of base) : 305232.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.81 % of base) : 295748.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 305218.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 308371.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 297569.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 305198.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 308357.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 308407.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-40 (-22.60 % of base) : 101027.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 130000373 (overridden on cmd)
Total bytes of diff: 129987526 (overridden on cmd)
Total bytes of delta: -12847 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
238 : 293812.dasm (5.95 % of base)
212 : 267131.dasm (5.34 % of base)
149 : 294940.dasm (4.55 % of base)
149 : 42801.dasm (2.32 % of base)
149 : 294755.dasm (4.60 % of base)
149 : 48468.dasm (2.32 % of base)
149 : 294834.dasm (4.58 % of base)
149 : 294937.dasm (4.55 % of base)
136 : 128588.dasm (2.00 % of base)
120 : 22904.dasm (4.53 % of base)
120 : 170784.dasm (4.42 % of base)
119 : 294057.dasm (4.41 % of base)
119 : 128677.dasm (4.23 % of base)
111 : 20143.dasm (2.56 % of base)
109 : 155872.dasm (5.90 % of base)
107 : 255151.dasm (4.42 % of base)
105 : 128807.dasm (5.42 % of base)
104 : 154063.dasm (3.44 % of base)
103 : 154062.dasm (3.47 % of base)
102 : 128336.dasm (5.36 % of base)
Top file improvements (bytes):
-409 : 59259.dasm (-1.44 % of base)
-185 : 259450.dasm (-3.88 % of base)
-185 : 244085.dasm (-3.88 % of base)
-177 : 44416.dasm (-2.79 % of base)
-168 : 197463.dasm (-4.93 % of base)
-167 : 165420.dasm (-11.07 % of base)
-159 : 165601.dasm (-10.59 % of base)
-139 : 176887.dasm (-3.92 % of base)
-130 : 288633.dasm (-2.62 % of base)
-109 : 174295.dasm (-0.61 % of base)
-106 : 13038.dasm (-6.13 % of base)
-105 : 153465.dasm (-3.07 % of base)
-105 : 156589.dasm (-3.10 % of base)
-105 : 85154.dasm (-3.14 % of base)
-104 : 5124.dasm (-2.25 % of base)
-86 : 177217.dasm (-2.80 % of base)
-84 : 52119.dasm (-7.64 % of base)
-84 : 54326.dasm (-7.64 % of base)
-84 : 45486.dasm (-7.64 % of base)
-82 : 288815.dasm (-5.71 % of base)
80 total files with Code Size differences (40 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
238 (5.95 % of base) : 293812.dasm - System.Threading.Channels.Tests.ChannelTestBase+<ReadAllAsync_DualConcurrentEnumeration_AllItemsEnumerated>d__72:MoveNext():this (FullOpts)
212 (5.34 % of base) : 267131.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
149 (2.32 % of base) : 42801.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
149 (2.32 % of base) : 48468.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
149 (4.60 % of base) : 294755.dasm - System.Threading.RateLimiting.Test.ConcurrencyLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
149 (4.58 % of base) : 294834.dasm - System.Threading.RateLimiting.Test.FixedWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
149 (4.55 % of base) : 294937.dasm - System.Threading.RateLimiting.Test.SlidingWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__8:MoveNext():this (FullOpts)
149 (4.55 % of base) : 294940.dasm - System.Threading.RateLimiting.Test.TokenBucketRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
136 (2.00 % of base) : 128588.dasm - System.IO.Pipelines.Tests.PipelineReaderWriterFacts+<ReaderShouldNotGetUnflushedBytesWithAppend>d__17:MoveNext():this (FullOpts)
120 (4.53 % of base) : 22904.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+<>c__DisplayClass20_0+<<ProcessDocumentAsync>g__ProcessDocumentAsync|0>d:MoveNext():this (FullOpts)
120 (4.42 % of base) : 170784.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
119 (4.23 % of base) : 128677.dasm - System.IO.Pipelines.Tests.PipePoolTests+<AdvanceToEndReturnsAllButOneBlockIfWritingBeforeAdvance>d__1:MoveNext():this (FullOpts)
119 (4.41 % of base) : 294057.dasm - System.Threading.RateLimiting.Test.TokenBucketRateLimiterTests+<ReplenishWorksWithTicksOverInt32Max>d__43:MoveNext():this (FullOpts)
111 (2.56 % of base) : 20143.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
109 (5.90 % of base) : 155872.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
107 (4.42 % of base) : 255151.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
105 (5.42 % of base) : 128807.dasm - System.IO.Pipelines.Tests.PipeLengthTests+<LengthIsBasedOnPreviouslyExamined>d__10:MoveNext():this (FullOpts)
104 (3.44 % of base) : 154063.dasm - System.Net.Quic.Tests.QuicStreamTests+<>c__DisplayClass7_0+<<LargeDataSentAndReceived>b__1>d:MoveNext():this (FullOpts)
103 (3.47 % of base) : 154062.dasm - System.Net.Quic.Tests.QuicStreamTests+<>c__DisplayClass7_0+<<LargeDataSentAndReceived>b__2>d:MoveNext():this (FullOpts)
102 (5.36 % of base) : 128336.dasm - System.IO.Pipelines.Tests.PipeWriterTests+<WriteLargeDataBinary>d__9:MoveNext():this (FullOpts)
Top method improvements (bytes):
-409 (-1.44 % of base) : 59259.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-185 (-3.88 % of base) : 259450.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
-185 (-3.88 % of base) : 244085.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
-177 (-2.79 % of base) : 44416.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
-168 (-4.93 % of base) : 197463.dasm - System.Runtime.Serialization.SchemaExporter:ExportGenericInfo(System.Type,System.String,System.String):System.Xml.XmlElement:this (FullOpts)
-167 (-11.07 % of base) : 165420.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1:Write2_wrapper(System.Object[]):this (FullOpts)
-159 (-10.59 % of base) : 165601.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithArrayPropertyHavingChoice:Write3_Item(System.String,System.String,SerializationTypes.TypeWithArrayPropertyHavingChoice,ubyte,ubyte):this (FullOpts)
-139 (-3.92 % of base) : 176887.dasm - System.Xml.XmlWriterApiTests.TCFullEndElement+TCWriteValue+TCWriteState:InvokeMethod(System.Xml.XmlWriter,System.String):this (FullOpts)
-130 (-2.62 % of base) : 288633.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6477_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-109 (-0.61 % of base) : 174295.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
-106 (-6.13 % of base) : 13038.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-105 (-3.14 % of base) : 85154.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
-105 (-3.07 % of base) : 153465.dasm - System.Net.Http.X509ResourceClient+<>c__DisplayClass15_0+<<CreateDownloadBytesFunc>b__0>d:MoveNext():this (FullOpts)
-105 (-3.10 % of base) : 156589.dasm - System.Net.Http.X509ResourceClient+<>c__DisplayClass15_0+<<CreateDownloadBytesFunc>b__0>d:MoveNext():this (FullOpts)
-104 (-2.25 % of base) : 5124.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-86 (-2.80 % of base) : 177217.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
-84 (-7.64 % of base) : 52119.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-84 (-7.64 % of base) : 54326.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-84 (-7.64 % of base) : 45486.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-82 (-5.71 % of base) : 288815.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6786_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method regressions (percentages):
25 (11.36 % of base) : 72278.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
25 (11.36 % of base) : 71540.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
18 (9.57 % of base) : 209977.dasm - System.Int128:op_CheckedMultiply(System.Int128,System.Int128):System.Int128 (FullOpts)
65 (9.35 % of base) : 118519.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
67 (9.24 % of base) : 129103.dasm - System.IO.Pipelines.Tests.StreamPipeReaderTests+ThrowAfterZeroByteReadStream+<ReadAsync>d__4:MoveNext():this (FullOpts)
59 (8.35 % of base) : 36482.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:DisposeAsync():System.Threading.Tasks.ValueTask:this (FullOpts)
20 (7.41 % of base) : 57737.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
16 (7.11 % of base) : 150534.dasm - System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
16 (7.11 % of base) : 150812.dasm - System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
4 (6.45 % of base) : 126361.dasm - System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
6 (6.45 % of base) : 61644.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (FullOpts)
23 (6.35 % of base) : 178833.dasm - System.Reflection.Emit.ModuleBuilderImpl:DefinePInvokeMethodCore(System.String,System.String,System.String,int,int,System.Type,System.Type[],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
4 (6.25 % of base) : 126353.dasm - System.IO.Hashing.XxHash64:GetCurrentHashAsUInt64():ulong:this (FullOpts)
50 (6.20 % of base) : 234582.dasm - System.Text.Json.SourceGeneration.Tests.AsyncStreamSerializerWrapper+<DeserializeWrapper>d__6`1[System.Text.Json.Serialization.Tests.GenericStructISetWrapper`1[int]]:MoveNext():this (FullOpts)
85 (6.14 % of base) : 303149.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__43:MoveNext():this (FullOpts)
6 (6.12 % of base) : 62098.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteNullableStringLiteral(System.String,System.String,System.String):this (FullOpts)
23 (6.05 % of base) : 195890.dasm - DataContractSerializerTests:VerifyXElementObject(System.Xml.Linq.XElement,System.Xml.Linq.XElement,ubyte) (FullOpts)
23 (6.05 % of base) : 197554.dasm - DataContractSerializerTests:VerifyXElementObject(System.Xml.Linq.XElement,System.Xml.Linq.XElement,ubyte) (FullOpts)
23 (6.05 % of base) : 164764.dasm - XmlSerializerTests:VerifyXElementObject(System.Xml.Linq.XElement,System.Xml.Linq.XElement,ubyte) (FullOpts)
23 (6.05 % of base) : 304172.dasm - XmlSerializerTests:VerifyXElementObject(System.Xml.Linq.XElement,System.Xml.Linq.XElement,ubyte) (FullOpts)
Top method improvements (percentages):
-40 (-23.81 % of base) : 25999.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-23.64 % of base) : 26821.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-23.49 % of base) : 27136.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
-39 (-23.35 % of base) : 105986.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-23.35 % of base) : 26822.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-23.35 % of base) : 26815.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-40 (-23.26 % of base) : 108290.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-40 (-23.26 % of base) : 104338.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-23.08 % of base) : 108303.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-23.08 % of base) : 112351.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-23.08 % of base) : 28747.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-40 (-22.86 % of base) : 102527.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ManagedTests.DynamicCSharp.Conformance.dynamic.overloadResolution.Operators.Oneclass2operates.conversion.oneparamdifftypesconv010.oneparamdifftypesconv010.Target (FullOpts)
-39 (-22.81 % of base) : 105006.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 104339.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 108288.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 112327.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 112358.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 108295.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.67 % of base) : 112340.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-39 (-22.54 % of base) : 108293.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13194305 (overridden on cmd)
Total bytes of diff: 13191353 (overridden on cmd)
Total bytes of delta: -2952 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
122 : 14416.dasm (2.82 % of base)
96 : 16455.dasm (1.93 % of base)
68 : 519.dasm (4.29 % of base)
59 : 16496.dasm (2.05 % of base)
57 : 5418.dasm (3.64 % of base)
54 : 1944.dasm (4.76 % of base)
47 : 14197.dasm (1.03 % of base)
47 : 16032.dasm (0.16 % of base)
47 : 22241.dasm (1.81 % of base)
42 : 30851.dasm (7.71 % of base)
40 : 3266.dasm (5.34 % of base)
40 : 21379.dasm (1.11 % of base)
35 : 26546.dasm (3.30 % of base)
33 : 13920.dasm (2.68 % of base)
31 : 24018.dasm (1.30 % of base)
27 : 4833.dasm (6.70 % of base)
27 : 14269.dasm (0.34 % of base)
27 : 25962.dasm (3.58 % of base)
26 : 30848.dasm (1.02 % of base)
25 : 16480.dasm (1.48 % of base)
Top file improvements (bytes):
-420 : 9020.dasm (-4.06 % of base)
-306 : 15325.dasm (-3.98 % of base)
-84 : 26490.dasm (-7.64 % of base)
-77 : 20814.dasm (-1.35 % of base)
-72 : 13748.dasm (-2.28 % of base)
-63 : 7935.dasm (-2.76 % of base)
-62 : 25271.dasm (-6.60 % of base)
-53 : 7508.dasm (-2.72 % of base)
-50 : 19658.dasm (-0.84 % of base)
-48 : 23913.dasm (-0.61 % of base)
-44 : 23426.dasm (-2.16 % of base)
-42 : 31298.dasm (-2.59 % of base)
-41 : 22059.dasm (-1.92 % of base)
-41 : 26159.dasm (-1.56 % of base)
-39 : 25664.dasm (-0.33 % of base)
-37 : 19484.dasm (-3.31 % of base)
-37 : 26391.dasm (-1.97 % of base)
-37 : 15176.dasm (-0.97 % of base)
-36 : 6757.dasm (-2.40 % of base)
-35 : 59.dasm (-1.72 % of base)
67 total files with Code Size differences (36 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
122 (2.82 % of base) : 14416.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
96 (1.93 % of base) : 16455.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
68 (4.29 % of base) : 519.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
59 (2.05 % of base) : 16496.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
57 (3.64 % of base) : 5418.dasm - FSharp.Compiler.LexFilter:|TyparsCloseOp|_|$cont@519(Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[ubyte,FSharp.Compiler.Parser+token][],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Parser+token]]] (FullOpts)
54 (4.76 % of base) : 1944.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
47 (0.16 % of base) : 16032.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
47 (1.81 % of base) : 22241.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
47 (1.03 % of base) : 14197.dasm - System.Net.Http.RedirectHandler+<SendAsync>d__4:MoveNext():this (FullOpts)
42 (7.71 % of base) : 30851.dasm - System.Management.Automation.Provider.NavigationCmdletProvider:MakePath(System.String,System.String,ubyte):System.String:this (FullOpts)
40 (5.34 % of base) : 3266.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:GetPathToDotNetFrameworkImlpementationAssemblies@57(System.String):Microsoft.FSharp.Collections.FSharpList`1[System.String] (FullOpts)
40 (1.11 % of base) : 21379.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolComplex:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
35 (3.30 % of base) : 26546.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,Microsoft.CodeAnalysis.CSharp.BoundUnaryOperator):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
33 (2.68 % of base) : 13920.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
31 (1.30 % of base) : 24018.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<FindMostSpecificImplementationInBases>g__findMostSpecificImplementationInBases|92_1(Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],byref,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
27 (6.70 % of base) : 4833.dasm - FSharp.Compiler.CompilerOptions:SetTarget(FSharp.Compiler.CompilerConfig+TcConfigBuilder,System.String) (FullOpts)
27 (3.58 % of base) : 25962.dasm - Microsoft.CodeAnalysis.CSharp.Binder+WithQueryLambdaParametersBinder:BindRangeVariable(Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.RangeVariableSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
27 (0.34 % of base) : 14269.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
26 (1.02 % of base) : 30848.dasm - System.Management.Automation.LocationGlobber:GenerateRelativePath(System.Management.Automation.PSDriveInfo,System.String,ubyte,System.Management.Automation.Provider.CmdletProvider,System.Management.Automation.CmdletProviderContext):System.String:this (FullOpts)
25 (1.48 % of base) : 16480.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
Top method improvements (bytes):
-420 (-4.06 % of base) : 9020.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-306 (-3.98 % of base) : 15325.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
-84 (-7.64 % of base) : 26490.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-77 (-1.35 % of base) : 20814.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-72 (-2.28 % of base) : 13748.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-63 (-2.76 % of base) : 7935.dasm - FSharp.Compiler.NameResolution:CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities(Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.NameResolution+ResolutionInfo,FSharp.Compiler.TypedTree+EntityRef]],FSharp.Compiler.NameResolution+TypeNameResolutionInfo,FSharp.Compiler.NameResolution+PermitDirectReferenceToGeneratedType,FSharp.Compiler.Text.Range):Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.NameResolution+ResolutionInfo,FSharp.Compiler.TypedTree+EntityRef]] (FullOpts)
-62 (-6.60 % of base) : 25271.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
-53 (-2.72 % of base) : 7508.dasm - FSharp.Compiler.ParseAndCheckInputs:ProcessMetaCommand@572[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.CompilerConfig+TcConfigBuilder,System.String,ubyte,System.__Canon,FSharp.Compiler.Syntax.ParsedHashDirective):System.__Canon (FullOpts)
-50 (-0.84 % of base) : 19658.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-48 (-0.61 % of base) : 23913.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedString(Microsoft.CodeAnalysis.CSharp.Syntax.InterpolatedStringExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-44 (-2.16 % of base) : 23426.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:ComputeBoundDecisionDagNodes(Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag,Microsoft.CodeAnalysis.CSharp.BoundLeafDecisionDagNode):this (FullOpts)
-42 (-2.59 % of base) : 31298.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
-41 (-1.56 % of base) : 26159.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
-41 (-1.92 % of base) : 22059.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEEventSymbol:GetAssociatedField(Roslyn.Utilities.MultiDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:this (FullOpts)
-39 (-0.33 % of base) : 25664.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-37 (-1.97 % of base) : 26391.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:ReportUnusedImports(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (FullOpts)
-37 (-3.31 % of base) : 19484.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AnalyzeArguments(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.ArgumentAnalysisResult (FullOpts)
-37 (-0.97 % of base) : 15176.dasm - Microsoft.ML.Transforms.Text.WordEmbeddingTransformer:GetVocabularyDictionary(Microsoft.ML.Runtime.IHostEnvironment):Microsoft.ML.Transforms.Text.WordEmbeddingTransformer+Model:this (FullOpts)
-36 (-2.40 % of base) : 6757.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-35 (-1.72 % of base) : 59.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
Top method regressions (percentages):
42 (7.71 % of base) : 30851.dasm - System.Management.Automation.Provider.NavigationCmdletProvider:MakePath(System.String,System.String,ubyte):System.String:this (FullOpts)
27 (6.70 % of base) : 4833.dasm - FSharp.Compiler.CompilerOptions:SetTarget(FSharp.Compiler.CompilerConfig+TcConfigBuilder,System.String) (FullOpts)
40 (5.34 % of base) : 3266.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:GetPathToDotNetFrameworkImlpementationAssemblies@57(System.String):Microsoft.FSharp.Collections.FSharpList`1[System.String] (FullOpts)
14 (5.20 % of base) : 1796.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
23 (4.83 % of base) : 30515.dasm - System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String) (FullOpts)
54 (4.76 % of base) : 1944.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
68 (4.29 % of base) : 519.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
57 (3.64 % of base) : 5418.dasm - FSharp.Compiler.LexFilter:|TyparsCloseOp|_|$cont@519(Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[ubyte,FSharp.Compiler.Parser+token][],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Parser+token]]] (FullOpts)
4 (3.60 % of base) : 17862.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
27 (3.58 % of base) : 25962.dasm - Microsoft.CodeAnalysis.CSharp.Binder+WithQueryLambdaParametersBinder:BindRangeVariable(Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.RangeVariableSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
35 (3.30 % of base) : 26546.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,Microsoft.CodeAnalysis.CSharp.BoundUnaryOperator):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
18 (3.19 % of base) : 15879.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
5 (3.16 % of base) : 1976.dasm - System.Xml.XmlDeclaration:set_Standalone(System.String):this (FullOpts)
17 (3.11 % of base) : 15557.dasm - Microsoft.ML.Data.VBuffer`1[float]:CopyTo(System.Span`1[float],int,float):this (FullOpts)
2 (2.94 % of base) : 26134.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
24 (2.83 % of base) : 13465.dasm - Microsoft.ML.Data.RoleMappedSchema:.ctor(Microsoft.ML.DataViewSchema,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.IReadOnlyList`1[Microsoft.ML.DataViewSchema+Column]]):this (FullOpts)
122 (2.82 % of base) : 14416.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
13 (2.75 % of base) : 85.dasm - System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object (FullOpts)
3 (2.70 % of base) : 29387.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEmbeddedAttributeSymbolBase:GetMembers(System.String):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
33 (2.68 % of base) : 13920.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
Top method improvements (percentages):
-20 (-11.63 % of base) : 16231.dasm - Microsoft.CodeAnalysis.CommandLineParser:TryParseUInt16(System.String,byref):ubyte (FullOpts)
-22 (-9.87 % of base) : 29827.dasm - System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
-25 (-8.04 % of base) : 21055.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteNamedTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-84 (-7.64 % of base) : 26490.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-18 (-6.90 % of base) : 797.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
-27 (-6.84 % of base) : 12269.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor:.ctor(System.Numerics.Matrix3x2,SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler,SixLabors.ImageSharp.Size):this (FullOpts)
-62 (-6.60 % of base) : 25271.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
-12 (-5.69 % of base) : 5961.dasm - FSharp.Compiler.Xml.XmlDocumentationInfo:TryCreateFromFile(System.String):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Xml.XmlDocumentationInfo] (FullOpts)
-7 (-5.51 % of base) : 11350.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
-22 (-5.35 % of base) : 21573.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEnumConstantSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-20 (-5.32 % of base) : 30392.dasm - System.Runtime.CompilerServices.RuleCache`1[System.__Canon]:MoveRule(System.__Canon,int):this (FullOpts)
-14 (-5.26 % of base) : 162.dasm - System.String:Concat(System.String,System.String):System.String (FullOpts)
-21 (-4.56 % of base) : 18495.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:Complete(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Threading.CancellationToken):this (FullOpts)
-18 (-4.51 % of base) : 21167.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-420 (-4.06 % of base) : 9020.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-306 (-3.98 % of base) : 15325.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
-31 (-3.97 % of base) : 55.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (FullOpts)
-19 (-3.86 % of base) : 23066.dasm - Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:GetUpdatedArray[System.__Canon](Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
-12 (-3.67 % of base) : 799.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-8 (-3.60 % of base) : 22257.dasm - Microsoft.CodeAnalysis.TypeNameDecoder`2[System.__Canon,System.__Canon]:GetTypeSymbolForSerializedType(System.String):System.__Canon:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4197516 (overridden on cmd)
Total bytes of diff: 4196747 (overridden on cmd)
Total bytes of delta: -769 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
58 : 1203.dasm (5.49 % of base)
58 : 17637.dasm (5.48 % of base)
58 : 20559.dasm (5.48 % of base)
58 : 24023.dasm (5.48 % of base)
33 : 5464.dasm (5.37 % of base)
31 : 20720.dasm (2.27 % of base)
31 : 17736.dasm (2.27 % of base)
31 : 24206.dasm (2.27 % of base)
28 : 8236.dasm (2.43 % of base)
23 : 3776.dasm (5.12 % of base)
18 : 23251.dasm (1.02 % of base)
18 : 3585.dasm (1.03 % of base)
17 : 17431.dasm (6.25 % of base)
17 : 20416.dasm (6.25 % of base)
17 : 23904.dasm (6.25 % of base)
17 : 774.dasm (6.25 % of base)
15 : 25596.dasm (0.85 % of base)
15 : 19130.dasm (0.85 % of base)
15 : 22115.dasm (0.85 % of base)
15 : 7741.dasm (1.38 % of base)
Top file improvements (bytes):
-105 : 8137.dasm (-3.74 % of base)
-46 : 5756.dasm (-6.05 % of base)
-41 : 4227.dasm (-2.97 % of base)
-36 : 18868.dasm (-3.71 % of base)
-36 : 4030.dasm (-3.75 % of base)
-36 : 21851.dasm (-3.71 % of base)
-36 : 25320.dasm (-3.71 % of base)
-35 : 9029.dasm (-5.32 % of base)
-35 : 6499.dasm (-5.99 % of base)
-32 : 297.dasm (-3.11 % of base)
-32 : 9158.dasm (-1.56 % of base)
-31 : 1208.dasm (-2.73 % of base)
-30 : 4356.dasm (-2.92 % of base)
-27 : 17643.dasm (-2.38 % of base)
-27 : 20595.dasm (-2.38 % of base)
-27 : 24028.dasm (-2.38 % of base)
-26 : 9018.dasm (-3.44 % of base)
-24 : 8552.dasm (-2.90 % of base)
-23 : 18104.dasm (-3.00 % of base)
-23 : 21114.dasm (-3.00 % of base)
61 total files with Code Size differences (32 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
58 (5.49 % of base) : 1203.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
58 (5.48 % of base) : 17637.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
58 (5.48 % of base) : 20559.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
58 (5.48 % of base) : 24023.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
33 (5.37 % of base) : 5464.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
31 (2.27 % of base) : 20720.dasm - System.Text.UTF32Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
31 (2.27 % of base) : 17736.dasm - System.Text.UTF32Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
31 (2.27 % of base) : 24206.dasm - System.Text.UTF32Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
28 (2.43 % of base) : 8236.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
23 (5.12 % of base) : 3776.dasm - System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String) (FullOpts)
18 (1.02 % of base) : 23251.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
18 (1.03 % of base) : 3585.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
17 (6.25 % of base) : 17431.dasm - System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
17 (6.25 % of base) : 20416.dasm - System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
17 (6.25 % of base) : 23904.dasm - System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
17 (6.25 % of base) : 774.dasm - System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
15 (0.85 % of base) : 25596.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
15 (0.85 % of base) : 19130.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
15 (0.85 % of base) : 22115.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
15 (1.38 % of base) : 7741.dasm - System.Reflection.TypeNameParser:GetType(System.String,System.ReadOnlySpan`1[System.String],System.String):System.Type:this (FullOpts)
Top method improvements (bytes):
-105 (-3.74 % of base) : 8137.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
-46 (-6.05 % of base) : 5756.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (FullOpts)
-41 (-2.97 % of base) : 4227.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
-36 (-3.71 % of base) : 18868.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-36 (-3.75 % of base) : 4030.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-36 (-3.71 % of base) : 21851.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-36 (-3.71 % of base) : 25320.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-35 (-5.99 % of base) : 6499.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
-35 (-5.32 % of base) : 9029.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
-32 (-1.56 % of base) : 9158.dasm - System.Globalization.IdnMapping:PunycodeEncode(System.String):System.String (FullOpts)
-32 (-3.11 % of base) : 297.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
-31 (-2.73 % of base) : 1208.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (FullOpts)
-30 (-2.92 % of base) : 4356.dasm - System.Reflection.Runtime.MethodInfos.RuntimeNamedMethodInfo`1[System.Reflection.Runtime.MethodInfos.NativeFormat.NativeFormatMethodCommon]:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-27 (-2.38 % of base) : 17643.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (FullOpts)
-27 (-2.38 % of base) : 20595.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (FullOpts)
-27 (-2.38 % of base) : 24028.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (FullOpts)
-26 (-3.44 % of base) : 9018.dasm - System.Uri:GetHostViaCustomSyntax():this (FullOpts)
-24 (-2.90 % of base) : 8552.dasm - System.SpanHelpers:LastIndexOfAnyValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,short,short,short,short,int):int (FullOpts)
-23 (-3.00 % of base) : 18104.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (FullOpts)
-23 (-3.00 % of base) : 21114.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (FullOpts)
Top method regressions (percentages):
17 (6.25 % of base) : 17431.dasm - System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
17 (6.25 % of base) : 20416.dasm - System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
17 (6.25 % of base) : 23904.dasm - System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
17 (6.25 % of base) : 774.dasm - System.Runtime.DispatchResolve:FindInterfaceMethodImplementationTarget(ulong,ulong,ushort,ulong):long (FullOpts)
58 (5.49 % of base) : 1203.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
58 (5.48 % of base) : 17637.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
58 (5.48 % of base) : 20559.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
58 (5.48 % of base) : 24023.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
33 (5.37 % of base) : 5464.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
23 (5.12 % of base) : 3776.dasm - System.Dynamic.Utils.ExpressionUtils:ValidateArgumentTypes(System.Reflection.MethodBase,int,byref,System.String) (FullOpts)
12 (4.21 % of base) : 9022.dasm - System.IPv4AddressHelper:IsValidCanonical(ulong,int,byref,ubyte,ubyte):ubyte (FullOpts)
11 (3.04 % of base) : 1698.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
11 (3.04 % of base) : 18547.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
11 (3.04 % of base) : 25008.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
11 (3.04 % of base) : 21536.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
11 (2.71 % of base) : 4461.dasm - Internal.Reflection.Execution.ConstraintValidator:EnsureSatisfiesClassConstraints(System.Type[],System.Type[],System.Object,Internal.Reflection.Execution.ConstraintValidator+SigTypeContext) (FullOpts)
11 (2.67 % of base) : 23239.dasm - Internal.Reflection.Execution.ConstraintValidator:EnsureSatisfiesClassConstraints(System.Type[],System.Type[],System.Object,Internal.Reflection.Execution.ConstraintValidator+SigTypeContext) (FullOpts)
28 (2.43 % of base) : 8236.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
13 (2.40 % of base) : 16973.dasm - ReflectionTest+TestInstanceFields:Run() (FullOpts)
13 (2.40 % of base) : 27353.dasm - ReflectionTest+TestInstanceFields:Run() (FullOpts)
Top method improvements (percentages):
-46 (-6.05 % of base) : 5756.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (FullOpts)
-35 (-5.99 % of base) : 6499.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
-35 (-5.32 % of base) : 9029.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
-18 (-5.14 % of base) : 19648.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-18 (-5.14 % of base) : 22644.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-18 (-5.14 % of base) : 26123.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-18 (-5.14 % of base) : 4155.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-36 (-3.75 % of base) : 4030.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-105 (-3.74 % of base) : 8137.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
-36 (-3.71 % of base) : 18868.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-36 (-3.71 % of base) : 21851.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-36 (-3.71 % of base) : 25320.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-26 (-3.44 % of base) : 9018.dasm - System.Uri:GetHostViaCustomSyntax():this (FullOpts)
-8 (-3.21 % of base) : 18685.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-8 (-3.21 % of base) : 21670.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-8 (-3.21 % of base) : 1580.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-8 (-3.21 % of base) : 25136.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-4 (-3.20 % of base) : 22669.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-4 (-3.20 % of base) : 19666.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-4 (-3.20 % of base) : 26137.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
Diffs are based on 2,263,021 contexts (930,876 MinOpts, 1,332,145 FullOpts).
MISSED contexts: base: 2,925 (0.13%), diff: 2,944 (0.13%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.osx.arm64.checked.mch | 11,180,924 | +420 |
benchmarks.run_pgo.osx.arm64.checked.mch | 34,573,260 | -1,928 |
benchmarks.run_tiered.osx.arm64.checked.mch | 15,560,360 | -236 |
coreclr_tests.run.osx.arm64.checked.mch | 485,472,376 | -37,636 |
libraries.crossgen2.osx.arm64.checked.mch | 55,620,836 | +20 |
libraries.pmi.osx.arm64.checked.mch | 79,955,312 | -916 |
libraries_tests.run.osx.arm64.Release.mch | 312,683,360 | -35,932 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 160,782,296 | -21,116 |
realworld.run.osx.arm64.checked.mch | 15,071,740 | -16 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.osx.arm64.checked.mch | 11,180,388 | +420 |
benchmarks.run_pgo.osx.arm64.checked.mch | 18,099,980 | -1,928 |
benchmarks.run_tiered.osx.arm64.checked.mch | 4,045,284 | -236 |
coreclr_tests.run.osx.arm64.checked.mch | 153,165,920 | -37,636 |
libraries.crossgen2.osx.arm64.checked.mch | 55,619,208 | +20 |
libraries.pmi.osx.arm64.checked.mch | 79,834,184 | -916 |
libraries_tests.run.osx.arm64.Release.mch | 108,742,856 | -35,932 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 147,644,768 | -21,116 |
realworld.run.osx.arm64.checked.mch | 14,503,336 | -16 |
@@ -59,10 +59,8 @@ G_M65029_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M65029_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M65029_IG04
- cbz x1, G_M65029_IG08
- b G_M65029_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M65029_IG07
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M65029_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbnz x1, G_M65029_IG05
@@ -81,21 +79,19 @@ G_M65029_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M65029_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M65029_IG08
ldr w3, [x1, #0x08]
- cbz w3, G_M65029_IG08
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M65029_IG09
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w3, G_M65029_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M65029_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
- ; gcrRegs -[x0] +[x1]
+G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
add x1, x1, #12
; gcrRegs -[x1]
@@ -114,13 +110,13 @@ G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x4
; gcrRegs +[x0]
; byrRegs -[x0 x2]
- ;; size=36 bbWeight=0.50 PerfScore 3.75
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
G_M65029_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 124, prolog size 8, PerfScore 16.50, instruction count 31, allocated bytes for code 124 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 15.50, instruction count 29, allocated bytes for code 116 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -131,7 +127,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -78,10 +78,8 @@ G_M49441_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M49441_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M49441_IG04
- cbz x1, G_M49441_IG07
- b G_M49441_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M49441_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M49441_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -92,31 +90,29 @@ G_M49441_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M49441_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M49441_IG07
ldr w3, [x1, #0x08]
- cbz w3, G_M49441_IG07
+ cbnz w3, G_M49441_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
+G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1]
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M49441_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x1]
add x4, x1, #12
; byrRegs +[x4]
mov x5, x4
; byrRegs +[x5]
sxtw w6, w3
- b G_M49441_IG08
- ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1]
- ; byrRegs -[x4-x5]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M49441_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0030 {x4 x5}, gcvars, byref, isz
- ; gcrRegs +[x1]
- ; byrRegs +[x4-x5]
cmp w6, #0
ble G_M49441_IG09
ldrh w5, [x5]
; byrRegs -[x5]
cmp w5, #47
beq G_M49441_IG04
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M49441_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
; gcrRegs -[x1]
add x0, x0, #12
@@ -139,7 +135,7 @@ G_M49441_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 132, prolog size 8, PerfScore 18.50, instruction count 33, allocated bytes for code 132 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 17.50, instruction count 31, allocated bytes for code 124 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -150,7 +146,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet
1+Node[System.Canon],System.Collections.Generic.SortedSet`1+Node[System.Canon]):ubyte:this (FullOpts)@@ -36,12 +36,8 @@ G_M938_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byr
ldrb w0, [x0, #0x20]
; gcrRegs -[x0]
cmp w0, #1
- bne G_M938_IG04
- mov w0, #2
- cmp w1, #0
- cinc w0, w0, ne
- b G_M938_IG06
- ;; size=28 bbWeight=0.50 PerfScore 3.50
+ beq G_M938_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
G_M938_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w1, #0
cset x0, eq
@@ -50,12 +46,17 @@ G_M938_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M938_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M938_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #2
+ cmp w1, #0
+ cinc w0, w0, ne
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
+G_M938_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 80, prolog size 8, PerfScore 15.50, instruction count 20, allocated bytes for code 80 (MethodHash=eeeffc55) for method System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 15.00, instruction count 19, allocated bytes for code 76 (MethodHash=eeeffc55) for method System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -22,26 +22,20 @@ G_M65033_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x0C]
cmp w1, #1
- beq G_M65033_IG05
+ beq G_M65033_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M65033_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
cmp w1, #2
- bne G_M65033_IG07
+ bne G_M65033_IG08
ldr w1, [x0, #0x10]
add w1, w1, #1
str w1, [x0, #0x10]
ldr w2, [x0, #0x18]
cmp w1, w2
- beq G_M65033_IG07
- mov w0, #1
- ; gcrRegs -[x0]
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M65033_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
+ beq G_M65033_IG08
+ b G_M65033_IG06
+ ;; size=36 bbWeight=0.50 PerfScore 5.75
+G_M65033_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w1, [x0, #0x14]
str w1, [x0, #0x10]
mov w1, #2
@@ -49,23 +43,30 @@ G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov w0, #1
; gcrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M65033_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M65033_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M65033_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M65033_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movn w1, #0
str w1, [x0, #0x0C]
mov w0, wzr
; gcrRegs -[x0]
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 112, prolog size 8, PerfScore 18.50, instruction count 28, allocated bytes for code 112 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 19.00, instruction count 29, allocated bytes for code 116 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -76,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -37,73 +37,77 @@ G_M3894_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
add x1, x0, x1
mov w4, wzr
cmp x0, x1
- bhs G_M3894_IG11
+ bhs G_M3894_IG05
;; size=20 bbWeight=1 PerfScore 3.50
G_M3894_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add x5, x0, #2
ldrh w0, [x0]
cmp w0, #128
- bge G_M3894_IG05
+ bge G_M3894_IG06
;; size=16 bbWeight=4 PerfScore 20.00
G_M3894_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #1
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M3894_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
- cmp w0, #0xD1FFAB1E
- bge G_M3894_IG06
- mov w6, #2
- b G_M3894_IG08
- ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ mov x5, x0
+ b G_M3894_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M3894_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ bge G_M3894_IG07
+ mov w6, #2
+ b G_M3894_IG09
+ ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
movn w6, #0xD1FFAB1E
add w0, w0, w6
mov w6, #0xD1FFAB1E
cmp x5, x1
ccmp w0, w6, c, lo
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
ldrh w0, [x5]
movn w6, #0xD1FFAB1E
add w0, w0, w6
cmp w0, #0xD1FFAB1E
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
mov w6, #4
add x5, x5, #2
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=56 bbWeight=2 PerfScore 22.00
-G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+G_M3894_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #3
;; size=4 bbWeight=2 PerfScore 1.00
-G_M3894_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+G_M3894_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add w0, w4, w6
cmp w0, w2
- bgt G_M3894_IG10
+ bgt G_M3894_IG11
sxtw w4, w0
cmp x5, x1
+ blo G_M3894_IG10
+ b G_M3894_IG12
+ ;; size=28 bbWeight=4 PerfScore 20.00
+G_M3894_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov x0, x5
- blo G_M3894_IG03
- ;; size=28 bbWeight=4 PerfScore 18.00
-G_M3894_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- b G_M3894_IG11
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3894_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ b G_M3894_IG03
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M3894_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w0, #1
cmp w6, #4
cinc w0, w0, ge
sbfiz x0, x0, #1, #32
sub x5, x5, x0
- mov x0, x5
- ;; size=24 bbWeight=0.50 PerfScore 1.75
-G_M3894_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- str x0, [x3]
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
+G_M3894_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ str x5, [x3]
mov w0, w4
;; size=8 bbWeight=1 PerfScore 1.50
-G_M3894_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M3894_IG13: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 80.75, instruction count 50, allocated bytes for code 200 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
+; Total bytes of code 208, prolog size 8, PerfScore 85.75, instruction count 52, allocated bytes for code 208 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -114,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -16,7 +16,7 @@
;
; Lcl frame size = 0
-G_M26551_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M26551_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
@@ -47,7 +47,7 @@ G_M26551_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
G_M26551_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w0, w0, #15
cmp w0, #1
- bls G_M26551_IG05
+ bls G_M26551_IG07
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x20, #0x88]
@@ -55,20 +55,9 @@ G_M26551_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x1
; gcrRegs -[x0]
cbnz w0, G_M26551_IG03
- ;; size=32 bbWeight=4 PerfScore 42.00
+ b G_M26551_IG09
+ ;; size=36 bbWeight=4 PerfScore 46.00
G_M26551_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x21, #0x28]
- ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M26551_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
- br x1
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M26551_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x20, #0x88]
@@ -79,20 +68,36 @@ G_M26551_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs +[x0]
ldr x1, [x21, #0x28]
;; size=24 bbWeight=0.50 PerfScore 5.50
+G_M26551_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x30
+ br x1
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M26551_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ldr x1, [x21, #0x28]
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M26551_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
br x1
;; size=16 bbWeight=0.50 PerfScore 2.00
-RWD00 dd G_M26551_IG05 - G_M26551_IG02
+G_M26551_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ b G_M26551_IG07
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+RWD00 dd G_M26551_IG07 - G_M26551_IG02
+ dd G_M26551_IG05 - G_M26551_IG02
+ dd G_M26551_IG07 - G_M26551_IG02
+ dd G_M26551_IG07 - G_M26551_IG02
dd G_M26551_IG07 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
-; Total bytes of code 172, prolog size 16, PerfScore 163.25, instruction count 43, allocated bytes for code 172 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
+; Total bytes of code 180, prolog size 16, PerfScore 167.75, instruction count 45, allocated bytes for code 180 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +108,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -38,30 +38,22 @@ G_M57887_IG04: ; bbWeight=0, epilog, nogc, extend
G_M57887_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x0 x2]
tst w1, #255
- beq G_M57887_IG07
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M57887_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- b G_M57887_IG08
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M57887_IG07: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x2]
+ bne G_M57887_IG06
ldr w1, [x2, #0x5C]
and w1, w1, #7
cmp w1, #6
- beq G_M57887_IG08
- b G_M57887_IG03
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M57887_IG08: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ bne G_M57887_IG03
+ ;; size=24 bbWeight=1 PerfScore 6.50
+G_M57887_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
ldr x0, [x0, #0x18]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M57887_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG07: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 72, prolog size 8, PerfScore 13.00, instruction count 18, allocated bytes for code 72 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 12.00, instruction count 16, allocated bytes for code 64 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
@@ -72,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T16] ( 5, 3.00) long -> x4 single-def
-; V01 arg1 [V01,T10] ( 7, 5.00) int -> [fp+0x14] single-def
+; V01 arg1 [V01,T10] ( 7, 5.00) int -> [fp+0x1C] single-def
; V02 arg2 [V02,T14] ( 4, 3 ) ref -> x2 class-hnd single-def <ubyte[]>
; V03 arg3 [V03,T15] ( 6, 3.00) ref -> x3 class-hnd single-def <System.Reflection.Metadata.MetadataStringDecoder>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,14 +27,14 @@
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V16 tmp12 [V16,T01] ( 3, 51.67) ubyte -> x6 "Inline stloc first use temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V18 tmp14 [V18,T19] ( 3, 3.00) ref -> x19 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V19 tmp15 [V19,T12] ( 5, 5.01) int -> x20 "Inline stloc first use temp"
-; V20 tmp16 [V20,T11] ( 7, 5.98) ref -> x22 class-hnd "Inline stloc first use temp" <System.String>
-; V21 tmp17 [V21,T13] ( 5, 5.01) int -> x21 "Inline stloc first use temp"
-; V22 tmp18 [V22,T24] ( 2, 1.51) int -> x1 "Inline stloc first use temp"
+; V18 tmp14 [V18,T19] ( 3, 3.00) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V19 tmp15 [V19,T12] ( 5, 5.01) int -> x5 "Inline stloc first use temp"
+; V20 tmp16 [V20,T11] ( 7, 5.98) ref -> x8 class-hnd "Inline stloc first use temp" <System.String>
+; V21 tmp17 [V21,T13] ( 5, 5.01) int -> x6 "Inline stloc first use temp"
+; V22 tmp18 [V22,T24] ( 2, 1.51) int -> x7 "Inline stloc first use temp"
;* V23 tmp19 [V23,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V25 tmp21 [V25,T04] ( 5, 34.56) int -> x23 "Inline stloc first use temp"
+; V25 tmp21 [V25,T04] ( 5, 34.56) int -> x7 "Inline stloc first use temp"
; V26 tmp22 [V26,T22] ( 2, 2.00) byref -> x4 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
; V27 tmp23 [V27,T23] ( 2, 2.00) int -> x2 "field V07._length (fldOffset=0x8)" P-INDEP
; V28 tmp24 [V28,T06] ( 4, 27.73) byref -> x4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
@@ -42,22 +42,19 @@
;* V30 tmp26 [V30,T26] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V31 tmp27 [V31,T27] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V32 tmp28 [V32,T29] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp29 [V33,T25] ( 2, 1.01) int -> x1 "field V24._length (fldOffset=0x8)" P-INDEP
-; V34 cse0 [V34,T18] ( 3, 3.01) long -> x1 "CSE - moderate"
+; V33 tmp29 [V33,T25] ( 2, 1.01) int -> x7 "field V24._length (fldOffset=0x8)" P-INDEP
+; V34 cse0 [V34,T18] ( 3, 3.01) long -> x7 "CSE - moderate"
; V35 cse1 [V35,T08] ( 2, 18.17) int -> x5 hoist "CSE - aggressive"
-; V36 cse2 [V36,T09] ( 2, 8.99) byref -> x1 hoist "CSE - aggressive"
-; V37 cse3 [V37,T07] ( 3, 25.54) long -> x5 "CSE - aggressive"
+; V36 cse2 [V36,T09] ( 2, 8.99) byref -> x9 hoist "CSE - aggressive"
+; V37 cse3 [V37,T07] ( 3, 25.54) long -> x10 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M33766_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
mov x4, x0
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M33766_IG02: ; bbWeight=1, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2-x3]
cbz x2, G_M33766_IG05
@@ -73,15 +70,12 @@ G_M33766_IG03: ; bbWeight=0, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, b
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
G_M33766_IG04: ; bbWeight=0, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M33766_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x3]
- cbnz w1, G_M33766_IG16
+ cbnz w1, G_M33766_IG15
;; size=4 bbWeight=1 PerfScore 1.00
G_M33766_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
@@ -90,12 +84,9 @@ G_M33766_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movk x0, #1 LSL #32
;; size=12 bbWeight=0.00 PerfScore 0.00
G_M33766_IG07: ; bbWeight=0.00, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=20 bbWeight=0.00 PerfScore 0.01
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
G_M33766_IG08: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
sxtw w2, w1
movz w0, #0xD1FFAB1E
@@ -123,128 +114,119 @@ G_M33766_IG10: ; bbWeight=17.22, gcrefRegs=0000 {}, byrefRegs=0010 {x4},
G_M33766_IG11: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
tst w1, #128
cset x3, eq
- cbz w3, G_M33766_IG26
+ cbz w3, G_M33766_IG24
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #2 LSL #32
- ldr x19, [x1]
- ; gcrRegs +[x19]
- eor w1, w0, w0, ASR #11
- uxth w20, w1
- mov w21, #1
+ ldr x1, [x1]
+ ; gcrRegs +[x1]
+ eor w5, w0, w0, ASR #11
+ uxth w5, w5
+ mov w6, #1
;; size=40 bbWeight=1.00 PerfScore 8.48
-G_M33766_IG12: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0010 {x4}, byref, isz
- cmp w20, #16, LSL #12
- bhs G_M33766_IG27
- ubfiz x1, x20, #4, #32
- add x1, x1, #16
- ldr x22, [x19, x1]
- ; gcrRegs +[x22]
- add x1, x19, x1
- ; byrRegs +[x1]
- ldr w1, [x1, #0x08]
- ; byrRegs -[x1]
- cbz x22, G_M33766_IG25
+G_M33766_IG12: ; bbWeight=1.00, gcrefRegs=0002 {x1}, byrefRegs=0010 {x4}, byref, isz
+ cmp w5, #16, LSL #12
+ bhs G_M33766_IG25
+ ubfiz x7, x5, #4, #32
+ add x7, x7, #16
+ ldr x8, [x1, x7]
+ ; gcrRegs +[x8]
+ add x7, x1, x7
+ ; byrRegs +[x7]
+ ldr w7, [x7, #0x08]
+ ; byrRegs -[x7]
+ cbz x8, G_M33766_IG23
;; size=32 bbWeight=1.00 PerfScore 10.52
-G_M33766_IG13: ; bbWeight=0.51, gcrefRegs=480000 {x19 x22}, byrefRegs=0010 {x4}, byref, isz
- cmp w1, w0
- bne G_M33766_IG24
+G_M33766_IG13: ; bbWeight=0.51, gcrefRegs=0102 {x1 x8}, byrefRegs=0010 {x4}, byref, isz
+ cmp w7, w0
+ bne G_M33766_IG22
;; size=8 bbWeight=0.51 PerfScore 0.76
-G_M33766_IG14: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0010 {x4}, byref, isz
- sxtw w1, w2
- ldr w5, [x22, #0x08]
- cmp w5, w1
- bne G_M33766_IG24
- mov w23, wzr
+G_M33766_IG14: ; bbWeight=0.50, gcrefRegs=0102 {x1 x8}, byrefRegs=0010 {x4}, byref, isz
+ sxtw w7, w2
+ ldr w9, [x8, #0x08]
+ cmp w9, w7
+ bne G_M33766_IG22
+ mov w7, wzr
cmp w2, #0
- ble G_M33766_IG25
- ;; size=28 bbWeight=0.50 PerfScore 3.52
-G_M33766_IG15: ; bbWeight=0.47, gcrefRegs=480000 {x19 x22}, byrefRegs=0010 {x4}, byref
- b G_M33766_IG20
- ;; size=4 bbWeight=0.47 PerfScore 0.47
-G_M33766_IG16: ; bbWeight=1.00, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19 x22] +[x3]
+ ble G_M33766_IG23
+ b G_M33766_IG19
+ ;; size=32 bbWeight=0.50 PerfScore 4.02
+G_M33766_IG15: ; bbWeight=1.00, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1 x8] +[x3]
; byrRegs -[x4]
ldr x2, [x3]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x2, x0
- beq G_M33766_IG23
+ beq G_M33766_IG21
;; size=24 bbWeight=1.00 PerfScore 5.99
-G_M33766_IG17: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
- str w1, [fp, #0x14] // [V01 arg1]
+G_M33766_IG16: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ str w1, [fp, #0x1C] // [V01 arg1]
mov x0, x3
; gcrRegs +[x0]
mov x1, x4
- ldr w2, [fp, #0x14] // [V01 arg1]
+ ldr w2, [fp, #0x1C] // [V01 arg1]
ldr x3, [x3]
; gcrRegs -[x3]
ldr x3, [x3, #0x48]
ldr x3, [x3, #0x20]
blr x3
; gcr arg pop 0
- mov x22, x0
- ; gcrRegs +[x22]
+ mov x8, x0
+ ; gcrRegs +[x8]
;; size=36 bbWeight=0 PerfScore 0.00
-G_M33766_IG18: ; bbWeight=1.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M33766_IG17: ; bbWeight=1.00, gcrefRegs=0100 {x8}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x22
+ mov x0, x8
; gcrRegs +[x0]
;; size=4 bbWeight=1.00 PerfScore 0.50
-G_M33766_IG19: ; bbWeight=1.00, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+G_M33766_IG18: ; bbWeight=1.00, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=20 bbWeight=1.00 PerfScore 5.99
-G_M33766_IG20: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0010 {x4}, gcvars, byref
- ; gcrRegs -[x0] +[x19]
+ ;; size=8 bbWeight=1.00 PerfScore 2.00
+G_M33766_IG19: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0102 {x1 x8}, byrefRegs=0010 {x4}, gcvars, byref
+ ; gcrRegs -[x0] +[x1]
; byrRegs +[x4]
- add x1, x22, #12
- ; byrRegs +[x1]
+ add x9, x8, #12
+ ; byrRegs +[x9]
;; size=4 bbWeight=0.47 PerfScore 0.24
-G_M33766_IG21: ; bbWeight=8.51, gcrefRegs=480000 {x19 x22}, byrefRegs=0012 {x1 x4}, byref, isz
- mov w5, w23
- ldrb w6, [x4, x5]
- lsl x5, x5, #1
- ldrh w5, [x1, x5]
- cmp w6, w5
- bne G_M33766_IG24
- add w23, w23, #1
- cmp w23, w2
- blt G_M33766_IG21
- ;; size=36 bbWeight=8.51 PerfScore 93.65
-G_M33766_IG22: ; bbWeight=0.47, gcrefRegs=400000 {x22}, byrefRegs=0010 {x4}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x1]
- b G_M33766_IG25
- ;; size=4 bbWeight=0.47 PerfScore 0.47
-G_M33766_IG23: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22]
- ; byrRegs -[x4]
- tbnz w1, #31, G_M33766_IG28
+G_M33766_IG20: ; bbWeight=8.51, gcrefRegs=0102 {x1 x8}, byrefRegs=0210 {x4 x9}, byref, isz
+ mov w10, w7
+ ldrb w11, [x4, x10]
...
@@ -11,10 +11,10 @@
;
; V00 arg0 [V00,T04] ( 9,500.49) ref -> x0 class-hnd single-def <int[,]>
;* V01 arg1 [V01 ] ( 0, 0 ) byref -> zero-ref single-def
-; V02 loc0 [V02,T17] ( 6,100.52) int -> x3
+; V02 loc0 [V02,T17] ( 5,100.52) int -> x3
; V03 loc1 [V03,T11] ( 2,199.00) int -> x10
; V04 loc2 [V04,T12] ( 2,199.00) int -> x11
-; V05 loc3 [V05,T20] ( 8, 99.54) int -> x4
+; V05 loc3 [V05,T20] ( 5, 99.54) int -> x4
; V06 loc4 [V06,T16] ( 6,101.02) int -> x2
; V07 loc5 [V07,T05] ( 6,399.00) int -> x1
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -95,13 +95,12 @@ G_M57584_IG07: ; bbWeight=99.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {},
G_M57584_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add w2, w2, #1
cmp w2, w3
- bgt G_M57584_IG11
- b G_M57584_IG04
- ;; size=16 bbWeight=0.50 PerfScore 1.50
+ ble G_M57584_IG04
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
G_M57584_IG09: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add w4, w4, #1
cmp w4, w3
- bgt G_M57584_IG12
+ bgt G_M57584_IG11
b G_M57584_IG03
;; size=16 bbWeight=0.01 PerfScore 0.03
G_M57584_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -109,20 +108,13 @@ G_M57584_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M57584_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- add w4, w4, #1
- cmp w4, w3
- ble G_M57584_IG03
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M57584_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0]
+G_M57584_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
add sp, sp, #64
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 24, PerfScore 3199.99, instruction count 57, allocated bytes for code 228 (MethodHash=862a1f0f) for method Benchstone.MDBenchI.MDAddArray2:BenchInner2(int[,],byref) (Tier1-OSR)
+; Total bytes of code 212, prolog size 24, PerfScore 3199.49, instruction count 53, allocated bytes for code 212 (MethodHash=862a1f0f) for method Benchstone.MDBenchI.MDAddArray2:BenchInner2(int[,],byref) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -133,7 +125,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -5,22 +5,22 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1235
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1235
; 5 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T06] ( 6, 3 ) ref -> x24 this class-hnd single-def <System.Text.Encoding>
; V01 arg1 [V01,T02] ( 7, 5 ) long -> x21 single-def
-; V02 arg2 [V02,T00] ( 9, 6.00) int -> x19 single-def
+; V02 arg2 [V02,T00] ( 11, 6.00) int -> x19 single-def
; V03 arg3 [V03,T01] ( 7, 5.00) long -> x20 single-def
; V04 arg4 [V04,T04] ( 7, 4.00) int -> x23 single-def
; V05 arg5 [V05,T03] ( 6, 5.00) ref -> x22 class-hnd single-def <System.Text.DecoderNLS>
-; V06 loc0 [V06,T08] ( 3, 2.00) int -> x6
-; V07 loc1 [V07 ] ( 5, 3.00) int -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op
+; V06 loc0 [V06,T08] ( 4, 2.00) int -> x6
+; V07 loc1 [V07 ] ( 6, 3.00) int -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T09] ( 2, 0.00) int -> x4
; V10 tmp2 [V10,T10] ( 2, 0.00) int -> x4
-; V11 tmp3 [V11,T07] ( 4, 3 ) int -> x0 "guarded devirt return temp"
+; V11 tmp3 [V11,T07] ( 5, 3 ) int -> x0 "guarded devirt return temp"
;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V13 tmp5 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -54,139 +54,31 @@ G_M965_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
; gcrRegs +[x22]
;; size=44 bbWeight=1 PerfScore 7.50
G_M965_IG02: ; bbWeight=1, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
- cbnz x22, G_M965_IG04
+ cbz x22, G_M965_IG17
+ tbnz w19, #31, G_M965_IG18
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M965_IG03: ; bbWeight=1, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
+ cbz x21, G_M965_IG11
;; size=4 bbWeight=1 PerfScore 1.00
-G_M965_IG03: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M965_IG04: ; bbWeight=1, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
- tbz w19, #31, G_M965_IG06
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M965_IG05: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M965_IG06: ; bbWeight=1, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
- cbnz x21, G_M965_IG08
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M965_IG07: ; bbWeight=0.00, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
- cmp w19, #0
- cset x4, eq
- tst w4, #255
- beq G_M965_IG20
- ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M965_IG08: ; bbWeight=1.00, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
- tbz w23, #31, G_M965_IG10
+G_M965_IG04: ; bbWeight=1.00, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
+ tbnz w23, #31, G_M965_IG19
;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M965_IG09: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M965_IG10: ; bbWeight=1.00, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
- cbnz x20, G_M965_IG12
+G_M965_IG05: ; bbWeight=1.00, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M965_IG10
;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M965_IG11: ; bbWeight=0.00, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
- cmp w23, #0
- cset x4, eq
- tst w4, #255
- beq G_M965_IG21
- ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M965_IG12: ; bbWeight=1.00, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
+G_M965_IG06: ; bbWeight=1.00, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
mov w6, wzr
str wzr, [fp, #0x28] // [V07 loc1]
ldr w4, [x22, #0x28]
- cbz w4, G_M965_IG15
+ cbnz w4, G_M965_IG15
;; size=16 bbWeight=1.00 PerfScore 5.50
-G_M965_IG13: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref
- mov x0, x24
- ; gcrRegs +[x0]
- mov x1, x21
- mov w2, w19
- mov x3, x20
- mov w4, w23
- ldr w5, [fp, #0x28] // [V07 loc1]
- mov x7, x22
- ; gcrRegs +[x7]
- movz x8, #0xD1FFAB1E // code for System.Text.Encoding:GetCharsWithFallback(ulong,int,ulong,int,int,int,System.Text.DecoderNLS):int:this
- movk x8, #0xD1FFAB1E LSL #16
- movk x8, #1 LSL #32
- ldr x8, [x8]
- blr x8
- ; gcrRegs -[x0 x7 x22 x24]
- ;; size=48 bbWeight=0 PerfScore 0.00
-G_M965_IG14: ; bbWeight=0, epilog, nogc, extend
- ldp x23, x24, [sp, #0x50]
- ldp x21, x22, [sp, #0x40]
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x60
- ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M965_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x22 x24]
+G_M965_IG07: ; bbWeight=1, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
ldr x4, [x24]
movz x5, #0xD1FFAB1E
movk x5, #0xD1FFAB1E LSL #16
movk x5, #1 LSL #32
cmp x4, x5
- beq G_M965_IG19
- ;; size=24 bbWeight=1 PerfScore 6.00
-G_M965_IG16: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref
- add x5, fp, #40 // [V07 loc1]
- mov x0, x24
- ; gcrRegs +[x0]
- mov x1, x21
- mov w2, w19
- mov x3, x20
- mov w4, w23
- ldr x6, [x24]
- ldr x6, [x6, #0x80]
- ldr x6, [x6, #0x28]
- blr x6
- ; gcrRegs -[x0]
- ;; size=40 bbWeight=0 PerfScore 0.00
-G_M965_IG17: ; bbWeight=1, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
- sxtw w6, w0
- ldr w1, [fp, #0x28] // [V07 loc1]
- cmp w1, w19
- bne G_M965_IG13
- str w19, [x22, #0x20]
- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M965_IG18: ; bbWeight=1, epilog, nogc, extend
- ldp x23, x24, [sp, #0x50]
- ldp x21, x22, [sp, #0x40]
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x60
- ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M965_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, gcvars, byref
+ bne G_M965_IG14
add x4, fp, #32 // [V23 tmp15]
add x5, fp, #24 // [V24 tmp16]
mov x0, x21
@@ -205,9 +97,37 @@ G_M965_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=1400000
sub x0, x0, x20
add x0, x0, x0, LSR #63
asr x0, x0, #1
- b G_M965_IG17
- ;; size=76 bbWeight=1 PerfScore 17.50
-G_M965_IG20: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref
+ sxtw w6, w0
+ ldr w1, [fp, #0x28] // [V07 loc1]
+ cmp w1, w19
+ bne G_M965_IG15
+ ;; size=112 bbWeight=1 PerfScore 26.50
+G_M965_IG08: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x24]
+ str w19, [x22, #0x20]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M965_IG09: ; bbWeight=1, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
+ ldp fp, lr, [sp], #0x60
+ ret lr
+ ;; size=20 bbWeight=1 PerfScore 5.00
+G_M965_IG10: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x24]
+ cmp w23, #0
+ cset x4, eq
+ tst w4, #255
+ bne G_M965_IG06
+ b G_M965_IG13
+ ;; size=20 bbWeight=0.00 PerfScore 0.00
+G_M965_IG11: ; bbWeight=0.00, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
+ cmp w19, #0
+ cset x4, eq
+ tst w4, #255
+ bne G_M965_IG04
+ ;; size=16 bbWeight=0.00 PerfScore 0.00
+G_M965_IG12: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -219,9 +139,9 @@ G_M965_IG20: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- b G_M965_IG08
+ b G_M965_IG04
;; size=48 bbWeight=0 PerfScore 0.00
-G_M965_IG21: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref
+G_M965_IG13: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -233,10 +153,95 @@ G_M965_IG21: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- b G_M965_IG12
+ b G_M965_IG06
+ ;; size=48 bbWeight=0 PerfScore 0.00
+G_M965_IG14: ; bbWeight=0, gcrefRegs=1400000 {x22 x24}, byrefRegs=0000 {}, byref, isz
+ add x5, fp, #40 // [V07 loc1]
+ mov x0, x24
+ ; gcrRegs +[x0]
+ mov x1, x21
+ mov w2, w19
+ mov x3, x20
+ mov w4, w23
+ ldr x6, [x24]
...
@@ -41,7 +41,7 @@ G_M48356_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, by
; byrRegs +[x1]
ldr w3, [x0, #0x08]
cmp w3, #2
- bls G_M48356_IG18
+ bls G_M48356_IG19
ldrh w4, [x0, #0x10]
ldrh w5, [x0, #0x0E]
add w6, w4, w5
@@ -49,96 +49,105 @@ G_M48356_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, by
cmp w3, w6
cset x6, gt
cmp w3, #3
- ble G_M48356_IG07
+ ble G_M48356_IG04
;; size=44 bbWeight=1 PerfScore 14.00
G_M48356_IG03: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz
cmp w5, #0
- ble G_M48356_IG07
- tbnz w5, #0, G_M48356_IG07
- cbnz w4, G_M48356_IG07
+ ble G_M48356_IG04
+ tbnz w5, #0, G_M48356_IG04
+ cbz w4, G_M48356_IG18
;; size=16 bbWeight=1.00 PerfScore 3.50
-G_M48356_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz
- cbnz w6, G_M48356_IG07
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M48356_IG05: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz
- mov w4, wzr
- mov w6, #3
- add w5, w5, #3
- cmp w5, #3
- ble G_M48356_IG14
- ;; size=20 bbWeight=1.00 PerfScore 2.99
-G_M48356_IG06: ; bbWeight=0.69, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref
- b G_M48356_IG09
- ;; size=4 bbWeight=0.69 PerfScore 0.69
-G_M48356_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48356_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
; byrRegs -[x1]
mov w0, wzr
;; size=4 bbWeight=1 PerfScore 0.50
-G_M48356_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M48356_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M48356_IG09: ; bbWeight=0.69, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, gcvars, byref
+G_M48356_IG06: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, gcvars, byref, isz
; gcrRegs +[x0]
; byrRegs +[x1]
+ mov w4, wzr
+ mov w6, #3
+ add w5, w5, #3
+ cmp w5, #3
+ ble G_M48356_IG17
+ ;; size=20 bbWeight=1.00 PerfScore 2.99
+G_M48356_IG07: ; bbWeight=0.69, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref
add x0, x0, #12
; gcrRegs -[x0]
; byrRegs +[x0]
;; size=4 bbWeight=0.69 PerfScore 0.35
-G_M48356_IG10: ; bbWeight=2.11, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
+G_M48356_IG08: ; bbWeight=2.11, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
add w7, w6, #1
cmp w7, w3
- bhs G_M48356_IG18
+ bhs G_M48356_IG19
ldrh w7, [x0, w7, UXTW #2]
cmp w6, w3
- bhs G_M48356_IG18
+ bhs G_M48356_IG19
ldrh w8, [x0, w6, UXTW #2]
cmp w8, w7
- bge G_M48356_IG17
+ bge G_M48356_IG16
;; size=36 bbWeight=2.11 PerfScore 23.24
-G_M48356_IG11: ; bbWeight=2.11, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
+G_M48356_IG09: ; bbWeight=2.11, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
cmp w4, w2
- bge G_M48356_IG07
+ bge G_M48356_IG04
;; size=8 bbWeight=2.11 PerfScore 3.17
-G_M48356_IG12: ; bbWeight=4.15, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
+G_M48356_IG10: ; bbWeight=4.15, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
add w9, w4, #1
strh w8, [x1, w4, UXTW #2]
add w8, w8, #1
cmp w8, w7
- blt G_M48356_IG16
+ blt G_M48356_IG15
;; size=20 bbWeight=4.15 PerfScore 14.53
-G_M48356_IG13: ; bbWeight=3.03, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
+G_M48356_IG11: ; bbWeight=3.03, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
add w6, w6, #2
cmp w6, w5
- mov w4, w9
- blt G_M48356_IG10
- ;; size=16 bbWeight=3.03 PerfScore 7.59
-G_M48356_IG14: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ blt G_M48356_IG14
+ ;; size=12 bbWeight=3.03 PerfScore 6.07
+G_M48356_IG12: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0-x1]
- mov w0, w4
+ mov w0, w9
;; size=4 bbWeight=0.92 PerfScore 0.46
-G_M48356_IG15: ; bbWeight=0.92, epilog, nogc, extend
+G_M48356_IG13: ; bbWeight=0.92, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.92 PerfScore 1.84
-G_M48356_IG16: ; bbWeight=2.08, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, gcvars, byref
+G_M48356_IG14: ; bbWeight=1.52, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, gcvars, byref
; byrRegs +[x0-x1]
mov w4, w9
- b G_M48356_IG11
+ b G_M48356_IG08
+ ;; size=8 bbWeight=1.52 PerfScore 2.28
+G_M48356_IG15: ; bbWeight=2.08, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref
+ mov w4, w9
+ b G_M48356_IG09
;; size=8 bbWeight=2.08 PerfScore 3.11
-G_M48356_IG17: ; bbWeight=1.06, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref
+G_M48356_IG16: ; bbWeight=1.06, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref
mov w9, w4
- b G_M48356_IG13
+ b G_M48356_IG11
;; size=8 bbWeight=1.06 PerfScore 1.58
-G_M48356_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48356_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0-x1]
+ mov w9, w4
+ b G_M48356_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M48356_IG18: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz
+ ; gcrRegs +[x0]
+ ; byrRegs +[x1]
+ cbz w6, G_M48356_IG06
+ b G_M48356_IG04
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M48356_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ; byrRegs -[x1]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 8, PerfScore 82.06, instruction count 57, allocated bytes for code 228 (MethodHash=a0de431b) for method System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
+; Total bytes of code 240, prolog size 8, PerfScore 83.88, instruction count 60, allocated bytes for code 240 (MethodHash=a0de431b) for method System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
@@ -149,7 +158,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -5,19 +5,19 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 28164
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 28164
; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 6, 5.72) byref -> [fp+0x58] this single-def
+; V00 this [V00,T00] ( 7, 5.72) byref -> [fp+0x58] this single-def
; V01 arg1 [V01,T01] ( 9, 5.63) int -> x20 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T03] ( 6, 3.02) int -> x0
+; V03 loc1 [V03,T03] ( 7, 3.02) int -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T10] ( 2, 0.00) int -> x0
;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref
;* V07 tmp3 [V07 ] ( 0, 0 ) byref -> zero-ref single-def
-; V08 tmp4 [V08,T07] ( 3, 2 ) int -> x22
+; V08 tmp4 [V08,T07] ( 3, 2 ) int -> x23
; V09 tmp5 [V09,T11] ( 3, 0.84) int -> x0
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -26,7 +26,7 @@
; V14 FramesRoot [V14,T05] ( 6, 2.97) long -> x21 "Pinvoke FrameListRoot"
; V15 PInvokeFrame [V15 ] ( 8, 4.97) struct (72) [fp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V16 cse0 [V16,T02] ( 6, 3.63) int -> x0 "CSE - aggressive"
-; V17 cse1 [V17,T04] ( 3, 3 ) int -> x0 "CSE - aggressive"
+; V17 cse1 [V17,T04] ( 5, 3 ) int -> x22 "CSE - aggressive"
; V18 cse2 [V18,T06] ( 4, 2.30) int -> x1 "CSE - aggressive"
; V19 rat0 [V19,T08] ( 3, 1.68) int -> x0 "ReplaceWithLclVar is creating a new local variable"
; V20 rat1 [V20,T09] ( 3, 1.68) int -> x1 "ReplaceWithLclVar is creating a new local variable"
@@ -55,62 +55,34 @@ G_M55570_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
mov x0, fp
str x0, [fp, #0x48] // [V15 PInvokeFrame+0x38]
cmn w20, #1
- bge G_M55570_IG04
+ blt G_M55570_IG29
;; size=40 bbWeight=1 PerfScore 7.00
-G_M55570_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- movz x0, #8
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- movz x1, #8
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M55570_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- tbnz w20, #31, G_M55570_IG06
+G_M55570_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ tbz w20, #31, G_M55570_IG15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M55570_IG05: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- cmp w20, #10
- cset x0, ge
- tst w0, #255
- beq G_M55570_IG30
- ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M55570_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M55570_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
str x19, [fp, #0x58] // [V00 this]
; GC ptr vars +{V00}
ldr w0, [x19]
cmp w0, #10
- blt G_M55570_IG13
+ blt G_M55570_IG16
;; size=16 bbWeight=1.00 PerfScore 5.51
-G_M55570_IG07: ; bbWeight=0.53, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M55570_IG05: ; bbWeight=0.53, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x19]
cmp w0, w20
ccmp w20, #0, nc, ge
- bge G_M55570_IG09
+ bge G_M55570_IG07
sub w1, w0, #10
- tbnz w1, #0, G_M55570_IG13
+ tbnz w1, #0, G_M55570_IG16
;; size=20 bbWeight=0.53 PerfScore 1.86
-G_M55570_IG08: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M55570_IG06: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w0, w20
- blt G_M55570_IG11
+ blt G_M55570_IG08
;; size=8 bbWeight=0.28 PerfScore 0.42
-G_M55570_IG09: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M55570_IG11
+G_M55570_IG07: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tbz w20, #31, G_M55570_IG30
;; size=4 bbWeight=0.28 PerfScore 0.28
-G_M55570_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, #1
- movz x1, #0xD1FFAB1E // code for <unknown method>
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- b G_M55570_IG18
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M55570_IG11: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M55570_IG08: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sub w0, w0, #10
add w0, w0, w0, LSR #31
asr w0, w0, #1
@@ -123,63 +95,115 @@ G_M55570_IG11: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov w2, #5
msub w0, w1, w2, w0
cmp w0, #4
- bne G_M55570_IG25
+ beq G_M55570_IG14
;; size=52 bbWeight=0.28 PerfScore 3.51
-G_M55570_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55570_IG09: ; bbWeight=0.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ str x0, [fp, #0x28] // [V15 PInvokeFrame+0x18]
+ adr x0, [G_M55570_IG12]
+ str x0, [fp, #0x40] // [V15 PInvokeFrame+0x30]
+ add x0, fp, #24 // [V15 PInvokeFrame+0x08]
+ ; byrRegs +[x0]
+ str x0, [x21, #0x10]
+ strb wzr, [x21, #0x0C]
+ ;; size=36 bbWeight=0.24 PerfScore 1.58
+G_M55570_IG10: ; bbWeight=0.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ ;; size=12 bbWeight=0.24 PerfScore 0.37
+G_M55570_IG11: ; bbWeight=0.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ blr x0
+ ;; size=4 bbWeight=0.24 PerfScore 0.24
+G_M55570_IG12: ; bbWeight=0.24, isz, extend
+ mov w0, #1
+ strb w0, [x21, #0x0C]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ ldr w0, [x0]
+ cmp w0, #0
+ beq G_M55570_IG13
+ bl CORINFO_HELP_STOP_FOR_GC
+ ;; size=36 bbWeight=0.24 PerfScore 2.07
+G_M55570_IG13: ; bbWeight=0.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x0, [fp, #0x20] // [V15 PInvokeFrame+0x10]
+ ; byrRegs +[x0]
+ str x0, [x21, #0x10]
+ b G_M55570_IG21
+ ;; size=12 bbWeight=0.24 PerfScore 0.97
+G_M55570_IG14: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x0]
mov w0, wzr
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- b G_M55570_IG18
+ b G_M55570_IG21
;; size=28 bbWeight=0.04 PerfScore 0.25
-G_M55570_IG13: ; bbWeight=0.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M55570_IG15: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
+ ; byrRegs +[x19]
+ ; GC ptr vars -{V00}
+ cmp w20, #10
+ cset x0, ge
+ tst w0, #255
+ beq G_M55570_IG31
+ b G_M55570_IG04
+ ;; size=20 bbWeight=0.00 PerfScore 0.00
+G_M55570_IG16: ; bbWeight=0.72, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[x19]
+ ; GC ptr vars +{V00}
bl <unknown method>
ldr x19, [fp, #0x58] // [V00 this]
; byrRegs +[x19]
ldr w1, [x19]
cmp w1, #30
- bgt G_M55570_IG16
+ bgt G_M55570_IG18
;; size=20 bbWeight=0.72 PerfScore 5.41
-G_M55570_IG14: ; bbWeight=0.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M55570_IG17: ; bbWeight=0.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x19]
mov w2, #1
lsl w2, w2, w1
cmp w2, w0
- bge G_M55570_IG16
+ blt G_M55570_IG26
;; size=16 bbWeight=0.72 PerfScore 1.79
-G_M55570_IG15: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, #1
- lsl w0, w0, w1
- ;; size=8 bbWeight=0.14 PerfScore 0.14
-G_M55570_IG16: ; bbWeight=0.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M55570_IG18: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w0, #0xD1FFAB1E
- blt G_M55570_IG23
- ;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M55570_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x1, #0xD1FFAB1E // code for <unknown method>
+ bge G_M55570_IG27
+ ;; size=8 bbWeight=0.58 PerfScore 0.87
+G_M55570_IG19: ; bbWeight=0.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
- ldr x1, [x1]
+ ;; size=12 bbWeight=0.72 PerfScore 1.08
+G_M55570_IG20: ; bbWeight=0.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
blr x1
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M55570_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ ldr w0, [x0]
+ cbnz w0, G_M55570_IG25
+ ;; size=24 bbWeight=0.72 PerfScore 4.69
+G_M55570_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x19, [fp, #0x58] // [V00 this]
; byrRegs +[x19]
- ldr w0, [x19]
- movn w1, #0xD1FFAB1E LSL #16
- cmp w0, w1
- bne G_M55570_IG22
+ ldr w22, [x19]
+ movn w0, #0xD1FFAB1E LSL #16
+ cmp w22, w0
+ beq G_M55570_IG28
;; size=20 bbWeight=1 PerfScore 7.00
-G_M55570_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
+G_M55570_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref
; GC ptr vars -{V00}
- mov w22, #10
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M55570_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- str w22, [x19]
+ add w23, w22, #1
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M55570_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ str w23, [x19]
;; size=4 bbWeight=1 PerfScore 1.00
-G_M55570_IG21: ; bbWeight=1, epilog, nogc, extend
...
@@ -78,10 +78,8 @@ G_M49441_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M49441_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M49441_IG04
- cbz x1, G_M49441_IG07
- b G_M49441_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M49441_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M49441_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -92,31 +90,29 @@ G_M49441_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M49441_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M49441_IG07
ldr w3, [x1, #0x08]
- cbz w3, G_M49441_IG07
+ cbnz w3, G_M49441_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
+G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1]
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M49441_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x1]
add x4, x1, #12
; byrRegs +[x4]
mov x5, x4
; byrRegs +[x5]
sxtw w6, w3
- b G_M49441_IG08
- ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1]
- ; byrRegs -[x4-x5]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M49441_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0030 {x4 x5}, gcvars, byref, isz
- ; gcrRegs +[x1]
- ; byrRegs +[x4-x5]
cmp w6, #0
ble G_M49441_IG09
ldrh w5, [x5]
; byrRegs -[x5]
cmp w5, #47
beq G_M49441_IG04
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M49441_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
; gcrRegs -[x1]
add x0, x0, #12
@@ -139,7 +135,7 @@ G_M49441_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 132, prolog size 8, PerfScore 18.50, instruction count 33, allocated bytes for code 132 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 17.50, instruction count 31, allocated bytes for code 124 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -150,7 +146,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,90 +9,84 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 12, 8.50) byref -> x0 this single-def
-; V01 loc0 [V01,T01] ( 8, 5 ) ubyte -> x19
+; V01 loc0 [V01,T01] ( 8, 5 ) ubyte -> x1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T11] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V04 tmp2 [V04,T07] ( 3, 1.50) int -> x1
; V05 tmp3 [V05,T08] ( 3, 1.50) int -> x1
;* V06 tmp4 [V06,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp5 [V07,T06] ( 2, 2 ) byref -> x1 single-def "Inlining Arg"
+; V07 tmp5 [V07,T06] ( 2, 2 ) byref -> x3 single-def "Inlining Arg"
;* V08 tmp6 [V08,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp7 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V10 tmp8 [V10,T12] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V11 cse0 [V11,T05] ( 5, 2.50) int -> x1 "CSE - aggressive"
-; V12 cse1 [V12,T02] ( 8, 4 ) ref -> x21 multi-def "CSE - aggressive"
-; V13 cse2 [V13,T04] ( 5, 3.50) ref -> x1 multi-def "CSE - aggressive"
-; V14 cse3 [V14,T03] ( 6, 4 ) ref -> x20 "CSE - aggressive"
+; V11 cse0 [V11,T05] ( 5, 2.50) int -> x3 "CSE - aggressive"
+; V12 cse1 [V12,T02] ( 8, 4 ) ref -> x4 multi-def "CSE - aggressive"
+; V13 cse2 [V13,T04] ( 5, 3.50) ref -> x3 multi-def "CSE - aggressive"
+; V14 cse3 [V14,T03] ( 6, 4 ) ref -> x2 "CSE - aggressive"
;
; Lcl frame size = 8
G_M35532_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=16 bbWeight=1 PerfScore 3.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M35532_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
- mov w19, #1
- ldr x20, [x0]
- ; gcrRegs +[x20]
- cbz x20, G_M35532_IG04
+ mov w1, #1
+ ldr x2, [x0]
+ ; gcrRegs +[x2]
+ cbz x2, G_M35532_IG04
;; size=12 bbWeight=1 PerfScore 4.50
-G_M35532_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- ldr x1, [x0, #0x10]
- ; gcrRegs +[x1]
- cbnz x1, G_M35532_IG04
- ldr x21, [x0, #0x08]
- ; gcrRegs +[x21]
- cmp x21, #0
- csel w19, w19, wzr, ne
+G_M35532_IG03: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ ldr x3, [x0, #0x10]
+ ; gcrRegs +[x3]
+ cbnz x3, G_M35532_IG04
+ ldr x4, [x0, #0x08]
+ ; gcrRegs +[x4]
+ cmp x4, #0
+ csel w1, w1, wzr, ne
;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M35532_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- ; gcrRegs -[x1 x21]
- ldr x1, [x0, #0x10]
- ; gcrRegs +[x1]
- cbz x1, G_M35532_IG06
+G_M35532_IG04: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ ; gcrRegs -[x3-x4]
+ ldr x3, [x0, #0x10]
+ ; gcrRegs +[x3]
+ cbz x3, G_M35532_IG06
;; size=8 bbWeight=1 PerfScore 4.00
-G_M35532_IG05: ; bbWeight=0.50, gcrefRegs=100002 {x1 x20}, byrefRegs=0001 {x0}, byref, isz
- ldr x21, [x0, #0x08]
- ; gcrRegs +[x21]
- cbz x21, G_M35532_IG06
- ldr w1, [x1, #0x08]
- ; gcrRegs -[x1]
- ldr w2, [x21, #0x08]
- cmp w1, w2
+G_M35532_IG05: ; bbWeight=0.50, gcrefRegs=000C {x2 x3}, byrefRegs=0001 {x0}, byref, isz
+ ldr x4, [x0, #0x08]
+ ; gcrRegs +[x4]
+ cbz x4, G_M35532_IG06
+ ldr w3, [x3, #0x08]
+ ; gcrRegs -[x3]
+ ldr w4, [x4, #0x08]
+ ; gcrRegs -[x4]
+ cmp w3, w4
bne G_M35532_IG06
- mov w19, wzr
+ mov w1, wzr
b G_M35532_IG07
;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M35532_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- ; gcrRegs -[x21]
- cbnz w19, G_M35532_IG14
+G_M35532_IG06: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ cbnz w1, G_M35532_IG14
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35532_IG07: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- add x1, x0, #24
- ; byrRegs +[x1]
- ldr w1, [x1, #0x40]
- ; byrRegs -[x1]
- cmp w1, #1
+G_M35532_IG07: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ add x3, x0, #24
+ ; byrRegs +[x3]
+ ldr w3, [x3, #0x40]
+ ; byrRegs -[x3]
+ cmp w3, #1
beq G_M35532_IG08
- cmp w1, #3
+ cmp w3, #3
beq G_M35532_IG08
- cmp w1, #2
+ cmp w3, #2
beq G_M35532_IG08
- cmp w1, #4
- beq G_M35532_IG08
- ldr w1, [x0, #0x58]
- cmp w1, #5
- bne G_M35532_IG14
- b G_M35532_IG11
- ;; size=56 bbWeight=0.50 PerfScore 7.50
-G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- cbz x20, G_M35532_IG09
- ldr w1, [x20, #0x08]
+ cmp w3, #4
+ bne G_M35532_IG11
+ ;; size=40 bbWeight=0.50 PerfScore 4.75
+G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ cbz x2, G_M35532_IG09
+ ldr w1, [x2, #0x08]
ldr x2, [x0, #0x28]
- ; gcrRegs +[x2]
ldr w2, [x2, #0x08]
; gcrRegs -[x2]
cmp w1, w2
@@ -100,34 +94,37 @@ G_M35532_IG08: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x
b G_M35532_IG10
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M35532_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- ; gcrRegs -[x20]
mov w1, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M35532_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- uxtb w19, w1
+ uxtb w1, w1
b G_M35532_IG14
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M35532_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
- ; gcrRegs +[x20]
- ldr x21, [x0, #0x08]
- ; gcrRegs +[x21]
- cbz x21, G_M35532_IG14
- cbz x20, G_M35532_IG12
- ldr w1, [x20, #0x08]
- ldr w2, [x21, #0x08]
+G_M35532_IG11: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+ ; gcrRegs +[x2]
+ ldr w3, [x0, #0x58]
+ cmp w3, #5
+ bne G_M35532_IG14
+ ldr x4, [x0, #0x08]
+ ; gcrRegs +[x4]
+ cbz x4, G_M35532_IG14
+ cbz x2, G_M35532_IG12
+ ldr w1, [x2, #0x08]
+ ldr w2, [x4, #0x08]
+ ; gcrRegs -[x2]
cmp w1, w2
cset x1, ne
b G_M35532_IG13
- ;; size=32 bbWeight=0.50 PerfScore 6.50
+ ;; size=44 bbWeight=0.50 PerfScore 8.75
G_M35532_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- ; gcrRegs -[x20-x21]
+ ; gcrRegs -[x4]
mov w1, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M35532_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- uxtb w19, w1
+ uxtb w1, w1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M35532_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- cbnz w19, G_M35532_IG16
+ cbnz w1, G_M35532_IG16
add x0, x0, #24
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -135,12 +132,11 @@ G_M35532_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
ldr x1, [x1]
;; size=24 bbWeight=1 PerfScore 6.00
G_M35532_IG15: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x1
; gcr arg pop 0
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M35532_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x0]
movz x0, #0xD1FFAB1E
@@ -177,7 +173,7 @@ G_M35532_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 348, prolog size 16, PerfScore 55.50, instruction count 87, allocated bytes for code 348 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (Tier1)
+; Total bytes of code 336, prolog size 12, PerfScore 53.00, instruction count 84, allocated bytes for code 336 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (Tier1)
; ============================================================
Unwind Info:
@@ -188,7 +184,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 87 (0x00057) Actual length = 348 (0x00015c)
+ Function Length : 84 (0x00054) Actual length = 336 (0x000150)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -196,9 +192,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -154,10 +154,8 @@ G_M53601_IG02: ; bbWeight=1, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=00
;; size=4 bbWeight=1 PerfScore 1.00
G_M53601_IG03: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x0, #0x08]
- cbz w20, G_M53601_IG04
- cbz x1, G_M53601_IG06
- b G_M53601_IG05
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w20, G_M53601_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M53601_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -174,11 +172,10 @@ G_M53601_IG04: ; bbWeight=0.50, gcrefRegs=80006 {x1 x2 x19}, byrefRegs=00
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M53601_IG05: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x19]
+ cbz x1, G_M53601_IG06
ldr w21, [x1, #0x08]
- cbz w21, G_M53601_IG06
- cbz x2, G_M53601_IG08
- b G_M53601_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w21, G_M53601_IG07
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M53601_IG06: ; bbWeight=0.50, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, x2
@@ -194,11 +191,10 @@ G_M53601_IG06: ; bbWeight=0.50, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=00
;; size=32 bbWeight=0.50 PerfScore 3.75
G_M53601_IG07: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x19]
+ cbz x2, G_M53601_IG08
ldr w22, [x2, #0x08]
- cbz w22, G_M53601_IG08
- cbz x19, G_M53601_IG10
- b G_M53601_IG09
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w22, G_M53601_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M53601_IG08: ; bbWeight=0.50, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
mov x2, x19
@@ -213,16 +209,12 @@ G_M53601_IG08: ; bbWeight=0.50, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=00
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M53601_IG09: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x19]
+ cbz x19, G_M53601_IG10
ldr w23, [x19, #0x08]
- cbz w23, G_M53601_IG10
- add x3, x19, #12
- ; byrRegs +[x3]
- sxtw w4, w23
- b G_M53601_IG11
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ cbnz w23, G_M53601_IG11
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M53601_IG10: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- ; byrRegs -[x3]
movz x3, #0xD1FFAB1E // code for System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
@@ -231,9 +223,11 @@ G_M53601_IG10: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000
; gcrRegs -[x1-x2]
b G_M53601_IG15
;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M53601_IG11: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0008 {x3}, byref, isz
+G_M53601_IG11: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x19]
+ add x3, x19, #12
; byrRegs +[x3]
+ sxtw w4, w23
cmp w4, #0
ble G_M53601_IG12
ldrh w3, [x3]
@@ -242,7 +236,7 @@ G_M53601_IG11: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs
bne G_M53601_IG12
mov x0, x19
b G_M53601_IG15
- ;; size=28 bbWeight=0.50 PerfScore 3.75
+ ;; size=36 bbWeight=0.50 PerfScore 4.25
G_M53601_IG12: ; bbWeight=0.50, gcrefRegs=80007 {x0 x1 x2 x19}, byrefRegs=0000 {}, byref, isz
add x24, x2, #12
; byrRegs +[x24]
@@ -331,7 +325,7 @@ G_M53601_IG15: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
-; Total bytes of code 476, prolog size 24, PerfScore 65.75, instruction count 119, allocated bytes for code 476 (MethodHash=75ef2e9e) for method System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
+; Total bytes of code 460, prolog size 24, PerfScore 63.75, instruction count 115, allocated bytes for code 460 (MethodHash=75ef2e9e) for method System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -342,7 +336,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 119 (0x00077) Actual length = 476 (0x0001dc)
+ Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -17,7 +17,7 @@
; V06 loc4 [V06,T06] ( 7, 11 ) int -> registers
; V07 loc5 [V07,T12] ( 4, 2.50) long -> registers
; V08 loc6 [V08,T13] ( 4, 2.50) int -> registers
-; V09 loc7 [V09,T14] ( 3, 1.50) int -> x0
+; V09 loc7 [V09,T14] ( 3, 1.50) int -> x1
; V10 loc8 [V10,T15] ( 3, 1.50) long -> x0
; V11 loc9 [V11,T16] ( 2, 1 ) long -> x4
; V12 loc10 [V12,T17] ( 2, 1 ) int -> x5
@@ -75,7 +75,7 @@ G_M9821_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=4 PerfScore 6.00
G_M9821_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w2, #10
- bhs G_M9821_IG16
+ bhs G_M9821_IG17
ubfiz x1, x2, #2, #32
movz x7, #0xD1FFAB1E
movk x7, #0xD1FFAB1E LSL #16
@@ -110,17 +110,17 @@ G_M9821_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sxtw w5, w4
sub w2, w2, #9
cmp w2, #0
- bgt G_M9821_IG13
+ bgt G_M9821_IG10
;; size=76 bbWeight=4 PerfScore 92.00
G_M9821_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sub w0, w5, w0
- cbz w0, G_M9821_IG14
- cmp w0, w5
- bls G_M9821_IG11
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M9821_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- neg w3, w3
- ;; size=4 bbWeight=0.50 PerfScore 0.25
+ sub w1, w5, w0
+ cbz w1, G_M9821_IG15
+ b G_M9821_IG13
+ ;; size=12 bbWeight=0.50 PerfScore 1.25
+G_M9821_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov x4, x7
+ b G_M9821_IG04
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M9821_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w3
;; size=4 bbWeight=1 PerfScore 0.50
@@ -128,28 +128,32 @@ G_M9821_IG12: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M9821_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov x4, x7
- b G_M9821_IG04
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M9821_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M9821_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp w1, w5
+ bls G_M9821_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M9821_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ neg w3, w3
+ b G_M9821_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M9821_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sub x0, x7, x6
- cbnz x0, G_M9821_IG15
+ cbnz x0, G_M9821_IG16
mov w3, wzr
b G_M9821_IG11
;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M9821_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M9821_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x0, x7
bls G_M9821_IG11
- b G_M9821_IG10
+ b G_M9821_IG14
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M9821_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M9821_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 292, prolog size 8, PerfScore 149.25, instruction count 73, allocated bytes for code 292 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
+; Total bytes of code 300, prolog size 8, PerfScore 150.25, instruction count 75, allocated bytes for code 300 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
; ============================================================
Unwind Info:
@@ -160,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 292 (0x000124)
+ Function Length : 75 (0x0004b) Actual length = 300 (0x00012c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -22,26 +22,20 @@ G_M65033_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x0C]
cmp w1, #1
- beq G_M65033_IG05
+ beq G_M65033_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M65033_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
cmp w1, #2
- bne G_M65033_IG07
+ bne G_M65033_IG08
ldr w1, [x0, #0x10]
add w1, w1, #1
str w1, [x0, #0x10]
ldr w2, [x0, #0x18]
cmp w1, w2
- beq G_M65033_IG07
- mov w0, #1
- ; gcrRegs -[x0]
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M65033_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
+ beq G_M65033_IG08
+ b G_M65033_IG06
+ ;; size=36 bbWeight=0.50 PerfScore 5.75
+G_M65033_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w1, [x0, #0x14]
str w1, [x0, #0x10]
mov w1, #2
@@ -49,23 +43,30 @@ G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov w0, #1
; gcrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M65033_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M65033_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M65033_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M65033_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movn w1, #0
str w1, [x0, #0x0C]
mov w0, wzr
; gcrRegs -[x0]
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 112, prolog size 8, PerfScore 18.50, instruction count 28, allocated bytes for code 112 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 19.00, instruction count 29, allocated bytes for code 116 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -76,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -13,59 +13,69 @@
; V02 arg2 [V02,T07] ( 10, 91 ) ref -> x2 class-hnd single-def <int[,,]>
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
; V04 loc1 [V04,T10] ( 7, 48 ) int -> x5
-; V05 loc2 [V05,T09] ( 7, 60 ) int -> registers
+; V05 loc2 [V05,T09] ( 7, 60 ) int -> x4
; V06 loc3 [V06,T08] ( 7, 90 ) int -> x3
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T01] ( 3, 96 ) int -> x13 "MD array shared temp"
-; V09 tmp2 [V09,T02] ( 3, 96 ) int -> x12 "MD array shared temp"
-; V10 tmp3 [V10,T03] ( 3, 96 ) int -> x12 "MD array shared temp"
-; V11 tmp4 [V11,T04] ( 3, 96 ) int -> x14 "MD array shared temp"
-; V12 tmp5 [V12,T05] ( 3, 96 ) int -> x12 "MD array shared temp"
-; V13 tmp6 [V13,T06] ( 3, 96 ) int -> x15 "MD array shared temp"
-; V14 cse0 [V14,T16] ( 3, 24.01) int -> x7 hoist "CSE - aggressive"
-; V15 cse1 [V15,T20] ( 3, 11 ) int -> x4 hoist "CSE - aggressive"
-; V16 cse2 [V16,T19] ( 3, 18 ) int -> x3 "CSE - aggressive"
-; V17 cse3 [V17,T17] ( 2, 20 ) int -> x10 hoist "CSE - aggressive"
-; V18 cse4 [V18,T25] ( 2, 0.02) int -> x7 hoist "CSE - aggressive"
-; V19 cse5 [V19,T23] ( 3, 2.02) int -> x6 hoist "CSE - aggressive"
-; V20 cse6 [V20,T22] ( 3, 4 ) int -> x10 hoist "CSE - aggressive"
-; V21 cse7 [V21,T24] ( 2, 1.01) int -> x9 hoist "CSE - moderate"
-; V22 cse8 [V22,T21] ( 2, 8.01) int -> x8 hoist "CSE - aggressive"
-; V23 cse9 [V23,T18] ( 2, 20 ) int -> x11 hoist "CSE - aggressive"
-; V24 cse10 [V24,T11] ( 3, 48 ) int -> x14 "CSE - aggressive"
-; V25 cse11 [V25,T12] ( 3, 48 ) int -> x14 "CSE - aggressive"
-; V26 cse12 [V26,T13] ( 3, 48 ) int -> x15 "CSE - aggressive"
-; V27 cse13 [V27,T14] ( 3, 48 ) int -> x12 "CSE - aggressive"
+; V08 tmp1 [V08,T01] ( 3, 96 ) int -> x8 "MD array shared temp"
+; V09 tmp2 [V09,T02] ( 3, 96 ) int -> x10 "MD array shared temp"
+; V10 tmp3 [V10,T03] ( 3, 96 ) int -> x10 "MD array shared temp"
+; V11 tmp4 [V11,T04] ( 3, 96 ) int -> x9 "MD array shared temp"
+; V12 tmp5 [V12,T05] ( 3, 96 ) int -> x10 "MD array shared temp"
+; V13 tmp6 [V13,T06] ( 3, 96 ) int -> x11 "MD array shared temp"
+; V14 cse0 [V14,T16] ( 3, 24.01) int -> x21 hoist "CSE - aggressive"
+; V15 cse1 [V15,T20] ( 3, 11 ) int -> x25 hoist "CSE - aggressive"
+; V16 cse2 [V16,T19] ( 3, 18 ) int -> x23 "CSE - aggressive"
+; V17 cse3 [V17,T17] ( 2, 20 ) int -> x6 hoist "CSE - aggressive"
+; V18 cse4 [V18,T25] ( 2, 0.02) int -> x6 hoist "CSE - aggressive"
+; V19 cse5 [V19,T23] ( 3, 2.02) int -> x19 hoist "CSE - aggressive"
+; V20 cse6 [V20,T22] ( 3, 4 ) int -> x24 hoist "CSE - aggressive"
+; V21 cse7 [V21,T24] ( 2, 1.01) int -> x22 hoist "CSE - moderate"
+; V22 cse8 [V22,T21] ( 2, 8.01) int -> x20 hoist "CSE - aggressive"
+; V23 cse9 [V23,T18] ( 2, 20 ) int -> x7 hoist "CSE - aggressive"
+; V24 cse10 [V24,T11] ( 3, 48 ) int -> x9 "CSE - aggressive"
+; V25 cse11 [V25,T12] ( 3, 48 ) int -> x9 "CSE - aggressive"
+; V26 cse12 [V26,T13] ( 3, 48 ) int -> x11 "CSE - aggressive"
+; V27 cse13 [V27,T14] ( 3, 48 ) int -> x10 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M4144_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x50]!
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ str x25, [sp, #0x48]
mov fp, sp
- ldr w0, [fp, #0x5C]
- ldp x2, x1, [fp, #0x48]
+ ldr w0, [fp, #0x9C]
+ ldp x2, x1, [fp, #0x88]
; gcrRegs +[x1-x2]
- ldp w4, w5, [fp, #0x3C]
- ldr w3, [fp, #0x38]
- ;; size=24 bbWeight=0.01 PerfScore 0.11
+ ldp w4, w5, [fp, #0x7C]
+ ldr w3, [fp, #0x78]
+ ;; size=40 bbWeight=0.01 PerfScore 0.14
G_M4144_IG02: ; bbWeight=0.01, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ldr w6, [x1, #0x24]
- ldp w8, w7, [x1, #0x14]
- add w7, w6, w7
- sub w7, w7, #1
- ldr w9, [x1, #0x10]
- b G_M4144_IG12
+ ldr w19, [x1, #0x24]
+ ldp w20, w6, [x1, #0x14]
+ add w6, w19, w6
+ sub w21, w6, #1
+ ldr w22, [x1, #0x10]
+ b G_M4144_IG11
;; size=24 bbWeight=0.01 PerfScore 0.11
-G_M4144_IG03: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- sxtw w5, w10
- cmp w4, w5
- bge G_M4144_IG07
+G_M4144_IG03: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ ldr w24, [x1, #0x1C]
+ add w3, w24, w22
+ sub w25, w3, #1
+ b G_M4144_IG09
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M4144_IG04: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+ sxtw w5, w24
+ cmp w25, w5
+ bge G_M4144_IG08
;; size=12 bbWeight=2 PerfScore 4.00
-G_M4144_IG04: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4144_IG05: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
sub w0, w0, #1
- cbnz w0, G_M4144_IG03
+ cbnz w0, G_M4144_IG04
;; size=8 bbWeight=8 PerfScore 12.00
-G_M4144_IG05: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+G_M4144_IG06: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
mov x1, x2
@@ -78,115 +88,109 @@ G_M4144_IG05: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, by
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 6.50
-G_M4144_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+G_M4144_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x25, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x50
add sp, sp, #80
ret lr
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M4144_IG07: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=1 PerfScore 7.50
+G_M4144_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1-x2]
- ldr w11, [x1, #0x20]
- cmp w3, w11
+ ldr w4, [x1, #0x20]
+ cmp w23, w4
bge G_M4144_IG10
;; size=12 bbWeight=2 PerfScore 9.00
-G_M4144_IG08: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4144_IG09: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
add w5, w5, #1
- cmp w4, w5
- bge G_M4144_IG07
- ;; size=12 bbWeight=8 PerfScore 16.00
-G_M4144_IG09: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- b G_M4144_IG04
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M4144_IG10: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- mov w4, w11
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M4144_IG11: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- sxtw w3, w6
+ cmp w25, w5
+ bge G_M4144_IG08
+ b G_M4144_IG05
+ ;; size=16 bbWeight=8 PerfScore 24.00
+G_M4144_IG10: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ sxtw w3, w19
;; size=4 bbWeight=2 PerfScore 1.00
-G_M4144_IG12: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- cmp w7, w3
- blt G_M4144_IG15
+G_M4144_IG11: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+ cmp w21, w3
+ blt G_M4144_IG14
;; size=8 bbWeight=8 PerfScore 12.00
-G_M4144_IG13: ; bbWeight=4, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ldr w10, [x2, #0x1C]
- sub w10, w5, w10
- ldr w11, [x2, #0x10]
+G_M4144_IG12: ; bbWeight=4, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ ldr w6, [x2, #0x1C]
+ sub w6, w5, w6
+ ldr w7, [x2, #0x10]
;; size=12 bbWeight=4 PerfScore 26.00
-G_M4144_IG14: ; bbWeight=16, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- sxtw w13, w10
- cmp w13, w11
- bhs G_M4144_IG17
- ldr w14, [x2, #0x14]
- ldr w12, [x2, #0x20]
- sub w12, w4, w12
- cmp w12, w14
- bhs G_M4144_IG17
- madd w13, w13, w14, w12
- ldr w14, [x2, #0x18]
- ldr w12, [x2, #0x24]
- sub w12, w3, w12
- cmp w12, w14
- bhs G_M4144_IG17
- madd w13, w13, w14, w12
- ubfiz x13, x13, #2, #32
- add x13, x13, #40
- ldr w14, [x1, #0x1C]
- sub w14, w5, w14
- ldp w12, w15, [x1, #0x10]
- cmp w14, w12
- bhs G_M4144_IG17
- ldr w12, [x1, #0x20]
- sub w12, w4, w12
- cmp w12, w15
- bhs G_M4144_IG17
- madd w14, w14, w15, w12
- ldr w12, [x1, #0x18]
- ldr w15, [x1, #0x24]
- sub w15, w3, w15
- cmp w15, w12
- bhs G_M4144_IG17
- madd w14, w14, w12, w15
- ubfiz x14, x14, #2, #32
- add x14, x14, #40
- ldr w14, [x1, x14]
- str w14, [x2, x13]
+G_M4144_IG13: ; bbWeight=16, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+ sxtw w8, w6
+ cmp w8, w7
+ bhs G_M4144_IG15
+ ldr w9, [x2, #0x14]
+ ldr w10, [x2, #0x20]
+ sub w10, w4, w10
+ cmp w10, w9
+ bhs G_M4144_IG15
+ madd w8, w8, w9, w10
+ ldr w9, [x2, #0x18]
+ ldr w10, [x2, #0x24]
+ sub w10, w3, w10
+ cmp w10, w9
+ bhs G_M4144_IG15
+ madd w8, w8, w9, w10
+ ubfiz x8, x8, #2, #32
+ add x8, x8, #40
+ ldr w9, [x1, #0x1C]
+ sub w9, w5, w9
+ ldp w10, w11, [x1, #0x10]
+ cmp w9, w10
+ bhs G_M4144_IG15
+ ldr w10, [x1, #0x20]
+ sub w10, w4, w10
+ cmp w10, w11
+ bhs G_M4144_IG15
+ madd w9, w9, w11, w10
+ ldr w10, [x1, #0x18]
+ ldr w11, [x1, #0x24]
+ sub w11, w3, w11
+ cmp w11, w10
+ bhs G_M4144_IG15
+ madd w9, w9, w10, w11
+ ubfiz x9, x9, #2, #32
+ add x9, x9, #40
+ ldr w9, [x1, x9]
+ str w9, [x2, x8]
add w3, w3, #1
...
@@ -13,7 +13,7 @@
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 3, 3 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
@@ -21,72 +21,71 @@
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref single-def
-; V13 tmp4 [V13,T11] ( 2, 2 ) int -> x1
+;* V13 tmp4 [V13,T10] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref single-def
-;* V16 tmp7 [V16,T30] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T12] ( 2, 2 ) int -> x1 single-def
+;* V16 tmp7 [V16,T29] ( 0, 0 ) int -> zero-ref
+;* V17 tmp8 [V17,T11] ( 0, 0 ) int -> zero-ref single-def
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref single-def
-; V19 tmp10 [V19,T13] ( 2, 2 ) int -> x2
-; V20 tmp11 [V20,T14] ( 2, 2 ) int -> x1 single-def
+;* V19 tmp10 [V19,T12] ( 0, 0 ) int -> zero-ref
+;* V20 tmp11 [V20,T13] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref single-def
-; V22 tmp13 [V22,T15] ( 2, 2 ) int -> x0
-; V23 tmp14 [V23,T16] ( 2, 2 ) int -> x0 single-def
+;* V22 tmp13 [V22,T14] ( 0, 0 ) int -> zero-ref
+;* V23 tmp14 [V23,T15] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref single-def
-;* V25 tmp16 [V25,T31] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T17] ( 2, 2 ) int -> x0 single-def
+;* V25 tmp16 [V25,T30] ( 0, 0 ) int -> zero-ref
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29,T16] ( 0, 0 ) int -> zero-ref single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref single-def
-;* V32 tmp23 [V32,T32] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32,T31] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref single-def
-;* V34 tmp25 [V34,T33] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V34 tmp25 [V34,T32] ( 0, 0 ) int -> zero-ref
+;* V35 tmp26 [V35,T17] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref single-def
-;* V37 tmp28 [V37,T20] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V37 tmp28 [V37,T18] ( 0, 0 ) int -> zero-ref
+;* V38 tmp29 [V38,T19] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref single-def
-;* V40 tmp31 [V40,T34] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V40 tmp31 [V40,T33] ( 0, 0 ) int -> zero-ref
+;* V41 tmp32 [V41,T20] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref single-def
-;* V43 tmp34 [V43,T23] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T35] ( 0, 0 ) int -> zero-ref single-def
+;* V43 tmp34 [V43,T21] ( 0, 0 ) int -> zero-ref
+;* V44 tmp35 [V44,T34] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref single-def
-;* V46 tmp37 [V46,T36] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T24] ( 2, 2 ) int -> x0 single-def
+;* V46 tmp37 [V46,T35] ( 0, 0 ) int -> zero-ref
+;* V47 tmp38 [V47,T22] ( 0, 0 ) int -> zero-ref single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref single-def
-;* V49 tmp40 [V49,T37] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T25] ( 2, 2 ) int -> x0 single-def
+;* V49 tmp40 [V49,T36] ( 0, 0 ) int -> zero-ref
+;* V50 tmp41 [V50,T23] ( 0, 0 ) int -> zero-ref single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref single-def
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref single-def
-;* V53 tmp44 [V53,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T38] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56,T37] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref single-def
-;* V58 tmp49 [V58,T39] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T27] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp49 [V58,T38] ( 0, 0 ) int -> zero-ref
+;* V59 tmp50 [V59,T24] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref single-def
-;* V61 tmp52 [V61,T28] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T29] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp52 [V61,T25] ( 0, 0 ) int -> zero-ref
+;* V62 tmp53 [V62,T26] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref single-def
-;* V64 tmp55 [V64,T40] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T41] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp55 [V64,T39] ( 0, 0 ) int -> zero-ref
+;* V65 tmp56 [V65,T40] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref single-def
-;* V67 tmp58 [V67,T42] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T43] ( 0, 0 ) int -> zero-ref single-def
+;* V67 tmp58 [V67,T41] ( 0, 0 ) int -> zero-ref
+; V68 tmp59 [V68,T27] ( 2, 2 ) int -> x1 single-def
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref single-def
-;* V70 tmp61 [V70,T44] ( 0, 0 ) int -> zero-ref
-;* V71 cse0 [V71,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
-; V72 cse1 [V72,T03] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V73 cse2 [V73,T09] ( 2, 2 ) int -> x0 "CSE - moderate"
-; V74 cse3 [V74,T01] ( 2, 2 ) int -> x2 "CSE - moderate"
-; V75 cse4 [V75,T04] ( 2, 2 ) int -> x1 "CSE - moderate"
+; V70 tmp61 [V70,T28] ( 2, 2 ) int -> x0
+;* V71 cse0 [V71,T03] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V72 cse1 [V72,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+;* V73 cse2 [V73,T09] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V74 cse3 [V74,T01] ( 2, 2 ) int -> x1 "CSE - moderate"
+;* V75 cse4 [V75,T04] ( 0, 0 ) int -> zero-ref "CSE - moderate"
; V76 cse5 [V76,T05] ( 2, 2 ) int -> x0 "CSE - moderate"
; V77 cse6 [V77,T06] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V78 cse7 [V78,T10] ( 2, 2 ) int -> x0 "CSE - moderate"
;
; Lcl frame size = 8
@@ -137,24 +136,17 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w1, #12
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldp w0, w1, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ ;; size=148 bbWeight=1 PerfScore 26.50
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 172, prolog size 12, PerfScore 33.00, instruction count 43, allocated bytes for code 172 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -165,7 +157,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,79 +10,78 @@
;
;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc2 [V02,T03] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V02 loc2 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd exact single-def <testout1>
; V03 loc3 [V03,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
; V06 tmp2 [V06,T00] ( 3, 6 ) ref -> x0 class-hnd exact single-def "dup spill" <<unknown class>>
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref single-def
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref single-def
-; V09 tmp5 [V09,T11] ( 2, 2 ) int -> x1
+;* V09 tmp5 [V09,T10] ( 0, 0 ) int -> zero-ref
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref single-def
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref single-def
-;* V12 tmp8 [V12,T30] ( 0, 0 ) int -> zero-ref
-; V13 tmp9 [V13,T12] ( 2, 2 ) int -> x1 single-def
+;* V12 tmp8 [V12,T29] ( 0, 0 ) int -> zero-ref
+;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref single-def
-; V15 tmp11 [V15,T13] ( 2, 2 ) int -> x2
-; V16 tmp12 [V16,T14] ( 2, 2 ) int -> x1 single-def
+;* V15 tmp11 [V15,T12] ( 0, 0 ) int -> zero-ref
+;* V16 tmp12 [V16,T13] ( 0, 0 ) int -> zero-ref single-def
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref single-def
-; V18 tmp14 [V18,T15] ( 2, 2 ) int -> x0
-; V19 tmp15 [V19,T16] ( 2, 2 ) int -> x0 single-def
+;* V18 tmp14 [V18,T14] ( 0, 0 ) int -> zero-ref
+;* V19 tmp15 [V19,T15] ( 0, 0 ) int -> zero-ref single-def
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref single-def
-;* V21 tmp17 [V21,T31] ( 0, 0 ) int -> zero-ref
-; V22 tmp18 [V22,T17] ( 2, 2 ) int -> x0 single-def
+;* V21 tmp17 [V21,T30] ( 0, 0 ) int -> zero-ref
+;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref
-;* V25 tmp21 [V25,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V25 tmp21 [V25,T16] ( 0, 0 ) int -> zero-ref single-def
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref single-def
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref single-def
-;* V28 tmp24 [V28,T32] ( 0, 0 ) int -> zero-ref single-def
+;* V28 tmp24 [V28,T31] ( 0, 0 ) int -> zero-ref single-def
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref single-def
-;* V30 tmp26 [V30,T33] ( 0, 0 ) int -> zero-ref
-;* V31 tmp27 [V31,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V30 tmp26 [V30,T32] ( 0, 0 ) int -> zero-ref
+;* V31 tmp27 [V31,T17] ( 0, 0 ) int -> zero-ref single-def
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref single-def
-;* V33 tmp29 [V33,T20] ( 0, 0 ) int -> zero-ref
-;* V34 tmp30 [V34,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V33 tmp29 [V33,T18] ( 0, 0 ) int -> zero-ref
+;* V34 tmp30 [V34,T19] ( 0, 0 ) int -> zero-ref single-def
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref single-def
-;* V36 tmp32 [V36,T34] ( 0, 0 ) int -> zero-ref
-;* V37 tmp33 [V37,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V36 tmp32 [V36,T33] ( 0, 0 ) int -> zero-ref
+;* V37 tmp33 [V37,T20] ( 0, 0 ) int -> zero-ref single-def
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref single-def
-;* V39 tmp35 [V39,T23] ( 0, 0 ) int -> zero-ref
-;* V40 tmp36 [V40,T35] ( 0, 0 ) int -> zero-ref single-def
+;* V39 tmp35 [V39,T21] ( 0, 0 ) int -> zero-ref
+;* V40 tmp36 [V40,T34] ( 0, 0 ) int -> zero-ref single-def
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref single-def
-;* V42 tmp38 [V42,T36] ( 0, 0 ) int -> zero-ref
-; V43 tmp39 [V43,T24] ( 2, 2 ) int -> x0 single-def
+;* V42 tmp38 [V42,T35] ( 0, 0 ) int -> zero-ref
+;* V43 tmp39 [V43,T22] ( 0, 0 ) int -> zero-ref single-def
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref single-def
-;* V45 tmp41 [V45,T37] ( 0, 0 ) int -> zero-ref
-; V46 tmp42 [V46,T25] ( 2, 2 ) int -> x0 single-def
+;* V45 tmp41 [V45,T36] ( 0, 0 ) int -> zero-ref
+;* V46 tmp42 [V46,T23] ( 0, 0 ) int -> zero-ref single-def
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref single-def
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref single-def
-;* V49 tmp45 [V49,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V49 tmp45 [V49 ] ( 0, 0 ) int -> zero-ref
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp48 [V52,T38] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp48 [V52,T37] ( 0, 0 ) int -> zero-ref single-def
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref single-def
-;* V54 tmp50 [V54,T39] ( 0, 0 ) int -> zero-ref
-;* V55 tmp51 [V55,T27] ( 0, 0 ) int -> zero-ref single-def
+;* V54 tmp50 [V54,T38] ( 0, 0 ) int -> zero-ref
+;* V55 tmp51 [V55,T24] ( 0, 0 ) int -> zero-ref single-def
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref single-def
-;* V57 tmp53 [V57,T28] ( 0, 0 ) int -> zero-ref
-;* V58 tmp54 [V58,T29] ( 0, 0 ) int -> zero-ref single-def
+;* V57 tmp53 [V57,T25] ( 0, 0 ) int -> zero-ref
+;* V58 tmp54 [V58,T26] ( 0, 0 ) int -> zero-ref single-def
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref single-def
-;* V60 tmp56 [V60,T40] ( 0, 0 ) int -> zero-ref
-;* V61 tmp57 [V61,T41] ( 0, 0 ) int -> zero-ref single-def
+;* V60 tmp56 [V60,T39] ( 0, 0 ) int -> zero-ref
+;* V61 tmp57 [V61,T40] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref single-def
-;* V63 tmp59 [V63,T42] ( 0, 0 ) int -> zero-ref
-;* V64 tmp60 [V64,T43] ( 0, 0 ) int -> zero-ref single-def
+;* V63 tmp59 [V63,T41] ( 0, 0 ) int -> zero-ref
+; V64 tmp60 [V64,T27] ( 2, 2 ) int -> x1 single-def
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref single-def
-;* V66 tmp62 [V66,T44] ( 0, 0 ) int -> zero-ref
-;* V67 cse0 [V67,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
-; V68 cse1 [V68,T04] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V69 cse2 [V69,T09] ( 2, 2 ) int -> x0 "CSE - moderate"
-; V70 cse3 [V70,T02] ( 2, 2 ) int -> x2 "CSE - moderate"
-; V71 cse4 [V71,T05] ( 2, 2 ) int -> x1 "CSE - moderate"
+; V66 tmp62 [V66,T28] ( 2, 2 ) int -> x0
+;* V67 cse0 [V67,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V68 cse1 [V68,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+;* V69 cse2 [V69,T09] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V70 cse3 [V70,T02] ( 2, 2 ) int -> x1 "CSE - moderate"
+;* V71 cse4 [V71,T05] ( 0, 0 ) int -> zero-ref "CSE - moderate"
; V72 cse5 [V72,T06] ( 2, 2 ) int -> x0 "CSE - moderate"
; V73 cse6 [V73,T07] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V74 cse7 [V74,T10] ( 2, 2 ) int -> x0 "CSE - moderate"
;
; Lcl frame size = 8
@@ -133,24 +132,17 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w1, #12
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldp w0, w1, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ ;; size=148 bbWeight=1 PerfScore 26.50
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 172, prolog size 12, PerfScore 33.00, instruction count 43, allocated bytes for code 172 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -161,7 +153,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -11,17 +11,15 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 4, 3.50) ref -> x21 class-hnd single-def <System.Type>
-; V03 arg3 [V03,T01] ( 7, 4.25) ref -> x20 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T01] ( 6, 4 ) ref -> x20 class-hnd single-def <System.Object>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp2 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp3 [V08,T10] ( 0, 0 ) int -> zero-ref
-; V09 tmp4 [V09,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V10 tmp5 [V10,T05] ( 3, 1.50) ref -> x4 class-hnd "Inline return value spill temp" <<unknown class>>
-; V11 cse0 [V11,T04] ( 4, 1.75) long -> x0 "CSE - moderate"
-; V12 cse1 [V12,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V13 cse2 [V13,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V07 tmp2 [V07,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp3 [V08,T08] ( 0, 0 ) int -> zero-ref
+; V09 tmp4 [V09,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V10 tmp5 [V10,T04] ( 3, 1.50) ref -> x4 class-hnd "Inline return value spill temp" <<unknown class>>
+; V11 cse0 [V11,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
; Lcl frame size = 8
@@ -38,36 +36,34 @@ G_M32564_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=28 bbWeight=1 PerfScore 5.00
G_M32564_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- cmp x21, x1
- bne G_M32564_IG07
- ;; size=20 bbWeight=1 PerfScore 3.00
-G_M32564_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M32564_IG07
- ldr x1, [x20]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
- cmp x1, x0
- bne G_M32564_IG07
- cmp x1, x0
- beq G_M32564_IG05
- ;; size=36 bbWeight=0.50 PerfScore 4.25
-G_M32564_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x21]
- mov x1, x20
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
+ cmp x21, x0
+ bne G_M32564_IG04
+ ;; size=20 bbWeight=1 PerfScore 3.00
+G_M32564_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M32564_IG04
+ ldr x0, [x20]
+ movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M32564_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ cmp x0, x2
+ beq G_M32564_IG06
+ ;; size=28 bbWeight=0.50 PerfScore 3.50
+G_M32564_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M32564_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
+G_M32564_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M32564_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x19 x21]
ldrb w0, [x20, #0x08]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
@@ -80,34 +76,23 @@ G_M32564_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movk x3, #1 LSL #32
ldr x3, [x3]
;; size=40 bbWeight=0.50 PerfScore 6.25
-G_M32564_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x3
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M32564_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M32564_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x2] +[x19 x21]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M32564_IG09
- ;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M32564_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M32564_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- beq G_M32564_IG11
+ beq G_M32564_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M32564_IG10: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M32564_IG09: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -119,7 +104,7 @@ G_M32564_IG10: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M32564_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M32564_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -137,7 +122,7 @@ G_M32564_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
ldr x4, [x4, #0x18]
; gcrRegs -[x4]
;; size=36 bbWeight=0.50 PerfScore 6.00
-G_M32564_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
@@ -145,7 +130,7 @@ G_M32564_IG12: ; bbWeight=0.50, epilog, nogc, extend
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 296, prolog size 28, PerfScore 40.62, instruction count 74, allocated bytes for code 296 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
+; Total bytes of code 264, prolog size 28, PerfScore 38.38, instruction count 66, allocated bytes for code 264 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
; ============================================================
Unwind Info:
@@ -156,7 +141,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
+ Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,84 +8,83 @@
; 0 inlinees with PGO data; 33 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> x4
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T06] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T09] ( 2, 2 ) int -> x1 single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T10] ( 2, 2 ) int -> x1 single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp11 [V20,T11] ( 2, 2 ) int -> x1 single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T12] ( 2, 2 ) int -> x0 single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T13] ( 2, 2 ) int -> x0 single-def
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-;* V32 tmp23 [V32,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T17] ( 2, 2 ) int -> x0 single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T18] ( 2, 2 ) int -> x0 single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T07] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T26] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T08] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V75 cse4 [V75,T03] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T04] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V77 cse6 [V77,T05] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> x1 "CSE - aggressive"
+; V72 cse1 [V72,T09] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V73 cse2 [V73,T03] ( 4, 4 ) int -> x2 "CSE - aggressive"
+; V74 cse3 [V74,T04] ( 4, 4 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T05] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T06] ( 4, 4 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -133,27 +132,35 @@ G_M51184_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w2, [x1]
mov w2, #0xD1FFAB1E
strh w2, [x1, #0x04]
- movn w1, #12
- str w1, [x19, #0x08]
+ movn w2, #12
+ str w2, [x19, #0x08]
+ mov w2, #0xD1FFAB1E
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldr w2, [x19, #0x08]
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w4, w2, w3
+ add w4, w4, w0
+ add w4, w4, #17
+ ldr w1, [x1]
+ add w4, w4, w1
+ add w1, w4, w2
+ add w1, w1, w3
+ add w4, w1, #10
+ add w4, w4, w0
+ add w4, w4, w2
+ add w1, w4, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ add w4, w0, #17
+ mov w0, w4
+ ;; size=208 bbWeight=1 PerfScore 39.00
G_M51184_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=0d8a380f) for method testout1:Sub_Funclet_107():int (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 45.50, instruction count 58, allocated bytes for code 232 (MethodHash=0d8a380f) for method testout1:Sub_Funclet_107():int (FullOpts)
; ============================================================
Unwind Info:
@@ -164,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,84 +8,83 @@
; 0 inlinees with PGO data; 29 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> x4
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T05] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T09] ( 2, 2 ) int -> x1 single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp11 [V20,T10] ( 2, 2 ) int -> x1 single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T11] ( 2, 2 ) int -> x0 single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T12] ( 2, 2 ) int -> x0 single-def
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-;* V32 tmp23 [V32,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T16] ( 2, 2 ) int -> x0 single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T17] ( 2, 2 ) int -> x0 single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T06] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T25] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T07] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V75 cse4 [V75,T08] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T03] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V77 cse6 [V77,T04] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> x1 "CSE - aggressive"
+; V72 cse1 [V72,T09] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V73 cse2 [V73,T03] ( 4, 4 ) int -> x2 "CSE - aggressive"
+; V74 cse3 [V74,T04] ( 4, 4 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T05] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T06] ( 4, 4 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -133,27 +132,35 @@ G_M37173_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w2, [x1]
mov w2, #0xD1FFAB1E
strh w2, [x1, #0x04]
- movn w1, #12
- str w1, [x19, #0x08]
+ movn w2, #12
+ str w2, [x19, #0x08]
+ mov w2, #0xD1FFAB1E
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldr w2, [x19, #0x08]
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w4, w2, w3
+ add w4, w4, w0
+ add w4, w4, #17
+ ldr w1, [x1]
+ add w4, w4, w1
+ add w1, w4, w2
+ add w1, w1, w3
+ add w4, w1, #10
+ add w4, w4, w0
+ add w4, w4, w2
+ add w1, w4, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ add w4, w0, #17
+ mov w0, w4
+ ;; size=208 bbWeight=1 PerfScore 39.00
G_M37173_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=49726eca) for method testout1:Sub_Funclet_223():int (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 45.50, instruction count 58, allocated bytes for code 232 (MethodHash=49726eca) for method testout1:Sub_Funclet_223():int (FullOpts)
; ============================================================
Unwind Info:
@@ -164,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,84 +8,83 @@
; 0 inlinees with PGO data; 25 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> x4
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T06] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T09] ( 2, 2 ) int -> x1 single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T10] ( 2, 2 ) int -> x1 single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp11 [V20,T11] ( 2, 2 ) int -> x1 single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T12] ( 2, 2 ) int -> x0 single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T13] ( 2, 2 ) int -> x0 single-def
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T17] ( 2, 2 ) int -> x0 single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T18] ( 2, 2 ) int -> x0 single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T07] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T26] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T08] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V75 cse4 [V75,T03] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T04] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V77 cse6 [V77,T05] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> x1 "CSE - aggressive"
+; V72 cse1 [V72,T09] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V73 cse2 [V73,T03] ( 4, 4 ) int -> x2 "CSE - aggressive"
+; V74 cse3 [V74,T04] ( 4, 4 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T05] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T06] ( 4, 4 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -133,27 +132,35 @@ G_M37238_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w2, [x1]
mov w2, #0xD1FFAB1E
strh w2, [x1, #0x04]
- movn w1, #12
- str w1, [x19, #0x08]
+ movn w2, #12
+ str w2, [x19, #0x08]
+ mov w2, #0xD1FFAB1E
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldr w2, [x19, #0x08]
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w4, w2, w3
+ add w4, w4, w0
+ add w4, w4, #17
+ ldr w1, [x1]
+ add w4, w4, w1
+ add w1, w4, w2
+ add w1, w1, w3
+ add w4, w1, #10
+ add w4, w4, w0
+ add w4, w4, w2
+ add w1, w4, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ add w4, w0, #17
+ mov w0, w4
+ ;; size=208 bbWeight=1 PerfScore 39.00
G_M37238_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=bccd6e89) for method testout1:Sub_Funclet_145():int (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 45.50, instruction count 58, allocated bytes for code 232 (MethodHash=bccd6e89) for method testout1:Sub_Funclet_145():int (FullOpts)
; ============================================================
Unwind Info:
@@ -164,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -96,10 +96,8 @@ G_M48965_IG02: ; bbWeight=1, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000
;; size=4 bbWeight=1 PerfScore 1.00
G_M48965_IG03: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
ldr w19, [x0, #0x08]
- cbz w19, G_M48965_IG04
- cbz x1, G_M48965_IG06
- b G_M48965_IG05
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w19, G_M48965_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M48965_IG04: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -114,11 +112,10 @@ G_M48965_IG04: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0000
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M48965_IG05: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x4]
+ cbz x1, G_M48965_IG06
ldr w3, [x1, #0x08]
- cbz w3, G_M48965_IG06
- cbz x4, G_M48965_IG08
- b G_M48965_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w3, G_M48965_IG07
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M48965_IG06: ; bbWeight=0.50, gcrefRegs=0015 {x0 x2 x4}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, x4
@@ -132,11 +129,10 @@ G_M48965_IG06: ; bbWeight=0.50, gcrefRegs=0015 {x0 x2 x4}, byrefRegs=0000
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M48965_IG07: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x4]
+ cbz x4, G_M48965_IG08
ldr w5, [x4, #0x08]
- cbz w5, G_M48965_IG08
- cbz x2, G_M48965_IG10
- b G_M48965_IG09
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w5, G_M48965_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M48965_IG08: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -148,16 +144,12 @@ G_M48965_IG08: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000
;; size=20 bbWeight=0.50 PerfScore 3.00
G_M48965_IG09: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x4]
+ cbz x2, G_M48965_IG10
ldr w7, [x2, #0x08]
- cbz w7, G_M48965_IG10
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M48965_IG11
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w7, G_M48965_IG11
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M48965_IG10: ; bbWeight=0.50, gcrefRegs=0013 {x0 x1 x4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x2]
mov x2, x4
; gcrRegs +[x2]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -167,8 +159,10 @@ G_M48965_IG10: ; bbWeight=0.50, gcrefRegs=0013 {x0 x1 x4}, byrefRegs=0000
; gcrRegs -[x1-x2 x4]
b G_M48965_IG12
;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M48965_IG11: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0001 {x0}, byref
- ; gcrRegs -[x0] +[x1-x2 x4]
+G_M48965_IG11: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x1-x2 x4]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
add x6, x1, #12
; byrRegs +[x6]
@@ -190,14 +184,14 @@ G_M48965_IG11: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0001
blr x8
; gcrRegs +[x0]
; byrRegs -[x0 x2 x4 x6]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
+ ;; size=44 bbWeight=0.50 PerfScore 4.25
G_M48965_IG12: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 236, prolog size 12, PerfScore 37.25, instruction count 59, allocated bytes for code 236 (MethodHash=a8d740ba) for method System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 35.25, instruction count 55, allocated bytes for code 220 (MethodHash=a8d740ba) for method System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -208,7 +202,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -60,10 +60,8 @@ G_M65029_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M65029_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M65029_IG04
- cbz x1, G_M65029_IG08
- b G_M65029_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M65029_IG07
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M65029_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbnz x1, G_M65029_IG05
@@ -83,21 +81,19 @@ G_M65029_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M65029_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M65029_IG08
ldr w3, [x1, #0x08]
- cbz w3, G_M65029_IG08
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M65029_IG09
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w3, G_M65029_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M65029_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
- ; gcrRegs -[x0] +[x1]
+G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
sxtw w11, w2
add x2, x1, #12
@@ -110,13 +106,13 @@ G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x4
; gcrRegs +[x0]
; byrRegs -[x0 x2]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
+ ;; size=32 bbWeight=0.50 PerfScore 3.50
G_M65029_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 8, PerfScore 18.75, instruction count 30, allocated bytes for code 120 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 17.75, instruction count 28, allocated bytes for code 112 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -12,20 +12,20 @@
; V00 arg0 [V00,T08] ( 6, 8 ) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T13] ( 4, 3.50) byref -> x1 single-def
; V02 arg2 [V02,T12] ( 5, 3.50) byref -> x19 single-def
-; V03 loc0 [V03,T00] ( 26, 69 ) int -> x20
-; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x23
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> [fp+0x14] single-def
-; V06 loc3 [V06,T16] ( 7, 3.50) int -> x2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x11
-; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x4
-; V09 loc6 [V09,T06] ( 7, 17 ) int -> x2
+; V03 loc0 [V03,T00] ( 26, 69 ) int -> x2
+; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x4
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> x5 single-def
+; V06 loc3 [V06,T16] ( 7, 3.50) int -> x6
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x7
+; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x8
+; V09 loc6 [V09,T06] ( 7, 17 ) int -> x6
; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> x4
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x20 "impSpillLclRefs"
+; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x2 "impSpillLclRefs"
;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x2 "Inlining Arg"
+; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x5 "Inlining Arg"
;* V15 tmp4 [V15,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x3 "Inlining Arg"
+; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x5 "Inlining Arg"
;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -33,199 +33,186 @@
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value"
-; V24 cse0 [V24,T09] ( 4, 9 ) int -> x23 "CSE - aggressive"
-; V25 cse1 [V25,T03] ( 10, 32 ) int -> x21 hoist "CSE - aggressive"
-; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x22 "CSE - aggressive"
+; V24 cse0 [V24,T09] ( 4, 9 ) int -> x4 "CSE - aggressive"
+; V25 cse1 [V25,T03] ( 10, 32 ) int -> x11 hoist "CSE - aggressive"
+; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x3 "CSE - aggressive"
;
; Lcl frame size = 8
G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
mov x19, x2
; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
; gcrRegs +[x0]
; byrRegs +[x1]
- ldr w20, [x1]
- ldr w21, [x0, #0x08]
+ ldr w2, [x1]
+ ldr w11, [x0, #0x08]
;; size=8 bbWeight=1 PerfScore 6.00
G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w21, w20
- beq G_M24207_IG29
+ cmp w11, w2
+ beq G_M24207_IG27
;; size=8 bbWeight=8 PerfScore 12.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w20, w21
- bhs G_M24207_IG35
- add x22, x0, #12
- ; byrRegs +[x22]
- ldrh w23, [x22, w20, UXTW #2]
- sxtw w2, w23
- cmp w2, #32
- ccmp w2, #9, z, ne
- ccmp w2, #13, z, ne
- beq G_M24207_IG07
+ cmp w2, w11
+ bhs G_M24207_IG33
+ add x3, x0, #12
+ ; byrRegs +[x3]
+ ldrh w4, [x3, w2, UXTW #2]
+ sxtw w5, w4
+ cmp w5, #32
+ ccmp w5, #9, z, ne
+ ccmp w5, #13, z, ne
+ beq G_M24207_IG06
;; size=36 bbWeight=4 PerfScore 32.00
-G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, #10
- beq G_M24207_IG07
+G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w5, #10
+ bne G_M24207_IG07
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- sxtw w3, w23
- cmp w3, #34
- beq G_M24207_IG09
- b G_M24207_IG08
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
- ; byrRegs -[x22]
- add w20, w20, #1
+G_M24207_IG06: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
+ ; byrRegs -[x3]
+ add w2, w2, #1
b G_M24207_IG03
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; byrRegs +[x22]
- cmp w3, #39
- beq G_M24207_IG09
- mov w23, wzr
+G_M24207_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ ; byrRegs +[x3]
+ sxtw w5, w4
+ cmp w5, #34
+ beq G_M24207_IG08
+ cmp w5, #39
+ bne G_M24207_IG09
+ ;; size=20 bbWeight=0.50 PerfScore 1.75
+G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ add w2, w2, #1
b G_M24207_IG10
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ mov w4, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w3, w20
- sxtw w2, w21
- mov w11, wzr
+G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sxtw w5, w2
+ sxtw w6, w11
+ mov w7, wzr
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w21, w20
- ble G_M24207_IG17
- cmp w20, w21
- bhs G_M24207_IG35
- ldrh w4, [x22, w20, UXTW #2]
- cmp w4, #92
+G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w11, w2
+ ble G_M24207_IG16
+ cmp w2, w11
+ bhs G_M24207_IG33
+ ldrh w8, [x3, w2, UXTW #2]
+ cmp w8, #92
bne G_M24207_IG12
- mov w11, #1
- add w20, w20, #2
+ mov w7, #1
+ add w2, w2, #2
b G_M24207_IG11
;; size=40 bbWeight=4 PerfScore 38.00
-G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG15
+G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cbnz w4, G_M24207_IG14
;; size=4 bbWeight=4 PerfScore 4.00
-G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w4, #61
- beq G_M24207_IG19
- cmp w4, #44
- beq G_M24207_IG19
- cmp w4, #34
- beq G_M24207_IG29
- cmp w4, #39
- bne G_M24207_IG16
- ;; size=32 bbWeight=2 PerfScore 12.00
-G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x1 x22]
- b G_M24207_IG29
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; gcrRegs +[x0]
- ; byrRegs +[x1 x22]
- cmp w4, w23
+G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w8, #61
beq G_M24207_IG18
+ cmp w8, #44
+ beq G_M24207_IG18
+ cmp w8, #34
+ beq G_M24207_IG27
+ cmp w8, #39
+ bne G_M24207_IG15
+ b G_M24207_IG27
+ ;; size=36 bbWeight=2 PerfScore 14.00
+G_M24207_IG14: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w8, w4
+ beq G_M24207_IG17
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+G_M24207_IG15: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ add w2, w2, #1
b G_M24207_IG11
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w20, w21
- b G_M24207_IG19
+G_M24207_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sxtw w2, w11
+ b G_M24207_IG18
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w2, w20
- add w20, w2, #1
+G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sxtw w6, w2
+ add w2, w6, #1
;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG25
- sub w2, w20, #1
- b G_M24207_IG21
+G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cbnz w4, G_M24207_IG24
+ sub w6, w2, #1
+ b G_M24207_IG20
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sub w2, w2, #1
+G_M24207_IG19: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sub w6, w6, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, w3
- blt G_M24207_IG22
- cmp w2, w21
- bhs G_M24207_IG35
- ldrh w4, [x22, w2, UXTW #2]
+G_M24207_IG20: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w6, w5
+ blt G_M24207_IG21
+ cmp w6, w11
+ bhs G_M24207_IG33
...
@@ -17,7 +17,7 @@
;
; Lcl frame size = 0
-G_M58850_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M58850_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
@@ -30,7 +30,7 @@ G_M58850_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
; gcrRegs +[x1]
mov x21, x1
; gcrRegs +[x21]
- cbz x21, G_M58850_IG04
+ cbz x21, G_M58850_IG06
adrp x22, [HIGH RELOC #0xD1FFAB1E]
add x22, x22, [LOW RELOC #0xD1FFAB1E]
;; size=16 bbWeight=1 PerfScore 2.50
@@ -44,9 +44,9 @@ G_M58850_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1]
- cbnz w0, G_M58850_IG06
+ cbnz w0, G_M58850_IG04
tst w20, #255
- beq G_M58850_IG04
+ beq G_M58850_IG06
mov x0, x21
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -57,10 +57,11 @@ G_M58850_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
mov x21, x0
; gcrRegs +[x21]
cbnz x21, G_M58850_IG03
- ;; size=60 bbWeight=4 PerfScore 70.00
+ b G_M58850_IG08
+ ;; size=64 bbWeight=4 PerfScore 74.00
G_M58850_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19 x21]
- mov w0, wzr
+ mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M58850_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
@@ -69,7 +70,7 @@ G_M58850_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
G_M58850_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M58850_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
@@ -77,8 +78,11 @@ G_M58850_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M58850_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b G_M58850_IG06
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 140, prolog size 16, PerfScore 81.50, instruction count 35, allocated bytes for code 140 (MethodHash=d4151a1d) for method Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.Symbols.ISymbolInternal,ubyte):ubyte:this (FullOpts)
+; Total bytes of code 148, prolog size 16, PerfScore 86.00, instruction count 37, allocated bytes for code 148 (MethodHash=d4151a1d) for method Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.Symbols.ISymbolInternal,ubyte):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -89,7 +93,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -17,20 +17,20 @@
;
; Lcl frame size = 0
-G_M12753_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12753_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M12753_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M12753_IG04
+ cbz x0, G_M12753_IG06
;; size=4 bbWeight=1 PerfScore 1.00
G_M12753_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w11, [x0, #0x12]
cmp w11, #117
- beq G_M12753_IG06
+ beq G_M12753_IG04
cmp w11, #188
- bne G_M12753_IG04
+ bne G_M12753_IG06
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -38,17 +38,9 @@ G_M12753_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr x0, [x0, #0x20]
cbnz x0, G_M12753_IG03
- ;; size=44 bbWeight=4 PerfScore 60.00
-G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ b G_M12753_IG08
+ ;; size=48 bbWeight=4 PerfScore 64.00
+G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -56,12 +48,25 @@ G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcr arg pop 0
ldr x0, [x0, #0x20]
;; size=20 bbWeight=0.50 PerfScore 4.00
+G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M12753_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M12753_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ b G_M12753_IG06
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 96, prolog size 8, PerfScore 68.75, instruction count 24, allocated bytes for code 96 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
+; Total bytes of code 104, prolog size 8, PerfScore 73.25, instruction count 26, allocated bytes for code 104 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
; ============================================================
Unwind Info:
@@ -72,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,52 +9,55 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 5 ) byref -> x0 this single-def
+; V00 this [V00,T00] ( 5, 2 ) byref -> x0 this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[int]>
-; V02 loc0 [V02,T03] ( 4, 3.50) int -> x11
+; V02 loc0 [V02,T03] ( 4, 0 ) int -> x11
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V05 tmp2 [V05,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 tmp3 [V06,T01] ( 5, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T01] ( 5, 1 ) byref -> [fp+0x18] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp4 [V07,T02] ( 2, 1 ) int -> [fp+0x24] single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V08 tmp5 [V08,T05] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
-G_M34588_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M34588_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x30]!
+ str x19, [sp, #0x28]
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M34588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
- ; byrRegs +[x0-x1]
+ str x1, [fp, #0x18] // [V06 tmp3]
+ ; GC ptr vars +{V06}
+ str w2, [fp, #0x24] // [V07 tmp4]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M34588_IG02: ; bbWeight=0, gcVars=0000000000000002 {V06}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
+ ; byrRegs +[x0]
+ ldr w2, [fp, #0x24] // [V07 tmp4]
cmp w2, #4
- bne G_M34588_IG06
+ bne G_M34588_IG04
+ ldr x1, [fp, #0x18] // [V06 tmp3]
+ ; byrRegs +[x1]
ldr w11, [x1, #0x0C]
movn w2, #0xD1FFAB1E LSL #16
tst w11, w2
- bne G_M34588_IG06
- ;; size=24 bbWeight=1 PerfScore 6.50
-G_M34588_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
+ bne G_M34588_IG04
and w2, w11, #0xD1FFAB1E
cmp w2, #0xD1FFAB1E, LSL #12
- bhi G_M34588_IG06
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M34588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref
+ bhi G_M34588_IG04
ldp w2, w3, [x1]
add x2, x2, x3, LSL #32
str x2, [x0, #0x08]
ldr w1, [x1, #0x08]
; byrRegs -[x1]
stp w11, w1, [x0]
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M34588_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=64 bbWeight=0 PerfScore 0.00
+G_M34588_IG03: ; bbWeight=0, epilog, nogc, extend
+ ldr x19, [sp, #0x28]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M34588_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M34588_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x0]
+ ; GC ptr vars -{V06}
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x11]
@@ -86,7 +89,7 @@ G_M34588_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 12, PerfScore 23.00, instruction count 41, allocated bytes for code 164 (MethodHash=290178e3) for method System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
+; Total bytes of code 180, prolog size 12, PerfScore 0.00, instruction count 45, allocated bytes for code 180 (MethodHash=290178e3) for method System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -97,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,8 +108,8 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
E4 end
@@ -33,37 +33,25 @@ G_M54442_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldr d1, [@RWD08]
str d1, [fp, #0x10] // [V08 cse0]
fcmp d8, d1
- bhs G_M54442_IG04
+ blo G_M54442_IG04
;; size=28 bbWeight=1 PerfScore 25.00
-G_M54442_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- b G_M54442_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M54442_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M54442_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
fcmp d8, d1
- bgt G_M54442_IG05
+ bgt G_M54442_IG06
fcmp d8, d1
- bne G_M54442_IG06
- b G_M54442_IG07
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M54442_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- b G_M54442_IG09
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M54442_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
+ beq G_M54442_IG04
fcmp d8, d8
- beq G_M54442_IG09
- b G_M54442_IG03
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M54442_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ beq G_M54442_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M54442_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str x1, [x0, #0x18]
;; size=4 bbWeight=1 PerfScore 1.00
-G_M54442_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M54442_IG05: ; bbWeight=1, epilog, nogc, extend
ldr d8, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M54442_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54442_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -85,7 +73,7 @@ RWD00 dq 416312D000000000h ; 10000000
RWD08 dq 41DFFFFFFFC00000h ; 2.14748365e+09
-; Total bytes of code 148, prolog size 12, PerfScore 37.25, instruction count 37, allocated bytes for code 148 (MethodHash=b6192b55) for method System.Net.Http.Headers.RetryConditionHeaderValue:.ctor(System.TimeSpan):this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 35.50, instruction count 33, allocated bytes for code 132 (MethodHash=b6192b55) for method System.Net.Http.Headers.RetryConditionHeaderValue:.ctor(System.TimeSpan):this (FullOpts)
; ============================================================
Unwind Info:
@@ -96,7 +84,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -24,32 +24,24 @@ G_M14136_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M14136_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
fcmp d0, d1
- blo G_M14136_IG07
+ blo G_M14136_IG05
;; size=8 bbWeight=1 PerfScore 2.00
G_M14136_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
fcmp d0, d1
- bgt G_M14136_IG06
+ bgt G_M14136_IG04
fcmp d0, d1
- bne G_M14136_IG05
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M14136_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- b G_M14136_IG06
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M14136_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
+ beq G_M14136_IG04
fcmp d0, d0
- beq G_M14136_IG06
+ beq G_M14136_IG04
fcmp d1, d1
- beq G_M14136_IG07
- b G_M14136_IG04
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M14136_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ beq G_M14136_IG05
+ ;; size=32 bbWeight=0.50 PerfScore 4.00
+G_M14136_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M14136_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M14136_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:ThrowLess[double](double,double,System.String)
movk x1, #0xD1FFAB1E LSL #16
@@ -60,7 +52,7 @@ G_M14136_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 8, PerfScore 10.50, instruction count 22, allocated bytes for code 88 (MethodHash=b47cc8c7) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[double](double,double,System.String) (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 9.50, instruction count 20, allocated bytes for code 80 (MethodHash=b47cc8c7) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[double](double,double,System.String) (FullOpts)
; ============================================================
Unwind Info:
@@ -71,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -78,10 +78,8 @@ G_M49441_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M49441_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M49441_IG04
- cbz x1, G_M49441_IG07
- b G_M49441_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M49441_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M49441_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -92,31 +90,29 @@ G_M49441_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M49441_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M49441_IG07
ldr w3, [x1, #0x08]
- cbz w3, G_M49441_IG07
+ cbnz w3, G_M49441_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
+G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x1]
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M49441_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x1]
add x4, x1, #12
; byrRegs +[x4]
mov x5, x4
; byrRegs +[x5]
sxtw w6, w3
- b G_M49441_IG08
- ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1]
- ; byrRegs -[x4-x5]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M49441_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0030 {x4 x5}, gcvars, byref, isz
- ; gcrRegs +[x1]
- ; byrRegs +[x4-x5]
cmp w6, #0
ble G_M49441_IG09
ldrh w5, [x5]
; byrRegs -[x5]
cmp w5, #47
beq G_M49441_IG04
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M49441_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0010 {x4}, byref
; gcrRegs -[x1]
add x0, x0, #12
@@ -139,7 +135,7 @@ G_M49441_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 132, prolog size 8, PerfScore 18.50, instruction count 33, allocated bytes for code 132 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 124, prolog size 8, PerfScore 17.50, instruction count 31, allocated bytes for code 124 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -150,7 +146,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 7 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 8, 24 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[ubyte]>
-; V01 loc0 [V01,T03] ( 9, 21 ) ref -> x20 class-hnd exact single-def <System.Collections.Generic.List`1[ubyte]>
+; V00 arg0 [V00,T02] ( 8, 20.50) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[ubyte]>
+; V01 loc0 [V01,T03] ( 9, 17.50) ref -> x20 class-hnd exact single-def <System.Collections.Generic.List`1[ubyte]>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[ubyte]>
; V03 loc2 [V03,T11] ( 3, 6 ) ubyte -> x1
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -21,14 +21,14 @@
;* V10 tmp6 [V10,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ubyte]>
;* V12 tmp8 [V12,T15] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T01] ( 6, 21 ) int -> x22 "field V02._index (fldOffset=0x8)" P-INDEP
+; V13 tmp9 [V13,T00] ( 6, 21 ) int -> x22 "field V02._index (fldOffset=0x8)" P-INDEP
; V14 tmp10 [V14,T06] ( 2, 9 ) int -> x21 single-def "field V02._version (fldOffset=0xc)" P-INDEP
; V15 tmp11 [V15,T05] ( 2, 6 ) ubyte -> x0 "field V02._current (fldOffset=0x10)" P-INDEP
; V16 tmp12 [V16,T13] ( 2, 2 ) ref -> x0 single-def "field V07._list (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17,T16] ( 0, 0 ) int -> zero-ref single-def "field V07._index (fldOffset=0x8)" P-INDEP
; V18 tmp14 [V18,T14] ( 2, 2 ) int -> x21 single-def "field V07._version (fldOffset=0xc)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07._current (fldOffset=0x10)" P-INDEP
-; V20 tmp16 [V20,T02] ( 3, 24 ) ref -> x0 "arr expr"
+; V20 tmp16 [V20,T01] ( 3, 24 ) ref -> x0 "arr expr"
; V21 cse0 [V21,T04] ( 3, 12 ) int -> x23 "CSE - aggressive"
; V22 cse1 [V22,T12] ( 2, 4 ) int -> x3 "CSE - aggressive"
;
@@ -101,7 +101,7 @@ G_M37290_IG04: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
G_M37290_IG05: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x14]
cmp w21, w0
- bne G_M37290_IG10
+ bne G_M37290_IG13
;; size=12 bbWeight=8 PerfScore 36.00
G_M37290_IG06: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w23, [x19, #0x10]
@@ -111,7 +111,7 @@ G_M37290_IG06: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w22, w1
- bhs G_M37290_IG09
+ bhs G_M37290_IG12
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -120,25 +120,41 @@ G_M37290_IG06: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
add w22, w22, #1
b G_M37290_IG03
;; size=44 bbWeight=4 PerfScore 68.00
-G_M37290_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M37290_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x20, #0x10]
cmp w0, w23
- csel x0, x19, x20, eq
+ beq G_M37290_IG10
+ ;; size=12 bbWeight=4 PerfScore 18.00
+G_M37290_IG08: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ mov x0, x20
; gcrRegs +[x0]
- ;; size=12 bbWeight=4 PerfScore 16.00
-G_M37290_IG08: ; bbWeight=4, epilog, nogc, extend
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M37290_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M37290_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x19-x20]
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M37290_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x20] +[x19]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M37290_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M37290_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x19]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M37290_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37290_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -148,22 +164,25 @@ G_M37290_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 280, prolog size 24, PerfScore 211.00, instruction count 70, allocated bytes for code 280 (MethodHash=4e806e55) for method Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
+; Total bytes of code 308, prolog size 24, PerfScore 195.50, instruction count 77, allocated bytes for code 308 (MethodHash=4e806e55) for method Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 70 (0x00046) Actual length = 280 (0x000118)
+ Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
@@ -8,52 +8,55 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 5 ) byref -> x0 this single-def
+; V00 this [V00,T00] ( 5, 2 ) byref -> x0 this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[int]>
-; V02 loc0 [V02,T03] ( 4, 3.50) int -> x2
+; V02 loc0 [V02,T03] ( 4, 0 ) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V05 tmp2 [V05,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 tmp3 [V06,T01] ( 5, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T01] ( 5, 1 ) byref -> [fp+0x18] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp4 [V07,T02] ( 2, 1 ) int -> [fp+0x24] single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V08 tmp5 [V08,T05] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
-G_M34588_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M34588_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x30]!
+ str x19, [sp, #0x28]
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M34588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
- ; byrRegs +[x0-x1]
+ str x1, [fp, #0x18] // [V06 tmp3]
+ ; GC ptr vars +{V06}
+ str w2, [fp, #0x24] // [V07 tmp4]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M34588_IG02: ; bbWeight=0, gcVars=0000000000000002 {V06}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
+ ; byrRegs +[x0]
+ ldr w2, [fp, #0x24] // [V07 tmp4]
cmp w2, #4
- bne G_M34588_IG06
+ bne G_M34588_IG04
+ ldr x1, [fp, #0x18] // [V06 tmp3]
+ ; byrRegs +[x1]
ldr w2, [x1, #0x0C]
movn w3, #0xD1FFAB1E LSL #16
tst w2, w3
- bne G_M34588_IG06
- ;; size=24 bbWeight=1 PerfScore 6.50
-G_M34588_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
+ bne G_M34588_IG04
and w3, w2, #0xD1FFAB1E
cmp w3, #0xD1FFAB1E, LSL #12
- bhi G_M34588_IG06
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M34588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref
+ bhi G_M34588_IG04
ldp w3, w4, [x1]
add x3, x3, x4, LSL #32
str x3, [x0, #0x08]
ldr w1, [x1, #0x08]
; byrRegs -[x1]
stp w2, w1, [x0]
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M34588_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=64 bbWeight=0 PerfScore 0.00
+G_M34588_IG03: ; bbWeight=0, epilog, nogc, extend
+ ldr x19, [sp, #0x28]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M34588_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M34588_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x0]
+ ; GC ptr vars -{V06}
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -84,7 +87,7 @@ G_M34588_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 12, PerfScore 23.00, instruction count 40, allocated bytes for code 160 (MethodHash=290178e3) for method System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
+; Total bytes of code 176, prolog size 12, PerfScore 0.00, instruction count 44, allocated bytes for code 176 (MethodHash=290178e3) for method System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -95,7 +98,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,8 +106,8 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
E4 end
@@ -13,7 +13,7 @@
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V05 loc3 [V05,T02] ( 4, 2.50) ref -> x0 class-hnd <System.String>
+; V05 loc3 [V05,T02] ( 4, 2.50) ref -> registers class-hnd <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V08 tmp2 [V08,T03] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
@@ -28,43 +28,43 @@ G_M24419_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M24419_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
- cbz x0, G_M24419_IG06
+ cbz x0, G_M24419_IG05
;; size=4 bbWeight=1 PerfScore 1.00
G_M24419_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
cmp w2, #1
- bne G_M24419_IG06
+ bne G_M24419_IG05
;; size=12 bbWeight=0.25 PerfScore 1.12
G_M24419_IG04: ; bbWeight=0.12, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldrh w2, [x0, #0x0C]
cmp w2, #95
- bne G_M24419_IG06
+ beq G_M24419_IG08
;; size=12 bbWeight=0.12 PerfScore 0.56
-G_M24419_IG05: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x1
- ; gcrRegs +[x0]
- b G_M24419_IG11
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M24419_IG06: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG05: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cbz x1, G_M24419_IG10
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24419_IG07: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x1, #0x08]
cmp w2, #1
bne G_M24419_IG10
;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M24419_IG08: ; bbWeight=0.12, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG07: ; bbWeight=0.12, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldrh w2, [x1, #0x0C]
cmp w2, #95
- bne G_M24419_IG10
- ;; size=12 bbWeight=0.12 PerfScore 0.56
-G_M24419_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
+ beq G_M24419_IG09
+ b G_M24419_IG10
+ ;; size=16 bbWeight=0.12 PerfScore 0.69
+G_M24419_IG08: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
b G_M24419_IG11
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M24419_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1] +[x0]
+ mov x1, x0
; gcrRegs +[x1]
+ b G_M24419_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
mov x2, x1
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
@@ -77,13 +77,20 @@ G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M24419_IG11: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ mov x1, x0
+ ; gcrRegs +[x1]
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M24419_IG11: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M24419_IG12: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 8, PerfScore 13.38, instruction count 30, allocated bytes for code 120 (MethodHash=b70da09c) for method Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 132, prolog size 8, PerfScore 14.25, instruction count 33, allocated bytes for code 132 (MethodHash=b70da09c) for method Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -94,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,92 +10,75 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M16591_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M16591_IG07
+ cbz x20, G_M16591_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #1 LSL #32
- cmp x1, x21
- bne G_M16591_IG07
- cmp x1, x21
- beq G_M16591_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M16591_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M16591_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
ldr w1, [x20, #0x08]
str w1, [x0, #0x08]
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M16591_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- beq G_M16591_IG11
+ beq G_M16591_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -107,7 +90,7 @@ G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -123,15 +106,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 252, prolog size 24, PerfScore 34.25, instruction count 63, allocated bytes for code 252 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 208, prolog size 20, PerfScore 28.38, instruction count 52, allocated bytes for code 208 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -142,7 +124,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -156,9 +138,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -10,92 +10,75 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M27952_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M27952_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M27952_IG07
+ cbz x20, G_M27952_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M27952_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #1 LSL #32
- cmp x1, x21
- bne G_M27952_IG07
- cmp x1, x21
- beq G_M27952_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M27952_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M27952_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M27952_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M27952_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M27952_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M27952_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M27952_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
ldr x1, [x20, #0x08]
str x1, [x0, #0x08]
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M27952_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M27952_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27952_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M27952_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M27952_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M27952_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27952_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- beq G_M27952_IG11
+ beq G_M27952_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M27952_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M27952_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -107,7 +90,7 @@ G_M27952_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M27952_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -123,15 +106,14 @@ G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M27952_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M27952_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 252, prolog size 24, PerfScore 34.25, instruction count 63, allocated bytes for code 252 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
+; Total bytes of code 208, prolog size 20, PerfScore 28.38, instruction count 52, allocated bytes for code 208 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
; ============================================================
Unwind Info:
@@ -142,7 +124,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -156,9 +138,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -10,93 +10,76 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M16591_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M16591_IG07
+ cbz x20, G_M16591_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #1 LSL #32
- cmp x1, x21
- bne G_M16591_IG07
- cmp x1, x21
- beq G_M16591_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M16591_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M16591_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
ldrb w1, [x20, #0x08]
mvn w1, w1
strb w1, [x0, #0x08]
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=28 bbWeight=0.50 PerfScore 3.50
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M16591_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- beq G_M16591_IG11
+ beq G_M16591_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -108,7 +91,7 @@ G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -124,15 +107,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 256, prolog size 24, PerfScore 34.50, instruction count 64, allocated bytes for code 256 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 212, prolog size 20, PerfScore 28.62, instruction count 53, allocated bytes for code 212 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -143,7 +125,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -157,9 +139,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet
1+GSW[System.Canon]]:IsSubsetOfSetWithCompatibleComparer(System.Collections.Generic.IReadOnlySet`1[System.Canon]):ubyte:this (Tier1-OSR)@@ -10,45 +10,49 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T12] ( 4, 2.39) ref -> [fp+0x118] this class-hnd EH-live single-def tier0-frame <System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]]>
-; V01 arg1 [V01,T11] ( 3, 101.89) ref -> x19 class-hnd single-def <System.Collections.Generic.IReadOnlySet`1[System.__Canon]>
+; V00 this [V00,T15] ( 5, 102.27) ref -> [fp+0x118] this class-hnd EH-live single-def tier0-frame <System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]]>
+; V01 arg1 [V01,T16] ( 3, 101.89) ref -> x19 class-hnd single-def <System.Collections.Generic.IReadOnlySet`1[System.__Canon]>
; V02 loc0 [V02 ] ( 10,1001.05) struct (16) [fp+0x100] do-not-enreg[XSFR] multireg-ret addr-exposed ld-addr-op tier0-frame <System.Collections.Frozen.FrozenSet`1+Enumerator[System.__Canon]>
; V03 loc1 [V03 ] ( 1, 1 ) struct ( 8) [fp+0xF8] do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]>
-; V04 loc2 [V04,T09] ( 2, 199.77) ref -> x21 class-hnd <System.__Canon>
-;* V05 loc3 [V05,T25] ( 0, 0 ) ubyte -> zero-ref
+; V04 loc2 [V04,T14] ( 2, 199.77) ref -> x21 class-hnd <System.__Canon>
+;* V05 loc3 [V05,T29] ( 0, 0 ) ubyte -> zero-ref
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "Indirect call through function pointer"
;* V09 tmp3 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Frozen.FrozenSet`1+Enumerator[System.__Canon]>
;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V11 tmp5 [V11,T17] ( 6, 1.09) long -> x2 "Indirect call through function pointer"
+; V11 tmp5 [V11,T22] ( 6, 1.09) long -> x2 "Indirect call through function pointer"
;* V12 tmp6 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V13 tmp7 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V14 tmp8 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V15 tmp9 [V15,T02] ( 4, 599.32) long -> x11 "VirtualCall with runtime lookup"
;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref "OSR entry state var"
-;* V17 tmp11 [V17,T00] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V17 tmp11 [V17,T00] ( 2, 800 ) ubyte -> x1 "Inline return value spill temp"
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref "field V09._entries (fldOffset=0x0)" P-DEP
;* V19 tmp13 [V19 ] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x8)" P-DEP
; V20 tmp14 [V20,T03] ( 3, 599.32) ref -> x2 "arr expr"
; V21 tmp15 [V21,T04] ( 3, 599.32) int -> x1 "index expr"
-; V22 PSPSym [V22,T18] ( 1, 1 ) long -> [fp+0x10] do-not-enreg[V] "PSPSym"
-;* V23 cse0 [V23,T24] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V24 cse1 [V24,T01] ( 3, 600 ) ref -> x21 "CSE - aggressive"
-; V25 cse2 [V25,T10] ( 8, 136.85) long -> x20 hoist multi-def "CSE - aggressive"
-; V26 cse3 [V26,T07] ( 3, 299.66) ref -> x2 "CSE - aggressive"
-; V27 cse4 [V27,T08] ( 3, 299.66) int -> x1 "CSE - aggressive"
-; V28 rat0 [V28,T14] ( 2, 1.13) long -> x1 "Spilling to split statement for tree"
-;* V29 rat1 [V29,T16] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V30 rat2 [V30,T13] ( 2, 1.13) long -> x1 "spilling expr"
-;* V31 rat3 [V31,T15] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V32 rat4 [V32,T05] ( 3, 559.37) long -> x1 "spilling expr"
-; V33 rat5 [V33,T06] ( 3, 447.49) long -> x11 "fgMakeTemp is creating a new local variable"
-; V34 rat6 [V34,T19] ( 3, 0.95) long -> x1 "spilling expr"
-; V35 rat7 [V35,T20] ( 3, 0.76) long -> x2 "fgMakeTemp is creating a new local variable"
-; V36 rat8 [V36,T22] ( 3, 0.49) long -> x20 "Spilling to split statement for tree"
-; V37 rat9 [V37,T21] ( 3, 0.58) long -> x1 "spilling expr"
-; V38 rat10 [V38,T23] ( 3, 0.46) long -> x2 "fgMakeTemp is creating a new local variable"
+; V22 PSPSym [V22,T23] ( 1, 1 ) long -> [fp+0x10] do-not-enreg[V] "PSPSym"
+;* V23 cse0 [V23,T17] ( 0, 0 ) long -> zero-ref hoist multi-def "CSE - aggressive"
+; V24 cse1 [V24,T01] ( 3, 600 ) ref -> x2 "CSE - aggressive"
+; V25 cse2 [V25,T11] ( 10, 336.62) long -> x20 hoist multi-def "CSE - aggressive"
+; V26 cse3 [V26,T12] ( 3, 299.66) ref -> x2 "CSE - aggressive"
+; V27 cse4 [V27,T13] ( 3, 299.66) int -> x1 "CSE - aggressive"
+; V28 rat0 [V28,T19] ( 2, 1.13) long -> x20 "Spilling to split statement for tree"
+;* V29 rat1 [V29,T21] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V30 rat2 [V30,T18] ( 2, 1.13) long -> x1 "spilling expr"
+;* V31 rat3 [V31,T20] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V32 rat4 [V32,T07] ( 2, 399.55) long -> x1 "Spilling to split statement for tree"
+;* V33 rat5 [V33,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V34 rat6 [V34,T05] ( 2, 399.55) long -> x1 "spilling expr"
+;* V35 rat7 [V35,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V36 rat8 [V36,T06] ( 3, 559.37) long -> x1 "spilling expr"
+; V37 rat9 [V37,T09] ( 3, 447.49) long -> x11 "fgMakeTemp is creating a new local variable"
+; V38 rat10 [V38,T24] ( 3, 0.95) long -> x1 "spilling expr"
+; V39 rat11 [V39,T25] ( 3, 0.76) long -> x2 "fgMakeTemp is creating a new local variable"
+; V40 rat12 [V40,T27] ( 3, 0.49) long -> x1 "Spilling to split statement for tree"
+; V41 rat13 [V41,T26] ( 3, 0.58) long -> x2 "spilling expr"
+; V42 rat14 [V42,T28] ( 3, 0.46) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -62,22 +66,20 @@ G_M30499_IG01: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldp x19, x0, [fp, #0xD1FFAB1E]
; gcrRegs +[x0 x19]
;; size=28 bbWeight=0.28 PerfScore 2.26
-G_M30499_IG02: ; bbWeight=0.28, gcVars=0000000000001000 {V00}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00}
+G_M30499_IG02: ; bbWeight=0.28, gcVars=0000000000008000 {V00}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V00 V15}
ldr x20, [x0]
- mov x1, x20
- ldr x1, [x1, #0x38]
+ ldr x1, [x20, #0x38]
ldr x1, [x1, #0x08]
ldr x1, [x1, #0x10]
cmp x1, #128
- ble G_M30499_IG10
- ;; size=28 bbWeight=0.28 PerfScore 3.95
-G_M30499_IG03: ; bbWeight=0.23, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- b G_M30499_IG10
+ ble G_M30499_IG11
+ ;; size=24 bbWeight=0.28 PerfScore 3.81
+G_M30499_IG03: ; bbWeight=0.23, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ b G_M30499_IG11
;; size=4 bbWeight=0.23 PerfScore 0.23
G_M30499_IG04: ; bbWeight=35.96, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x21]
+ ; gcrRegs -[x0] +[x21]
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -85,7 +87,7 @@ G_M30499_IG04: ; bbWeight=35.96, gcrefRegs=280000 {x19 x21}, byrefRegs=00
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov x11, x0
- b G_M30499_IG09
+ b G_M30499_IG10
;; size=28 bbWeight=35.96 PerfScore 161.82
G_M30499_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x21]
@@ -101,8 +103,18 @@ G_M30499_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M30499_IG07: ; bbWeight=99.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19]
+G_M30499_IG07: ; bbWeight=99.89, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0 x19]
+ ldr x20, [x0]
+ mov x1, x20
+ ldr x1, [x1, #0x38]
+ ldr x1, [x1, #0x08]
+ ldr x1, [x1, #0x10]
+ cmp x1, #128
+ ble G_M30499_IG08
+ ;; size=28 bbWeight=99.89 PerfScore 1398.42
+G_M30499_IG08: ; bbWeight=99.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
ldr w1, [fp, #0xD1FFAB1E] // [V02 loc0+0x08]
ldr x2, [fp, #0xD1FFAB1E] // [V02 loc0]
; gcrRegs +[x2]
@@ -124,11 +136,11 @@ G_M30499_IG07: ; bbWeight=99.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}
cmp x2, #136
ble G_M30499_IG04
;; size=60 bbWeight=99.89 PerfScore 2696.95
-G_M30499_IG08: ; bbWeight=79.91, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M30499_IG09: ; bbWeight=79.91, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x11, [x1, #0x88]
cbz x11, G_M30499_IG04
;; size=8 bbWeight=79.91 PerfScore 319.64
-G_M30499_IG09: ; bbWeight=99.89, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M30499_IG10: ; bbWeight=99.89, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
mov x1, x21
@@ -137,68 +149,76 @@ G_M30499_IG09: ; bbWeight=99.89, gcrefRegs=280000 {x19 x21}, byrefRegs=00
blr x2
; gcrRegs -[x0-x1 x21]
; gcr arg pop 0
- cbz w0, G_M30499_IG12
+ cbz w0, G_M30499_IG13
;; size=20 bbWeight=99.89 PerfScore 599.32
-G_M30499_IG10: ; bbWeight=100, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M30499_IG11: ; bbWeight=100, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [fp, #0xD1FFAB1E] // [V00 this]
+ ; gcrRegs +[x0]
ldr w1, [fp, #0xD1FFAB1E] // [V02 loc0+0x08]
add w1, w1, #1
str w1, [fp, #0xD1FFAB1E] // [V02 loc0+0x08]
ldr w1, [fp, #0xD1FFAB1E] // [V02 loc0+0x08]
- ldr x21, [fp, #0xD1FFAB1E] // [V02 loc0]
- ; gcrRegs +[x21]
- ldr w2, [x21, #0x08]
- cmp w1, w2
+ ldr x2, [fp, #0xD1FFAB1E] // [V02 loc0]
+ ; gcrRegs +[x2]
+ ldr w3, [x2, #0x08]
+ cmp w1, w3
blo G_M30499_IG07
- ;; size=32 bbWeight=100 PerfScore 1200.00
-G_M30499_IG11: ; bbWeight=400, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ldr w1, [x21, #0x08]
+ ;; size=36 bbWeight=100 PerfScore 1400.00
+G_M30499_IG12: ; bbWeight=400, gcrefRegs=80005 {x0 x2 x19}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x2, #0x08]
str w1, [fp, #0xD1FFAB1E] // [V02 loc0+0x08]
- b G_M30499_IG16
- ;; size=12 bbWeight=400 PerfScore 2000.00
-G_M30499_IG12: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x21]
+ mov w1, wzr
+ cbz w1, G_M30499_IG17
+ b G_M30499_IG07
+ ;; size=20 bbWeight=400 PerfScore 2600.00
+G_M30499_IG13: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x2 x19]
+ ldr x0, [fp, #0xD1FFAB1E] // [V00 this]
+ ; gcrRegs +[x0]
ldr x1, [x20, #0x38]
ldr x1, [x1, #0x08]
ldr x2, [x1, #0x10]
cmp x2, #144
- ble G_M30499_IG20
- ;; size=20 bbWeight=0.17 PerfScore 1.78
-G_M30499_IG13: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ble G_M30499_IG21
+ ;; size=24 bbWeight=0.17 PerfScore 2.12
+G_M30499_IG14: ; bbWeight=0.14, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x2, [x1, #0x90]
- cbz x2, G_M30499_IG20
+ cbz x2, G_M30499_IG21
;; size=8 bbWeight=0.14 PerfScore 0.54
-G_M30499_IG14: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30499_IG15: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
add x0, fp, #0xD1FFAB1E // [V02 loc0]
blr x2
; gcr arg pop 0
mov w0, wzr
;; size=12 bbWeight=0.17 PerfScore 0.34
-G_M30499_IG15: ; bbWeight=0.17, epilog, nogc, extend
+G_M30499_IG16: ; bbWeight=0.17, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #0xD1FFAB1E
ret lr
;; size=20 bbWeight=0.17 PerfScore 0.93
-G_M30499_IG16: ; bbWeight=0.10, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30499_IG17: ; bbWeight=0.10, gcVars=0000000000008000 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
ldr x0, [fp, #0x10] // [V22 PSPSym]
- bl G_M30499_IG21
+ ; gcrRegs -[x0]
+ bl G_M30499_IG22
;; size=8 bbWeight=0.10 PerfScore 0.31
-G_M30499_IG17: ; bbWeight=0.10, nogc, extend
+G_M30499_IG18: ; bbWeight=0.10, nogc, extend
nop
;; size=4 bbWeight=0.10 PerfScore 0.05
-G_M30499_IG18: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30499_IG19: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
;; size=4 bbWeight=0.10 PerfScore 0.05
-G_M30499_IG19: ; bbWeight=0.10, epilog, nogc, extend
+G_M30499_IG20: ; bbWeight=0.10, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
add sp, sp, #0xD1FFAB1E
ret lr
;; size=20 bbWeight=0.10 PerfScore 0.57
-G_M30499_IG20: ; bbWeight=0.06, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30499_IG21: ; bbWeight=0.06, gcVars=0000000000008000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov x0, x20
movz x1, #0xD1FFAB1E
...
1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList
1Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
-; V01 loc0 [V01,T01] ( 7, 2.89) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
+; V01 loc0 [V01,T01] ( 7, 2.67) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
; V02 loc1 [V02,T02] ( 3, 0.33) ushort -> x1
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,23 +25,28 @@ G_M207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
;; size=8 bbWeight=1 PerfScore 1.50
G_M207_IG02: ; bbWeight=1.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M207_IG04
+ cbnz x0, G_M207_IG04
;; size=4 bbWeight=1.11 PerfScore 1.11
-G_M207_IG03: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M207_IG03: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M207_IG04: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #2 LSL #32
ldr x1, [x1]
; gcrRegs +[x1]
cmp x0, x1
- bne G_M207_IG05
- ;; size=24 bbWeight=0.22 PerfScore 1.33
-G_M207_IG04: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ beq G_M207_IG03
+ b G_M207_IG06
+ ;; size=28 bbWeight=0.22 PerfScore 1.56
+G_M207_IG05: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.22 PerfScore 0.44
-G_M207_IG05: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [x0, #0x08]
+ b G_M207_IG02
+ ;; size=8 bbWeight=0.11 PerfScore 0.44
+G_M207_IG06: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0, #0x10]
; gcrRegs +[x1]
ldrh w1, [x1, #0x0C]
@@ -51,12 +56,11 @@ G_M207_IG05: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0001
mov w3, #0xD1FFAB1E
cmp w2, #2
ccmp w1, w3, z, hi
- beq G_M207_IG04
- ldr x0, [x0, #0x08]
- b G_M207_IG02
- ;; size=40 bbWeight=0.11 PerfScore 1.50
+ beq G_M207_IG03
+ b G_M207_IG05
+ ;; size=36 bbWeight=0.11 PerfScore 1.17
-; Total bytes of code 84, prolog size 8, PerfScore 5.89, instruction count 21, allocated bytes for code 84 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
+; Total bytes of code 92, prolog size 8, PerfScore 5.78, instruction count 23, allocated bytes for code 92 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
; ============================================================
Unwind Info:
@@ -67,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList
1Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
-; V01 loc0 [V01,T01] ( 7, 2.24) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
+; V01 loc0 [V01,T01] ( 7, 2.18) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
; V02 loc1 [V02,T02] ( 3, 0.10) ushort -> x1
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,23 +25,28 @@ G_M207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
;; size=8 bbWeight=1 PerfScore 1.50
G_M207_IG02: ; bbWeight=1.03, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M207_IG04
+ cbnz x0, G_M207_IG04
;; size=4 bbWeight=1.03 PerfScore 1.03
-G_M207_IG03: ; bbWeight=0.06, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M207_IG03: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M207_IG04: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #2 LSL #32
ldr x1, [x1]
; gcrRegs +[x1]
cmp x0, x1
- bne G_M207_IG05
- ;; size=24 bbWeight=0.06 PerfScore 0.34
-G_M207_IG04: ; bbWeight=0.06, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ beq G_M207_IG03
+ b G_M207_IG06
+ ;; size=28 bbWeight=0.06 PerfScore 0.39
+G_M207_IG05: ; bbWeight=0.03, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.06 PerfScore 0.11
-G_M207_IG05: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [x0, #0x08]
+ b G_M207_IG02
+ ;; size=8 bbWeight=0.03 PerfScore 0.13
+G_M207_IG06: ; bbWeight=0.03, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0, #0x10]
; gcrRegs +[x1]
ldrh w1, [x1, #0x0C]
@@ -51,12 +56,11 @@ G_M207_IG05: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0001
mov w3, #0xD1FFAB1E
cmp w2, #2
ccmp w1, w3, z, hi
- beq G_M207_IG04
- ldr x0, [x0, #0x08]
- b G_M207_IG02
- ;; size=40 bbWeight=0.03 PerfScore 0.43
+ beq G_M207_IG03
+ b G_M207_IG05
+ ;; size=36 bbWeight=0.03 PerfScore 0.34
-; Total bytes of code 84, prolog size 8, PerfScore 3.41, instruction count 21, allocated bytes for code 84 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
+; Total bytes of code 92, prolog size 8, PerfScore 3.39, instruction count 23, allocated bytes for code 92 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
; ============================================================
Unwind Info:
@@ -67,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,92 +10,75 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M27952_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M27952_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M27952_IG07
+ cbz x20, G_M27952_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M27952_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #1 LSL #32
- cmp x1, x21
- bne G_M27952_IG07
- cmp x1, x21
- beq G_M27952_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M27952_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M27952_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M27952_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M27952_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M27952_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M27952_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M27952_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
ldr x1, [x20, #0x08]
str x1, [x0, #0x08]
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M27952_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M27952_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27952_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M27952_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M27952_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M27952_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27952_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- beq G_M27952_IG11
+ beq G_M27952_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M27952_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M27952_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -103,7 +86,7 @@ G_M27952_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M27952_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -119,15 +102,14 @@ G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M27952_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M27952_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 236, prolog size 24, PerfScore 33.12, instruction count 59, allocated bytes for code 236 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
+; Total bytes of code 192, prolog size 20, PerfScore 27.25, instruction count 48, allocated bytes for code 192 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
; ============================================================
Unwind Info:
@@ -138,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -152,9 +134,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -10,16 +10,14 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T07] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T02] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T07] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V09 cse0 [V09,T03] ( 4, 1.75) long -> x0 "CSE - moderate"
-; V10 cse1 [V10,T05] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V11 cse2 [V11,T08] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V06 tmp3 [V06,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T05] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V08 tmp5 [V08,T03] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V09 cse0 [V09,T06] ( 2, 1 ) long -> x1 "CSE - moderate"
;
; Lcl frame size = 0
@@ -33,59 +31,46 @@ G_M44930_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=20 bbWeight=1 PerfScore 3.50
G_M44930_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M44930_IG07
+ cbz x20, G_M44930_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M44930_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- cmp x1, x0
- bne G_M44930_IG07
- cmp x1, x0
- beq G_M44930_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M44930_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M44930_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ldr w0, [x20, #0x08]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M44930_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44930_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M44930_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M44930_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x10]
strb wzr, [x19, #0x10]
- cbz w0, G_M44930_IG09
+ cbz w0, G_M44930_IG08
mov w0, wzr
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M44930_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44930_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M44930_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x19]
+ ldr w0, [x20, #0x08]
+ ;; size=4 bbWeight=0.50 PerfScore 1.50
+G_M44930_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M44930_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- beq G_M44930_IG11
+ beq G_M44930_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M44930_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M44930_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -93,7 +78,7 @@ G_M44930_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M44930_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M44930_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -109,14 +94,14 @@ G_M44930_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M44930_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 204, prolog size 20, PerfScore 27.75, instruction count 51, allocated bytes for code 204 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
+; Total bytes of code 172, prolog size 20, PerfScore 25.50, instruction count 43, allocated bytes for code 172 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,105 +10,91 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 4) zero-ref HFA(float) single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.strcts.strct003.strct003.S+S2>
;* V04 loc0 [V04 ] ( 0, 0 ) struct ( 8) zero-ref HFA(float) <ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.strcts.strct003.strct003.S+S2>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T10] ( 0, 0 ) int -> zero-ref
+;* V06 tmp1 [V06,T08] ( 0, 0 ) int -> zero-ref
; V07 tmp2 [V07,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V08 tmp3 [V08,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp3 [V08,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V09 tmp4 [V09,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.strcts.strct003.strct003.S+S2>
-; V10 tmp5 [V10,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V11 tmp6 [V11,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V12 tmp7 [V12,T11] ( 4, 2.50) float -> [fp+0x14] single-def "field V03.Foo (fldOffset=0x0)" P-INDEP
+; V10 tmp5 [V10,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V11 tmp6 [V11,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V12 tmp7 [V12,T09] ( 4, 2.50) float -> [fp+0x1C] single-def "field V03.Foo (fldOffset=0x0)" P-INDEP
;* V13 tmp8 [V13 ] ( 0, 0 ) float -> zero-ref single-def "field V04.Foo (fldOffset=0x0)" P-INDEP
-; V14 cse0 [V14,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V15 cse1 [V15,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V16 cse2 [V16,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V14 cse0 [V14,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M46944_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x20]
mov fp, sp
- str s0, [fp, #0x14] // [V12 tmp7]
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=28 bbWeight=1 PerfScore 5.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M46944_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M46944_IG07
+ cbz x20, G_M46944_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M46944_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #1 LSL #32
- add x0, x21, #0xD1FFAB1E
- cmp x1, x0
- bne G_M46944_IG07
- add x0, x21, #0xD1FFAB1E
- cmp x1, x0
- beq G_M46944_IG05
- ;; size=40 bbWeight=0.50 PerfScore 4.25
-G_M46944_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M46944_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M46944_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M46944_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M46944_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M46944_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- add x0, x21, #0xD1FFAB1E
- bl CORINFO_HELP_UNBOX
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M46944_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ldr s0, [fp, #0x14] // [V12 tmp7]
+ str s0, [fp, #0x1C] // [V12 tmp7]
str s0, [x20, #0x0C]
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs -[x20] +[x0]
; gcr arg pop 0
- ldr s0, [fp, #0x14] // [V12 tmp7]
+ ldr s0, [fp, #0x1C] // [V12 tmp7]
str s0, [x0, #0x08]
- ;; size=24 bbWeight=0.50 PerfScore 3.75
-G_M46944_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M46944_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46944_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M46944_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19-x20]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M46944_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M46944_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M46944_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- beq G_M46944_IG11
+ beq G_M46944_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M46944_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M46944_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ str s0, [fp, #0x1C] // [V12 tmp7]
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M46944_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ldr s0, [fp, #0x1C] // [V12 tmp7]
+ ;; size=20 bbWeight=0.25 PerfScore 1.25
+G_M46944_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -119,21 +105,19 @@ G_M46944_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x1]
mov x2, x20
; gcrRegs +[x2]
- ldr s0, [fp, #0x14] // [V12 tmp7]
ldr x0, [x3, #0x08]
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
- ;; size=36 bbWeight=0.50 PerfScore 6.75
-G_M46944_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
+ ;; size=32 bbWeight=0.50 PerfScore 5.75
+G_M46944_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 244, prolog size 28, PerfScore 35.50, instruction count 61, allocated bytes for code 244 (MethodHash=4c56489f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.strcts.strct003.strct003.S+S2):System.Object (FullOpts)
+; Total bytes of code 208, prolog size 20, PerfScore 28.50, instruction count 52, allocated bytes for code 208 (MethodHash=4c56489f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.strcts.strct003.strct003.S+S2):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -144,7 +128,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -158,9 +142,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+ E4 end
+ E4 end
@@ -56,12 +56,11 @@ G_M4885_IG05: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {},
ldr w4, [x2, #0x08]
cmp w4, w3
blo G_M4885_IG04
- add x2, x2, #16
+ b G_M4885_IG08
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M4885_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
; gcrRegs -[x2]
; byrRegs +[x2]
- sxtw w4, w3
- ;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M4885_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
mov w3, w4
add x0, x0, #28
; gcrRegs -[x0]
@@ -77,8 +76,16 @@ G_M4885_IG07: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M4885_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0 x2]
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
+ sxtw w4, w3
+ b G_M4885_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 8, PerfScore 20.75, instruction count 30, allocated bytes for code 120 (MethodHash=8f5cecea) for method System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 21.75, instruction count 32, allocated bytes for code 128 (MethodHash=8f5cecea) for method System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
; ============================================================
Unwind Info:
@@ -89,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,114 +8,95 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4 ) long -> [fp+0x18] EH-live single-def
+; V00 TypeCtx [V00,T00] ( 8, 3 ) long -> [fp+0x28] EH-live single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[int]>
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
-; V03 loc0 [V03,T07] ( 5, 3 ) ref -> [fp+0x10] do-not-enreg[M] class-hnd EH-live <System.Exception>
+; V02 arg1 [V02,T01] ( 4, 2 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
+; V03 loc0 [V03,T06] ( 5, 0 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <System.Exception>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V09 tmp2 [V09,T08] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
-; V10 tmp3 [V10,T00] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V11 tmp4 [V11,T11] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V12 tmp5 [V12,T04] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp6 [V13,T05] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V14 tmp7 [V14,T12] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V15 PSPSym [V15,T10] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V16 cse0 [V16,T06] ( 7, 3.50) long -> x19 multi-def "CSE - aggressive"
-; V17 cse1 [V17,T09] ( 3, 2 ) long -> x20 "CSE - moderate"
+; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
+; V09 tmp2 [V09,T08] ( 3, 0 ) long -> x4 "fgMakeTemp is creating a new local variable"
+; V10 tmp3 [V10,T05] ( 6, 0 ) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V11 tmp4 [V11,T09] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp5 [V12,T02] ( 2, 1 ) byref -> [fp+0x10] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp6 [V13,T03] ( 2, 1 ) int -> [fp+0x24] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V14 tmp7 [V14,T10] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V15 PSPSym [V15,T04] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 32
+; Lcl frame size = 48
-G_M22620_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M22620_IG01: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x30]
mov fp, sp
add x4, sp, #64
- stp x0, x4, [fp, #0x20] // [V15 PSPSym]
- str x0, [fp, #0x18] // [V00 TypeCtx]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M22620_IG02: ; bbWeight=1, gcrefRegs=0008 {x3}, byrefRegs=0002 {x1}, byref
+ stp x0, x4, [fp, #0x30] // [V15 PSPSym]
+ str x0, [fp, #0x28] // [V00 TypeCtx]
+ str x1, [fp, #0x10] // [V12 tmp5]
+ ; GC ptr vars +{V12}
+ str w2, [fp, #0x24] // [V13 tmp6]
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M22620_IG02: ; bbWeight=0, gcVars=0000000000000004 {V12}, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x3]
+ ldr x1, [fp, #0x10] // [V12 tmp5]
; byrRegs +[x1]
+ ldr w2, [fp, #0x24] // [V13 tmp6]
ldr x0, [x3, #0x08]
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
+ ; GC ptr vars -{V12}
blr x3
; gcrRegs -[x0]
; byrRegs -[x1]
; gcr arg pop 0
- str xzr, [fp, #0x10] // [V03 loc0]
+ str xzr, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
- ;; size=16 bbWeight=1 PerfScore 8.00
-G_M22620_IG03: ; bbWeight=1, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr x0, [fp, #0x10] // [V03 loc0]
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M22620_IG03: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x0]
- cbz x0, G_M22620_IG09
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
+ cbz x0, G_M22620_IG05
+ ldr x0, [fp, #0x28] // [V00 TypeCtx]
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
- ldr x1, [fp, #0x10] // [V03 loc0]
+ ldr x1, [x0, #0x38]
+ ldr x0, [x1]
+ ldr x1, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M22620_IG08
- ;; size=40 bbWeight=1 PerfScore 16.00
-G_M22620_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- mov x2, x19
- cmp x20, x2
- beq G_M22620_IG06
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M22620_IG05: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ cbz x0, G_M22620_IG07
+ ldr x2, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x4, [x3, #0x38]
+ ldr x4, [x4]
+ cmp x2, x4
+ beq G_M22620_IG04
+ mov x0, x4
; gcrRegs -[x0]
- mov x0, x2
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M22620_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- cmp x20, x19
- bne G_M22620_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M22620_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M22620_IG08: ; bbWeight=0, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- mov x0, x19
- bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- ldr x1, [fp, #0x10] // [V03 loc0]
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
+ ;; size=68 bbWeight=0 PerfScore 0.00
+G_M22620_IG04: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x2, [x3, #0x38]
ldr x2, [x2]
- ; GC ptr vars -{V03}
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- bl CORINFO_HELP_THROW
+ cmp x1, x2
+ bne G_M22620_IG07
+ b G_M22620_IG06
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M22620_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M22620_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
+ ; GC ptr vars -{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
; gcr arg pop 0
@@ -127,40 +108,66 @@ G_M22620_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bl CORINFO_HELP_THROW
; gcrRegs -[x0]
+ ; gcr arg pop 0
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M22620_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs +[x0]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M22620_IG07: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ ; GC ptr vars +{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
+ bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ ldr x1, [fp, #0x18] // [V03 loc0]
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ ; GC ptr vars -{V03}
+ blr x2
+ ; gcrRegs -[x1]
+ ; gcr arg pop 0
+ bl CORINFO_HELP_THROW
+ ; gcrRegs -[x0]
; gcr arg pop 0
brk_unix #0
;; size=48 bbWeight=0 PerfScore 0.00
-G_M22620_IG10: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M22620_IG08: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp fp, lr, [sp, #-0x20]!
add x3, fp, #64
str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M22620_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- str x0, [fp, #0x10] // [V03 loc0]
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M22620_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
adr x0, [G_M22620_IG03]
; gcrRegs -[x0]
;; size=8 bbWeight=0 PerfScore 0.00
-G_M22620_IG12: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+G_M22620_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 24, PerfScore 36.38, instruction count 61, allocated bytes for code 244 (MethodHash=0395a7a3) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 272, prolog size 28, PerfScore 0.00, instruction count 68, allocated bytes for code 272 (MethodHash=0395a7a3) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,12 +175,9 @@ Unwind Info:
...
@@ -8,114 +8,95 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4 ) long -> [fp+0x18] EH-live single-def
+; V00 TypeCtx [V00,T00] ( 8, 3 ) long -> [fp+0x28] EH-live single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[int]>
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
-; V03 loc0 [V03,T07] ( 5, 3 ) ref -> [fp+0x10] do-not-enreg[M] class-hnd EH-live <System.Exception>
+; V02 arg1 [V02,T01] ( 4, 2 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
+; V03 loc0 [V03,T06] ( 5, 0 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <System.Exception>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V09 tmp2 [V09,T08] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
-; V10 tmp3 [V10,T00] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V11 tmp4 [V11,T11] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V12 tmp5 [V12,T04] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp6 [V13,T05] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V14 tmp7 [V14,T12] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V15 PSPSym [V15,T10] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V16 cse0 [V16,T06] ( 7, 3.50) long -> x19 multi-def "CSE - aggressive"
-; V17 cse1 [V17,T09] ( 3, 2 ) long -> x20 "CSE - moderate"
+; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
+; V09 tmp2 [V09,T08] ( 3, 0 ) long -> x4 "fgMakeTemp is creating a new local variable"
+; V10 tmp3 [V10,T05] ( 6, 0 ) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V11 tmp4 [V11,T09] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp5 [V12,T02] ( 2, 1 ) byref -> [fp+0x10] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp6 [V13,T03] ( 2, 1 ) int -> [fp+0x24] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V14 tmp7 [V14,T10] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V15 PSPSym [V15,T04] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 32
+; Lcl frame size = 48
-G_M57052_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M57052_IG01: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x30]
mov fp, sp
add x4, sp, #64
- stp x0, x4, [fp, #0x20] // [V15 PSPSym]
- str x0, [fp, #0x18] // [V00 TypeCtx]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M57052_IG02: ; bbWeight=1, gcrefRegs=0008 {x3}, byrefRegs=0002 {x1}, byref
+ stp x0, x4, [fp, #0x30] // [V15 PSPSym]
+ str x0, [fp, #0x28] // [V00 TypeCtx]
+ str x1, [fp, #0x10] // [V12 tmp5]
+ ; GC ptr vars +{V12}
+ str w2, [fp, #0x24] // [V13 tmp6]
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M57052_IG02: ; bbWeight=0, gcVars=0000000000000004 {V12}, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x3]
+ ldr x1, [fp, #0x10] // [V12 tmp5]
; byrRegs +[x1]
+ ldr w2, [fp, #0x24] // [V13 tmp6]
ldr x0, [x3, #0x08]
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
+ ; GC ptr vars -{V12}
blr x3
; gcrRegs -[x0]
; byrRegs -[x1]
; gcr arg pop 0
- str xzr, [fp, #0x10] // [V03 loc0]
+ str xzr, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
- ;; size=16 bbWeight=1 PerfScore 8.00
-G_M57052_IG03: ; bbWeight=1, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr x0, [fp, #0x10] // [V03 loc0]
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M57052_IG03: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x0]
- cbz x0, G_M57052_IG09
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
+ cbz x0, G_M57052_IG05
+ ldr x0, [fp, #0x28] // [V00 TypeCtx]
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
- ldr x1, [fp, #0x10] // [V03 loc0]
+ ldr x1, [x0, #0x38]
+ ldr x0, [x1]
+ ldr x1, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M57052_IG08
- ;; size=40 bbWeight=1 PerfScore 16.00
-G_M57052_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- mov x2, x19
- cmp x20, x2
- beq G_M57052_IG06
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M57052_IG05: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ cbz x0, G_M57052_IG07
+ ldr x2, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x4, [x3, #0x38]
+ ldr x4, [x4]
+ cmp x2, x4
+ beq G_M57052_IG04
+ mov x0, x4
; gcrRegs -[x0]
- mov x0, x2
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M57052_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- cmp x20, x19
- bne G_M57052_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M57052_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M57052_IG08: ; bbWeight=0, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- mov x0, x19
- bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- ldr x1, [fp, #0x10] // [V03 loc0]
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
+ ;; size=68 bbWeight=0 PerfScore 0.00
+G_M57052_IG04: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x2, [x3, #0x38]
ldr x2, [x2]
- ; GC ptr vars -{V03}
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- bl CORINFO_HELP_THROW
+ cmp x1, x2
+ bne G_M57052_IG07
+ b G_M57052_IG06
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M57052_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M57052_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
+ ; GC ptr vars -{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
; gcr arg pop 0
@@ -127,40 +108,66 @@ G_M57052_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bl CORINFO_HELP_THROW
; gcrRegs -[x0]
+ ; gcr arg pop 0
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M57052_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs +[x0]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M57052_IG07: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ ; GC ptr vars +{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
+ bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ ldr x1, [fp, #0x18] // [V03 loc0]
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ ; GC ptr vars -{V03}
+ blr x2
+ ; gcrRegs -[x1]
+ ; gcr arg pop 0
+ bl CORINFO_HELP_THROW
+ ; gcrRegs -[x0]
; gcr arg pop 0
brk_unix #0
;; size=48 bbWeight=0 PerfScore 0.00
-G_M57052_IG10: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M57052_IG08: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp fp, lr, [sp, #-0x20]!
add x3, fp, #64
str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M57052_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- str x0, [fp, #0x10] // [V03 loc0]
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M57052_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
adr x0, [G_M57052_IG03]
; gcrRegs -[x0]
;; size=8 bbWeight=0 PerfScore 0.00
-G_M57052_IG12: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+G_M57052_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 24, PerfScore 36.38, instruction count 61, allocated bytes for code 244 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 272, prolog size 28, PerfScore 0.00, instruction count 68, allocated bytes for code 272 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,12 +175,9 @@ Unwind Info:
...
@@ -11,20 +11,20 @@
; V00 arg0 [V00,T08] ( 6, 8 ) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T13] ( 4, 3.50) byref -> x1 single-def
; V02 arg2 [V02,T12] ( 5, 3.50) byref -> x19 single-def
-; V03 loc0 [V03,T00] ( 26, 69 ) int -> x20
-; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x23
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> x3 single-def
-; V06 loc3 [V06,T16] ( 7, 3.50) int -> x2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x4
-; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x5
-; V09 loc6 [V09,T06] ( 7, 17 ) int -> x2
+; V03 loc0 [V03,T00] ( 26, 69 ) int -> x2
+; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x5
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> x6 single-def
+; V06 loc3 [V06,T16] ( 7, 3.50) int -> x7
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x8
+; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x9
+; V09 loc6 [V09,T06] ( 7, 17 ) int -> x7
; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> x5
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x20 "impSpillLclRefs"
+; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x2 "impSpillLclRefs"
;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x2 "Inlining Arg"
+; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x6 "Inlining Arg"
;* V15 tmp4 [V15,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x3 "Inlining Arg"
+; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x6 "Inlining Arg"
;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -32,199 +32,186 @@
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value"
-; V24 cse0 [V24,T09] ( 4, 9 ) int -> x23 "CSE - aggressive"
-; V25 cse1 [V25,T03] ( 10, 32 ) int -> x21 hoist "CSE - aggressive"
-; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x22 "CSE - aggressive"
+; V24 cse0 [V24,T09] ( 4, 9 ) int -> x5 "CSE - aggressive"
+; V25 cse1 [V25,T03] ( 10, 32 ) int -> x3 hoist "CSE - aggressive"
+; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x4 "CSE - aggressive"
;
; Lcl frame size = 8
G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
mov x19, x2
; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
; gcrRegs +[x0]
; byrRegs +[x1]
- ldr w20, [x1]
- ldr w21, [x0, #0x08]
+ ldr w2, [x1]
+ ldr w3, [x0, #0x08]
;; size=8 bbWeight=1 PerfScore 6.00
G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w21, w20
- beq G_M24207_IG29
+ cmp w3, w2
+ beq G_M24207_IG27
;; size=8 bbWeight=8 PerfScore 12.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w20, w21
- bhs G_M24207_IG35
- add x22, x0, #12
- ; byrRegs +[x22]
- ldrh w23, [x22, w20, UXTW #2]
- sxtw w2, w23
- cmp w2, #32
- ccmp w2, #9, z, ne
- ccmp w2, #13, z, ne
- beq G_M24207_IG07
+ cmp w2, w3
+ bhs G_M24207_IG33
+ add x4, x0, #12
+ ; byrRegs +[x4]
+ ldrh w5, [x4, w2, UXTW #2]
+ sxtw w6, w5
+ cmp w6, #32
+ ccmp w6, #9, z, ne
+ ccmp w6, #13, z, ne
+ beq G_M24207_IG06
;; size=36 bbWeight=4 PerfScore 32.00
-G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, #10
- beq G_M24207_IG07
+G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w6, #10
+ bne G_M24207_IG07
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- sxtw w3, w23
- cmp w3, #34
- beq G_M24207_IG09
- b G_M24207_IG08
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
- ; byrRegs -[x22]
- add w20, w20, #1
+G_M24207_IG06: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
+ ; byrRegs -[x4]
+ add w2, w2, #1
b G_M24207_IG03
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; byrRegs +[x22]
- cmp w3, #39
- beq G_M24207_IG09
- mov w23, wzr
+G_M24207_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ ; byrRegs +[x4]
+ sxtw w6, w5
+ cmp w6, #34
+ beq G_M24207_IG08
+ cmp w6, #39
+ bne G_M24207_IG09
+ ;; size=20 bbWeight=0.50 PerfScore 1.75
+G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ add w2, w2, #1
b G_M24207_IG10
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ mov w5, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w3, w20
- sxtw w2, w21
- mov w4, wzr
+G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sxtw w6, w2
+ sxtw w7, w3
+ mov w8, wzr
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w21, w20
- ble G_M24207_IG17
- cmp w20, w21
- bhs G_M24207_IG35
- ldrh w5, [x22, w20, UXTW #2]
- cmp w5, #92
+G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w3, w2
+ ble G_M24207_IG16
+ cmp w2, w3
+ bhs G_M24207_IG33
+ ldrh w9, [x4, w2, UXTW #2]
+ cmp w9, #92
bne G_M24207_IG12
- mov w4, #1
- add w20, w20, #2
+ mov w8, #1
+ add w2, w2, #2
b G_M24207_IG11
;; size=40 bbWeight=4 PerfScore 38.00
-G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG15
+G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cbnz w5, G_M24207_IG14
;; size=4 bbWeight=4 PerfScore 4.00
-G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w5, #61
- beq G_M24207_IG19
- cmp w5, #44
- beq G_M24207_IG19
- cmp w5, #34
- beq G_M24207_IG29
- cmp w5, #39
- bne G_M24207_IG16
- ;; size=32 bbWeight=2 PerfScore 12.00
-G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x1 x22]
- b G_M24207_IG29
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; gcrRegs +[x0]
- ; byrRegs +[x1 x22]
- cmp w5, w23
+G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w9, #61
beq G_M24207_IG18
+ cmp w9, #44
+ beq G_M24207_IG18
+ cmp w9, #34
+ beq G_M24207_IG27
+ cmp w9, #39
+ bne G_M24207_IG15
+ b G_M24207_IG27
+ ;; size=36 bbWeight=2 PerfScore 14.00
+G_M24207_IG14: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w9, w5
+ beq G_M24207_IG17
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+G_M24207_IG15: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ add w2, w2, #1
b G_M24207_IG11
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w20, w21
- b G_M24207_IG19
+G_M24207_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sxtw w2, w3
+ b G_M24207_IG18
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w2, w20
- add w20, w2, #1
+G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sxtw w7, w2
+ add w2, w7, #1
;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG25
- sub w2, w20, #1
- b G_M24207_IG21
+G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cbnz w5, G_M24207_IG24
+ sub w7, w2, #1
+ b G_M24207_IG20
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sub w2, w2, #1
+G_M24207_IG19: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sub w7, w7, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, w3
- blt G_M24207_IG22
- cmp w2, w21
- bhs G_M24207_IG35
- ldrh w5, [x22, w2, UXTW #2]
+G_M24207_IG20: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w7, w6
+ blt G_M24207_IG21
+ cmp w7, w3
+ bhs G_M24207_IG33
...
@@ -11,25 +11,24 @@
; V00 arg0 [V00,T02] ( 7, 5 ) ref -> x19 class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 4, 3.50) byref -> x20 single-def
; V02 arg2 [V02,T04] ( 4, 3.50) byref -> x21 single-def
-; V03 loc0 [V03,T08] ( 5, 4 ) int -> x23
+; V03 loc0 [V03,T08] ( 5, 2.50) int -> x22
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
-; V05 loc2 [V05,T01] ( 6, 18.50) int -> x24
+; V05 loc2 [V05,T01] ( 6, 17 ) int -> x0
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
;* V08 tmp2 [V08,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp3 [V09,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T00] ( 5, 36 ) ushort -> x1 "Inlining Arg"
-; V11 cse0 [V11,T05] ( 4, 5.50) int -> x22 "CSE - aggressive"
-; V12 cse1 [V12,T06] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
+; V10 tmp4 [V10,T00] ( 5, 36 ) ushort -> x3 "Inlining Arg"
+; V11 cse0 [V11,T05] ( 4, 5.50) int -> x2 "CSE - aggressive"
+; V12 cse1 [V12,T06] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive"
; V13 cse2 [V13,T07] ( 3, 3 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
G_M22854_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -37,7 +36,7 @@ G_M22854_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x20]
mov x21, x2
; byrRegs +[x21]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=28 bbWeight=1 PerfScore 5.00
G_M22854_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -59,64 +58,60 @@ G_M22854_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20
cbz x19, G_M22854_IG04
;; size=40 bbWeight=1 PerfScore 6.50
G_M22854_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
- ldr w22, [x19, #0x08]
- cbz w22, G_M22854_IG04
- mov w23, wzr
- mov w24, wzr
- cmp w22, #0
- ble G_M22854_IG12
- b G_M22854_IG06
- ;; size=28 bbWeight=0.50 PerfScore 3.75
+ ldr w2, [x19, #0x08]
+ cbnz w2, G_M22854_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M22854_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x20-x21]
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M22854_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M22854_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, gcvars, byref
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M22854_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, gcvars, byref, isz
; gcrRegs +[x19]
; byrRegs +[x20-x21]
- add x0, x19, #12
- ; byrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M22854_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300001 {x0 x20 x21}, byref, isz
- ldrh w1, [x0, w24, UXTW #2]
- mov w2, #0xD1FFAB1E
- mov w3, #0xD1FFAB1E
- cmp w1, #45
- ccmp w1, w2, z, ne
- ccmp w1, w3, z, ne
- beq G_M22854_IG11
+ mov w22, wzr
+ mov w0, wzr
+ cmp w2, #0
+ ble G_M22854_IG11
+ add x1, x19, #12
+ ; byrRegs +[x1]
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
+G_M22854_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300002 {x1 x20 x21}, byref, isz
+ ldrh w3, [x1, w0, UXTW #2]
+ mov w4, #0xD1FFAB1E
+ mov w5, #0xD1FFAB1E
+ cmp w3, #45
+ ccmp w3, w4, z, ne
+ ccmp w3, w5, z, ne
+ beq G_M22854_IG10
;; size=28 bbWeight=4 PerfScore 26.00
-G_M22854_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=300001 {x0 x20 x21}, byref, isz
- mov w2, #0xD1FFAB1E
- cmp w1, w2
- beq G_M22854_IG11
+G_M22854_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=300002 {x1 x20 x21}, byref, isz
+ mov w4, #0xD1FFAB1E
+ cmp w3, w4
+ beq G_M22854_IG10
;; size=12 bbWeight=2 PerfScore 4.00
-G_M22854_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300001 {x0 x20 x21}, byref, isz
- add w24, w24, #1
- cmp w22, w24
+G_M22854_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300002 {x1 x20 x21}, byref, isz
+ add w0, w0, #1
+ cmp w2, w0
bgt G_M22854_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
+ b G_M22854_IG11
+ ;; size=16 bbWeight=4 PerfScore 12.00
G_M22854_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref
- ; byrRegs -[x0]
- b G_M22854_IG12
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M22854_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref
- sxtw w23, w24
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M22854_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
- cmp w23, #0
+ ; byrRegs -[x1]
+ sxtw w22, w0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22854_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
+ cmp w22, #0
ble G_M22854_IG04
mov x0, x19
; gcrRegs +[x0]
- mov w2, w23
+ mov w2, w22
mov w1, wzr
movz x3, #0xD1FFAB1E // code for System.String:Substring(int,int):System.String:this
movk x3, #0xD1FFAB1E LSL #16
@@ -131,7 +126,7 @@ G_M22854_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14 x20]
- add w1, w23, #1
+ add w1, w22, #1
mov x0, x19
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for System.String:Substring(int):System.String:this
@@ -150,15 +145,14 @@ G_M22854_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {
; byrRegs -[x14 x21]
mov w0, #1
;; size=96 bbWeight=0.50 PerfScore 9.75
-G_M22854_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30]
+G_M22854_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 304, prolog size 32, PerfScore 71.00, instruction count 76, allocated bytes for code 304 (MethodHash=b068a6b9) for method System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
+; Total bytes of code 288, prolog size 28, PerfScore 71.25, instruction count 72, allocated bytes for code 288 (MethodHash=b068a6b9) for method System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -169,7 +163,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
+ Function Length : 72 (0x00048) Actual length = 288 (0x000120)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -181,9 +175,9 @@ Unwind Info:
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
E6 save_next
- E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E4 end
E4 end
E4 end
@@ -11,7 +11,7 @@
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T00] ( 5, 44 ) ref -> x19 class-hnd exact "impAppendStmt" <System.String>
-; V03 tmp2 [V03,T02] ( 5, 15 ) ref -> registers class-hnd "Inline return value spill temp" <System.String>
+; V03 tmp2 [V03,T02] ( 5, 15 ) ref -> x20 class-hnd "Inline return value spill temp" <System.String>
; V04 tmp3 [V04,T01] ( 5, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -81,10 +81,8 @@ G_M26077_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=68 bbWeight=8 PerfScore 144.00
G_M26077_IG03: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr w1, [x19, #0x08]
- cbz w1, G_M26077_IG04
- cbz x0, G_M26077_IG07
- b G_M26077_IG06
- ;; size=16 bbWeight=2 PerfScore 12.00
+ cbnz w1, G_M26077_IG06
+ ;; size=8 bbWeight=2 PerfScore 8.00
G_M26077_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
mov x20, x0
@@ -101,21 +99,19 @@ G_M26077_IG05: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
;; size=4 bbWeight=2 PerfScore 2.00
G_M26077_IG06: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] +[x0 x19]
+ cbz x0, G_M26077_IG07
ldr w3, [x0, #0x08]
- cbz w3, G_M26077_IG07
- add x2, x19, #12
- ; byrRegs +[x2]
- b G_M26077_IG08
- ;; size=16 bbWeight=2 PerfScore 11.00
+ cbnz w3, G_M26077_IG08
+ ;; size=12 bbWeight=2 PerfScore 10.00
G_M26077_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ; byrRegs -[x2]
mov x20, x19
; gcrRegs +[x20]
b G_M26077_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M26077_IG08: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
- ; gcrRegs -[x19-x20] +[x0]
+G_M26077_IG08: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20] +[x0]
+ add x2, x19, #12
; byrRegs +[x2]
add x0, x0, #12
; gcrRegs -[x0]
@@ -130,15 +126,13 @@ G_M26077_IG08: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, by
movk x4, #1 LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs +[x0]
+ ; gcrRegs -[x19] +[x0]
; byrRegs -[x0 x2]
- mov x19, x0
- ; gcrRegs +[x19]
- mov x20, x19
+ mov x20, x0
; gcrRegs +[x20]
;; size=44 bbWeight=2 PerfScore 17.00
G_M26077_IG09: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x0]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -159,7 +153,7 @@ G_M26077_IG11: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 232, prolog size 12, PerfScore 274.50, instruction count 58, allocated bytes for code 232 (MethodHash=15049a22) for method ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 269.50, instruction count 55, allocated bytes for code 220 (MethodHash=15049a22) for method ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -170,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -22,26 +22,20 @@ G_M65033_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x0C]
cmp w1, #1
- beq G_M65033_IG05
+ beq G_M65033_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M65033_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
cmp w1, #2
- bne G_M65033_IG07
+ bne G_M65033_IG08
ldr w1, [x0, #0x10]
add w1, w1, #1
str w1, [x0, #0x10]
ldr w2, [x0, #0x18]
cmp w1, w2
- beq G_M65033_IG07
- mov w0, #1
- ; gcrRegs -[x0]
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M65033_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
+ beq G_M65033_IG08
+ b G_M65033_IG06
+ ;; size=36 bbWeight=0.50 PerfScore 5.75
+G_M65033_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w1, [x0, #0x14]
str w1, [x0, #0x10]
mov w1, #2
@@ -49,23 +43,30 @@ G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov w0, #1
; gcrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M65033_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M65033_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M65033_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M65033_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movn w1, #0
str w1, [x0, #0x0C]
mov w0, wzr
; gcrRegs -[x0]
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 112, prolog size 8, PerfScore 18.50, instruction count 28, allocated bytes for code 112 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 19.00, instruction count 29, allocated bytes for code 116 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -76,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -37,73 +37,77 @@ G_M3894_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
add x1, x0, x1
mov w4, wzr
cmp x0, x1
- bhs G_M3894_IG11
+ bhs G_M3894_IG05
;; size=20 bbWeight=1 PerfScore 3.50
G_M3894_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add x5, x0, #2
ldrh w0, [x0]
cmp w0, #128
- bge G_M3894_IG05
+ bge G_M3894_IG06
;; size=16 bbWeight=4 PerfScore 20.00
G_M3894_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #1
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M3894_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
- cmp w0, #0xD1FFAB1E
- bge G_M3894_IG06
- mov w6, #2
- b G_M3894_IG08
- ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ mov x5, x0
+ b G_M3894_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M3894_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ bge G_M3894_IG07
+ mov w6, #2
+ b G_M3894_IG09
+ ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
movn w6, #0xD1FFAB1E
add w0, w0, w6
mov w6, #0xD1FFAB1E
cmp x5, x1
ccmp w0, w6, c, lo
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
ldrh w0, [x5]
movn w6, #0xD1FFAB1E
add w0, w0, w6
cmp w0, #0xD1FFAB1E
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
mov w6, #4
add x5, x5, #2
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=56 bbWeight=2 PerfScore 22.00
-G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+G_M3894_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #3
;; size=4 bbWeight=2 PerfScore 1.00
-G_M3894_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+G_M3894_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add w0, w4, w6
cmp w0, w2
- bgt G_M3894_IG10
+ bgt G_M3894_IG11
sxtw w4, w0
cmp x5, x1
+ blo G_M3894_IG10
+ b G_M3894_IG12
+ ;; size=28 bbWeight=4 PerfScore 20.00
+G_M3894_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov x0, x5
- blo G_M3894_IG03
- ;; size=28 bbWeight=4 PerfScore 18.00
-G_M3894_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- b G_M3894_IG11
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3894_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ b G_M3894_IG03
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M3894_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w0, #1
cmp w6, #4
cinc w0, w0, ge
sbfiz x0, x0, #1, #32
sub x5, x5, x0
- mov x0, x5
- ;; size=24 bbWeight=0.50 PerfScore 1.75
-G_M3894_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- str x0, [x3]
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
+G_M3894_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ str x5, [x3]
mov w0, w4
;; size=8 bbWeight=1 PerfScore 1.50
-G_M3894_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M3894_IG13: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 80.75, instruction count 50, allocated bytes for code 200 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
+; Total bytes of code 208, prolog size 8, PerfScore 85.75, instruction count 52, allocated bytes for code 208 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -114,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -19,7 +19,7 @@
;
; Lcl frame size = 8
-G_M5512_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M5512_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
@@ -47,7 +47,7 @@ G_M5512_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M5512_IG09
+ cbnz w0, G_M5512_IG07
;; size=44 bbWeight=2 PerfScore 35.00
G_M5512_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x10]
@@ -56,11 +56,11 @@ G_M5512_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
mov w1, #0xD1FFAB1E
; gcrRegs -[x1]
cmp w0, w1
- beq G_M5512_IG07
+ beq G_M5512_IG09
ldr x19, [x19, #0x08]
;; size=24 bbWeight=2 PerfScore 22.00
G_M5512_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M5512_IG07
+ cbz x19, G_M5512_IG09
;; size=4 bbWeight=8 PerfScore 8.00
G_M5512_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
@@ -70,10 +70,11 @@ G_M5512_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
; gcrRegs +[x1]
cmp x19, x1
bne G_M5512_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ b G_M5512_IG11
+ ;; size=28 bbWeight=4 PerfScore 28.00
G_M5512_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x19]
- mov w0, wzr
+ mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M5512_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
@@ -81,15 +82,18 @@ G_M5512_IG08: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M5512_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M5512_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M5512_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b G_M5512_IG09
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 148, prolog size 12, PerfScore 100.00, instruction count 37, allocated bytes for code 148 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
+; Total bytes of code 156, prolog size 12, PerfScore 104.50, instruction count 39, allocated bytes for code 156 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -100,7 +104,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.osx.arm64.checked.mch | 1,402 | 270 | 196 | 936 | -1,484 | +1,904 |
benchmarks.run_pgo.osx.arm64.checked.mch | 5,597 | 1,580 | 875 | 3,142 | -11,064 | +9,136 |
benchmarks.run_tiered.osx.arm64.checked.mch | 523 | 82 | 64 | 377 | -1,080 | +844 |
coreclr_tests.run.osx.arm64.checked.mch | 19,309 | 10,025 | 962 | 8,322 | -45,608 | +7,972 |
libraries.crossgen2.osx.arm64.checked.mch | 4,687 | 519 | 390 | 3,778 | -3,200 | +3,220 |
libraries.pmi.osx.arm64.checked.mch | 10,019 | 1,932 | 1,416 | 6,671 | -10,988 | +10,072 |
libraries_tests.run.osx.arm64.Release.mch | 26,979 | 8,636 | 4,387 | 13,956 | -75,856 | +39,924 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 18,043 | 3,606 | 1,367 | 13,070 | -31,596 | +10,480 |
realworld.run.osx.arm64.checked.mch | 1,583 | 225 | 196 | 1,162 | -1,496 | +1,480 |
88,142 | 26,875 | 9,853 | 51,414 | -182,372 | +85,032 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.osx.arm64.checked.mch | 24,855 | 4 | 24,851 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.osx.arm64.checked.mch | 84,590 | 48,412 | 36,178 | 84 (0.10%) | 84 (0.10%) |
benchmarks.run_tiered.osx.arm64.checked.mch | 48,261 | 37,318 | 10,943 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.osx.arm64.checked.mch | 585,894 | 357,177 | 228,717 | 326 (0.06%) | 327 (0.06%) |
libraries.crossgen2.osx.arm64.checked.mch | 233,353 | 15 | 233,338 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.osx.arm64.checked.mch | 314,707 | 18 | 314,689 | 0 (0.00%) | 9 (0.00%) |
libraries_tests.run.osx.arm64.Release.mch | 637,356 | 466,371 | 170,985 | 2,509 (0.39%) | 2,510 (0.39%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 302,461 | 21,558 | 280,903 | 6 (0.00%) | 14 (0.00%) |
realworld.run.osx.arm64.checked.mch | 31,544 | 3 | 31,541 | 0 (0.00%) | 0 (0.00%) |
2,263,021 | 930,876 | 1,332,145 | 2,925 (0.13%) | 2,944 (0.13%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11180924 (overridden on cmd)
Total bytes of diff: 11181344 (overridden on cmd)
Total bytes of delta: 420 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
100 : 23078.dasm (0.52 % of base)
100 : 22670.dasm (0.49 % of base)
60 : 20635.dasm (3.14 % of base)
44 : 511.dasm (2.29 % of base)
40 : 21477.dasm (0.42 % of base)
36 : 17132.dasm (0.61 % of base)
36 : 17182.dasm (1.04 % of base)
36 : 21952.dasm (0.46 % of base)
32 : 23910.dasm (0.23 % of base)
32 : 12380.dasm (0.22 % of base)
32 : 6226.dasm (0.84 % of base)
32 : 23246.dasm (0.86 % of base)
32 : 23704.dasm (2.35 % of base)
32 : 7319.dasm (2.04 % of base)
28 : 23908.dasm (0.47 % of base)
28 : 1737.dasm (0.27 % of base)
28 : 18993.dasm (0.60 % of base)
24 : 12375.dasm (0.30 % of base)
24 : 13616.dasm (0.25 % of base)
24 : 24276.dasm (0.23 % of base)
Top file improvements (bytes):
-32 : 13626.dasm (-0.31 % of base)
-32 : 12388.dasm (-0.31 % of base)
-28 : 5196.dasm (-0.52 % of base)
-24 : 3712.dasm (-0.68 % of base)
-20 : 5349.dasm (-2.65 % of base)
-16 : 13829.dasm (-1.24 % of base)
-16 : 1251.dasm (-1.20 % of base)
-16 : 4172.dasm (-3.36 % of base)
-16 : 7344.dasm (-4.04 % of base)
-12 : 23081.dasm (-0.21 % of base)
-12 : 12838.dasm (-0.56 % of base)
-12 : 13017.dasm (-3.45 % of base)
-12 : 1602.dasm (-3.33 % of base)
-12 : 18201.dasm (-1.21 % of base)
-12 : 18605.dasm (-0.43 % of base)
-12 : 10301.dasm (-1.10 % of base)
-12 : 2894.dasm (-0.36 % of base)
-12 : 4033.dasm (-0.17 % of base)
-12 : 697.dasm (-1.92 % of base)
-12 : 7311.dasm (-4.62 % of base)
70 total files with Code Size differences (34 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
100 (0.49 % of base) : 22670.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
100 (0.52 % of base) : 23078.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
60 (3.14 % of base) : 20635.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
44 (2.29 % of base) : 511.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (0.42 % of base) : 21477.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (0.46 % of base) : 21952.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (1.04 % of base) : 17182.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 17132.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
32 (0.22 % of base) : 12380.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (0.23 % of base) : 23910.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (2.35 % of base) : 23704.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterLocation:Write2_Location(System.String,System.String,MicroBenchmarks.Serializers.Location,ubyte,ubyte):this (FullOpts)
32 (0.84 % of base) : 6226.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
32 (0.86 % of base) : 23246.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
32 (2.04 % of base) : 7319.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
28 (0.47 % of base) : 23908.dasm - (dynamicClass):_DynamicMethod9(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
28 (0.60 % of base) : 18993.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__checkConstraintLanguageVersionAndRuntimeSupportForConversion|210_2(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
28 (0.27 % of base) : 1737.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
24 (0.23 % of base) : 24276.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)
24 (0.25 % of base) : 13616.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)
24 (0.30 % of base) : 12375.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
Top method improvements (bytes):
-32 (-0.31 % of base) : 13626.dasm - Jil.Deserialize.Methods:ParseISO8601Date(System.IO.TextReader,ushort[],int,int):System.DateTime (FullOpts)
-32 (-0.31 % of base) : 12388.dasm - Jil.Deserialize.Methods:ParseISO8601DateThunkReader(byref,ushort[],int,int):System.DateTime (FullOpts)
-28 (-0.52 % of base) : 5196.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
-24 (-0.68 % of base) : 3712.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
-20 (-2.65 % of base) : 5349.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.IList`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (FullOpts)
-16 (-3.36 % of base) : 4172.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-16 (-1.20 % of base) : 1251.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-16 (-4.04 % of base) : 7344.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-16 (-1.24 % of base) : 13829.dasm - System.Xml.XmlBinaryReader:ReadElementContentAsInt():int:this (FullOpts)
-12 (-0.21 % of base) : 23081.dasm - Jil.Deserialize.Methods:SkipWithLeadChar(System.IO.TextReader,int) (FullOpts)
-12 (-0.43 % of base) : 18605.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-12 (-1.21 % of base) : 18201.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (FullOpts)
-12 (-1.10 % of base) : 10301.dasm - Sigil.Emit`1[System.__Canon]:ValidateTryCatchFinallyBlocks():this (FullOpts)
-12 (-3.33 % of base) : 1602.dasm - System.Collections.Queue:.ctor(int,float):this (FullOpts)
-12 (-0.56 % of base) : 12838.dasm - System.Decimal+DecCalc:VarDecDiv(byref,byref) (FullOpts)
-12 (-4.62 % of base) : 7311.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-12 (-3.45 % of base) : 13017.dasm - System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
-12 (-1.92 % of base) : 697.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-12 (-0.36 % of base) : 2894.dasm - System.Text.RegularExpressions.RegexParser:ScanGroupOpen():System.Text.RegularExpressions.RegexNode:this (FullOpts)
-12 (-0.17 % of base) : 4033.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WritePrimitive(System.Xml.Serialization.TypeMapping,System.String):this (FullOpts)
Top method regressions (percentages):
8 (4.65 % of base) : 14506.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
8 (4.00 % of base) : 20061.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
4 (3.57 % of base) : 2845.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
60 (3.14 % of base) : 20635.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
8 (2.74 % of base) : 6192.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
12 (2.73 % of base) : 23793.dasm - System.Linq.Tests.Perf_Enumerable:EmptyTakeSelectToArray():this (FullOpts)
32 (2.35 % of base) : 23704.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterLocation:Write2_Location(System.String,System.String,MicroBenchmarks.Serializers.Location,ubyte,ubyte):this (FullOpts)
44 (2.29 % of base) : 511.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
4 (2.22 % of base) : 4706.dasm - System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this (FullOpts)
4 (2.22 % of base) : 16822.dasm - System.Xml.XmlTextReaderImpl:MoveToNextContentNode(ubyte):ubyte:this (FullOpts)
8 (2.13 % of base) : 18793.dasm - Microsoft.CodeAnalysis.Compilation:CommonBindScriptClass():Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
32 (2.04 % of base) : 7319.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
4 (2.00 % of base) : 16069.dasm - System.Net.Sockets.Socket:ValidateHandle(System.Net.Sockets.SafeSocketHandle):System.Net.Sockets.SafeSocketHandle (FullOpts)
12 (1.92 % of base) : 15176.dasm - System.Collections.Immutable.ImmutableExtensions:ToArray[int](System.Collections.Generic.IEnumerable`1[int],int):int[] (FullOpts)
20 (1.88 % of base) : 14481.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterIndexViewModel:Write3_CampaignSummaryViewModel(System.String,System.String,MicroBenchmarks.Serializers.CampaignSummaryViewModel,ubyte,ubyte):this (FullOpts)
16 (1.85 % of base) : 24064.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
4 (1.75 % of base) : 19711.dasm - Microsoft.Cci.MetadataWriter:GetDefiningUnitReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IUnitReference (FullOpts)
4 (1.61 % of base) : 18443.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetNullableAnalysisValue():System.Nullable`1[ubyte]:this (FullOpts)
12 (1.36 % of base) : 15205.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
4 (1.27 % of base) : 165.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (FullOpts)
Top method improvements (percentages):
-8 (-6.45 % of base) : 14448.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-8 (-6.06 % of base) : 2768.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-4 (-5.00 % of base) : 7953.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
-12 (-4.62 % of base) : 7311.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-16 (-4.04 % of base) : 7344.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-4 (-3.57 % of base) : 15678.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
-12 (-3.45 % of base) : 13017.dasm - System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
-16 (-3.36 % of base) : 4172.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-12 (-3.33 % of base) : 1602.dasm - System.Collections.Queue:.ctor(int,float):this (FullOpts)
-4 (-3.23 % of base) : 18929.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
-8 (-2.78 % of base) : 13072.dasm - System.IO.Pipes.NamedPipeClientStream:ConnectInternal(int,System.Threading.CancellationToken,int):this (FullOpts)
-20 (-2.65 % of base) : 5349.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.IList`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (FullOpts)
-8 (-2.41 % of base) : 15068.dasm - System.Collections.IterateForEach`1[int]:Stack():int:this (FullOpts)
-4 (-2.27 % of base) : 20527.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 1236.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 5608.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 5821.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 20514.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 4499.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 7439.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34573260 (overridden on cmd)
Total bytes of diff: 34571332 (overridden on cmd)
Total bytes of delta: -1928 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
284 : 19842.dasm (11.11 % of base)
100 : 71742.dasm (0.49 % of base)
100 : 75500.dasm (0.52 % of base)
60 : 71283.dasm (4.67 % of base)
60 : 73904.dasm (4.67 % of base)
60 : 70032.dasm (4.67 % of base)
60 : 74668.dasm (4.67 % of base)
52 : 75409.dasm (3.67 % of base)
52 : 83677.dasm (1.83 % of base)
48 : 44400.dasm (0.42 % of base)
40 : 83261.dasm (2.77 % of base)
40 : 45411.dasm (0.34 % of base)
40 : 65944.dasm (0.42 % of base)
40 : 67231.dasm (2.77 % of base)
36 : 66790.dasm (0.46 % of base)
36 : 81058.dasm (5.77 % of base)
32 : 81206.dasm (2.19 % of base)
32 : 78876.dasm (0.23 % of base)
32 : 67412.dasm (2.20 % of base)
32 : 74307.dasm (2.18 % of base)
Top file improvements (bytes):
-520 : 83694.dasm (-35.23 % of base)
-460 : 83704.dasm (-33.43 % of base)
-156 : 45524.dasm (-21.55 % of base)
-156 : 45548.dasm (-21.55 % of base)
-60 : 63714.dasm (-1.69 % of base)
-56 : 45549.dasm (-0.90 % of base)
-56 : 66688.dasm (-6.70 % of base)
-48 : 64351.dasm (-9.30 % of base)
-48 : 75195.dasm (-3.37 % of base)
-44 : 19415.dasm (-3.01 % of base)
-44 : 37385.dasm (-0.50 % of base)
-40 : 61939.dasm (-0.95 % of base)
-36 : 59778.dasm (-0.50 % of base)
-36 : 59781.dasm (-1.27 % of base)
-36 : 64883.dasm (-0.50 % of base)
-36 : 66776.dasm (-0.50 % of base)
-36 : 44923.dasm (-0.50 % of base)
-36 : 63667.dasm (-2.79 % of base)
-36 : 66589.dasm (-0.50 % of base)
-36 : 68731.dasm (-0.50 % of base)
68 total files with Code Size differences (34 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
284 (11.11 % of base) : 19842.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
100 (0.49 % of base) : 71742.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
100 (0.52 % of base) : 75500.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
60 (4.67 % of base) : 71283.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
60 (4.67 % of base) : 73904.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
60 (4.67 % of base) : 70032.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
60 (4.67 % of base) : 74668.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
52 (1.83 % of base) : 83677.dasm - StringSort:Run():double:this (Tier1)
52 (3.67 % of base) : 75409.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
48 (0.42 % of base) : 44400.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
40 (0.42 % of base) : 65944.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
40 (2.77 % of base) : 83261.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
40 (0.34 % of base) : 45411.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
40 (2.77 % of base) : 67231.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
36 (0.46 % of base) : 66790.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (5.77 % of base) : 81058.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
32 (0.23 % of base) : 78876.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (2.19 % of base) : 81206.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.20 % of base) : 67412.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.18 % of base) : 74307.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
Top method improvements (bytes):
-520 (-35.23 % of base) : 83694.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-460 (-33.43 % of base) : 83704.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-156 (-21.55 % of base) : 45524.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 45548.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-60 (-1.69 % of base) : 63714.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:Free():this (Tier1)
-56 (-6.70 % of base) : 66688.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-56 (-0.90 % of base) : 45549.dasm - LUDecomp:Run():double:this (Tier1)
-48 (-9.30 % of base) : 64351.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(ulong,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
-48 (-3.37 % of base) : 75195.dasm - System.Text.RegularExpressions.RegexCharClass:MayOverlap(System.String,System.String):ubyte (Tier1)
-44 (-0.50 % of base) : 37385.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[ubyte],byref) (Tier1)
-44 (-3.01 % of base) : 19415.dasm - System.Text.RegularExpressions.RegexCharClass:MayOverlap(System.String,System.String):ubyte (Tier1)
-40 (-0.95 % of base) : 61939.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
-36 (-2.79 % of base) : 63667.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:SetSlotAssigned(int,byref):this (Tier1)
-36 (-0.50 % of base) : 59778.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
-36 (-0.50 % of base) : 64883.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
-36 (-0.50 % of base) : 66776.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
-36 (-0.50 % of base) : 44923.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
-36 (-0.50 % of base) : 66589.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
-36 (-0.50 % of base) : 68731.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
-36 (-1.27 % of base) : 59781.dasm - System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]:InvokeCore(System.Threading.Tasks.Task):this (Tier1)
Top method regressions (percentages):
284 (11.11 % of base) : 19842.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
36 (5.77 % of base) : 81058.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
12 (5.26 % of base) : 60962.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
28 (4.76 % of base) : 39135.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
28 (4.76 % of base) : 41689.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
28 (4.76 % of base) : 59208.dasm - System.Text.Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (Tier1)
60 (4.67 % of base) : 71283.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
60 (4.67 % of base) : 73904.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
60 (4.67 % of base) : 70032.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
60 (4.67 % of base) : 74668.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
12 (4.62 % of base) : 15812.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
12 (4.62 % of base) : 25847.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
12 (4.62 % of base) : 60637.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
28 (4.55 % of base) : 80247.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
28 (4.40 % of base) : 79378.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
16 (4.40 % of base) : 61367.dasm - Benchstone.MDBenchI.MDGeneralArray:Bench(int,int[,,],int[,,]):ubyte (Tier1-OSR)
8 (4.08 % of base) : 39572.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (4.08 % of base) : 39577.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
28 (3.93 % of base) : 79375.dasm - System.Threading.SpinWait:SpinOnce(int):this (Tier1)
12 (3.90 % of base) : 70976.dasm - Benchstone.MDBenchF.MDInProd:Test():ubyte:this (Tier1-OSR)
Top method improvements (percentages):
-520 (-35.23 % of base) : 83694.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-460 (-33.43 % of base) : 83704.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-156 (-21.55 % of base) : 45524.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 45548.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-8 (-11.11 % of base) : 15703.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-48 (-9.30 % of base) : 64351.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(ulong,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
-16 (-7.02 % of base) : 22190.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner2(int[,],byref) (Tier1-OSR)
-16 (-6.90 % of base) : 22188.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner1(int[,],byref) (Tier1-OSR)
-56 (-6.70 % of base) : 66688.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-4 (-6.67 % of base) : 81169.dasm - System.Math:Max(double,double):double (Tier1)
-4 (-6.25 % of base) : 78433.dasm - System.Math:Max(double,double):double (Tier1)
-4 (-6.25 % of base) : 59181.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-4 (-6.25 % of base) : 66465.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-8 (-5.88 % of base) : 58606.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (Tier1)
-12 (-5.17 % of base) : 13901.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (Tier1)
-4 (-4.76 % of base) : 80358.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:ShouldPerformGateActivities(int,ubyte):ubyte:this (Tier1)
-4 (-4.76 % of base) : 82383.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:ShouldPerformGateActivities(int,ubyte):ubyte:this (Tier1)
-4 (-4.76 % of base) : 17771.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:ShouldPerformGateActivities(int,ubyte):ubyte:this (Tier1)
-4 (-4.76 % of base) : 79171.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:ShouldPerformGateActivities(int,ubyte):ubyte:this (Tier1)
-4 (-4.76 % of base) : 24322.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:ShouldPerformGateActivities(int,ubyte):ubyte:this (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15560360 (overridden on cmd)
Total bytes of diff: 15560124 (overridden on cmd)
Total bytes of delta: -236 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
100 : 45571.dasm (0.52 % of base)
100 : 44991.dasm (0.49 % of base)
44 : 42048.dasm (2.29 % of base)
40 : 43185.dasm (0.42 % of base)
36 : 43456.dasm (0.46 % of base)
32 : 22600.dasm (0.22 % of base)
32 : 40104.dasm (8.60 % of base)
32 : 46817.dasm (0.23 % of base)
32 : 6474.dasm (0.85 % of base)
28 : 46815.dasm (0.47 % of base)
24 : 27425.dasm (0.25 % of base)
24 : 22590.dasm (0.30 % of base)
24 : 47217.dasm (0.23 % of base)
16 : 45826.dasm (0.43 % of base)
12 : 45256.dasm (0.54 % of base)
12 : 31729.dasm (0.20 % of base)
12 : 31698.dasm (0.28 % of base)
8 : 12194.dasm (2.74 % of base)
8 : 24263.dasm (0.82 % of base)
8 : 30296.dasm (0.30 % of base)
Top file improvements (bytes):
-436 : 47934.dasm (-31.87 % of base)
-152 : 32862.dasm (-14.13 % of base)
-56 : 43722.dasm (-6.97 % of base)
-28 : 25112.dasm (-0.52 % of base)
-20 : 14738.dasm (-2.65 % of base)
-16 : 24719.dasm (-3.36 % of base)
-12 : 8147.dasm (-0.57 % of base)
-12 : 45131.dasm (-0.36 % of base)
-12 : 43604.dasm (-1.92 % of base)
-12 : 24897.dasm (-3.45 % of base)
-8 : 7428.dasm (-6.06 % of base)
-8 : 24538.dasm (-0.46 % of base)
-8 : 28818.dasm (-0.89 % of base)
-8 : 41935.dasm (-1.87 % of base)
-8 : 43296.dasm (-0.51 % of base)
-8 : 24901.dasm (-0.84 % of base)
-8 : 45683.dasm (-0.52 % of base)
-8 : 26577.dasm (-0.42 % of base)
-8 : 6953.dasm (-1.67 % of base)
-4 : 8110.dasm (-1.92 % of base)
67 total files with Code Size differences (30 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
100 (0.49 % of base) : 44991.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
100 (0.52 % of base) : 45571.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
44 (2.29 % of base) : 42048.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier1)
40 (0.42 % of base) : 43185.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (0.46 % of base) : 43456.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location (FullOpts)
32 (0.22 % of base) : 22600.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (0.23 % of base) : 46817.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (8.60 % of base) : 40104.dasm - Benchstone.MDBenchI.MDGeneralArray:Bench(int,int[,,],int[,,]):ubyte (Tier1-OSR)
32 (0.85 % of base) : 6474.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier1)
28 (0.47 % of base) : 46815.dasm - (dynamicClass):_DynamicMethod9(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
24 (0.23 % of base) : 47217.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)
24 (0.25 % of base) : 27425.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)
24 (0.30 % of base) : 22590.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
16 (0.43 % of base) : 45826.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier1)
12 (0.20 % of base) : 31729.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
12 (0.28 % of base) : 31698.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
12 (0.54 % of base) : 45256.dasm - System.IO.StreamWriter+<WriteAsyncInternal>d__68:MoveNext():this (Tier1)
8 (2.35 % of base) : 32301.dasm - Neural:DoNNetIteration(long):long (Tier1-OSR)
8 (2.35 % of base) : 31873.dasm - NeuralJagged:DoNNetIteration(long):long (Tier1-OSR)
8 (0.46 % of base) : 46823.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1)
Top method improvements (bytes):
-436 (-31.87 % of base) : 47934.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-152 (-14.13 % of base) : 32862.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-56 (-6.97 % of base) : 43722.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-28 (-0.52 % of base) : 25112.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
-20 (-2.65 % of base) : 14738.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.IList`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
-16 (-3.36 % of base) : 24719.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-12 (-0.57 % of base) : 8147.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-12 (-3.45 % of base) : 24897.dasm - System.Security.Cryptography.ECParameters:Validate():this (Tier1)
-12 (-1.92 % of base) : 43604.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
-12 (-0.36 % of base) : 45131.dasm - System.Text.RegularExpressions.RegexParser:ScanGroupOpen():System.Text.RegularExpressions.RegexNode:this (Tier1)
-8 (-0.52 % of base) : 45683.dasm - Benchstone.MDBenchF.MDRomber:Test():ubyte:this (Tier1-OSR)
-8 (-1.87 % of base) : 41935.dasm - Microsoft.CodeAnalysis.Compilation:SyntaxTreeCommonFeatures(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxTree]):System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String] (Tier1)
-8 (-0.89 % of base) : 28818.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:GrowTable(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[int,int],ubyte,ubyte):this (Tier1-OSR)
-8 (-0.51 % of base) : 43296.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
-8 (-6.06 % of base) : 7428.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-8 (-0.42 % of base) : 26577.dasm - System.IO.Tests.Perf_FileStream+<WriteAsync>d__37:MoveNext():this (Tier1)
-8 (-0.84 % of base) : 24901.dasm - System.Security.Cryptography.ECCurve:Validate():this (Tier1)
-8 (-0.46 % of base) : 24538.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:ProcessSafeContents(byref,byref,byref,byref,byref,byref) (Tier1)
-8 (-1.67 % of base) : 6953.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
-4 (-1.27 % of base) : 23647.dasm - Benchstone.MDBenchI.MDArray2:Bench(int):ubyte (Tier1-OSR)
Top method regressions (percentages):
32 (8.60 % of base) : 40104.dasm - Benchstone.MDBenchI.MDGeneralArray:Bench(int,int[,,],int[,,]):ubyte (Tier1-OSR)
4 (3.57 % of base) : 8074.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
8 (2.74 % of base) : 12194.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
8 (2.35 % of base) : 32301.dasm - Neural:DoNNetIteration(long):long (Tier1-OSR)
8 (2.35 % of base) : 31873.dasm - NeuralJagged:DoNNetIteration(long):long (Tier1-OSR)
44 (2.29 % of base) : 42048.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier1)
4 (2.22 % of base) : 19997.dasm - System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this (Tier1)
4 (1.75 % of base) : 39961.dasm - Microsoft.Cci.MetadataWriter:GetDefiningUnitReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IUnitReference (Tier1)
4 (1.61 % of base) : 41340.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetNullableAnalysisValue():System.Nullable`1[ubyte]:this (Tier1)
4 (1.39 % of base) : 22839.dasm - System.IO.Stream:ReadAtLeastCore(System.Span`1[ubyte],int,ubyte):int:this (Tier1)
4 (1.37 % of base) : 46924.dasm - Benchstone.BenchI.Array2:Bench(int):ubyte (Tier1-OSR)
8 (1.28 % of base) : 24413.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:CircularCopyUtf16BE(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]) (Tier1)
4 (1.27 % of base) : 3322.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
4 (1.16 % of base) : 41290.dasm - Microsoft.CodeAnalysis.SyntaxNode+ChildSyntaxListEnumeratorStack:TryGetNextAsNodeInSpan(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
4 (1.08 % of base) : 24145.dasm - System.Formats.Asn1.AsnDecoder:DecodeLength(System.ReadOnlySpan`1[ubyte],int,byref,byref):int (Tier1)
4 (1.02 % of base) : 28304.dasm - System.IO.Tests.Perf_FileStream:Write(int,long,int,int,int):this (Tier1-OSR)
4 (1.02 % of base) : 32136.dasm - System.IO.Tests.Perf_FileStream:Write_NoBuffering_PreallocationSize(long,int,int):this (Tier1-OSR)
4 (0.91 % of base) : 4246.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
32 (0.85 % of base) : 6474.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier1)
8 (0.82 % of base) : 24263.dasm - System.Security.Cryptography.X509Certificates.Asn1.TimeAsn:DecodeCore(byref,byref) (Tier1)
Top method improvements (percentages):
-436 (-31.87 % of base) : 47934.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-152 (-14.13 % of base) : 32862.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-56 (-6.97 % of base) : 43722.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-8 (-6.06 % of base) : 7428.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-12 (-3.45 % of base) : 24897.dasm - System.Security.Cryptography.ECParameters:Validate():this (Tier1)
-16 (-3.36 % of base) : 24719.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-20 (-2.65 % of base) : 14738.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.IList`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
-4 (-2.27 % of base) : 24260.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (Tier1)
-4 (-2.08 % of base) : 19592.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-4 (-2.04 % of base) : 3163.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
-4 (-2.04 % of base) : 42256.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-4 (-1.92 % of base) : 8110.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-1.92 % of base) : 43604.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
-8 (-1.87 % of base) : 41935.dasm - Microsoft.CodeAnalysis.Compilation:SyntaxTreeCommonFeatures(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxTree]):System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String] (Tier1)
-8 (-1.67 % of base) : 6953.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
-4 (-1.64 % of base) : 24647.dasm - System.Security.Cryptography.X509Certificates.X509Extension:.ctor(System.Security.Cryptography.Oid,System.ReadOnlySpan`1[ubyte],ubyte):this (Tier1)
-4 (-1.37 % of base) : 24702.dasm - System.Security.Cryptography.SymmetricPadding:GetCiphertextLength(int,int,int):int (Tier1)
-4 (-1.37 % of base) : 24646.dasm - System.Security.Cryptography.X509Certificates.X509Extension:.ctor(System.String,System.ReadOnlySpan`1[ubyte],ubyte):this (Tier1)
-4 (-1.27 % of base) : 23647.dasm - Benchstone.MDBenchI.MDArray2:Bench(int):ubyte (Tier1-OSR)
-4 (-1.05 % of base) : 3376.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 485472376 (overridden on cmd)
Total bytes of diff: 485434740 (overridden on cmd)
Total bytes of delta: -37636 (-0.01 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
140 : 377684.dasm (3.91 % of base)
136 : 383849.dasm (5.23 % of base)
128 : 378439.dasm (4.94 % of base)
116 : 383476.dasm (3.19 % of base)
96 : 519391.dasm (4.33 % of base)
88 : 583287.dasm (1.85 % of base)
72 : 377822.dasm (3.46 % of base)
60 : 397855.dasm (34.88 % of base)
56 : 398272.dasm (32.56 % of base)
52 : 306287.dasm (24.07 % of base)
52 : 306289.dasm (24.07 % of base)
48 : 383572.dasm (2.30 % of base)
44 : 283914.dasm (8.87 % of base)
44 : 383419.dasm (1.91 % of base)
44 : 490936.dasm (2.29 % of base)
40 : 377254.dasm (1.73 % of base)
40 : 583153.dasm (0.46 % of base)
40 : 384153.dasm (1.51 % of base)
36 : 264943.dasm (0.66 % of base)
36 : 490408.dasm (0.61 % of base)
Top file improvements (bytes):
-504 : 246199.dasm (-34.90 % of base)
-168 : 299167.dasm (-31.82 % of base)
-156 : 249525.dasm (-21.55 % of base)
-156 : 349978.dasm (-2.88 % of base)
-156 : 249509.dasm (-21.55 % of base)
-156 : 349184.dasm (-2.88 % of base)
-156 : 572039.dasm (-2.91 % of base)
-156 : 571965.dasm (-2.91 % of base)
-128 : 517942.dasm (-4.14 % of base)
-56 : 296344.dasm (-7.87 % of base)
-56 : 525738.dasm (-8.05 % of base)
-52 : 249532.dasm (-0.83 % of base)
-48 : 507022.dasm (-5.66 % of base)
-48 : 384488.dasm (-0.55 % of base)
-44 : 381822.dasm (-0.67 % of base)
-36 : 384172.dasm (-0.99 % of base)
-32 : 251115.dasm (-10.26 % of base)
-32 : 251161.dasm (-10.81 % of base)
-32 : 264655.dasm (-1.75 % of base)
-32 : 489002.dasm (-4.82 % of base)
70 total files with Code Size differences (34 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
140 (3.91 % of base) : 377684.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
136 (5.23 % of base) : 383849.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
128 (4.94 % of base) : 378439.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
116 (3.19 % of base) : 383476.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
96 (4.33 % of base) : 519391.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
88 (1.85 % of base) : 583287.dasm - Internal.IL.Stubs.UnsafeIntrinsics:EmitIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (FullOpts)
72 (3.46 % of base) : 377822.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
60 (34.88 % of base) : 397855.dasm - testout1:Sub_Funclet_221():int (FullOpts)
56 (32.56 % of base) : 398272.dasm - testout1:Sub_Funclet_221():int (FullOpts)
52 (24.07 % of base) : 306287.dasm - testout1:Test1(int):int (Tier1-OSR)
52 (24.07 % of base) : 306289.dasm - testout1:Test2(int):int (Tier1-OSR)
48 (2.30 % of base) : 383572.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
44 (1.91 % of base) : 383419.dasm - Internal.TypeSystem.MetadataVirtualMethodAlgorithm+<EnumAllVirtualSlots>d__29:MoveNext():ubyte:this (Tier1)
44 (8.87 % of base) : 283914.dasm - RetBufferBug:Main():int (Tier1-OSR)
44 (2.29 % of base) : 490936.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (1.51 % of base) : 384153.dasm - Internal.JitInterface.CorInfoImpl:GetJitInstantiation(Internal.TypeSystem.Instantiation):ulong:this (Tier1)
40 (0.46 % of base) : 583153.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
40 (1.73 % of base) : 377254.dasm - Internal.TypeSystem.MetadataVirtualMethodAlgorithm+<EnumAllVirtualSlots>d__29:MoveNext():ubyte:this (Tier1)
36 (0.61 % of base) : 490408.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
36 (0.66 % of base) : 264943.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (Tier1)
Top method improvements (bytes):
-504 (-34.90 % of base) : 246199.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-168 (-31.82 % of base) : 299167.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
-156 (-21.55 % of base) : 249525.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 249509.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-2.91 % of base) : 572039.dasm - StrSwitchFinalTest:Run():int:this (FullOpts)
-156 (-2.91 % of base) : 571965.dasm - StrSwitchFinalTest:Run():int:this (FullOpts)
-156 (-2.88 % of base) : 349978.dasm - StrSwitchFinalTest:Run():int:this (Tier0-FullOpts)
-156 (-2.88 % of base) : 349184.dasm - StrSwitchFinalTest:Run():int:this (Tier0-FullOpts)
-128 (-4.14 % of base) : 517942.dasm - Test_baduwinfo1:bar(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String):int (FullOpts)
-56 (-8.05 % of base) : 525738.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-56 (-7.87 % of base) : 296344.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (Tier0-FullOpts)
-52 (-0.83 % of base) : 249532.dasm - LUDecomp:Run():double:this (Tier1)
-48 (-5.66 % of base) : 507022.dasm - BinderTracingTests.Helpers:AssemblyNamesMatch(System.Reflection.AssemblyName,System.Reflection.AssemblyName):ubyte (FullOpts)
-48 (-0.55 % of base) : 384488.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
-44 (-0.67 % of base) : 381822.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.AllMethodsOnTypeNode:GetStaticDependencies(ILCompiler.DependencyAnalysis.NodeFactory):System.Collections.Generic.IEnumerable`1[ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1+DependencyListEntry[ILCompiler.DependencyAnalysis.NodeFactory]]:this (Tier1)
-36 (-0.99 % of base) : 384172.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
-32 (-10.81 % of base) : 251161.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-32 (-10.26 % of base) : 251115.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
-32 (-4.82 % of base) : 489002.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTime():System.Nullable`1[System.DateTime]:this (FullOpts)
-32 (-1.75 % of base) : 264655.dasm - System.IO.Strategies.FileStreamHelpers:ValidateArguments(System.String,int,int,int,int,int,long) (Tier1)
Top method regressions (percentages):
60 (34.88 % of base) : 397855.dasm - testout1:Sub_Funclet_221():int (FullOpts)
56 (32.56 % of base) : 398272.dasm - testout1:Sub_Funclet_221():int (FullOpts)
52 (24.07 % of base) : 306287.dasm - testout1:Test1(int):int (Tier1-OSR)
52 (24.07 % of base) : 306289.dasm - testout1:Test2(int):int (Tier1-OSR)
32 (16.00 % of base) : 397745.dasm - testout1:Sub_Funclet_107():int (FullOpts)
32 (16.00 % of base) : 397783.dasm - testout1:Sub_Funclet_145():int (FullOpts)
32 (16.00 % of base) : 397857.dasm - testout1:Sub_Funclet_223():int (FullOpts)
28 (14.00 % of base) : 398162.dasm - testout1:Sub_Funclet_107():int (FullOpts)
28 (14.00 % of base) : 398200.dasm - testout1:Sub_Funclet_145():int (FullOpts)
28 (14.00 % of base) : 398274.dasm - testout1:Sub_Funclet_223():int (FullOpts)
24 (12.77 % of base) : 398199.dasm - testout1:Sub_Funclet_144():int (FullOpts)
24 (12.77 % of base) : 397782.dasm - testout1:Sub_Funclet_144():int (FullOpts)
16 (10.81 % of base) : 384045.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
20 (10.42 % of base) : 397784.dasm - testout1:Sub_Funclet_146():int (FullOpts)
20 (10.42 % of base) : 398201.dasm - testout1:Sub_Funclet_146():int (FullOpts)
20 (10.42 % of base) : 398238.dasm - testout1:Sub_Funclet_184():int (FullOpts)
20 (10.42 % of base) : 397852.dasm - testout1:Sub_Funclet_218():int (FullOpts)
20 (10.42 % of base) : 398269.dasm - testout1:Sub_Funclet_218():int (FullOpts)
20 (10.42 % of base) : 398273.dasm - testout1:Sub_Funclet_222():int (FullOpts)
20 (10.42 % of base) : 397856.dasm - testout1:Sub_Funclet_222():int (FullOpts)
Top method improvements (percentages):
-504 (-34.90 % of base) : 246199.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-168 (-31.82 % of base) : 299167.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
-156 (-21.55 % of base) : 249525.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 249509.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-28 (-14.00 % of base) : 398774.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-28 (-14.00 % of base) : 399190.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-32 (-10.81 % of base) : 251161.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-32 (-10.26 % of base) : 251115.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
-28 (-8.33 % of base) : 251181.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
-56 (-8.05 % of base) : 525738.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-56 (-7.87 % of base) : 296344.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (Tier0-FullOpts)
-16 (-7.02 % of base) : 245565.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner2(int[,],byref) (Tier1-OSR)
-28 (-6.93 % of base) : 506279.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
-16 (-6.90 % of base) : 245563.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner1(int[,],byref) (Tier1-OSR)
-4 (-6.25 % of base) : 369841.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-4 (-6.25 % of base) : 371238.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-4 (-5.88 % of base) : 228310.dasm - Tests_len1_2:Test_tst_31(System.String):ubyte (FullOpts)
-4 (-5.88 % of base) : 229041.dasm - Tests_len31_11:Test_tst_31(System.String):ubyte (FullOpts)
-4 (-5.88 % of base) : 229166.dasm - Tests_len34_13:Test_tst_31(System.String):ubyte (FullOpts)
-4 (-5.88 % of base) : 228786.dasm - Tests_len4_7:Test_tst_31(System.String):ubyte (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55620836 (overridden on cmd)
Total bytes of diff: 55620856 (overridden on cmd)
Total bytes of delta: 20 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
132 : 96010.dasm (0.35 % of base)
84 : 48051.dasm (0.27 % of base)
52 : 120162.dasm (1.33 % of base)
44 : 129146.dasm (2.28 % of base)
40 : 183362.dasm (1.89 % of base)
40 : 52713.dasm (1.39 % of base)
40 : 124599.dasm (1.85 % of base)
32 : 113763.dasm (2.35 % of base)
32 : 129719.dasm (2.24 % of base)
32 : 27687.dasm (2.12 % of base)
32 : 129720.dasm (2.18 % of base)
32 : 22808.dasm (0.30 % of base)
32 : 52709.dasm (2.13 % of base)
28 : 130414.dasm (1.73 % of base)
28 : 164875.dasm (4.22 % of base)
28 : 163504.dasm (1.45 % of base)
24 : 156924.dasm (1.11 % of base)
24 : 177655.dasm (1.82 % of base)
24 : 197285.dasm (0.49 % of base)
24 : 52706.dasm (0.51 % of base)
Top file improvements (bytes):
-84 : 130411.dasm (-7.81 % of base)
-52 : 196597.dasm (-2.19 % of base)
-44 : 116889.dasm (-1.75 % of base)
-36 : 133570.dasm (-6.34 % of base)
-36 : 168800.dasm (-6.34 % of base)
-32 : 177656.dasm (-0.86 % of base)
-32 : 164535.dasm (-3.98 % of base)
-28 : 109675.dasm (-1.51 % of base)
-28 : 44699.dasm (-1.62 % of base)
-28 : 112586.dasm (-0.66 % of base)
-24 : 197571.dasm (-0.84 % of base)
-24 : 89459.dasm (-0.74 % of base)
-20 : 43932.dasm (-0.46 % of base)
-20 : 135953.dasm (-2.38 % of base)
-16 : 37723.dasm (-3.77 % of base)
-16 : 42457.dasm (-2.65 % of base)
-16 : 115905.dasm (-0.30 % of base)
-16 : 194710.dasm (-3.25 % of base)
-16 : 22602.dasm (-2.26 % of base)
-16 : 40286.dasm (-0.56 % of base)
71 total files with Code Size differences (34 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
132 (0.35 % of base) : 96010.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
84 (0.27 % of base) : 48051.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
52 (1.33 % of base) : 120162.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this (FullOpts)
44 (2.28 % of base) : 129146.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (1.39 % of base) : 52713.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
40 (1.89 % of base) : 183362.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (1.85 % of base) : 124599.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
32 (2.13 % of base) : 52709.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
32 (2.35 % of base) : 113763.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler:GetWellKnownTag(System.String):int (FullOpts)
32 (2.24 % of base) : 129719.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:SystemTypeName(System.String):System.String (FullOpts)
32 (2.18 % of base) : 129720.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:VbTypeName(System.String):System.String (FullOpts)
32 (0.30 % of base) : 22808.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
32 (2.12 % of base) : 27687.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
28 (1.73 % of base) : 130414.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception:this (FullOpts)
28 (4.22 % of base) : 164875.dasm - System.Data.Common.BigIntegerStorage:ConvertToBigInteger(System.Object,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
28 (1.45 % of base) : 163504.dasm - System.Data.Common.DbColumn:get_Item(System.String):System.Object:this (FullOpts)
24 (1.82 % of base) : 177655.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):ubyte:this (FullOpts)
24 (0.51 % of base) : 52706.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
24 (1.11 % of base) : 156924.dasm - Microsoft.VisualBasic.VBCodeGenerator:GetBaseTypeOutput(System.CodeDom.CodeTypeReference,ubyte):System.String:this (FullOpts)
24 (0.49 % of base) : 197285.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
Top method improvements (bytes):
-84 (-7.81 % of base) : 130411.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-52 (-2.19 % of base) : 196597.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:GenerateMembersElement(System.Object,System.Xml.Serialization.XmlMembersMapping):this (FullOpts)
-44 (-1.75 % of base) : 116889.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-36 (-6.34 % of base) : 133570.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-36 (-6.34 % of base) : 168800.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-0.86 % of base) : 177656.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
-32 (-3.98 % of base) : 164535.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],ubyte):this (FullOpts)
-28 (-1.62 % of base) : 44699.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTupleBinaryOperatorNestedInfo(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.TupleBinaryOperatorInfo+Multiple:this (FullOpts)
-28 (-0.66 % of base) : 112586.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+IntoClauseBinder:BindIntoSelector(Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],System.Collections.Generic.HashSet`1[System.String],Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax],ubyte,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-28 (-1.51 % of base) : 109675.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-24 (-0.74 % of base) : 89459.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindUserDefinedShortCircuitingOperator(Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundUserDefinedShortCircuitingOperator:this (FullOpts)
-24 (-0.84 % of base) : 197571.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WritePrimitive(System.Xml.Serialization.TypeMapping,System.Func`2[System.Object,System.String],System.Object):System.Object:this (FullOpts)
-20 (-0.46 % of base) : 43932.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
-20 (-2.38 % of base) : 135953.dasm - Microsoft.CodeAnalysis.Text.SourceText:ContentEqualsImpl(Microsoft.CodeAnalysis.Text.SourceText):ubyte:this (FullOpts)
-16 (-0.56 % of base) : 40286.dasm - Interop:GetExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte):System.Exception (FullOpts)
-16 (-0.30 % of base) : 115905.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ImplementsHelper:FindExplicitlyImplementedMember[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],byref):System.__Canon (FullOpts)
-16 (-0.28 % of base) : 165125.dasm - System.Data.XmlDataTreeWriter:XmlDataRowWriter(System.Data.DataRow,System.String):this (FullOpts)
-16 (-2.26 % of base) : 22602.dasm - System.DateTime:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts)
-16 (-2.65 % of base) : 42457.dasm - System.Diagnostics.Tracing.ActivityTracker+ActivityInfo:AddIdToGuid(ulong,int,uint,ubyte):int (FullOpts)
-16 (-3.77 % of base) : 37723.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
Top method regressions (percentages):
16 (9.76 % of base) : 20786.dasm - System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
8 (8.33 % of base) : 50449.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
8 (5.71 % of base) : 138131.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
8 (5.71 % of base) : 173287.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.Symbols.ISymbolInternal,ubyte):ubyte:this (FullOpts)
4 (4.55 % of base) : 39460.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
28 (4.22 % of base) : 164875.dasm - System.Data.Common.BigIntegerStorage:ConvertToBigInteger(System.Object,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
8 (4.08 % of base) : 188121.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
8 (4.00 % of base) : 126544.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
4 (4.00 % of base) : 230483.dasm - System.Threading.ReaderWriterLock+ThreadLocalLockEntry:GetCurrent(long):System.Threading.ReaderWriterLock+ThreadLocalLockEntry (FullOpts)
8 (3.77 % of base) : 165501.dasm - System.Xml.XPathNodePointer:DecideXPNodeTypeForTextNodes(System.Xml.XmlNode):int:this (FullOpts)
8 (3.64 % of base) : 60545.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
4 (3.57 % of base) : 181116.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
8 (3.08 % of base) : 76051.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
12 (2.78 % of base) : 130703.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
8 (2.78 % of base) : 42082.dasm - System.DateTimeParse:ProcessDateTimeSuffix(byref,byref,byref):ubyte (FullOpts)
8 (2.70 % of base) : 40383.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
32 (2.35 % of base) : 113763.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler:GetWellKnownTag(System.String):int (FullOpts)
4 (2.33 % of base) : 157466.dasm - CommandLine.Core.ValueMapper:CountOfMaxNumberOfValues(CommandLine.Core.Specification):CSharpx.Maybe`1[int] (FullOpts)
44 (2.28 % of base) : 129146.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
4 (2.27 % of base) : 199966.dasm - System.Net.Sockets.SocketAsyncContext+AsyncOperation:TryCancel():ubyte:this (FullOpts)
Top method improvements (percentages):
-84 (-7.81 % of base) : 130411.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-16 (-6.78 % of base) : 31725.dasm - System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
-8 (-6.67 % of base) : 31723.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-36 (-6.34 % of base) : 133570.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-36 (-6.34 % of base) : 168800.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-12 (-5.77 % of base) : 31724.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
-4 (-5.00 % of base) : 232096.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
-8 (-4.65 % of base) : 37721.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-12 (-4.17 % of base) : 37722.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-32 (-3.98 % of base) : 164535.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],ubyte):this (FullOpts)
-16 (-3.77 % of base) : 37723.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-4 (-3.70 % of base) : 31742.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
-4 (-3.33 % of base) : 207141.dasm - System.Data.Odbc.OdbcParameter:set_SourceVersion(int):this (FullOpts)
-4 (-3.33 % of base) : 194729.dasm - System.Xml.XPath.XPathNavigator:IsValidChildType(int):ubyte:this (FullOpts)
-16 (-3.25 % of base) : 194710.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:CachesResult(System.Xml.Xsl.Qil.QilNode):ubyte (FullOpts)
-4 (-3.23 % of base) : 44352.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
-16 (-2.65 % of base) : 42457.dasm - System.Diagnostics.Tracing.ActivityTracker+ActivityInfo:AddIdToGuid(ulong,int,uint,ubyte):int (FullOpts)
-4 (-2.56 % of base) : 122523.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
-4 (-2.56 % of base) : 192303.dasm - System.Xml.Serialization.XmlSerializationReader:IsXmlnsAttribute(System.String):ubyte:this (FullOpts)
-4 (-2.50 % of base) : 170677.dasm - Microsoft.CodeAnalysis.RuntimeMembers.MemberDescriptor:get_ParametersCount():int:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79955312 (overridden on cmd)
Total bytes of diff: 79954396 (overridden on cmd)
Total bytes of delta: -916 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
104 : 122030.dasm (0.26 % of base)
64 : 233669.dasm (0.24 % of base)
60 : 1264.dasm (3.14 % of base)
52 : 74650.dasm (1.62 % of base)
52 : 78875.dasm (0.15 % of base)
48 : 175503.dasm (1.19 % of base)
44 : 75490.dasm (0.66 % of base)
44 : 210121.dasm (2.29 % of base)
40 : 114779.dasm (0.17 % of base)
40 : 144757.dasm (2.01 % of base)
40 : 151286.dasm (1.65 % of base)
40 : 200927.dasm (2.06 % of base)
40 : 71070.dasm (0.45 % of base)
40 : 223746.dasm (0.62 % of base)
36 : 114774.dasm (0.44 % of base)
36 : 221828.dasm (0.56 % of base)
36 : 227013.dasm (7.38 % of base)
36 : 83620.dasm (0.61 % of base)
36 : 83627.dasm (1.04 % of base)
32 : 163179.dasm (5.76 % of base)
Top file improvements (bytes):
-92 : 307003.dasm (-2.94 % of base)
-80 : 196770.dasm (-2.51 % of base)
-72 : 233673.dasm (-7.32 % of base)
-64 : 112399.dasm (-0.58 % of base)
-56 : 69946.dasm (-7.41 % of base)
-44 : 173410.dasm (-3.94 % of base)
-40 : 173421.dasm (-4.76 % of base)
-40 : 176705.dasm (-2.84 % of base)
-40 : 222231.dasm (-4.13 % of base)
-36 : 311977.dasm (-0.62 % of base)
-36 : 176452.dasm (-2.41 % of base)
-32 : 173419.dasm (-4.82 % of base)
-32 : 206164.dasm (-4.55 % of base)
-32 : 238761.dasm (-5.84 % of base)
-32 : 250131.dasm (-3.85 % of base)
-32 : 258651.dasm (-5.84 % of base)
-32 : 269595.dasm (-3.85 % of base)
-32 : 81256.dasm (-0.56 % of base)
-32 : 196323.dasm (-3.27 % of base)
-28 : 284365.dasm (-2.58 % of base)
72 total files with Code Size differences (33 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
104 (0.26 % of base) : 122030.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
64 (0.24 % of base) : 233669.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
60 (3.14 % of base) : 1264.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
52 (1.62 % of base) : 74650.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructInvocationExpression(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
52 (0.15 % of base) : 78875.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
48 (1.19 % of base) : 175503.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this (FullOpts)
44 (0.66 % of base) : 75490.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<BindElementOrIndexerAccess>g__bindInlineArrayElementAccess|499_1(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BoundExpression,int,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,int,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
44 (2.29 % of base) : 210121.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (0.45 % of base) : 71070.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
40 (1.65 % of base) : 151286.dasm - Microsoft.Build.Evaluation.ExpressionShredder:GetReferencedItemExpressions(System.String,int,int):System.Collections.Generic.List`1[Microsoft.Build.Evaluation.ExpressionShredder+ItemExpressionCapture] (FullOpts)
40 (0.17 % of base) : 114779.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
40 (2.01 % of base) : 144757.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (2.06 % of base) : 200927.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (0.62 % of base) : 223746.dasm - System.Xml.DtdParser+<ParseAttlistTypeAsync>d__161:MoveNext():this (FullOpts)
36 (1.04 % of base) : 83627.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 83620.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
36 (0.44 % of base) : 114774.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureAndProduceBoundNode(Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTypeExpression,Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.Location):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
36 (0.56 % of base) : 221828.dasm - System.Xml.XmlTextReaderImpl+<SkipDtdAsync>d__568:MoveNext():this (FullOpts)
36 (7.38 % of base) : 227013.dasm - System.Xml.Xsl.Xslt.QilGenerator:CompileSingleKey(System.Collections.Generic.List`1[System.Xml.Xsl.Xslt.Key],System.Xml.Xsl.Qil.QilIterator,System.Xml.Xsl.Qil.QilIterator):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
32 (2.29 % of base) : 233692.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:SystemTypeName(System.String):System.String (FullOpts)
Top method improvements (bytes):
-92 (-2.94 % of base) : 307003.dasm - System.DirectoryServices.Protocols.LdapConnection:BuildAttributes(System.Collections.CollectionBase,System.Collections.ArrayList):System.DirectoryServices.Protocols.LdapMod[] (FullOpts)
-80 (-2.51 % of base) : 196770.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-72 (-7.32 % of base) : 233673.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-64 (-0.58 % of base) : 112399.dasm - System.Configuration.ConfigurationElement:DeserializeElement(System.Xml.XmlReader,ubyte):this (FullOpts)
-56 (-7.41 % of base) : 69946.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-44 (-3.94 % of base) : 173410.dasm - Newtonsoft.Json.JsonReader:ReadAsBytes():ubyte[]:this (FullOpts)
-40 (-4.76 % of base) : 173421.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (FullOpts)
-40 (-2.84 % of base) : 176705.dasm - Newtonsoft.Json.JsonTextWriter+<WriteIndentAsync>d__13:MoveNext():this (FullOpts)
-40 (-4.13 % of base) : 222231.dasm - System.Xml.XmlWellFormedWriter+AttributeValueCache:WriteEntityRef(System.String):this (FullOpts)
-36 (-2.41 % of base) : 176452.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ReadElement(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Converters.IXmlDocument,Newtonsoft.Json.Converters.IXmlNode,System.String,System.Xml.XmlNamespaceManager):this (FullOpts)
-36 (-0.62 % of base) : 311977.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
-32 (-5.84 % of base) : 238761.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-5.84 % of base) : 258651.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-0.56 % of base) : 81256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-32 (-3.85 % of base) : 250131.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ubyte]:<ExecuteDeclaringReferenceActions>g__executeExecutableCodeActions|2():this (FullOpts)
-32 (-3.85 % of base) : 269595.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ubyte]:<ExecuteDeclaringReferenceActions>g__executeExecutableCodeActions|2():this (FullOpts)
-32 (-3.27 % of base) : 196323.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.SymbolLoader:HasImplicitReferenceConversion(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType):ubyte (FullOpts)
-32 (-4.82 % of base) : 173419.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTime():System.Nullable`1[System.DateTime]:this (FullOpts)
-32 (-4.55 % of base) : 206164.dasm - System.Runtime.Serialization.SchemaHelper:GetSchemaWithType(System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Runtime.Serialization.SchemaObjectInfo],System.Xml.Schema.XmlSchemaSet,System.Xml.XmlQualifiedName):System.Xml.Schema.XmlSchema (FullOpts)
-28 (-4.35 % of base) : 293824.dasm - Microsoft.NET.StringTools.InternableString:ReferenceEquals(System.String):ubyte:this (FullOpts)
Top method regressions (percentages):
28 (10.00 % of base) : 154671.dasm - Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
12 (10.00 % of base) : 76144.dasm - Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
16 (10.00 % of base) : 2396.dasm - System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
16 (8.70 % of base) : 163177.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)
16 (8.70 % of base) : 164253.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)
36 (7.38 % of base) : 227013.dasm - System.Xml.Xsl.Xslt.QilGenerator:CompileSingleKey(System.Collections.Generic.List`1[System.Xml.Xsl.Xslt.Key],System.Xml.Xsl.Qil.QilIterator,System.Xml.Xsl.Qil.QilIterator):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
32 (5.76 % of base) : 163179.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:Insert(int,System.Numerics.Vector`1[float]):System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:this (FullOpts)
8 (5.71 % of base) : 265089.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
8 (5.71 % of base) : 245551.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.Symbols.ISymbolInternal,ubyte):ubyte:this (FullOpts)
8 (4.76 % of base) : 93217.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
8 (4.65 % of base) : 220854.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
8 (4.00 % of base) : 208724.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
4 (3.57 % of base) : 299299.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
8 (3.51 % of base) : 173372.dasm - Newtonsoft.Json.JsonReader:ReadAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[ubyte]:this (FullOpts)
8 (3.45 % of base) : 111517.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
16 (3.39 % of base) : 281641.dasm - System.IO.Pipelines.Pipe:ReaderCancellationRequested():this (FullOpts)
16 (3.39 % of base) : 281642.dasm - System.IO.Pipelines.Pipe:WriterCancellationRequested():this (FullOpts)
8 (3.39 % of base) : 180748.dasm - System.Xml.XPathNodePointer:DecideXPNodeTypeForTextNodes(System.Xml.XmlNode):int:this (FullOpts)
16 (3.36 % of base) : 53031.dasm - Microsoft.Diagnostics.Tracing.Ctf.CtfPropertyBag:GetBoolean(System.String):ubyte:this (FullOpts)
8 (3.33 % of base) : 173731.dasm - Newtonsoft.Json.JsonTextWriter:FlushAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts)
Top method improvements (percentages):
-16 (-10.81 % of base) : 179969.dasm - System.Net.Http.Headers.RetryConditionHeaderValue:.ctor(System.TimeSpan):this (FullOpts)
-8 (-9.09 % of base) : 3905.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThan[double](double,double,System.String) (FullOpts)
-56 (-7.41 % of base) : 69946.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-72 (-7.32 % of base) : 233673.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-8 (-6.06 % of base) : 341.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-24 (-6.00 % of base) : 195962.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
-32 (-5.84 % of base) : 238761.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-5.84 % of base) : 258651.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-8 (-5.41 % of base) : 234784.dasm - Roslyn.Utilities.PathUtilities:CombinePaths(System.String,System.String):System.String (FullOpts)
-8 (-5.41 % of base) : 254879.dasm - Roslyn.Utilities.PathUtilities:CombinePaths(System.String,System.String):System.String (FullOpts)
-4 (-5.00 % of base) : 302749.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
-4 (-5.00 % of base) : 302778.dasm - System.Collections.Generic.SortedSet`1+Node[ubyte]:GetRotation(System.Collections.Generic.SortedSet`1+Node[ubyte],System.Collections.Generic.SortedSet`1+Node[ubyte]):ubyte:this (FullOpts)
-32 (-4.82 % of base) : 173419.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTime():System.Nullable`1[System.DateTime]:this (FullOpts)
-40 (-4.76 % of base) : 173421.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (FullOpts)
-12 (-4.62 % of base) : 179982.dasm - System.Net.Http.Headers.StringWithQualityHeaderValue:.ctor(System.String,double):this (FullOpts)
-32 (-4.55 % of base) : 206164.dasm - System.Runtime.Serialization.SchemaHelper:GetSchemaWithType(System.Collections.Generic.Dictionary`2[System.Xml.XmlQualifiedName,System.Runtime.Serialization.SchemaObjectInfo],System.Xml.Schema.XmlSchemaSet,System.Xml.XmlQualifiedName):System.Xml.Schema.XmlSchema (FullOpts)
-28 (-4.35 % of base) : 293824.dasm - Microsoft.NET.StringTools.InternableString:ReferenceEquals(System.String):ubyte:this (FullOpts)
-4 (-4.17 % of base) : 112152.dasm - System.Configuration.BaseConfigurationRecord:CombineConfigKey(System.String,System.String):System.String (FullOpts)
-4 (-4.17 % of base) : 186732.dasm - System.Configuration.BaseConfigurationRecord:CombineConfigKey(System.String,System.String):System.String (FullOpts)
-4 (-4.17 % of base) : 202900.dasm - System.Data.Odbc.OdbcParameter:set_SourceVersion(int):this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 312683360 (overridden on cmd)
Total bytes of diff: 312647428 (overridden on cmd)
Total bytes of delta: -35932 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
300 : 593579.dasm (3.59 % of base)
160 : 565846.dasm (4.00 % of base)
140 : 162295.dasm (3.27 % of base)
140 : 58843.dasm (4.19 % of base)
136 : 89337.dasm (4.27 % of base)
116 : 607439.dasm (3.67 % of base)
116 : 182342.dasm (0.91 % of base)
116 : 318000.dasm (0.90 % of base)
116 : 588778.dasm (16.20 % of base)
112 : 63028.dasm (2.32 % of base)
112 : 69727.dasm (2.19 % of base)
108 : 87693.dasm (1.99 % of base)
100 : 171913.dasm (0.89 % of base)
88 : 54107.dasm (0.47 % of base)
88 : 91885.dasm (1.85 % of base)
80 : 241645.dasm (0.57 % of base)
76 : 161665.dasm (1.47 % of base)
68 : 590202.dasm (1.27 % of base)
68 : 497415.dasm (1.69 % of base)
68 : 64139.dasm (0.62 % of base)
Top file improvements (bytes):
-708 : 161826.dasm (-31.49 % of base)
-664 : 162361.dasm (-5.70 % of base)
-368 : 80153.dasm (-2.39 % of base)
-152 : 123847.dasm (-1.14 % of base)
-132 : 601516.dasm (-1.90 % of base)
-120 : 274343.dasm (-1.83 % of base)
-120 : 637517.dasm (-0.94 % of base)
-116 : 499956.dasm (-0.94 % of base)
-108 : 422049.dasm (-0.89 % of base)
-108 : 632990.dasm (-0.89 % of base)
-108 : 370834.dasm (-0.88 % of base)
-104 : 603348.dasm (-0.53 % of base)
-104 : 606922.dasm (-0.98 % of base)
-100 : 67127.dasm (-1.92 % of base)
-96 : 537521.dasm (-1.04 % of base)
-96 : 539012.dasm (-0.70 % of base)
-96 : 16150.dasm (-0.79 % of base)
-88 : 270293.dasm (-2.31 % of base)
-88 : 203529.dasm (-1.11 % of base)
-84 : 182485.dasm (-1.06 % of base)
93 total files with Code Size differences (54 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
300 (3.59 % of base) : 593579.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,ubyte,ubyte,ubyte,int,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState],ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (Tier1)
160 (4.00 % of base) : 565846.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (Tier1)
140 (3.27 % of base) : 162295.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
140 (4.19 % of base) : 58843.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (Tier1)
136 (4.27 % of base) : 89337.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (Tier1)
116 (3.67 % of base) : 607439.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (Tier1)
116 (16.20 % of base) : 588778.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
116 (0.91 % of base) : 182342.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
116 (0.90 % of base) : 318000.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
112 (2.32 % of base) : 63028.dasm - Microsoft.CodeAnalysis.CombineNode`2[int,int]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]]:this (Tier1)
112 (2.19 % of base) : 69727.dasm - Microsoft.CodeAnalysis.CombineNode`2[Microsoft.CodeAnalysis.GeneratorAttributeSyntaxContext,ubyte]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.GeneratorAttributeSyntaxContext,ubyte]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.GeneratorAttributeSyntaxContext,ubyte]]:this (Tier1)
108 (1.99 % of base) : 87693.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
100 (0.89 % of base) : 171913.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
88 (1.85 % of base) : 91885.dasm - Microsoft.CodeAnalysis.CombineNode`2[int,int]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]]:this (Tier1)
88 (0.47 % of base) : 54107.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
80 (0.57 % of base) : 241645.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
76 (1.47 % of base) : 161665.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
68 (1.27 % of base) : 590202.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
68 (0.62 % of base) : 64139.dasm - Microsoft.Interop.VariableDeclarations:GenerateDeclarationsForManagedToUnmanaged(Microsoft.Interop.BoundGenerators,Microsoft.Interop.StubCodeContext,ubyte):Microsoft.Interop.VariableDeclarations (Tier1)
68 (1.69 % of base) : 497415.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier1)
Top method improvements (bytes):
-708 (-31.49 % of base) : 161826.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ParseAdditionalSources(Microsoft.CodeAnalysis.ISourceGenerator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSyntaxTree]:this (Tier1)
-664 (-5.70 % of base) : 162361.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (Tier1)
-368 (-2.39 % of base) : 80153.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-152 (-1.14 % of base) : 123847.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-132 (-1.90 % of base) : 601516.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1-OSR)
-120 (-0.94 % of base) : 637517.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-120 (-1.83 % of base) : 274343.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-116 (-0.94 % of base) : 499956.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-108 (-0.89 % of base) : 422049.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-108 (-0.89 % of base) : 632990.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-108 (-0.88 % of base) : 370834.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-104 (-0.53 % of base) : 603348.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitBinaryLogicalOperatorChildren(Microsoft.CodeAnalysis.CSharp.BoundExpression):this (Tier1)
-104 (-0.98 % of base) : 606922.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:BindAttributes(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],Microsoft.CodeAnalysis.CSharp.Binder):System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData,Microsoft.CodeAnalysis.CSharp.BoundAttribute]]:this (Tier1)
-100 (-1.92 % of base) : 67127.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveCallingConventionMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (Tier1)
-96 (-0.79 % of base) : 16150.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-96 (-1.04 % of base) : 537521.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-96 (-0.70 % of base) : 539012.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[int,int]]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
-88 (-2.31 % of base) : 270293.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
-88 (-1.11 % of base) : 203529.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-84 (-1.06 % of base) : 182485.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
Top method regressions (percentages):
116 (16.20 % of base) : 588778.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
8 (9.52 % of base) : 159283.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
8 (9.52 % of base) : 51804.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
44 (9.02 % of base) : 186768.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]]:IsSubsetOfSetWithCompatibleComparer(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (Tier1-OSR)
16 (7.14 % of base) : 171605.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
16 (7.14 % of base) : 587257.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
16 (7.14 % of base) : 594231.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
32 (6.78 % of base) : 161869.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 240736.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 335694.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 337778.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 124842.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 634951.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 83728.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 94512.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 95434.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 349712.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 427098.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 48231.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.72 % of base) : 372343.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
Top method improvements (percentages):
-708 (-31.49 % of base) : 161826.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ParseAdditionalSources(Microsoft.CodeAnalysis.ISourceGenerator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSyntaxTree]:this (Tier1)
-44 (-17.46 % of base) : 97700.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
-44 (-17.46 % of base) : 98503.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-17.19 % of base) : 98583.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-17.19 % of base) : 99391.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-17.19 % of base) : 99452.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-17.19 % of base) : 99825.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-16.18 % of base) : 99396.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-16.18 % of base) : 99567.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-32 (-14.55 % of base) : 99837.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-32 (-14.55 % of base) : 98192.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-32 (-14.55 % of base) : 98730.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):long (FullOpts)
-32 (-14.55 % of base) : 99063.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):long (FullOpts)
-32 (-14.55 % of base) : 98635.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
-32 (-14.55 % of base) : 98352.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-32 (-14.55 % of base) : 99040.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
-32 (-14.55 % of base) : 99144.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ulong (FullOpts)
-32 (-14.55 % of base) : 98945.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-32 (-14.55 % of base) : 99244.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-36 (-14.52 % of base) : 99209.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Collections.Generic.KeyValuePair`2[int,System.String] (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 160782296 (overridden on cmd)
Total bytes of diff: 160761180 (overridden on cmd)
Total bytes of delta: -21116 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
184 : 266388.dasm (4.22 % of base)
128 : 42694.dasm (1.67 % of base)
128 : 48326.dasm (1.67 % of base)
100 : 42823.dasm (3.22 % of base)
84 : 126664.dasm (2.77 % of base)
72 : 127428.dasm (2.48 % of base)
64 : 42722.dasm (1.55 % of base)
64 : 48358.dasm (1.58 % of base)
52 : 4826.dasm (0.16 % of base)
48 : 172500.dasm (0.83 % of base)
48 : 118198.dasm (1.62 % of base)
44 : 264891.dasm (0.70 % of base)
44 : 5256.dasm (2.29 % of base)
40 : 177151.dasm (2.06 % of base)
40 : 148255.dasm (2.87 % of base)
40 : 300595.dasm (2.50 % of base)
36 : 50891.dasm (1.50 % of base)
36 : 264997.dasm (0.43 % of base)
36 : 3901.dasm (1.04 % of base)
36 : 45367.dasm (1.50 % of base)
Top file improvements (bytes):
-452 : 172498.dasm (-2.52 % of base)
-156 : 163565.dasm (-8.23 % of base)
-156 : 163761.dasm (-8.21 % of base)
-116 : 44309.dasm (-1.98 % of base)
-116 : 195852.dasm (-3.15 % of base)
-88 : 274410.dasm (-1.64 % of base)
-88 : 175093.dasm (-1.97 % of base)
-80 : 24857.dasm (-2.48 % of base)
-76 : 59146.dasm (-0.26 % of base)
-72 : 7384.dasm (-1.46 % of base)
-64 : 277162.dasm (-1.60 % of base)
-56 : 115019.dasm (-8.24 % of base)
-48 : 163506.dasm (-1.77 % of base)
-48 : 162818.dasm (-1.61 % of base)
-44 : 24939.dasm (-18.64 % of base)
-44 : 153877.dasm (-1.71 % of base)
-44 : 169696.dasm (-1.32 % of base)
-40 : 14865.dasm (-1.26 % of base)
-40 : 5610.dasm (-0.82 % of base)
-40 : 215601.dasm (-0.68 % of base)
76 total files with Code Size differences (39 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
184 (4.22 % of base) : 266388.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
128 (1.67 % of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
128 (1.67 % of base) : 48326.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
100 (3.22 % of base) : 42823.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
84 (2.77 % of base) : 126664.dasm - System.IO.Pipelines.Tests.SchedulerFacts+<DefaultWriterSchedulerRunsOnSynchronizationContext>d__7:MoveNext():this (FullOpts)
72 (2.48 % of base) : 127428.dasm - System.IO.Pipelines.Tests.SchedulerFacts+<UseSynchronizationContextFalseIgnoresSyncContextForWriterScheduler>d__6:MoveNext():this (FullOpts)
64 (1.55 % of base) : 42722.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
64 (1.58 % of base) : 48358.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
52 (0.16 % of base) : 4826.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
48 (1.62 % of base) : 118198.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectoryAsync_File_Tests+<LinkBeforeTargetAsync>d__13:MoveNext():this (FullOpts)
48 (0.83 % of base) : 172500.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestInvalid(System.String[],System.String,System.String[]):int:this (FullOpts)
44 (2.29 % of base) : 5256.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
44 (0.70 % of base) : 264891.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:EmitIndexOfAnyCustomHelper(System.String,System.Collections.Generic.Dictionary`2[System.String,System.String[]],ubyte):System.String (FullOpts)
40 (2.06 % of base) : 177151.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (2.87 % of base) : 148255.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
40 (2.50 % of base) : 300595.dasm - System.Web.HttpUtility+HttpQSCollection:ToString():System.String:this (FullOpts)
36 (0.43 % of base) : 264997.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertCollectionExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedCollectionExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundCollectionExpression:this (FullOpts)
36 (1.04 % of base) : 3901.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (1.50 % of base) : 50891.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
36 (1.50 % of base) : 45367.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
Top method improvements (bytes):
-452 (-2.52 % of base) : 172498.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
-156 (-8.23 % of base) : 163565.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1:Write2_wrapper(System.Object[]):this (FullOpts)
-156 (-8.21 % of base) : 163761.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithArrayPropertyHavingChoice:Write3_Item(System.String,System.String,SerializationTypes.TypeWithArrayPropertyHavingChoice,ubyte,ubyte):this (FullOpts)
-116 (-1.98 % of base) : 44309.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
-116 (-3.15 % of base) : 195852.dasm - System.Runtime.Serialization.SchemaExporter:ExportGenericInfo(System.Type,System.String,System.String):System.Xml.XmlElement:this (FullOpts)
-88 (-1.64 % of base) : 274410.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5401_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-88 (-1.97 % of base) : 175093.dasm - System.Xml.XmlWriterApiTests.TCFullEndElement+TCWriteValue+TCWriteState:InvokeMethod(System.Xml.XmlWriter,System.String):this (FullOpts)
-80 (-2.48 % of base) : 24857.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-76 (-0.26 % of base) : 59146.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-72 (-1.46 % of base) : 7384.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDefaultArgumentsAndParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],byref,byref,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
-64 (-1.60 % of base) : 277162.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5670_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-8.24 % of base) : 115019.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-48 (-1.77 % of base) : 163506.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSerializerAttributes:Write3_XmlSerializerAttributes(System.String,System.String,SerializationTypes.XmlSerializerAttributes,ubyte,ubyte):this (FullOpts)
-48 (-1.61 % of base) : 162818.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterXmlSerializerAttributes:Write3_XmlSerializerAttributes(System.String,System.String,SerializationTypes.XmlSerializerAttributes,ubyte,ubyte):this (FullOpts)
-44 (-18.64 % of base) : 24939.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
-44 (-1.71 % of base) : 153877.dasm - System.Net.Security.EndpointChannelBindingToken:GetHashForChannelBinding(System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte[] (FullOpts)
-44 (-1.32 % of base) : 169696.dasm - System.Xml.XmlSchemaTests.TestData:.cctor() (FullOpts)
-40 (-0.82 % of base) : 5610.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-40 (-1.26 % of base) : 14865.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.ElasticTriviaFormattingRule:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int (FullOpts)
-40 (-0.68 % of base) : 215601.dasm - System.Security.Cryptography.Pkcs.Pkcs12SafeContents:ReadBags(System.ReadOnlyMemory`1[ubyte]):System.Collections.Generic.List`1[System.Security.Cryptography.Pkcs.Pkcs12SafeBag] (FullOpts)
Top method regressions (percentages):
28 (11.48 % of base) : 70041.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
28 (11.48 % of base) : 66890.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
8 (6.67 % of base) : 125050.dasm - System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
8 (6.45 % of base) : 125023.dasm - System.IO.Hashing.XxHash64:GetCurrentHashAsUInt64():ulong:this (FullOpts)
20 (5.49 % of base) : 38161.dasm - Microsoft.Extensions.Diagnostics.Metrics.ListenerSubscription:IsMoreSpecific(Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,ubyte):ubyte (FullOpts)
20 (5.49 % of base) : 38227.dasm - Microsoft.Extensions.Diagnostics.Metrics.ListenerSubscription:IsMoreSpecific(Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,ubyte):ubyte (FullOpts)
8 (5.41 % of base) : 23426.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
8 (5.41 % of base) : 33865.dasm - System.Security.Cryptography.CryptoPool:Return(ubyte[],int) (FullOpts)
8 (5.41 % of base) : 215483.dasm - System.Security.Cryptography.CryptoPool:Return(ubyte[],int) (FullOpts)
16 (4.76 % of base) : 67338.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.ValueTuple`2[System.Collections.Frozen.Tests.SimpleNonComparableStruct,System.Collections.Frozen.Tests.SimpleNonComparableStruct],System.Collections.Frozen.SmallValueTypeDefaultComparerFrozenSet`1+GSW[System.ValueTuple`2[System.Collections.Frozen.Tests.SimpleNonComparableStruct,System.Collections.Frozen.Tests.SimpleNonComparableStruct]]]:OverlapsCore(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.Collections.Frozen.Tests.SimpleNonComparableStruct,System.Collections.Frozen.Tests.SimpleNonComparableStruct]]):ubyte:this (FullOpts)
8 (4.65 % of base) : 42262.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
184 (4.22 % of base) : 266388.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
8 (4.00 % of base) : 47082.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
16 (3.88 % of base) : 97656.dasm - System.Diagnostics.Tests.FileVersionInfoTest:FileVersionInfo_EmptyFVI():this (FullOpts)
4 (3.57 % of base) : 18515.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
8 (3.45 % of base) : 30774.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
100 (3.22 % of base) : 42823.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
8 (2.94 % of base) : 104969.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms10b.prms10b.Parent,System.Object):System.Object (FullOpts)
40 (2.87 % of base) : 148255.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
12 (2.86 % of base) : 57632.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
Top method improvements (percentages):
-44 (-18.64 % of base) : 24939.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
-32 (-15.69 % of base) : 25383.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-36 (-14.75 % of base) : 102413.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.strcts.strct003.strct003.S+S2):System.Object (FullOpts)
-36 (-13.64 % of base) : 113399.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,double):System.Object (FullOpts)
-36 (-13.64 % of base) : 112361.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,float):System.Object (FullOpts)
-36 (-13.43 % of base) : 113405.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,float):System.Object (FullOpts)
-28 (-12.73 % of base) : 25595.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 104759.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 104737.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 104813.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 25677.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 25707.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 25794.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 26159.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.28 % of base) : 104694.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.28 % of base) : 104706.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.28 % of base) : 104746.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.28 % of base) : 104726.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.28 % of base) : 104781.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.28 % of base) : 104785.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15071740 (overridden on cmd)
Total bytes of diff: 15071724 (overridden on cmd)
Total bytes of delta: -16 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
52 : 14159.dasm (0.16 % of base)
44 : 511.dasm (2.29 % of base)
36 : 14584.dasm (0.61 % of base)
36 : 14626.dasm (1.04 % of base)
32 : 1941.dasm (2.12 % of base)
28 : 14610.dasm (1.41 % of base)
28 : 19676.dasm (0.59 % of base)
28 : 30128.dasm (0.27 % of base)
24 : 23896.dasm (0.89 % of base)
24 : 25700.dasm (0.45 % of base)
24 : 8633.dasm (0.26 % of base)
24 : 22055.dasm (0.69 % of base)
20 : 28441.dasm (2.33 % of base)
16 : 13443.dasm (0.18 % of base)
16 : 20757.dasm (1.19 % of base)
16 : 22686.dasm (0.38 % of base)
16 : 25748.dasm (0.18 % of base)
16 : 5757.dasm (1.66 % of base)
16 : 14017.dasm (1.56 % of base)
16 : 26284.dasm (0.44 % of base)
Top file improvements (bytes):
-80 : 9002.dasm (-0.75 % of base)
-56 : 2417.dasm (-7.41 % of base)
-32 : 16603.dasm (-5.84 % of base)
-32 : 17801.dasm (-0.57 % of base)
-32 : 13740.dasm (-2.68 % of base)
-32 : 13894.dasm (-2.48 % of base)
-20 : 2557.dasm (-1.68 % of base)
-16 : 30038.dasm (-1.24 % of base)
-16 : 29811.dasm (-0.11 % of base)
-16 : 13395.dasm (-1.69 % of base)
-16 : 1793.dasm (-4.04 % of base)
-16 : 2450.dasm (-0.68 % of base)
-16 : 27945.dasm (-2.48 % of base)
-16 : 28664.dasm (-5.26 % of base)
-12 : 17269.dasm (-1.21 % of base)
-12 : 21301.dasm (-0.40 % of base)
-12 : 12937.dasm (-0.91 % of base)
-12 : 2890.dasm (-2.68 % of base)
-12 : 698.dasm (-1.92 % of base)
-12 : 11088.dasm (-5.17 % of base)
67 total files with Code Size differences (32 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
52 (0.16 % of base) : 14159.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
44 (2.29 % of base) : 511.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
36 (1.04 % of base) : 14626.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 14584.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
32 (2.12 % of base) : 1941.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
28 (0.59 % of base) : 19676.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__checkConstraintLanguageVersionAndRuntimeSupportForConversion|210_2(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
28 (1.41 % of base) : 14610.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
28 (0.27 % of base) : 30128.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
24 (0.26 % of base) : 8633.dasm - FSharp.Compiler.TypedTreeOps:mkExprAddrOfExprAux(FSharp.Compiler.TcGlobals+TcGlobals,ubyte,ubyte,FSharp.Compiler.TypedTreeOps+Mutates,FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ValRef],FSharp.Compiler.Text.Range):System.Tuple`4[Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+Val,FSharp.Compiler.TypedTree+Expr]],FSharp.Compiler.TypedTree+Expr,ubyte,ubyte] (FullOpts)
24 (0.69 % of base) : 22055.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetEnumeratorInfoCore(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,byref,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):int:this (FullOpts)
24 (0.89 % of base) : 23896.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryBindIndexOrRangeImplicitIndexer(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):ubyte:this (FullOpts)
24 (0.45 % of base) : 25700.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitLockStatement(Microsoft.CodeAnalysis.CSharp.BoundLockStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
20 (2.33 % of base) : 28441.dasm - System.Management.Automation.MutableTuple:MakeTupleType(System.Type[],int,int):System.Type (FullOpts)
16 (1.66 % of base) : 5757.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
16 (0.38 % of base) : 22686.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertToArrayIndex(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
16 (1.19 % of base) : 20757.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetParamArrayArgument(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],System.Collections.Immutable.ImmutableArray`1[System.String],int,int,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.TypedConstant (FullOpts)
16 (0.44 % of base) : 26284.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitStringSwitchJumpTable(System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.ConstantValue,System.Object][],Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,Microsoft.CodeAnalysis.CodeGen.LocalOrParameter,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
16 (0.18 % of base) : 25748.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitReadonlySpanAsBlobWrapper(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
16 (1.56 % of base) : 14017.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
16 (0.18 % of base) : 13443.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
Top method improvements (bytes):
-80 (-0.75 % of base) : 9002.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-56 (-7.41 % of base) : 2417.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-32 (-5.84 % of base) : 16603.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-0.57 % of base) : 17801.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-32 (-2.68 % of base) : 13740.dasm - Microsoft.ML.Data.BufferBuilder`1[uint]:GetResult(byref):this (FullOpts)
-32 (-2.48 % of base) : 13894.dasm - Microsoft.ML.Data.TextLoader+VectorPipe`1+VectorValue[float]:Get(byref):this (FullOpts)
-20 (-1.68 % of base) : 2557.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
-16 (-0.68 % of base) : 2450.dasm - Interop:GetExceptionForIoErrno(Interop+ErrorInfo,System.String,ubyte):System.Exception (FullOpts)
-16 (-1.69 % of base) : 13395.dasm - Microsoft.ML.Data.VBuffer`1[double]:Copy(double[],int,byref,int) (FullOpts)
-16 (-2.48 % of base) : 27945.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-16 (-1.24 % of base) : 30038.dasm - System.Linq.Expressions.Expression:ValidateTryAndCatchHaveSameType(System.Type,System.Linq.Expressions.Expression,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.CatchBlock]) (FullOpts)
-16 (-5.26 % of base) : 28664.dasm - System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
-16 (-0.11 % of base) : 29811.dasm - System.Management.Automation.Language.Tokenizer:NextToken():System.Management.Automation.Language.Token:this (FullOpts)
-16 (-4.04 % of base) : 1793.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-12 (-5.17 % of base) : 11088.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
-12 (-0.40 % of base) : 21301.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:Populate(Microsoft.CodeAnalysis.CSharp.NullableWalker+VariablesSnapshot):this (FullOpts)
-12 (-1.21 % of base) : 17269.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (FullOpts)
-12 (-0.91 % of base) : 12937.dasm - Microsoft.ML.Data.VBuffer`1[float]:CopyTo(byref):this (FullOpts)
-12 (-0.21 % of base) : 13001.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
-12 (-2.68 % of base) : 2890.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
Top method regressions (percentages):
8 (5.41 % of base) : 15714.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
8 (4.00 % of base) : 27312.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
4 (3.57 % of base) : 24202.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
8 (3.45 % of base) : 22270.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
8 (2.74 % of base) : 2507.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
4 (2.63 % of base) : 19965.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:ContainsDroppedIdentifierCharacters(System.String):ubyte (FullOpts)
20 (2.33 % of base) : 28441.dasm - System.Management.Automation.MutableTuple:MakeTupleType(System.Type[],int,int):System.Type (FullOpts)
44 (2.29 % of base) : 511.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
8 (2.13 % of base) : 20950.dasm - Microsoft.CodeAnalysis.Compilation:CommonBindScriptClass():Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
32 (2.12 % of base) : 1941.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
4 (2.00 % of base) : 21453.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:HasInitializer(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (FullOpts)
12 (1.92 % of base) : 13412.dasm - System.Collections.Immutable.ImmutableExtensions:ToArray[double](System.Collections.Generic.IEnumerable`1[double],int):double[] (FullOpts)
12 (1.91 % of base) : 14055.dasm - Microsoft.ML.Trainers.LbfgsTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainModelCore(Microsoft.ML.TrainContext):System.__Canon:this (FullOpts)
4 (1.85 % of base) : 28898.dasm - System.Management.Automation.LogProvider:GetPSLevelFromSeverity(System.String):ubyte (FullOpts)
4 (1.75 % of base) : 26857.dasm - Microsoft.Cci.MetadataWriter:GetDefiningUnitReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IUnitReference (FullOpts)
16 (1.66 % of base) : 5757.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
4 (1.61 % of base) : 17757.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetNullableAnalysisValue():System.Nullable`1[ubyte]:this (FullOpts)
16 (1.56 % of base) : 14017.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
8 (1.52 % of base) : 30337.dasm - System.Management.Automation.Language.TypeResolver:ResolveTypeNameWorker(System.Management.Automation.Language.TypeName,System.Management.Automation.SessionStateScope,System.Collections.Generic.IEnumerable`1[System.Reflection.Assembly],System.Collections.Generic.HashSet`1[System.Reflection.Assembly],System.Management.Automation.Language.TypeResolutionState,ubyte,ubyte,byref):System.Type (FullOpts)
4 (1.49 % of base) : 26289.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis:CheckNestedFunctions(Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+Scope,System.Func`3[Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+Scope,Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+NestedFunction,ubyte]):ubyte (FullOpts)
Top method improvements (percentages):
-56 (-7.41 % of base) : 2417.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-32 (-5.84 % of base) : 16603.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-16 (-5.26 % of base) : 28664.dasm - System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
-12 (-5.17 % of base) : 11088.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
-16 (-4.04 % of base) : 1793.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-4 (-3.23 % of base) : 19541.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
-8 (-2.90 % of base) : 2136.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-4 (-2.86 % of base) : 30759.dasm - System.Management.Automation.WildcardPattern:ContainsWildcardCharacters(System.String):ubyte (FullOpts)
-4 (-2.78 % of base) : 29231.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
-32 (-2.68 % of base) : 13740.dasm - Microsoft.ML.Data.BufferBuilder`1[uint]:GetResult(byref):this (FullOpts)
-12 (-2.68 % of base) : 2890.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-32 (-2.48 % of base) : 13894.dasm - Microsoft.ML.Data.TextLoader+VectorPipe`1+VectorValue[float]:Get(byref):this (FullOpts)
-16 (-2.48 % of base) : 27945.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-4 (-2.33 % of base) : 27539.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEmbeddedAttributeSymbolBase:GetMembers(System.String):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
-4 (-2.13 % of base) : 12868.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
-4 (-2.13 % of base) : 4626.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
-4 (-2.13 % of base) : 28603.dasm - System.Management.Automation.ExecutionContext:TryGetFromAssemblyCache(System.String,System.String,byref):ubyte:this (FullOpts)
-4 (-2.08 % of base) : 16235.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-4 (-2.04 % of base) : 101.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
-4 (-2.04 % of base) : 3169.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
Diffs are based on 2,318,299 contexts (931,543 MinOpts, 1,386,756 FullOpts).
MISSED contexts: base: 2,587 (0.11%), diff: 2,595 (0.11%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.windows.arm64.checked.mch | 10,964,120 | +384 |
benchmarks.run_pgo.windows.arm64.checked.mch | 47,218,960 | -7,024 |
benchmarks.run_tiered.windows.arm64.checked.mch | 15,346,624 | -268 |
coreclr_tests.run.windows.arm64.checked.mch | 495,323,188 | -40,444 |
libraries.crossgen2.windows.arm64.checked.mch | 58,963,476 | +48 |
libraries.pmi.windows.arm64.checked.mch | 79,565,936 | -3,548 |
libraries_tests.run.windows.arm64.Release.mch | 309,738,560 | -44,932 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 168,998,868 | -21,232 |
realworld.run.windows.arm64.checked.mch | 15,891,292 | -192 |
smoke_tests.nativeaot.windows.arm64.checked.mch | 3,972,452 | -80 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
benchmarks.run.windows.arm64.checked.mch | 10,963,584 | +384 |
benchmarks.run_pgo.windows.arm64.checked.mch | 30,968,576 | -7,024 |
benchmarks.run_tiered.windows.arm64.checked.mch | 4,157,248 | -268 |
coreclr_tests.run.windows.arm64.checked.mch | 156,231,660 | -40,444 |
libraries.crossgen2.windows.arm64.checked.mch | 58,961,840 | +48 |
libraries.pmi.windows.arm64.checked.mch | 79,445,952 | -3,548 |
libraries_tests.run.windows.arm64.Release.mch | 108,157,056 | -44,932 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 155,861,404 | -21,232 |
realworld.run.windows.arm64.checked.mch | 15,322,868 | -192 |
smoke_tests.nativeaot.windows.arm64.checked.mch | 3,971,480 | -80 |
@@ -59,10 +59,8 @@ G_M65029_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M65029_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M65029_IG04
- cbz x1, G_M65029_IG08
- b G_M65029_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M65029_IG07
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M65029_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbnz x1, G_M65029_IG05
@@ -81,21 +79,19 @@ G_M65029_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M65029_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M65029_IG08
ldr w3, [x1, #0x08]
- cbz w3, G_M65029_IG08
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M65029_IG09
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w3, G_M65029_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M65029_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
- ; gcrRegs -[x0] +[x1]
+G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
add x1, x1, #12
; gcrRegs -[x1]
@@ -114,13 +110,13 @@ G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x4
; gcrRegs +[x0]
; byrRegs -[x0 x2]
- ;; size=36 bbWeight=0.50 PerfScore 3.75
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
G_M65029_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 124, prolog size 8, PerfScore 16.50, instruction count 31, allocated bytes for code 124 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 15.50, instruction count 29, allocated bytes for code 116 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -131,7 +127,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -74,10 +74,8 @@ G_M4343_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {},
;; size=4 bbWeight=1 PerfScore 1.00
G_M4343_IG03: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
ldr w19, [x0, #0x08]
- cbz w19, G_M4343_IG04
- cbz x1, G_M4343_IG07
- b G_M4343_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w19, G_M4343_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M4343_IG04: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -98,11 +96,10 @@ G_M4343_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M4343_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1-x2]
+ cbz x1, G_M4343_IG07
ldr w3, [x1, #0x08]
- cbz w3, G_M4343_IG07
- cbz x2, G_M4343_IG10
- b G_M4343_IG09
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w3, G_M4343_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M4343_IG07: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, x2
@@ -122,16 +119,12 @@ G_M4343_IG08: ; bbWeight=0.50, epilog, nogc, extend
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M4343_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1-x2]
+ cbz x2, G_M4343_IG10
ldr w5, [x2, #0x08]
- cbz w5, G_M4343_IG10
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M4343_IG12
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w5, G_M4343_IG12
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M4343_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x2]
movz x2, #0xD1FFAB1E // code for System.IO.Path:Join(System.String,System.String):System.String
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -144,8 +137,10 @@ G_M4343_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M4343_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref
- ; gcrRegs -[x0] +[x1-x2]
+G_M4343_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1-x2]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
add x1, x1, #12
; gcrRegs -[x1]
@@ -169,14 +164,14 @@ G_M4343_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006
blr x6
; gcrRegs +[x0]
; byrRegs -[x0 x2 x4]
- ;; size=48 bbWeight=0.50 PerfScore 4.50
+ ;; size=52 bbWeight=0.50 PerfScore 4.75
G_M4343_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 232, prolog size 12, PerfScore 33.75, instruction count 58, allocated bytes for code 232 (MethodHash=bb15ef08) for method System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 32.25, instruction count 55, allocated bytes for code 220 (MethodHash=bb15ef08) for method System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -187,7 +182,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet
1+Node[System.Canon],System.Collections.Generic.SortedSet`1+Node[System.Canon]):ubyte:this (FullOpts)@@ -36,12 +36,8 @@ G_M938_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byr
ldrb w0, [x0, #0x20]
; gcrRegs -[x0]
cmp w0, #1
- bne G_M938_IG04
- mov w0, #2
- cmp w1, #0
- cinc w0, w0, ne
- b G_M938_IG06
- ;; size=28 bbWeight=0.50 PerfScore 3.50
+ beq G_M938_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
G_M938_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w1, #0
cset x0, eq
@@ -50,12 +46,17 @@ G_M938_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M938_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M938_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #2
+ cmp w1, #0
+ cinc w0, w0, ne
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
+G_M938_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 80, prolog size 8, PerfScore 15.50, instruction count 20, allocated bytes for code 80 (MethodHash=eeeffc55) for method System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 15.00, instruction count 19, allocated bytes for code 76 (MethodHash=eeeffc55) for method System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -66,7 +67,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -22,26 +22,20 @@ G_M65033_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x0C]
cmp w1, #1
- beq G_M65033_IG05
+ beq G_M65033_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M65033_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
cmp w1, #2
- bne G_M65033_IG07
+ bne G_M65033_IG08
ldr w1, [x0, #0x10]
add w1, w1, #1
str w1, [x0, #0x10]
ldr w2, [x0, #0x18]
cmp w1, w2
- beq G_M65033_IG07
- mov w0, #1
- ; gcrRegs -[x0]
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M65033_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
+ beq G_M65033_IG08
+ b G_M65033_IG06
+ ;; size=36 bbWeight=0.50 PerfScore 5.75
+G_M65033_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w1, [x0, #0x14]
str w1, [x0, #0x10]
mov w1, #2
@@ -49,23 +43,30 @@ G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov w0, #1
; gcrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M65033_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M65033_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M65033_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M65033_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movn w1, #0
str w1, [x0, #0x0C]
mov w0, wzr
; gcrRegs -[x0]
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 112, prolog size 8, PerfScore 18.50, instruction count 28, allocated bytes for code 112 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 19.00, instruction count 29, allocated bytes for code 116 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -76,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -37,73 +37,77 @@ G_M3894_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
add x1, x0, x1
mov w4, wzr
cmp x0, x1
- bhs G_M3894_IG11
+ bhs G_M3894_IG05
;; size=20 bbWeight=1 PerfScore 3.50
G_M3894_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add x5, x0, #2
ldrh w0, [x0]
cmp w0, #128
- bge G_M3894_IG05
+ bge G_M3894_IG06
;; size=16 bbWeight=4 PerfScore 20.00
G_M3894_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #1
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M3894_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
- cmp w0, #0xD1FFAB1E
- bge G_M3894_IG06
- mov w6, #2
- b G_M3894_IG08
- ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ mov x5, x0
+ b G_M3894_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M3894_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ bge G_M3894_IG07
+ mov w6, #2
+ b G_M3894_IG09
+ ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
movn w6, #0xD1FFAB1E
add w0, w0, w6
mov w6, #0xD1FFAB1E
cmp x5, x1
ccmp w0, w6, c, lo
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
ldrh w0, [x5]
movn w6, #0xD1FFAB1E
add w0, w0, w6
cmp w0, #0xD1FFAB1E
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
mov w6, #4
add x5, x5, #2
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=56 bbWeight=2 PerfScore 22.00
-G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+G_M3894_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #3
;; size=4 bbWeight=2 PerfScore 1.00
-G_M3894_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+G_M3894_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add w0, w4, w6
cmp w0, w2
- bgt G_M3894_IG10
+ bgt G_M3894_IG11
sxtw w4, w0
cmp x5, x1
+ blo G_M3894_IG10
+ b G_M3894_IG12
+ ;; size=28 bbWeight=4 PerfScore 20.00
+G_M3894_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov x0, x5
- blo G_M3894_IG03
- ;; size=28 bbWeight=4 PerfScore 18.00
-G_M3894_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- b G_M3894_IG11
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3894_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ b G_M3894_IG03
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M3894_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w0, #1
cmp w6, #4
cinc w0, w0, ge
sbfiz x0, x0, #1, #32
sub x5, x5, x0
- mov x0, x5
- ;; size=24 bbWeight=0.50 PerfScore 1.75
-G_M3894_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- str x0, [x3]
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
+G_M3894_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ str x5, [x3]
mov w0, w4
;; size=8 bbWeight=1 PerfScore 1.50
-G_M3894_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M3894_IG13: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 80.75, instruction count 50, allocated bytes for code 200 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
+; Total bytes of code 208, prolog size 8, PerfScore 85.75, instruction count 52, allocated bytes for code 208 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -114,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -16,7 +16,7 @@
;
; Lcl frame size = 0
-G_M26551_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M26551_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
@@ -47,7 +47,7 @@ G_M26551_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
G_M26551_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w0, w0, #15
cmp w0, #1
- bls G_M26551_IG05
+ bls G_M26551_IG07
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x20, #0x88]
@@ -55,20 +55,9 @@ G_M26551_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x1
; gcrRegs -[x0]
cbnz w0, G_M26551_IG03
- ;; size=32 bbWeight=4 PerfScore 42.00
+ b G_M26551_IG09
+ ;; size=36 bbWeight=4 PerfScore 46.00
G_M26551_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x21, #0x28]
- ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M26551_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
- br x1
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M26551_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x20, #0x88]
@@ -79,20 +68,36 @@ G_M26551_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs +[x0]
ldr x1, [x21, #0x28]
;; size=24 bbWeight=0.50 PerfScore 5.50
+G_M26551_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x30
+ br x1
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M26551_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ldr x1, [x21, #0x28]
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M26551_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
br x1
;; size=16 bbWeight=0.50 PerfScore 2.00
-RWD00 dd G_M26551_IG05 - G_M26551_IG02
+G_M26551_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ b G_M26551_IG07
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+RWD00 dd G_M26551_IG07 - G_M26551_IG02
+ dd G_M26551_IG05 - G_M26551_IG02
+ dd G_M26551_IG07 - G_M26551_IG02
+ dd G_M26551_IG07 - G_M26551_IG02
dd G_M26551_IG07 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
-; Total bytes of code 172, prolog size 16, PerfScore 163.25, instruction count 43, allocated bytes for code 172 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
+; Total bytes of code 180, prolog size 16, PerfScore 167.75, instruction count 45, allocated bytes for code 180 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +108,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T16] ( 5, 3.00) long -> x4 single-def
-; V01 arg1 [V01,T10] ( 7, 5.00) int -> [fp+0x14] single-def
+; V01 arg1 [V01,T10] ( 7, 5.00) int -> [fp+0x1C] single-def
; V02 arg2 [V02,T14] ( 4, 3 ) ref -> x2 class-hnd single-def <ubyte[]>
; V03 arg3 [V03,T15] ( 6, 3.00) ref -> x3 class-hnd single-def <System.Reflection.Metadata.MetadataStringDecoder>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,14 +27,14 @@
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V16 tmp12 [V16,T01] ( 3, 52.48) ubyte -> x6 "Inline stloc first use temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V18 tmp14 [V18,T19] ( 3, 3.00) ref -> x19 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V19 tmp15 [V19,T12] ( 5, 5.01) int -> x20 "Inline stloc first use temp"
-; V20 tmp16 [V20,T11] ( 7, 5.98) ref -> x22 class-hnd "Inline stloc first use temp" <System.String>
-; V21 tmp17 [V21,T13] ( 5, 5.01) int -> x21 "Inline stloc first use temp"
-; V22 tmp18 [V22,T24] ( 2, 1.51) int -> x1 "Inline stloc first use temp"
+; V18 tmp14 [V18,T19] ( 3, 3.00) ref -> x1 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V19 tmp15 [V19,T12] ( 5, 5.01) int -> x5 "Inline stloc first use temp"
+; V20 tmp16 [V20,T11] ( 7, 5.98) ref -> x8 class-hnd "Inline stloc first use temp" <System.String>
+; V21 tmp17 [V21,T13] ( 5, 5.01) int -> x6 "Inline stloc first use temp"
+; V22 tmp18 [V22,T24] ( 2, 1.51) int -> x7 "Inline stloc first use temp"
;* V23 tmp19 [V23,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V25 tmp21 [V25,T04] ( 5, 34.81) int -> x23 "Inline stloc first use temp"
+; V25 tmp21 [V25,T04] ( 5, 34.81) int -> x7 "Inline stloc first use temp"
; V26 tmp22 [V26,T22] ( 2, 2.00) byref -> x4 single-def "field V07._reference (fldOffset=0x0)" P-INDEP
; V27 tmp23 [V27,T23] ( 2, 2.00) int -> x2 "field V07._length (fldOffset=0x8)" P-INDEP
; V28 tmp24 [V28,T06] ( 4, 28.07) byref -> x4 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
@@ -42,22 +42,19 @@
;* V30 tmp26 [V30,T26] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V31 tmp27 [V31,T27] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V32 tmp28 [V32,T29] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp29 [V33,T25] ( 2, 1.01) int -> x1 "field V24._length (fldOffset=0x8)" P-INDEP
-; V34 cse0 [V34,T18] ( 3, 3.01) long -> x1 "CSE - moderate"
+; V33 tmp29 [V33,T25] ( 2, 1.01) int -> x7 "field V24._length (fldOffset=0x8)" P-INDEP
+; V34 cse0 [V34,T18] ( 3, 3.01) long -> x7 "CSE - moderate"
; V35 cse1 [V35,T08] ( 2, 18.44) int -> x5 hoist "CSE - aggressive"
-; V36 cse2 [V36,T09] ( 2, 9.05) byref -> x1 hoist "CSE - aggressive"
-; V37 cse3 [V37,T07] ( 3, 25.73) long -> x5 "CSE - aggressive"
+; V36 cse2 [V36,T09] ( 2, 9.05) byref -> x9 hoist "CSE - aggressive"
+; V37 cse3 [V37,T07] ( 3, 25.73) long -> x10 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M33766_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
mov x4, x0
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M33766_IG02: ; bbWeight=1, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2-x3]
cbz x2, G_M33766_IG05
@@ -73,15 +70,12 @@ G_M33766_IG03: ; bbWeight=0, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, b
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
G_M33766_IG04: ; bbWeight=0, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M33766_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x3]
- cbnz w1, G_M33766_IG17
+ cbnz w1, G_M33766_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M33766_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
@@ -90,12 +84,9 @@ G_M33766_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movk x0, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.00 PerfScore 0.00
G_M33766_IG07: ; bbWeight=0.00, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=20 bbWeight=0.00 PerfScore 0.01
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
G_M33766_IG08: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
sxtw w2, w1
movz w0, #0xD1FFAB1E
@@ -123,130 +114,121 @@ G_M33766_IG10: ; bbWeight=17.49, gcrefRegs=0000 {}, byrefRegs=0010 {x4},
G_M33766_IG11: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {x4}, byref, isz
tst w1, #128
cset x3, eq
- cbz w3, G_M33766_IG27
+ cbz w3, G_M33766_IG25
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- ldr x19, [x1]
- ; gcrRegs +[x19]
- eor w1, w0, w0, ASR #11
- uxth w20, w1
- mov w21, #1
+ ldr x1, [x1]
+ ; gcrRegs +[x1]
+ eor w5, w0, w0, ASR #11
+ uxth w5, w5
+ mov w6, #1
;; size=40 bbWeight=1.00 PerfScore 8.49
-G_M33766_IG12: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0010 {x4}, byref, isz
- cmp w20, #16, LSL #12
- bhs G_M33766_IG28
- ubfiz x1, x20, #4, #32
- add x1, x1, #16
- ldr x22, [x19, x1]
- ; gcrRegs +[x22]
- add x1, x19, x1
- ; byrRegs +[x1]
- ldr w1, [x1, #0x08]
- ; byrRegs -[x1]
- cbz x22, G_M33766_IG26
+G_M33766_IG12: ; bbWeight=1.00, gcrefRegs=0002 {x1}, byrefRegs=0010 {x4}, byref, isz
+ cmp w5, #16, LSL #12
+ bhs G_M33766_IG26
+ ubfiz x7, x5, #4, #32
+ add x7, x7, #16
+ ldr x8, [x1, x7]
+ ; gcrRegs +[x8]
+ add x7, x1, x7
+ ; byrRegs +[x7]
+ ldr w7, [x7, #0x08]
+ ; byrRegs -[x7]
+ cbz x8, G_M33766_IG24
;; size=32 bbWeight=1.00 PerfScore 10.52
-G_M33766_IG13: ; bbWeight=0.51, gcrefRegs=480000 {x19 x22}, byrefRegs=0010 {x4}, byref, isz
- cmp w1, w0
- bne G_M33766_IG25
+G_M33766_IG13: ; bbWeight=0.51, gcrefRegs=0102 {x1 x8}, byrefRegs=0010 {x4}, byref, isz
+ cmp w7, w0
+ bne G_M33766_IG23
;; size=8 bbWeight=0.51 PerfScore 0.76
-G_M33766_IG14: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0010 {x4}, byref, isz
- sxtw w1, w2
- ldr w5, [x22, #0x08]
- cmp w5, w1
- bne G_M33766_IG25
+G_M33766_IG14: ; bbWeight=0.50, gcrefRegs=0102 {x1 x8}, byrefRegs=0010 {x4}, byref, isz
+ sxtw w7, w2
+ ldr w9, [x8, #0x08]
+ cmp w9, w7
+ bne G_M33766_IG23
;; size=16 bbWeight=0.50 PerfScore 2.51
-G_M33766_IG15: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0010 {x4}, byref, isz
- mov w23, wzr
+G_M33766_IG15: ; bbWeight=0.50, gcrefRegs=0102 {x1 x8}, byrefRegs=0010 {x4}, byref, isz
+ mov w7, wzr
cmp w2, #0
- ble G_M33766_IG26
- ;; size=12 bbWeight=0.50 PerfScore 1.01
-G_M33766_IG16: ; bbWeight=0.48, gcrefRegs=480000 {x19 x22}, byrefRegs=0010 {x4}, byref
- b G_M33766_IG21
- ;; size=4 bbWeight=0.48 PerfScore 0.48
-G_M33766_IG17: ; bbWeight=1.00, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19 x22] +[x3]
+ ble G_M33766_IG24
+ b G_M33766_IG20
+ ;; size=16 bbWeight=0.50 PerfScore 1.51
+G_M33766_IG16: ; bbWeight=1.00, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1 x8] +[x3]
; byrRegs -[x4]
ldr x2, [x3]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x2, x0
- beq G_M33766_IG24
+ beq G_M33766_IG22
;; size=24 bbWeight=1.00 PerfScore 5.99
-G_M33766_IG18: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
- str w1, [fp, #0x14] // [V01 arg1]
+G_M33766_IG17: ; bbWeight=0, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ str w1, [fp, #0x1C] // [V01 arg1]
mov x0, x3
; gcrRegs +[x0]
mov x1, x4
- ldr w2, [fp, #0x14] // [V01 arg1]
+ ldr w2, [fp, #0x1C] // [V01 arg1]
ldr x3, [x3]
; gcrRegs -[x3]
ldr x3, [x3, #0x48]
ldr x3, [x3, #0x20]
blr x3
; gcr arg pop 0
- mov x22, x0
- ; gcrRegs +[x22]
+ mov x8, x0
+ ; gcrRegs +[x8]
;; size=36 bbWeight=0 PerfScore 0.00
-G_M33766_IG19: ; bbWeight=1.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M33766_IG18: ; bbWeight=1.00, gcrefRegs=0100 {x8}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x0, x22
+ mov x0, x8
; gcrRegs +[x0]
;; size=4 bbWeight=1.00 PerfScore 0.50
-G_M33766_IG20: ; bbWeight=1.00, epilog, nogc, extend
- ldr x23, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x40
+G_M33766_IG19: ; bbWeight=1.00, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=20 bbWeight=1.00 PerfScore 5.99
-G_M33766_IG21: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0010 {x4}, gcvars, byref
- ; gcrRegs -[x0] +[x19]
+ ;; size=8 bbWeight=1.00 PerfScore 2.00
+G_M33766_IG20: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0102 {x1 x8}, byrefRegs=0010 {x4}, gcvars, byref
+ ; gcrRegs -[x0] +[x1]
; byrRegs +[x4]
- add x1, x22, #12
- ; byrRegs +[x1]
+ add x9, x8, #12
+ ; byrRegs +[x9]
;; size=4 bbWeight=0.48 PerfScore 0.24
-G_M33766_IG22: ; bbWeight=8.58, gcrefRegs=480000 {x19 x22}, byrefRegs=0012 {x1 x4}, byref, isz
- mov w5, w23
- ldrb w6, [x4, x5]
- lsl x5, x5, #1
- ldrh w5, [x1, x5]
- cmp w6, w5
- bne G_M33766_IG25
- add w23, w23, #1
- cmp w23, w2
- blt G_M33766_IG22
- ;; size=36 bbWeight=8.58 PerfScore 94.36
-G_M33766_IG23: ; bbWeight=0.48, gcrefRegs=400000 {x22}, byrefRegs=0010 {x4}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x1]
- b G_M33766_IG26
- ;; size=4 bbWeight=0.48 PerfScore 0.48
-G_M33766_IG24: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22]
- ; byrRegs -[x4]
- tbnz w1, #31, G_M33766_IG29
...
@@ -10,12 +10,12 @@
; Final local variable assignments
;
; V00 this [V00,T06] ( 5, 4 ) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T03] ( 9, 23.04) ref -> x19 class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T03] ( 8, 19.71) ref -> x19 class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T07] ( 3, 2.05) ref -> x21 class-hnd single-def <System.__Canon[]>
; V03 loc1 [V03,T09] ( 4, 0.95) ref -> x21 class-hnd single-def <System.__Canon[]>
; V04 loc2 [V04,T08] ( 5, 1.76) int -> x22
-; V05 loc3 [V05,T02] ( 6, 27.33) ref -> x23 class-hnd <System.__Canon>
-; V06 loc4 [V06,T01] ( 9, 35.98) int -> x24
+; V05 loc3 [V05,T02] ( 6, 24.00) ref -> x23 class-hnd <System.__Canon>
+; V06 loc4 [V06,T01] ( 6, 32.65) int -> x24
; V07 loc5 [V07,T00] ( 5, 39.31) ref -> x0 class-hnd <System.__Canon>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T05] ( 2, 15.95) int -> x0 "guarded devirt return temp"
@@ -40,7 +40,7 @@ G_M50755_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M50755_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x21, [x20, #0x08]
; gcrRegs +[x21]
- cbnz x21, G_M50755_IG07
+ cbnz x21, G_M50755_IG05
;; size=8 bbWeight=1 PerfScore 4.00
G_M50755_IG03: ; bbWeight=0.95, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
@@ -59,39 +59,28 @@ G_M50755_IG04: ; bbWeight=0.95, epilog, nogc, extend
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=0.95 PerfScore 4.73
-G_M50755_IG05: ; bbWeight=7.42, gcVars=0000000000000000 {}, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0 x19-x21 x23]
- ldr x1, [x23, #0x50]
- ldr x0, [x0, #0x50]
- ; gcrRegs -[x0]
- cmp x1, x0
- bne G_M50755_IG14
- ;; size=16 bbWeight=7.42 PerfScore 55.61
-G_M50755_IG06: ; bbWeight=59.32, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
- b G_M50755_IG15
- ;; size=4 bbWeight=59.32 PerfScore 59.32
-G_M50755_IG07: ; bbWeight=0.05, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x23]
+G_M50755_IG05: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x21]
mov w22, wzr
ldr w0, [x21, #0x08]
cmp w0, #0
- ble G_M50755_IG17
+ ble G_M50755_IG14
;; size=16 bbWeight=0.05 PerfScore 0.27
-G_M50755_IG08: ; bbWeight=0.41, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG06: ; bbWeight=0.41, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, #16
; byrRegs +[x0]
ldr x23, [x0, w22, UXTW #3]
; gcrRegs +[x23]
- cbz x23, G_M50755_IG17
+ cbz x23, G_M50755_IG14
;; size=12 bbWeight=0.41 PerfScore 1.83
-G_M50755_IG09: ; bbWeight=0.38, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG07: ; bbWeight=0.38, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
mov w24, wzr
ldr w0, [x19, #0x08]
cmp w0, #0
- ble G_M50755_IG16
+ ble G_M50755_IG13
;; size=16 bbWeight=0.38 PerfScore 1.90
-G_M50755_IG10: ; bbWeight=7.97, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG08: ; bbWeight=7.97, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add x0, x19, #16
; byrRegs +[x0]
ldr x0, [x0, w24, UXTW #3]
@@ -102,9 +91,9 @@ G_M50755_IG10: ; bbWeight=7.97, gcrefRegs=B80000 {x19 x20 x21 x23}, byref
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M50755_IG13
+ bne G_M50755_IG10
;; size=32 bbWeight=7.97 PerfScore 75.75
-G_M50755_IG11: ; bbWeight=7.42, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG09: ; bbWeight=7.42, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
mov x1, x23
; gcrRegs +[x1]
ldr x1, [x1]
@@ -113,13 +102,15 @@ G_M50755_IG11: ; bbWeight=7.42, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, by
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- beq G_M50755_IG05
- ;; size=28 bbWeight=7.42 PerfScore 48.20
-G_M50755_IG12: ; bbWeight=1.85, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+ bne G_M50755_IG11
+ ldr x1, [x23, #0x50]
+ ldr x0, [x0, #0x50]
; gcrRegs -[x0]
- b G_M50755_IG19
- ;; size=4 bbWeight=1.85 PerfScore 1.85
-G_M50755_IG13: ; bbWeight=7.97, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+ cmp x1, x0
+ bne G_M50755_IG11
+ b G_M50755_IG12
+ ;; size=48 bbWeight=7.42 PerfScore 111.23
+G_M50755_IG10: ; bbWeight=7.97, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
mov x1, x23
; gcrRegs +[x1]
@@ -129,16 +120,16 @@ G_M50755_IG13: ; bbWeight=7.97, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, by
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbnz w0, G_M50755_IG15
+ cbnz w0, G_M50755_IG12
;; size=24 bbWeight=7.97 PerfScore 91.69
-G_M50755_IG14: ; bbWeight=7.97, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M50755_IG11: ; bbWeight=7.97, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
ldr w1, [x19, #0x08]
cmp w1, w24
- ble G_M50755_IG16
- b G_M50755_IG10
+ bgt G_M50755_IG08
+ b G_M50755_IG13
;; size=20 bbWeight=7.97 PerfScore 47.84
-G_M50755_IG15: ; bbWeight=3.71, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M50755_IG12: ; bbWeight=0.38, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
sxtw x1, w24
mov x0, x19
; gcrRegs +[x0]
@@ -147,14 +138,14 @@ G_M50755_IG15: ; bbWeight=3.71, gcrefRegs=B80000 {x19 x20 x21 x23}, byref
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2 x23]
; gcr arg pop 0
- ;; size=16 bbWeight=3.71 PerfScore 9.27
-G_M50755_IG16: ; bbWeight=0.43, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.38 PerfScore 0.95
+G_M50755_IG13: ; bbWeight=0.43, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1
ldr w14, [x21, #0x08]
cmp w14, w22
- bgt G_M50755_IG08
+ bgt G_M50755_IG06
;; size=16 bbWeight=0.43 PerfScore 2.17
-G_M50755_IG17: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M50755_IG14: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
add x14, x20, #8
; byrRegs +[x14]
@@ -164,23 +155,15 @@ G_M50755_IG17: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x15 x19-x20]
; byrRegs -[x14]
;; size=12 bbWeight=0.05 PerfScore 0.11
-G_M50755_IG18: ; bbWeight=0.05, epilog, nogc, extend
+G_M50755_IG15: ; bbWeight=0.05, epilog, nogc, extend
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=0.05 PerfScore 0.27
-G_M50755_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x21 x23]
- add w24, w24, #1
- ldr w0, [x19, #0x08]
- cmp w0, w24
- bgt G_M50755_IG10
- b G_M50755_IG16
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 28, PerfScore 412.21, instruction count 81, allocated bytes for code 324 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
+; Total bytes of code 300, prolog size 28, PerfScore 350.13, instruction count 75, allocated bytes for code 300 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
; ============================================================
Unwind Info:
@@ -191,7 +174,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 324 (0x000144)
+ Function Length : 75 (0x0004b) Actual length = 300 (0x00012c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -11,10 +11,10 @@
;
; V00 arg0 [V00,T04] ( 9,500.49) ref -> x0 class-hnd single-def <int[,]>
;* V01 arg1 [V01 ] ( 0, 0 ) byref -> zero-ref single-def
-; V02 loc0 [V02,T17] ( 6,100.52) int -> x3
+; V02 loc0 [V02,T17] ( 5,100.52) int -> x3
; V03 loc1 [V03,T11] ( 2,199.00) int -> x10
; V04 loc2 [V04,T12] ( 2,199.00) int -> x11
-; V05 loc3 [V05,T20] ( 8, 99.54) int -> x4
+; V05 loc3 [V05,T20] ( 5, 99.54) int -> x4
; V06 loc4 [V06,T16] ( 6,101.02) int -> x2
; V07 loc5 [V07,T05] ( 6,399.00) int -> x1
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -95,13 +95,12 @@ G_M57584_IG07: ; bbWeight=99.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {},
G_M57584_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add w2, w2, #1
cmp w2, w3
- bgt G_M57584_IG11
- b G_M57584_IG04
- ;; size=16 bbWeight=0.50 PerfScore 1.50
+ ble G_M57584_IG04
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
G_M57584_IG09: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add w4, w4, #1
cmp w4, w3
- bgt G_M57584_IG12
+ bgt G_M57584_IG11
b G_M57584_IG03
;; size=16 bbWeight=0.01 PerfScore 0.03
G_M57584_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -109,20 +108,13 @@ G_M57584_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M57584_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- add w4, w4, #1
- cmp w4, w3
- ble G_M57584_IG03
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M57584_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0]
+G_M57584_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
add sp, sp, #64
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 24, PerfScore 3200.02, instruction count 57, allocated bytes for code 228 (MethodHash=862a1f0f) for method Benchstone.MDBenchI.MDAddArray2:BenchInner2(int[,],byref) (Tier1-OSR)
+; Total bytes of code 212, prolog size 24, PerfScore 3199.52, instruction count 53, allocated bytes for code 212 (MethodHash=862a1f0f) for method Benchstone.MDBenchI.MDAddArray2:BenchInner2(int[,],byref) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -133,7 +125,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,7 +9,7 @@
; 5 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 4.57) byref -> x19 this single-def
+; V00 this [V00,T00] ( 10, 4.57) byref -> x19 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T03] ( 3, 1.71) int -> x0 "Span.get_Item index"
; V03 tmp2 [V03,T02] ( 3, 1.71) byref -> x1 "Span.get_Item ptrToSpan"
@@ -60,7 +60,7 @@ G_M7781_IG03: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
ldrh w0, [x1, w0, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M7781_IG05
+ blo G_M7781_IG04
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; byrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
@@ -68,21 +68,25 @@ G_M7781_IG03: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M7781_IG06
- ;; size=60 bbWeight=0.29 PerfScore 6.29
-G_M7781_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldr w0, [x19, #0x20]
- add w0, w0, #1
- str w0, [x19, #0x20]
- b G_M7781_IG02
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M7781_IG05: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cbnz w0, G_M7781_IG05
+ b G_M7781_IG06
+ ;; size=64 bbWeight=0.29 PerfScore 6.57
+G_M7781_IG04: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M7781_IG04
+ tbz w0, #7, G_M7781_IG06
;; size=20 bbWeight=0.29 PerfScore 1.57
+G_M7781_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ldr w0, [x19, #0x20]
+ add w0, w0, #1
+ str w0, [x19, #0x20]
+ ldr w0, [x19, #0x20]
+ ldr w1, [x19, #0x38]
+ cmp w0, w1
+ blt G_M7781_IG03
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M7781_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x19]
ldr x19, [sp, #0x18]
@@ -95,7 +99,7 @@ G_M7781_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 16, PerfScore 22.36, instruction count 37, allocated bytes for code 148 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 164, prolog size 16, PerfScore 22.64, instruction count 41, allocated bytes for code 164 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
; ============================================================
Unwind Info:
@@ -106,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,7 +9,7 @@
; 5 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 4.40) byref -> x19 this single-def
+; V00 this [V00,T00] ( 10, 4.40) byref -> x19 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T03] ( 3, 1.20) int -> x0 "Span.get_Item index"
; V03 tmp2 [V03,T02] ( 3, 1.20) byref -> x1 "Span.get_Item ptrToSpan"
@@ -60,7 +60,7 @@ G_M7781_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
ldrh w0, [x1, w0, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M7781_IG05
+ blo G_M7781_IG04
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; byrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
@@ -68,21 +68,25 @@ G_M7781_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M7781_IG06
- ;; size=60 bbWeight=0.20 PerfScore 4.40
-G_M7781_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldr w0, [x19, #0x20]
- add w0, w0, #1
- str w0, [x19, #0x20]
- b G_M7781_IG02
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M7781_IG05: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cbnz w0, G_M7781_IG05
+ b G_M7781_IG06
+ ;; size=64 bbWeight=0.20 PerfScore 4.60
+G_M7781_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M7781_IG04
+ tbz w0, #7, G_M7781_IG06
;; size=20 bbWeight=0.20 PerfScore 1.10
+G_M7781_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ldr w0, [x19, #0x20]
+ add w0, w0, #1
+ str w0, [x19, #0x20]
+ ldr w0, [x19, #0x20]
+ ldr w1, [x19, #0x38]
+ cmp w0, w1
+ blt G_M7781_IG03
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M7781_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x19]
ldr x19, [sp, #0x18]
@@ -95,7 +99,7 @@ G_M7781_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 16, PerfScore 20.00, instruction count 37, allocated bytes for code 148 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 164, prolog size 16, PerfScore 20.20, instruction count 41, allocated bytes for code 164 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
; ============================================================
Unwind Info:
@@ -106,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,7 +9,7 @@
; 5 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 4.40) byref -> x19 this single-def
+; V00 this [V00,T00] ( 10, 4.40) byref -> x19 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T03] ( 3, 1.20) int -> x0 "Span.get_Item index"
; V03 tmp2 [V03,T02] ( 3, 1.20) byref -> x1 "Span.get_Item ptrToSpan"
@@ -60,7 +60,7 @@ G_M7781_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
ldrh w0, [x1, w0, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M7781_IG05
+ blo G_M7781_IG04
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; byrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
@@ -68,21 +68,25 @@ G_M7781_IG03: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbz w0, G_M7781_IG06
- ;; size=60 bbWeight=0.20 PerfScore 4.40
-G_M7781_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldr w0, [x19, #0x20]
- add w0, w0, #1
- str w0, [x19, #0x20]
- b G_M7781_IG02
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M7781_IG05: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cbnz w0, G_M7781_IG05
+ b G_M7781_IG06
+ ;; size=64 bbWeight=0.20 PerfScore 4.60
+G_M7781_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M7781_IG04
+ tbz w0, #7, G_M7781_IG06
;; size=20 bbWeight=0.20 PerfScore 1.10
+G_M7781_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ldr w0, [x19, #0x20]
+ add w0, w0, #1
+ str w0, [x19, #0x20]
+ ldr w0, [x19, #0x20]
+ ldr w1, [x19, #0x38]
+ cmp w0, w1
+ blt G_M7781_IG03
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M7781_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x19]
ldr x19, [sp, #0x18]
@@ -95,7 +99,7 @@ G_M7781_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 16, PerfScore 20.00, instruction count 37, allocated bytes for code 148 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 164, prolog size 16, PerfScore 20.20, instruction count 41, allocated bytes for code 164 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
; ============================================================
Unwind Info:
@@ -106,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -74,10 +74,8 @@ G_M4343_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {},
;; size=4 bbWeight=1 PerfScore 1.00
G_M4343_IG03: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
ldr w19, [x0, #0x08]
- cbz w19, G_M4343_IG04
- cbz x1, G_M4343_IG07
- b G_M4343_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w19, G_M4343_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M4343_IG04: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -98,11 +96,10 @@ G_M4343_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M4343_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1-x2]
+ cbz x1, G_M4343_IG07
ldr w3, [x1, #0x08]
- cbz w3, G_M4343_IG07
- cbz x2, G_M4343_IG10
- b G_M4343_IG09
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w3, G_M4343_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M4343_IG07: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, x2
@@ -122,16 +119,12 @@ G_M4343_IG08: ; bbWeight=0.50, epilog, nogc, extend
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M4343_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1-x2]
+ cbz x2, G_M4343_IG10
ldr w5, [x2, #0x08]
- cbz w5, G_M4343_IG10
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M4343_IG12
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w5, G_M4343_IG12
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M4343_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x2]
movz x2, #0xD1FFAB1E // code for System.IO.Path:Join(System.String,System.String):System.String
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -144,8 +137,10 @@ G_M4343_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M4343_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref
- ; gcrRegs -[x0] +[x1-x2]
+G_M4343_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1-x2]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
add x1, x1, #12
; gcrRegs -[x1]
@@ -169,14 +164,14 @@ G_M4343_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006
blr x6
; gcrRegs +[x0]
; byrRegs -[x0 x2 x4]
- ;; size=48 bbWeight=0.50 PerfScore 4.50
+ ;; size=52 bbWeight=0.50 PerfScore 4.75
G_M4343_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 232, prolog size 12, PerfScore 33.75, instruction count 58, allocated bytes for code 232 (MethodHash=bb15ef08) for method System.IO.Path:Join(System.String,System.String,System.String):System.String (Tier1)
+; Total bytes of code 220, prolog size 12, PerfScore 32.25, instruction count 55, allocated bytes for code 220 (MethodHash=bb15ef08) for method System.IO.Path:Join(System.String,System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -187,7 +182,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 4 ) ref -> x0 class-hnd single-def <System.String>
-; V01 loc0 [V01,T01] ( 3, 1.50) ushort -> x1
+; V01 loc0 [V01,T01] ( 3, 1.50) ushort -> x0
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V04 cse0 [V04,T03] ( 2, 1 ) int -> x1 "CSE - moderate"
@@ -27,28 +27,29 @@ G_M53713_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
;; size=4 bbWeight=1 PerfScore 1.00
G_M53713_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08]
- cbz w1, G_M53713_IG04
- sub w1, w1, #1
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldrh w1, [x0, w1, UXTW #2]
- cmp w1, #32
- beq G_M53713_IG08
- b G_M53713_IG06
- ;; size=32 bbWeight=0.50 PerfScore 5.25
+ cbnz w1, G_M53713_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M53713_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
+ ; gcrRegs -[x0]
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M53713_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M53713_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- cmp w1, #46
+G_M53713_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0]
+ sub w1, w1, #1
+ add x0, x0, #12
+ ; gcrRegs -[x0]
+ ; byrRegs +[x0]
+ ldrh w0, [x0, w1, UXTW #2]
+ ; byrRegs -[x0]
+ cmp w0, #32
+ beq G_M53713_IG08
+ cmp w0, #46
cset x0, eq
- ;; size=8 bbWeight=0.50 PerfScore 0.50
+ ;; size=28 bbWeight=0.50 PerfScore 3.25
G_M53713_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
@@ -61,7 +62,7 @@ G_M53713_IG09: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 84, prolog size 8, PerfScore 11.75, instruction count 21, allocated bytes for code 84 (MethodHash=dc8a2e2e) for method System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):ubyte (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 11.25, instruction count 20, allocated bytes for code 80 (MethodHash=dc8a2e2e) for method System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -72,7 +73,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -77,10 +77,8 @@ G_M49441_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
;; size=4 bbWeight=1 PerfScore 1.00
G_M49441_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x08]
- cbz w0, G_M49441_IG04
- cbz x20, G_M49441_IG07
- b G_M49441_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w0, G_M49441_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M49441_IG04: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
mov x0, x20
@@ -94,16 +92,12 @@ G_M49441_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=16 bbWeight=0.50 PerfScore 2.50
G_M49441_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
+ cbz x20, G_M49441_IG07
ldr w21, [x20, #0x08]
- cbz w21, G_M49441_IG07
- add x0, x20, #12
- ; byrRegs +[x0]
- sxtw w1, w21
- b G_M49441_IG09
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ cbnz w21, G_M49441_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M49441_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- ; byrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -113,9 +107,11 @@ G_M49441_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M49441_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0001 {x0}, gcvars, byref, isz
+G_M49441_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x20]
+ add x0, x20, #12
; byrRegs +[x0]
+ sxtw w1, w21
movz x2, #0xD1FFAB1E // code for System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -136,7 +132,7 @@ G_M49441_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
blr x4
; gcrRegs -[x19-x20] +[x0]
; byrRegs -[x0 x2]
- ;; size=60 bbWeight=0.50 PerfScore 8.25
+ ;; size=68 bbWeight=0.50 PerfScore 8.75
G_M49441_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -144,7 +140,7 @@ G_M49441_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 180, prolog size 16, PerfScore 27.75, instruction count 45, allocated bytes for code 180 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
+; Total bytes of code 172, prolog size 16, PerfScore 26.75, instruction count 43, allocated bytes for code 172 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -155,7 +151,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -22,26 +22,20 @@ G_M65033_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x0C]
cmp w1, #1
- beq G_M65033_IG05
+ beq G_M65033_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M65033_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
cmp w1, #2
- bne G_M65033_IG07
+ bne G_M65033_IG08
ldr w1, [x0, #0x10]
add w1, w1, #1
str w1, [x0, #0x10]
ldr w2, [x0, #0x18]
cmp w1, w2
- beq G_M65033_IG07
- mov w0, #1
- ; gcrRegs -[x0]
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M65033_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
+ beq G_M65033_IG08
+ b G_M65033_IG06
+ ;; size=36 bbWeight=0.50 PerfScore 5.75
+G_M65033_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w1, [x0, #0x14]
str w1, [x0, #0x10]
mov w1, #2
@@ -49,23 +43,30 @@ G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov w0, #1
; gcrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M65033_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M65033_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M65033_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M65033_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movn w1, #0
str w1, [x0, #0x0C]
mov w0, wzr
; gcrRegs -[x0]
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 112, prolog size 8, PerfScore 18.50, instruction count 28, allocated bytes for code 112 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 19.00, instruction count 29, allocated bytes for code 116 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -76,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -24,7 +24,7 @@ G_M55294_IG02: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, by
; gcrRegs +[x2]
; byrRegs +[x0]
ldapr w11, [x0]
- tbnz w11, #31, G_M55294_IG06
+ tbnz w11, #31, G_M55294_IG04
;; size=8 bbWeight=8 PerfScore 32.00
G_M55294_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
neg w1, w11
@@ -33,11 +33,18 @@ G_M55294_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, by
casal w3, w1, [x0]
cmp w3, w11
bne G_M55294_IG02
- ;; size=24 bbWeight=4 PerfScore 24.00
-G_M55294_IG04: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ b G_M55294_IG05
+ ;; size=28 bbWeight=4 PerfScore 28.00
+G_M55294_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x2]
; byrRegs -[x0]
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M55294_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x2]
cmn w1, #1
- bne G_M55294_IG06
+ bne G_M55294_IG04
mov x0, x2
; gcrRegs +[x0]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -48,18 +55,13 @@ G_M55294_IG04: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
ldr x2, [x11]
; gcrRegs -[x2]
;; size=36 bbWeight=0.50 PerfScore 5.00
-G_M55294_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M55294_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M55294_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 92, prolog size 8, PerfScore 75.00, instruction count 23, allocated bytes for code 92 (MethodHash=bad32801) for method System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (Tier1)
+; Total bytes of code 96, prolog size 8, PerfScore 79.00, instruction count 24, allocated bytes for code 96 (MethodHash=bad32801) for method System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (Tier1)
; ============================================================
Unwind Info:
@@ -70,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -13,59 +13,69 @@
; V02 arg2 [V02,T07] ( 10, 91 ) ref -> x2 class-hnd single-def <int[,,]>
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
; V04 loc1 [V04,T10] ( 7, 48 ) int -> x5
-; V05 loc2 [V05,T09] ( 7, 60 ) int -> registers
+; V05 loc2 [V05,T09] ( 7, 60 ) int -> x4
; V06 loc3 [V06,T08] ( 7, 90 ) int -> x3
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T01] ( 3, 96 ) int -> x13 "MD array shared temp"
-; V09 tmp2 [V09,T02] ( 3, 96 ) int -> x12 "MD array shared temp"
-; V10 tmp3 [V10,T03] ( 3, 96 ) int -> x12 "MD array shared temp"
-; V11 tmp4 [V11,T04] ( 3, 96 ) int -> x14 "MD array shared temp"
-; V12 tmp5 [V12,T05] ( 3, 96 ) int -> x12 "MD array shared temp"
-; V13 tmp6 [V13,T06] ( 3, 96 ) int -> x15 "MD array shared temp"
-; V14 cse0 [V14,T16] ( 3, 24.01) int -> x7 hoist "CSE - aggressive"
-; V15 cse1 [V15,T20] ( 3, 11 ) int -> x4 hoist "CSE - aggressive"
-; V16 cse2 [V16,T19] ( 3, 18 ) int -> x3 "CSE - aggressive"
-; V17 cse3 [V17,T17] ( 2, 20 ) int -> x10 hoist "CSE - aggressive"
-; V18 cse4 [V18,T25] ( 2, 0.02) int -> x7 hoist "CSE - aggressive"
-; V19 cse5 [V19,T23] ( 3, 2.02) int -> x6 hoist "CSE - aggressive"
-; V20 cse6 [V20,T22] ( 3, 4 ) int -> x10 hoist "CSE - aggressive"
-; V21 cse7 [V21,T24] ( 2, 1.01) int -> x9 hoist "CSE - moderate"
-; V22 cse8 [V22,T21] ( 2, 8.01) int -> x8 hoist "CSE - aggressive"
-; V23 cse9 [V23,T18] ( 2, 20 ) int -> x11 hoist "CSE - aggressive"
-; V24 cse10 [V24,T11] ( 3, 48 ) int -> x14 "CSE - aggressive"
-; V25 cse11 [V25,T12] ( 3, 48 ) int -> x14 "CSE - aggressive"
-; V26 cse12 [V26,T13] ( 3, 48 ) int -> x15 "CSE - aggressive"
-; V27 cse13 [V27,T14] ( 3, 48 ) int -> x12 "CSE - aggressive"
+; V08 tmp1 [V08,T01] ( 3, 96 ) int -> x8 "MD array shared temp"
+; V09 tmp2 [V09,T02] ( 3, 96 ) int -> x10 "MD array shared temp"
+; V10 tmp3 [V10,T03] ( 3, 96 ) int -> x10 "MD array shared temp"
+; V11 tmp4 [V11,T04] ( 3, 96 ) int -> x9 "MD array shared temp"
+; V12 tmp5 [V12,T05] ( 3, 96 ) int -> x10 "MD array shared temp"
+; V13 tmp6 [V13,T06] ( 3, 96 ) int -> x11 "MD array shared temp"
+; V14 cse0 [V14,T16] ( 3, 24.01) int -> x21 hoist "CSE - aggressive"
+; V15 cse1 [V15,T20] ( 3, 11 ) int -> x25 hoist "CSE - aggressive"
+; V16 cse2 [V16,T19] ( 3, 18 ) int -> x23 "CSE - aggressive"
+; V17 cse3 [V17,T17] ( 2, 20 ) int -> x6 hoist "CSE - aggressive"
+; V18 cse4 [V18,T25] ( 2, 0.02) int -> x6 hoist "CSE - aggressive"
+; V19 cse5 [V19,T23] ( 3, 2.02) int -> x19 hoist "CSE - aggressive"
+; V20 cse6 [V20,T22] ( 3, 4 ) int -> x24 hoist "CSE - aggressive"
+; V21 cse7 [V21,T24] ( 2, 1.01) int -> x22 hoist "CSE - moderate"
+; V22 cse8 [V22,T21] ( 2, 8.01) int -> x20 hoist "CSE - aggressive"
+; V23 cse9 [V23,T18] ( 2, 20 ) int -> x7 hoist "CSE - aggressive"
+; V24 cse10 [V24,T11] ( 3, 48 ) int -> x9 "CSE - aggressive"
+; V25 cse11 [V25,T12] ( 3, 48 ) int -> x9 "CSE - aggressive"
+; V26 cse12 [V26,T13] ( 3, 48 ) int -> x11 "CSE - aggressive"
+; V27 cse13 [V27,T14] ( 3, 48 ) int -> x10 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M4144_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x50]!
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ str x25, [sp, #0x48]
mov fp, sp
- ldr w0, [fp, #0x5C]
- ldp x2, x1, [fp, #0x48]
+ ldr w0, [fp, #0x9C]
+ ldp x2, x1, [fp, #0x88]
; gcrRegs +[x1-x2]
- ldp w4, w5, [fp, #0x3C]
- ldr w3, [fp, #0x38]
- ;; size=24 bbWeight=0.01 PerfScore 0.11
+ ldp w4, w5, [fp, #0x7C]
+ ldr w3, [fp, #0x78]
+ ;; size=40 bbWeight=0.01 PerfScore 0.14
G_M4144_IG02: ; bbWeight=0.01, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ldr w6, [x1, #0x24]
- ldp w8, w7, [x1, #0x14]
- add w7, w6, w7
- sub w7, w7, #1
- ldr w9, [x1, #0x10]
- b G_M4144_IG12
+ ldr w19, [x1, #0x24]
+ ldp w20, w6, [x1, #0x14]
+ add w6, w19, w6
+ sub w21, w6, #1
+ ldr w22, [x1, #0x10]
+ b G_M4144_IG11
;; size=24 bbWeight=0.01 PerfScore 0.11
-G_M4144_IG03: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- sxtw w5, w10
- cmp w4, w5
- bge G_M4144_IG07
+G_M4144_IG03: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ ldr w24, [x1, #0x1C]
+ add w3, w24, w22
+ sub w25, w3, #1
+ b G_M4144_IG09
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M4144_IG04: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+ sxtw w5, w24
+ cmp w25, w5
+ bge G_M4144_IG08
;; size=12 bbWeight=2 PerfScore 4.00
-G_M4144_IG04: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4144_IG05: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
sub w0, w0, #1
- cbnz w0, G_M4144_IG03
+ cbnz w0, G_M4144_IG04
;; size=8 bbWeight=8 PerfScore 12.00
-G_M4144_IG05: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+G_M4144_IG06: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
mov x1, x2
@@ -78,115 +88,109 @@ G_M4144_IG05: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, by
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 6.50
-G_M4144_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+G_M4144_IG07: ; bbWeight=1, epilog, nogc, extend
+ ldr x25, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x50
add sp, sp, #80
ret lr
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M4144_IG07: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=28 bbWeight=1 PerfScore 7.50
+G_M4144_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1-x2]
- ldr w11, [x1, #0x20]
- cmp w3, w11
+ ldr w4, [x1, #0x20]
+ cmp w23, w4
bge G_M4144_IG10
;; size=12 bbWeight=2 PerfScore 9.00
-G_M4144_IG08: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+G_M4144_IG09: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
add w5, w5, #1
- cmp w4, w5
- bge G_M4144_IG07
- ;; size=12 bbWeight=8 PerfScore 16.00
-G_M4144_IG09: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- b G_M4144_IG04
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M4144_IG10: ; bbWeight=1, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- mov w4, w11
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M4144_IG11: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- sxtw w3, w6
+ cmp w25, w5
+ bge G_M4144_IG08
+ b G_M4144_IG05
+ ;; size=16 bbWeight=8 PerfScore 24.00
+G_M4144_IG10: ; bbWeight=2, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ sxtw w3, w19
;; size=4 bbWeight=2 PerfScore 1.00
-G_M4144_IG12: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- cmp w7, w3
- blt G_M4144_IG15
+G_M4144_IG11: ; bbWeight=8, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+ cmp w21, w3
+ blt G_M4144_IG14
;; size=8 bbWeight=8 PerfScore 12.00
-G_M4144_IG13: ; bbWeight=4, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ldr w10, [x2, #0x1C]
- sub w10, w5, w10
- ldr w11, [x2, #0x10]
+G_M4144_IG12: ; bbWeight=4, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ ldr w6, [x2, #0x1C]
+ sub w6, w5, w6
+ ldr w7, [x2, #0x10]
;; size=12 bbWeight=4 PerfScore 26.00
-G_M4144_IG14: ; bbWeight=16, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
- sxtw w13, w10
- cmp w13, w11
- bhs G_M4144_IG17
- ldr w14, [x2, #0x14]
- ldr w12, [x2, #0x20]
- sub w12, w4, w12
- cmp w12, w14
- bhs G_M4144_IG17
- madd w13, w13, w14, w12
- ldr w14, [x2, #0x18]
- ldr w12, [x2, #0x24]
- sub w12, w3, w12
- cmp w12, w14
- bhs G_M4144_IG17
- madd w13, w13, w14, w12
- ubfiz x13, x13, #2, #32
- add x13, x13, #40
- ldr w14, [x1, #0x1C]
- sub w14, w5, w14
- ldp w12, w15, [x1, #0x10]
- cmp w14, w12
- bhs G_M4144_IG17
- ldr w12, [x1, #0x20]
- sub w12, w4, w12
- cmp w12, w15
- bhs G_M4144_IG17
- madd w14, w14, w15, w12
- ldr w12, [x1, #0x18]
- ldr w15, [x1, #0x24]
- sub w15, w3, w15
- cmp w15, w12
- bhs G_M4144_IG17
- madd w14, w14, w12, w15
- ubfiz x14, x14, #2, #32
- add x14, x14, #40
- ldr w14, [x1, x14]
- str w14, [x2, x13]
+G_M4144_IG13: ; bbWeight=16, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref, isz
+ sxtw w8, w6
+ cmp w8, w7
+ bhs G_M4144_IG15
+ ldr w9, [x2, #0x14]
+ ldr w10, [x2, #0x20]
+ sub w10, w4, w10
+ cmp w10, w9
+ bhs G_M4144_IG15
+ madd w8, w8, w9, w10
+ ldr w9, [x2, #0x18]
+ ldr w10, [x2, #0x24]
+ sub w10, w3, w10
+ cmp w10, w9
+ bhs G_M4144_IG15
+ madd w8, w8, w9, w10
+ ubfiz x8, x8, #2, #32
+ add x8, x8, #40
+ ldr w9, [x1, #0x1C]
+ sub w9, w5, w9
+ ldp w10, w11, [x1, #0x10]
+ cmp w9, w10
+ bhs G_M4144_IG15
+ ldr w10, [x1, #0x20]
+ sub w10, w4, w10
+ cmp w10, w11
+ bhs G_M4144_IG15
+ madd w9, w9, w11, w10
+ ldr w10, [x1, #0x18]
+ ldr w11, [x1, #0x24]
+ sub w11, w3, w11
+ cmp w11, w10
+ bhs G_M4144_IG15
+ madd w9, w9, w10, w11
+ ubfiz x9, x9, #2, #32
+ add x9, x9, #40
+ ldr w9, [x1, x9]
+ str w9, [x2, x8]
add w3, w3, #1
...
@@ -13,7 +13,7 @@
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 3, 3 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
@@ -21,72 +21,71 @@
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref single-def
-; V13 tmp4 [V13,T11] ( 2, 2 ) int -> x1
+;* V13 tmp4 [V13,T10] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref single-def
-;* V16 tmp7 [V16,T30] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T12] ( 2, 2 ) int -> x1 single-def
+;* V16 tmp7 [V16,T29] ( 0, 0 ) int -> zero-ref
+;* V17 tmp8 [V17,T11] ( 0, 0 ) int -> zero-ref single-def
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref single-def
-; V19 tmp10 [V19,T13] ( 2, 2 ) int -> x2
-; V20 tmp11 [V20,T14] ( 2, 2 ) int -> x1 single-def
+;* V19 tmp10 [V19,T12] ( 0, 0 ) int -> zero-ref
+;* V20 tmp11 [V20,T13] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref single-def
-; V22 tmp13 [V22,T15] ( 2, 2 ) int -> x0
-; V23 tmp14 [V23,T16] ( 2, 2 ) int -> x0 single-def
+;* V22 tmp13 [V22,T14] ( 0, 0 ) int -> zero-ref
+;* V23 tmp14 [V23,T15] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref single-def
-;* V25 tmp16 [V25,T31] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T17] ( 2, 2 ) int -> x0 single-def
+;* V25 tmp16 [V25,T30] ( 0, 0 ) int -> zero-ref
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29,T16] ( 0, 0 ) int -> zero-ref single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref single-def
-;* V32 tmp23 [V32,T32] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32,T31] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref single-def
-;* V34 tmp25 [V34,T33] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V34 tmp25 [V34,T32] ( 0, 0 ) int -> zero-ref
+;* V35 tmp26 [V35,T17] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref single-def
-;* V37 tmp28 [V37,T20] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V37 tmp28 [V37,T18] ( 0, 0 ) int -> zero-ref
+;* V38 tmp29 [V38,T19] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref single-def
-;* V40 tmp31 [V40,T34] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V40 tmp31 [V40,T33] ( 0, 0 ) int -> zero-ref
+;* V41 tmp32 [V41,T20] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref single-def
-;* V43 tmp34 [V43,T23] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T35] ( 0, 0 ) int -> zero-ref single-def
+;* V43 tmp34 [V43,T21] ( 0, 0 ) int -> zero-ref
+;* V44 tmp35 [V44,T34] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref single-def
-;* V46 tmp37 [V46,T36] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T24] ( 2, 2 ) int -> x0 single-def
+;* V46 tmp37 [V46,T35] ( 0, 0 ) int -> zero-ref
+;* V47 tmp38 [V47,T22] ( 0, 0 ) int -> zero-ref single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref single-def
-;* V49 tmp40 [V49,T37] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T25] ( 2, 2 ) int -> x0 single-def
+;* V49 tmp40 [V49,T36] ( 0, 0 ) int -> zero-ref
+;* V50 tmp41 [V50,T23] ( 0, 0 ) int -> zero-ref single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref single-def
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref single-def
-;* V53 tmp44 [V53,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T38] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56,T37] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref single-def
-;* V58 tmp49 [V58,T39] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T27] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp49 [V58,T38] ( 0, 0 ) int -> zero-ref
+;* V59 tmp50 [V59,T24] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref single-def
-;* V61 tmp52 [V61,T28] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T29] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp52 [V61,T25] ( 0, 0 ) int -> zero-ref
+;* V62 tmp53 [V62,T26] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref single-def
-;* V64 tmp55 [V64,T40] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T41] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp55 [V64,T39] ( 0, 0 ) int -> zero-ref
+;* V65 tmp56 [V65,T40] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref single-def
-;* V67 tmp58 [V67,T42] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T43] ( 0, 0 ) int -> zero-ref single-def
+;* V67 tmp58 [V67,T41] ( 0, 0 ) int -> zero-ref
+; V68 tmp59 [V68,T27] ( 2, 2 ) int -> x1 single-def
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref single-def
-;* V70 tmp61 [V70,T44] ( 0, 0 ) int -> zero-ref
-;* V71 cse0 [V71,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
-; V72 cse1 [V72,T03] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V73 cse2 [V73,T09] ( 2, 2 ) int -> x0 "CSE - moderate"
-; V74 cse3 [V74,T01] ( 2, 2 ) int -> x2 "CSE - moderate"
-; V75 cse4 [V75,T04] ( 2, 2 ) int -> x1 "CSE - moderate"
+; V70 tmp61 [V70,T28] ( 2, 2 ) int -> x0
+;* V71 cse0 [V71,T03] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V72 cse1 [V72,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+;* V73 cse2 [V73,T09] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V74 cse3 [V74,T01] ( 2, 2 ) int -> x1 "CSE - moderate"
+;* V75 cse4 [V75,T04] ( 0, 0 ) int -> zero-ref "CSE - moderate"
; V76 cse5 [V76,T05] ( 2, 2 ) int -> x0 "CSE - moderate"
; V77 cse6 [V77,T06] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V78 cse7 [V78,T10] ( 2, 2 ) int -> x0 "CSE - moderate"
;
; Lcl frame size = 8
@@ -137,24 +136,17 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w1, #12
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldp w0, w1, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ ;; size=148 bbWeight=1 PerfScore 26.50
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 172, prolog size 12, PerfScore 33.00, instruction count 43, allocated bytes for code 172 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -165,7 +157,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,79 +10,78 @@
;
;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc2 [V02,T03] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V02 loc2 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd exact single-def <testout1>
; V03 loc3 [V03,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
; V06 tmp2 [V06,T00] ( 3, 6 ) ref -> x0 class-hnd exact single-def "dup spill" <<unknown class>>
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref single-def
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref single-def
-; V09 tmp5 [V09,T11] ( 2, 2 ) int -> x1
+;* V09 tmp5 [V09,T10] ( 0, 0 ) int -> zero-ref
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref single-def
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref single-def
-;* V12 tmp8 [V12,T30] ( 0, 0 ) int -> zero-ref
-; V13 tmp9 [V13,T12] ( 2, 2 ) int -> x1 single-def
+;* V12 tmp8 [V12,T29] ( 0, 0 ) int -> zero-ref
+;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref single-def
-; V15 tmp11 [V15,T13] ( 2, 2 ) int -> x2
-; V16 tmp12 [V16,T14] ( 2, 2 ) int -> x1 single-def
+;* V15 tmp11 [V15,T12] ( 0, 0 ) int -> zero-ref
+;* V16 tmp12 [V16,T13] ( 0, 0 ) int -> zero-ref single-def
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref single-def
-; V18 tmp14 [V18,T15] ( 2, 2 ) int -> x0
-; V19 tmp15 [V19,T16] ( 2, 2 ) int -> x0 single-def
+;* V18 tmp14 [V18,T14] ( 0, 0 ) int -> zero-ref
+;* V19 tmp15 [V19,T15] ( 0, 0 ) int -> zero-ref single-def
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref single-def
-;* V21 tmp17 [V21,T31] ( 0, 0 ) int -> zero-ref
-; V22 tmp18 [V22,T17] ( 2, 2 ) int -> x0 single-def
+;* V21 tmp17 [V21,T30] ( 0, 0 ) int -> zero-ref
+;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref
-;* V25 tmp21 [V25,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V25 tmp21 [V25,T16] ( 0, 0 ) int -> zero-ref single-def
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref single-def
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref single-def
-;* V28 tmp24 [V28,T32] ( 0, 0 ) int -> zero-ref single-def
+;* V28 tmp24 [V28,T31] ( 0, 0 ) int -> zero-ref single-def
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref single-def
-;* V30 tmp26 [V30,T33] ( 0, 0 ) int -> zero-ref
-;* V31 tmp27 [V31,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V30 tmp26 [V30,T32] ( 0, 0 ) int -> zero-ref
+;* V31 tmp27 [V31,T17] ( 0, 0 ) int -> zero-ref single-def
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref single-def
-;* V33 tmp29 [V33,T20] ( 0, 0 ) int -> zero-ref
-;* V34 tmp30 [V34,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V33 tmp29 [V33,T18] ( 0, 0 ) int -> zero-ref
+;* V34 tmp30 [V34,T19] ( 0, 0 ) int -> zero-ref single-def
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref single-def
-;* V36 tmp32 [V36,T34] ( 0, 0 ) int -> zero-ref
-;* V37 tmp33 [V37,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V36 tmp32 [V36,T33] ( 0, 0 ) int -> zero-ref
+;* V37 tmp33 [V37,T20] ( 0, 0 ) int -> zero-ref single-def
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref single-def
-;* V39 tmp35 [V39,T23] ( 0, 0 ) int -> zero-ref
-;* V40 tmp36 [V40,T35] ( 0, 0 ) int -> zero-ref single-def
+;* V39 tmp35 [V39,T21] ( 0, 0 ) int -> zero-ref
+;* V40 tmp36 [V40,T34] ( 0, 0 ) int -> zero-ref single-def
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref single-def
-;* V42 tmp38 [V42,T36] ( 0, 0 ) int -> zero-ref
-; V43 tmp39 [V43,T24] ( 2, 2 ) int -> x0 single-def
+;* V42 tmp38 [V42,T35] ( 0, 0 ) int -> zero-ref
+;* V43 tmp39 [V43,T22] ( 0, 0 ) int -> zero-ref single-def
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref single-def
-;* V45 tmp41 [V45,T37] ( 0, 0 ) int -> zero-ref
-; V46 tmp42 [V46,T25] ( 2, 2 ) int -> x0 single-def
+;* V45 tmp41 [V45,T36] ( 0, 0 ) int -> zero-ref
+;* V46 tmp42 [V46,T23] ( 0, 0 ) int -> zero-ref single-def
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref single-def
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref single-def
-;* V49 tmp45 [V49,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V49 tmp45 [V49 ] ( 0, 0 ) int -> zero-ref
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp48 [V52,T38] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp48 [V52,T37] ( 0, 0 ) int -> zero-ref single-def
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref single-def
-;* V54 tmp50 [V54,T39] ( 0, 0 ) int -> zero-ref
-;* V55 tmp51 [V55,T27] ( 0, 0 ) int -> zero-ref single-def
+;* V54 tmp50 [V54,T38] ( 0, 0 ) int -> zero-ref
+;* V55 tmp51 [V55,T24] ( 0, 0 ) int -> zero-ref single-def
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref single-def
-;* V57 tmp53 [V57,T28] ( 0, 0 ) int -> zero-ref
-;* V58 tmp54 [V58,T29] ( 0, 0 ) int -> zero-ref single-def
+;* V57 tmp53 [V57,T25] ( 0, 0 ) int -> zero-ref
+;* V58 tmp54 [V58,T26] ( 0, 0 ) int -> zero-ref single-def
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref single-def
-;* V60 tmp56 [V60,T40] ( 0, 0 ) int -> zero-ref
-;* V61 tmp57 [V61,T41] ( 0, 0 ) int -> zero-ref single-def
+;* V60 tmp56 [V60,T39] ( 0, 0 ) int -> zero-ref
+;* V61 tmp57 [V61,T40] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref single-def
-;* V63 tmp59 [V63,T42] ( 0, 0 ) int -> zero-ref
-;* V64 tmp60 [V64,T43] ( 0, 0 ) int -> zero-ref single-def
+;* V63 tmp59 [V63,T41] ( 0, 0 ) int -> zero-ref
+; V64 tmp60 [V64,T27] ( 2, 2 ) int -> x1 single-def
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref single-def
-;* V66 tmp62 [V66,T44] ( 0, 0 ) int -> zero-ref
-;* V67 cse0 [V67,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
-; V68 cse1 [V68,T04] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V69 cse2 [V69,T09] ( 2, 2 ) int -> x0 "CSE - moderate"
-; V70 cse3 [V70,T02] ( 2, 2 ) int -> x2 "CSE - moderate"
-; V71 cse4 [V71,T05] ( 2, 2 ) int -> x1 "CSE - moderate"
+; V66 tmp62 [V66,T28] ( 2, 2 ) int -> x0
+;* V67 cse0 [V67,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V68 cse1 [V68,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+;* V69 cse2 [V69,T09] ( 0, 0 ) int -> zero-ref "CSE - moderate"
+; V70 cse3 [V70,T02] ( 2, 2 ) int -> x1 "CSE - moderate"
+;* V71 cse4 [V71,T05] ( 0, 0 ) int -> zero-ref "CSE - moderate"
; V72 cse5 [V72,T06] ( 2, 2 ) int -> x0 "CSE - moderate"
; V73 cse6 [V73,T07] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V74 cse7 [V74,T10] ( 2, 2 ) int -> x0 "CSE - moderate"
;
; Lcl frame size = 8
@@ -133,24 +132,17 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w1, #12
str w1, [x19, #0x08]
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldp w0, w1, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ ;; size=148 bbWeight=1 PerfScore 26.50
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 172, prolog size 12, PerfScore 33.00, instruction count 43, allocated bytes for code 172 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -161,7 +153,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -11,17 +11,15 @@
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T01] ( 7, 4.25) ref -> x20 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T00] ( 7, 5 ) ref -> x19 class-hnd single-def <System.Action`1[ubyte]>
-; V03 arg3 [V03,T02] ( 7, 4.25) ref -> x21 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T02] ( 6, 4 ) ref -> x21 class-hnd single-def <System.Object>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T10] ( 0, 0 ) int -> zero-ref
+;* V05 tmp1 [V05,T08] ( 0, 0 ) int -> zero-ref
; V06 tmp2 [V06,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp3 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4 [V08,T11] ( 0, 0 ) int -> zero-ref
-; V09 tmp5 [V09,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V10 tmp6 [V10,T05] ( 3, 1.50) ref -> x4 class-hnd "Inline return value spill temp" <<unknown class>>
-; V11 cse0 [V11,T04] ( 4, 1.75) long -> x0 "CSE - moderate"
-; V12 cse1 [V12,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V13 cse2 [V13,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V07 tmp3 [V07,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4 [V08,T09] ( 0, 0 ) int -> zero-ref
+; V09 tmp5 [V09,T06] ( 2, 1 ) ubyte -> x1 single-def "Inline stloc first use temp"
+; V10 tmp6 [V10,T04] ( 3, 1.50) ref -> x4 class-hnd "Inline return value spill temp" <<unknown class>>
+; V11 cse0 [V11,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
; Lcl frame size = 8
@@ -38,7 +36,7 @@ G_M19162_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x21]
;; size=28 bbWeight=1 PerfScore 5.00
G_M19162_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M19162_IG07
+ cbz x19, G_M19162_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M19162_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19]
@@ -46,63 +44,50 @@ G_M19162_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- bne G_M19162_IG07
- cbz x21, G_M19162_IG07
+ bne G_M19162_IG04
+ cbz x21, G_M19162_IG04
ldr x1, [x21]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- bne G_M19162_IG07
- cmp x1, x0
- beq G_M19162_IG05
- ;; size=60 bbWeight=0.50 PerfScore 7.25
-G_M19162_IG04: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ beq G_M19162_IG06
+ ;; size=52 bbWeight=0.50 PerfScore 6.50
+G_M19162_IG04: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ldrb w1, [x20, #0x10]
+ strb wzr, [x20, #0x10]
+ cbz w1, G_M19162_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
+G_M19162_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M19162_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20]
- mov x1, x21
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M19162_IG05: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
ldrb w1, [x21, #0x08]
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
ldr x2, [x19, #0x18]
;; size=12 bbWeight=0.50 PerfScore 4.50
-G_M19162_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M19162_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M19162_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19162_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x20]
- ldrb w0, [x20, #0x10]
- strb wzr, [x20, #0x10]
- cbz w0, G_M19162_IG09
- ;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M19162_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M19162_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x20]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M19162_IG11
+ beq G_M19162_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M19162_IG10: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M19162_IG09: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x20
; gcrRegs +[x1]
@@ -114,7 +99,7 @@ G_M19162_IG10: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M19162_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M19162_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -132,7 +117,7 @@ G_M19162_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
ldr x4, [x4, #0x18]
; gcrRegs -[x4]
;; size=36 bbWeight=0.50 PerfScore 6.00
-G_M19162_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M19162_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
@@ -140,7 +125,7 @@ G_M19162_IG12: ; bbWeight=0.50, epilog, nogc, extend
; gcr arg pop 0
;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 276, prolog size 28, PerfScore 39.88, instruction count 69, allocated bytes for code 276 (MethodHash=f3a5b525) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Action`1[ubyte],System.Object) (FullOpts)
+; Total bytes of code 244, prolog size 28, PerfScore 37.62, instruction count 61, allocated bytes for code 244 (MethodHash=f3a5b525) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Action`1[ubyte],System.Object) (FullOpts)
; ============================================================
Unwind Info:
@@ -151,7 +136,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,84 +8,83 @@
; 0 inlinees with PGO data; 33 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> x4
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T06] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T09] ( 2, 2 ) int -> x1 single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T10] ( 2, 2 ) int -> x1 single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp11 [V20,T11] ( 2, 2 ) int -> x1 single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T12] ( 2, 2 ) int -> x0 single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T13] ( 2, 2 ) int -> x0 single-def
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-;* V32 tmp23 [V32,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T17] ( 2, 2 ) int -> x0 single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T18] ( 2, 2 ) int -> x0 single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T07] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T26] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T08] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V75 cse4 [V75,T03] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T04] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V77 cse6 [V77,T05] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> x1 "CSE - aggressive"
+; V72 cse1 [V72,T09] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V73 cse2 [V73,T03] ( 4, 4 ) int -> x2 "CSE - aggressive"
+; V74 cse3 [V74,T04] ( 4, 4 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T05] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T06] ( 4, 4 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -133,27 +132,35 @@ G_M51184_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w2, [x1]
mov w2, #0xD1FFAB1E
strh w2, [x1, #0x04]
- movn w1, #12
- str w1, [x19, #0x08]
+ movn w2, #12
+ str w2, [x19, #0x08]
+ mov w2, #0xD1FFAB1E
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldr w2, [x19, #0x08]
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w4, w2, w3
+ add w4, w4, w0
+ add w4, w4, #17
+ ldr w1, [x1]
+ add w4, w4, w1
+ add w1, w4, w2
+ add w1, w1, w3
+ add w4, w1, #10
+ add w4, w4, w0
+ add w4, w4, w2
+ add w1, w4, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ add w4, w0, #17
+ mov w0, w4
+ ;; size=208 bbWeight=1 PerfScore 39.00
G_M51184_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=0d8a380f) for method testout1:Sub_Funclet_107():int (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 45.50, instruction count 58, allocated bytes for code 232 (MethodHash=0d8a380f) for method testout1:Sub_Funclet_107():int (FullOpts)
; ============================================================
Unwind Info:
@@ -164,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,84 +8,83 @@
; 0 inlinees with PGO data; 29 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> x4
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T05] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T09] ( 2, 2 ) int -> x1 single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp11 [V20,T10] ( 2, 2 ) int -> x1 single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T11] ( 2, 2 ) int -> x0 single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T12] ( 2, 2 ) int -> x0 single-def
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-;* V32 tmp23 [V32,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T16] ( 2, 2 ) int -> x0 single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T17] ( 2, 2 ) int -> x0 single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T06] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T25] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T07] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V75 cse4 [V75,T08] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T03] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V77 cse6 [V77,T04] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> x1 "CSE - aggressive"
+; V72 cse1 [V72,T09] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V73 cse2 [V73,T03] ( 4, 4 ) int -> x2 "CSE - aggressive"
+; V74 cse3 [V74,T04] ( 4, 4 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T05] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T06] ( 4, 4 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -133,27 +132,35 @@ G_M37173_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w2, [x1]
mov w2, #0xD1FFAB1E
strh w2, [x1, #0x04]
- movn w1, #12
- str w1, [x19, #0x08]
+ movn w2, #12
+ str w2, [x19, #0x08]
+ mov w2, #0xD1FFAB1E
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldr w2, [x19, #0x08]
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w4, w2, w3
+ add w4, w4, w0
+ add w4, w4, #17
+ ldr w1, [x1]
+ add w4, w4, w1
+ add w1, w4, w2
+ add w1, w1, w3
+ add w4, w1, #10
+ add w4, w4, w0
+ add w4, w4, w2
+ add w1, w4, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ add w4, w0, #17
+ mov w0, w4
+ ;; size=208 bbWeight=1 PerfScore 39.00
G_M37173_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=49726eca) for method testout1:Sub_Funclet_223():int (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 45.50, instruction count 58, allocated bytes for code 232 (MethodHash=49726eca) for method testout1:Sub_Funclet_223():int (FullOpts)
; ============================================================
Unwind Info:
@@ -164,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,84 +8,83 @@
; 0 inlinees with PGO data; 25 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> x4
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> x19 class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T06] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T07] ( 3, 3 ) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 5, 5 ) ref -> x0 class-hnd exact single-def <<unknown class>>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T09] ( 2, 2 ) int -> x1 single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T10] ( 2, 2 ) int -> x1 single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp11 [V20,T11] ( 2, 2 ) int -> x1 single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T12] ( 2, 2 ) int -> x0 single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T13] ( 2, 2 ) int -> x0 single-def
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T17] ( 2, 2 ) int -> x0 single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T18] ( 2, 2 ) int -> x0 single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T07] ( 2, 2 ) int -> x0 "CSE - aggressive"
-;* V72 cse1 [V72,T26] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T02] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V74 cse3 [V74,T08] ( 2, 2 ) int -> x0 "CSE - aggressive"
-; V75 cse4 [V75,T03] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V76 cse5 [V76,T04] ( 2, 2 ) int -> x1 "CSE - aggressive"
-; V77 cse6 [V77,T05] ( 3, 3 ) long -> x1 "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> x1 "CSE - aggressive"
+; V72 cse1 [V72,T09] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V73 cse2 [V73,T03] ( 4, 4 ) int -> x2 "CSE - aggressive"
+; V74 cse3 [V74,T04] ( 4, 4 ) int -> x3 "CSE - aggressive"
+; V75 cse4 [V75,T05] ( 4, 4 ) int -> x0 "CSE - aggressive"
+; V76 cse5 [V76,T06] ( 4, 4 ) long -> x1 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -133,27 +132,35 @@ G_M37238_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w2, [x1]
mov w2, #0xD1FFAB1E
strh w2, [x1, #0x04]
- movn w1, #12
- str w1, [x19, #0x08]
+ movn w2, #12
+ str w2, [x19, #0x08]
+ mov w2, #0xD1FFAB1E
strh w2, [x19, #0x0C]
- ldr w1, [x19, #0x08]
- add w1, w1, #17
- ldp w0, w2, [x0, #0x10]
+ ldr w2, [x19, #0x08]
+ ldp w0, w3, [x0, #0x10]
; gcrRegs -[x0]
- add w1, w1, w2
+ add w4, w2, w3
+ add w4, w4, w0
+ add w4, w4, #17
+ ldr w1, [x1]
+ add w4, w4, w1
+ add w1, w4, w2
+ add w1, w1, w3
+ add w4, w1, #10
+ add w4, w4, w0
+ add w4, w4, w2
+ add w1, w4, w3
add w0, w1, w0
- add w0, w0, #3
- sub w0, w0, #5
- add w0, w0, #3
- sub w0, w0, #5
- ;; size=176 bbWeight=1 PerfScore 32.50
+ add w4, w0, #17
+ mov w0, w4
+ ;; size=208 bbWeight=1 PerfScore 39.00
G_M37238_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 200, prolog size 12, PerfScore 39.00, instruction count 50, allocated bytes for code 200 (MethodHash=bccd6e89) for method testout1:Sub_Funclet_145():int (FullOpts)
+; Total bytes of code 232, prolog size 12, PerfScore 45.50, instruction count 58, allocated bytes for code 232 (MethodHash=bccd6e89) for method testout1:Sub_Funclet_145():int (FullOpts)
; ============================================================
Unwind Info:
@@ -164,7 +171,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -96,10 +96,8 @@ G_M48965_IG02: ; bbWeight=1, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000
;; size=4 bbWeight=1 PerfScore 1.00
G_M48965_IG03: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
ldr w19, [x0, #0x08]
- cbz w19, G_M48965_IG04
- cbz x1, G_M48965_IG06
- b G_M48965_IG05
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w19, G_M48965_IG05
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M48965_IG04: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -114,11 +112,10 @@ G_M48965_IG04: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0000
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M48965_IG05: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x4]
+ cbz x1, G_M48965_IG06
ldr w3, [x1, #0x08]
- cbz w3, G_M48965_IG06
- cbz x4, G_M48965_IG08
- b G_M48965_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w3, G_M48965_IG07
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M48965_IG06: ; bbWeight=0.50, gcrefRegs=0015 {x0 x2 x4}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, x4
@@ -132,11 +129,10 @@ G_M48965_IG06: ; bbWeight=0.50, gcrefRegs=0015 {x0 x2 x4}, byrefRegs=0000
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M48965_IG07: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x4]
+ cbz x4, G_M48965_IG08
ldr w5, [x4, #0x08]
- cbz w5, G_M48965_IG08
- cbz x2, G_M48965_IG10
- b G_M48965_IG09
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w5, G_M48965_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M48965_IG08: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x4]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -148,16 +144,12 @@ G_M48965_IG08: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000
;; size=20 bbWeight=0.50 PerfScore 3.00
G_M48965_IG09: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1-x2 x4]
+ cbz x2, G_M48965_IG10
ldr w7, [x2, #0x08]
- cbz w7, G_M48965_IG10
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M48965_IG11
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w7, G_M48965_IG11
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M48965_IG10: ; bbWeight=0.50, gcrefRegs=0013 {x0 x1 x4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x2]
mov x2, x4
; gcrRegs +[x2]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -167,8 +159,10 @@ G_M48965_IG10: ; bbWeight=0.50, gcrefRegs=0013 {x0 x1 x4}, byrefRegs=0000
; gcrRegs -[x1-x2 x4]
b G_M48965_IG12
;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M48965_IG11: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0001 {x0}, byref
- ; gcrRegs -[x0] +[x1-x2 x4]
+G_M48965_IG11: ; bbWeight=0.50, gcrefRegs=0017 {x0 x1 x2 x4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x1-x2 x4]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
add x6, x1, #12
; byrRegs +[x6]
@@ -190,14 +184,14 @@ G_M48965_IG11: ; bbWeight=0.50, gcrefRegs=0016 {x1 x2 x4}, byrefRegs=0001
blr x8
; gcrRegs +[x0]
; byrRegs -[x0 x2 x4 x6]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
+ ;; size=44 bbWeight=0.50 PerfScore 4.25
G_M48965_IG12: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 236, prolog size 12, PerfScore 37.25, instruction count 59, allocated bytes for code 236 (MethodHash=a8d740ba) for method System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 35.25, instruction count 55, allocated bytes for code 220 (MethodHash=a8d740ba) for method System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -208,7 +202,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -60,10 +60,8 @@ G_M65029_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M65029_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M65029_IG04
- cbz x1, G_M65029_IG08
- b G_M65029_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M65029_IG07
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M65029_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbnz x1, G_M65029_IG05
@@ -83,21 +81,19 @@ G_M65029_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M65029_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M65029_IG08
ldr w3, [x1, #0x08]
- cbz w3, G_M65029_IG08
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M65029_IG09
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w3, G_M65029_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M65029_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
- ; gcrRegs -[x0] +[x1]
+G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
sxtw w11, w2
add x2, x1, #12
@@ -110,13 +106,13 @@ G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
blr x4
; gcrRegs +[x0]
; byrRegs -[x0 x2]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
+ ;; size=32 bbWeight=0.50 PerfScore 3.50
G_M65029_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 8, PerfScore 18.75, instruction count 30, allocated bytes for code 120 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 17.75, instruction count 28, allocated bytes for code 112 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -12,20 +12,20 @@
; V00 arg0 [V00,T08] ( 6, 8 ) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T13] ( 4, 3.50) byref -> x1 single-def
; V02 arg2 [V02,T12] ( 5, 3.50) byref -> x19 single-def
-; V03 loc0 [V03,T00] ( 26, 69 ) int -> x20
-; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x23
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> [fp+0x14] single-def
-; V06 loc3 [V06,T16] ( 7, 3.50) int -> x2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x11
-; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x4
-; V09 loc6 [V09,T06] ( 7, 17 ) int -> x2
+; V03 loc0 [V03,T00] ( 26, 69 ) int -> x2
+; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x4
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> x5 single-def
+; V06 loc3 [V06,T16] ( 7, 3.50) int -> x6
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x7
+; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x8
+; V09 loc6 [V09,T06] ( 7, 17 ) int -> x6
; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> x4
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x20 "impSpillLclRefs"
+; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x2 "impSpillLclRefs"
;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x2 "Inlining Arg"
+; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x5 "Inlining Arg"
;* V15 tmp4 [V15,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x3 "Inlining Arg"
+; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x5 "Inlining Arg"
;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -33,199 +33,186 @@
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value"
-; V24 cse0 [V24,T09] ( 4, 9 ) int -> x23 "CSE - aggressive"
-; V25 cse1 [V25,T03] ( 10, 32 ) int -> x21 hoist "CSE - aggressive"
-; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x22 "CSE - aggressive"
+; V24 cse0 [V24,T09] ( 4, 9 ) int -> x4 "CSE - aggressive"
+; V25 cse1 [V25,T03] ( 10, 32 ) int -> x11 hoist "CSE - aggressive"
+; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x3 "CSE - aggressive"
;
; Lcl frame size = 8
G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
mov x19, x2
; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
; gcrRegs +[x0]
; byrRegs +[x1]
- ldr w20, [x1]
- ldr w21, [x0, #0x08]
+ ldr w2, [x1]
+ ldr w11, [x0, #0x08]
;; size=8 bbWeight=1 PerfScore 6.00
G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w21, w20
- beq G_M24207_IG29
+ cmp w11, w2
+ beq G_M24207_IG27
;; size=8 bbWeight=8 PerfScore 12.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w20, w21
- bhs G_M24207_IG35
- add x22, x0, #12
- ; byrRegs +[x22]
- ldrh w23, [x22, w20, UXTW #2]
- sxtw w2, w23
- cmp w2, #32
- ccmp w2, #9, z, ne
- ccmp w2, #13, z, ne
- beq G_M24207_IG07
+ cmp w2, w11
+ bhs G_M24207_IG33
+ add x3, x0, #12
+ ; byrRegs +[x3]
+ ldrh w4, [x3, w2, UXTW #2]
+ sxtw w5, w4
+ cmp w5, #32
+ ccmp w5, #9, z, ne
+ ccmp w5, #13, z, ne
+ beq G_M24207_IG06
;; size=36 bbWeight=4 PerfScore 32.00
-G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, #10
- beq G_M24207_IG07
+G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w5, #10
+ bne G_M24207_IG07
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- sxtw w3, w23
- cmp w3, #34
- beq G_M24207_IG09
- b G_M24207_IG08
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
- ; byrRegs -[x22]
- add w20, w20, #1
+G_M24207_IG06: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
+ ; byrRegs -[x3]
+ add w2, w2, #1
b G_M24207_IG03
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; byrRegs +[x22]
- cmp w3, #39
- beq G_M24207_IG09
- mov w23, wzr
+G_M24207_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ ; byrRegs +[x3]
+ sxtw w5, w4
+ cmp w5, #34
+ beq G_M24207_IG08
+ cmp w5, #39
+ bne G_M24207_IG09
+ ;; size=20 bbWeight=0.50 PerfScore 1.75
+G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ add w2, w2, #1
b G_M24207_IG10
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ mov w4, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w3, w20
- sxtw w2, w21
- mov w11, wzr
+G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sxtw w5, w2
+ sxtw w6, w11
+ mov w7, wzr
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w21, w20
- ble G_M24207_IG17
- cmp w20, w21
- bhs G_M24207_IG35
- ldrh w4, [x22, w20, UXTW #2]
- cmp w4, #92
+G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w11, w2
+ ble G_M24207_IG16
+ cmp w2, w11
+ bhs G_M24207_IG33
+ ldrh w8, [x3, w2, UXTW #2]
+ cmp w8, #92
bne G_M24207_IG12
- mov w11, #1
- add w20, w20, #2
+ mov w7, #1
+ add w2, w2, #2
b G_M24207_IG11
;; size=40 bbWeight=4 PerfScore 38.00
-G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG15
+G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cbnz w4, G_M24207_IG14
;; size=4 bbWeight=4 PerfScore 4.00
-G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w4, #61
- beq G_M24207_IG19
- cmp w4, #44
- beq G_M24207_IG19
- cmp w4, #34
- beq G_M24207_IG29
- cmp w4, #39
- bne G_M24207_IG16
- ;; size=32 bbWeight=2 PerfScore 12.00
-G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x1 x22]
- b G_M24207_IG29
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; gcrRegs +[x0]
- ; byrRegs +[x1 x22]
- cmp w4, w23
+G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w8, #61
beq G_M24207_IG18
+ cmp w8, #44
+ beq G_M24207_IG18
+ cmp w8, #34
+ beq G_M24207_IG27
+ cmp w8, #39
+ bne G_M24207_IG15
+ b G_M24207_IG27
+ ;; size=36 bbWeight=2 PerfScore 14.00
+G_M24207_IG14: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w8, w4
+ beq G_M24207_IG17
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+G_M24207_IG15: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ add w2, w2, #1
b G_M24207_IG11
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w20, w21
- b G_M24207_IG19
+G_M24207_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sxtw w2, w11
+ b G_M24207_IG18
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w2, w20
- add w20, w2, #1
+G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sxtw w6, w2
+ add w2, w6, #1
;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG25
- sub w2, w20, #1
- b G_M24207_IG21
+G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cbnz w4, G_M24207_IG24
+ sub w6, w2, #1
+ b G_M24207_IG20
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sub w2, w2, #1
+G_M24207_IG19: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref
+ sub w6, w6, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, w3
- blt G_M24207_IG22
- cmp w2, w21
- bhs G_M24207_IG35
- ldrh w4, [x22, w2, UXTW #2]
+G_M24207_IG20: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=8000A {x1 x3 x19}, byref, isz
+ cmp w6, w5
+ blt G_M24207_IG21
+ cmp w6, w11
+ bhs G_M24207_IG33
...
@@ -17,7 +17,7 @@
;
; Lcl frame size = 0
-G_M5214_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M5214_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
@@ -30,7 +30,7 @@ G_M5214_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
; gcrRegs +[x1]
mov x21, x1
; gcrRegs +[x21]
- cbz x21, G_M5214_IG04
+ cbz x21, G_M5214_IG06
adrp x22, [HIGH RELOC #0xD1FFAB1E]
add x22, x22, [LOW RELOC #0xD1FFAB1E]
;; size=16 bbWeight=1 PerfScore 2.50
@@ -44,9 +44,9 @@ G_M5214_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1]
- cbnz w0, G_M5214_IG06
+ cbnz w0, G_M5214_IG04
tst w20, #255
- beq G_M5214_IG04
+ beq G_M5214_IG06
mov x0, x21
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -57,10 +57,11 @@ G_M5214_IG03: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
mov x21, x0
; gcrRegs +[x21]
cbnz x21, G_M5214_IG03
- ;; size=60 bbWeight=4 PerfScore 70.00
+ b G_M5214_IG08
+ ;; size=64 bbWeight=4 PerfScore 74.00
G_M5214_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19 x21]
- mov w0, wzr
+ mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M5214_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
@@ -69,7 +70,7 @@ G_M5214_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
G_M5214_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M5214_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
@@ -77,8 +78,11 @@ G_M5214_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M5214_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b G_M5214_IG06
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 140, prolog size 16, PerfScore 81.50, instruction count 35, allocated bytes for code 140 (MethodHash=6d0eeba1) for method Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
+; Total bytes of code 148, prolog size 16, PerfScore 86.00, instruction count 37, allocated bytes for code 148 (MethodHash=6d0eeba1) for method Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -89,7 +93,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -17,20 +17,20 @@
;
; Lcl frame size = 0
-G_M12753_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12753_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M12753_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M12753_IG04
+ cbz x0, G_M12753_IG06
;; size=4 bbWeight=1 PerfScore 1.00
G_M12753_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w11, [x0, #0x12]
cmp w11, #117
- beq G_M12753_IG06
+ beq G_M12753_IG04
cmp w11, #188
- bne G_M12753_IG04
+ bne G_M12753_IG06
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -38,17 +38,9 @@ G_M12753_IG03: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcr arg pop 0
ldr x0, [x0, #0x20]
cbnz x0, G_M12753_IG03
- ;; size=44 bbWeight=4 PerfScore 60.00
-G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ b G_M12753_IG08
+ ;; size=48 bbWeight=4 PerfScore 64.00
+G_M12753_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
@@ -56,12 +48,25 @@ G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcr arg pop 0
ldr x0, [x0, #0x20]
;; size=20 bbWeight=0.50 PerfScore 4.00
+G_M12753_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M12753_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M12753_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M12753_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ b G_M12753_IG06
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 96, prolog size 8, PerfScore 68.75, instruction count 24, allocated bytes for code 96 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
+; Total bytes of code 104, prolog size 8, PerfScore 73.25, instruction count 26, allocated bytes for code 104 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
; ============================================================
Unwind Info:
@@ -72,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -9,52 +9,55 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 5 ) byref -> x0 this single-def
+; V00 this [V00,T00] ( 5, 2 ) byref -> x0 this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[int]>
-; V02 loc0 [V02,T03] ( 4, 3.50) int -> x11
+; V02 loc0 [V02,T03] ( 4, 0 ) int -> x11
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V05 tmp2 [V05,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V06 tmp3 [V06,T01] ( 5, 5 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp4 [V07,T02] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V06 tmp3 [V06,T01] ( 5, 1 ) byref -> [fp+0x18] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp4 [V07,T02] ( 2, 1 ) int -> [fp+0x24] single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V08 tmp5 [V08,T05] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
-G_M34588_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M34588_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x30]!
+ str x19, [sp, #0x28]
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M34588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
- ; byrRegs +[x0-x1]
+ str x1, [fp, #0x18] // [V06 tmp3]
+ ; GC ptr vars +{V06}
+ str w2, [fp, #0x24] // [V07 tmp4]
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M34588_IG02: ; bbWeight=0, gcVars=0000000000000002 {V06}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
+ ; byrRegs +[x0]
+ ldr w2, [fp, #0x24] // [V07 tmp4]
cmp w2, #4
- bne G_M34588_IG06
+ bne G_M34588_IG04
+ ldr x1, [fp, #0x18] // [V06 tmp3]
+ ; byrRegs +[x1]
ldr w11, [x1, #0x0C]
movn w2, #0xD1FFAB1E LSL #16
tst w11, w2
- bne G_M34588_IG06
- ;; size=24 bbWeight=1 PerfScore 6.50
-G_M34588_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref, isz
+ bne G_M34588_IG04
and w2, w11, #0xD1FFAB1E
cmp w2, #0xD1FFAB1E, LSL #12
- bhi G_M34588_IG06
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M34588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {x0 x1}, byref
+ bhi G_M34588_IG04
ldp w2, w3, [x1]
add x2, x2, x3, LSL #32
str x2, [x0, #0x08]
ldr w1, [x1, #0x08]
; byrRegs -[x1]
stp w11, w1, [x0]
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M34588_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=64 bbWeight=0 PerfScore 0.00
+G_M34588_IG03: ; bbWeight=0, epilog, nogc, extend
+ ldr x19, [sp, #0x28]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M34588_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M34588_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x0]
+ ; GC ptr vars -{V06}
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x11]
@@ -86,7 +89,7 @@ G_M34588_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=84 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 12, PerfScore 23.00, instruction count 41, allocated bytes for code 164 (MethodHash=290178e3) for method System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
+; Total bytes of code 180, prolog size 12, PerfScore 0.00, instruction count 45, allocated bytes for code 180 (MethodHash=290178e3) for method System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -97,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,8 +108,8 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
E4 end
@@ -33,37 +33,25 @@ G_M54442_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldr d1, [@RWD08]
str d1, [fp, #0x10] // [V08 cse0]
fcmp d8, d1
- bhs G_M54442_IG04
+ blo G_M54442_IG04
;; size=28 bbWeight=1 PerfScore 25.00
-G_M54442_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- b G_M54442_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M54442_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M54442_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
fcmp d8, d1
- bgt G_M54442_IG05
+ bgt G_M54442_IG06
fcmp d8, d1
- bne G_M54442_IG06
- b G_M54442_IG07
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M54442_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- b G_M54442_IG09
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M54442_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
+ beq G_M54442_IG04
fcmp d8, d8
- beq G_M54442_IG09
- b G_M54442_IG03
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M54442_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ beq G_M54442_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M54442_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
str x1, [x0, #0x18]
;; size=4 bbWeight=1 PerfScore 1.00
-G_M54442_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M54442_IG05: ; bbWeight=1, epilog, nogc, extend
ldr d8, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M54442_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54442_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
@@ -85,7 +73,7 @@ RWD00 dq 416312D000000000h ; 10000000
RWD08 dq 41DFFFFFFFC00000h ; 2.14748365e+09
-; Total bytes of code 148, prolog size 12, PerfScore 37.25, instruction count 37, allocated bytes for code 148 (MethodHash=b6192b55) for method System.Net.Http.Headers.RetryConditionHeaderValue:.ctor(System.TimeSpan):this (FullOpts)
+; Total bytes of code 132, prolog size 12, PerfScore 35.50, instruction count 33, allocated bytes for code 132 (MethodHash=b6192b55) for method System.Net.Http.Headers.RetryConditionHeaderValue:.ctor(System.TimeSpan):this (FullOpts)
; ============================================================
Unwind Info:
@@ -96,7 +84,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -24,32 +24,24 @@ G_M14136_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M14136_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
fcmp d0, d1
- blo G_M14136_IG07
+ blo G_M14136_IG05
;; size=8 bbWeight=1 PerfScore 2.00
G_M14136_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
fcmp d0, d1
- bgt G_M14136_IG06
+ bgt G_M14136_IG04
fcmp d0, d1
- bne G_M14136_IG05
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M14136_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- b G_M14136_IG06
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M14136_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
+ beq G_M14136_IG04
fcmp d0, d0
- beq G_M14136_IG06
+ beq G_M14136_IG04
fcmp d1, d1
- beq G_M14136_IG07
- b G_M14136_IG04
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M14136_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ beq G_M14136_IG05
+ ;; size=32 bbWeight=0.50 PerfScore 4.00
+G_M14136_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M14136_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M14136_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:ThrowLess[double](double,double,System.String)
movk x1, #0xD1FFAB1E LSL #16
@@ -60,7 +52,7 @@ G_M14136_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 8, PerfScore 10.50, instruction count 22, allocated bytes for code 88 (MethodHash=b47cc8c7) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[double](double,double,System.String) (FullOpts)
+; Total bytes of code 80, prolog size 8, PerfScore 9.50, instruction count 20, allocated bytes for code 80 (MethodHash=b47cc8c7) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[double](double,double,System.String) (FullOpts)
; ============================================================
Unwind Info:
@@ -71,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -12,23 +12,22 @@
; V01 arg1 [V01,T00] ( 9, 12.50) ref -> x19 class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator>
; V02 loc0 [V02,T11] ( 3, 1.50) ref -> x15 class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V04 tmp1 [V04,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V05 tmp2 [V05,T03] ( 3, 3 ) ref -> x12 class-hnd single-def "Inlining Arg" <<unknown class>>
; V06 tmp3 [V06,T06] ( 2, 2 ) ref -> x14 class-hnd single-def "Inlining Arg" <<unknown class>>
; V07 tmp4 [V07,T07] ( 2, 2 ) ref -> x14 class-hnd single-def "Inlining Arg" <<unknown class>>
; V08 tmp5 [V08,T08] ( 2, 2 ) ref -> x14 class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
; V09 tmp6 [V09,T09] ( 2, 2 ) ref -> x14 class-hnd exact single-def "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateSymbol>
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V11 tmp8 [V11,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp8 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V12 tmp9 [V12,T05] ( 3, 2.96) ref -> x1 class-hnd "Inlining Arg" <<unknown class>>
; V13 tmp10 [V13,T10] ( 2, 1.96) ref -> x2 class-hnd exact "Inlining Arg" <Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType>
; V14 tmp11 [V14,T04] ( 3, 3 ) ref -> x14 single-def "arr expr"
; V15 cse0 [V15,T02] ( 4, 10.50) ref -> x21 "CSE - aggressive"
; V16 cse1 [V16,T12] ( 3, 1.50) ref -> x14 "CSE - moderate"
; V17 cse2 [V17,T13] ( 3, 1.50) ref -> x14 "CSE - moderate"
-; V18 cse3 [V18,T15] ( 3, 1.50) int -> x12 "CSE - moderate"
-; V19 cse4 [V19,T14] ( 3, 1.50) ref -> x0 "CSE - moderate"
-; V20 cse5 [V20,T16] ( 3, 1.48) int -> x4 "CSE - moderate"
+; V18 cse3 [V18,T14] ( 3, 1.50) ref -> x0 "CSE - moderate"
+; V19 cse4 [V19,T15] ( 3, 1.48) int -> x4 "CSE - moderate"
;
; Lcl frame size = 8
@@ -79,33 +78,19 @@ G_M54730_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x14, [x20, #0x20]
; gcrRegs +[x14]
cmp x14, x15
- beq G_M54730_IG08
- cbz x14, G_M54730_IG08
+ beq G_M54730_IG06
+ cbz x14, G_M54730_IG06
ldr x14, [x20, #0x48]
mov x12, x14
; gcrRegs +[x12]
- cbz x12, G_M54730_IG08
+ cbz x12, G_M54730_IG06
ldr w12, [x12, #0x10]
; gcrRegs -[x12]
- cbz w12, G_M54730_IG08
- cbnz w12, G_M54730_IG07
- ;; size=56 bbWeight=0.50 PerfScore 11.25
-G_M54730_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x14-x15 x19-x20]
- movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- blr x0
- ; gcr arg pop 0
- brk_windows #0
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M54730_IG07: ; bbWeight=0.50, gcrefRegs=18C000 {x14 x15 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x14-x15 x19-x20]
+ cbz w12, G_M54730_IG06
ldr x14, [x14, #0x08]
ldr w12, [x14, #0x08]
cmp w12, #0
- bls G_M54730_IG17
+ bls G_M54730_IG15
ldr x14, [x14, #0x10]
ldr x14, [x14, #0x08]
ldr x14, [x14, #0x08]
@@ -114,18 +99,18 @@ G_M54730_IG07: ; bbWeight=0.50, gcrefRegs=18C000 {x14 x15 x19 x20}, byref
; gcrRegs -[x14]
cmp w14, #3
bne G_M54730_IG03
- ;; size=44 bbWeight=0.50 PerfScore 12.00
-G_M54730_IG08: ; bbWeight=0.50, gcrefRegs=188000 {x15 x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=96 bbWeight=0.50 PerfScore 22.75
+G_M54730_IG06: ; bbWeight=0.50, gcrefRegs=188000 {x15 x19 x20}, byrefRegs=0000 {}, byref
add x14, x20, #32
; byrRegs +[x14]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- b G_M54730_IG13
+ b G_M54730_IG11
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M54730_IG09: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M54730_IG07: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
- cbnz x21, G_M54730_IG10
+ cbnz x21, G_M54730_IG08
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator:FindNextTypeForInstanceMethods():ubyte:this
@@ -135,9 +120,9 @@ G_M54730_IG09: ; bbWeight=2, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
blr x1
; gcrRegs -[x0 x21]
; gcr arg pop 0
- cbz w0, G_M54730_IG11
+ cbz w0, G_M54730_IG09
;; size=32 bbWeight=2 PerfScore 16.00
-G_M54730_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M54730_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator:FindNextMethod():ubyte:this
@@ -148,15 +133,15 @@ G_M54730_IG10: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0]
; gcr arg pop 0
;; size=24 bbWeight=2 PerfScore 12.00
-G_M54730_IG11: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M54730_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x21, [x19, #0x38]
; gcrRegs +[x21]
ldr x0, [x20, #0x20]
; gcrRegs +[x0]
cmp x21, x0
- beq G_M54730_IG09
+ beq G_M54730_IG07
;; size=16 bbWeight=4 PerfScore 30.00
-G_M54730_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M54730_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x19, #0x30]
; gcrRegs +[x0]
@@ -176,16 +161,16 @@ G_M54730_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; byrRegs -[x14]
cbz x0, G_M54730_IG03
;; size=32 bbWeight=0.50 PerfScore 4.00
-G_M54730_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M54730_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x1, [x20, #0x90]
; gcrRegs +[x1]
ldr x2, [x20, #0x20]
; gcrRegs +[x2]
ldr w4, [x1, #0x10]
- cbz w4, G_M54730_IG15
+ cbz w4, G_M54730_IG13
;; size=16 bbWeight=0.50 PerfScore 5.00
-G_M54730_IG14: ; bbWeight=0.48, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M54730_IG12: ; bbWeight=0.48, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x1, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -198,25 +183,25 @@ G_M54730_IG14: ; bbWeight=0.48, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRe
blr x5
; gcrRegs -[x1-x2]
; gcr arg pop 0
- tbz w0, #31, G_M54730_IG11
+ tbz w0, #31, G_M54730_IG09
;; size=44 bbWeight=0.48 PerfScore 5.52
-G_M54730_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54730_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M54730_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M54730_IG14: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M54730_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54730_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 404, prolog size 24, PerfScore 117.02, instruction count 101, allocated bytes for code 404 (MethodHash=ad392a35) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
+; Total bytes of code 376, prolog size 24, PerfScore 116.52, instruction count 94, allocated bytes for code 376 (MethodHash=ad392a35) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -227,7 +212,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 101 (0x00065) Actual length = 404 (0x000194)
+ Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1+Node[System.Numerics.Vector
1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)@@ -14,15 +14,16 @@
; V03 tmp1 [V03,T04] ( 2, 1 ) int -> x2
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V05 tmp3 [V05,T05] ( 2, 0 ) ref -> x0 "argument with side effect"
-; V06 cse0 [V06,T02] ( 4, 3 ) int -> x3 "CSE - aggressive"
+; V06 cse0 [V06,T02] ( 4, 3 ) int -> x19 "CSE - aggressive"
; V07 cse1 [V07,T03] ( 3, 2.50) ref -> x2 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M44792_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M44792_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
tbnz w1, #31, G_M44792_IG11
@@ -37,8 +38,8 @@ G_M44792_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
G_M44792_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
- ldr w3, [x2, #0x18]
- cmp w1, w3
+ ldr w19, [x2, #0x18]
+ cmp w1, w19
bge G_M44792_IG07
;; size=16 bbWeight=1 PerfScore 7.50
G_M44792_IG05: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
@@ -52,14 +53,15 @@ G_M44792_IG05: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
ldr x2, [x2]
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M44792_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x2
; gcr arg pop 0
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M44792_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp w1, w3
+ cmp w1, w19
ble G_M44792_IG09
- sub w1, w1, w3
+ sub w1, w1, w19
sub w1, w1, #1
ldr x0, [x0, #0x10]
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this
@@ -69,17 +71,19 @@ G_M44792_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr wzr, [x0]
;; size=40 bbWeight=0.50 PerfScore 6.50
G_M44792_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
br x2
; gcr arg pop 0
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M44792_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
ldr q0, [x0, #0x20]
;; size=4 bbWeight=0.50 PerfScore 1.50
G_M44792_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
G_M44792_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
mov w0, #0xD1FFAB1E
@@ -100,18 +104,18 @@ G_M44792_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 8, PerfScore 26.25, instruction count 46, allocated bytes for code 184 (MethodHash=57dd5107) for method System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)
+; Total bytes of code 200, prolog size 12, PerfScore 30.25, instruction count 50, allocated bytes for code 200 (MethodHash=57dd5107) for method System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -125,7 +129,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -13,7 +13,7 @@
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V05 loc3 [V05,T02] ( 4, 2.50) ref -> x0 class-hnd <System.String>
+; V05 loc3 [V05,T02] ( 4, 2.50) ref -> registers class-hnd <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V08 tmp2 [V08,T03] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
@@ -28,43 +28,43 @@ G_M24419_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M24419_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
- cbz x0, G_M24419_IG06
+ cbz x0, G_M24419_IG05
;; size=4 bbWeight=1 PerfScore 1.00
G_M24419_IG03: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
cmp w2, #1
- bne G_M24419_IG06
+ bne G_M24419_IG05
;; size=12 bbWeight=0.25 PerfScore 1.12
G_M24419_IG04: ; bbWeight=0.12, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldrh w2, [x0, #0x0C]
cmp w2, #95
- bne G_M24419_IG06
+ beq G_M24419_IG08
;; size=12 bbWeight=0.12 PerfScore 0.56
-G_M24419_IG05: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x1
- ; gcrRegs +[x0]
- b G_M24419_IG11
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M24419_IG06: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG05: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
cbz x1, G_M24419_IG10
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24419_IG07: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG06: ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x1, #0x08]
cmp w2, #1
bne G_M24419_IG10
;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M24419_IG08: ; bbWeight=0.12, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG07: ; bbWeight=0.12, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldrh w2, [x1, #0x0C]
cmp w2, #95
- bne G_M24419_IG10
- ;; size=12 bbWeight=0.12 PerfScore 0.56
-G_M24419_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1]
+ beq G_M24419_IG09
+ b G_M24419_IG10
+ ;; size=16 bbWeight=0.12 PerfScore 0.69
+G_M24419_IG08: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
b G_M24419_IG11
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+G_M24419_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1] +[x0]
+ mov x1, x0
; gcrRegs +[x1]
+ b G_M24419_IG11
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
mov x2, x1
; gcrRegs +[x2]
movz x1, #0xD1FFAB1E
@@ -77,13 +77,20 @@ G_M24419_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- ;; size=36 bbWeight=0.50 PerfScore 3.75
-G_M24419_IG11: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ mov x1, x0
+ ; gcrRegs +[x1]
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M24419_IG11: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M24419_IG12: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 8, PerfScore 13.38, instruction count 30, allocated bytes for code 120 (MethodHash=b70da09c) for method Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 132, prolog size 8, PerfScore 14.25, instruction count 33, allocated bytes for code 132 (MethodHash=b70da09c) for method Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -94,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,8 +8,8 @@
; 1 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 8, 24 ) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[ubyte]>
-; V01 loc0 [V01,T03] ( 9, 19 ) ref -> x20 class-hnd exact single-def <System.Collections.Generic.List`1[ubyte]>
+; V00 arg0 [V00,T02] ( 8, 20.50) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[ubyte]>
+; V01 loc0 [V01,T04] ( 9, 15.50) ref -> x20 class-hnd exact single-def <System.Collections.Generic.List`1[ubyte]>
;* V02 loc1 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[ubyte]>
; V03 loc2 [V03,T11] ( 3, 4.00) ubyte -> x1
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -21,15 +21,15 @@
;* V10 tmp6 [V10,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[ubyte]>
;* V12 tmp8 [V12,T15] ( 0, 0 ) ref -> zero-ref single-def "field V02._list (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T01] ( 6, 21 ) int -> x22 "field V02._index (fldOffset=0x8)" P-INDEP
+; V13 tmp9 [V13,T00] ( 6, 21 ) int -> x22 "field V02._index (fldOffset=0x8)" P-INDEP
; V14 tmp10 [V14,T06] ( 2, 9 ) int -> x21 single-def "field V02._version (fldOffset=0xc)" P-INDEP
; V15 tmp11 [V15,T05] ( 2, 6 ) ubyte -> x0 "field V02._current (fldOffset=0x10)" P-INDEP
; V16 tmp12 [V16,T13] ( 2, 2 ) ref -> x0 single-def "field V07._list (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17,T16] ( 0, 0 ) int -> zero-ref single-def "field V07._index (fldOffset=0x8)" P-INDEP
; V18 tmp14 [V18,T14] ( 2, 2 ) int -> x21 single-def "field V07._version (fldOffset=0xc)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07._current (fldOffset=0x10)" P-INDEP
-; V20 tmp16 [V20,T02] ( 3, 24 ) ref -> x0 "arr expr"
-; V21 cse0 [V21,T04] ( 3, 12 ) int -> x23 "CSE - aggressive"
+; V20 tmp16 [V20,T01] ( 3, 24 ) ref -> x0 "arr expr"
+; V21 cse0 [V21,T03] ( 3, 12 ) int -> x23 "CSE - aggressive"
; V22 cse1 [V22,T12] ( 2, 4 ) int -> x3 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -103,7 +103,7 @@ G_M37290_IG05: ; bbWeight=0.30, gcrefRegs=180000 {x19 x20}, byrefRegs=000
G_M37290_IG06: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x14]
cmp w21, w0
- bne G_M37290_IG11
+ bne G_M37290_IG14
;; size=12 bbWeight=8 PerfScore 36.00
G_M37290_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w23, [x19, #0x10]
@@ -113,7 +113,7 @@ G_M37290_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w22, w1
- bhs G_M37290_IG10
+ bhs G_M37290_IG13
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -122,25 +122,41 @@ G_M37290_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
add w22, w22, #1
b G_M37290_IG03
;; size=44 bbWeight=4 PerfScore 68.00
-G_M37290_IG08: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M37290_IG08: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w0, [x20, #0x10]
cmp w0, w23
- csel x0, x19, x20, eq
+ beq G_M37290_IG11
+ ;; size=12 bbWeight=4 PerfScore 18.00
+G_M37290_IG09: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ mov x0, x20
; gcrRegs +[x0]
- ;; size=12 bbWeight=4 PerfScore 16.00
-G_M37290_IG09: ; bbWeight=4, epilog, nogc, extend
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M37290_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=4 PerfScore 24.00
-G_M37290_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x19-x20]
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M37290_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x20] +[x19]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M37290_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M37290_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x19]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M37290_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37290_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -150,22 +166,25 @@ G_M37290_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 280, prolog size 24, PerfScore 199.60, instruction count 70, allocated bytes for code 280 (MethodHash=4e806e55) for method Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
+; Total bytes of code 308, prolog size 24, PerfScore 184.10, instruction count 77, allocated bytes for code 308 (MethodHash=4e806e55) for method Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 70 (0x00046) Actual length = 280 (0x000118)
+ Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
@@ -10,92 +10,75 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M27952_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M27952_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M27952_IG07
+ cbz x20, G_M27952_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M27952_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
- bne G_M27952_IG07
- cmp x1, x21
- beq G_M27952_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M27952_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M27952_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M27952_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M27952_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M27952_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M27952_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M27952_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
ldr x1, [x20, #0x08]
str x1, [x0, #0x08]
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M27952_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M27952_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27952_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M27952_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M27952_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M27952_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27952_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M27952_IG11
+ beq G_M27952_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M27952_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M27952_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -103,7 +86,7 @@ G_M27952_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M27952_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -119,15 +102,14 @@ G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M27952_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M27952_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 236, prolog size 24, PerfScore 33.12, instruction count 59, allocated bytes for code 236 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
+; Total bytes of code 192, prolog size 20, PerfScore 27.25, instruction count 48, allocated bytes for code 192 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
; ============================================================
Unwind Info:
@@ -138,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -152,9 +134,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -10,92 +10,75 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M16591_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M16591_IG07
+ cbz x20, G_M16591_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
- bne G_M16591_IG07
- cmp x1, x21
- beq G_M16591_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M16591_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M16591_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
ldr w1, [x20, #0x08]
str w1, [x0, #0x08]
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M16591_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M16591_IG11
+ beq G_M16591_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -103,7 +86,7 @@ G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -119,15 +102,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 236, prolog size 24, PerfScore 33.12, instruction count 59, allocated bytes for code 236 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 192, prolog size 20, PerfScore 27.25, instruction count 48, allocated bytes for code 192 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -138,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -152,9 +134,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -10,93 +10,76 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M16591_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M16591_IG07
+ cbz x20, G_M16591_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
- bne G_M16591_IG07
- cmp x1, x21
- beq G_M16591_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M16591_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M16591_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
ldr w1, [x20, #0x08]
neg w1, w1
str w1, [x0, #0x08]
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=28 bbWeight=0.50 PerfScore 3.50
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M16591_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M16591_IG11
+ beq G_M16591_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -104,7 +87,7 @@ G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -120,15 +103,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 240, prolog size 24, PerfScore 33.38, instruction count 60, allocated bytes for code 240 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 196, prolog size 20, PerfScore 27.50, instruction count 49, allocated bytes for code 196 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -139,7 +121,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -153,9 +135,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -16,12 +16,12 @@
; V04 tmp3 [V04,T03] ( 3, 3 ) ushort -> x1 "Inline stloc first use temp"
;* V05 tmp4 [V05,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V06 cse0 [V06,T05] ( 2, 2 ) int -> x2 "CSE - aggressive"
-; V07 cse1 [V07,T02] ( 4, 3.08) ref -> x0 "CSE - aggressive"
+; V07 cse1 [V07,T02] ( 4, 3 ) ref -> x0 "CSE - aggressive"
; V08 cse2 [V08,T04] ( 3, 2.99) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M52690_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M52690_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -35,23 +35,17 @@ G_M52690_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
G_M52690_IG03: ; bbWeight=1.00, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x1, #0x08]
cbz w2, G_M52690_IG05
- ;; size=8 bbWeight=1.00 PerfScore 3.99
-G_M52690_IG04: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- sub w2, w2, #1
- add x1, x1, #12
+ b G_M52690_IG08
+ ;; size=12 bbWeight=1.00 PerfScore 4.98
+G_M52690_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldrh w1, [x1, w2, UXTW #2]
- ; byrRegs -[x1]
- cmp w1, #32
- beq G_M52690_IG06
cmp w1, #46
beq G_M52690_IG06
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M52690_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M52690_IG05: ; bbWeight=0.92, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0.92 PerfScore 1.84
G_M52690_IG06: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
movz x1, #0xD1FFAB1E // code for System.IO.PathInternal:EnsureExtendedPrefix(System.String):System.String
movk x1, #0xD1FFAB1E LSL #16
@@ -63,8 +57,20 @@ G_M52690_IG07: ; bbWeight=0.08, epilog, nogc, extend
br x1
; gcr arg pop 0
;; size=8 bbWeight=0.08 PerfScore 0.16
+G_M52690_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x1]
+ sub w2, w2, #1
+ add x1, x1, #12
+ ; gcrRegs -[x1]
+ ; byrRegs +[x1]
+ ldrh w1, [x1, w2, UXTW #2]
+ ; byrRegs -[x1]
+ cmp w1, #32
+ beq G_M52690_IG06
+ b G_M52690_IG04
+ ;; size=24 bbWeight=1 PerfScore 6.50
-; Total bytes of code 88, prolog size 8, PerfScore 19.49, instruction count 22, allocated bytes for code 88 (MethodHash=eaa1322d) for method System.IO.FileSystemInfo:get_NormalizedPath():System.String:this (Tier1)
+; Total bytes of code 96, prolog size 8, PerfScore 21.33, instruction count 24, allocated bytes for code 96 (MethodHash=eaa1322d) for method System.IO.FileSystemInfo:get_NormalizedPath():System.String:this (Tier1)
; ============================================================
Unwind Info:
@@ -75,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList
1Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
-; V01 loc0 [V01,T01] ( 7, 2.25) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
+; V01 loc0 [V01,T01] ( 7, 2.19) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
; V02 loc1 [V02,T02] ( 3, 0.10) ushort -> x1
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,23 +25,28 @@ G_M207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
;; size=8 bbWeight=1 PerfScore 1.50
G_M207_IG02: ; bbWeight=1.03, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M207_IG04
+ cbnz x0, G_M207_IG04
;; size=4 bbWeight=1.03 PerfScore 1.03
-G_M207_IG03: ; bbWeight=0.06, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M207_IG03: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M207_IG04: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
; gcrRegs +[x1]
cmp x0, x1
- bne G_M207_IG05
- ;; size=24 bbWeight=0.06 PerfScore 0.35
-G_M207_IG04: ; bbWeight=0.06, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ beq G_M207_IG03
+ b G_M207_IG06
+ ;; size=28 bbWeight=0.06 PerfScore 0.41
+G_M207_IG05: ; bbWeight=0.03, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.06 PerfScore 0.12
-G_M207_IG05: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [x0, #0x08]
+ b G_M207_IG02
+ ;; size=8 bbWeight=0.03 PerfScore 0.13
+G_M207_IG06: ; bbWeight=0.03, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0, #0x10]
; gcrRegs +[x1]
ldrh w1, [x1, #0x0C]
@@ -51,12 +56,11 @@ G_M207_IG05: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0001
mov w3, #0xD1FFAB1E
cmp w2, #2
ccmp w1, w3, z, hi
- beq G_M207_IG04
- ldr x0, [x0, #0x08]
- b G_M207_IG02
- ;; size=40 bbWeight=0.03 PerfScore 0.44
+ beq G_M207_IG03
+ b G_M207_IG05
+ ;; size=36 bbWeight=0.03 PerfScore 0.35
-; Total bytes of code 84, prolog size 8, PerfScore 3.44, instruction count 21, allocated bytes for code 84 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
+; Total bytes of code 92, prolog size 8, PerfScore 3.42, instruction count 23, allocated bytes for code 92 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
; ============================================================
Unwind Info:
@@ -67,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList
1Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x0 class-hnd single-def <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
-; V01 loc0 [V01,T01] ( 7, 2.89) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
+; V01 loc0 [V01,T01] ( 7, 2.67) ref -> x0 class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]>
; V02 loc1 [V02,T02] ( 3, 0.33) ushort -> x1
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,23 +25,28 @@ G_M207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
;; size=8 bbWeight=1 PerfScore 1.50
G_M207_IG02: ; bbWeight=1.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M207_IG04
+ cbnz x0, G_M207_IG04
;; size=4 bbWeight=1.11 PerfScore 1.11
-G_M207_IG03: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M207_IG03: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M207_IG04: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
; gcrRegs +[x1]
cmp x0, x1
- bne G_M207_IG05
- ;; size=24 bbWeight=0.22 PerfScore 1.33
-G_M207_IG04: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ beq G_M207_IG03
+ b G_M207_IG06
+ ;; size=28 bbWeight=0.22 PerfScore 1.56
+G_M207_IG05: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.22 PerfScore 0.44
-G_M207_IG05: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [x0, #0x08]
+ b G_M207_IG02
+ ;; size=8 bbWeight=0.11 PerfScore 0.44
+G_M207_IG06: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0, #0x10]
; gcrRegs +[x1]
ldrh w1, [x1, #0x0C]
@@ -51,12 +56,11 @@ G_M207_IG05: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0001
mov w3, #0xD1FFAB1E
cmp w2, #2
ccmp w1, w3, z, hi
- beq G_M207_IG04
- ldr x0, [x0, #0x08]
- b G_M207_IG02
- ;; size=40 bbWeight=0.11 PerfScore 1.50
+ beq G_M207_IG03
+ b G_M207_IG05
+ ;; size=36 bbWeight=0.11 PerfScore 1.17
-; Total bytes of code 84, prolog size 8, PerfScore 5.89, instruction count 21, allocated bytes for code 84 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
+; Total bytes of code 92, prolog size 8, PerfScore 5.78, instruction count 23, allocated bytes for code 92 (MethodHash=7934ff30) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
; ============================================================
Unwind Info:
@@ -67,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -10,95 +10,78 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
-; V03 loc0 [V03,T08] ( 2, 1 ) int -> x19 single-def
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
+; V03 loc0 [V03,T06] ( 2, 1 ) int -> x19 single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T11] ( 0, 0 ) int -> zero-ref
+;* V05 tmp1 [V05,T09] ( 0, 0 ) int -> zero-ref
; V06 tmp2 [V06,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp3 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V07 tmp3 [V07,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V08 tmp4 [V08,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <<unknown class>>
-; V10 tmp6 [V10,T09] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V11 tmp7 [V11,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V12 cse0 [V12,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V13 cse1 [V13,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V14 cse2 [V14,T10] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V10 tmp6 [V10,T07] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V11 tmp7 [V11,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V12 cse0 [V12,T08] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M16591_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M16591_IG07
+ cbz x20, G_M16591_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
- bne G_M16591_IG07
- cmp x1, x21
- beq G_M16591_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M16591_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M16591_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
ldr w0, [x20, #0x08]
sub w19, w0, #1
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs -[x20] +[x0]
; gcr arg pop 0
str w19, [x0, #0x08]
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=28 bbWeight=0.50 PerfScore 3.50
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19-x20]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M16591_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M16591_IG11
+ beq G_M16591_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -106,7 +89,7 @@ G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -122,15 +105,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 240, prolog size 24, PerfScore 33.38, instruction count 60, allocated bytes for code 240 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 196, prolog size 20, PerfScore 27.50, instruction count 49, allocated bytes for code 196 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -141,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -155,9 +137,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -10,58 +10,54 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V06 tmp3 [V06,T05] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V08 tmp5 [V08,T06] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T07] ( 2, 1 ) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M16591_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M16591_IG07
+ cbz x20, G_M16591_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- cmp x1, x21
- bne G_M16591_IG07
- cmp x1, x21
- beq G_M16591_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M16591_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M16591_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x19, #0x10]
+ strb wzr, [x19, #0x10]
+ cbz w0, G_M16591_IG08
+ mov x0, xzr
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M16591_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
@@ -69,35 +65,22 @@ G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
cmp w1, #0
cset x1, eq
strb w1, [x0, #0x08]
- ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M16591_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M16591_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
- strb wzr, [x19, #0x10]
- cbz w0, G_M16591_IG09
- mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M16591_IG11
+ beq G_M16591_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -105,7 +88,7 @@ G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16591_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -121,15 +104,14 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+G_M16591_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 244, prolog size 24, PerfScore 33.62, instruction count 61, allocated bytes for code 244 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 200, prolog size 20, PerfScore 27.75, instruction count 50, allocated bytes for code 200 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -140,7 +122,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -154,9 +136,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
@@ -10,16 +10,14 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
+;* V04 tmp1 [V04,T07] ( 0, 0 ) int -> zero-ref
; V05 tmp2 [V05,T02] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T07] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V09 cse0 [V09,T03] ( 4, 1.75) long -> x0 "CSE - moderate"
-; V10 cse1 [V10,T05] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V11 cse2 [V11,T08] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V06 tmp3 [V06,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T05] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V08 tmp5 [V08,T03] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V09 cse0 [V09,T06] ( 2, 1 ) long -> x1 "CSE - moderate"
;
; Lcl frame size = 0
@@ -33,59 +31,46 @@ G_M44930_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=20 bbWeight=1 PerfScore 3.50
G_M44930_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M44930_IG07
+ cbz x20, G_M44930_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M44930_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- bne G_M44930_IG07
- cmp x1, x0
- beq G_M44930_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M44930_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M44930_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ldr w0, [x20, #0x08]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M44930_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44930_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M44930_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M44930_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x10]
strb wzr, [x19, #0x10]
- cbz w0, G_M44930_IG09
+ cbz w0, G_M44930_IG08
mov w0, wzr
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M44930_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M44930_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M44930_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x19]
+ ldr w0, [x20, #0x08]
+ ;; size=4 bbWeight=0.50 PerfScore 1.50
+G_M44930_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M44930_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M44930_IG11
+ beq G_M44930_IG10
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M44930_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M44930_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -93,7 +78,7 @@ G_M44930_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M44930_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M44930_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
@@ -109,14 +94,14 @@ G_M44930_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M44930_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 204, prolog size 20, PerfScore 27.75, instruction count 51, allocated bytes for code 204 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
+; Total bytes of code 172, prolog size 20, PerfScore 25.50, instruction count 43, allocated bytes for code 172 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -56,12 +56,11 @@ G_M4885_IG05: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {},
ldr w4, [x2, #0x08]
cmp w4, w3
blo G_M4885_IG04
- add x2, x2, #16
+ b G_M4885_IG08
+ ;; size=16 bbWeight=0.50 PerfScore 2.75
+G_M4885_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
; gcrRegs -[x2]
; byrRegs +[x2]
- sxtw w4, w3
- ;; size=20 bbWeight=0.50 PerfScore 2.75
-G_M4885_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
mov w3, w4
add x0, x0, #28
; gcrRegs -[x0]
@@ -77,8 +76,16 @@ G_M4885_IG07: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M4885_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0 x2]
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
+ sxtw w4, w3
+ b G_M4885_IG06
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 120, prolog size 8, PerfScore 20.75, instruction count 30, allocated bytes for code 120 (MethodHash=8f5cecea) for method System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
+; Total bytes of code 128, prolog size 8, PerfScore 21.75, instruction count 32, allocated bytes for code 128 (MethodHash=8f5cecea) for method System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
; ============================================================
Unwind Info:
@@ -89,7 +96,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -8,114 +8,95 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4 ) long -> [fp+0x18] EH-live single-def
+; V00 TypeCtx [V00,T00] ( 8, 3 ) long -> [fp+0x28] EH-live single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[int]>
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
-; V03 loc0 [V03,T07] ( 5, 3 ) ref -> [fp+0x10] do-not-enreg[M] class-hnd EH-live <System.Exception>
+; V02 arg1 [V02,T01] ( 4, 2 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
+; V03 loc0 [V03,T06] ( 5, 0 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <System.Exception>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V09 tmp2 [V09,T08] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
-; V10 tmp3 [V10,T00] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V11 tmp4 [V11,T11] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V12 tmp5 [V12,T04] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp6 [V13,T05] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V14 tmp7 [V14,T12] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V15 PSPSym [V15,T10] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V16 cse0 [V16,T06] ( 7, 3.50) long -> x19 multi-def "CSE - aggressive"
-; V17 cse1 [V17,T09] ( 3, 2 ) long -> x20 "CSE - moderate"
+; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
+; V09 tmp2 [V09,T08] ( 3, 0 ) long -> x4 "fgMakeTemp is creating a new local variable"
+; V10 tmp3 [V10,T05] ( 6, 0 ) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V11 tmp4 [V11,T09] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp5 [V12,T02] ( 2, 1 ) byref -> [fp+0x10] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp6 [V13,T03] ( 2, 1 ) int -> [fp+0x24] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V14 tmp7 [V14,T10] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V15 PSPSym [V15,T04] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 32
+; Lcl frame size = 48
-G_M57052_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M57052_IG01: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x30]
mov fp, sp
add x4, sp, #64
- stp x0, x4, [fp, #0x20] // [V15 PSPSym]
- str x0, [fp, #0x18] // [V00 TypeCtx]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M57052_IG02: ; bbWeight=1, gcrefRegs=0008 {x3}, byrefRegs=0002 {x1}, byref
+ stp x0, x4, [fp, #0x30] // [V15 PSPSym]
+ str x0, [fp, #0x28] // [V00 TypeCtx]
+ str x1, [fp, #0x10] // [V12 tmp5]
+ ; GC ptr vars +{V12}
+ str w2, [fp, #0x24] // [V13 tmp6]
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M57052_IG02: ; bbWeight=0, gcVars=0000000000000004 {V12}, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x3]
+ ldr x1, [fp, #0x10] // [V12 tmp5]
; byrRegs +[x1]
+ ldr w2, [fp, #0x24] // [V13 tmp6]
ldr x0, [x3, #0x08]
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
+ ; GC ptr vars -{V12}
blr x3
; gcrRegs -[x0]
; byrRegs -[x1]
; gcr arg pop 0
- str xzr, [fp, #0x10] // [V03 loc0]
+ str xzr, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
- ;; size=16 bbWeight=1 PerfScore 8.00
-G_M57052_IG03: ; bbWeight=1, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr x0, [fp, #0x10] // [V03 loc0]
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M57052_IG03: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x0]
- cbz x0, G_M57052_IG09
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
+ cbz x0, G_M57052_IG05
+ ldr x0, [fp, #0x28] // [V00 TypeCtx]
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
- ldr x1, [fp, #0x10] // [V03 loc0]
+ ldr x1, [x0, #0x38]
+ ldr x0, [x1]
+ ldr x1, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M57052_IG08
- ;; size=40 bbWeight=1 PerfScore 16.00
-G_M57052_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- mov x2, x19
- cmp x20, x2
- beq G_M57052_IG06
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M57052_IG05: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ cbz x0, G_M57052_IG07
+ ldr x2, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x4, [x3, #0x38]
+ ldr x4, [x4]
+ cmp x2, x4
+ beq G_M57052_IG04
+ mov x0, x4
; gcrRegs -[x0]
- mov x0, x2
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M57052_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- cmp x20, x19
- bne G_M57052_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M57052_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M57052_IG08: ; bbWeight=0, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- mov x0, x19
- bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- ldr x1, [fp, #0x10] // [V03 loc0]
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
+ ;; size=68 bbWeight=0 PerfScore 0.00
+G_M57052_IG04: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x2, [x3, #0x38]
ldr x2, [x2]
- ; GC ptr vars -{V03}
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- bl CORINFO_HELP_THROW
+ cmp x1, x2
+ bne G_M57052_IG07
+ b G_M57052_IG06
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M57052_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M57052_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
+ ; GC ptr vars -{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
; gcr arg pop 0
@@ -127,40 +108,66 @@ G_M57052_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bl CORINFO_HELP_THROW
; gcrRegs -[x0]
+ ; gcr arg pop 0
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M57052_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs +[x0]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M57052_IG07: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ ; GC ptr vars +{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
+ bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ ldr x1, [fp, #0x18] // [V03 loc0]
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ ; GC ptr vars -{V03}
+ blr x2
+ ; gcrRegs -[x1]
+ ; gcr arg pop 0
+ bl CORINFO_HELP_THROW
+ ; gcrRegs -[x0]
; gcr arg pop 0
brk_windows #0
;; size=48 bbWeight=0 PerfScore 0.00
-G_M57052_IG10: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M57052_IG08: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp fp, lr, [sp, #-0x20]!
add x3, fp, #64
str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M57052_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- str x0, [fp, #0x10] // [V03 loc0]
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M57052_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
adr x0, [G_M57052_IG03]
; gcrRegs -[x0]
;; size=8 bbWeight=0 PerfScore 0.00
-G_M57052_IG12: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+G_M57052_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 24, PerfScore 36.38, instruction count 61, allocated bytes for code 244 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 272, prolog size 28, PerfScore 0.00, instruction count 68, allocated bytes for code 272 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,12 +175,9 @@ Unwind Info:
...
@@ -8,114 +8,95 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 TypeCtx [V00,T01] ( 5, 4 ) long -> [fp+0x18] EH-live single-def
+; V00 TypeCtx [V00,T00] ( 8, 3 ) long -> [fp+0x28] EH-live single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[int]>
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
-; V03 loc0 [V03,T07] ( 5, 3 ) ref -> [fp+0x10] do-not-enreg[M] class-hnd EH-live <System.Exception>
+; V02 arg1 [V02,T01] ( 4, 2 ) ref -> x3 class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
+; V03 loc0 [V03,T06] ( 5, 0 ) ref -> [fp+0x18] do-not-enreg[M] class-hnd EH-live <System.Exception>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Exception>
;* V05 loc2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T03] ( 3, 4.50) ref -> x1 single-def "CASTCLASS eval op1"
-; V09 tmp2 [V09,T08] ( 3, 2.50) long -> x2 "fgMakeTemp is creating a new local variable"
-; V10 tmp3 [V10,T00] ( 5, 7.50) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
-; V11 tmp4 [V11,T11] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V12 tmp5 [V12,T04] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp6 [V13,T05] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V14 tmp7 [V14,T12] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
-; V15 PSPSym [V15,T10] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V16 cse0 [V16,T06] ( 7, 3.50) long -> x19 multi-def "CSE - aggressive"
-; V17 cse1 [V17,T09] ( 3, 2 ) long -> x20 "CSE - moderate"
+; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
+; V09 tmp2 [V09,T08] ( 3, 0 ) long -> x4 "fgMakeTemp is creating a new local variable"
+; V10 tmp3 [V10,T05] ( 6, 0 ) ref -> x0 class-hnd "spilling QMark2" <System.__Canon>
+; V11 tmp4 [V11,T09] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp5 [V12,T02] ( 2, 1 ) byref -> [fp+0x10] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp6 [V13,T03] ( 2, 1 ) int -> [fp+0x24] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V14 tmp7 [V14,T10] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
+; V15 PSPSym [V15,T04] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 32
+; Lcl frame size = 48
-G_M22620_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M22620_IG01: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x30]
mov fp, sp
add x4, sp, #64
- stp x0, x4, [fp, #0x20] // [V15 PSPSym]
- str x0, [fp, #0x18] // [V00 TypeCtx]
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M22620_IG02: ; bbWeight=1, gcrefRegs=0008 {x3}, byrefRegs=0002 {x1}, byref
+ stp x0, x4, [fp, #0x30] // [V15 PSPSym]
+ str x0, [fp, #0x28] // [V00 TypeCtx]
+ str x1, [fp, #0x10] // [V12 tmp5]
+ ; GC ptr vars +{V12}
+ str w2, [fp, #0x24] // [V13 tmp6]
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M22620_IG02: ; bbWeight=0, gcVars=0000000000000004 {V12}, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x3]
+ ldr x1, [fp, #0x10] // [V12 tmp5]
; byrRegs +[x1]
+ ldr w2, [fp, #0x24] // [V13 tmp6]
ldr x0, [x3, #0x08]
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
+ ; GC ptr vars -{V12}
blr x3
; gcrRegs -[x0]
; byrRegs -[x1]
; gcr arg pop 0
- str xzr, [fp, #0x10] // [V03 loc0]
+ str xzr, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
- ;; size=16 bbWeight=1 PerfScore 8.00
-G_M22620_IG03: ; bbWeight=1, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr x0, [fp, #0x10] // [V03 loc0]
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M22620_IG03: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x0]
- cbz x0, G_M22620_IG09
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
+ cbz x0, G_M22620_IG05
+ ldr x0, [fp, #0x28] // [V00 TypeCtx]
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
- ldr x1, [fp, #0x10] // [V03 loc0]
+ ldr x1, [x0, #0x38]
+ ldr x0, [x1]
+ ldr x1, [fp, #0x18] // [V03 loc0]
; gcrRegs +[x1]
bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- cbz x0, G_M22620_IG08
- ;; size=40 bbWeight=1 PerfScore 16.00
-G_M22620_IG04: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- mov x2, x19
- cmp x20, x2
- beq G_M22620_IG06
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M22620_IG05: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ cbz x0, G_M22620_IG07
+ ldr x2, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x4, [x3, #0x38]
+ ldr x4, [x4]
+ cmp x2, x4
+ beq G_M22620_IG04
+ mov x0, x4
; gcrRegs -[x0]
- mov x0, x2
bl CORINFO_HELP_CHKCASTANY
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M22620_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- cmp x20, x19
- bne G_M22620_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M22620_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x40
- ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M22620_IG08: ; bbWeight=0, gcVars=0000000000000080 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- mov x0, x19
- bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- ldr x1, [fp, #0x10] // [V03 loc0]
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
+ ;; size=68 bbWeight=0 PerfScore 0.00
+G_M22620_IG04: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x0]
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x2, [x3, #0x38]
ldr x2, [x2]
- ; GC ptr vars -{V03}
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- bl CORINFO_HELP_THROW
+ cmp x1, x2
+ bne G_M22620_IG07
+ b G_M22620_IG06
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M22620_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M22620_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x18] // [V00 TypeCtx]
- ldr x0, [x0, #0x38]
- ldr x19, [x0]
- mov x0, x19
+ ; GC ptr vars -{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
; gcr arg pop 0
@@ -127,40 +108,66 @@ G_M22620_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
bl CORINFO_HELP_THROW
; gcrRegs -[x0]
+ ; gcr arg pop 0
+ ;; size=40 bbWeight=0 PerfScore 0.00
+G_M22620_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs +[x0]
+ ldp fp, lr, [sp], #0x40
+ ret lr
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M22620_IG07: ; bbWeight=0, gcVars=0000000000000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ ; GC ptr vars +{V03}
+ ldr x3, [fp, #0x28] // [V00 TypeCtx]
+ ldr x0, [x3, #0x38]
+ ldr x0, [x0]
+ bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ ldr x1, [fp, #0x18] // [V03 loc0]
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ ; GC ptr vars -{V03}
+ blr x2
+ ; gcrRegs -[x1]
+ ; gcr arg pop 0
+ bl CORINFO_HELP_THROW
+ ; gcrRegs -[x0]
; gcr arg pop 0
brk_windows #0
;; size=48 bbWeight=0 PerfScore 0.00
-G_M22620_IG10: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M22620_IG08: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[x0]
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp fp, lr, [sp, #-0x20]!
add x3, fp, #64
str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M22620_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- str x0, [fp, #0x10] // [V03 loc0]
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M22620_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x0, [fp, #0x18] // [V03 loc0]
; GC ptr vars +{V03}
adr x0, [G_M22620_IG03]
; gcrRegs -[x0]
;; size=8 bbWeight=0 PerfScore 0.00
-G_M22620_IG12: ; bbWeight=0, funclet epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+G_M22620_IG10: ; bbWeight=0, funclet epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 24, PerfScore 36.38, instruction count 61, allocated bytes for code 244 (MethodHash=0395a7a3) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 272, prolog size 28, PerfScore 0.00, instruction count 68, allocated bytes for code 272 (MethodHash=0395a7a3) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,12 +175,9 @@ Unwind Info:
...
@@ -11,20 +11,20 @@
; V00 arg0 [V00,T08] ( 6, 8 ) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T13] ( 4, 3.50) byref -> x1 single-def
; V02 arg2 [V02,T12] ( 5, 3.50) byref -> x19 single-def
-; V03 loc0 [V03,T00] ( 26, 69 ) int -> x20
-; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x23
-; V05 loc2 [V05,T11] ( 6, 6.50) int -> x3 single-def
-; V06 loc3 [V06,T16] ( 7, 3.50) int -> x2
-; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x4
-; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x5
-; V09 loc6 [V09,T06] ( 7, 17 ) int -> x2
+; V03 loc0 [V03,T00] ( 26, 69 ) int -> x2
+; V04 loc1 [V04,T10] ( 5, 7.50) ushort -> x5
+; V05 loc2 [V05,T11] ( 6, 6.50) int -> x6 single-def
+; V06 loc3 [V06,T16] ( 7, 3.50) int -> x7
+; V07 loc4 [V07,T14] ( 3, 5 ) ubyte -> x8
+; V08 loc5 [V08,T04] ( 7, 18 ) ushort -> x9
+; V09 loc6 [V09,T06] ( 7, 17 ) int -> x7
; V10 loc7 [V10,T07] ( 7, 11 ) ushort -> x5
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x20 "impSpillLclRefs"
+; V12 tmp1 [V12,T18] ( 2, 2 ) int -> x2 "impSpillLclRefs"
;* V13 tmp2 [V13,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x2 "Inlining Arg"
+; V14 tmp3 [V14,T02] ( 5, 36 ) ushort -> x6 "Inlining Arg"
;* V15 tmp4 [V15,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x3 "Inlining Arg"
+; V16 tmp5 [V16,T17] ( 3, 3 ) ushort -> x6 "Inlining Arg"
;* V17 tmp6 [V17,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V18 tmp7 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp8 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -32,199 +32,186 @@
;* V21 tmp10 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V22 tmp11 [V22,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "Single return block return value"
-; V24 cse0 [V24,T09] ( 4, 9 ) int -> x23 "CSE - aggressive"
-; V25 cse1 [V25,T03] ( 10, 32 ) int -> x21 hoist "CSE - aggressive"
-; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x22 "CSE - aggressive"
+; V24 cse0 [V24,T09] ( 4, 9 ) int -> x5 "CSE - aggressive"
+; V25 cse1 [V25,T03] ( 10, 32 ) int -> x3 hoist "CSE - aggressive"
+; V26 cse2 [V26,T05] ( 5, 18 ) byref -> x4 "CSE - aggressive"
;
; Lcl frame size = 8
G_M24207_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x20]!
+ str x19, [sp, #0x18]
mov fp, sp
mov x19, x2
; byrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M24207_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
; gcrRegs +[x0]
; byrRegs +[x1]
- ldr w20, [x1]
- ldr w21, [x0, #0x08]
+ ldr w2, [x1]
+ ldr w3, [x0, #0x08]
;; size=8 bbWeight=1 PerfScore 6.00
G_M24207_IG03: ; bbWeight=8, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w21, w20
- beq G_M24207_IG29
+ cmp w3, w2
+ beq G_M24207_IG27
;; size=8 bbWeight=8 PerfScore 12.00
G_M24207_IG04: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref, isz
- cmp w20, w21
- bhs G_M24207_IG35
- add x22, x0, #12
- ; byrRegs +[x22]
- ldrh w23, [x22, w20, UXTW #2]
- sxtw w2, w23
- cmp w2, #32
- ccmp w2, #9, z, ne
- ccmp w2, #13, z, ne
- beq G_M24207_IG07
+ cmp w2, w3
+ bhs G_M24207_IG33
+ add x4, x0, #12
+ ; byrRegs +[x4]
+ ldrh w5, [x4, w2, UXTW #2]
+ sxtw w6, w5
+ cmp w6, #32
+ ccmp w6, #9, z, ne
+ ccmp w6, #13, z, ne
+ beq G_M24207_IG06
;; size=36 bbWeight=4 PerfScore 32.00
-G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, #10
- beq G_M24207_IG07
+G_M24207_IG05: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w6, #10
+ bne G_M24207_IG07
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- sxtw w3, w23
- cmp w3, #34
- beq G_M24207_IG09
- b G_M24207_IG08
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG07: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
- ; byrRegs -[x22]
- add w20, w20, #1
+G_M24207_IG06: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80002 {x1 x19}, byref
+ ; byrRegs -[x4]
+ add w2, w2, #1
b G_M24207_IG03
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; byrRegs +[x22]
- cmp w3, #39
- beq G_M24207_IG09
- mov w23, wzr
+G_M24207_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ ; byrRegs +[x4]
+ sxtw w6, w5
+ cmp w6, #34
+ beq G_M24207_IG08
+ cmp w6, #39
+ bne G_M24207_IG09
+ ;; size=20 bbWeight=0.50 PerfScore 1.75
+G_M24207_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ add w2, w2, #1
b G_M24207_IG10
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M24207_IG09: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ mov w5, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w3, w20
- sxtw w2, w21
- mov w4, wzr
+G_M24207_IG10: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sxtw w6, w2
+ sxtw w7, w3
+ mov w8, wzr
;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w21, w20
- ble G_M24207_IG17
- cmp w20, w21
- bhs G_M24207_IG35
- ldrh w5, [x22, w20, UXTW #2]
- cmp w5, #92
+G_M24207_IG11: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w3, w2
+ ble G_M24207_IG16
+ cmp w2, w3
+ bhs G_M24207_IG33
+ ldrh w9, [x4, w2, UXTW #2]
+ cmp w9, #92
bne G_M24207_IG12
- mov w4, #1
- add w20, w20, #2
+ mov w8, #1
+ add w2, w2, #2
b G_M24207_IG11
;; size=40 bbWeight=4 PerfScore 38.00
-G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG15
+G_M24207_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cbnz w5, G_M24207_IG14
;; size=4 bbWeight=4 PerfScore 4.00
-G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w5, #61
- beq G_M24207_IG19
- cmp w5, #44
- beq G_M24207_IG19
- cmp w5, #34
- beq G_M24207_IG29
- cmp w5, #39
- bne G_M24207_IG16
- ;; size=32 bbWeight=2 PerfScore 12.00
-G_M24207_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x0]
- ; byrRegs -[x1 x22]
- b G_M24207_IG29
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG15: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- ; gcrRegs +[x0]
- ; byrRegs +[x1 x22]
- cmp w5, w23
+G_M24207_IG13: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w9, #61
beq G_M24207_IG18
+ cmp w9, #44
+ beq G_M24207_IG18
+ cmp w9, #34
+ beq G_M24207_IG27
+ cmp w9, #39
+ bne G_M24207_IG15
+ b G_M24207_IG27
+ ;; size=36 bbWeight=2 PerfScore 14.00
+G_M24207_IG14: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w9, w5
+ beq G_M24207_IG17
;; size=8 bbWeight=2 PerfScore 3.00
-G_M24207_IG16: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- add w20, w20, #1
+G_M24207_IG15: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ add w2, w2, #1
b G_M24207_IG11
;; size=8 bbWeight=4 PerfScore 6.00
-G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w20, w21
- b G_M24207_IG19
+G_M24207_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sxtw w2, w3
+ b G_M24207_IG18
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sxtw w2, w20
- add w20, w2, #1
+G_M24207_IG17: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sxtw w7, w2
+ add w2, w7, #1
;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M24207_IG19: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cbnz w23, G_M24207_IG25
- sub w2, w20, #1
- b G_M24207_IG21
+G_M24207_IG18: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cbnz w5, G_M24207_IG24
+ sub w7, w2, #1
+ b G_M24207_IG20
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M24207_IG20: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref
- sub w2, w2, #1
+G_M24207_IG19: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref
+ sub w7, w7, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M24207_IG21: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=480002 {x1 x19 x22}, byref, isz
- cmp w2, w3
- blt G_M24207_IG22
- cmp w2, w21
- bhs G_M24207_IG35
- ldrh w5, [x22, w2, UXTW #2]
+G_M24207_IG20: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=80012 {x1 x4 x19}, byref, isz
+ cmp w7, w6
+ blt G_M24207_IG21
+ cmp w7, w3
+ bhs G_M24207_IG33
...
@@ -11,25 +11,24 @@
; V00 arg0 [V00,T02] ( 7, 5 ) ref -> x19 class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 4, 3.50) byref -> x20 single-def
; V02 arg2 [V02,T04] ( 4, 3.50) byref -> x21 single-def
-; V03 loc0 [V03,T08] ( 5, 4 ) int -> x23
+; V03 loc0 [V03,T08] ( 5, 2.50) int -> x22
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
-; V05 loc2 [V05,T01] ( 6, 18.50) int -> x24
+; V05 loc2 [V05,T01] ( 6, 17 ) int -> x0
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
;* V08 tmp2 [V08,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp3 [V09,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T00] ( 5, 36 ) ushort -> x1 "Inlining Arg"
-; V11 cse0 [V11,T05] ( 4, 5.50) int -> x22 "CSE - aggressive"
-; V12 cse1 [V12,T06] ( 2, 4.50) byref -> x0 hoist "CSE - aggressive"
+; V10 tmp4 [V10,T00] ( 5, 36 ) ushort -> x3 "Inlining Arg"
+; V11 cse0 [V11,T05] ( 4, 5.50) int -> x2 "CSE - aggressive"
+; V12 cse1 [V12,T06] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive"
; V13 cse2 [V13,T07] ( 3, 3 ) ref -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
G_M22854_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
@@ -37,7 +36,7 @@ G_M22854_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x20]
mov x21, x2
; byrRegs +[x21]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=28 bbWeight=1 PerfScore 5.00
G_M22854_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
@@ -59,64 +58,60 @@ G_M22854_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20
cbz x19, G_M22854_IG04
;; size=40 bbWeight=1 PerfScore 6.50
G_M22854_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
- ldr w22, [x19, #0x08]
- cbz w22, G_M22854_IG04
- mov w23, wzr
- mov w24, wzr
- cmp w22, #0
- ble G_M22854_IG12
- b G_M22854_IG06
- ;; size=28 bbWeight=0.50 PerfScore 3.75
+ ldr w2, [x19, #0x08]
+ cbnz w2, G_M22854_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M22854_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x20-x21]
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M22854_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M22854_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, gcvars, byref
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M22854_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, gcvars, byref, isz
; gcrRegs +[x19]
; byrRegs +[x20-x21]
- add x0, x19, #12
- ; byrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M22854_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300001 {x0 x20 x21}, byref, isz
- ldrh w1, [x0, w24, UXTW #2]
- mov w2, #0xD1FFAB1E
- mov w3, #0xD1FFAB1E
- cmp w1, #45
- ccmp w1, w2, z, ne
- ccmp w1, w3, z, ne
- beq G_M22854_IG11
+ mov w22, wzr
+ mov w0, wzr
+ cmp w2, #0
+ ble G_M22854_IG11
+ add x1, x19, #12
+ ; byrRegs +[x1]
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
+G_M22854_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300002 {x1 x20 x21}, byref, isz
+ ldrh w3, [x1, w0, UXTW #2]
+ mov w4, #0xD1FFAB1E
+ mov w5, #0xD1FFAB1E
+ cmp w3, #45
+ ccmp w3, w4, z, ne
+ ccmp w3, w5, z, ne
+ beq G_M22854_IG10
;; size=28 bbWeight=4 PerfScore 26.00
-G_M22854_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=300001 {x0 x20 x21}, byref, isz
- mov w2, #0xD1FFAB1E
- cmp w1, w2
- beq G_M22854_IG11
+G_M22854_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=300002 {x1 x20 x21}, byref, isz
+ mov w4, #0xD1FFAB1E
+ cmp w3, w4
+ beq G_M22854_IG10
;; size=12 bbWeight=2 PerfScore 4.00
-G_M22854_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300001 {x0 x20 x21}, byref, isz
- add w24, w24, #1
- cmp w22, w24
+G_M22854_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=300002 {x1 x20 x21}, byref, isz
+ add w0, w0, #1
+ cmp w2, w0
bgt G_M22854_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
+ b G_M22854_IG11
+ ;; size=16 bbWeight=4 PerfScore 12.00
G_M22854_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref
- ; byrRegs -[x0]
- b G_M22854_IG12
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M22854_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref
- sxtw w23, w24
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M22854_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
- cmp w23, #0
+ ; byrRegs -[x1]
+ sxtw w22, w0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22854_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
+ cmp w22, #0
ble G_M22854_IG04
mov x0, x19
; gcrRegs +[x0]
- mov w2, w23
+ mov w2, w22
mov w1, wzr
movz x3, #0xD1FFAB1E // code for System.String:Substring(int,int):System.String:this
movk x3, #0xD1FFAB1E LSL #16
@@ -131,7 +126,7 @@ G_M22854_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14 x20]
- add w1, w23, #1
+ add w1, w22, #1
mov x0, x19
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for System.String:Substring(int):System.String:this
@@ -150,15 +145,14 @@ G_M22854_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {
; byrRegs -[x14 x21]
mov w0, #1
;; size=96 bbWeight=0.50 PerfScore 9.75
-G_M22854_IG13: ; bbWeight=0.50, epilog, nogc, extend
- ldp x23, x24, [sp, #0x30]
+G_M22854_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 304, prolog size 32, PerfScore 71.00, instruction count 76, allocated bytes for code 304 (MethodHash=b068a6b9) for method System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
+; Total bytes of code 288, prolog size 28, PerfScore 71.25, instruction count 72, allocated bytes for code 288 (MethodHash=b068a6b9) for method System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -169,7 +163,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
+ Function Length : 72 (0x00048) Actual length = 288 (0x000120)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -181,9 +175,9 @@ Unwind Info:
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
E6 save_next
- E6 save_next
C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E4 end
E4 end
E4 end
@@ -11,7 +11,7 @@
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T00] ( 5, 44 ) ref -> x19 class-hnd exact "impAppendStmt" <System.String>
-; V03 tmp2 [V03,T02] ( 5, 15 ) ref -> registers class-hnd "Inline return value spill temp" <System.String>
+; V03 tmp2 [V03,T02] ( 5, 15 ) ref -> x20 class-hnd "Inline return value spill temp" <System.String>
; V04 tmp3 [V04,T01] ( 5, 32 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -81,10 +81,8 @@ G_M26077_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=68 bbWeight=8 PerfScore 144.00
G_M26077_IG03: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr w1, [x19, #0x08]
- cbz w1, G_M26077_IG04
- cbz x0, G_M26077_IG07
- b G_M26077_IG06
- ;; size=16 bbWeight=2 PerfScore 12.00
+ cbnz w1, G_M26077_IG06
+ ;; size=8 bbWeight=2 PerfScore 8.00
G_M26077_IG04: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
mov x20, x0
@@ -101,21 +99,19 @@ G_M26077_IG05: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
;; size=4 bbWeight=2 PerfScore 2.00
G_M26077_IG06: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] +[x0 x19]
+ cbz x0, G_M26077_IG07
ldr w3, [x0, #0x08]
- cbz w3, G_M26077_IG07
- add x2, x19, #12
- ; byrRegs +[x2]
- b G_M26077_IG08
- ;; size=16 bbWeight=2 PerfScore 11.00
+ cbnz w3, G_M26077_IG08
+ ;; size=12 bbWeight=2 PerfScore 10.00
G_M26077_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ; byrRegs -[x2]
mov x20, x19
; gcrRegs +[x20]
b G_M26077_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M26077_IG08: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
- ; gcrRegs -[x19-x20] +[x0]
+G_M26077_IG08: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20] +[x0]
+ add x2, x19, #12
; byrRegs +[x2]
add x0, x0, #12
; gcrRegs -[x0]
@@ -130,15 +126,13 @@ G_M26077_IG08: ; bbWeight=2, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, by
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs +[x0]
+ ; gcrRegs -[x19] +[x0]
; byrRegs -[x0 x2]
- mov x19, x0
- ; gcrRegs +[x19]
- mov x20, x19
+ mov x20, x0
; gcrRegs +[x20]
;; size=44 bbWeight=2 PerfScore 17.00
G_M26077_IG09: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x0]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -159,7 +153,7 @@ G_M26077_IG11: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 232, prolog size 12, PerfScore 274.50, instruction count 58, allocated bytes for code 232 (MethodHash=15049a22) for method ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 269.50, instruction count 55, allocated bytes for code 220 (MethodHash=15049a22) for method ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -170,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -22,26 +22,20 @@ G_M65033_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x0C]
cmp w1, #1
- beq G_M65033_IG05
+ beq G_M65033_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M65033_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
cmp w1, #2
- bne G_M65033_IG07
+ bne G_M65033_IG08
ldr w1, [x0, #0x10]
add w1, w1, #1
str w1, [x0, #0x10]
ldr w2, [x0, #0x18]
cmp w1, w2
- beq G_M65033_IG07
- mov w0, #1
- ; gcrRegs -[x0]
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M65033_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
+ beq G_M65033_IG08
+ b G_M65033_IG06
+ ;; size=36 bbWeight=0.50 PerfScore 5.75
+G_M65033_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w1, [x0, #0x14]
str w1, [x0, #0x10]
mov w1, #2
@@ -49,23 +43,30 @@ G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov w0, #1
; gcrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M65033_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M65033_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M65033_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M65033_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
movn w1, #0
str w1, [x0, #0x0C]
mov w0, wzr
; gcrRegs -[x0]
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M65033_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 112, prolog size 8, PerfScore 18.50, instruction count 28, allocated bytes for code 112 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 116, prolog size 8, PerfScore 19.00, instruction count 29, allocated bytes for code 116 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -76,7 +77,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -37,73 +37,77 @@ G_M3894_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
add x1, x0, x1
mov w4, wzr
cmp x0, x1
- bhs G_M3894_IG11
+ bhs G_M3894_IG05
;; size=20 bbWeight=1 PerfScore 3.50
G_M3894_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add x5, x0, #2
ldrh w0, [x0]
cmp w0, #128
- bge G_M3894_IG05
+ bge G_M3894_IG06
;; size=16 bbWeight=4 PerfScore 20.00
G_M3894_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #1
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M3894_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
- cmp w0, #0xD1FFAB1E
- bge G_M3894_IG06
- mov w6, #2
- b G_M3894_IG08
- ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ mov x5, x0
+ b G_M3894_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M3894_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ bge G_M3894_IG07
+ mov w6, #2
+ b G_M3894_IG09
+ ;; size=16 bbWeight=2 PerfScore 6.00
+G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
movn w6, #0xD1FFAB1E
add w0, w0, w6
mov w6, #0xD1FFAB1E
cmp x5, x1
ccmp w0, w6, c, lo
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
ldrh w0, [x5]
movn w6, #0xD1FFAB1E
add w0, w0, w6
cmp w0, #0xD1FFAB1E
- bhi G_M3894_IG07
+ bhi G_M3894_IG08
mov w6, #4
add x5, x5, #2
- b G_M3894_IG08
+ b G_M3894_IG09
;; size=56 bbWeight=2 PerfScore 22.00
-G_M3894_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+G_M3894_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w6, #3
;; size=4 bbWeight=2 PerfScore 1.00
-G_M3894_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
+G_M3894_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz
add w0, w4, w6
cmp w0, w2
- bgt G_M3894_IG10
+ bgt G_M3894_IG11
sxtw w4, w0
cmp x5, x1
+ blo G_M3894_IG10
+ b G_M3894_IG12
+ ;; size=28 bbWeight=4 PerfScore 20.00
+G_M3894_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov x0, x5
- blo G_M3894_IG03
- ;; size=28 bbWeight=4 PerfScore 18.00
-G_M3894_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- b G_M3894_IG11
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3894_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ b G_M3894_IG03
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M3894_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
mov w0, #1
cmp w6, #4
cinc w0, w0, ge
sbfiz x0, x0, #1, #32
sub x5, x5, x0
- mov x0, x5
- ;; size=24 bbWeight=0.50 PerfScore 1.75
-G_M3894_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- str x0, [x3]
+ ;; size=20 bbWeight=0.50 PerfScore 1.50
+G_M3894_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
+ str x5, [x3]
mov w0, w4
;; size=8 bbWeight=1 PerfScore 1.50
-G_M3894_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M3894_IG13: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 200, prolog size 8, PerfScore 80.75, instruction count 50, allocated bytes for code 200 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
+; Total bytes of code 208, prolog size 8, PerfScore 85.75, instruction count 52, allocated bytes for code 208 (MethodHash=7438f0c9) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -114,7 +118,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -19,7 +19,7 @@
;
; Lcl frame size = 8
-G_M5512_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M5512_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
@@ -47,7 +47,7 @@ G_M5512_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M5512_IG09
+ cbnz w0, G_M5512_IG07
;; size=44 bbWeight=2 PerfScore 35.00
G_M5512_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x10]
@@ -56,11 +56,11 @@ G_M5512_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
mov w1, #0xD1FFAB1E
; gcrRegs -[x1]
cmp w0, w1
- beq G_M5512_IG07
+ beq G_M5512_IG09
ldr x19, [x19, #0x08]
;; size=24 bbWeight=2 PerfScore 22.00
G_M5512_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M5512_IG07
+ cbz x19, G_M5512_IG09
;; size=4 bbWeight=8 PerfScore 8.00
G_M5512_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
@@ -70,10 +70,11 @@ G_M5512_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
; gcrRegs +[x1]
cmp x19, x1
bne G_M5512_IG03
- ;; size=24 bbWeight=4 PerfScore 24.00
+ b G_M5512_IG11
+ ;; size=28 bbWeight=4 PerfScore 28.00
G_M5512_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x19]
- mov w0, wzr
+ mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M5512_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
@@ -81,15 +82,18 @@ G_M5512_IG08: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M5512_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
+ mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M5512_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M5512_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b G_M5512_IG09
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 148, prolog size 12, PerfScore 100.00, instruction count 37, allocated bytes for code 148 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
+; Total bytes of code 156, prolog size 12, PerfScore 104.50, instruction count 39, allocated bytes for code 156 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -100,7 +104,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -59,10 +59,8 @@ G_M65029_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M65029_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M65029_IG04
- cbz x1, G_M65029_IG08
- b G_M65029_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M65029_IG07
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M65029_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbnz x1, G_M65029_IG05
@@ -80,21 +78,19 @@ G_M65029_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M65029_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M65029_IG08
ldr w3, [x1, #0x08]
- cbz w3, G_M65029_IG08
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M65029_IG09
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w3, G_M65029_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M65029_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
- ; gcrRegs -[x0] +[x1]
+G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
add x1, x1, #12
; gcrRegs -[x1]
@@ -108,13 +104,13 @@ G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
bl <unknown method>
; gcrRegs +[x0]
; byrRegs -[x0 x2 x4]
- ;; size=20 bbWeight=0.50 PerfScore 1.50
+ ;; size=24 bbWeight=0.50 PerfScore 1.75
G_M65029_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 104, prolog size 8, PerfScore 14.00, instruction count 26, allocated bytes for code 104 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 13.00, instruction count 24, allocated bytes for code 96 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -125,7 +121,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -58,10 +58,8 @@ G_M65029_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
;; size=4 bbWeight=1 PerfScore 1.00
G_M65029_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
- cbz w2, G_M65029_IG04
- cbz x1, G_M65029_IG08
- b G_M65029_IG07
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w2, G_M65029_IG07
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M65029_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbnz x1, G_M65029_IG05
@@ -79,21 +77,19 @@ G_M65029_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M65029_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x1, G_M65029_IG08
ldr w3, [x1, #0x08]
- cbz w3, G_M65029_IG08
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M65029_IG09
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w3, G_M65029_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M65029_IG08: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x1]
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, gcvars, byref
- ; gcrRegs -[x0] +[x1]
+G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
add x1, x1, #12
; gcrRegs -[x1]
@@ -107,13 +103,13 @@ G_M65029_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
bl <unknown method>
; gcrRegs +[x0]
; byrRegs -[x0 x2 x4]
- ;; size=20 bbWeight=0.50 PerfScore 1.50
+ ;; size=24 bbWeight=0.50 PerfScore 1.75
G_M65029_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 104, prolog size 8, PerfScore 14.00, instruction count 26, allocated bytes for code 104 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 13.00, instruction count 24, allocated bytes for code 96 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -124,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -74,10 +74,8 @@ G_M4343_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {},
;; size=4 bbWeight=1 PerfScore 1.00
G_M4343_IG03: ; bbWeight=0.50, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
ldr w19, [x0, #0x08]
- cbz w19, G_M4343_IG04
- cbz x1, G_M4343_IG07
- b G_M4343_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w19, G_M4343_IG06
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
G_M4343_IG04: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x1
@@ -93,11 +91,10 @@ G_M4343_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M4343_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1-x2]
+ cbz x1, G_M4343_IG07
ldr w3, [x1, #0x08]
- cbz w3, G_M4343_IG07
- cbz x2, G_M4343_IG10
- b G_M4343_IG09
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ cbnz w3, G_M4343_IG09
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M4343_IG07: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, x2
@@ -112,16 +109,12 @@ G_M4343_IG08: ; bbWeight=0.50, epilog, nogc, extend
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M4343_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1-x2]
+ cbz x2, G_M4343_IG10
ldr w5, [x2, #0x08]
- cbz w5, G_M4343_IG10
- add x0, x0, #12
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- b G_M4343_IG12
- ;; size=16 bbWeight=0.50 PerfScore 2.75
+ cbnz w5, G_M4343_IG12
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M4343_IG10: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2] +[x0]
- ; byrRegs -[x0]
+ ; gcrRegs -[x2]
bl System.IO.Path:Join(System.String,System.String):System.String
; gcrRegs -[x1]
;; size=4 bbWeight=0.50 PerfScore 0.50
@@ -130,8 +123,10 @@ G_M4343_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M4343_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0001 {x0}, gcvars, byref
- ; gcrRegs -[x0] +[x1-x2]
+G_M4343_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1-x2]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
; byrRegs +[x0]
add x1, x1, #12
; gcrRegs -[x1]
@@ -150,14 +145,14 @@ G_M4343_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006
bl <unknown method>
; gcrRegs +[x0]
; byrRegs -[x0 x2 x4 x6]
- ;; size=32 bbWeight=0.50 PerfScore 2.25
+ ;; size=36 bbWeight=0.50 PerfScore 2.50
G_M4343_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 168, prolog size 12, PerfScore 24.75, instruction count 42, allocated bytes for code 168 (MethodHash=bb15ef08) for method System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
+; Total bytes of code 156, prolog size 12, PerfScore 23.25, instruction count 39, allocated bytes for code 156 (MethodHash=bb15ef08) for method System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -168,7 +163,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,58 +82,64 @@ G_M25962_IG08: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
ldrsb wzr, [x20]
;; size=12 bbWeight=0.50 PerfScore 2.25
G_M25962_IG09: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- str x20, [fp, #0x18] // [V06 loc3]
+ stp x20, x20, [fp, #0x10] // [V00 arg0], [V06 loc3]
+ ; GC ptr vars +{V00}
ldr x0, [fp, #0x18] // [V06 loc3]
; byrRegs +[x0]
sub x1, x0, #4
;; size=12 bbWeight=4 PerfScore 14.00
-G_M25962_IG10: ; bbWeight=32, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25962_IG10: ; bbWeight=32, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x20]
; byrRegs -[x0]
ldr w0, [x1]
and w2, w0, #0xD1FFAB1E
- cbnz w2, G_M25962_IG13
+ cbnz w2, G_M25962_IG12
;; size=12 bbWeight=32 PerfScore 144.00
-G_M25962_IG11: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25962_IG11: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
orr w2, w0, w19
mov w3, w0
casal w3, w2, [x1]
cmp w3, w0
bne G_M25962_IG10
- ;; size=20 bbWeight=16 PerfScore 88.00
-G_M25962_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
b G_M25962_IG26
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M25962_IG13: ; bbWeight=32, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x20]
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M25962_IG12: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
and w3, w0, #0xD1FFAB1E
mov w4, #0xD1FFAB1E
cmp w3, w4
beq G_M25962_IG23
- tbnz w0, #27, G_M25962_IG24
+ tbnz w0, #27, G_M25962_IG15
uxth w2, w0
cmp w2, w19
bne G_M25962_IG16
;; size=32 bbWeight=32 PerfScore 176.00
-G_M25962_IG14: ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25962_IG13: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w2, w0, #16, LSL #12
tst w2, #0xD1FFAB1E
- beq G_M25962_IG24
+ beq G_M25962_IG14
mov w3, w0
casal w3, w2, [x1]
cmp w3, w0
bne G_M25962_IG10
- ;; size=28 bbWeight=16 PerfScore 112.00
-G_M25962_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
b G_M25962_IG26
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M25962_IG16: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=16 PerfScore 128.00
+G_M25962_IG14: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x20, [fp, #0x10] // [V00 arg0]
; gcrRegs +[x20]
+ b G_M25962_IG24
+ ;; size=8 bbWeight=8 PerfScore 24.00
+G_M25962_IG15: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ ldr x20, [fp, #0x10] // [V00 arg0]
+ ; gcrRegs +[x20]
+ b G_M25962_IG24
+ ;; size=8 bbWeight=16 PerfScore 48.00
+G_M25962_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
str xzr, [fp, #0x18] // [V06 loc3]
cbz w21, G_M25962_IG20
;; size=8 bbWeight=4 PerfScore 8.00
-G_M25962_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25962_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w22, #0xD1FFAB1E
ble G_M25962_IG18
adrp x1, [HIGH RELOC #0xD1FFAB1E]
@@ -145,32 +151,29 @@ G_M25962_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=24 bbWeight=2 PerfScore 8.00
-G_M25962_IG18: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M25962_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w22, #0
ble G_M25962_IG20
- str x20, [fp, #0x10] // [V00 arg0]
- ; GC ptr vars +{V00}
mov w0, w22
- ;; size=16 bbWeight=2 PerfScore 6.00
-G_M25962_IG19: ; bbWeight=2, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x20]
+ ;; size=12 bbWeight=2 PerfScore 4.00
+G_M25962_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
bl <unknown method>
; gcr arg pop 0
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr w0, [x0]
- ldr x20, [fp, #0x10] // [V00 arg0]
- ; gcrRegs +[x20]
cbnz w0, G_M25962_IG28
- ;; size=24 bbWeight=2 PerfScore 16.00
-G_M25962_IG20: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
+ ;; size=20 bbWeight=2 PerfScore 12.00
+G_M25962_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w22, w22, #1
cmp w22, w21
+ ldr x20, [fp, #0x10] // [V00 arg0]
+ ; gcrRegs +[x20]
ble G_M25962_IG09
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M25962_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=4 PerfScore 16.00
+G_M25962_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x20]
+ ; GC ptr vars -{V00}
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M25962_IG22: ; bbWeight=0.50, epilog, nogc, extend
@@ -206,14 +209,14 @@ G_M25962_IG27: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x40
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M25962_IG28: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x20]
+G_M25962_IG28: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V00 V08}
bl CORINFO_HELP_POLL_GC
; gcr arg pop 0
b G_M25962_IG20
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 392, prolog size 32, PerfScore 606.50, instruction count 98, allocated bytes for code 392 (MethodHash=c3c79a95) for method System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
+; Total bytes of code 404, prolog size 32, PerfScore 711.50, instruction count 101, allocated bytes for code 404 (MethodHash=c3c79a95) for method System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
; ============================================================
Unwind Info:
@@ -224,7 +227,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 98 (0x00062) Actual length = 392 (0x000188)
+ Function Length : 101 (0x00065) Actual length = 404 (0x000194)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -29,7 +29,7 @@ G_M55294_IG02: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, by
; gcrRegs +[x2]
; byrRegs +[x0]
ldar w15, [x0]
- tbnz w15, #31, G_M55294_IG06
+ tbnz w15, #31, G_M55294_IG04
;; size=8 bbWeight=8 PerfScore 32.00
G_M55294_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
neg w9, w15
@@ -38,11 +38,19 @@ G_M55294_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, by
casal w10, w9, [x0]
cmp w10, w15
bne G_M55294_IG02
- ;; size=24 bbWeight=4 PerfScore 24.00
-G_M55294_IG04: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ b G_M55294_IG05
+ ;; size=28 bbWeight=4 PerfScore 28.00
+G_M55294_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x2]
; byrRegs -[x0]
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M55294_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x2]
cmn w9, #1
- bne G_M55294_IG06
+ bne G_M55294_IG04
ldr x19, [x2, #0x10]
; gcrRegs +[x19]
ldr x15, [x19]
@@ -62,20 +70,14 @@ G_M55294_IG04: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
mov x0, x19
; gcrRegs +[x0]
;; size=56 bbWeight=0.50 PerfScore 9.25
-G_M55294_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M55294_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
b System.GC:SuppressFinalize(System.Object)
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M55294_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0 x19]
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 124, prolog size 12, PerfScore 89.25, instruction count 31, allocated bytes for code 124 (MethodHash=bad32801) for method System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
+; Total bytes of code 128, prolog size 12, PerfScore 93.25, instruction count 32, allocated bytes for code 128 (MethodHash=bad32801) for method System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
; ============================================================
Unwind Info:
@@ -86,7 +88,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -27,7 +27,7 @@ G_M55294_IG02: ; bbWeight=8, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, by
; gcrRegs +[x2]
; byrRegs +[x0]
ldar w1, [x0]
- tbnz w1, #31, G_M55294_IG06
+ tbnz w1, #31, G_M55294_IG04
;; size=8 bbWeight=8 PerfScore 32.00
G_M55294_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
neg w3, w1
@@ -36,11 +36,19 @@ G_M55294_IG03: ; bbWeight=4, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, by
casal w4, w3, [x0]
cmp w4, w1
bne G_M55294_IG02
- ;; size=24 bbWeight=4 PerfScore 24.00
-G_M55294_IG04: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
+ b G_M55294_IG05
+ ;; size=28 bbWeight=4 PerfScore 28.00
+G_M55294_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x2]
; byrRegs -[x0]
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M55294_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x2]
cmn w3, #1
- bne G_M55294_IG06
+ bne G_M55294_IG04
ldr x19, [x2, #0x10]
; gcrRegs +[x19]
mov x0, x19
@@ -55,20 +63,14 @@ G_M55294_IG04: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, b
mov x0, x19
; gcrRegs +[x0]
;; size=36 bbWeight=0.50 PerfScore 6.50
-G_M55294_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M55294_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
b System.GC:SuppressFinalize(System.Object)
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M55294_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0 x19]
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 104, prolog size 12, PerfScore 86.50, instruction count 26, allocated bytes for code 104 (MethodHash=bad32801) for method System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
+; Total bytes of code 108, prolog size 12, PerfScore 90.50, instruction count 27, allocated bytes for code 108 (MethodHash=bad32801) for method System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
; ============================================================
Unwind Info:
@@ -79,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.windows.arm64.checked.mch | 1,370 | 275 | 185 | 910 | -1,496 | +1,880 |
benchmarks.run_pgo.windows.arm64.checked.mch | 8,082 | 3,710 | 1,487 | 2,885 | -19,096 | +12,072 |
benchmarks.run_tiered.windows.arm64.checked.mch | 543 | 83 | 64 | 396 | -1,084 | +816 |
coreclr_tests.run.windows.arm64.checked.mch | 19,861 | 10,229 | 1,028 | 8,604 | -48,356 | +7,912 |
libraries.crossgen2.windows.arm64.checked.mch | 4,946 | 566 | 418 | 3,962 | -3,496 | +3,544 |
libraries.pmi.windows.arm64.checked.mch | 10,969 | 2,328 | 1,496 | 7,145 | -14,316 | +10,768 |
libraries_tests.run.windows.arm64.Release.mch | 27,230 | 9,110 | 4,365 | 13,755 | -82,732 | +37,800 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 19,253 | 3,602 | 1,488 | 14,163 | -32,488 | +11,256 |
realworld.run.windows.arm64.checked.mch | 1,696 | 266 | 207 | 1,223 | -1,780 | +1,588 |
smoke_tests.nativeaot.windows.arm64.checked.mch | 685 | 91 | 43 | 551 | -460 | +380 |
94,635 | 30,260 | 10,781 | 53,594 | -205,304 | +88,016 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.windows.arm64.checked.mch | 24,449 | 4 | 24,445 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.windows.arm64.checked.mch | 98,319 | 48,543 | 49,776 | 114 (0.12%) | 114 (0.12%) |
benchmarks.run_tiered.windows.arm64.checked.mch | 48,505 | 36,685 | 11,820 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.windows.arm64.checked.mch | 595,369 | 362,737 | 232,632 | 315 (0.05%) | 316 (0.05%) |
libraries.crossgen2.windows.arm64.checked.mch | 243,430 | 15 | 243,415 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.windows.arm64.checked.mch | 304,052 | 6 | 304,046 | 0 (0.00%) | 1 (0.00%) |
libraries_tests.run.windows.arm64.Release.mch | 630,503 | 461,984 | 168,519 | 2,158 (0.34%) | 2,159 (0.34%) |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 316,296 | 21,559 | 294,737 | 0 (0.00%) | 5 (0.00%) |
realworld.run.windows.arm64.checked.mch | 33,195 | 3 | 33,192 | 0 (0.00%) | 0 (0.00%) |
smoke_tests.nativeaot.windows.arm64.checked.mch | 24,181 | 7 | 24,174 | 0 (0.00%) | 0 (0.00%) |
2,318,299 | 931,543 | 1,386,756 | 2,587 (0.11%) | 2,595 (0.11%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10964120 (overridden on cmd)
Total bytes of diff: 10964504 (overridden on cmd)
Total bytes of delta: 384 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
100 : 22719.dasm (0.52 % of base)
100 : 22299.dasm (0.49 % of base)
68 : 1841.dasm (0.61 % of base)
60 : 14850.dasm (3.14 % of base)
44 : 4185.dasm (2.29 % of base)
40 : 21152.dasm (0.42 % of base)
36 : 16948.dasm (1.04 % of base)
36 : 21527.dasm (0.46 % of base)
36 : 16898.dasm (0.61 % of base)
32 : 2301.dasm (2.04 % of base)
32 : 23266.dasm (2.35 % of base)
32 : 23371.dasm (0.23 % of base)
32 : 13925.dasm (0.81 % of base)
32 : 8792.dasm (0.22 % of base)
32 : 10516.dasm (0.83 % of base)
28 : 23369.dasm (0.47 % of base)
28 : 18786.dasm (0.60 % of base)
24 : 11205.dasm (0.25 % of base)
24 : 8787.dasm (0.30 % of base)
24 : 23714.dasm (0.23 % of base)
Top file improvements (bytes):
-32 : 8800.dasm (-0.31 % of base)
-32 : 11216.dasm (-0.31 % of base)
-28 : 3051.dasm (-0.51 % of base)
-24 : 6892.dasm (-0.68 % of base)
-20 : 10306.dasm (-1.18 % of base)
-16 : 11298.dasm (-4.04 % of base)
-16 : 11708.dasm (-1.24 % of base)
-16 : 3174.dasm (-3.17 % of base)
-16 : 4719.dasm (-1.20 % of base)
-12 : 18399.dasm (-0.43 % of base)
-12 : 2287.dasm (-3.85 % of base)
-12 : 4619.dasm (-3.33 % of base)
-12 : 4887.dasm (-0.36 % of base)
-12 : 548.dasm (-1.92 % of base)
-12 : 17987.dasm (-1.21 % of base)
-12 : 22722.dasm (-0.21 % of base)
-12 : 3257.dasm (-5.17 % of base)
-12 : 7089.dasm (-0.17 % of base)
-12 : 10237.dasm (-0.56 % of base)
-12 : 8474.dasm (-1.10 % of base)
71 total files with Code Size differences (35 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
100 (0.49 % of base) : 22299.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
100 (0.52 % of base) : 22719.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
68 (0.61 % of base) : 1841.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
60 (3.14 % of base) : 14850.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
44 (2.29 % of base) : 4185.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (0.42 % of base) : 21152.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (0.46 % of base) : 21527.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (1.04 % of base) : 16948.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 16898.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
32 (0.22 % of base) : 8792.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (0.23 % of base) : 23371.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (2.35 % of base) : 23266.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterLocation:Write2_Location(System.String,System.String,MicroBenchmarks.Serializers.Location,ubyte,ubyte):this (FullOpts)
32 (0.81 % of base) : 13925.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
32 (0.83 % of base) : 10516.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
32 (2.04 % of base) : 2301.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
28 (0.47 % of base) : 23369.dasm - (dynamicClass):_DynamicMethod9(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
28 (0.60 % of base) : 18786.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__checkConstraintLanguageVersionAndRuntimeSupportForConversion|210_2(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
24 (0.23 % of base) : 23714.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)
24 (0.25 % of base) : 11205.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)
24 (0.30 % of base) : 8787.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
Top method improvements (bytes):
-32 (-0.31 % of base) : 11216.dasm - Jil.Deserialize.Methods:ParseISO8601Date(System.IO.TextReader,ushort[],int,int):System.DateTime (FullOpts)
-32 (-0.31 % of base) : 8800.dasm - Jil.Deserialize.Methods:ParseISO8601DateThunkReader(byref,ushort[],int,int):System.DateTime (FullOpts)
-28 (-0.51 % of base) : 3051.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
-24 (-0.68 % of base) : 6892.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
-20 (-1.18 % of base) : 10306.dasm - System.IO.FileSystem:RemoveDirectoryRecursive(System.String,byref,ubyte) (FullOpts)
-16 (-3.17 % of base) : 3174.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-16 (-1.20 % of base) : 4719.dasm - System.Text.Json.JsonHelpers:TryParseDateTimeOffset(System.ReadOnlySpan`1[ubyte],byref):ubyte (FullOpts)
-16 (-4.04 % of base) : 11298.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-16 (-1.24 % of base) : 11708.dasm - System.Xml.XmlBinaryReader:ReadElementContentAsInt():int:this (FullOpts)
-12 (-0.21 % of base) : 22722.dasm - Jil.Deserialize.Methods:SkipWithLeadChar(System.IO.TextReader,int) (FullOpts)
-12 (-0.43 % of base) : 18399.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-12 (-1.21 % of base) : 17987.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (FullOpts)
-12 (-1.10 % of base) : 8474.dasm - Sigil.Emit`1[System.__Canon]:ValidateTryCatchFinallyBlocks():this (FullOpts)
-12 (-3.33 % of base) : 4619.dasm - System.Collections.Queue:.ctor(int,float):this (FullOpts)
-12 (-0.56 % of base) : 10237.dasm - System.Decimal+DecCalc:VarDecDiv(byref,byref) (FullOpts)
-12 (-3.85 % of base) : 2287.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-12 (-5.17 % of base) : 3257.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
-12 (-1.92 % of base) : 548.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-12 (-0.36 % of base) : 4887.dasm - System.Text.RegularExpressions.RegexParser:ScanGroupOpen():System.Text.RegularExpressions.RegexNode:this (FullOpts)
-12 (-0.17 % of base) : 7089.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WritePrimitive(System.Xml.Serialization.TypeMapping,System.String):this (FullOpts)
Top method regressions (percentages):
8 (4.65 % of base) : 14260.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
8 (4.00 % of base) : 19858.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
4 (3.57 % of base) : 4574.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
60 (3.14 % of base) : 14850.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (FullOpts)
8 (2.74 % of base) : 5494.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
12 (2.73 % of base) : 14366.dasm - System.Linq.Tests.Perf_Enumerable:EmptyTakeSelectToArray():this (FullOpts)
32 (2.35 % of base) : 23266.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterLocation:Write2_Location(System.String,System.String,MicroBenchmarks.Serializers.Location,ubyte,ubyte):this (FullOpts)
44 (2.29 % of base) : 4185.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
4 (2.22 % of base) : 3003.dasm - System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this (FullOpts)
4 (2.22 % of base) : 16516.dasm - System.Xml.XmlTextReaderImpl:MoveToNextContentNode(ubyte):ubyte:this (FullOpts)
8 (2.13 % of base) : 18586.dasm - Microsoft.CodeAnalysis.Compilation:CommonBindScriptClass():Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
32 (2.04 % of base) : 2301.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
12 (1.92 % of base) : 14839.dasm - System.Collections.Immutable.ImmutableExtensions:ToArray[int](System.Collections.Generic.IEnumerable`1[int],int):int[] (FullOpts)
20 (1.88 % of base) : 14235.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterIndexViewModel:Write3_CampaignSummaryViewModel(System.String,System.String,MicroBenchmarks.Serializers.CampaignSummaryViewModel,ubyte,ubyte):this (FullOpts)
16 (1.85 % of base) : 16019.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
4 (1.75 % of base) : 19504.dasm - Microsoft.Cci.MetadataWriter:GetDefiningUnitReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IUnitReference (FullOpts)
4 (1.61 % of base) : 18237.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetNullableAnalysisValue():System.Nullable`1[ubyte]:this (FullOpts)
12 (1.36 % of base) : 14595.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
4 (1.27 % of base) : 171.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (FullOpts)
8 (1.20 % of base) : 7164.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterLoginViewModel:Write2_LoginViewModel(System.String,System.String,MicroBenchmarks.Serializers.LoginViewModel,ubyte,ubyte):this (FullOpts)
Top method improvements (percentages):
-8 (-6.45 % of base) : 14087.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-12 (-5.17 % of base) : 3257.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
-4 (-5.00 % of base) : 7771.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
-4 (-4.76 % of base) : 408.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):ubyte (FullOpts)
-8 (-4.44 % of base) : 1089.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-16 (-4.04 % of base) : 11298.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-12 (-3.85 % of base) : 2287.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-12 (-3.33 % of base) : 4619.dasm - System.Collections.Queue:.ctor(int,float):this (FullOpts)
-4 (-3.23 % of base) : 18722.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
-16 (-3.17 % of base) : 3174.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-8 (-2.78 % of base) : 3457.dasm - System.IO.Pipes.NamedPipeClientStream:ConnectInternal(int,System.Threading.CancellationToken,int):this (FullOpts)
-8 (-2.41 % of base) : 14885.dasm - System.Collections.IterateForEach`1[int]:Stack():int:this (FullOpts)
-4 (-2.27 % of base) : 14461.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 2276.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 13752.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 15775.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 15342.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 15738.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 4024.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-4 (-2.27 % of base) : 4797.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 47218960 (overridden on cmd)
Total bytes of diff: 47211936 (overridden on cmd)
Total bytes of delta: -7024 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
284 : 34565.dasm (11.11 % of base)
100 : 83600.dasm (0.52 % of base)
100 : 79977.dasm (0.49 % of base)
64 : 89165.dasm (4.52 % of base)
40 : 72371.dasm (6.80 % of base)
40 : 72507.dasm (0.42 % of base)
36 : 74106.dasm (0.46 % of base)
32 : 16438.dasm (2.20 % of base)
32 : 22856.dasm (0.22 % of base)
32 : 43259.dasm (2.18 % of base)
32 : 67229.dasm (2.18 % of base)
32 : 83430.dasm (2.18 % of base)
32 : 73932.dasm (2.18 % of base)
32 : 91887.dasm (2.20 % of base)
32 : 96354.dasm (2.18 % of base)
32 : 79486.dasm (0.87 % of base)
32 : 88830.dasm (0.23 % of base)
28 : 90223.dasm (4.55 % of base)
28 : 97260.dasm (0.86 % of base)
28 : 96968.dasm (4.02 % of base)
Top file improvements (bytes):
-504 : 95518.dasm (-34.90 % of base)
-456 : 95523.dasm (-33.14 % of base)
-156 : 50393.dasm (-21.55 % of base)
-156 : 50359.dasm (-21.55 % of base)
-76 : 79302.dasm (-3.23 % of base)
-60 : 80903.dasm (-2.23 % of base)
-56 : 50395.dasm (-0.90 % of base)
-56 : 71462.dasm (-2.41 % of base)
-56 : 74344.dasm (-6.70 % of base)
-52 : 79304.dasm (-2.04 % of base)
-52 : 80908.dasm (-1.81 % of base)
-48 : 67413.dasm (-1.05 % of base)
-48 : 70487.dasm (-9.30 % of base)
-44 : 34316.dasm (-3.10 % of base)
-40 : 972.dasm (-1.25 % of base)
-40 : 54338.dasm (-2.89 % of base)
-36 : 77363.dasm (-4.43 % of base)
-32 : 79471.dasm (-1.54 % of base)
-28 : 64397.dasm (-1.15 % of base)
-28 : 14209.dasm (-0.84 % of base)
71 total files with Code Size differences (34 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
284 (11.11 % of base) : 34565.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
100 (0.49 % of base) : 79977.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
100 (0.52 % of base) : 83600.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
64 (4.52 % of base) : 89165.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
40 (0.42 % of base) : 72507.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
40 (6.80 % of base) : 72371.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
36 (0.46 % of base) : 74106.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location (FullOpts)
32 (0.22 % of base) : 22856.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (0.23 % of base) : 88830.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (2.20 % of base) : 16438.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.18 % of base) : 43259.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.18 % of base) : 67229.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.18 % of base) : 83430.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.18 % of base) : 73932.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.20 % of base) : 91887.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (2.18 % of base) : 96354.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
32 (0.87 % of base) : 79486.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
28 (0.47 % of base) : 88808.dasm - (dynamicClass):_DynamicMethod9(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
28 (4.02 % of base) : 96968.dasm - System.Threading.SpinWait:SpinOnce(int):this (Tier1)
28 (4.55 % of base) : 90223.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
Top method improvements (bytes):
-504 (-34.90 % of base) : 95518.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-456 (-33.14 % of base) : 95523.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-156 (-21.55 % of base) : 50393.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 50359.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-76 (-3.23 % of base) : 79302.dasm - System.Net.Security.Tests.SslStreamTests+<>c__DisplayClass38_0+<<ConcurrentReadWrite>b__0>d:MoveNext():this (Tier1-OSR)
-60 (-2.23 % of base) : 80903.dasm - System.Net.Security.Tests.SslStreamTests+<>c__DisplayClass40_0+<<ConcurrentReadWriteLargeBuffer>b__0>d:MoveNext():this (Tier1-OSR)
-56 (-6.70 % of base) : 74344.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-56 (-0.90 % of base) : 50395.dasm - LUDecomp:Run():double:this (Tier1)
-56 (-2.41 % of base) : 71462.dasm - System.Net.Security.Tests.SslStreamTests+<WriteReadAsync>d__33:MoveNext():this (Tier1-OSR)
-52 (-2.04 % of base) : 79304.dasm - System.Net.Security.Tests.SslStreamTests+<ConcurrentReadWrite>d__38:MoveNext():this (Tier1-OSR)
-52 (-1.81 % of base) : 80908.dasm - System.Net.Security.Tests.SslStreamTests+<ConcurrentReadWriteLargeBuffer>d__40:MoveNext():this (Tier1-OSR)
-48 (-1.05 % of base) : 67413.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
-48 (-9.30 % of base) : 70487.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(ulong,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
-44 (-3.10 % of base) : 34316.dasm - System.Text.RegularExpressions.RegexCharClass:MayOverlap(System.String,System.String):ubyte (Tier1)
-40 (-2.89 % of base) : 54338.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
-40 (-1.25 % of base) : 972.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateMethods(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeMethodInfo[]:this (Tier0-FullOpts)
-36 (-4.43 % of base) : 77363.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-32 (-1.54 % of base) : 79471.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
-28 (-1.15 % of base) : 64397.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:FilterValidStackLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (Tier1)
-28 (-0.84 % of base) : 14209.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
Top method regressions (percentages):
284 (11.11 % of base) : 34565.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
16 (10.81 % of base) : 13830.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (10.81 % of base) : 18597.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (10.81 % of base) : 3549.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (10.81 % of base) : 39803.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (7.27 % of base) : 30917.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
16 (7.14 % of base) : 13831.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
16 (7.14 % of base) : 18598.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
16 (7.14 % of base) : 39804.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
40 (6.80 % of base) : 72371.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
16 (5.48 % of base) : 45158.dasm - System.Reflection.TypeNameParser:GetNextToken():int:this (Tier1)
12 (5.26 % of base) : 34102.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
12 (4.62 % of base) : 13935.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
12 (4.62 % of base) : 20939.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
12 (4.62 % of base) : 66149.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
28 (4.55 % of base) : 90223.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
28 (4.55 % of base) : 96970.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
64 (4.52 % of base) : 89165.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
16 (4.40 % of base) : 65696.dasm - Benchstone.MDBenchI.MDGeneralArray:Bench(int,int[,,],int[,,]):ubyte (Tier1-OSR)
24 (4.11 % of base) : 97492.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
Top method improvements (percentages):
-504 (-34.90 % of base) : 95518.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-456 (-33.14 % of base) : 95523.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-156 (-21.55 % of base) : 50393.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 50359.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-48 (-9.30 % of base) : 70487.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(ulong,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
-24 (-7.41 % of base) : 80742.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (Tier1)
-16 (-7.02 % of base) : 10102.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner2(int[,],byref) (Tier1-OSR)
-16 (-6.90 % of base) : 10100.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner1(int[,],byref) (Tier1-OSR)
-56 (-6.70 % of base) : 74344.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-4 (-6.67 % of base) : 82502.dasm - System.Math:Max(double,double):double (Tier1)
-4 (-5.56 % of base) : 92681.dasm - System.Text.RegularExpressions.RegexNode:get_IsSetFamily():ubyte:this (Tier1)
-12 (-5.17 % of base) : 84586.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (Tier1)
-12 (-5.00 % of base) : 3550.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
-4 (-5.00 % of base) : 12247.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:ShouldPerformGateActivities(int,ubyte):ubyte:this (Tier1)
-4 (-5.00 % of base) : 90291.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:ShouldPerformGateActivities(int,ubyte):ubyte:this (Tier1)
-4 (-5.00 % of base) : 26607.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:ShouldPerformGateActivities(int,ubyte):ubyte:this (Tier1)
-8 (-4.88 % of base) : 74868.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:Enqueue(System.__Canon):this (Tier1)
-4 (-4.76 % of base) : 88171.dasm - System.Threading.PortableThreadPool+GateThread+DelayHelper:ShouldPerformGateActivities(int,ubyte):ubyte:this (Tier1)
-20 (-4.72 % of base) : 54629.dasm - System.Reflection.TypeNameParser:GetNextToken():int:this (Tier1)
-24 (-4.69 % of base) : 79635.dasm - Benchstone.MDBenchF.MDInvMt:Inner(double[,],byref,byref) (Tier1-OSR)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15346624 (overridden on cmd)
Total bytes of diff: 15346356 (overridden on cmd)
Total bytes of delta: -268 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
100 : 45776.dasm (0.52 % of base)
100 : 44829.dasm (0.49 % of base)
40 : 43025.dasm (0.42 % of base)
36 : 43178.dasm (0.46 % of base)
32 : 46510.dasm (0.23 % of base)
32 : 21243.dasm (0.22 % of base)
32 : 27114.dasm (0.82 % of base)
32 : 40324.dasm (8.60 % of base)
28 : 46508.dasm (0.47 % of base)
24 : 21236.dasm (0.30 % of base)
24 : 23627.dasm (0.25 % of base)
24 : 47366.dasm (0.23 % of base)
16 : 22810.dasm (0.42 % of base)
12 : 23696.dasm (0.74 % of base)
12 : 30595.dasm (0.20 % of base)
12 : 29075.dasm (0.32 % of base)
12 : 30600.dasm (0.28 % of base)
12 : 40181.dasm (0.61 % of base)
8 : 31224.dasm (2.35 % of base)
8 : 39266.dasm (1.32 % of base)
Top file improvements (bytes):
-420 : 47960.dasm (-31.44 % of base)
-152 : 32014.dasm (-14.13 % of base)
-56 : 43220.dasm (-6.97 % of base)
-28 : 42852.dasm (-0.52 % of base)
-20 : 44428.dasm (-1.36 % of base)
-16 : 30792.dasm (-4.08 % of base)
-16 : 31773.dasm (-3.17 % of base)
-12 : 30192.dasm (-0.56 % of base)
-12 : 16705.dasm (-5.17 % of base)
-12 : 38980.dasm (-1.23 % of base)
-12 : 4207.dasm (-0.57 % of base)
-12 : 8604.dasm (-1.92 % of base)
-8 : 23987.dasm (-0.40 % of base)
-8 : 45696.dasm (-0.52 % of base)
-8 : 5904.dasm (-4.44 % of base)
-8 : 39331.dasm (-0.20 % of base)
-8 : 42112.dasm (-1.87 % of base)
-8 : 42858.dasm (-0.75 % of base)
-8 : 43613.dasm (-0.50 % of base)
-8 : 4483.dasm (-1.67 % of base)
66 total files with Code Size differences (29 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
100 (0.49 % of base) : 44829.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
100 (0.52 % of base) : 45776.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
40 (0.42 % of base) : 43025.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
36 (0.46 % of base) : 43178.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location (FullOpts)
32 (0.22 % of base) : 21243.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (0.23 % of base) : 46510.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
32 (8.60 % of base) : 40324.dasm - Benchstone.MDBenchI.MDGeneralArray:Bench(int,int[,,],int[,,]):ubyte (Tier1-OSR)
32 (0.82 % of base) : 27114.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier1)
28 (0.47 % of base) : 46508.dasm - (dynamicClass):_DynamicMethod9(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
24 (0.23 % of base) : 47366.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)
24 (0.25 % of base) : 23627.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives (FullOpts)
24 (0.30 % of base) : 21236.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
16 (0.42 % of base) : 22810.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier1)
12 (0.20 % of base) : 30595.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
12 (0.28 % of base) : 30600.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
12 (0.32 % of base) : 29075.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (Tier1)
12 (0.61 % of base) : 40181.dasm - System.IO.Tests.Perf_RandomAccess+<WriteAsync>d__17:MoveNext():this (Tier1)
12 (0.74 % of base) : 23696.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
8 (1.32 % of base) : 39266.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
8 (2.35 % of base) : 31224.dasm - Neural:DoNNetIteration(long):long (Tier1-OSR)
Top method improvements (bytes):
-420 (-31.44 % of base) : 47960.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-152 (-14.13 % of base) : 32014.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-56 (-6.97 % of base) : 43220.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-28 (-0.52 % of base) : 42852.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
-20 (-1.36 % of base) : 44428.dasm - System.IO.FileSystem:RemoveDirectoryRecursive(System.String,byref,ubyte) (Tier1-OSR)
-16 (-3.17 % of base) : 31773.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-16 (-4.08 % of base) : 30792.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier1)
-12 (-1.23 % of base) : 38980.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
-12 (-0.57 % of base) : 4207.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-12 (-0.56 % of base) : 30192.dasm - System.Decimal+DecCalc:VarDecDiv(byref,byref) (Tier1)
-12 (-5.17 % of base) : 16705.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (Tier1)
-12 (-1.92 % of base) : 8604.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
-8 (-0.52 % of base) : 45696.dasm - Benchstone.MDBenchF.MDRomber:Test():ubyte:this (Tier1-OSR)
-8 (-1.87 % of base) : 42112.dasm - Microsoft.CodeAnalysis.Compilation:SyntaxTreeCommonFeatures(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxTree]):System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String] (Tier1)
-8 (-0.20 % of base) : 39331.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:LoadMembers():this (Tier1)
-8 (-0.50 % of base) : 43613.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
-8 (-4.44 % of base) : 5904.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-8 (-0.40 % of base) : 23987.dasm - System.IO.Tests.Perf_FileStream+<WriteAsync>d__37:MoveNext():this (Tier1)
-8 (-0.75 % of base) : 42858.dasm - System.Net.Security.SslStream:GenerateToken(System.ReadOnlySpan`1[ubyte]):System.Net.Security.ProtocolToken:this (Tier1)
-8 (-1.67 % of base) : 4483.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
Top method regressions (percentages):
32 (8.60 % of base) : 40324.dasm - Benchstone.MDBenchI.MDGeneralArray:Bench(int,int[,,],int[,,]):ubyte (Tier1-OSR)
4 (4.35 % of base) : 47089.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (Tier1)
4 (3.57 % of base) : 4353.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
8 (2.74 % of base) : 40282.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
8 (2.35 % of base) : 31224.dasm - Neural:DoNNetIteration(long):long (Tier1-OSR)
8 (2.35 % of base) : 30706.dasm - NeuralJagged:DoNNetIteration(long):long (Tier1-OSR)
4 (2.22 % of base) : 16398.dasm - System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this (Tier1)
4 (1.61 % of base) : 38870.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetNullableAnalysisValue():System.Nullable`1[ubyte]:this (Tier1)
4 (1.39 % of base) : 18991.dasm - System.IO.Stream:ReadAtLeastCore(System.Span`1[ubyte],int,ubyte):int:this (Tier1)
4 (1.37 % of base) : 46907.dasm - Benchstone.BenchI.Array2:Bench(int):ubyte (Tier1-OSR)
8 (1.32 % of base) : 39266.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetWellKnownTypeMember(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
4 (1.27 % of base) : 875.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
4 (1.19 % of base) : 20905.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (Tier1)
4 (1.16 % of base) : 41562.dasm - Microsoft.CodeAnalysis.SyntaxNode+ChildSyntaxListEnumeratorStack:TryGetNextAsNodeInSpan(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
4 (1.02 % of base) : 24581.dasm - System.IO.Tests.Perf_FileStream:Write(int,long,int,int,int):this (Tier1-OSR)
4 (1.02 % of base) : 31638.dasm - System.IO.Tests.Perf_FileStream:Write_NoBuffering_PreallocationSize(long,int,int):this (Tier1-OSR)
4 (0.91 % of base) : 4341.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
32 (0.82 % of base) : 27114.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier1)
4 (0.75 % of base) : 12688.dasm - System.Threading.LowLevelLifoSemaphore:WaitForSignal(int):ubyte:this (Tier1)
12 (0.74 % of base) : 23696.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
Top method improvements (percentages):
-420 (-31.44 % of base) : 47960.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-152 (-14.13 % of base) : 32014.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-56 (-6.97 % of base) : 43220.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-12 (-5.17 % of base) : 16705.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (Tier1)
-4 (-4.76 % of base) : 5850.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):ubyte (Tier1)
-8 (-4.44 % of base) : 5904.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-16 (-4.08 % of base) : 30792.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier1)
-16 (-3.17 % of base) : 31773.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-4 (-2.17 % of base) : 5834.dasm - System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
-4 (-2.08 % of base) : 38684.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:MoveNext():ubyte:this (Tier1)
-4 (-2.08 % of base) : 20959.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-4 (-2.04 % of base) : 918.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
-4 (-1.92 % of base) : 4306.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-1.92 % of base) : 8604.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
-8 (-1.87 % of base) : 42112.dasm - Microsoft.CodeAnalysis.Compilation:SyntaxTreeCommonFeatures(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxTree]):System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.String] (Tier1)
-8 (-1.67 % of base) : 4483.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
-4 (-1.41 % of base) : 27488.dasm - System.Collections.Hashtable+HashtableEnumerator:MoveNext():ubyte:this (Tier1)
-4 (-1.41 % of base) : 47064.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this (Tier1)
-20 (-1.36 % of base) : 44428.dasm - System.IO.FileSystem:RemoveDirectoryRecursive(System.String,byref,ubyte) (Tier1-OSR)
-4 (-1.27 % of base) : 19602.dasm - Benchstone.MDBenchI.MDArray2:Bench(int):ubyte (Tier1-OSR)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 495323188 (overridden on cmd)
Total bytes of diff: 495282744 (overridden on cmd)
Total bytes of delta: -40444 (-0.01 % of base)
diff is an improvement.
relative diff is a regression.
Top file regressions (bytes):
144 : 391641.dasm (5.56 % of base)
128 : 387536.dasm (4.91 % of base)
88 : 593870.dasm (1.85 % of base)
80 : 528182.dasm (3.60 % of base)
76 : 391438.dasm (1.79 % of base)
72 : 391405.dasm (3.44 % of base)
60 : 405364.dasm (34.88 % of base)
56 : 405781.dasm (32.56 % of base)
52 : 310710.dasm (24.07 % of base)
52 : 310708.dasm (24.07 % of base)
52 : 386833.dasm (1.43 % of base)
44 : 287976.dasm (8.87 % of base)
44 : 498107.dasm (2.29 % of base)
40 : 593673.dasm (0.46 % of base)
36 : 199352.dasm (1.07 % of base)
36 : 391401.dasm (0.98 % of base)
36 : 497577.dasm (0.61 % of base)
36 : 497627.dasm (1.04 % of base)
36 : 387108.dasm (1.73 % of base)
32 : 405292.dasm (16.00 % of base)
Top file improvements (bytes):
-504 : 254898.dasm (-34.90 % of base)
-168 : 304176.dasm (-31.82 % of base)
-156 : 250751.dasm (-21.55 % of base)
-156 : 250766.dasm (-21.55 % of base)
-156 : 581308.dasm (-2.91 % of base)
-156 : 357092.dasm (-2.91 % of base)
-156 : 357673.dasm (-2.88 % of base)
-156 : 581490.dasm (-2.91 % of base)
-128 : 526766.dasm (-4.14 % of base)
-80 : 486791.dasm (-2.49 % of base)
-68 : 392177.dasm (-1.41 % of base)
-56 : 301243.dasm (-7.87 % of base)
-56 : 535009.dasm (-8.05 % of base)
-52 : 250774.dasm (-0.83 % of base)
-44 : 393485.dasm (-2.30 % of base)
-40 : 284989.dasm (-1.90 % of base)
-40 : 311165.dasm (-0.68 % of base)
-40 : 358018.dasm (-0.68 % of base)
-40 : 373337.dasm (-1.90 % of base)
-40 : 291613.dasm (-1.90 % of base)
71 total files with Code Size differences (36 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
144 (5.56 % of base) : 391641.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
128 (4.91 % of base) : 387536.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedMethodKey,byref):ubyte:this (Tier1)
88 (1.85 % of base) : 593870.dasm - Internal.IL.Stubs.UnsafeIntrinsics:EmitIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (FullOpts)
80 (3.60 % of base) : 528182.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
76 (1.79 % of base) : 391438.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryAddOrGetExisting(System.__Canon,byref):System.__Canon:this (Tier1)
72 (3.44 % of base) : 391405.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
60 (34.88 % of base) : 405364.dasm - testout1:Sub_Funclet_221():int (FullOpts)
56 (32.56 % of base) : 405781.dasm - testout1:Sub_Funclet_221():int (FullOpts)
52 (1.43 % of base) : 386833.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
52 (24.07 % of base) : 310708.dasm - testout1:Test1(int):int (Tier1-OSR)
52 (24.07 % of base) : 310710.dasm - testout1:Test2(int):int (Tier1-OSR)
44 (8.87 % of base) : 287976.dasm - RetBufferBug:Main():int (Tier1-OSR)
44 (2.29 % of base) : 498107.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (0.46 % of base) : 593673.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
36 (0.98 % of base) : 391401.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
36 (1.73 % of base) : 387108.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
36 (1.04 % of base) : 497627.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 497577.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
36 (1.07 % of base) : 199352.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
32 (16.00 % of base) : 405254.dasm - testout1:Sub_Funclet_107():int (FullOpts)
Top method improvements (bytes):
-504 (-34.90 % of base) : 254898.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-168 (-31.82 % of base) : 304176.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
-156 (-21.55 % of base) : 250751.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 250766.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-2.91 % of base) : 581308.dasm - StrSwitchFinalTest:Run():int:this (FullOpts)
-156 (-2.91 % of base) : 581490.dasm - StrSwitchFinalTest:Run():int:this (FullOpts)
-156 (-2.91 % of base) : 357092.dasm - StrSwitchFinalTest:Run():int:this (Tier0-FullOpts)
-156 (-2.88 % of base) : 357673.dasm - StrSwitchFinalTest:Run():int:this (Tier0-FullOpts)
-128 (-4.14 % of base) : 526766.dasm - Test_baduwinfo1:bar(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String):int (FullOpts)
-80 (-2.49 % of base) : 486791.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-68 (-1.41 % of base) : 392177.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int (Tier1)
-56 (-8.05 % of base) : 535009.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-56 (-7.87 % of base) : 301243.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (Tier0-FullOpts)
-52 (-0.83 % of base) : 250774.dasm - LUDecomp:Run():double:this (Tier1)
-44 (-2.30 % of base) : 393485.dasm - Test:TestEntryPoint():int (Tier1-OSR)
-40 (-1.90 % of base) : 284989.dasm - System.Diagnostics.Tracing.EventSource:Initialize(System.Guid,System.String,System.String[]):this (Instrumented Tier1)
-40 (-1.90 % of base) : 373337.dasm - System.Diagnostics.Tracing.EventSource:Initialize(System.Guid,System.String,System.String[]):this (Instrumented Tier1)
-40 (-1.90 % of base) : 291613.dasm - System.Diagnostics.Tracing.EventSource:Initialize(System.Guid,System.String,System.String[]):this (Instrumented Tier1)
-40 (-0.68 % of base) : 311165.dasm - TestLibrary.OutOfProcessTest:RunOutOfProcessTest(System.String) (Tier1)
-40 (-0.68 % of base) : 358018.dasm - TestLibrary.OutOfProcessTest:RunOutOfProcessTest(System.String) (Tier1)
Top method regressions (percentages):
60 (34.88 % of base) : 405364.dasm - testout1:Sub_Funclet_221():int (FullOpts)
56 (32.56 % of base) : 405781.dasm - testout1:Sub_Funclet_221():int (FullOpts)
52 (24.07 % of base) : 310708.dasm - testout1:Test1(int):int (Tier1-OSR)
52 (24.07 % of base) : 310710.dasm - testout1:Test2(int):int (Tier1-OSR)
32 (16.00 % of base) : 405254.dasm - testout1:Sub_Funclet_107():int (FullOpts)
32 (16.00 % of base) : 405292.dasm - testout1:Sub_Funclet_145():int (FullOpts)
32 (16.00 % of base) : 405366.dasm - testout1:Sub_Funclet_223():int (FullOpts)
28 (14.00 % of base) : 405671.dasm - testout1:Sub_Funclet_107():int (FullOpts)
28 (14.00 % of base) : 405709.dasm - testout1:Sub_Funclet_145():int (FullOpts)
28 (14.00 % of base) : 405783.dasm - testout1:Sub_Funclet_223():int (FullOpts)
24 (12.77 % of base) : 405708.dasm - testout1:Sub_Funclet_144():int (FullOpts)
24 (12.77 % of base) : 405291.dasm - testout1:Sub_Funclet_144():int (FullOpts)
16 (11.11 % of base) : 219740.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (11.11 % of base) : 215953.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (11.11 % of base) : 219357.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (11.11 % of base) : 303979.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
16 (11.11 % of base) : 219711.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
20 (10.42 % of base) : 405747.dasm - testout1:Sub_Funclet_184():int (FullOpts)
20 (10.42 % of base) : 405778.dasm - testout1:Sub_Funclet_218():int (FullOpts)
20 (10.42 % of base) : 405782.dasm - testout1:Sub_Funclet_222():int (FullOpts)
Top method improvements (percentages):
-504 (-34.90 % of base) : 254898.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-168 (-31.82 % of base) : 304176.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
-156 (-21.55 % of base) : 250751.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-156 (-21.55 % of base) : 250766.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-28 (-14.00 % of base) : 406283.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-28 (-14.00 % of base) : 406699.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-32 (-11.59 % of base) : 217746.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Action`1[ubyte],System.Object) (FullOpts)
-32 (-11.11 % of base) : 218092.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.DateTime,System.Object) (FullOpts)
-32 (-10.81 % of base) : 257607.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-32 (-10.67 % of base) : 217573.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-32 (-10.26 % of base) : 257604.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
-28 (-8.33 % of base) : 257612.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
-56 (-8.05 % of base) : 535009.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-56 (-7.87 % of base) : 301243.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (Tier0-FullOpts)
-16 (-7.02 % of base) : 253859.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner2(int[,],byref) (Tier1-OSR)
-28 (-6.93 % of base) : 486178.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
-16 (-6.90 % of base) : 253857.dasm - Benchstone.MDBenchI.MDAddArray2:BenchInner1(int[,],byref) (Tier1-OSR)
-36 (-6.87 % of base) : 218243.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object,System.Object) (FullOpts)
-32 (-6.78 % of base) : 217933.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,double,System.Object) (FullOpts)
-32 (-6.78 % of base) : 217917.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,float,System.Object) (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 58963476 (overridden on cmd)
Total bytes of diff: 58963524 (overridden on cmd)
Total bytes of delta: 48 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
132 : 100152.dasm (0.35 % of base)
84 : 51885.dasm (0.27 % of base)
72 : 5366.dasm (0.63 % of base)
52 : 136192.dasm (1.33 % of base)
44 : 226374.dasm (2.07 % of base)
44 : 2799.dasm (2.28 % of base)
40 : 209717.dasm (1.89 % of base)
40 : 240065.dasm (1.85 % of base)
40 : 56541.dasm (1.39 % of base)
32 : 10295.dasm (2.12 % of base)
32 : 117917.dasm (2.35 % of base)
32 : 140409.dasm (2.24 % of base)
32 : 140410.dasm (2.18 % of base)
32 : 56537.dasm (2.13 % of base)
28 : 141125.dasm (1.73 % of base)
28 : 167406.dasm (1.45 % of base)
28 : 168772.dasm (4.22 % of base)
24 : 160216.dasm (0.63 % of base)
24 : 202742.dasm (0.49 % of base)
24 : 218242.dasm (1.11 % of base)
Top file improvements (bytes):
-84 : 141122.dasm (-7.81 % of base)
-52 : 202055.dasm (-2.19 % of base)
-44 : 161308.dasm (-1.75 % of base)
-36 : 144297.dasm (-6.34 % of base)
-36 : 174069.dasm (-6.34 % of base)
-32 : 168432.dasm (-3.98 % of base)
-32 : 182926.dasm (-0.86 % of base)
-28 : 48534.dasm (-1.62 % of base)
-28 : 113821.dasm (-1.51 % of base)
-28 : 116734.dasm (-0.66 % of base)
-24 : 185912.dasm (-0.79 % of base)
-24 : 203028.dasm (-0.84 % of base)
-24 : 93596.dasm (-0.74 % of base)
-20 : 146683.dasm (-2.38 % of base)
-20 : 47767.dasm (-0.46 % of base)
-20 : 162277.dasm (-0.62 % of base)
-16 : 157625.dasm (-0.31 % of base)
-16 : 169022.dasm (-0.28 % of base)
-16 : 107245.dasm (-0.28 % of base)
-16 : 200170.dasm (-3.25 % of base)
73 total files with Code Size differences (35 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
132 (0.35 % of base) : 100152.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
84 (0.27 % of base) : 51885.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
72 (0.63 % of base) : 5366.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
52 (1.33 % of base) : 136192.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this (FullOpts)
44 (2.07 % of base) : 226374.dasm - System.IO.Ports.SerialStream:.ctor(System.String,int,int,int,int,int,int,int,ubyte,ubyte,ubyte,ubyte):this (FullOpts)
44 (2.28 % of base) : 2799.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (1.39 % of base) : 56541.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
40 (1.89 % of base) : 209717.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (1.85 % of base) : 240065.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
32 (2.13 % of base) : 56537.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
32 (2.35 % of base) : 117917.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler:GetWellKnownTag(System.String):int (FullOpts)
32 (2.24 % of base) : 140409.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:SystemTypeName(System.String):System.String (FullOpts)
32 (2.18 % of base) : 140410.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:VbTypeName(System.String):System.String (FullOpts)
32 (2.12 % of base) : 10295.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
28 (1.73 % of base) : 141125.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception:this (FullOpts)
28 (4.22 % of base) : 168772.dasm - System.Data.Common.BigIntegerStorage:ConvertToBigInteger(System.Object,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
28 (1.45 % of base) : 167406.dasm - System.Data.Common.DbColumn:get_Item(System.String):System.Object:this (FullOpts)
24 (1.11 % of base) : 218242.dasm - Microsoft.VisualBasic.VBCodeGenerator:GetBaseTypeOutput(System.CodeDom.CodeTypeReference,ubyte):System.String:this (FullOpts)
24 (0.63 % of base) : 160216.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
24 (0.49 % of base) : 202742.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:GenerateMembersElement(System.Xml.Serialization.XmlMembersMapping):System.String:this (FullOpts)
Top method improvements (bytes):
-84 (-7.81 % of base) : 141122.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-52 (-2.19 % of base) : 202055.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:GenerateMembersElement(System.Object,System.Xml.Serialization.XmlMembersMapping):this (FullOpts)
-44 (-1.75 % of base) : 161308.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-36 (-6.34 % of base) : 144297.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-36 (-6.34 % of base) : 174069.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-0.86 % of base) : 182926.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
-32 (-3.98 % of base) : 168432.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],ubyte):this (FullOpts)
-28 (-1.62 % of base) : 48534.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTupleBinaryOperatorNestedInfo(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.TupleBinaryOperatorInfo+Multiple:this (FullOpts)
-28 (-0.66 % of base) : 116734.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+IntoClauseBinder:BindIntoSelector(Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],System.Collections.Generic.HashSet`1[System.String],Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax],ubyte,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-28 (-1.51 % of base) : 113821.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-24 (-0.74 % of base) : 93596.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindUserDefinedShortCircuitingOperator(Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundUserDefinedShortCircuitingOperator:this (FullOpts)
-24 (-0.79 % of base) : 185912.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:UpdateGroupMembership(System.DirectoryServices.AccountManagement.Principal,System.DirectoryServices.DirectoryEntry,System.DirectoryServices.AccountManagement.NetCred,int) (FullOpts)
-24 (-0.84 % of base) : 203028.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WritePrimitive(System.Xml.Serialization.TypeMapping,System.Func`2[System.Object,System.String],System.Object):System.Object:this (FullOpts)
-20 (-0.46 % of base) : 47767.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructionConversion(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable],byref):ubyte:this (FullOpts)
-20 (-2.38 % of base) : 146683.dasm - Microsoft.CodeAnalysis.Text.SourceText:ContentEqualsImpl(Microsoft.CodeAnalysis.Text.SourceText):ubyte:this (FullOpts)
-20 (-0.62 % of base) : 162277.dasm - System.Data.OleDb.OleDbMetaDataFactory:.ctor(System.IO.Stream,System.String,System.String,System.Data.OleDb.SchemaSupport[]):this (FullOpts)
-16 (-0.28 % of base) : 107245.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
-16 (-0.28 % of base) : 169022.dasm - System.Data.XmlDataTreeWriter:XmlDataRowWriter(System.Data.DataRow,System.String):this (FullOpts)
-16 (-2.65 % of base) : 25588.dasm - System.Diagnostics.Tracing.ActivityTracker+ActivityInfo:AddIdToGuid(ulong,int,uint,ubyte):int (FullOpts)
-16 (-0.31 % of base) : 157625.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySite:GetBridgeheadServers():System.DirectoryServices.ActiveDirectory.ReadOnlyDirectoryServerCollection:this (FullOpts)
Top method regressions (percentages):
16 (9.76 % of base) : 3327.dasm - System.Decimal:.ctor(System.ReadOnlySpan`1[int]):this (FullOpts)
8 (8.33 % of base) : 54282.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
8 (5.71 % of base) : 148860.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
8 (5.71 % of base) : 178554.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.Symbols.ISymbolInternal,ubyte):ubyte:this (FullOpts)
4 (4.55 % of base) : 22363.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
28 (4.22 % of base) : 168772.dasm - System.Data.Common.BigIntegerStorage:ConvertToBigInteger(System.Object,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
8 (4.08 % of base) : 193577.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
8 (4.00 % of base) : 144.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
4 (4.00 % of base) : 226533.dasm - System.Threading.ReaderWriterLock+ThreadLocalLockEntry:GetCurrent(long):System.Threading.ReaderWriterLock+ThreadLocalLockEntry (FullOpts)
8 (3.77 % of base) : 169398.dasm - System.Xml.XPathNodePointer:DecideXPNodeTypeForTextNodes(System.Xml.XmlNode):int:this (FullOpts)
8 (3.64 % of base) : 64373.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
4 (3.57 % of base) : 215706.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
8 (3.08 % of base) : 79866.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
12 (2.78 % of base) : 141446.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
8 (2.78 % of base) : 25172.dasm - System.DateTimeParse:ProcessDateTimeSuffix(byref,byref,byref):ubyte (FullOpts)
20 (2.78 % of base) : 185314.dasm - System.DirectoryServices.AccountManagement.Principal:GetChangeStatusForProperty(System.String):ubyte:this (FullOpts)
8 (2.70 % of base) : 23330.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
20 (2.65 % of base) : 185315.dasm - System.DirectoryServices.AccountManagement.Principal:GetValueForProperty(System.String):System.Object:this (FullOpts)
8 (2.60 % of base) : 8265.dasm - System.Globalization.CultureInfo:GetCultureInfo(System.String,ubyte):System.Globalization.CultureInfo (FullOpts)
32 (2.35 % of base) : 117917.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler:GetWellKnownTag(System.String):int (FullOpts)
Top method improvements (percentages):
-84 (-7.81 % of base) : 141122.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-16 (-6.78 % of base) : 14429.dasm - System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
-8 (-6.67 % of base) : 14427.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-36 (-6.34 % of base) : 144297.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-36 (-6.34 % of base) : 174069.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-12 (-5.77 % of base) : 14428.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
-4 (-5.00 % of base) : 206692.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
-4 (-4.76 % of base) : 24233.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):ubyte (FullOpts)
-8 (-4.65 % of base) : 20585.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-12 (-4.17 % of base) : 20586.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-32 (-3.98 % of base) : 168432.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],ubyte):this (FullOpts)
-16 (-3.77 % of base) : 20587.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-4 (-3.33 % of base) : 123855.dasm - System.Data.Odbc.OdbcParameter:set_SourceVersion(int):this (FullOpts)
-4 (-3.33 % of base) : 161833.dasm - System.Data.OleDb.OleDbParameter:set_SourceVersion(int):this (FullOpts)
-4 (-3.33 % of base) : 200189.dasm - System.Xml.XPath.XPathNavigator:IsValidChildType(int):ubyte:this (FullOpts)
-16 (-3.25 % of base) : 200170.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:CachesResult(System.Xml.Xsl.Qil.QilNode):ubyte (FullOpts)
-4 (-3.23 % of base) : 48187.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
-16 (-2.65 % of base) : 25588.dasm - System.Diagnostics.Tracing.ActivityTracker+ActivityInfo:AddIdToGuid(ulong,int,uint,ubyte):int (FullOpts)
-4 (-2.56 % of base) : 122283.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
-4 (-2.56 % of base) : 197765.dasm - System.Xml.Serialization.XmlSerializationReader:IsXmlnsAttribute(System.String):ubyte:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79565936 (overridden on cmd)
Total bytes of diff: 79562388 (overridden on cmd)
Total bytes of delta: -3548 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
100 : 102700.dasm (0.25 % of base)
96 : 283194.dasm (4.96 % of base)
52 : 53218.dasm (1.62 % of base)
52 : 57451.dasm (0.15 % of base)
48 : 149121.dasm (1.21 % of base)
44 : 198635.dasm (0.93 % of base)
44 : 13801.dasm (2.29 % of base)
44 : 283195.dasm (2.02 % of base)
44 : 54058.dasm (0.66 % of base)
40 : 155048.dasm (1.64 % of base)
40 : 211429.dasm (0.61 % of base)
40 : 232096.dasm (0.45 % of base)
40 : 220235.dasm (2.06 % of base)
40 : 248337.dasm (2.01 % of base)
40 : 280575.dasm (2.87 % of base)
40 : 300134.dasm (2.29 % of base)
40 : 95432.dasm (0.17 % of base)
36 : 62204.dasm (0.61 % of base)
36 : 62211.dasm (1.04 % of base)
36 : 214654.dasm (7.38 % of base)
Top file improvements (bytes):
-80 : 127174.dasm (-2.48 % of base)
-72 : 145929.dasm (-0.25 % of base)
-60 : 202365.dasm (-1.52 % of base)
-60 : 289400.dasm (-2.47 % of base)
-56 : 52354.dasm (-8.24 % of base)
-52 : 223297.dasm (-4.19 % of base)
-52 : 237537.dasm (-3.32 % of base)
-44 : 147016.dasm (-3.94 % of base)
-40 : 209912.dasm (-4.13 % of base)
-40 : 147027.dasm (-4.76 % of base)
-40 : 150073.dasm (-2.68 % of base)
-40 : 207381.dasm (-1.78 % of base)
-40 : 222534.dasm (-0.68 % of base)
-40 : 269272.dasm (-1.51 % of base)
-36 : 150324.dasm (-2.71 % of base)
-36 : 196449.dasm (-0.84 % of base)
-36 : 202413.dasm (-3.41 % of base)
-36 : 225085.dasm (-4.25 % of base)
-36 : 261166.dasm (-0.68 % of base)
-32 : 131475.dasm (-5.84 % of base)
78 total files with Code Size differences (39 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
100 (0.25 % of base) : 102700.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
96 (4.96 % of base) : 283194.dasm - System.Net.NetworkInformation.SystemIPGlobalProperties:GetAllTcpConnections():System.Collections.Generic.List`1[System.Net.NetworkInformation.SystemTcpConnectionInformation] (FullOpts)
52 (1.62 % of base) : 53218.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructInvocationExpression(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
52 (0.15 % of base) : 57451.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
48 (1.21 % of base) : 149121.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this (FullOpts)
44 (0.66 % of base) : 54058.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<BindElementOrIndexerAccess>g__bindInlineArrayElementAccess|499_1(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BoundExpression,int,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,int,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
44 (0.93 % of base) : 198635.dasm - System.Net.Http.HttpConnectionPool+<AddHttp2ConnectionAsync>d__83:MoveNext():this (FullOpts)
44 (2.02 % of base) : 283195.dasm - System.Net.NetworkInformation.SystemIPGlobalProperties:GetActiveUdpListeners():System.Net.IPEndPoint[]:this (FullOpts)
44 (2.29 % of base) : 13801.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
40 (0.45 % of base) : 232096.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
40 (1.64 % of base) : 155048.dasm - Microsoft.Build.Evaluation.ExpressionShredder:GetReferencedItemExpressions(System.String,int,int):System.Collections.Generic.List`1[Microsoft.Build.Evaluation.ExpressionShredder+ItemExpressionCapture] (FullOpts)
40 (0.17 % of base) : 95432.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
40 (2.06 % of base) : 220235.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (2.01 % of base) : 248337.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (2.87 % of base) : 280575.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
40 (2.29 % of base) : 300134.dasm - System.Web.HttpUtility+HttpQSCollection:ToString():System.String:this (FullOpts)
40 (0.61 % of base) : 211429.dasm - System.Xml.DtdParser+<ParseAttlistTypeAsync>d__161:MoveNext():this (FullOpts)
36 (1.04 % of base) : 62211.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 62204.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
36 (0.44 % of base) : 95427.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureAndProduceBoundNode(Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTypeExpression,Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.Location):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
Top method improvements (bytes):
-80 (-2.48 % of base) : 127174.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-72 (-0.25 % of base) : 145929.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-60 (-1.52 % of base) : 202365.dasm - System.Runtime.Serialization.SchemaExporter:ExportGenericInfo(System.Type,System.String,System.String):System.Xml.XmlElement:this (FullOpts)
-60 (-2.47 % of base) : 289400.dasm - System.Xml.Linq.XNodeBuilder:WriteEntityRef(System.String):this (FullOpts)
-56 (-8.24 % of base) : 52354.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-52 (-3.32 % of base) : 237537.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-52 (-4.19 % of base) : 223297.dasm - Internal.Cryptography.Helpers:AreSamePublicECParameters(System.Security.Cryptography.ECParameters,System.Security.Cryptography.ECParameters):ubyte (FullOpts)
-44 (-3.94 % of base) : 147016.dasm - Newtonsoft.Json.JsonReader:ReadAsBytes():ubyte[]:this (FullOpts)
-40 (-2.68 % of base) : 150073.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ReadElement(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Converters.IXmlDocument,Newtonsoft.Json.Converters.IXmlNode,System.String,System.Xml.XmlNamespaceManager):this (FullOpts)
-40 (-4.76 % of base) : 147027.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (FullOpts)
-40 (-1.51 % of base) : 269272.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:IdentityClaimToFilter(System.String,System.String,byref,ubyte):ubyte (FullOpts)
-40 (-0.68 % of base) : 222534.dasm - System.Security.Cryptography.Pkcs.Pkcs12SafeContents:ReadBags(System.ReadOnlyMemory`1[ubyte]):System.Collections.Generic.List`1[System.Security.Cryptography.Pkcs.Pkcs12SafeBag] (FullOpts)
-40 (-1.78 % of base) : 207381.dasm - System.Xml.XmlUtf8RawTextWriter+<DisposeAsyncCore>d__85:MoveNext():this (FullOpts)
-40 (-4.13 % of base) : 209912.dasm - System.Xml.XmlWellFormedWriter+AttributeValueCache:WriteEntityRef(System.String):this (FullOpts)
-36 (-2.71 % of base) : 150324.dasm - Newtonsoft.Json.JsonTextWriter+<WriteIndentAsync>d__13:MoveNext():this (FullOpts)
-36 (-0.68 % of base) : 261166.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
-36 (-0.84 % of base) : 196449.dasm - System.Management.RelatedObjectQuery:ParseQuery(System.String):this (FullOpts)
-36 (-3.41 % of base) : 202413.dasm - System.Runtime.Serialization.SchemaHelper:AddSchemaImport(System.String,System.Xml.Schema.XmlSchema) (FullOpts)
-36 (-4.25 % of base) : 225085.dasm - System.Security.Cryptography.Rfc2898DeriveBytes:ValidateHashAlgorithm(System.Security.Cryptography.HashAlgorithmName) (FullOpts)
-32 (-5.84 % of base) : 131475.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
Top method regressions (percentages):
28 (10.00 % of base) : 158376.dasm - Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
12 (10.00 % of base) : 54713.dasm - Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
16 (8.70 % of base) : 254956.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)
16 (8.70 % of base) : 256030.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.Numerics.Vector`1[float]]:get_Item(int):System.Numerics.Vector`1[float]:this (FullOpts)
36 (7.38 % of base) : 214654.dasm - System.Xml.Xsl.Xslt.QilGenerator:CompileSingleKey(System.Collections.Generic.List`1[System.Xml.Xsl.Xslt.Key],System.Xml.Xsl.Qil.QilIterator,System.Xml.Xsl.Qil.QilIterator):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
8 (6.67 % of base) : 272732.dasm - System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
16 (6.56 % of base) : 154126.dasm - Microsoft.Build.Graph.ProjectInterpretation:SplitPropertyNames(System.String):System.Collections.Generic.IReadOnlyCollection`1[System.String] (FullOpts)
8 (6.45 % of base) : 272744.dasm - System.IO.Hashing.XxHash64:GetCurrentHashAsUInt64():ulong:this (FullOpts)
16 (6.06 % of base) : 158217.dasm - Microsoft.Build.Shared.EncodingUtilities:SimilarToEncoding(System.Text.Encoding,System.Text.Encoding):ubyte (FullOpts)
32 (5.76 % of base) : 254958.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:Insert(int,System.Numerics.Vector`1[float]):System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:this (FullOpts)
8 (5.71 % of base) : 138178.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
8 (5.71 % of base) : 173520.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.Symbols.ISymbolInternal,ubyte):ubyte:this (FullOpts)
20 (5.49 % of base) : 240519.dasm - Microsoft.Extensions.Diagnostics.Metrics.ListenerSubscription:IsMoreSpecific(Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,ubyte):ubyte (FullOpts)
8 (5.13 % of base) : 253196.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]:Sort(System.Comparison`1[ubyte]):this (FullOpts)
96 (4.96 % of base) : 283194.dasm - System.Net.NetworkInformation.SystemIPGlobalProperties:GetAllTcpConnections():System.Collections.Generic.List`1[System.Net.NetworkInformation.SystemTcpConnectionInformation] (FullOpts)
8 (4.76 % of base) : 71803.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
4 (4.76 % of base) : 264940.dasm - System.Data.ProviderBase.DbConnectionFactory:FindConnectionOptions(System.Data.Common.DbConnectionPoolKey):System.Data.Common.DbConnectionOptions:this (FullOpts)
8 (4.65 % of base) : 221948.dasm - System.Security.Cryptography.CryptoPool:Return(ubyte[],int) (FullOpts)
8 (4.65 % of base) : 223628.dasm - System.Security.Cryptography.CryptoPool:Return(ubyte[],int) (FullOpts)
8 (4.65 % of base) : 208533.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
Top method improvements (percentages):
-16 (-10.81 % of base) : 199696.dasm - System.Net.Http.Headers.RetryConditionHeaderValue:.ctor(System.TimeSpan):this (FullOpts)
-8 (-9.09 % of base) : 720.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThan[double](double,double,System.String) (FullOpts)
-56 (-8.24 % of base) : 52354.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-28 (-6.93 % of base) : 126336.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
-16 (-6.78 % of base) : 206768.dasm - System.Xml.XmlSqlBinaryReader+QName:MatchPrefix(System.String,System.String):ubyte:this (FullOpts)
-28 (-6.14 % of base) : 265616.dasm - System.Diagnostics.ActivityLink:op_Inequality(System.Diagnostics.ActivityLink,System.Diagnostics.ActivityLink):ubyte (FullOpts)
-28 (-6.09 % of base) : 289106.dasm - System.Xml.Linq.XDocumentType:DeepEquals(System.Xml.Linq.XNode):ubyte:this (FullOpts)
-28 (-5.98 % of base) : 262466.dasm - System.ComponentModel.LookupBindingPropertiesAttribute:Equals(System.Object):ubyte:this (FullOpts)
-20 (-5.88 % of base) : 266297.dasm - System.Diagnostics.Metrics.StringSequence3:Equals(System.Diagnostics.Metrics.StringSequence3):ubyte:this (FullOpts)
-24 (-5.88 % of base) : 220658.dasm - System.Reflection.TypeLoading.RoAssemblyName:Equals(System.Reflection.TypeLoading.RoAssemblyName):ubyte:this (FullOpts)
-24 (-5.88 % of base) : 248695.dasm - System.Reflection.TypeLoading.RoAssemblyName:Equals(System.Reflection.TypeLoading.RoAssemblyName):ubyte:this (FullOpts)
-20 (-5.88 % of base) : 206773.dasm - System.Xml.XmlSqlBinaryReader+QName:Equals(System.Xml.XmlSqlBinaryReader+QName):ubyte:this (FullOpts)
-32 (-5.84 % of base) : 131475.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-5.84 % of base) : 166890.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-16 (-5.56 % of base) : 166423.dasm - Microsoft.CodeAnalysis.SuppressionDescriptor:Equals(Microsoft.CodeAnalysis.SuppressionDescriptor):ubyte:this (FullOpts)
-16 (-5.56 % of base) : 131007.dasm - Microsoft.CodeAnalysis.SuppressionDescriptor:Equals(Microsoft.CodeAnalysis.SuppressionDescriptor):ubyte:this (FullOpts)
-4 (-5.56 % of base) : 270704.dasm - System.Formats.Asn1.SpanBasedEncoding:GetBytes(ulong,int,ulong,int):int:this (FullOpts)
-4 (-5.56 % of base) : 270709.dasm - System.Formats.Asn1.SpanBasedEncoding:GetChars(ulong,int,ulong,int):int:this (FullOpts)
-16 (-5.41 % of base) : 261193.dasm - System.ComponentModel.DesignerAttribute:Equals(System.Object):ubyte:this (FullOpts)
-16 (-5.41 % of base) : 261225.dasm - System.ComponentModel.EditorAttribute:Equals(System.Object):ubyte:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 309738560 (overridden on cmd)
Total bytes of diff: 309693628 (overridden on cmd)
Total bytes of delta: -44932 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
140 : 156158.dasm (3.27 % of base)
132 : 89333.dasm (4.15 % of base)
124 : 61427.dasm (4.02 % of base)
120 : 580826.dasm (16.48 % of base)
120 : 59659.dasm (2.45 % of base)
120 : 605652.dasm (3.80 % of base)
112 : 265734.dasm (4.17 % of base)
112 : 54269.dasm (2.09 % of base)
112 : 333941.dasm (4.17 % of base)
108 : 87725.dasm (0.54 % of base)
104 : 268289.dasm (3.77 % of base)
104 : 459646.dasm (3.90 % of base)
104 : 326982.dasm (3.77 % of base)
104 : 353273.dasm (3.53 % of base)
104 : 82289.dasm (3.77 % of base)
92 : 288019.dasm (0.94 % of base)
88 : 621509.dasm (1.02 % of base)
88 : 84987.dasm (1.57 % of base)
88 : 89235.dasm (1.81 % of base)
88 : 91104.dasm (0.74 % of base)
Top file improvements (bytes):
-764 : 155714.dasm (-31.62 % of base)
-704 : 156224.dasm (-6.00 % of base)
-320 : 164025.dasm (-2.49 % of base)
-152 : 77554.dasm (-1.00 % of base)
-136 : 469813.dasm (-0.95 % of base)
-128 : 34985.dasm (-0.84 % of base)
-128 : 77578.dasm (-1.95 % of base)
-120 : 616902.dasm (-0.84 % of base)
-112 : 614170.dasm (-0.84 % of base)
-112 : 493765.dasm (-0.52 % of base)
-88 : 380032.dasm (-1.82 % of base)
-84 : 214477.dasm (-1.06 % of base)
-84 : 330722.dasm (-1.06 % of base)
-84 : 469718.dasm (-1.06 % of base)
-84 : 608922.dasm (-1.06 % of base)
-84 : 341129.dasm (-0.48 % of base)
-84 : 572789.dasm (-1.06 % of base)
-84 : 232609.dasm (-1.06 % of base)
-84 : 367506.dasm (-1.06 % of base)
-84 : 435758.dasm (-1.06 % of base)
92 total files with Code Size differences (53 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
140 (3.27 % of base) : 156158.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
132 (4.15 % of base) : 89333.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (Tier1)
124 (4.02 % of base) : 61427.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (Tier1)
120 (2.45 % of base) : 59659.dasm - Microsoft.CodeAnalysis.CombineNode`2[int,int]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]]:this (Tier1)
120 (3.80 % of base) : 605652.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (Tier1)
120 (16.48 % of base) : 580826.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
112 (2.09 % of base) : 54269.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
112 (4.17 % of base) : 265734.dasm - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (Instrumented Tier1)
112 (4.17 % of base) : 333941.dasm - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (Instrumented Tier1)
108 (0.54 % of base) : 87725.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
104 (3.77 % of base) : 268289.dasm - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (Instrumented Tier1)
104 (3.90 % of base) : 459646.dasm - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (Instrumented Tier1)
104 (3.77 % of base) : 326982.dasm - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (Instrumented Tier1)
104 (3.53 % of base) : 353273.dasm - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (Instrumented Tier1)
104 (3.77 % of base) : 82289.dasm - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (Instrumented Tier1)
92 (0.94 % of base) : 288019.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
88 (1.81 % of base) : 89235.dasm - Microsoft.CodeAnalysis.CombineNode`2[int,int]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[int,int]]:this (Tier1)
88 (1.57 % of base) : 84987.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
88 (0.74 % of base) : 91104.dasm - Microsoft.Interop.TypeSymbolExtensions:ResolveUnboundConstructedTypeToConstructedType(Microsoft.CodeAnalysis.INamedTypeSymbol,Microsoft.CodeAnalysis.INamedTypeSymbol,byref,byref):Microsoft.CodeAnalysis.INamedTypeSymbol (Tier1)
88 (1.02 % of base) : 621509.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (bytes):
-764 (-31.62 % of base) : 155714.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ParseAdditionalSources(Microsoft.CodeAnalysis.ISourceGenerator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSyntaxTree]:this (Tier1)
-704 (-6.00 % of base) : 156224.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (Tier1)
-320 (-2.49 % of base) : 164025.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-152 (-1.00 % of base) : 77554.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-136 (-0.95 % of base) : 469813.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-128 (-0.84 % of base) : 34985.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-128 (-1.95 % of base) : 77578.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
-120 (-0.84 % of base) : 616902.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-112 (-0.84 % of base) : 614170.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-112 (-0.52 % of base) : 493765.dasm - System.Xml.XmlLoader:LoadNode(ubyte):System.Xml.XmlNode:this (Tier1-OSR)
-88 (-1.82 % of base) : 380032.dasm - System.Reflection.Emit.CustomAttributeBuilder:EmitValue(System.IO.BinaryWriter,System.Type,System.Object) (Instrumented Tier1)
-84 (-0.48 % of base) : 341129.dasm - Systen.Net.Mail.Tests.LoopbackSmtpServer+<HandleConnectionAsync>d__62:MoveNext():this (Tier1)
-84 (-1.06 % of base) : 214477.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-84 (-1.06 % of base) : 330722.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-84 (-1.06 % of base) : 469718.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-84 (-1.06 % of base) : 608922.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-84 (-1.06 % of base) : 572789.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-84 (-1.06 % of base) : 232609.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-84 (-1.06 % of base) : 367506.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-84 (-1.06 % of base) : 435758.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
Top method regressions (percentages):
120 (16.48 % of base) : 580826.dasm - Microsoft.CodeAnalysis.ProjectInfo:With(Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions],Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.ProjectReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.Diagnostics.AnalyzerReference],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],System.Collections.Generic.IReadOnlyList`1[Microsoft.CodeAnalysis.DocumentInfo],Microsoft.CodeAnalysis.Optional`1[System.Type]):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
8 (9.52 % of base) : 54925.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
8 (9.52 % of base) : 152571.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:GetPreviousIfElifElseOrRegion(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive]):Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Directive] (Tier1)
8 (9.09 % of base) : 278888.dasm - System.IO.FileSystemInfo:get_NormalizedPath():System.String:this (Tier1)
44 (9.02 % of base) : 182055.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]]:IsSubsetOfSetWithCompatibleComparer(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (Tier1-OSR)
16 (8.70 % of base) : 51141.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.ValueTuple`3[int,int,System.__Canon]]:ItemRef(int):byref:this (Tier1)
32 (8.08 % of base) : 102255.dasm - System.Reflection.AssemblyNameParser:ParsePKT(System.String,ubyte):ubyte[]:this (Tier1)
16 (7.14 % of base) : 591742.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
16 (7.14 % of base) : 573100.dasm - System.Text.RegularExpressions.RegexCharClass:GetSetChars(System.String,System.Span`1[ushort]):int (Tier1)
12 (6.67 % of base) : 590882.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetMetadataReference(Microsoft.CodeAnalysis.Symbols.IAssemblySymbolInternal):Microsoft.CodeAnalysis.MetadataReference:this (Tier1)
32 (6.45 % of base) : 214303.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 327416.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 502279.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 126156.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 232456.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 277351.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 227408.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 431000.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 623948.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
32 (6.45 % of base) : 628083.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
Top method improvements (percentages):
-764 (-31.62 % of base) : 155714.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ParseAdditionalSources(Microsoft.CodeAnalysis.ISourceGenerator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSyntaxTree]:this (Tier1)
-44 (-18.64 % of base) : 95926.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
-44 (-18.64 % of base) : 96020.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-18.33 % of base) : 97874.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-18.33 % of base) : 98655.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-18.33 % of base) : 97305.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-18.33 % of base) : 97319.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-17.19 % of base) : 97324.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-17.19 % of base) : 97308.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-32 (-15.69 % of base) : 96320.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-32 (-15.69 % of base) : 96081.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-32 (-15.69 % of base) : 96167.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):long (FullOpts)
-32 (-15.69 % of base) : 96087.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):long (FullOpts)
-32 (-15.69 % of base) : 96075.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
-32 (-15.69 % of base) : 97039.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-32 (-15.69 % of base) : 96163.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
-32 (-15.69 % of base) : 96174.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ulong (FullOpts)
-32 (-15.69 % of base) : 96154.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-32 (-15.69 % of base) : 98106.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-32 (-15.38 % of base) : 96099.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):float (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 168998868 (overridden on cmd)
Total bytes of diff: 168977636 (overridden on cmd)
Total bytes of delta: -21232 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
184 : 294165.dasm (4.22 % of base)
128 : 43300.dasm (1.67 % of base)
128 : 48947.dasm (1.67 % of base)
100 : 43429.dasm (3.22 % of base)
88 : 158438.dasm (4.89 % of base)
64 : 43328.dasm (1.55 % of base)
64 : 48975.dasm (1.58 % of base)
52 : 4591.dasm (0.16 % of base)
48 : 180911.dasm (0.90 % of base)
44 : 121647.dasm (1.59 % of base)
44 : 158446.dasm (2.18 % of base)
44 : 278027.dasm (0.70 % of base)
44 : 291333.dasm (2.17 % of base)
44 : 5202.dasm (2.29 % of base)
40 : 156201.dasm (2.87 % of base)
40 : 186374.dasm (2.06 % of base)
40 : 314317.dasm (2.48 % of base)
36 : 3911.dasm (0.61 % of base)
36 : 3991.dasm (1.04 % of base)
36 : 51900.dasm (1.50 % of base)
Top file improvements (bytes):
-192 : 180909.dasm (-1.16 % of base)
-156 : 171969.dasm (-8.23 % of base)
-156 : 172165.dasm (-8.21 % of base)
-116 : 207135.dasm (-3.15 % of base)
-116 : 44914.dasm (-1.98 % of base)
-88 : 183492.dasm (-2.21 % of base)
-80 : 25180.dasm (-2.48 % of base)
-76 : 59825.dasm (-0.26 % of base)
-72 : 6735.dasm (-1.47 % of base)
-72 : 126484.dasm (-2.32 % of base)
-72 : 178003.dasm (-3.31 % of base)
-68 : 297766.dasm (-1.30 % of base)
-64 : 297919.dasm (-1.60 % of base)
-56 : 118397.dasm (-8.24 % of base)
-56 : 178047.dasm (-3.52 % of base)
-52 : 228938.dasm (-4.19 % of base)
-48 : 178641.dasm (-3.49 % of base)
-48 : 190113.dasm (-4.11 % of base)
-48 : 190146.dasm (-4.36 % of base)
-48 : 190205.dasm (-4.11 % of base)
76 total files with Code Size differences (40 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
184 (4.22 % of base) : 294165.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
128 (1.67 % of base) : 43300.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
128 (1.67 % of base) : 48947.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
100 (3.22 % of base) : 43429.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
88 (4.89 % of base) : 158438.dasm - System.Net.NetworkInformation.SystemIPGlobalProperties:GetAllTcpConnections():System.Collections.Generic.List`1[System.Net.NetworkInformation.SystemTcpConnectionInformation] (FullOpts)
64 (1.55 % of base) : 43328.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
64 (1.58 % of base) : 48975.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
52 (0.16 % of base) : 4591.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
48 (0.90 % of base) : 180911.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestInvalid(System.String[],System.String,System.String[]):int:this (FullOpts)
44 (1.59 % of base) : 121647.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectoryAsync_File_Tests+<LinkBeforeTargetAsync>d__13:MoveNext():this (FullOpts)
44 (2.18 % of base) : 158446.dasm - System.Net.NetworkInformation.SystemIPGlobalProperties:GetActiveUdpListeners():System.Net.IPEndPoint[]:this (FullOpts)
44 (2.29 % of base) : 5202.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
44 (2.17 % of base) : 291333.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29383_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
44 (0.70 % of base) : 278027.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:EmitIndexOfAnyCustomHelper(System.String,System.Collections.Generic.Dictionary`2[System.String,System.String[]],ubyte):System.String (FullOpts)
40 (2.06 % of base) : 186374.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
40 (2.87 % of base) : 156201.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
40 (2.48 % of base) : 314317.dasm - System.Web.HttpUtility+HttpQSCollection:ToString():System.String:this (FullOpts)
36 (1.04 % of base) : 3991.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 3911.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
36 (1.50 % of base) : 51900.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
Top method improvements (bytes):
-192 (-1.16 % of base) : 180909.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestValid(System.Object[],System.Object[],System.String,System.String[]):int:this (FullOpts)
-156 (-8.23 % of base) : 171969.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1:Write2_wrapper(System.Object[]):this (FullOpts)
-156 (-8.21 % of base) : 172165.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithArrayPropertyHavingChoice:Write3_Item(System.String,System.String,SerializationTypes.TypeWithArrayPropertyHavingChoice,ubyte,ubyte):this (FullOpts)
-116 (-1.98 % of base) : 44914.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
-116 (-3.15 % of base) : 207135.dasm - System.Runtime.Serialization.SchemaExporter:ExportGenericInfo(System.Type,System.String,System.String):System.Xml.XmlElement:this (FullOpts)
-88 (-2.21 % of base) : 183492.dasm - System.Xml.XmlWriterApiTests.TCFullEndElement+TCWriteValue+TCWriteState:InvokeMethod(System.Xml.XmlWriter,System.String):this (FullOpts)
-80 (-2.48 % of base) : 25180.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
-76 (-0.26 % of base) : 59825.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-72 (-1.47 % of base) : 6735.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDefaultArgumentsAndParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],byref,byref,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
-72 (-2.32 % of base) : 126484.dasm - System.IO.Compression.Tests.ZipFile_Extract:Windows_ZipWithInvalidFileNames():this (FullOpts)
-72 (-3.31 % of base) : 178003.dasm - System.Xml.XmlSchemaValidatorApiTests.TCXmlSchemaValidatorMisc:CreateSchema2(System.String) (FullOpts)
-68 (-1.30 % of base) : 297766.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31505_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-64 (-1.60 % of base) : 297919.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31776_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-56 (-8.24 % of base) : 118397.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-56 (-3.52 % of base) : 178047.dasm - System.Xml.XmlSchemaValidatorApiTests.TCXmlSchemaValidatorMisc:CreateSchema1(System.String) (FullOpts)
-52 (-4.19 % of base) : 228938.dasm - Internal.Cryptography.Helpers:AreSamePublicECParameters(System.Security.Cryptography.ECParameters,System.Security.Cryptography.ECParameters):ubyte (FullOpts)
-48 (-4.11 % of base) : 190113.dasm - System.Reflection.Tests.ModuleTests:ModuleGetTypesReturnsNewObjectEachType() (FullOpts)
-48 (-4.11 % of base) : 190205.dasm - System.Reflection.Tests.ModuleTests:MultiModule_AssemblyDefinedTypes_ReturnsDifferentObjectEachType() (FullOpts)
-48 (-4.36 % of base) : 190146.dasm - System.Reflection.Tests.ModuleTests:MultiModule_AssemblyGetTypes() (FullOpts)
-48 (-3.49 % of base) : 178641.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_ProhibitDTD:v15():this (FullOpts)
Top method regressions (percentages):
28 (11.48 % of base) : 71176.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
28 (11.48 % of base) : 69734.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
8 (6.67 % of base) : 129992.dasm - System.IO.Hashing.XxHash32:GetCurrentHashAsUInt32():uint:this (FullOpts)
8 (6.45 % of base) : 129984.dasm - System.IO.Hashing.XxHash64:GetCurrentHashAsUInt64():ulong:this (FullOpts)
20 (5.49 % of base) : 38770.dasm - Microsoft.Extensions.Diagnostics.Metrics.ListenerSubscription:IsMoreSpecific(Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,ubyte):ubyte (FullOpts)
20 (5.49 % of base) : 38865.dasm - Microsoft.Extensions.Diagnostics.Metrics.ListenerSubscription:IsMoreSpecific(Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,Microsoft.Extensions.Diagnostics.Metrics.InstrumentRule,ubyte):ubyte (FullOpts)
8 (5.41 % of base) : 22843.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
8 (5.41 % of base) : 22284.dasm - System.Security.Cryptography.CryptoPool:Return(ubyte[],int) (FullOpts)
8 (5.41 % of base) : 227911.dasm - System.Security.Cryptography.CryptoPool:Return(ubyte[],int) (FullOpts)
88 (4.89 % of base) : 158438.dasm - System.Net.NetworkInformation.SystemIPGlobalProperties:GetAllTcpConnections():System.Collections.Generic.List`1[System.Net.NetworkInformation.SystemTcpConnectionInformation] (FullOpts)
8 (4.65 % of base) : 42857.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
184 (4.22 % of base) : 294165.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
20 (4.00 % of base) : 100105.dasm - System.Diagnostics.PerformanceData.PerfProviderCollection:QueryProvider(System.Guid):System.Diagnostics.PerformanceData.PerfProvider (FullOpts)
8 (4.00 % of base) : 47686.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
4 (3.57 % of base) : 18709.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
8 (3.45 % of base) : 31378.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
100 (3.22 % of base) : 43429.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
12 (2.97 % of base) : 58182.dasm - Microsoft.VisualBasic.FileIO.Tests.FileSystemTests:CombinePathTest_BaseDirectory_RelativePath():this (FullOpts)
8 (2.90 % of base) : 104733.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms12b.prms12b.Parent,System.Object):System.Object (FullOpts)
40 (2.87 % of base) : 156201.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
Top method improvements (percentages):
-44 (-18.33 % of base) : 104861.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-44 (-18.03 % of base) : 104657.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-32 (-15.69 % of base) : 104539.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):double (FullOpts)
-32 (-15.69 % of base) : 104535.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):float (FullOpts)
-32 (-15.69 % of base) : 25371.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
-32 (-15.69 % of base) : 104531.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):long (FullOpts)
-32 (-15.09 % of base) : 104525.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-32 (-15.09 % of base) : 104612.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
-32 (-14.29 % of base) : 104794.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ManagedTests.DynamicCSharp.Conformance.dynamic.overloadResolution.Operators.Oneclass2operates.conversion.onedynamicparam001.onedynamicparam001.Target (FullOpts)
-32 (-14.29 % of base) : 104544.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Decimal (FullOpts)
-32 (-14.29 % of base) : 104495.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-36 (-13.64 % of base) : 105810.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,double):System.Object (FullOpts)
-36 (-13.64 % of base) : 105541.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,float):System.Object (FullOpts)
-36 (-13.43 % of base) : 105811.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,float):System.Object (FullOpts)
-28 (-12.73 % of base) : 26447.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
-28 (-12.73 % of base) : 26515.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-32 (-12.70 % of base) : 105077.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 113778.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 27350.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-28 (-12.50 % of base) : 27355.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15891292 (overridden on cmd)
Total bytes of diff: 15891100 (overridden on cmd)
Total bytes of delta: -192 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
68 : 31118.dasm (0.61 % of base)
52 : 15169.dasm (0.16 % of base)
44 : 11101.dasm (2.29 % of base)
36 : 15635.dasm (1.04 % of base)
36 : 15595.dasm (0.61 % of base)
32 : 1841.dasm (2.12 % of base)
28 : 15620.dasm (1.41 % of base)
28 : 20531.dasm (0.60 % of base)
24 : 23655.dasm (0.71 % of base)
24 : 24872.dasm (0.91 % of base)
24 : 26716.dasm (0.45 % of base)
24 : 8386.dasm (0.26 % of base)
20 : 29362.dasm (2.33 % of base)
16 : 23364.dasm (0.39 % of base)
16 : 26764.dasm (0.18 % of base)
16 : 27300.dasm (0.45 % of base)
16 : 5669.dasm (1.66 % of base)
16 : 13557.dasm (1.56 % of base)
16 : 13724.dasm (0.18 % of base)
16 : 21578.dasm (1.19 % of base)
Top file improvements (bytes):
-80 : 8952.dasm (-0.75 % of base)
-56 : 2318.dasm (-7.41 % of base)
-36 : 14038.dasm (-0.91 % of base)
-32 : 17639.dasm (-5.84 % of base)
-32 : 18830.dasm (-0.57 % of base)
-32 : 13331.dasm (-2.42 % of base)
-32 : 13530.dasm (-2.65 % of base)
-28 : 14387.dasm (-0.51 % of base)
-20 : 2449.dasm (-1.67 % of base)
-16 : 29513.dasm (-2.35 % of base)
-16 : 1666.dasm (-4.04 % of base)
-16 : 3156.dasm (-0.27 % of base)
-16 : 13264.dasm (-1.69 % of base)
-16 : 30738.dasm (-0.11 % of base)
-16 : 31028.dasm (-1.24 % of base)
-16 : 29572.dasm (-5.26 % of base)
-12 : 10965.dasm (-5.17 % of base)
-12 : 2776.dasm (-2.54 % of base)
-12 : 2859.dasm (-3.26 % of base)
-12 : 12877.dasm (-0.21 % of base)
67 total files with Code Size differences (32 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
68 (0.61 % of base) : 31118.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
52 (0.16 % of base) : 15169.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
44 (2.29 % of base) : 11101.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
36 (1.04 % of base) : 15635.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
36 (0.61 % of base) : 15595.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
32 (2.12 % of base) : 1841.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
28 (0.60 % of base) : 20531.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__checkConstraintLanguageVersionAndRuntimeSupportForConversion|210_2(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
28 (1.41 % of base) : 15620.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort (FullOpts)
24 (0.26 % of base) : 8386.dasm - FSharp.Compiler.TypedTreeOps:mkExprAddrOfExprAux(FSharp.Compiler.TcGlobals+TcGlobals,ubyte,ubyte,FSharp.Compiler.TypedTreeOps+Mutates,FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ValRef],FSharp.Compiler.Text.Range):System.Tuple`4[Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+Val,FSharp.Compiler.TypedTree+Expr]],FSharp.Compiler.TypedTree+Expr,ubyte,ubyte] (FullOpts)
24 (0.71 % of base) : 23655.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetEnumeratorInfoCore(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,byref,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):int:this (FullOpts)
24 (0.91 % of base) : 24872.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryBindIndexOrRangeImplicitIndexer(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):ubyte:this (FullOpts)
24 (0.45 % of base) : 26716.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitLockStatement(Microsoft.CodeAnalysis.CSharp.BoundLockStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
20 (2.33 % of base) : 29362.dasm - System.Management.Automation.MutableTuple:MakeTupleType(System.Type[],int,int):System.Type (FullOpts)
16 (1.66 % of base) : 5669.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
16 (0.39 % of base) : 23364.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertToArrayIndex(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
16 (1.19 % of base) : 21578.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetParamArrayArgument(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],System.Collections.Immutable.ImmutableArray`1[System.String],int,int,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.TypedConstant (FullOpts)
16 (0.45 % of base) : 27300.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitStringSwitchJumpTable(System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.ConstantValue,System.Object][],Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,Microsoft.CodeAnalysis.CodeGen.LocalOrParameter,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
16 (0.18 % of base) : 26764.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitReadonlySpanAsBlobWrapper(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
16 (1.56 % of base) : 13557.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
16 (0.18 % of base) : 13724.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
Top method improvements (bytes):
-80 (-0.75 % of base) : 8952.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-56 (-7.41 % of base) : 2318.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-36 (-0.91 % of base) : 14038.dasm - System.Net.HttpWebRequest+<SendRequest>d__196:MoveNext():this (FullOpts)
-32 (-5.84 % of base) : 17639.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-32 (-0.57 % of base) : 18830.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-32 (-2.65 % of base) : 13530.dasm - Microsoft.ML.Data.BufferBuilder`1[float]:GetResult(byref):this (FullOpts)
-32 (-2.42 % of base) : 13331.dasm - Microsoft.ML.Data.TextLoader+VectorPipe`1+VectorValue[float]:Get(byref):this (FullOpts)
-28 (-0.51 % of base) : 14387.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
-20 (-1.67 % of base) : 2449.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
-16 (-0.27 % of base) : 3156.dasm - FSharp.Compiler.CompilerImports:TcConfig.TryResolveLibsUsingMSBuildRules.Static(FSharp.Compiler.CompilerConfig+TcConfig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+AssemblyReference],FSharp.Compiler.Text.Range,FSharp.Compiler.CompilerImports+ResolveAssemblyReferenceMode):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerImports+AssemblyResolution],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+UnresolvedAssemblyReference]] (FullOpts)
-16 (-1.69 % of base) : 13264.dasm - Microsoft.ML.Data.VBuffer`1[double]:Copy(double[],int,byref,int) (FullOpts)
-16 (-2.35 % of base) : 29513.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-16 (-1.24 % of base) : 31028.dasm - System.Linq.Expressions.Expression:ValidateTryAndCatchHaveSameType(System.Type,System.Linq.Expressions.Expression,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.CatchBlock]) (FullOpts)
-16 (-5.26 % of base) : 29572.dasm - System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
-16 (-0.11 % of base) : 30738.dasm - System.Management.Automation.Language.Tokenizer:NextToken():System.Management.Automation.Language.Token:this (FullOpts)
-16 (-4.04 % of base) : 1666.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-12 (-0.64 % of base) : 5333.dasm - FSharp.Compiler.LexFilter:|TyparsCloseOp|_|$cont@519(Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[ubyte,FSharp.Compiler.Parser+token][],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Parser+token]]] (FullOpts)
-12 (-5.17 % of base) : 10965.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
-12 (-0.91 % of base) : 18653.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AnalyzeArguments(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.ArgumentAnalysisResult (FullOpts)
-12 (-0.21 % of base) : 12877.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
Top method regressions (percentages):
8 (5.41 % of base) : 16993.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
8 (4.00 % of base) : 28325.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(ulong,int,int,byref):int (FullOpts)
4 (3.57 % of base) : 25307.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
8 (3.45 % of base) : 22713.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
8 (2.74 % of base) : 2399.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
4 (2.63 % of base) : 21230.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:ContainsDroppedIdentifierCharacters(System.String):ubyte (FullOpts)
4 (2.56 % of base) : 32838.dasm - System.Dynamic.GetMemberBinder:Bind(System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[]):System.Dynamic.DynamicMetaObject:this (FullOpts)
20 (2.33 % of base) : 29362.dasm - System.Management.Automation.MutableTuple:MakeTupleType(System.Type[],int,int):System.Type (FullOpts)
44 (2.29 % of base) : 11101.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
4 (2.22 % of base) : 14338.dasm - System.Net.IPEndPoint:.ctor(System.Net.IPAddress,int):this (FullOpts)
8 (2.13 % of base) : 21969.dasm - Microsoft.CodeAnalysis.Compilation:CommonBindScriptClass():Microsoft.CodeAnalysis.INamedTypeSymbol:this (FullOpts)
32 (2.12 % of base) : 1841.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
4 (2.00 % of base) : 22171.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:HasInitializer(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (FullOpts)
12 (1.92 % of base) : 13281.dasm - System.Collections.Immutable.ImmutableExtensions:ToArray[double](System.Collections.Generic.IEnumerable`1[double],int):double[] (FullOpts)
12 (1.91 % of base) : 13594.dasm - Microsoft.ML.Trainers.LbfgsTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainModelCore(Microsoft.ML.TrainContext):System.__Canon:this (FullOpts)
4 (1.89 % of base) : 31756.dasm - System.Management.Automation.Language.Compiler:ShouldSetExecutionStatusToSuccess(System.Management.Automation.Language.AssignmentStatementAst):ubyte:this (FullOpts)
4 (1.75 % of base) : 27872.dasm - Microsoft.Cci.MetadataWriter:GetDefiningUnitReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IUnitReference (FullOpts)
16 (1.66 % of base) : 5669.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
4 (1.61 % of base) : 18786.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetNullableAnalysisValue():System.Nullable`1[ubyte]:this (FullOpts)
16 (1.56 % of base) : 13557.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
Top method improvements (percentages):
-56 (-7.41 % of base) : 2318.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-32 (-5.84 % of base) : 17639.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-16 (-5.26 % of base) : 29572.dasm - System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
-12 (-5.17 % of base) : 10965.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
-4 (-4.76 % of base) : 408.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):ubyte (FullOpts)
-16 (-4.04 % of base) : 1666.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-12 (-3.26 % of base) : 2859.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
-4 (-3.23 % of base) : 20454.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
-4 (-2.86 % of base) : 31841.dasm - System.Management.Automation.WildcardPattern:ContainsWildcardCharacters(System.String):ubyte (FullOpts)
-8 (-2.78 % of base) : 2037.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-32 (-2.65 % of base) : 13530.dasm - Microsoft.ML.Data.BufferBuilder`1[float]:GetResult(byref):this (FullOpts)
-12 (-2.54 % of base) : 2776.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
-32 (-2.42 % of base) : 13331.dasm - Microsoft.ML.Data.TextLoader+VectorPipe`1+VectorValue[float]:Get(byref):this (FullOpts)
-16 (-2.35 % of base) : 29513.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-4 (-2.33 % of base) : 28551.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEmbeddedAttributeSymbolBase:GetMembers(System.String):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
-4 (-2.27 % of base) : 32669.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:AddPrefixToCommandName(System.String,System.String):System.String (FullOpts)
-4 (-2.17 % of base) : 394.dasm - System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-2.13 % of base) : 12744.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
-4 (-2.13 % of base) : 4538.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
-4 (-2.13 % of base) : 29533.dasm - System.Management.Automation.ExecutionContext:TryGetFromAssemblyCache(System.String,System.String,byref):ubyte:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3972452 (overridden on cmd)
Total bytes of diff: 3972372 (overridden on cmd)
Total bytes of delta: -80 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
64 : 3341.dasm (5.59 % of base)
64 : 392.dasm (5.78 % of base)
28 : 11383.dasm (0.32 % of base)
12 : 1380.dasm (3.06 % of base)
12 : 14817.dasm (0.68 % of base)
12 : 2029.dasm (0.70 % of base)
12 : 4987.dasm (3.06 % of base)
12 : 5249.dasm (0.70 % of base)
8 : 8293.dasm (2.47 % of base)
8 : 11918.dasm (2.82 % of base)
8 : 13969.dasm (2.47 % of base)
8 : 6751.dasm (2.82 % of base)
8 : 13955.dasm (0.93 % of base)
8 : 8265.dasm (0.85 % of base)
4 : 8352.dasm (0.83 % of base)
4 : 9903.dasm (2.50 % of base)
4 : 12848.dasm (1.18 % of base)
4 : 14035.dasm (3.85 % of base)
4 : 17301.dasm (1.52 % of base)
4 : 23196.dasm (2.38 % of base)
Top file improvements (bytes):
-16 : 11675.dasm (-0.92 % of base)
-12 : 4918.dasm (-3.12 % of base)
-12 : 5970.dasm (-7.14 % of base)
-12 : 11164.dasm (-7.14 % of base)
-12 : 1441.dasm (-3.12 % of base)
-8 : 11428.dasm (-0.76 % of base)
-8 : 11747.dasm (-7.69 % of base)
-8 : 7876.dasm (-5.41 % of base)
-8 : 9941.dasm (-0.95 % of base)
-8 : 14328.dasm (-2.22 % of base)
-8 : 1552.dasm (-2.94 % of base)
-8 : 2353.dasm (-5.41 % of base)
-8 : 23708.dasm (-0.95 % of base)
-8 : 3836.dasm (-2.94 % of base)
-8 : 8617.dasm (-0.36 % of base)
-8 : 8631.dasm (-2.22 % of base)
-8 : 14311.dasm (-0.37 % of base)
-8 : 6362.dasm (-7.69 % of base)
-4 : 7890.dasm (-2.22 % of base)
-4 : 12074.dasm (-2.27 % of base)
58 total files with Code Size differences (30 improved, 28 regressed), 20 unchanged.
Top method regressions (bytes):
64 (5.59 % of base) : 3341.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
64 (5.78 % of base) : 392.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
28 (0.32 % of base) : 11383.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
12 (0.68 % of base) : 14817.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
12 (0.70 % of base) : 2029.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
12 (0.70 % of base) : 5249.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
12 (3.06 % of base) : 1380.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
12 (3.06 % of base) : 4987.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
8 (2.47 % of base) : 8293.dasm - Internal.Runtime.TypeLoader.MetadataNameExtensions:GetContainingModuleName(Internal.Metadata.NativeFormat.TypeDefinitionHandle,Internal.Metadata.NativeFormat.MetadataReader):System.String (FullOpts)
8 (2.47 % of base) : 13969.dasm - Internal.Runtime.TypeLoader.MetadataNameExtensions:GetContainingModuleName(Internal.Metadata.NativeFormat.TypeDefinitionHandle,Internal.Metadata.NativeFormat.MetadataReader):System.String (FullOpts)
8 (0.93 % of base) : 13955.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
8 (0.85 % of base) : 8265.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
8 (2.82 % of base) : 11918.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
8 (2.82 % of base) : 6751.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
4 (2.50 % of base) : 9903.dasm - Generics+TestGenericInlining:Run() (FullOpts)
4 (2.50 % of base) : 23665.dasm - Generics+TestGenericInlining:Run() (FullOpts)
4 (0.40 % of base) : 11484.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetVirtualResolveData(Internal.Runtime.TypeLoader.NativeFormatModuleInfo,System.RuntimeTypeHandle,System.RuntimeTypeHandle[],byref,byref):ubyte (FullOpts)
4 (1.18 % of base) : 12848.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:.ctor(Internal.TypeSystem.TypeSystemContext,System.RuntimeTypeHandle,int,System.ReadOnlySpan`1[ubyte],int):this (FullOpts)
4 (1.18 % of base) : 7265.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:.ctor(Internal.TypeSystem.TypeSystemContext,System.RuntimeTypeHandle,int,System.ReadOnlySpan`1[ubyte],int):this (FullOpts)
4 (0.83 % of base) : 8352.dasm - Internal.Win32.RegistryKey:GetValueNames():System.String[]:this (FullOpts)
Top method improvements (bytes):
-16 (-0.92 % of base) : 11675.dasm - System.Linq.Expressions.Expression:Switch(System.Type,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.SwitchCase]):System.Linq.Expressions.SwitchExpression (FullOpts)
-12 (-7.14 % of base) : 5970.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
-12 (-7.14 % of base) : 11164.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
-12 (-3.12 % of base) : 4918.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-12 (-3.12 % of base) : 1441.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-8 (-0.95 % of base) : 9941.dasm - Interfaces:TestArrayInterfaces():int (FullOpts)
-8 (-0.95 % of base) : 23708.dasm - Interfaces:TestArrayInterfaces():int (FullOpts)
-8 (-5.41 % of base) : 7876.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-8 (-5.41 % of base) : 2353.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-8 (-7.69 % of base) : 11747.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-8 (-7.69 % of base) : 6362.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-8 (-0.76 % of base) : 11428.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileMemberInit(System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.MemberBinding]):this (FullOpts)
-8 (-2.22 % of base) : 14328.dasm - System.Reflection.AssemblyNameParser:ParseProcessorArchitecture(System.String):int:this (FullOpts)
-8 (-2.22 % of base) : 8631.dasm - System.Reflection.AssemblyNameParser:ParseProcessorArchitecture(System.String):int:this (FullOpts)
-8 (-2.94 % of base) : 1552.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-8 (-2.94 % of base) : 3836.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-8 (-0.36 % of base) : 8617.dasm - System.TimeZoneInfo:TryCreateAdjustmentRules(System.String,byref,byref,byref,int):ubyte (FullOpts)
-8 (-0.37 % of base) : 14311.dasm - System.TimeZoneInfo:TryCreateAdjustmentRules(System.String,byref,byref,byref,int):ubyte (FullOpts)
-4 (-2.94 % of base) : 12829.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
-4 (-2.56 % of base) : 7286.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
Top method regressions (percentages):
64 (5.78 % of base) : 392.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
64 (5.59 % of base) : 3341.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
4 (3.85 % of base) : 14035.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
4 (3.23 % of base) : 8590.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
12 (3.06 % of base) : 1380.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
12 (3.06 % of base) : 4987.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
8 (2.82 % of base) : 11918.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
8 (2.82 % of base) : 6751.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
4 (2.50 % of base) : 9903.dasm - Generics+TestGenericInlining:Run() (FullOpts)
4 (2.50 % of base) : 23665.dasm - Generics+TestGenericInlining:Run() (FullOpts)
8 (2.47 % of base) : 8293.dasm - Internal.Runtime.TypeLoader.MetadataNameExtensions:GetContainingModuleName(Internal.Metadata.NativeFormat.TypeDefinitionHandle,Internal.Metadata.NativeFormat.MetadataReader):System.String (FullOpts)
8 (2.47 % of base) : 13969.dasm - Internal.Runtime.TypeLoader.MetadataNameExtensions:GetContainingModuleName(Internal.Metadata.NativeFormat.TypeDefinitionHandle,Internal.Metadata.NativeFormat.MetadataReader):System.String (FullOpts)
4 (2.38 % of base) : 23196.dasm - ReflectionTest+TestMethodConsistency:Run() (FullOpts)
4 (2.38 % of base) : 23326.dasm - ReflectionTest+TestMethodConsistency:Run() (FullOpts)
4 (1.52 % of base) : 17301.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
4 (1.35 % of base) : 3446.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (FullOpts)
4 (1.18 % of base) : 12848.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:.ctor(Internal.TypeSystem.TypeSystemContext,System.RuntimeTypeHandle,int,System.ReadOnlySpan`1[ubyte],int):this (FullOpts)
4 (1.18 % of base) : 7265.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:.ctor(Internal.TypeSystem.TypeSystemContext,System.RuntimeTypeHandle,int,System.ReadOnlySpan`1[ubyte],int):this (FullOpts)
8 (0.93 % of base) : 13955.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
8 (0.85 % of base) : 8265.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
Top method improvements (percentages):
-8 (-7.69 % of base) : 11747.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-8 (-7.69 % of base) : 6362.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
-12 (-7.14 % of base) : 5970.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
-12 (-7.14 % of base) : 11164.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
-8 (-5.41 % of base) : 7876.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-8 (-5.41 % of base) : 2353.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
-4 (-4.76 % of base) : 13351.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):ubyte (FullOpts)
-4 (-4.76 % of base) : 8079.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):ubyte (FullOpts)
-12 (-3.12 % of base) : 4918.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-12 (-3.12 % of base) : 1441.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-4 (-2.94 % of base) : 12829.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
-8 (-2.94 % of base) : 1552.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-8 (-2.94 % of base) : 3836.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-4 (-2.56 % of base) : 7286.dasm - Internal.TypeSystem.NoMetadata.NoMetadataType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
-4 (-2.33 % of base) : 23211.dasm - ReflectionTest+TestAttributeInheritance:Run() (FullOpts)
-4 (-2.33 % of base) : 23341.dasm - ReflectionTest+TestAttributeInheritance:Run() (FullOpts)
-4 (-2.33 % of base) : 13179.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
-4 (-2.27 % of base) : 12074.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-4 (-2.22 % of base) : 9825.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-4 (-2.22 % of base) : 7890.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
Diffs are based on 2,492,951 contexts (983,689 MinOpts, 1,509,262 FullOpts).
MISSED contexts: base: 3,859 (0.15%), diff: 3,860 (0.15%)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 41,763,246 | -11,556 |
benchmarks.run.windows.x64.checked.mch | 8,749,663 | +2,072 |
benchmarks.run_pgo.windows.x64.checked.mch | 34,741,684 | -7,152 |
benchmarks.run_tiered.windows.x64.checked.mch | 12,662,284 | +203 |
coreclr_tests.run.windows.x64.checked.mch | 392,866,349 | -60,805 |
libraries.crossgen2.windows.x64.checked.mch | 39,442,575 | -1,101 |
libraries.pmi.windows.x64.checked.mch | 61,196,926 | -3,050 |
libraries_tests.run.windows.x64.Release.mch | 279,034,285 | -53,914 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 133,435,993 | -11,707 |
realworld.run.windows.x64.checked.mch | 14,170,685 | -3,315 |
smoke_tests.nativeaot.windows.x64.checked.mch | 5,091,660 | +111 |
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 27,104,521 | -11,556 |
benchmarks.run.windows.x64.checked.mch | 8,749,302 | +2,072 |
benchmarks.run_pgo.windows.x64.checked.mch | 20,506,707 | -7,152 |
benchmarks.run_tiered.windows.x64.checked.mch | 3,477,018 | +203 |
coreclr_tests.run.windows.x64.checked.mch | 119,323,357 | -60,805 |
libraries.crossgen2.windows.x64.checked.mch | 39,441,386 | -1,101 |
libraries.pmi.windows.x64.checked.mch | 61,083,407 | -3,050 |
libraries_tests.run.windows.x64.Release.mch | 100,665,969 | -53,914 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 123,012,623 | -11,707 |
realworld.run.windows.x64.checked.mch | 13,780,980 | -3,315 |
smoke_tests.nativeaot.windows.x64.checked.mch | 5,090,751 | +111 |
@@ -9,7 +9,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5.00) ref -> rcx class-hnd single-def <Npgsql.NpgsqlBatchCommand>
+; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rcx class-hnd single-def <Npgsql.NpgsqlBatchCommand>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V03 tmp2 [V03,T01] ( 3, 6 ) ref -> rax class-hnd single-def "dup spill" <System.Collections.Generic.List`1[Npgsql.NpgsqlParameter]>
@@ -42,15 +42,10 @@ G_M9795_IG03: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byre
;; size=9 bbWeight=1 PerfScore 3.25
G_M9795_IG04: ; bbWeight=1.00, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rax+0x10], 0
- jle SHORT G_M9795_IG05
- call [Npgsql.NpgsqlBatchCommand:get_PositionalParameters():System.Collections.Generic.List`1[Npgsql.NpgsqlParameter]:this]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- cmp dword ptr [rax+0x10], 0xFFFF
- jg SHORT G_M9795_IG07
- ;; size=21 bbWeight=1.00 PerfScore 11.00
+ jg SHORT G_M9795_IG06
+ ;; size=6 bbWeight=1.00 PerfScore 4.00
G_M9795_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rax]
+ ; gcrRegs -[rax rcx]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
@@ -61,13 +56,9 @@ G_M9795_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {r
; gcr arg pop 0
cmp dword ptr [rax+0x10], 0xFFFF
jle SHORT G_M9795_IG05
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M9795_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
mov ecx, 0x48A7
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
@@ -75,9 +66,9 @@ G_M9795_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rcx]
; gcr arg pop 0
int3
- ;; size=30 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
-; Total bytes of code 99, prolog size 4, PerfScore 23.00, instruction count 25, allocated bytes for code 99 (MethodHash=b1ddd9bc) for method Npgsql.NpgsqlCommand:<ProcessRawQuery>g__ValidateParameterCount|98_0(Npgsql.NpgsqlBatchCommand) (Tier1)
+; Total bytes of code 84, prolog size 4, PerfScore 16.00, instruction count 22, allocated bytes for code 84 (MethodHash=b1ddd9bc) for method Npgsql.NpgsqlCommand:<ProcessRawQuery>g__ValidateParameterCount|98_0(Npgsql.NpgsqlBatchCommand) (Tier1)
; ============================================================
Unwind Info:
@@ -9,7 +9,7 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5.00) ref -> rcx class-hnd single-def <Npgsql.NpgsqlBatchCommand>
+; V00 arg0 [V00,T00] ( 5, 4 ) ref -> rcx class-hnd single-def <Npgsql.NpgsqlBatchCommand>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V03 tmp2 [V03,T01] ( 3, 6 ) ref -> rax class-hnd single-def "dup spill" <System.Collections.Generic.List`1[Npgsql.NpgsqlParameter]>
@@ -42,15 +42,10 @@ G_M9795_IG03: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byre
;; size=9 bbWeight=1 PerfScore 3.25
G_M9795_IG04: ; bbWeight=1.00, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rax+0x10], 0
- jle SHORT G_M9795_IG05
- call [Npgsql.NpgsqlBatchCommand:get_PositionalParameters():System.Collections.Generic.List`1[Npgsql.NpgsqlParameter]:this]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- cmp dword ptr [rax+0x10], 0xFFFF
- jg SHORT G_M9795_IG07
- ;; size=21 bbWeight=1.00 PerfScore 11.00
+ jg SHORT G_M9795_IG06
+ ;; size=6 bbWeight=1.00 PerfScore 4.00
G_M9795_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rax]
+ ; gcrRegs -[rax rcx]
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
@@ -61,13 +56,9 @@ G_M9795_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {r
; gcr arg pop 0
cmp dword ptr [rax+0x10], 0xFFFF
jle SHORT G_M9795_IG05
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M9795_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
mov ecx, 0x48A7
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
@@ -75,9 +66,9 @@ G_M9795_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rcx]
; gcr arg pop 0
int3
- ;; size=30 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
-; Total bytes of code 99, prolog size 4, PerfScore 23.00, instruction count 25, allocated bytes for code 99 (MethodHash=b1ddd9bc) for method Npgsql.NpgsqlCommand:<ProcessRawQuery>g__ValidateParameterCount|98_0(Npgsql.NpgsqlBatchCommand) (Tier1)
+; Total bytes of code 84, prolog size 4, PerfScore 16.00, instruction count 22, allocated bytes for code 84 (MethodHash=b1ddd9bc) for method Npgsql.NpgsqlCommand:<ProcessRawQuery>g__ValidateParameterCount|98_0(Npgsql.NpgsqlBatchCommand) (Tier1)
; ============================================================
Unwind Info:
@@ -23,12 +23,12 @@
; V11 tmp8 [V11,T07] ( 2, 4 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp11 [V14,T11] ( 3, 2 ) ubyte -> rdi "Inline return value spill temp"
+; V14 tmp11 [V14,T11] ( 3, 2 ) ubyte -> rsi "Inline return value spill temp"
; V15 tmp12 [V15,T03] ( 3, 6 ) int -> rax "Inlining Arg"
; V16 tmp13 [V16,T09] ( 2, 4 ) int -> rcx "impSpillLclRefs"
; V17 tmp14 [V17,T00] ( 12, 18.84) int -> rax "Inline stloc first use temp"
;* V18 tmp15 [V18 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V19 tmp16 [V19,T05] ( 3, 4 ) int -> rdi "Single return block return value"
+; V19 tmp16 [V19,T05] ( 3, 4 ) int -> rsi "Single return block return value"
;* V20 tmp17 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref single-def "field V04._length (fldOffset=0x8)" P-INDEP
; V22 tmp19 [V22,T12] ( 2, 2 ) byref -> rcx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
@@ -43,102 +43,55 @@
;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
; V32 cse0 [V32,T02] ( 9, 10.02) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M1447_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
push rsi
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=10 bbWeight=1 PerfScore 3.50
+ ;; size=9 bbWeight=1 PerfScore 2.50
G_M1447_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je SHORT G_M1447_IG04
+ je SHORT G_M1447_IG10
;; size=5 bbWeight=1 PerfScore 1.25
G_M1447_IG03: ; bbWeight=0.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [rbx+0x08]
test esi, esi
- jne SHORT G_M1447_IG06
+ je SHORT G_M1447_IG10
;; size=7 bbWeight=0.99 PerfScore 3.22
-G_M1447_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov eax, 1
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M1447_IG05: ; bbWeight=0, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
- ret
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M1447_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
+G_M1447_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
movzx r8, word ptr [rbx+0x0C]
cmp r8d, 91
- jne SHORT G_M1447_IG16
+ jne SHORT G_M1447_IG06
;; size=11 bbWeight=1 PerfScore 3.25
-G_M1447_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- jmp G_M1447_IG22
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M1447_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp esi, eax
- jle SHORT G_M1447_IG13
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M1447_IG09: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- test eax, eax
- jl G_M1447_IG20
- ;; size=8 bbWeight=0.80 PerfScore 1.00
-G_M1447_IG10: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov ecx, eax
- movzx rcx, word ptr [rbx+2*rcx+0x0C]
- add ecx, -48
- cmp ecx, 10
- jb SHORT G_M1447_IG12
- ;; size=15 bbWeight=3.96 PerfScore 14.85
-G_M1447_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- xor edi, edi
- jmp SHORT G_M1447_IG14
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M1447_IG12: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
- inc eax
- cmp esi, eax
- jg SHORT G_M1447_IG10
- ;; size=6 bbWeight=3.96 PerfScore 5.94
-G_M1447_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov edi, 1
- ;; size=5 bbWeight=1 PerfScore 0.25
-G_M1447_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rax, dil
- ;; size=4 bbWeight=1 PerfScore 0.25
-G_M1447_IG15: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
- ret
- ;; size=8 bbWeight=1 PerfScore 2.75
-G_M1447_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M1447_IG05: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ mov rax, 0xD1FFAB1E ; code for Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.HttpUtilities:IsIPv6HostValid(System.String):ubyte
+ call [rax]Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.HttpUtilities:IsIPv6HostValid(System.String):ubyte
+ ; gcrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ mov esi, eax
+ jmp G_M1447_IG19
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M1447_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
cmp r8d, 58
- jne SHORT G_M1447_IG19
+ jne SHORT G_M1447_IG09
;; size=6 bbWeight=1 PerfScore 1.25
-G_M1447_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M1447_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
-G_M1447_IG18: ; bbWeight=0, epilog, nogc, extend
- add rsp, 32
+G_M1447_IG08: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M1447_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M1447_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
lea rcx, bword ptr [rbx+0x0C]
; byrRegs +[rcx]
@@ -154,49 +107,91 @@ G_M1447_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {r
; byrRegs -[rcx r8]
; gcr arg pop 0
test eax, eax
- jl G_M1447_IG04
+ jge SHORT G_M1447_IG12
+ ;; size=39 bbWeight=1 PerfScore 7.75
+G_M1447_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ mov eax, 1
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M1447_IG11: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rsi
+ ret
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M1447_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx]
cmp eax, esi
jae SHORT G_M1447_IG21
mov ecx, eax
movzx rcx, word ptr [rbx+2*rcx+0x0C]
inc eax
cmp ecx, 58
- jne SHORT G_M1447_IG11
+ je SHORT G_M1447_IG14
+ ;; size=18 bbWeight=1 PerfScore 5.00
+G_M1447_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx]
+ xor esi, esi
+ jmp SHORT G_M1447_IG19
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M1447_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx]
cmp esi, eax
- jne G_M1447_IG08
- jmp SHORT G_M1447_IG11
- ;; size=71 bbWeight=1 PerfScore 16.00
-G_M1447_IG20: ; bbWeight=0.04, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M1447_IG13
+ jmp SHORT G_M1447_IG22
+ ;; size=6 bbWeight=1 PerfScore 3.25
+G_M1447_IG15: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ test eax, eax
+ jl SHORT G_M1447_IG17
+ ;; size=4 bbWeight=0.80 PerfScore 1.00
+G_M1447_IG16: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ecx, eax
+ movzx rcx, word ptr [rbx+2*rcx+0x0C]
+ add ecx, -48
+ cmp ecx, 10
+ jae SHORT G_M1447_IG13
+ inc eax
+ cmp esi, eax
+ jg SHORT G_M1447_IG16
+ jmp SHORT G_M1447_IG18
+ ;; size=23 bbWeight=3.96 PerfScore 28.71
+G_M1447_IG17: ; bbWeight=0.04, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp eax, esi
jae SHORT G_M1447_IG21
mov ecx, eax
movzx rcx, word ptr [rbx+2*rcx+0x0C]
add ecx, -48
cmp ecx, 10
- jae G_M1447_IG11
+ jae SHORT G_M1447_IG13
inc eax
cmp esi, eax
- jg SHORT G_M1447_IG20
- jmp G_M1447_IG13
- ;; size=34 bbWeight=0.04 PerfScore 0.34
-G_M1447_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jg SHORT G_M1447_IG17
+ ;; size=25 bbWeight=0.04 PerfScore 0.26
+G_M1447_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
+ mov esi, 1
+ ;; size=5 bbWeight=1 PerfScore 0.25
+G_M1447_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movzx rax, sil
+ ;; size=4 bbWeight=1 PerfScore 0.25
+G_M1447_IG20: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rsi
+ ret
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M1447_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M1447_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M1447_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov rax, 0xD1FFAB1E ; code for Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.HttpUtilities:IsIPv6HostValid(System.String):ubyte
- call [rax]Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.HttpUtilities:IsIPv6HostValid(System.String):ubyte
- ; gcrRegs -[rcx rbx]
- ; gcr arg pop 0
- mov edi, eax
- jmp G_M1447_IG14
- ;; size=22 bbWeight=0 PerfScore 0.00
+ cmp esi, eax
+ jle SHORT G_M1447_IG18
+ jmp SHORT G_M1447_IG15
+ ;; size=6 bbWeight=1 PerfScore 3.25
...
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 53912
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 53912
; 4 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
@@ -25,7 +25,7 @@
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlyMemory`1[ubyte]>
; V14 tmp8 [V14 ] ( 8, 4 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.Threading.Tasks.ValueTask>
;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V16 tmp10 [V16,T09] ( 3, 2 ) int -> r13 "Inline stloc first use temp"
+; V16 tmp10 [V16,T09] ( 4, 2 ) int -> r13 "Inline stloc first use temp"
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.ValueTask>
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask>
;* V19 tmp13 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -53,7 +53,7 @@
; V41 tmp35 [V41,T15] ( 2, 0 ) short -> rax "field V18._token (fldOffset=0x8)" P-INDEP
;* V42 tmp36 [V42,T16] ( 0, 0 ) ubyte -> zero-ref "field V18._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlyMemory`1[ubyte]>
-; V44 tmp38 [V44,T06] ( 6, 3 ) ref -> rcx "Field obj"
+; V44 tmp38 [V44,T06] ( 6, 3.00) ref -> rcx "Field obj"
; V45 tmp39 [V45,T13] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 48
@@ -80,15 +80,11 @@ G_M30990_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r14, gword ptr [rsp+0x90]
; gcrRegs +[r14]
;; size=44 bbWeight=1 PerfScore 11.50
-G_M30990_IG02: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref, isz
+G_M30990_IG02: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
test r14, r14
- je SHORT G_M30990_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M30990_IG03: ; bbWeight=0.02, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
- cmp dword ptr [r14+0x20], 0
- jne G_M30990_IG18
- ;; size=11 bbWeight=0.02 PerfScore 0.07
-G_M30990_IG04: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref, isz
+ jne G_M30990_IG11
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M30990_IG03: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
cmp byte ptr [rdi], dil
lea rcx, bword ptr [rdi+0x38]
; byrRegs +[rcx]
@@ -98,27 +94,11 @@ G_M30990_IG04: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rb
; gcrRegs +[r15]
xchg gword ptr [rcx], r15
test r15, r15
- jne SHORT G_M30990_IG06
- ;; size=20 bbWeight=1 PerfScore 25.25
-G_M30990_IG05: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
- ; gcrRegs -[rdx r15]
+ je G_M30990_IG16
+ ;; size=24 bbWeight=1 PerfScore 25.25
+G_M30990_IG04: ; bbWeight=1, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0048 {rbx rsi}, byref, isz
+ ; gcrRegs -[rdx]
; byrRegs -[rcx]
- mov rcx, 0xD1FFAB1E ; System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs
- call CORINFO_HELP_NEWFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- mov rcx, r15
- ; gcrRegs +[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- xor r8d, r8d
- call [System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:.ctor(System.Net.Sockets.Socket,ubyte):this]
- ; gcrRegs -[rax rcx rdx]
- ; gcr arg pop 0
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M30990_IG06: ; bbWeight=1, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0048 {rbx rsi}, byref, isz
mov rcx, r15
; gcrRegs +[rcx]
mov rdx, rsi
@@ -140,38 +120,13 @@ G_M30990_IG06: ; bbWeight=1, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0048
; gcrRegs -[rcx rdx rdi r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M30990_IG08
- ;; size=48 bbWeight=1 PerfScore 13.50
-G_M30990_IG07: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
- lea rcx, bword ptr [r15+0x180]
- ; byrRegs +[rcx]
- mov rdx, r14
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx r14]
- ; byrRegs -[rcx]
- movsx rax, word ptr [r15+0x178]
- mov gword ptr [rsp+0x20], r15
- mov word ptr [rsp+0x28], ax
- mov byte ptr [rsp+0x2A], 1
- jmp G_M30990_IG16
- ;; size=43 bbWeight=0 PerfScore 0.00
-G_M30990_IG08: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+ jne G_M30990_IG18
mov r13d, dword ptr [r15+0xE8]
cmp byte ptr [r15+0x150], 0
- jne SHORT G_M30990_IG10
- ;; size=17 bbWeight=1 PerfScore 6.00
-G_M30990_IG09: ; bbWeight=0.28, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, gword ptr [r15+0x148]
- ; gcrRegs +[rcx]
- cmp byte ptr [rcx], cl
- add rcx, 56
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- jmp SHORT G_M30990_IG11
- ;; size=15 bbWeight=0.28 PerfScore 2.06
-G_M30990_IG10: ; bbWeight=0.72, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[rcx]
+ je SHORT G_M30990_IG10
+ ;; size=69 bbWeight=1 PerfScore 19.50
+G_M30990_IG05: ; bbWeight=0.72, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[r14]
mov rcx, gword ptr [r15+0x148]
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
@@ -179,9 +134,9 @@ G_M30990_IG10: ; bbWeight=0.72, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
; gcrRegs -[rcx]
; byrRegs +[rcx]
;; size=13 bbWeight=0.72 PerfScore 3.76
-G_M30990_IG11: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=000A {rcx rbx}, byref, isz
+G_M30990_IG06: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=000A {rcx rbx}, byref
test rcx, rcx
- je G_M30990_IG20
+ je G_M30990_IG17
mov rdx, r15
; gcrRegs +[rdx]
xor r8, r8
@@ -191,41 +146,16 @@ G_M30990_IG11: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=000A {rcx rb
; byrRegs -[rcx]
; gcr arg pop 0
test rax, rax
- je SHORT G_M30990_IG13
- ;; size=25 bbWeight=1 PerfScore 4.00
-G_M30990_IG12: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rax]
- mov rcx, r15
- ; gcrRegs +[rcx]
- call [System.Net.Sockets.SocketAsyncEventArgs:Dispose():this]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M30990_IG13: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+ jne G_M30990_IG14
test r13d, r13d
- je SHORT G_M30990_IG15
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M30990_IG14: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, r15
- ; gcrRegs +[rcx]
- mov edx, r13d
- mov r8d, 1
- call [System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:CreateException(int,ubyte):System.Exception:this]
- ; gcrRegs -[rcx r15] +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- lea rcx, [rsp+0x20]
- call [System.Threading.Tasks.ValueTask:FromException(System.Exception):System.Threading.Tasks.ValueTask]
- ; gcrRegs -[rax rdx]
- ; gcr arg pop 0
- jmp SHORT G_M30990_IG16
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M30990_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ jne G_M30990_IG15
+ ;; size=38 bbWeight=1 PerfScore 5.25
+G_M30990_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rax r15]
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rsp+0x20], xmm0
;; size=10 bbWeight=1 PerfScore 1.33
-G_M30990_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M30990_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rsp+0x20]
; gcrRegs +[rdx]
mov rcx, rbx
@@ -240,7 +170,7 @@ G_M30990_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
mov rax, rbx
; byrRegs +[rax]
;; size=34 bbWeight=1 PerfScore 8.50
-G_M30990_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M30990_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -251,9 +181,26 @@ G_M30990_IG17: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=15 bbWeight=1 PerfScore 4.75
-G_M30990_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs +[r14]
+G_M30990_IG10: ; bbWeight=0.28, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ; gcrRegs +[r15]
; byrRegs -[rax]
+ mov rcx, gword ptr [r15+0x148]
+ ; gcrRegs +[rcx]
+ cmp byte ptr [rcx], cl
+ add rcx, 56
+ ; gcrRegs -[rcx]
+ ; byrRegs +[rcx]
+ jmp SHORT G_M30990_IG06
+ ;; size=15 bbWeight=0.28 PerfScore 2.06
+G_M30990_IG11: ; bbWeight=0.02, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
+ ; gcrRegs -[r15] +[rdi r14]
+ ; byrRegs -[rcx] +[rsi]
+ cmp dword ptr [r14+0x20], 0
+ je G_M30990_IG03
+ ;; size=11 bbWeight=0.02 PerfScore 0.07
+G_M30990_IG12: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rsi]
mov rcx, rbx
; byrRegs +[rcx]
mov rdx, r14
@@ -265,7 +212,7 @@ G_M30990_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {
mov rax, rbx
; byrRegs +[rax]
;; size=15 bbWeight=0 PerfScore 0.00
-G_M30990_IG19: ; bbWeight=0, epilog, nogc, extend
+G_M30990_IG13: ; bbWeight=0, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -276,14 +223,77 @@ G_M30990_IG19: ; bbWeight=0, epilog, nogc, extend
pop r15
ret
;; size=15 bbWeight=0 PerfScore 0.00
-G_M30990_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rax rbx]
+G_M30990_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs +[r15]
+ ; byrRegs -[rax]
+ mov rcx, r15
+ ; gcrRegs +[rcx]
+ call [System.Net.Sockets.SocketAsyncEventArgs:Dispose():this]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test r13d, r13d
+ je G_M30990_IG07
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M30990_IG15: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
+ mov rcx, r15
+ ; gcrRegs +[rcx]
...
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 55544
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 55544
; 4 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
@@ -25,12 +25,12 @@
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlyMemory`1[ubyte]>
; V14 tmp8 [V14 ] ( 8, 4 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.Threading.Tasks.ValueTask>
;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V16 tmp10 [V16,T09] ( 3, 2 ) int -> r13 "Inline stloc first use temp"
+; V16 tmp10 [V16,T09] ( 4, 2 ) int -> r13 "Inline stloc first use temp"
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.ValueTask>
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask>
;* V19 tmp13 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V20 tmp14 [V20,T14] ( 2, 0 ) short -> rax "Inlining Arg"
-; V21 tmp15 [V21,T07] ( 4, 3.00) byref -> rcx
+; V21 tmp15 [V21,T07] ( 4, 3 ) byref -> rcx
;* V22 tmp16 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "Inline stloc first use temp"
;* V23 tmp17 [V23 ] ( 0, 0 ) ref -> zero-ref "field V02._object (fldOffset=0x0)" P-INDEP
;* V24 tmp18 [V24 ] ( 0, 0 ) int -> zero-ref "field V02._index (fldOffset=0x8)" P-INDEP
@@ -53,7 +53,7 @@
; V41 tmp35 [V41,T15] ( 2, 0 ) short -> rax "field V18._token (fldOffset=0x8)" P-INDEP
;* V42 tmp36 [V42,T16] ( 0, 0 ) ubyte -> zero-ref "field V18._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlyMemory`1[ubyte]>
-; V44 tmp38 [V44,T06] ( 6, 3 ) ref -> rcx "Field obj"
+; V44 tmp38 [V44,T06] ( 6, 3.00) ref -> rcx "Field obj"
; V45 tmp39 [V45,T13] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 48
@@ -80,15 +80,11 @@ G_M30990_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r14, gword ptr [rsp+0x90]
; gcrRegs +[r14]
;; size=44 bbWeight=1 PerfScore 11.50
-G_M30990_IG02: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref, isz
+G_M30990_IG02: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
test r14, r14
- je SHORT G_M30990_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M30990_IG03: ; bbWeight=0.02, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
- cmp dword ptr [r14+0x20], 0
- jne G_M30990_IG18
- ;; size=11 bbWeight=0.02 PerfScore 0.07
-G_M30990_IG04: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref, isz
+ jne G_M30990_IG12
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M30990_IG03: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
cmp byte ptr [rdi], dil
lea rcx, bword ptr [rdi+0x38]
; byrRegs +[rcx]
@@ -98,27 +94,11 @@ G_M30990_IG04: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rb
; gcrRegs +[r15]
xchg gword ptr [rcx], r15
test r15, r15
- jne SHORT G_M30990_IG06
- ;; size=20 bbWeight=1 PerfScore 25.25
-G_M30990_IG05: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
- ; gcrRegs -[rdx r15]
+ je G_M30990_IG17
+ ;; size=24 bbWeight=1 PerfScore 25.25
+G_M30990_IG04: ; bbWeight=1, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0048 {rbx rsi}, byref, isz
+ ; gcrRegs -[rdx]
; byrRegs -[rcx]
- mov rcx, 0xD1FFAB1E ; System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs
- call CORINFO_HELP_NEWFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- mov rcx, r15
- ; gcrRegs +[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- xor r8d, r8d
- call [System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:.ctor(System.Net.Sockets.Socket,ubyte):this]
- ; gcrRegs -[rax rcx rdx]
- ; gcr arg pop 0
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M30990_IG06: ; bbWeight=1, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0048 {rbx rsi}, byref, isz
mov rcx, r15
; gcrRegs +[rcx]
mov rdx, rsi
@@ -140,38 +120,13 @@ G_M30990_IG06: ; bbWeight=1, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0048
; gcrRegs -[rcx rdx rdi r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M30990_IG08
- ;; size=48 bbWeight=1 PerfScore 13.50
-G_M30990_IG07: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
- lea rcx, bword ptr [r15+0x180]
- ; byrRegs +[rcx]
- mov rdx, r14
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx r14]
- ; byrRegs -[rcx]
- movsx rax, word ptr [r15+0x178]
- mov gword ptr [rsp+0x20], r15
- mov word ptr [rsp+0x28], ax
- mov byte ptr [rsp+0x2A], 1
- jmp G_M30990_IG16
- ;; size=43 bbWeight=0 PerfScore 0.00
-G_M30990_IG08: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+ jne G_M30990_IG19
mov r13d, dword ptr [r15+0xE8]
cmp byte ptr [r15+0x150], 0
- jne SHORT G_M30990_IG10
- ;; size=17 bbWeight=1 PerfScore 6.00
-G_M30990_IG09: ; bbWeight=0.28, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, gword ptr [r15+0x148]
- ; gcrRegs +[rcx]
- cmp byte ptr [rcx], cl
- add rcx, 56
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- jmp SHORT G_M30990_IG11
- ;; size=15 bbWeight=0.28 PerfScore 2.04
-G_M30990_IG10: ; bbWeight=0.72, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[rcx]
+ je SHORT G_M30990_IG11
+ ;; size=69 bbWeight=1 PerfScore 19.50
+G_M30990_IG05: ; bbWeight=0.72, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[r14]
mov rcx, gword ptr [r15+0x148]
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
@@ -179,9 +134,9 @@ G_M30990_IG10: ; bbWeight=0.72, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
; gcrRegs -[rcx]
; byrRegs +[rcx]
;; size=13 bbWeight=0.72 PerfScore 3.77
-G_M30990_IG11: ; bbWeight=1.00, gcrefRegs=8000 {r15}, byrefRegs=000A {rcx rbx}, byref, isz
+G_M30990_IG06: ; bbWeight=1.00, gcrefRegs=8000 {r15}, byrefRegs=000A {rcx rbx}, byref
test rcx, rcx
- je G_M30990_IG20
+ je G_M30990_IG18
mov rdx, r15
; gcrRegs +[rdx]
xor r8, r8
@@ -191,41 +146,19 @@ G_M30990_IG11: ; bbWeight=1.00, gcrefRegs=8000 {r15}, byrefRegs=000A {rcx
; byrRegs -[rcx]
; gcr arg pop 0
test rax, rax
- je SHORT G_M30990_IG13
- ;; size=25 bbWeight=1.00 PerfScore 4.00
-G_M30990_IG12: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
+ jne G_M30990_IG15
+ ;; size=29 bbWeight=1.00 PerfScore 4.00
+G_M30990_IG07: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
- mov rcx, r15
- ; gcrRegs +[rcx]
- call [System.Net.Sockets.SocketAsyncEventArgs:Dispose():this]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M30990_IG13: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
test r13d, r13d
- je SHORT G_M30990_IG15
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M30990_IG14: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, r15
- ; gcrRegs +[rcx]
- mov edx, r13d
- mov r8d, 1
- call [System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:CreateException(int,ubyte):System.Exception:this]
- ; gcrRegs -[rcx r15] +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- lea rcx, [rsp+0x20]
- call [System.Threading.Tasks.ValueTask:FromException(System.Exception):System.Threading.Tasks.ValueTask]
- ; gcrRegs -[rax rdx]
- ; gcr arg pop 0
- jmp SHORT G_M30990_IG16
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M30990_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ jne G_M30990_IG16
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M30990_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[r15]
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rsp+0x20], xmm0
;; size=10 bbWeight=1 PerfScore 1.33
-G_M30990_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M30990_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rsp+0x20]
; gcrRegs +[rdx]
mov rcx, rbx
@@ -240,7 +173,7 @@ G_M30990_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
mov rax, rbx
; byrRegs +[rax]
;; size=34 bbWeight=1 PerfScore 8.50
-G_M30990_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M30990_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -251,9 +184,26 @@ G_M30990_IG17: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=15 bbWeight=1 PerfScore 4.75
-G_M30990_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs +[r14]
+G_M30990_IG11: ; bbWeight=0.28, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ; gcrRegs +[r15]
; byrRegs -[rax]
+ mov rcx, gword ptr [r15+0x148]
+ ; gcrRegs +[rcx]
+ cmp byte ptr [rcx], cl
+ add rcx, 56
+ ; gcrRegs -[rcx]
+ ; byrRegs +[rcx]
+ jmp SHORT G_M30990_IG06
+ ;; size=15 bbWeight=0.28 PerfScore 2.04
+G_M30990_IG12: ; bbWeight=0.02, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
+ ; gcrRegs -[r15] +[rdi r14]
+ ; byrRegs -[rcx] +[rsi]
+ cmp dword ptr [r14+0x20], 0
+ je G_M30990_IG03
+ ;; size=11 bbWeight=0.02 PerfScore 0.07
+G_M30990_IG13: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rsi]
mov rcx, rbx
; byrRegs +[rcx]
mov rdx, r14
@@ -265,7 +215,7 @@ G_M30990_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {
mov rax, rbx
; byrRegs +[rax]
;; size=15 bbWeight=0 PerfScore 0.00
-G_M30990_IG19: ; bbWeight=0, epilog, nogc, extend
+G_M30990_IG14: ; bbWeight=0, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -276,14 +226,77 @@ G_M30990_IG19: ; bbWeight=0, epilog, nogc, extend
pop r15
ret
;; size=15 bbWeight=0 PerfScore 0.00
-G_M30990_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rax rbx]
+G_M30990_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs +[r15]
+ ; byrRegs -[rax]
+ mov rcx, r15
+ ; gcrRegs +[rcx]
+ call [System.Net.Sockets.SocketAsyncEventArgs:Dispose():this]
...
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 61952
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 61952
; 4 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
@@ -25,7 +25,7 @@
;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlyMemory`1[ubyte]>
; V14 tmp8 [V14 ] ( 8, 4.00) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.Threading.Tasks.ValueTask>
;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V16 tmp10 [V16,T09] ( 3, 2 ) int -> r13 "Inline stloc first use temp"
+; V16 tmp10 [V16,T09] ( 4, 2 ) int -> r13 "Inline stloc first use temp"
;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.ValueTask>
;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask>
;* V19 tmp13 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -53,7 +53,7 @@
; V41 tmp35 [V41,T15] ( 2, 0 ) short -> rax "field V18._token (fldOffset=0x8)" P-INDEP
;* V42 tmp36 [V42,T16] ( 0, 0 ) ubyte -> zero-ref "field V18._continueOnCapturedContext (fldOffset=0xa)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlyMemory`1[ubyte]>
-; V44 tmp38 [V44,T06] ( 6, 3.00) ref -> rcx "Field obj"
+; V44 tmp38 [V44,T06] ( 6, 3 ) ref -> rcx "Field obj"
; V45 tmp39 [V45,T13] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 48
@@ -80,15 +80,11 @@ G_M30990_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r14, gword ptr [rsp+0x90]
; gcrRegs +[r14]
;; size=44 bbWeight=1 PerfScore 11.50
-G_M30990_IG02: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref, isz
+G_M30990_IG02: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
test r14, r14
- je SHORT G_M30990_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M30990_IG03: ; bbWeight=0.02, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
- cmp dword ptr [r14+0x20], 0
- jne G_M30990_IG18
- ;; size=11 bbWeight=0.02 PerfScore 0.07
-G_M30990_IG04: ; bbWeight=1.00, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref, isz
+ jne G_M30990_IG12
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M30990_IG03: ; bbWeight=1.00, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
cmp byte ptr [rdi], dil
lea rcx, bword ptr [rdi+0x38]
; byrRegs +[rcx]
@@ -98,27 +94,11 @@ G_M30990_IG04: ; bbWeight=1.00, gcrefRegs=4080 {rdi r14}, byrefRegs=0048
; gcrRegs +[r15]
xchg gword ptr [rcx], r15
test r15, r15
- jne SHORT G_M30990_IG06
- ;; size=20 bbWeight=1.00 PerfScore 25.25
-G_M30990_IG05: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
- ; gcrRegs -[rdx r15]
+ je G_M30990_IG17
+ ;; size=24 bbWeight=1.00 PerfScore 25.25
+G_M30990_IG04: ; bbWeight=1.00, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0048 {rbx rsi}, byref
+ ; gcrRegs -[rdx]
; byrRegs -[rcx]
- mov rcx, 0xD1FFAB1E ; System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs
- call CORINFO_HELP_NEWFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- mov rcx, r15
- ; gcrRegs +[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- xor r8d, r8d
- call [System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:.ctor(System.Net.Sockets.Socket,ubyte):this]
- ; gcrRegs -[rax rcx rdx]
- ; gcr arg pop 0
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M30990_IG06: ; bbWeight=1.00, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0048 {rbx rsi}, byref, isz
mov rcx, r15
; gcrRegs +[rcx]
mov rdx, rsi
@@ -140,38 +120,15 @@ G_M30990_IG06: ; bbWeight=1.00, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0
; gcrRegs -[rcx rdx rdi r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M30990_IG08
- ;; size=48 bbWeight=1.00 PerfScore 13.50
-G_M30990_IG07: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
- lea rcx, bword ptr [r15+0x180]
- ; byrRegs +[rcx]
- mov rdx, r14
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx r14]
- ; byrRegs -[rcx]
- movsx rax, word ptr [r15+0x178]
- mov gword ptr [rsp+0x20], r15
- mov word ptr [rsp+0x28], ax
- mov byte ptr [rsp+0x2A], 1
- jmp G_M30990_IG16
- ;; size=43 bbWeight=0 PerfScore 0.00
-G_M30990_IG08: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+ jne G_M30990_IG19
+ ;; size=52 bbWeight=1.00 PerfScore 13.50
+G_M30990_IG05: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[r14]
mov r13d, dword ptr [r15+0xE8]
cmp byte ptr [r15+0x150], 0
- jne SHORT G_M30990_IG10
+ je SHORT G_M30990_IG11
;; size=17 bbWeight=1 PerfScore 6.00
-G_M30990_IG09: ; bbWeight=0.31, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, gword ptr [r15+0x148]
- ; gcrRegs +[rcx]
- cmp byte ptr [rcx], cl
- add rcx, 56
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- jmp SHORT G_M30990_IG11
- ;; size=15 bbWeight=0.31 PerfScore 2.23
-G_M30990_IG10: ; bbWeight=0.69, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[rcx]
+G_M30990_IG06: ; bbWeight=0.69, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
mov rcx, gword ptr [r15+0x148]
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
@@ -179,9 +136,9 @@ G_M30990_IG10: ; bbWeight=0.69, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx
; gcrRegs -[rcx]
; byrRegs +[rcx]
;; size=13 bbWeight=0.69 PerfScore 3.64
-G_M30990_IG11: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=000A {rcx rbx}, byref, isz
+G_M30990_IG07: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=000A {rcx rbx}, byref
test rcx, rcx
- je G_M30990_IG20
+ je G_M30990_IG18
mov rdx, r15
; gcrRegs +[rdx]
xor r8, r8
@@ -191,41 +148,16 @@ G_M30990_IG11: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=000A {rcx rb
; byrRegs -[rcx]
; gcr arg pop 0
test rax, rax
- je SHORT G_M30990_IG13
- ;; size=25 bbWeight=1 PerfScore 4.00
-G_M30990_IG12: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rax]
- mov rcx, r15
- ; gcrRegs +[rcx]
- call [System.Net.Sockets.SocketAsyncEventArgs:Dispose():this]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M30990_IG13: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+ jne G_M30990_IG15
test r13d, r13d
- je SHORT G_M30990_IG15
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M30990_IG14: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, r15
- ; gcrRegs +[rcx]
- mov edx, r13d
- mov r8d, 1
- call [System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:CreateException(int,ubyte):System.Exception:this]
- ; gcrRegs -[rcx r15] +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- lea rcx, [rsp+0x20]
- call [System.Threading.Tasks.ValueTask:FromException(System.Exception):System.Threading.Tasks.ValueTask]
- ; gcrRegs -[rax rdx]
- ; gcr arg pop 0
- jmp SHORT G_M30990_IG16
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M30990_IG15: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ jne G_M30990_IG16
+ ;; size=38 bbWeight=1 PerfScore 5.25
+G_M30990_IG08: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rax r15]
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rsp+0x20], xmm0
;; size=10 bbWeight=1.00 PerfScore 1.33
-G_M30990_IG16: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M30990_IG09: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rsp+0x20]
; gcrRegs +[rdx]
mov rcx, rbx
@@ -240,7 +172,7 @@ G_M30990_IG16: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
mov rax, rbx
; byrRegs +[rax]
;; size=34 bbWeight=1.00 PerfScore 8.50
-G_M30990_IG17: ; bbWeight=1.00, epilog, nogc, extend
+G_M30990_IG10: ; bbWeight=1.00, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -251,9 +183,26 @@ G_M30990_IG17: ; bbWeight=1.00, epilog, nogc, extend
pop r15
ret
;; size=15 bbWeight=1.00 PerfScore 4.75
-G_M30990_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs +[r14]
+G_M30990_IG11: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ; gcrRegs +[r15]
; byrRegs -[rax]
+ mov rcx, gword ptr [r15+0x148]
+ ; gcrRegs +[rcx]
+ cmp byte ptr [rcx], cl
+ add rcx, 56
+ ; gcrRegs -[rcx]
+ ; byrRegs +[rcx]
+ jmp SHORT G_M30990_IG07
+ ;; size=15 bbWeight=0.31 PerfScore 2.23
+G_M30990_IG12: ; bbWeight=0.02, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref
+ ; gcrRegs -[r15] +[rdi r14]
+ ; byrRegs -[rcx] +[rsi]
+ cmp dword ptr [r14+0x20], 0
+ je G_M30990_IG03
+ ;; size=11 bbWeight=0.02 PerfScore 0.07
+G_M30990_IG13: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rsi]
mov rcx, rbx
; byrRegs +[rcx]
mov rdx, r14
@@ -265,7 +214,7 @@ G_M30990_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4000 {
mov rax, rbx
; byrRegs +[rax]
;; size=15 bbWeight=0 PerfScore 0.00
-G_M30990_IG19: ; bbWeight=0, epilog, nogc, extend
+G_M30990_IG14: ; bbWeight=0, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -276,14 +225,77 @@ G_M30990_IG19: ; bbWeight=0, epilog, nogc, extend
pop r15
ret
;; size=15 bbWeight=0 PerfScore 0.00
-G_M30990_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rax rbx]
+G_M30990_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs +[r15]
+ ; byrRegs -[rax]
+ mov rcx, r15
+ ; gcrRegs +[rcx]
+ call [System.Net.Sockets.SocketAsyncEventArgs:Dispose():this]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test r13d, r13d
+ je G_M30990_IG08
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M30990_IG16: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
+ mov rcx, r15
...
@@ -31,10 +31,10 @@
;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V23 tmp19 [V23,T03] ( 7, 10 ) int -> r15 "Inlining Arg"
+; V23 tmp19 [V23,T03] ( 7, 10 ) int -> rdi "Inlining Arg"
; V24 tmp20 [V24,T08] ( 4, 6 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <System.String>
;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.Extensions.Primitives.StringSegment>
-; V26 tmp22 [V26,T05] ( 5, 8 ) int -> r13 "Inlining Arg"
+; V26 tmp22 [V26,T05] ( 5, 8 ) int -> rbp "Inlining Arg"
; V27 tmp23 [V27,T11] ( 2, 5 ) byref -> rbp single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V28 tmp24 [V28,T09] ( 3, 6 ) int -> r14 single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V29 tmp25 [V29,T15] ( 3, 2 ) byref -> rbp "field V07._reference (fldOffset=0x0)" P-INDEP
@@ -56,8 +56,8 @@
;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
; V47 tmp43 [V47,T18] ( 2, 2 ) ref -> rdx single-def "field V25.<Buffer>k__BackingField (fldOffset=0x0)" P-INDEP
-; V48 tmp44 [V48,T19] ( 2, 2 ) int -> r13 single-def "field V25.<Offset>k__BackingField (fldOffset=0x8)" P-INDEP
-; V49 tmp45 [V49,T20] ( 2, 2 ) int -> r15 single-def "field V25.<Length>k__BackingField (fldOffset=0xc)" P-INDEP
+; V48 tmp44 [V48,T19] ( 2, 2 ) int -> rbp single-def "field V25.<Offset>k__BackingField (fldOffset=0x8)" P-INDEP
+; V49 tmp45 [V49,T20] ( 2, 2 ) int -> rdi single-def "field V25.<Length>k__BackingField (fldOffset=0xc)" P-INDEP
; V50 cse0 [V50,T21] ( 3, 1.50) ref -> rdx "CSE - moderate"
; V51 cse1 [V51,T13] ( 3, 3 ) ref -> rcx "CSE - moderate"
; V52 cse2 [V52,T14] ( 3, 3 ) int -> rdx "CSE - moderate"
@@ -65,9 +65,7 @@
; Lcl frame size = 32
G_M7786_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14
- push r13
push rdi
push rsi
push rbp
@@ -77,7 +75,7 @@ G_M7786_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[rbx]
mov rsi, rdx
; byrRegs +[rsi]
- ;; size=20 bbWeight=1 PerfScore 7.75
+ ;; size=16 bbWeight=1 PerfScore 5.75
G_M7786_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
mov rcx, gword ptr [rbx]
; gcrRegs +[rcx]
@@ -89,7 +87,7 @@ G_M7786_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi},
G_M7786_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
; gcrRegs -[rcx]
or edx, edi
- jne G_M7786_IG15
+ jne G_M7786_IG14
xor rbp, rbp
; byrRegs +[rbp]
xor r14d, r14d
@@ -103,7 +101,7 @@ G_M7786_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0048 {rbx
add rax, r8
mov r8d, dword ptr [rcx+0x08]
cmp rax, r8
- ja G_M7786_IG15
+ ja G_M7786_IG14
mov edx, edx
lea rbp, bword ptr [rcx+2*rdx+0x0C]
; byrRegs +[rbp]
@@ -122,53 +120,51 @@ G_M7786_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp
G_M7786_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
lea edi, [r14-0x01]
test edi, edi
- jl SHORT G_M7786_IG12
+ jl SHORT G_M7786_IG11
;; size=8 bbWeight=1 PerfScore 1.75
G_M7786_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
cmp edi, r14d
- jae G_M7786_IG14
+ jae SHORT G_M7786_IG13
mov ecx, edi
movzx rcx, word ptr [rbp+2*rcx]
cmp ecx, 256
- jb SHORT G_M7786_IG10
- ;; size=24 bbWeight=4 PerfScore 19.00
+ jb SHORT G_M7786_IG09
+ ;; size=20 bbWeight=4 PerfScore 19.00
G_M7786_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
; gcr arg pop 0
test eax, eax
- je SHORT G_M7786_IG12
- ;; size=10 bbWeight=2 PerfScore 8.50
-G_M7786_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
- jmp SHORT G_M7786_IG11
- ;; size=2 bbWeight=4 PerfScore 8.00
-G_M7786_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
+ je SHORT G_M7786_IG11
+ jmp SHORT G_M7786_IG10
+ ;; size=12 bbWeight=2 PerfScore 12.50
+G_M7786_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
mov ecx, ecx
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- je SHORT G_M7786_IG12
+ je SHORT G_M7786_IG11
;; size=18 bbWeight=2 PerfScore 9.00
-G_M7786_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
+G_M7786_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
dec edi
jns SHORT G_M7786_IG07
;; size=4 bbWeight=4 PerfScore 5.00
-G_M7786_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+G_M7786_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
; byrRegs -[rbp]
- lea r15d, [rdi+0x01]
+ inc edi
mov rcx, gword ptr [rbx]
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M7786_IG16
- test r15d, r15d
- jl SHORT G_M7786_IG16
- cmp r15d, dword ptr [rbx+0x0C]
- ja SHORT G_M7786_IG16
- mov r13d, dword ptr [rbx+0x08]
+ je SHORT G_M7786_IG15
+ test edi, edi
+ jl SHORT G_M7786_IG15
+ cmp edi, dword ptr [rbx+0x0C]
+ ja SHORT G_M7786_IG15
+ mov ebp, dword ptr [rbx+0x08]
mov edx, dword ptr [rcx+0x08]
- cmp edx, r13d
- jb SHORT G_M7786_IG17
- sub edx, r13d
- cmp edx, r15d
- jb SHORT G_M7786_IG17
+ cmp edx, ebp
+ jb SHORT G_M7786_IG16
+ sub edx, ebp
+ cmp edx, edi
+ jb SHORT G_M7786_IG16
mov rdx, rcx
; gcrRegs +[rdx]
mov rcx, rsi
@@ -177,38 +173,36 @@ G_M7786_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi},
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx rbx]
- mov dword ptr [rsi+0x08], r13d
- mov dword ptr [rsi+0x0C], r15d
+ mov dword ptr [rsi+0x08], ebp
+ mov dword ptr [rsi+0x0C], edi
mov rax, rsi
; byrRegs +[rax]
- ;; size=65 bbWeight=1 PerfScore 19.50
-G_M7786_IG13: ; bbWeight=1, epilog, nogc, extend
+ ;; size=55 bbWeight=1 PerfScore 19.25
+G_M7786_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
- pop r13
pop r14
- pop r15
ret
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M7786_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M7786_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rax rsi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M7786_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7786_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 33
call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M7786_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M7786_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; byrRegs +[rbx]
mov rcx, rbx
; byrRegs +[rcx]
- mov r8d, r15d
+ mov r8d, edi
xor edx, edx
mov r9d, 1
call [Microsoft.Extensions.Primitives.StringSegment:ThrowInvalidArguments(int,int,int):this]
@@ -216,17 +210,17 @@ G_M7786_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byre
; gcr arg pop 0
int3
;; size=21 bbWeight=0 PerfScore 0.00
-G_M7786_IG17: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M7786_IG16: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
- mov edx, r13d
- mov r8d, r15d
+ mov edx, ebp
+ mov r8d, edi
call [Microsoft.Extensions.Primitives.StringSegment:ThrowInvalidArguments(System.String,int,int)]
; gcrRegs -[rcx]
; gcr arg pop 0
int3
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 300, prolog size 20, PerfScore 97.50, instruction count 97, allocated bytes for code 300 (MethodHash=4041e195) for method Microsoft.Extensions.Primitives.StringSegment:TrimEnd():Microsoft.Extensions.Primitives.StringSegment:this (FullOpts)
+; Total bytes of code 277, prolog size 16, PerfScore 90.25, instruction count 93, allocated bytes for code 277 (MethodHash=4041e195) for method Microsoft.Extensions.Primitives.StringSegment:TrimEnd():Microsoft.Extensions.Primitives.StringSegment:this (FullOpts)
; ============================================================
Unwind Info:
@@ -234,16 +228,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0E
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x0A
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
@@ -20,21 +20,21 @@
; V09 loc5 [V09,T09] ( 5, 13.50) ubyte -> [rsp+0x40]
; V10 loc6 [V10,T15] ( 3, 5 ) int -> [rsp+0x3C]
; V11 loc7 [V11 ] ( 20, 83.50) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
-; V12 loc8 [V12,T16] ( 3, 1.50) int -> rax
-; V13 loc9 [V13,T08] ( 7, 14 ) ushort -> r9
+; V12 loc8 [V12,T16] ( 3, 1.50) int -> rcx
+; V13 loc9 [V13,T08] ( 7, 14 ) ushort -> rcx
; V14 OutArgs [V14 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V15 tmp1 [V15 ] ( 0, 0 ) int -> zero-ref
; V16 tmp2 [V16,T00] ( 3, 96 ) int -> rcx "dup spill"
;* V17 tmp3 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp4 [V18 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V19 tmp5 [V19,T12] ( 3, 6 ) long -> r8 "Inline stloc first use temp"
+; V19 tmp5 [V19,T12] ( 3, 6 ) long -> rdx "Inline stloc first use temp"
;* V20 tmp6 [V20 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V21 tmp7 [V21 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V22 tmp8 [V22 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V23 tmp9 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V24 cse0 [V24,T01] ( 3, 48 ) int -> rcx "CSE - aggressive"
-; V25 cse1 [V25,T10] ( 5, 10 ) int -> r9 multi-def "CSE - aggressive"
-; V26 cse2 [V26,T17] ( 3, 1.50) int -> r8 "CSE - moderate"
+; V25 cse1 [V25,T10] ( 5, 10 ) int -> rcx multi-def "CSE - aggressive"
+; V26 cse2 [V26,T17] ( 3, 1.50) int -> rcx "CSE - moderate"
;
; Lcl frame size = 72
@@ -59,227 +59,231 @@ G_M23448_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
xor r15d, r15d
xor r13d, r13d
xor r12d, r12d
- xor eax, eax
- mov r10d, 1
- mov r11d, 1
- movsxd r8, ebp
- cmp word ptr [rsi+2*r8], 58
- jne SHORT G_M23448_IG04
- ;; size=37 bbWeight=1 PerfScore 6.00
-G_M23448_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- lea r8d, [rbp+0x01]
- cmp r8d, dword ptr [rbx]
- jge G_M23448_IG29
- movsxd r8, r8d
- cmp word ptr [rsi+2*r8], 58
- jne G_M23448_IG29
- ;; size=28 bbWeight=0.50 PerfScore 4.38
-G_M23448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov dword ptr [rsp+0x30], ebp
- mov r8d, dword ptr [rsp+0x30]
- cmp r8d, dword ptr [rbx]
- jge SHORT G_M23448_IG07
- ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M23448_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov dword ptr [rsp+0x44], eax
- test eax, eax
- jne SHORT G_M23448_IG08
- ;; size=8 bbWeight=4 PerfScore 9.00
-G_M23448_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- movsxd r8, dword ptr [rsp+0x30]
- movzx r9, word ptr [rsi+2*r8]
- lea r8d, [r9-0x30]
- mov rcx, 0xD1FFAB1E
- shlx rcx, rcx, r8
- add r8, -64
- and r8, rcx
- jge SHORT G_M23448_IG10
- jmp SHORT G_M23448_IG09
- ;; size=40 bbWeight=2 PerfScore 19.50
-G_M23448_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- mov dword ptr [rsp+0x44], eax
- mov dword ptr [rsp+0x40], r10d
- jmp G_M23448_IG23
- ;; size=14 bbWeight=0.25 PerfScore 1.00
-G_M23448_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- movsxd r9, dword ptr [rsp+0x30]
- movzx r9, word ptr [rsi+2*r9]
- lea r8d, [r9-0x30]
- cmp r8d, 9
- ja SHORT G_M23448_IG10
- ;; size=20 bbWeight=2 PerfScore 13.50
-G_M23448_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- inc r15d
- xor r10d, r10d
- mov dword ptr [rsp+0x40], r10d
- jmp G_M23448_IG22
- ;; size=16 bbWeight=2 PerfScore 7.00
-G_M23448_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- cmp r15d, 4
- jg G_M23448_IG29
- test r15d, r15d
- je SHORT G_M23448_IG11
- inc r14d
- mov r11d, dword ptr [rsp+0x30]
- sub r11d, r15d
- ;; size=26 bbWeight=2 PerfScore 8.00
-G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- cmp r9d, 46
- ja SHORT G_M23448_IG12
- cmp r9d, 37
- je SHORT G_M23448_IG14
- cmp r9d, 46
- jne G_M23448_IG29
- test r12d, r12d
- mov dword ptr [rsp+0x40], r10d
- jne G_M23448_IG29
- mov r8d, dword ptr [rbx]
- mov dword ptr [rsp+0x30], r8d
xor r8d, r8d
- mov dword ptr [rsp+0x20], r8d
- lea r8, [rsp+0x30]
- mov rcx, rsi
- mov dword ptr [rsp+0x3C], r11d
- mov edx, r11d
- mov r9d, 1
- call [<unknown method>]
- ; gcr arg pop 0
- test eax, eax
- je G_M23448_IG29
+ mov eax, 1
+ mov r10d, 1
+ movsxd rcx, ebp
+ cmp word ptr [rsi+2*rcx], 58
+ jne SHORT G_M23448_IG04
+ ;; size=36 bbWeight=1 PerfScore 6.00
+G_M23448_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ lea ecx, [rbp+0x01]
+ cmp ecx, dword ptr [rbx]
+ jge G_M23448_IG27
+ movsxd rcx, ecx
+ cmp word ptr [rsi+2*rcx], 58
+ jne G_M23448_IG27
+ ;; size=25 bbWeight=0.50 PerfScore 4.38
+G_M23448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ mov dword ptr [rsp+0x30], ebp
+ mov ecx, dword ptr [rsp+0x30]
+ cmp ecx, dword ptr [rbx]
+ jge G_M23448_IG21
+ ;; size=16 bbWeight=0.50 PerfScore 3.00
+G_M23448_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ test r8d, r8d
+ jne SHORT G_M23448_IG07
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M23448_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ movsxd rcx, dword ptr [rsp+0x30]
+ movzx rcx, word ptr [rsi+2*rcx]
+ lea edx, [rcx-0x30]
+ mov r9, 0xD1FFAB1E
+ shlx r9, r9, rdx
+ add rdx, -64
+ and rdx, r9
+ jge SHORT G_M23448_IG09
+ jmp SHORT G_M23448_IG08
+ ;; size=38 bbWeight=2 PerfScore 19.50
+G_M23448_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ movsxd rcx, dword ptr [rsp+0x30]
+ movzx rcx, word ptr [rsi+2*rcx]
+ lea edx, [rcx-0x30]
+ cmp edx, 9
+ ja SHORT G_M23448_IG09
+ ;; size=17 bbWeight=2 PerfScore 13.50
+G_M23448_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ inc r15d
+ xor eax, eax
jmp G_M23448_IG20
- ;; size=93 bbWeight=2 PerfScore 37.50
-G_M23448_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- cmp r9d, 47
- je G_M23448_IG19
- cmp r9d, 58
- je SHORT G_M23448_IG17
- cmp r9d, 93
- je SHORT G_M23448_IG16
- ;; size=22 bbWeight=2 PerfScore 7.50
-G_M23448_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rbx]
- jmp G_M23448_IG29
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M23448_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+ ;; size=10 bbWeight=2 PerfScore 5.00
+G_M23448_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp r15d, 4
+ jg G_M23448_IG27
+ test r15d, r15d
+ je SHORT G_M23448_IG10
+ inc r14d
+ mov r10d, dword ptr [rsp+0x30]
+ sub r10d, r15d
+ ;; size=26 bbWeight=2 PerfScore 8.00
+G_M23448_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ecx, 46
+ ja SHORT G_M23448_IG11
+ cmp ecx, 37
+ je SHORT G_M23448_IG12
+ cmp ecx, 46
+ jne G_M23448_IG27
+ test r12d, r12d
+ mov dword ptr [rsp+0x44], r8d
+ mov dword ptr [rsp+0x40], eax
+ jne G_M23448_IG27
+ jmp G_M23448_IG18
+ ;; size=42 bbWeight=2 PerfScore 18.00
+G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ecx, 47
+ je G_M23448_IG17
+ cmp ecx, 58
+ je SHORT G_M23448_IG15
+ cmp ecx, 93
+ je SHORT G_M23448_IG14
+ jmp G_M23448_IG23
+ ;; size=24 bbWeight=2 PerfScore 11.50
+G_M23448_IG12: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, dword ptr [rsp+0x30]
inc ecx
mov dword ptr [rsp+0x30], ecx
cmp ecx, dword ptr [rbx]
- je G_M23448_IG29
+ je G_M23448_IG27
movsxd rcx, dword ptr [rsp+0x30]
movzx rcx, word ptr [rsi+2*rcx]
cmp ecx, 93
- je SHORT G_M23448_IG16
+ je SHORT G_M23448_IG14
cmp ecx, 47
- jne SHORT G_M23448_IG14
+ jne SHORT G_M23448_IG12
;; size=37 bbWeight=16 PerfScore 220.00
-G_M23448_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M23448_IG19
+G_M23448_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M23448_IG17
;; size=2 bbWeight=2 PerfScore 4.00
-G_M23448_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M23448_IG14: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov ebp, dword ptr [rsp+0x30]
mov ecx, dword ptr [rbx]
mov dword ptr [rsp+0x30], ecx
- mov dword ptr [rsp+0x40], r10d
- jmp G_M23448_IG22
- ;; size=20 bbWeight=2 PerfScore 14.00
-G_M23448_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp G_M23448_IG20
+ ;; size=15 bbWeight=2 PerfScore 12.00
+G_M23448_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [rsp+0x30], 0
- jle SHORT G_M23448_IG18
- mov r10d, dword ptr [rsp+0x30]
- dec r10d
- movsxd rcx, r10d
+ jle SHORT G_M23448_IG16
...
@@ -75,22 +75,43 @@ G_M46385_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
G_M46385_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
mov edi, dword ptr [rbx+0x08]
test edi, edi
- je SHORT G_M46385_IG04
+ jne SHORT G_M46385_IG05
+ ;; size=7 bbWeight=0.50 PerfScore 1.62
+G_M46385_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ mov ecx, 36
+ jmp SHORT G_M46385_IG09
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M46385_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
cmp edi, 1
- jne G_M46385_IG16
+ jne G_M46385_IG17
movzx rcx, word ptr [rbx+0x0C]
or ecx, 32
cmp ecx, 100
- jg G_M46385_IG12
+ jg SHORT G_M46385_IG06
cmp ecx, 98
- je G_M46385_IG14
+ je SHORT G_M46385_IG08
cmp ecx, 100
- jne G_M46385_IG17
- ;; size=50 bbWeight=0.50 PerfScore 5.25
-G_M46385_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- mov ecx, 36
+ jne G_M46385_IG18
+ jmp SHORT G_M46385_IG04
+ ;; size=37 bbWeight=0.50 PerfScore 4.62
+G_M46385_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ cmp ecx, 110
+ je SHORT G_M46385_IG07
+ cmp ecx, 112
+ je SHORT G_M46385_IG08
+ cmp ecx, 120
+ jne G_M46385_IG18
+ mov ecx, 68
+ jmp SHORT G_M46385_IG09
+ ;; size=26 bbWeight=0.50 PerfScore 3.00
+G_M46385_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ mov ecx, 32
+ jmp SHORT G_M46385_IG09
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M46385_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ mov ecx, 38
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M46385_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+G_M46385_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
call <unknown method>
; gcrRegs +[rax]
; gcr arg pop 0
@@ -100,15 +121,25 @@ G_M46385_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
; byrRegs +[rcx]
mov edx, dword ptr [rbp+0x08]
test rbx, rbx
- jne G_M46385_IG15
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M46385_IG06: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0042 {rcx rsi}, byref
+ jne SHORT G_M46385_IG11
+ ;; size=20 bbWeight=1 PerfScore 5.00
+G_M46385_IG10: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0042 {rcx rsi}, byref, isz
; gcrRegs -[rax rbx]
xor r9, r9
; byrRegs +[r9]
xor r8d, r8d
- ;; size=6 bbWeight=0.50 PerfScore 0.25
-G_M46385_IG07: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0242 {rcx rsi r9}, byref, isz
+ jmp SHORT G_M46385_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
+G_M46385_IG11: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0042 {rcx rsi}, byref
+ ; gcrRegs +[rbx]
+ ; byrRegs -[r9]
+ lea r9, bword ptr [rbx+0x0C]
+ ; byrRegs +[r9]
+ mov edi, dword ptr [rbx+0x08]
+ mov r8d, edi
+ ;; size=10 bbWeight=0.50 PerfScore 1.38
+G_M46385_IG12: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0242 {rcx rsi r9}, byref, isz
+ ; gcrRegs -[rbx]
mov bword ptr [rsp+0x30], rcx
mov dword ptr [rsp+0x38], edx
mov bword ptr [rsp+0x20], r9
@@ -122,17 +153,17 @@ G_M46385_IG07: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0242 {rcx rs
; byrRegs -[rcx rsi]
; gcr arg pop 0
test eax, eax
- je SHORT G_M46385_IG09
+ je SHORT G_M46385_IG14
;; size=47 bbWeight=1 PerfScore 10.00
-G_M46385_IG08: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+G_M46385_IG13: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rsp+0x40]
cmp ecx, dword ptr [rbp+0x08]
sete cl
movzx rcx, cl
test cl, cl
- jne SHORT G_M46385_IG10
+ jne SHORT G_M46385_IG15
;; size=17 bbWeight=0.50 PerfScore 3.25
-G_M46385_IG09: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+G_M46385_IG14: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -141,11 +172,11 @@ G_M46385_IG09: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=26 bbWeight=0.50 PerfScore 1.75
-G_M46385_IG10: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+G_M46385_IG15: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
mov rax, rbp
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M46385_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M46385_IG16: ; bbWeight=1, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -153,49 +184,19 @@ G_M46385_IG11: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M46385_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz
- ; gcrRegs -[rax rbp] +[rbx]
- ; byrRegs +[rsi]
- cmp ecx, 110
- je SHORT G_M46385_IG13
- cmp ecx, 112
- je SHORT G_M46385_IG14
- cmp ecx, 120
- jne SHORT G_M46385_IG17
- mov ecx, 68
- jmp G_M46385_IG05
- ;; size=25 bbWeight=0.50 PerfScore 3.00
-G_M46385_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- mov ecx, 32
- jmp G_M46385_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M46385_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- mov ecx, 38
- jmp G_M46385_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M46385_IG15: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0042 {rcx rsi}, byref
- ; gcrRegs +[rbp]
- ; byrRegs +[rcx]
- lea r9, bword ptr [rbx+0x0C]
- ; byrRegs +[r9]
- mov edi, dword ptr [rbx+0x08]
- mov r8d, edi
- jmp G_M46385_IG07
- ;; size=15 bbWeight=0.50 PerfScore 2.38
-G_M46385_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rbp]
- ; byrRegs -[rcx rsi r9]
+G_M46385_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbp]
call [System.Guid:ThrowBadGuidFormatSpecification()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M46385_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46385_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Guid:ThrowBadGuidFormatSpecification()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 290, prolog size 18, PerfScore 45.08, instruction count 80, allocated bytes for code 290 (MethodHash=c08c4ace) for method System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
+; Total bytes of code 272, prolog size 18, PerfScore 46.08, instruction count 81, allocated bytes for code 272 (MethodHash=c08c4ace) for method System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -144,9 +144,9 @@ G_M38735_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=008
;; size=11 bbWeight=1 PerfScore 5.00
G_M38735_IG03: ; bbWeight=1, gcVars=0000000004000001 {V00 V02}, gcrefRegs=0082 {rcx rdi}, byrefRegs=0040 {rsi}, gcvars, byref, isz
test ebx, ebx
- je G_M38735_IG09
+ je SHORT G_M38735_IG06
cmp ebx, 1
- je G_M38735_IG20
+ je G_M38735_IG25
lea rax, bword ptr [rsi+0x28]
; byrRegs +[rax]
mov rdx, gword ptr [rax]
@@ -154,7 +154,7 @@ G_M38735_IG03: ; bbWeight=1, gcVars=0000000004000001 {V00 V02}, gcrefRegs
test rdx, rdx
je SHORT G_M38735_IG04
cmp dword ptr [rdx+0x20], 0
- jne SHORT G_M38735_IG06
+ jne G_M38735_IG20
;; size=35 bbWeight=1 PerfScore 10.25
G_M38735_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rdx rdi]
@@ -195,66 +195,21 @@ G_M38735_IG04: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0040 {rsi},
; gcrRegs +[rcx]
mov gword ptr [rsi+0x10], rcx
;; size=75 bbWeight=1 PerfScore 15.00
-G_M38735_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
+G_M38735_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx]
mov dword ptr [rsi+0x1C], ecx
mov rcx, gword ptr [rbp-0x70]
; gcrRegs +[rcx]
- jmp SHORT G_M38735_IG09
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M38735_IG06: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0041 {rax rsi}, gcvars, byref
- ; gcrRegs -[rcx rdi]
- ; byrRegs +[rax]
- ; GC ptr vars -{V02}
- mov rcx, rax
- ; byrRegs +[rcx]
- call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
- ; byrRegs -[rax rcx]
- ; gcr arg pop 0
- int3
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M38735_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs +[rbx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; System.Exception
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- test rax, rax
- jne SHORT G_M38735_IG08
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call CORINFO_HELP_THROW
- ; gcrRegs -[rax rcx rbx]
- ; gcr arg pop 0
- ;; size=31 bbWeight=0 PerfScore 0.00
-G_M38735_IG08: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0040 {rsi}, byref
- ; gcrRegs +[rax]
- mov rcx, rax
- ; gcrRegs +[rcx]
- call [System.Runtime.ExceptionServices.ExceptionDispatchInfo:Capture(System.Exception):System.Runtime.ExceptionServices.ExceptionDispatchInfo]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov rcx, rax
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx], ecx
- call [System.Runtime.ExceptionServices.ExceptionDispatchInfo:Throw():this]
- ; gcrRegs -[rax rcx]
- ; gcr arg pop 0
- int3
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M38735_IG09: ; bbWeight=1, gcVars=0000000004000001 {V00 V02}, gcrefRegs=0082 {rcx rdi}, byrefRegs=0040 {rsi}, gcvars, byref, isz
- ; gcrRegs +[rcx rdi]
- ; GC ptr vars +{V02}
+ ;; size=7 bbWeight=1 PerfScore 2.00
+G_M38735_IG06: ; bbWeight=1, gcrefRegs=0082 {rcx rdi}, byrefRegs=0040 {rsi}, byref, isz
test ebx, ebx
- je G_M38735_IG11
+ je G_M38735_IG08
mov rax, gword ptr [rcx+0x08]
; gcrRegs +[rax]
mov rbx, gword ptr [rax+0x08]
; gcrRegs +[rbx]
test rbx, rbx
- je G_M38735_IG15
+ je G_M38735_IG12
mov r14, gword ptr [rsi+0x28]
; gcrRegs +[r14]
cmp byte ptr [rbx], bl
@@ -279,13 +234,13 @@ G_M38735_IG09: ; bbWeight=1, gcVars=0000000004000001 {V00 V02}, gcrefRegs
xor ecx, ecx
mov dword ptr [rbp-0x30], ecx
test byte ptr [rbp-0x30], 4
- jne SHORT G_M38735_IG10
+ jne SHORT G_M38735_IG07
mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
test dword ptr [rcx+0x34], 0xD1FFAB1E
- jne SHORT G_M38735_IG14
+ jne SHORT G_M38735_IG11
;; size=92 bbWeight=1 PerfScore 36.00
-G_M38735_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M38735_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax rcx]
xor ecx, ecx
mov dword ptr [rsi+0x18], ecx
@@ -312,24 +267,24 @@ G_M38735_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- jmp G_M38735_IG31
+ jmp G_M38735_IG32
;; size=55 bbWeight=1 PerfScore 15.25
-G_M38735_IG11: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0040 {rsi}, byref
+G_M38735_IG08: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0040 {rsi}, byref
; gcrRegs +[rcx]
lea rdx, bword ptr [rsi+0x40]
; byrRegs +[rdx]
;; size=4 bbWeight=1 PerfScore 0.50
-G_M38735_IG12: ; bbWeight=1, nogc, extend
+G_M38735_IG09: ; bbWeight=1, nogc, extend
vmovdqu xmm0, xmmword ptr [rdx]
vmovdqu xmmword ptr [rbp-0x38], xmm0
;; size=9 bbWeight=1 PerfScore 5.00
-G_M38735_IG13: ; bbWeight=1, extend
+G_M38735_IG10: ; bbWeight=1, extend
xor eax, eax
mov qword ptr [rdx], rax
mov qword ptr [rdx+0x08], rax
mov dword ptr [rsi+0x18], -1
;; size=16 bbWeight=1 PerfScore 3.25
-G_M38735_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M38735_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[rcx]
; byrRegs -[rdx]
mov rdx, gword ptr [rbp-0x38]
@@ -338,7 +293,7 @@ G_M38735_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
mov r8d, dword ptr [rdx+0x34]
and r8d, 0xD1FFAB1E
cmp r8d, 0xD1FFAB1E
- je SHORT G_M38735_IG15
+ je SHORT G_M38735_IG12
mov rcx, rdx
; gcrRegs +[rcx]
mov edx, eax
@@ -348,7 +303,7 @@ G_M38735_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
; gcr arg pop 0
nop
;; size=39 bbWeight=1 PerfScore 9.25
-G_M38735_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M38735_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
mov rsi, bword ptr [rbp+0x10]
; byrRegs +[rsi]
@@ -372,7 +327,7 @@ G_M38735_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rdi]
; byrRegs -[rdi]
test rdi, rdi
- je SHORT G_M38735_IG16
+ je G_M38735_IG21
mov rdx, rdi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task
@@ -381,7 +336,7 @@ G_M38735_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M38735_IG16
+ jne G_M38735_IG21
mov rdx, rdi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -391,18 +346,141 @@ G_M38735_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
xor ecx, ecx
test rax, rax
setne cl
- jmp SHORT G_M38735_IG17
- ;; size=112 bbWeight=1 PerfScore 26.25
-G_M38735_IG16: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+ ;; size=118 bbWeight=1 PerfScore 24.25
+G_M38735_IG13: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax]
- mov ecx, 1
- ;; size=5 bbWeight=1 PerfScore 0.25
-G_M38735_IG17: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
movzx rcx, cl
call [System.Diagnostics.Debug:Assert(ubyte)]
; gcr arg pop 0
test rdi, rdi
- je G_M38735_IG23
+ jne G_M38735_IG22
+ ;; size=18 bbWeight=1 PerfScore 4.50
+G_M38735_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[rdi]
+ mov rbx, gword ptr [rbp-0x48]
+ ; gcrRegs +[rbx]
+ test rbx, rbx
+ je G_M38735_IG28
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ test rax, rax
+ jne G_M38735_IG28
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rdx]
+ ; gcr arg pop 0
+ xor ecx, ecx
+ test rax, rax
+ setne cl
+ ;; size=66 bbWeight=1 PerfScore 8.00
+G_M38735_IG15: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs -[rax]
+ movzx rcx, cl
+ call [System.Diagnostics.Debug:Assert(ubyte)]
+ ; gcr arg pop 0
+ test rbx, rbx
+ je SHORT G_M38735_IG16
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ test rax, rax
+ je G_M38735_IG29
+ mov ecx, dword ptr [rax+0x34]
+ and ecx, 0xD1FFAB1E
+ cmp ecx, 0xD1FFAB1E
+ je SHORT G_M38735_IG16
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ xor edx, edx
+ call [<unknown method>]
+ ; gcrRegs -[rax rcx rbx]
+ ; gcr arg pop 0
+ ;; size=69 bbWeight=1 PerfScore 14.25
+G_M38735_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ mov rbx, gword ptr [rsi+0x10]
+ ; gcrRegs +[rbx]
+ test rbx, rbx
...
@@ -20,39 +20,44 @@ G_M65033_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
mov eax, dword ptr [rcx+0x0C]
cmp eax, 1
- je SHORT G_M65033_IG05
+ je SHORT G_M65033_IG04
;; size=8 bbWeight=1 PerfScore 3.25
G_M65033_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp eax, 2
- jne SHORT G_M65033_IG07
+ jne SHORT G_M65033_IG08
mov eax, dword ptr [rcx+0x10]
inc eax
mov dword ptr [rcx+0x10], eax
cmp eax, dword ptr [rcx+0x18]
- je SHORT G_M65033_IG07
- mov eax, 1
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M65033_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ je SHORT G_M65033_IG08
+ jmp SHORT G_M65033_IG06
+ ;; size=20 bbWeight=0.50 PerfScore 5.25
+G_M65033_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rcx+0x14]
mov dword ptr [rcx+0x10], eax
mov dword ptr [rcx+0x0C], 2
mov eax, 1
;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M65033_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M65033_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M65033_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx]
+ mov eax, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M65033_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
+G_M65033_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rcx]
mov dword ptr [rcx+0x0C], -1
xor eax, eax
;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M65033_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG09: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 61, prolog size 0, PerfScore 11.88, instruction count 20, allocated bytes for code 61 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 63, prolog size 0, PerfScore 12.88, instruction count 21, allocated bytes for code 63 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -140,9 +140,9 @@ G_M62977_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=008
;; size=3 bbWeight=1 PerfScore 2.00
G_M62977_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
test ebx, ebx
- je G_M62977_IG09
+ je G_M62977_IG06
cmp ebx, 1
- je G_M62977_IG21
+ je G_M62977_IG26
lea rcx, bword ptr [rsi+0x30]
; byrRegs +[rcx]
mov rax, gword ptr [rcx]
@@ -150,8 +150,8 @@ G_M62977_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
test rax, rax
je SHORT G_M62977_IG04
cmp dword ptr [rax+0x20], 0
- jne SHORT G_M62977_IG06
- ;; size=35 bbWeight=1 PerfScore 10.25
+ jne G_M62977_IG21
+ ;; size=39 bbWeight=1 PerfScore 10.25
G_M62977_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax rdi]
; byrRegs -[rcx]
@@ -197,54 +197,13 @@ G_M62977_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
; gcrRegs +[rcx]
mov gword ptr [rsi+0x10], rcx
;; size=118 bbWeight=1 PerfScore 18.25
-G_M62977_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
+G_M62977_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx]
mov dword ptr [rsi+0x1C], ecx
- jmp SHORT G_M62977_IG09
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M62977_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0042 {rcx rsi}, byref
- ; gcrRegs -[rdi]
- ; byrRegs +[rcx]
- call [System.Threading.CancellationToken:ThrowOperationCanceledException():this]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M62977_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs +[rbx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; System.Exception
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- test rax, rax
- jne SHORT G_M62977_IG08
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call CORINFO_HELP_THROW
- ; gcrRegs -[rax rcx rbx]
- ; gcr arg pop 0
- ;; size=31 bbWeight=0 PerfScore 0.00
-G_M62977_IG08: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0040 {rsi}, byref
- ; gcrRegs +[rax]
- mov rcx, rax
- ; gcrRegs +[rcx]
- call [System.Runtime.ExceptionServices.ExceptionDispatchInfo:Capture(System.Exception):System.Runtime.ExceptionServices.ExceptionDispatchInfo]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov rcx, rax
- ; gcrRegs +[rcx]
- cmp dword ptr [rcx], ecx
- call [System.Runtime.ExceptionServices.ExceptionDispatchInfo:Throw():this]
- ; gcrRegs -[rax rcx]
- ; gcr arg pop 0
- int3
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M62977_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs +[rdi]
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M62977_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
test ebx, ebx
- je G_M62977_IG12
+ je G_M62977_IG09
mov rcx, gword ptr [rsi+0x08]
; gcrRegs +[rcx]
movzx rax, byte ptr [rsi+0x20]
@@ -266,24 +225,24 @@ G_M62977_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi},
mov rax, gword ptr [rbp-0xA0]
; gcrRegs +[rax]
test rax, rax
- jne SHORT G_M62977_IG10
+ jne SHORT G_M62977_IG07
lea rcx, [rbp-0xA0]
call [<unknown method>]
; gcr arg pop 0
;; size=112 bbWeight=1 PerfScore 23.75
-G_M62977_IG10: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0040 {rsi}, byref, isz
+G_M62977_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0040 {rsi}, byref, isz
cmp byte ptr [rax], al
mov gword ptr [rbp-0x38], rax
xor ecx, ecx
mov dword ptr [rbp-0x30], ecx
test byte ptr [rbp-0x30], 4
- jne SHORT G_M62977_IG11
+ jne SHORT G_M62977_IG08
mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
test dword ptr [rcx+0x34], 0xD1FFAB1E
- jne SHORT G_M62977_IG15
+ jne SHORT G_M62977_IG12
;; size=30 bbWeight=1 PerfScore 13.25
-G_M62977_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M62977_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax rcx]
xor ecx, ecx
mov dword ptr [rsi+0x18], ecx
@@ -310,23 +269,23 @@ G_M62977_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- jmp G_M62977_IG32
+ jmp G_M62977_IG33
;; size=55 bbWeight=1 PerfScore 15.25
-G_M62977_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M62977_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
lea rcx, bword ptr [rsi+0x48]
; byrRegs +[rcx]
;; size=4 bbWeight=1 PerfScore 0.50
-G_M62977_IG13: ; bbWeight=1, nogc, extend
+G_M62977_IG10: ; bbWeight=1, nogc, extend
vmovdqu xmm0, xmmword ptr [rcx]
vmovdqu xmmword ptr [rbp-0x38], xmm0
;; size=9 bbWeight=1 PerfScore 5.00
-G_M62977_IG14: ; bbWeight=1, extend
+G_M62977_IG11: ; bbWeight=1, extend
xor edx, edx
mov qword ptr [rcx], rdx
mov qword ptr [rcx+0x08], rdx
mov dword ptr [rsi+0x18], -1
;; size=16 bbWeight=1 PerfScore 3.25
-G_M62977_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M62977_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs -[rcx]
mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
@@ -334,13 +293,13 @@ G_M62977_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
mov eax, dword ptr [rcx+0x34]
and eax, 0xD1FFAB1E
cmp eax, 0xD1FFAB1E
- je SHORT G_M62977_IG16
+ je SHORT G_M62977_IG13
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
nop
;; size=29 bbWeight=1 PerfScore 8.75
-G_M62977_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M62977_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
mov rsi, bword ptr [rbp+0x10]
; byrRegs +[rsi]
@@ -364,7 +323,7 @@ G_M62977_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rdi]
; byrRegs -[rdi]
test rdi, rdi
- je SHORT G_M62977_IG17
+ je G_M62977_IG22
mov rdx, rdi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task
@@ -373,7 +332,7 @@ G_M62977_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M62977_IG17
+ jne G_M62977_IG22
mov rdx, rdi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -383,18 +342,124 @@ G_M62977_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
xor ecx, ecx
test rax, rax
setne cl
- jmp SHORT G_M62977_IG18
- ;; size=121 bbWeight=1 PerfScore 26.25
-G_M62977_IG17: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+ ;; size=127 bbWeight=1 PerfScore 24.25
+G_M62977_IG14: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax]
- mov ecx, 1
- ;; size=5 bbWeight=1 PerfScore 0.25
-G_M62977_IG18: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
movzx rcx, cl
call [System.Diagnostics.Debug:Assert(ubyte)]
; gcr arg pop 0
test rdi, rdi
- je G_M62977_IG24
+ jne G_M62977_IG23
+ ;; size=18 bbWeight=1 PerfScore 4.50
+G_M62977_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[rdi]
+ mov rbx, gword ptr [rbp-0x48]
+ ; gcrRegs +[rbx]
+ test rbx, rbx
+ je G_M62977_IG29
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ test rax, rax
+ jne G_M62977_IG29
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rdx]
+ ; gcr arg pop 0
+ xor ecx, ecx
+ test rax, rax
+ setne cl
+ ;; size=66 bbWeight=1 PerfScore 8.00
+G_M62977_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs -[rax]
+ movzx rcx, cl
+ call [System.Diagnostics.Debug:Assert(ubyte)]
+ ; gcr arg pop 0
+ test rbx, rbx
+ je SHORT G_M62977_IG17
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ test rax, rax
+ je G_M62977_IG30
+ mov ecx, dword ptr [rax+0x34]
+ and ecx, 0xD1FFAB1E
+ cmp ecx, 0xD1FFAB1E
+ je SHORT G_M62977_IG17
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ xor edx, edx
+ call [<unknown method>]
+ ; gcrRegs -[rax rcx rbx]
+ ; gcr arg pop 0
+ ;; size=69 bbWeight=1 PerfScore 14.25
+G_M62977_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ mov rbx, gword ptr [rsi+0x10]
+ ; gcrRegs +[rbx]
+ test rbx, rbx
+ jne SHORT G_M62977_IG19
...
@@ -37,30 +37,22 @@ G_M57887_IG04: ; bbWeight=0, epilog, nogc, extend
G_M57887_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
test dl, dl
- je SHORT G_M57887_IG07
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M57887_IG06: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- jmp SHORT G_M57887_IG08
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG07: ; bbWeight=1, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax]
+ jne SHORT G_M57887_IG06
mov eax, dword ptr [rax+0x5C]
; gcrRegs -[rax]
and eax, 7
cmp eax, 6
- je SHORT G_M57887_IG08
- jmp SHORT G_M57887_IG03
- ;; size=13 bbWeight=1 PerfScore 5.50
-G_M57887_IG08: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M57887_IG03
+ ;; size=15 bbWeight=1 PerfScore 4.75
+G_M57887_IG06: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov rax, gword ptr [rcx+0x18]
; gcrRegs +[rax]
;; size=4 bbWeight=0 PerfScore 0.00
-G_M57887_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG07: ; bbWeight=0, epilog, nogc, extend
ret
;; size=1 bbWeight=0 PerfScore 0.00
-; Total bytes of code 36, prolog size 0, PerfScore 10.00, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 32, prolog size 0, PerfScore 8.00, instruction count 13, allocated bytes for code 32 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6839
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6839
; 2 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
@@ -33,20 +33,25 @@
;
; Lcl frame size = 40
-G_M31300_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M31300_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rsi
push rbx
sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
;; size=9 bbWeight=1 PerfScore 2.50
-G_M31300_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M31300_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x10]
; gcrRegs +[rsi]
test rsi, rsi
- je G_M31300_IG14
- ;; size=13 bbWeight=1 PerfScore 3.25
-G_M31300_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jne SHORT G_M31300_IG04
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M31300_IG03: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
+ mov rsi, gword ptr [rbx+0x18]
+ ; gcrRegs +[rsi]
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M31300_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol
@@ -54,106 +59,21 @@ G_M31300_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
cmp rax, rsi
- je G_M31300_IG15
- mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple
+ jne SHORT G_M31300_IG06
+ ;; size=23 bbWeight=1 PerfScore 2.75
+G_M31300_IG05: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp qword ptr [rsi], rax
- jne G_M31300_IG16
- mov rcx, gword ptr [rsi+0x38]
- ; gcrRegs +[rcx]
- ;; size=50 bbWeight=1 PerfScore 9.00
-G_M31300_IG04: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- test rcx, rcx
- je SHORT G_M31300_IG06
- mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol
- cmp qword ptr [rcx], rax
- jne G_M31300_IG17
- mov edx, dword ptr [rcx+0x88]
- sar edx, 10
- and edx, 15
- ;; size=36 bbWeight=1 PerfScore 8.25
-G_M31300_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- cmp edx, 10
- je SHORT G_M31300_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M31300_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- xor eax, eax
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M31300_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rsi
- ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M31300_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M31300_IG10
- mov rax, qword ptr [rcx]
- mov rax, qword ptr [rax+0xD0]
- call [rax+0x20]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- cmp eax, 1
- sete al
- movzx rax, al
- test eax, eax
- je SHORT G_M31300_IG10
- mov eax, 2
- ;; size=40 bbWeight=0 PerfScore 0.00
-G_M31300_IG09: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rsi
- ret
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M31300_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M31300_IG12
- mov rax, qword ptr [rcx]
- mov rax, qword ptr [rax+0xF8]
- call [rax]<unknown method>
- ; gcrRegs -[rcx rbx]
- ; gcr arg pop 0
- test eax, eax
- je SHORT G_M31300_IG12
- mov eax, 3
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M31300_IG11: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rsi
- ret
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M31300_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov eax, 1
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M31300_IG13: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rsi
- ret
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M31300_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
- mov rsi, gword ptr [rbx+0x18]
- ; gcrRegs +[rsi]
- jmp G_M31300_IG03
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M31300_IG15: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
- jmp G_M31300_IG04
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M31300_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M31300_IG08
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M31300_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
+ mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple
+ cmp qword ptr [rsi], rax
+ je SHORT G_M31300_IG09
+ ;; size=15 bbWeight=1 PerfScore 4.25
+G_M31300_IG07: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
mov rax, qword ptr [rsi]
@@ -163,20 +83,109 @@ G_M31300_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- jmp G_M31300_IG04
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M31300_IG17: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M31300_IG08: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ test rcx, rcx
+ je SHORT G_M31300_IG13
+ mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol
+ cmp qword ptr [rcx], rax
+ je SHORT G_M31300_IG15
+ jmp SHORT G_M31300_IG10
+ ;; size=22 bbWeight=1 PerfScore 7.50
+G_M31300_IG09: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx] +[rsi]
+ mov rcx, gword ptr [rsi+0x38]
+ ; gcrRegs +[rcx]
+ jmp SHORT G_M31300_IG08
+ ;; size=6 bbWeight=1 PerfScore 4.00
+G_M31300_IG10: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0xA8]
call [rax+0x18]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
mov edx, eax
- jmp G_M31300_IG05
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M31300_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ cmp edx, 10
+ jne SHORT G_M31300_IG13
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M31300_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je SHORT G_M31300_IG18
+ jmp SHORT G_M31300_IG16
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M31300_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rbx]
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M31300_IG14: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rsi
+ ret
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M31300_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rcx rbx]
+ mov edx, dword ptr [rcx+0x88]
+ sar edx, 10
+ and edx, 15
+ jmp SHORT G_M31300_IG11
+ ;; size=14 bbWeight=1 PerfScore 4.75
+G_M31300_IG16: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+ mov rax, qword ptr [rcx]
+ mov rax, qword ptr [rax+0xD0]
+ call [rax+0x20]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ cmp eax, 1
+ sete al
+ movzx rax, al
+ test eax, eax
+ je SHORT G_M31300_IG18
+ mov eax, 2
+ ;; size=31 bbWeight=0 PerfScore 0.00
+G_M31300_IG17: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rsi
+ ret
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M31300_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov rcx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je SHORT G_M31300_IG20
+ mov rax, qword ptr [rcx]
+ mov rax, qword ptr [rax+0xF8]
+ call [rax]<unknown method>
+ ; gcrRegs -[rcx rbx]
+ ; gcr arg pop 0
+ test eax, eax
...
@@ -32,15 +32,14 @@ G_M23529_IG04: ; bbWeight=1, epilog, nogc, extend
G_M23529_IG05: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
cmp qword ptr [rdx], rcx
- jne SHORT G_M23529_IG06
- jmp SHORT G_M23529_IG03
- ;; size=7 bbWeight=0.33 PerfScore 2.00
+ je SHORT G_M23529_IG03
+ ;; size=5 bbWeight=0.33 PerfScore 1.33
G_M23529_IG06: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
tail.jmp [System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object]
; gcr arg pop 0
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 22, prolog size 0, PerfScore 4.50, instruction count 8, allocated bytes for code 22 (MethodHash=3733a416) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 20, prolog size 0, PerfScore 3.83, instruction count 7, allocated bytes for code 20 (MethodHash=3733a416) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -5,12 +5,12 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2335
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2335
; 5 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 9, 5.17) ref -> rbx class-hnd single-def <System.Threading.IThreadPoolWorkItem>
-; V01 arg1 [V01,T05] ( 3, 3 ) ubyte -> rsi single-def
+; V01 arg1 [V01,T05] ( 4, 3 ) ubyte -> rsi single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 4, 8 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue>
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -47,28 +47,18 @@ G_M29172_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=17 bbWeight=1 PerfScore 6.75
G_M29172_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- jne SHORT G_M29172_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov ecx, 44
- call [System.ThrowHelper:ThrowArgumentNullException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ je G_M29172_IG15
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M29172_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M29172_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M29172_IG06
+ ;; size=17 bbWeight=1 PerfScore 2.75
+G_M29172_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Threading.Channels.AsyncOperation`1[ubyte]
cmp qword ptr [rax], rdx
- je SHORT G_M29172_IG07
+ je SHORT G_M29172_IG05
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29172_IG06: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG04: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rdx, rbx
; gcrRegs +[rdx]
@@ -76,73 +66,28 @@ G_M29172_IG06: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- jmp SHORT G_M29172_IG08
+ jmp SHORT G_M29172_IG06
;; size=20 bbWeight=0.17 PerfScore 0.61
-G_M29172_IG07: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29172_IG05: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.33 PerfScore 0.08
-G_M29172_IG08: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
test rax, rax
- je SHORT G_M29172_IG10
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
- mov ecx, 44
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ jne G_M29172_IG16
mov rax, 0xD1FFAB1E ; const ptr
+ ; gcrRegs -[rax]
mov rdi, gword ptr [rax]
; gcrRegs +[rdi]
cmp byte ptr [rdi+0x34], 0
- je SHORT G_M29172_IG12
- ;; size=19 bbWeight=1 PerfScore 6.25
-G_M29172_IG11: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- cmp byte ptr [rcx+0x9D], 0
- je SHORT G_M29172_IG12
- mov rcx, 0xD1FFAB1E ; const ptr
- ; gcrRegs -[rcx]
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M29172_IG12: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M29172_IG17
+ ;; size=32 bbWeight=1 PerfScore 7.50
+G_M29172_IG07: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
test sil, sil
- je SHORT G_M29172_IG14
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG13: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, 4
- call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- ; byrRegs +[rax]
- ; gcr arg pop 0
- mov rcx, gword ptr [rax+0x38]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M29172_IG14
- mov rcx, gword ptr [rcx+0x18]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- cmp dword ptr [rcx], ecx
- call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx]
- ; byrRegs -[rax]
- ; gcr arg pop 0
- jmp SHORT G_M29172_IG18
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M29172_IG14: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+ jne G_M29172_IG18
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M29172_IG08: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
mov rbp, gword ptr [rcx+0x10]
@@ -150,35 +95,26 @@ G_M29172_IG14: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
mov r14, gword ptr [rbp+0x08]
; gcrRegs +[r14]
;; size=12 bbWeight=1 PerfScore 6.00
-G_M29172_IG15: ; bbWeight=1, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG09: ; bbWeight=1, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rbp+0xA0]
mov dword ptr [rsp+0x24], eax
mov edx, eax
and edx, dword ptr [rbp+0x18]
cmp edx, dword ptr [r14+0x08]
- jae SHORT G_M29172_IG22
+ jae SHORT G_M29172_IG14
shl rdx, 4
lea rsi, bword ptr [r14+rdx+0x10]
; byrRegs +[rsi]
mov r8d, dword ptr [rsi+0x08]
sub r8d, eax
- je SHORT G_M29172_IG17
- ;; size=39 bbWeight=1 PerfScore 15.00
-G_M29172_IG16: ; bbWeight=0, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rsi]
- test r8d, r8d
- jge SHORT G_M29172_IG15
- jmp SHORT G_M29172_IG23
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M29172_IG17: ; bbWeight=1, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0040 {rsi}, byref, isz
- ; byrRegs +[rsi]
+ jne G_M29172_IG19
lea rdx, bword ptr [rbp+0xA0]
; byrRegs +[rdx]
lea r15d, [rax+0x01]
lock
cmpxchg dword ptr [rdx], r15d
cmp eax, dword ptr [rsp+0x24]
- jne SHORT G_M29172_IG15
+ jne SHORT G_M29172_IG09
mov rcx, rsi
; gcrRegs -[rcx]
; byrRegs +[rcx]
@@ -189,8 +125,8 @@ G_M29172_IG17: ; bbWeight=1, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefR
; gcrRegs -[rdx rbx rbp r14]
; byrRegs -[rcx]
mov dword ptr [rsi+0x08], r15d
- ;; size=37 bbWeight=1 PerfScore 24.50
-G_M29172_IG18: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=1 PerfScore 39.50
+G_M29172_IG10: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rsi]
add rdi, 116
; gcrRegs -[rdi]
@@ -200,17 +136,13 @@ G_M29172_IG18: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
lock
cmpxchg dword ptr [rdi], ecx
test eax, eax
- jne SHORT G_M29172_IG20
+ je SHORT G_M29172_IG13
;; size=19 bbWeight=1 PerfScore 20.00
-G_M29172_IG19: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29172_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
- call [System.Threading.ThreadPool:RequestWorkerThread()]
- ; gcr arg pop 0
- ;; size=6 bbWeight=0.01 PerfScore 0.02
-G_M29172_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=1 PerfScore 0.25
-G_M29172_IG21: ; bbWeight=1, epilog, nogc, extend
+G_M29172_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -220,21 +152,78 @@ G_M29172_IG21: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=13 bbWeight=1 PerfScore 4.25
-G_M29172_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29172_IG13: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ call [System.Threading.ThreadPool:RequestWorkerThread()]
+ ; gcr arg pop 0
+ jmp SHORT G_M29172_IG11
+ ;; size=8 bbWeight=0.01 PerfScore 0.03
+G_M29172_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M29172_IG23: ; bbWeight=0, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx rbx rdi]
+G_M29172_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, 44
+ call [System.ThrowHelper:ThrowArgumentNullException(int)]
+ ; gcr arg pop 0
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M29172_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, 44
+ call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
+ ; gcr arg pop 0
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M29172_IG17: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rdi]
+ mov rcx, 0xD1FFAB1E ; const ptr
+ mov rcx, gword ptr [rcx]
+ ; gcrRegs +[rcx]
+ cmp byte ptr [rcx+0x9D], 0
+ je G_M29172_IG07
+ mov rcx, 0xD1FFAB1E ; const ptr
+ ; gcrRegs -[rcx]
+ mov rcx, gword ptr [rcx]
+ ; gcrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx]
...
@@ -5,12 +5,12 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1511
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1511
; 5 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 9, 5.22) ref -> rbx class-hnd single-def <System.Threading.IThreadPoolWorkItem>
-; V01 arg1 [V01,T05] ( 3, 3 ) ubyte -> rsi single-def
+; V01 arg1 [V01,T05] ( 4, 3 ) ubyte -> rsi single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 4, 8.00) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue>
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -47,28 +47,18 @@ G_M29172_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=17 bbWeight=1 PerfScore 6.75
G_M29172_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- jne SHORT G_M29172_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov ecx, 44
- call [System.ThrowHelper:ThrowArgumentNullException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ je G_M29172_IG16
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M29172_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M29172_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M29172_IG06
+ ;; size=17 bbWeight=1 PerfScore 2.75
+G_M29172_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Threading.Channels.VoidAsyncOperationWithData`1[ubyte[]]
cmp qword ptr [rax], rdx
- je SHORT G_M29172_IG07
+ je SHORT G_M29172_IG05
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29172_IG06: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG04: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rdx, rbx
; gcrRegs +[rdx]
@@ -76,73 +66,30 @@ G_M29172_IG06: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- jmp SHORT G_M29172_IG08
+ jmp SHORT G_M29172_IG06
;; size=20 bbWeight=0.22 PerfScore 0.77
-G_M29172_IG07: ; bbWeight=0.28, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29172_IG05: ; bbWeight=0.28, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.28 PerfScore 0.07
-G_M29172_IG08: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
test rax, rax
- je SHORT G_M29172_IG10
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
- mov ecx, 44
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG10: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ jne G_M29172_IG17
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M29172_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rax, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rax]
; gcrRegs +[rdi]
cmp byte ptr [rdi+0x34], 0
- je SHORT G_M29172_IG12
- ;; size=19 bbWeight=1.00 PerfScore 6.25
-G_M29172_IG11: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- cmp byte ptr [rcx+0x9D], 0
- je SHORT G_M29172_IG12
- mov rcx, 0xD1FFAB1E ; const ptr
- ; gcrRegs -[rcx]
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M29172_IG12: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M29172_IG18
+ ;; size=23 bbWeight=1.00 PerfScore 6.25
+G_M29172_IG08: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
test sil, sil
- je SHORT G_M29172_IG14
- ;; size=5 bbWeight=1.00 PerfScore 1.25
-G_M29172_IG13: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, 4
- call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- ; byrRegs +[rax]
- ; gcr arg pop 0
- mov rcx, gword ptr [rax+0x38]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M29172_IG14
- mov rcx, gword ptr [rcx+0x18]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- cmp dword ptr [rcx], ecx
- call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx]
- ; byrRegs -[rax]
- ; gcr arg pop 0
- jmp SHORT G_M29172_IG18
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M29172_IG14: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+ jne G_M29172_IG19
+ ;; size=9 bbWeight=1.00 PerfScore 1.25
+G_M29172_IG09: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
mov rbp, gword ptr [rcx+0x10]
@@ -150,35 +97,26 @@ G_M29172_IG14: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
mov r14, gword ptr [rbp+0x08]
; gcrRegs +[r14]
;; size=12 bbWeight=1.00 PerfScore 6.00
-G_M29172_IG15: ; bbWeight=1.00, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG10: ; bbWeight=1.00, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rbp+0xA0]
mov dword ptr [rsp+0x24], eax
mov edx, eax
and edx, dword ptr [rbp+0x18]
cmp edx, dword ptr [r14+0x08]
- jae SHORT G_M29172_IG22
+ jae SHORT G_M29172_IG15
shl rdx, 4
lea rsi, bword ptr [r14+rdx+0x10]
; byrRegs +[rsi]
mov r8d, dword ptr [rsi+0x08]
sub r8d, eax
- je SHORT G_M29172_IG17
- ;; size=39 bbWeight=1.00 PerfScore 15.00
-G_M29172_IG16: ; bbWeight=0, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rsi]
- test r8d, r8d
- jge SHORT G_M29172_IG15
- jmp SHORT G_M29172_IG23
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M29172_IG17: ; bbWeight=1.00, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0040 {rsi}, byref, isz
- ; byrRegs +[rsi]
+ jne G_M29172_IG20
lea rdx, bword ptr [rbp+0xA0]
; byrRegs +[rdx]
lea r15d, [rax+0x01]
lock
cmpxchg dword ptr [rdx], r15d
cmp eax, dword ptr [rsp+0x24]
- jne SHORT G_M29172_IG15
+ jne SHORT G_M29172_IG10
mov rcx, rsi
; gcrRegs -[rcx]
; byrRegs +[rcx]
@@ -189,8 +127,8 @@ G_M29172_IG17: ; bbWeight=1.00, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byr
; gcrRegs -[rdx rbx rbp r14]
; byrRegs -[rcx]
mov dword ptr [rsi+0x08], r15d
- ;; size=37 bbWeight=1.00 PerfScore 24.50
-G_M29172_IG18: ; bbWeight=1.00, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=1.00 PerfScore 39.50
+G_M29172_IG11: ; bbWeight=1.00, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rsi]
add rdi, 116
; gcrRegs -[rdi]
@@ -200,17 +138,13 @@ G_M29172_IG18: ; bbWeight=1.00, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
lock
cmpxchg dword ptr [rdi], ecx
test eax, eax
- jne SHORT G_M29172_IG20
+ je SHORT G_M29172_IG14
;; size=19 bbWeight=1.00 PerfScore 20.00
-G_M29172_IG19: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29172_IG12: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
- call [System.Threading.ThreadPool:RequestWorkerThread()]
- ; gcr arg pop 0
- ;; size=6 bbWeight=0.00 PerfScore 0.00
-G_M29172_IG20: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=1.00 PerfScore 0.25
-G_M29172_IG21: ; bbWeight=1.00, epilog, nogc, extend
+G_M29172_IG13: ; bbWeight=1.00, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -220,21 +154,78 @@ G_M29172_IG21: ; bbWeight=1.00, epilog, nogc, extend
pop r15
ret
;; size=13 bbWeight=1.00 PerfScore 4.25
-G_M29172_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29172_IG14: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ call [System.Threading.ThreadPool:RequestWorkerThread()]
+ ; gcr arg pop 0
+ jmp SHORT G_M29172_IG12
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M29172_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M29172_IG23: ; bbWeight=0, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx rbx rdi]
+G_M29172_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, 44
+ call [System.ThrowHelper:ThrowArgumentNullException(int)]
+ ; gcr arg pop 0
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M29172_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, 44
+ call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
+ ; gcr arg pop 0
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M29172_IG18: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rdi]
+ mov rcx, 0xD1FFAB1E ; const ptr
+ mov rcx, gword ptr [rcx]
+ ; gcrRegs +[rcx]
+ cmp byte ptr [rcx+0x9D], 0
+ je G_M29172_IG08
+ mov rcx, 0xD1FFAB1E ; const ptr
+ ; gcrRegs -[rcx]
+ mov rcx, gword ptr [rcx]
+ ; gcrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
...
@@ -5,12 +5,12 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7491
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7491
; 5 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 9, 5.19) ref -> rbx class-hnd single-def <System.Threading.IThreadPoolWorkItem>
-; V01 arg1 [V01,T05] ( 3, 3 ) ubyte -> rsi single-def
+; V01 arg1 [V01,T05] ( 4, 3 ) ubyte -> rsi single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 4, 8 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue>
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -47,28 +47,18 @@ G_M29172_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=17 bbWeight=1 PerfScore 6.75
G_M29172_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- jne SHORT G_M29172_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov ecx, 44
- call [System.ThrowHelper:ThrowArgumentNullException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ je G_M29172_IG15
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M29172_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M29172_IG05: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M29172_IG06
+ ;; size=17 bbWeight=1 PerfScore 2.75
+G_M29172_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Threading.Channels.VoidAsyncOperationWithData`1[ubyte[]]
cmp qword ptr [rax], rdx
- je SHORT G_M29172_IG07
+ je SHORT G_M29172_IG05
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29172_IG06: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG04: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rdx, rbx
; gcrRegs +[rdx]
@@ -76,73 +66,28 @@ G_M29172_IG06: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- jmp SHORT G_M29172_IG08
+ jmp SHORT G_M29172_IG06
;; size=20 bbWeight=0.19 PerfScore 0.67
-G_M29172_IG07: ; bbWeight=0.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29172_IG05: ; bbWeight=0.31, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.31 PerfScore 0.08
-G_M29172_IG08: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG06: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
test rax, rax
- je SHORT G_M29172_IG10
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
- mov ecx, 44
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M29172_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ jne G_M29172_IG16
mov rax, 0xD1FFAB1E ; const ptr
+ ; gcrRegs -[rax]
mov rdi, gword ptr [rax]
; gcrRegs +[rdi]
cmp byte ptr [rdi+0x34], 0
- je SHORT G_M29172_IG12
- ;; size=19 bbWeight=1 PerfScore 6.25
-G_M29172_IG11: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- cmp byte ptr [rcx+0x9D], 0
- je SHORT G_M29172_IG12
- mov rcx, 0xD1FFAB1E ; const ptr
- ; gcrRegs -[rcx]
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M29172_IG12: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M29172_IG17
+ ;; size=32 bbWeight=1 PerfScore 7.50
+G_M29172_IG07: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
test sil, sil
- je SHORT G_M29172_IG14
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M29172_IG13: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, 4
- call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- ; byrRegs +[rax]
- ; gcr arg pop 0
- mov rcx, gword ptr [rax+0x38]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M29172_IG14
- mov rcx, gword ptr [rcx+0x18]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- cmp dword ptr [rcx], ecx
- call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx]
- ; byrRegs -[rax]
- ; gcr arg pop 0
- jmp SHORT G_M29172_IG18
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M29172_IG14: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
+ jne G_M29172_IG18
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M29172_IG08: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
mov rbp, gword ptr [rcx+0x10]
@@ -150,35 +95,26 @@ G_M29172_IG14: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
mov r14, gword ptr [rbp+0x08]
; gcrRegs +[r14]
;; size=12 bbWeight=1 PerfScore 6.00
-G_M29172_IG15: ; bbWeight=1, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M29172_IG09: ; bbWeight=1, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rbp+0xA0]
mov dword ptr [rsp+0x24], eax
mov edx, eax
and edx, dword ptr [rbp+0x18]
cmp edx, dword ptr [r14+0x08]
- jae SHORT G_M29172_IG22
+ jae SHORT G_M29172_IG14
shl rdx, 4
lea rsi, bword ptr [r14+rdx+0x10]
; byrRegs +[rsi]
mov r8d, dword ptr [rsi+0x08]
sub r8d, eax
- je SHORT G_M29172_IG17
- ;; size=39 bbWeight=1 PerfScore 15.00
-G_M29172_IG16: ; bbWeight=0, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rsi]
- test r8d, r8d
- jge SHORT G_M29172_IG15
- jmp SHORT G_M29172_IG23
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M29172_IG17: ; bbWeight=1, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefRegs=0040 {rsi}, byref, isz
- ; byrRegs +[rsi]
+ jne G_M29172_IG19
lea rdx, bword ptr [rbp+0xA0]
; byrRegs +[rdx]
lea r15d, [rax+0x01]
lock
cmpxchg dword ptr [rdx], r15d
cmp eax, dword ptr [rsp+0x24]
- jne SHORT G_M29172_IG15
+ jne SHORT G_M29172_IG09
mov rcx, rsi
; gcrRegs -[rcx]
; byrRegs +[rcx]
@@ -189,8 +125,8 @@ G_M29172_IG17: ; bbWeight=1, gcrefRegs=40AA {rcx rbx rbp rdi r14}, byrefR
; gcrRegs -[rdx rbx rbp r14]
; byrRegs -[rcx]
mov dword ptr [rsi+0x08], r15d
- ;; size=37 bbWeight=1 PerfScore 24.50
-G_M29172_IG18: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=80 bbWeight=1 PerfScore 39.50
+G_M29172_IG10: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rsi]
add rdi, 116
; gcrRegs -[rdi]
@@ -200,17 +136,13 @@ G_M29172_IG18: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
lock
cmpxchg dword ptr [rdi], ecx
test eax, eax
- jne SHORT G_M29172_IG20
+ je SHORT G_M29172_IG13
;; size=19 bbWeight=1 PerfScore 20.00
-G_M29172_IG19: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29172_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
- call [System.Threading.ThreadPool:RequestWorkerThread()]
- ; gcr arg pop 0
- ;; size=6 bbWeight=0.10 PerfScore 0.31
-G_M29172_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=1 PerfScore 0.25
-G_M29172_IG21: ; bbWeight=1, epilog, nogc, extend
+G_M29172_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -220,21 +152,78 @@ G_M29172_IG21: ; bbWeight=1, epilog, nogc, extend
pop r15
ret
;; size=13 bbWeight=1 PerfScore 4.25
-G_M29172_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29172_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ call [System.Threading.ThreadPool:RequestWorkerThread()]
+ ; gcr arg pop 0
+ jmp SHORT G_M29172_IG11
+ ;; size=8 bbWeight=0.10 PerfScore 0.52
+G_M29172_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M29172_IG23: ; bbWeight=0, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx rbx rdi]
+G_M29172_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, 44
+ call [System.ThrowHelper:ThrowArgumentNullException(int)]
+ ; gcr arg pop 0
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M29172_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, 44
+ call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
+ ; gcr arg pop 0
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M29172_IG17: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rdi]
+ mov rcx, 0xD1FFAB1E ; const ptr
+ mov rcx, gword ptr [rcx]
+ ; gcrRegs +[rcx]
+ cmp byte ptr [rcx+0x9D], 0
+ je G_M29172_IG07
+ mov rcx, 0xD1FFAB1E ; const ptr
+ ; gcrRegs -[rcx]
+ mov rcx, gword ptr [rcx]
+ ; gcrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx]
...
@@ -54,11 +54,8 @@ G_M21105_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
G_M21105_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov ebp, dword ptr [rsi+0x08]
test ebp, ebp
- je SHORT G_M21105_IG04
- test rdi, rdi
- je SHORT G_M21105_IG07
- jmp SHORT G_M21105_IG06
- ;; size=14 bbWeight=0.50 PerfScore 3.25
+ jne SHORT G_M21105_IG06
+ ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M21105_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov rcx, rdi
@@ -79,13 +76,12 @@ G_M21105_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=18 bbWeight=0.50 PerfScore 2.62
G_M21105_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rdx] +[rsi]
+ test rdi, rdi
+ je SHORT G_M21105_IG07
mov r14d, dword ptr [rdi+0x08]
test r14d, r14d
- je SHORT G_M21105_IG07
- test rbx, rbx
- je G_M21105_IG13
- jmp SHORT G_M21105_IG09
- ;; size=20 bbWeight=0.50 PerfScore 3.25
+ jne SHORT G_M21105_IG09
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M21105_IG07: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rcx, rsi
@@ -106,22 +102,45 @@ G_M21105_IG08: ; bbWeight=0.50, epilog, nogc, extend
;; size=18 bbWeight=0.50 PerfScore 2.62
G_M21105_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rdx] +[rdi]
+ test rbx, rbx
+ je SHORT G_M21105_IG10
cmp dword ptr [rbx+0x08], 0
- je G_M21105_IG13
+ jne SHORT G_M21105_IG12
+ ;; size=11 bbWeight=0.50 PerfScore 2.62
+G_M21105_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ ;; size=6 bbWeight=0.50 PerfScore 0.25
+G_M21105_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ pop r15
+ tail.jmp [System.String:Concat(System.String,System.String):System.String]
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=0.50 PerfScore 2.62
+G_M21105_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx rdx] +[rbx]
mov ecx, r14d
mov eax, ebp
add rcx, rax
mov eax, dword ptr [rbx+0x08]
add rcx, rax
cmp rcx, 0xD1FFAB1E
- jg G_M21105_IG15
+ jg SHORT G_M21105_IG16
call <unknown method>
; gcrRegs +[rax]
; gcr arg pop 0
mov r15, rax
; gcrRegs +[r15]
test r15, r15
- jne SHORT G_M21105_IG10
+ jne SHORT G_M21105_IG13
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -129,10 +148,10 @@ G_M21105_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- ;; size=69 bbWeight=0.50 PerfScore 7.12
-G_M21105_IG10: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=55 bbWeight=0.50 PerfScore 5.12
+G_M21105_IG13: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r15+0x08], ebp
- jge SHORT G_M21105_IG11
+ jge SHORT G_M21105_IG14
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -141,7 +160,7 @@ G_M21105_IG10: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=25 bbWeight=0.50 PerfScore 3.75
-G_M21105_IG11: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+G_M21105_IG14: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [r15+0x0C]
; byrRegs +[rcx]
lea rdx, bword ptr [rsi+0x0C]
@@ -171,7 +190,7 @@ G_M21105_IG11: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
mov rax, r15
; gcrRegs +[rax]
;; size=53 bbWeight=0.50 PerfScore 6.25
-G_M21105_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M21105_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -181,32 +200,14 @@ G_M21105_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M21105_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r15] +[rsi rdi]
- mov rcx, rsi
- ; gcrRegs +[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- ;; size=6 bbWeight=0.50 PerfScore 0.25
-G_M21105_IG14: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- tail.jmp [System.String:Concat(System.String,System.String):System.String]
- ; gcr arg pop 0
- ;; size=18 bbWeight=0.50 PerfScore 2.62
-G_M21105_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx rdx rsi rdi]
+G_M21105_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r15]
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 299, prolog size 21, PerfScore 42.62, instruction count 99, allocated bytes for code 299 (MethodHash=c73dad8e) for method System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
+; Total bytes of code 283, prolog size 21, PerfScore 40.62, instruction count 97, allocated bytes for code 283 (MethodHash=c73dad8e) for method System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -63,11 +63,8 @@ G_M26691_IG02: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=
G_M26691_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [rsi+0x08]
test r14d, r14d
- je SHORT G_M26691_IG04
- test rdi, rdi
- je SHORT G_M26691_IG07
- jmp SHORT G_M26691_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.25
+ jne SHORT G_M26691_IG06
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M26691_IG04: ; bbWeight=0.50, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov rcx, rdi
@@ -92,13 +89,12 @@ G_M26691_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=22 bbWeight=0.50 PerfScore 3.12
G_M26691_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rdx r8] +[rsi]
+ test rdi, rdi
+ je SHORT G_M26691_IG07
mov r15d, dword ptr [rdi+0x08]
test r15d, r15d
- je SHORT G_M26691_IG07
- test rbp, rbp
- je SHORT G_M26691_IG10
- jmp SHORT G_M26691_IG09
- ;; size=16 bbWeight=0.50 PerfScore 3.25
+ jne SHORT G_M26691_IG09
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M26691_IG07: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rcx, rsi
@@ -123,13 +119,12 @@ G_M26691_IG08: ; bbWeight=0.50, epilog, nogc, extend
;; size=22 bbWeight=0.50 PerfScore 3.12
G_M26691_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rdx r8] +[rdi]
+ test rbp, rbp
+ je SHORT G_M26691_IG10
mov r13d, dword ptr [rbp+0x08]
test r13d, r13d
- je SHORT G_M26691_IG10
- test rbx, rbx
- je G_M26691_IG16
- jmp SHORT G_M26691_IG12
- ;; size=20 bbWeight=0.50 PerfScore 3.25
+ jne SHORT G_M26691_IG12
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
G_M26691_IG10: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
mov rcx, rsi
@@ -154,8 +149,35 @@ G_M26691_IG11: ; bbWeight=0.50, epilog, nogc, extend
;; size=22 bbWeight=0.50 PerfScore 3.12
G_M26691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rdx r8] +[rbp]
+ test rbx, rbx
+ je SHORT G_M26691_IG13
cmp dword ptr [rbx+0x08], 0
- je G_M26691_IG16
+ jne SHORT G_M26691_IG15
+ ;; size=11 bbWeight=0.50 PerfScore 2.62
+G_M26691_IG13: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov r8, rbp
+ ; gcrRegs +[r8]
+ ;; size=9 bbWeight=0.50 PerfScore 0.38
+G_M26691_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ tail.jmp [<unknown method>]
+ ; gcr arg pop 0
+ ;; size=22 bbWeight=0.50 PerfScore 3.12
+G_M26691_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx rdx r8] +[rbx]
mov ecx, r15d
mov eax, r14d
add rcx, rax
@@ -164,14 +186,14 @@ G_M26691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E
mov eax, dword ptr [rbx+0x08]
add rcx, rax
cmp rcx, 0xD1FFAB1E
- jg G_M26691_IG18
+ jg G_M26691_IG19
call <unknown method>
; gcrRegs +[rax]
; gcr arg pop 0
mov r12, rax
; gcrRegs +[r12]
test r12, r12
- jne SHORT G_M26691_IG13
+ jne SHORT G_M26691_IG16
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -179,10 +201,10 @@ G_M26691_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- ;; size=76 bbWeight=0.50 PerfScore 7.38
-G_M26691_IG13: ; bbWeight=0.50, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+ ;; size=66 bbWeight=0.50 PerfScore 5.38
+G_M26691_IG16: ; bbWeight=0.50, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r12+0x08], r14d
- jge SHORT G_M26691_IG14
+ jge SHORT G_M26691_IG17
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -191,7 +213,7 @@ G_M26691_IG13: ; bbWeight=0.50, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=26 bbWeight=0.50 PerfScore 3.75
-G_M26691_IG14: ; bbWeight=0.50, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref
+G_M26691_IG17: ; bbWeight=0.50, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [r12+0x0C]
; byrRegs +[rcx]
lea rdx, bword ptr [rsi+0x0C]
@@ -230,7 +252,7 @@ G_M26691_IG14: ; bbWeight=0.50, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byr
mov rax, r12
; gcrRegs +[rax]
;; size=73 bbWeight=0.50 PerfScore 8.25
-G_M26691_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M26691_IG18: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -242,36 +264,14 @@ G_M26691_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M26691_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r12] +[rbp rsi rdi]
- mov rcx, rsi
- ; gcrRegs +[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- mov r8, rbp
- ; gcrRegs +[r8]
- ;; size=9 bbWeight=0.50 PerfScore 0.38
-G_M26691_IG17: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r12
- pop r13
- pop r14
- pop r15
- tail.jmp [<unknown method>]
- ; gcr arg pop 0
- ;; size=22 bbWeight=0.50 PerfScore 3.12
-G_M26691_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx rdx rbp rsi rdi r8]
+G_M26691_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r12]
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 408, prolog size 28, PerfScore 56.25, instruction count 139, allocated bytes for code 408 (MethodHash=389697bc) for method System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
+; Total bytes of code 394, prolog size 28, PerfScore 53.25, instruction count 136, allocated bytes for code 394 (MethodHash=389697bc) for method System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -26,7 +26,7 @@
;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V17 tmp12 [V17,T03] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
-; V18 tmp13 [V18,T00] ( 6, 52 ) ref -> r13 class-hnd exact "Inlining Arg" <System.String>
+; V18 tmp13 [V18,T00] ( 6, 52 ) ref -> r8 class-hnd exact "Inlining Arg" <System.String>
; V19 tmp14 [V19,T05] ( 2, 8 ) byref -> rcx "impAppendStmt"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -45,28 +45,27 @@
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V37 tmp32 [V37,T08] ( 3, 3 ) ref -> rcx single-def "arr expr"
+; V37 tmp32 [V37,T08] ( 3, 3 ) ref -> r8 single-def "arr expr"
; V38 tmp33 [V38,T10] ( 3, 3 ) int -> rdx "index expr"
; V39 cse0 [V39,T02] ( 4, 18.50) int -> rdi "CSE - aggressive"
; V40 cse1 [V40,T15] ( 2, 1 ) ref -> rax "CSE - aggressive"
; V41 cse2 [V41,T09] ( 3, 3 ) byref -> rbp "CSE - moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M51747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
- push r13
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=20 bbWeight=1 PerfScore 7.75
+ ;; size=18 bbWeight=1 PerfScore 6.75
G_M51747_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
je G_M51747_IG16
@@ -80,16 +79,15 @@ G_M51747_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M51747_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r13
pop r14
pop r15
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M51747_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx rsi]
lea rbp, bword ptr [rbx+0x0C]
@@ -104,42 +102,42 @@ G_M51747_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=004
; byrRegs -[rcx]
; gcr arg pop 0
mov r14d, eax
- mov rcx, gword ptr [rsi+0x08]
- ; gcrRegs +[rcx]
+ mov r8, gword ptr [rsi+0x08]
+ ; gcrRegs +[r8]
mov edx, r14d
and edx, dword ptr [rsi+0x14]
- cmp edx, dword ptr [rcx+0x08]
+ cmp edx, dword ptr [r8+0x08]
jae SHORT G_M51747_IG15
- mov r15, gword ptr [rcx+8*rdx+0x10]
+ mov r15, gword ptr [r8+8*rdx+0x10]
; gcrRegs +[r15]
test r15, r15
je SHORT G_M51747_IG11
- ;; size=57 bbWeight=0.50 PerfScore 8.75
+ ;; size=58 bbWeight=0.50 PerfScore 8.75
G_M51747_IG06: ; bbWeight=4, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
- ; gcrRegs -[rcx]
+ ; gcrRegs -[r8]
cmp dword ptr [r15+0x18], r14d
jne SHORT G_M51747_IG10
;; size=6 bbWeight=4 PerfScore 16.00
G_M51747_IG07: ; bbWeight=2, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
- mov r13, gword ptr [r15+0x08]
- ; gcrRegs +[r13]
- cmp byte ptr [r13], r13b
- cmp r13, rbx
+ mov r8, gword ptr [r15+0x08]
+ ; gcrRegs +[r8]
+ cmp byte ptr [r8], r8b
+ cmp r8, rbx
je SHORT G_M51747_IG13
- ;; size=13 bbWeight=2 PerfScore 12.50
-G_M51747_IG08: ; bbWeight=16, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0020 {rbp}, byref, isz
- cmp dword ptr [r13+0x08], edi
+ ;; size=12 bbWeight=2 PerfScore 12.50
+G_M51747_IG08: ; bbWeight=16, gcrefRegs=8148 {rbx rsi r8 r15}, byrefRegs=0020 {rbp}, byref, isz
+ cmp dword ptr [r8+0x08], edi
jne SHORT G_M51747_IG10
;; size=6 bbWeight=16 PerfScore 64.00
-G_M51747_IG09: ; bbWeight=2, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0020 {rbp}, byref, isz
- lea rcx, bword ptr [r13+0x0C]
+G_M51747_IG09: ; bbWeight=2, gcrefRegs=8148 {rbx rsi r8 r15}, byrefRegs=0020 {rbp}, byref, isz
+ lea rcx, bword ptr [r8+0x0C]
; byrRegs +[rcx]
- mov r8d, dword ptr [r13+0x08]
+ mov r8d, dword ptr [r8+0x08]
+ ; gcrRegs -[r8]
add r8d, r8d
mov rdx, rbp
; byrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[r13]
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
@@ -164,32 +162,30 @@ G_M51747_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
nop
;; size=16 bbWeight=0.50 PerfScore 2.00
G_M51747_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r13
pop r14
pop r15
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M51747_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[r15]
mov rax, gword ptr [r15+0x08]
; gcrRegs +[rax]
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M51747_IG14: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r13
pop r14
pop r15
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M51747_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r15]
call CORINFO_HELP_RNGCHKFAIL
@@ -209,7 +205,7 @@ G_M51747_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 261, prolog size 20, PerfScore 151.25, instruction count 90, allocated bytes for code 261 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier1)
+; Total bytes of code 253, prolog size 18, PerfScore 149.50, instruction count 86, allocated bytes for code 253 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier1)
; ============================================================
Unwind Info:
@@ -217,16 +213,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0E
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -16,7 +16,7 @@
;
; Lcl frame size = 40
-G_M26551_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M26551_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbp
@@ -48,7 +48,7 @@ G_M26551_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
G_M26551_IG04: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
add eax, -15
cmp eax, 1
- jbe SHORT G_M26551_IG05
+ jbe SHORT G_M26551_IG07
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rsi+0x88]
@@ -57,12 +57,19 @@ G_M26551_IG04: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
test eax, eax
jne SHORT G_M26551_IG03
- ;; size=25 bbWeight=4 PerfScore 32.00
+ jmp SHORT G_M26551_IG09
+ ;; size=27 bbWeight=4 PerfScore 40.00
G_M26551_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ mov rax, qword ptr [rsi+0x88]
+ call [rax]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, rdi
- ;; size=6 bbWeight=0.50 PerfScore 0.25
+ ;; size=18 bbWeight=0.50 PerfScore 2.88
G_M26551_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -75,14 +82,8 @@ G_M26551_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[rcx]
mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rsi+0x88]
- call [rax]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov rcx, rbx
- ; gcrRegs +[rcx]
mov rax, rdi
- ;; size=18 bbWeight=0.50 PerfScore 2.88
+ ;; size=6 bbWeight=0.50 PerfScore 0.25
G_M26551_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -91,14 +92,18 @@ G_M26551_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
tail.jmp [rax+0x28]<unknown method>
;; size=12 bbWeight=0.50 PerfScore 2.12
-RWD00 dd G_M26551_IG05 - G_M26551_IG02
+G_M26551_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx]
+ jmp SHORT G_M26551_IG07
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+RWD00 dd G_M26551_IG07 - G_M26551_IG02
+ dd G_M26551_IG05 - G_M26551_IG02
+ dd G_M26551_IG07 - G_M26551_IG02
+ dd G_M26551_IG07 - G_M26551_IG02
dd G_M26551_IG07 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
- dd G_M26551_IG05 - G_M26551_IG02
-; Total bytes of code 129, prolog size 8, PerfScore 135.88, instruction count 46, allocated bytes for code 129 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (Tier1)
+; Total bytes of code 133, prolog size 8, PerfScore 144.88, instruction count 48, allocated bytes for code 133 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (Tier1)
; ============================================================
Unwind Info:
@@ -20,39 +20,44 @@ G_M65033_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
mov eax, dword ptr [rcx+0x0C]
cmp eax, 1
- je SHORT G_M65033_IG05
+ je SHORT G_M65033_IG04
;; size=8 bbWeight=1 PerfScore 3.25
G_M65033_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp eax, 2
- jne SHORT G_M65033_IG07
+ jne SHORT G_M65033_IG08
mov eax, dword ptr [rcx+0x10]
inc eax
mov dword ptr [rcx+0x10], eax
cmp eax, dword ptr [rcx+0x18]
- je SHORT G_M65033_IG07
- mov eax, 1
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M65033_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M65033_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ je SHORT G_M65033_IG08
+ jmp SHORT G_M65033_IG06
+ ;; size=20 bbWeight=0.50 PerfScore 5.25
+G_M65033_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rcx+0x14]
mov dword ptr [rcx+0x10], eax
mov dword ptr [rcx+0x0C], 2
mov eax, 1
;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M65033_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG05: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M65033_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+G_M65033_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx]
+ mov eax, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M65033_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
+G_M65033_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rcx]
mov dword ptr [rcx+0x0C], -1
xor eax, eax
;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M65033_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M65033_IG09: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 61, prolog size 0, PerfScore 11.88, instruction count 20, allocated bytes for code 61 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 63, prolog size 0, PerfScore 12.88, instruction count 21, allocated bytes for code 63 (MethodHash=273701f6) for method System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -121,7 +121,7 @@ G_M52295_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
G_M52295_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref
; GC ptr vars +{V00}
cmp dword ptr [rsi+0x14], 0x2710
- jge G_M52295_IG21
+ jge G_M52295_IG23
;; size=13 bbWeight=1 PerfScore 4.00
G_M52295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
mov rcx, gword ptr [rsi+0x08]
@@ -129,7 +129,7 @@ G_M52295_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
mov r8, gword ptr [rbx+0x10]
; gcrRegs +[r8]
cmp byte ptr [r8+0x24], 0
- jne G_M52295_IG08
+ jne G_M52295_IG13
lea rdx, [rbp+0xB0]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
@@ -143,11 +143,11 @@ G_M52295_IG04: ; bbWeight=4, nogc, extend
vmovdqu xmm0, xmmword ptr [rbp+0xD0]
vmovdqu xmmword ptr [rbp+0x100], xmm0
;; size=32 bbWeight=4 PerfScore 36.00
-G_M52295_IG05: ; bbWeight=4, isz, extend
+G_M52295_IG05: ; bbWeight=4, extend
mov rdi, gword ptr [rbp+0xE0]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M52295_IG09
+ je G_M52295_IG15
mov rdx, rdi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Pipelines.ReadResult]
@@ -155,7 +155,7 @@ G_M52295_IG05: ; bbWeight=4, isz, extend
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- jne G_M52295_IG09
+ jne G_M52295_IG15
mov rdx, rdi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -166,16 +166,10 @@ G_M52295_IG05: ; bbWeight=4, isz, extend
test rax, rax
setne cl
test cl, cl
- jne SHORT G_M52295_IG06
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- mov rcx, rdx
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
- ; gcr arg pop 0
- ;; size=92 bbWeight=4 PerfScore 51.00
-G_M52295_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+ je G_M52295_IG14
+ ;; size=77 bbWeight=4 PerfScore 37.00
+G_M52295_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[rax]
mov rdx, rdi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Pipelines.ReadResult]
@@ -183,12 +177,137 @@ G_M52295_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rs
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M52295_IG10
+ je G_M52295_IG16
test dword ptr [rax+0x34], 0xD1FFAB1E
- jne G_M52295_IG11
- ;; size=36 bbWeight=4 PerfScore 27.00
-G_M52295_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
- ; gcrRegs -[rax rbx rdi]
+ je G_M52295_IG17
+ ;; size=40 bbWeight=4 PerfScore 27.00
+G_M52295_IG07: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[rax rdi]
+ mov rdi, gword ptr [rbp+0xE0]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
+ je G_M52295_IG19
+ ;; size=16 bbWeight=8 PerfScore 18.00
+G_M52295_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Pipelines.ReadResult]
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ test rax, rax
+ jne G_M52295_IG19
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFANY
+ ; gcrRegs -[rdx]
+ ; gcr arg pop 0
+ xor ecx, ecx
+ test rax, rax
+ setne cl
+ test cl, cl
+ je G_M52295_IG18
+ ;; size=61 bbWeight=4 PerfScore 28.00
+G_M52295_IG09: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs -[rax]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Pipelines.ReadResult]
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ mov r14, rax
+ ; gcrRegs +[r14]
+ test r14, r14
+ je G_M52295_IG22
+ mov ecx, dword ptr [r14+0x34]
+ and ecx, 0xD1FFAB1E
+ cmp ecx, 0xD1FFAB1E
+ je SHORT G_M52295_IG10
+ mov rcx, r14
+ ; gcrRegs +[rcx]
+ xor edx, edx
+ call [<unknown method>]
+ ; gcrRegs -[rax rcx rdi]
+ ; gcr arg pop 0
+ ;; size=59 bbWeight=4 PerfScore 40.00
+G_M52295_IG10: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
+ mov ecx, dword ptr [r14+0x34]
+ and ecx, 0xD1FFAB1E
+ cmp ecx, 0xD1FFAB1E
+ je SHORT G_M52295_IG11
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=44 bbWeight=4 PerfScore 28.00
+G_M52295_IG11: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, nogc
+ vmovdqu ymm0, ymmword ptr [r14+0x38]
+ vmovdqu ymmword ptr [rbp-0x40], ymm0
+ ;; size=11 bbWeight=4 PerfScore 24.00
+G_M52295_IG12: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[r14]
+ mov rcx, gword ptr [rbp-0x38]
+ ; gcrRegs +[rcx]
+ mov edx, dword ptr [rbp-0x28]
+ mov rax, gword ptr [rsi+0x08]
+ ; gcrRegs +[rax]
+ and edx, 0xD1FFAB1E
+ mov gword ptr [rbp-0x58], rcx
+ mov dword ptr [rbp-0x50], edx
+ mov rcx, rax
+ lea rdx, [rbp-0x58]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
+ mov rax, qword ptr [rax+0x48]
+ call [rax+0x38]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ inc dword ptr [rsi+0x14]
+ cmp dword ptr [rsi+0x14], 0x2710
+ jl G_M52295_IG03
+ jmp G_M52295_IG23
+ ;; size=62 bbWeight=8 PerfScore 184.00
+G_M52295_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[rbx]
+ mov ecx, 70
+ call [System.ThrowHelper:ThrowObjectDisposedException(int)]
+ ; gcr arg pop 0
+ int3
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M52295_IG14: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs +[rbx rdi]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ mov rcx, rdx
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ jmp G_M52295_IG06
+ ;; size=24 bbWeight=4 PerfScore 22.00
+G_M52295_IG15: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
+ test rdi, rdi
+ jne G_M52295_IG06
+ jmp G_M52295_IG07
+ ;; size=14 bbWeight=4 PerfScore 13.00
+G_M52295_IG16: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
+ mov rcx, rdi
+ ; gcrRegs +[rcx]
+ movsx rdx, word ptr [rbp+0xE8]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rcx rdi]
+ ; gcr arg pop 0
+ test eax, eax
+ jne G_M52295_IG07
+ ;; size=32 bbWeight=4 PerfScore 31.00
+G_M52295_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[rbx]
xor eax, eax
mov dword ptr [rsi+0x10], eax
lea rdi, bword ptr [rsi+0x20]
@@ -215,143 +334,32 @@ G_M52295_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- jmp G_M52295_IG31
+ jmp G_M52295_IG33
;; size=78 bbWeight=1 PerfScore 18.75
-G_M52295_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
- mov ecx, 70
- call [System.ThrowHelper:ThrowObjectDisposedException(int)]
- ; gcr arg pop 0
- int3
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M52295_IG09: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+G_M52295_IG18: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs +[rbx rdi]
- test rdi, rdi
- jne G_M52295_IG06
- jmp SHORT G_M52295_IG11
- ;; size=11 bbWeight=4 PerfScore 13.00
-G_M52295_IG10: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
- mov rcx, rdi
- ; gcrRegs +[rcx]
- movsx rdx, word ptr [rbp+0xE8]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
- ; gcrRegs -[rcx rdi]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M52295_IG11
- jmp G_M52295_IG07
- ;; size=33 bbWeight=4 PerfScore 39.00
-G_M52295_IG11: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
- mov rdi, gword ptr [rbp+0xE0]
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M52295_IG13
- ;; size=12 bbWeight=8 PerfScore 18.00
-G_M52295_IG12: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
- mov rdx, rdi
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[System.IO.Pipelines.ReadResult]
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
...
@@ -13,7 +13,7 @@
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T02] ( 4, 4 ) ref -> rbx class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 3, 3 ) ref -> rbx class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V07 loc7 [V07,T06] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 5, 5 ) ref -> rax class-hnd exact single-def <<unknown class>>
@@ -21,71 +21,70 @@
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref single-def
-; V13 tmp4 [V13,T10] ( 2, 2 ) int -> rcx
+;* V13 tmp4 [V13,T09] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref single-def
-;* V16 tmp7 [V16,T29] ( 0, 0 ) int -> zero-ref
-; V17 tmp8 [V17,T11] ( 2, 2 ) int -> rcx single-def
+;* V16 tmp7 [V16,T28] ( 0, 0 ) int -> zero-ref
+;* V17 tmp8 [V17,T10] ( 0, 0 ) int -> zero-ref single-def
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref single-def
-; V19 tmp10 [V19,T12] ( 2, 2 ) int -> rdx
-; V20 tmp11 [V20,T13] ( 2, 2 ) int -> rcx single-def
+;* V19 tmp10 [V19,T11] ( 0, 0 ) int -> zero-ref
+;* V20 tmp11 [V20,T12] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref single-def
-; V22 tmp13 [V22,T14] ( 2, 2 ) int -> rax
-; V23 tmp14 [V23,T15] ( 2, 2 ) int -> rax single-def
+;* V22 tmp13 [V22,T13] ( 0, 0 ) int -> zero-ref
+;* V23 tmp14 [V23,T14] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref single-def
-;* V25 tmp16 [V25,T30] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T16] ( 2, 2 ) int -> rax single-def
+;* V25 tmp16 [V25,T29] ( 0, 0 ) int -> zero-ref
+;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29,T15] ( 0, 0 ) int -> zero-ref single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref single-def
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref single-def
-;* V32 tmp23 [V32,T31] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32,T30] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref single-def
-;* V34 tmp25 [V34,T32] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V34 tmp25 [V34,T31] ( 0, 0 ) int -> zero-ref
+;* V35 tmp26 [V35,T16] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref single-def
-;* V37 tmp28 [V37,T19] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V37 tmp28 [V37,T17] ( 0, 0 ) int -> zero-ref
+;* V38 tmp29 [V38,T18] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref single-def
-;* V40 tmp31 [V40,T33] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V40 tmp31 [V40,T32] ( 0, 0 ) int -> zero-ref
+;* V41 tmp32 [V41,T19] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref single-def
-;* V43 tmp34 [V43,T22] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T34] ( 0, 0 ) int -> zero-ref single-def
+;* V43 tmp34 [V43,T20] ( 0, 0 ) int -> zero-ref
+;* V44 tmp35 [V44,T33] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref single-def
-;* V46 tmp37 [V46,T35] ( 0, 0 ) int -> zero-ref
-; V47 tmp38 [V47,T23] ( 2, 2 ) int -> rax single-def
+;* V46 tmp37 [V46,T34] ( 0, 0 ) int -> zero-ref
+;* V47 tmp38 [V47,T21] ( 0, 0 ) int -> zero-ref single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref single-def
-;* V49 tmp40 [V49,T36] ( 0, 0 ) int -> zero-ref
-; V50 tmp41 [V50,T24] ( 2, 2 ) int -> rax single-def
+;* V49 tmp40 [V49,T35] ( 0, 0 ) int -> zero-ref
+;* V50 tmp41 [V50,T22] ( 0, 0 ) int -> zero-ref single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref single-def
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref single-def
-;* V53 tmp44 [V53,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T37] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56,T36] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref single-def
-;* V58 tmp49 [V58,T38] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp49 [V58,T37] ( 0, 0 ) int -> zero-ref
+;* V59 tmp50 [V59,T23] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref single-def
-;* V61 tmp52 [V61,T27] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T28] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp52 [V61,T24] ( 0, 0 ) int -> zero-ref
+;* V62 tmp53 [V62,T25] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref single-def
-;* V64 tmp55 [V64,T39] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T40] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp55 [V64,T38] ( 0, 0 ) int -> zero-ref
+;* V65 tmp56 [V65,T39] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref single-def
-;* V67 tmp58 [V67,T41] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T42] ( 0, 0 ) int -> zero-ref single-def
+;* V67 tmp58 [V67,T40] ( 0, 0 ) int -> zero-ref
+; V68 tmp59 [V68,T26] ( 2, 2 ) int -> rcx single-def
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref single-def
-;* V70 tmp61 [V70,T43] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T03] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V72 cse1 [V72,T07] ( 2, 2 ) int -> rax "CSE - moderate"
+; V70 tmp61 [V70,T27] ( 2, 2 ) int -> rax
+;* V71 cse0 [V71,T03] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V72 cse1 [V72,T07] ( 0, 0 ) int -> zero-ref "CSE - moderate"
;* V73 cse2 [V73,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
-; V74 cse3 [V74,T01] ( 2, 2 ) int -> rdx "CSE - moderate"
-; V75 cse4 [V75,T04] ( 2, 2 ) int -> rcx "CSE - moderate"
+; V74 cse3 [V74,T01] ( 2, 2 ) int -> rcx "CSE - moderate"
+;* V75 cse4 [V75,T04] ( 0, 0 ) int -> zero-ref "CSE - moderate"
; V76 cse5 [V76,T05] ( 2, 2 ) int -> rax "CSE - moderate"
-; V77 cse6 [V77,T09] ( 2, 2 ) int -> rax "CSE - moderate"
;
; Lcl frame size = 32
@@ -118,25 +117,18 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov byte ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
- mov ecx, dword ptr [rbx+0x08]
- add ecx, 17
- mov edx, dword ptr [rax+0x14]
- add ecx, edx
+ mov ecx, dword ptr [rax+0x14]
mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
add eax, ecx
- add eax, 3
- add eax, -5
- add eax, 3
- add eax, -5
- ;; size=154 bbWeight=1 PerfScore 21.50
+ ;; size=134 bbWeight=1 PerfScore 18.00
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 165, prolog size 5, PerfScore 24.50, instruction count 34, allocated bytes for code 165 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 145, prolog size 5, PerfScore 21.00, instruction count 27, allocated bytes for code 145 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -10,78 +10,77 @@
;
;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc2 [V02,T03] ( 4, 4 ) ref -> rbx class-hnd exact single-def <testout1>
+; V02 loc2 [V02,T03] ( 3, 3 ) ref -> rbx class-hnd exact single-def <testout1>
; V03 loc3 [V03,T01] ( 5, 5 ) ref -> rax class-hnd exact single-def <<unknown class>>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
; V06 tmp2 [V06,T00] ( 3, 6 ) ref -> rax class-hnd exact single-def "dup spill" <<unknown class>>
;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref single-def
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref single-def
-; V09 tmp5 [V09,T10] ( 2, 2 ) int -> rcx
+;* V09 tmp5 [V09,T09] ( 0, 0 ) int -> zero-ref
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref single-def
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref single-def
-;* V12 tmp8 [V12,T29] ( 0, 0 ) int -> zero-ref
-; V13 tmp9 [V13,T11] ( 2, 2 ) int -> rcx single-def
+;* V12 tmp8 [V12,T28] ( 0, 0 ) int -> zero-ref
+;* V13 tmp9 [V13,T10] ( 0, 0 ) int -> zero-ref single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref single-def
-; V15 tmp11 [V15,T12] ( 2, 2 ) int -> rdx
-; V16 tmp12 [V16,T13] ( 2, 2 ) int -> rcx single-def
+;* V15 tmp11 [V15,T11] ( 0, 0 ) int -> zero-ref
+;* V16 tmp12 [V16,T12] ( 0, 0 ) int -> zero-ref single-def
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref single-def
-; V18 tmp14 [V18,T14] ( 2, 2 ) int -> rax
-; V19 tmp15 [V19,T15] ( 2, 2 ) int -> rax single-def
+;* V18 tmp14 [V18,T13] ( 0, 0 ) int -> zero-ref
+;* V19 tmp15 [V19,T14] ( 0, 0 ) int -> zero-ref single-def
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref single-def
-;* V21 tmp17 [V21,T30] ( 0, 0 ) int -> zero-ref
-; V22 tmp18 [V22,T16] ( 2, 2 ) int -> rax single-def
+;* V21 tmp17 [V21,T29] ( 0, 0 ) int -> zero-ref
+;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref
-;* V25 tmp21 [V25,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V25 tmp21 [V25,T15] ( 0, 0 ) int -> zero-ref single-def
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref single-def
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref single-def
-;* V28 tmp24 [V28,T31] ( 0, 0 ) int -> zero-ref single-def
+;* V28 tmp24 [V28,T30] ( 0, 0 ) int -> zero-ref single-def
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref single-def
-;* V30 tmp26 [V30,T32] ( 0, 0 ) int -> zero-ref
-;* V31 tmp27 [V31,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V30 tmp26 [V30,T31] ( 0, 0 ) int -> zero-ref
+;* V31 tmp27 [V31,T16] ( 0, 0 ) int -> zero-ref single-def
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref single-def
-;* V33 tmp29 [V33,T19] ( 0, 0 ) int -> zero-ref
-;* V34 tmp30 [V34,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V33 tmp29 [V33,T17] ( 0, 0 ) int -> zero-ref
+;* V34 tmp30 [V34,T18] ( 0, 0 ) int -> zero-ref single-def
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref single-def
-;* V36 tmp32 [V36,T33] ( 0, 0 ) int -> zero-ref
-;* V37 tmp33 [V37,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V36 tmp32 [V36,T32] ( 0, 0 ) int -> zero-ref
+;* V37 tmp33 [V37,T19] ( 0, 0 ) int -> zero-ref single-def
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref single-def
-;* V39 tmp35 [V39,T22] ( 0, 0 ) int -> zero-ref
-;* V40 tmp36 [V40,T34] ( 0, 0 ) int -> zero-ref single-def
+;* V39 tmp35 [V39,T20] ( 0, 0 ) int -> zero-ref
+;* V40 tmp36 [V40,T33] ( 0, 0 ) int -> zero-ref single-def
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref single-def
-;* V42 tmp38 [V42,T35] ( 0, 0 ) int -> zero-ref
-; V43 tmp39 [V43,T23] ( 2, 2 ) int -> rax single-def
+;* V42 tmp38 [V42,T34] ( 0, 0 ) int -> zero-ref
+;* V43 tmp39 [V43,T21] ( 0, 0 ) int -> zero-ref single-def
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref single-def
-;* V45 tmp41 [V45,T36] ( 0, 0 ) int -> zero-ref
-; V46 tmp42 [V46,T24] ( 2, 2 ) int -> rax single-def
+;* V45 tmp41 [V45,T35] ( 0, 0 ) int -> zero-ref
+;* V46 tmp42 [V46,T22] ( 0, 0 ) int -> zero-ref single-def
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref single-def
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref single-def
-;* V49 tmp45 [V49,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V49 tmp45 [V49 ] ( 0, 0 ) int -> zero-ref
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp48 [V52,T37] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp48 [V52,T36] ( 0, 0 ) int -> zero-ref single-def
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref single-def
-;* V54 tmp50 [V54,T38] ( 0, 0 ) int -> zero-ref
-;* V55 tmp51 [V55,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V54 tmp50 [V54,T37] ( 0, 0 ) int -> zero-ref
+;* V55 tmp51 [V55,T23] ( 0, 0 ) int -> zero-ref single-def
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref single-def
-;* V57 tmp53 [V57,T27] ( 0, 0 ) int -> zero-ref
-;* V58 tmp54 [V58,T28] ( 0, 0 ) int -> zero-ref single-def
+;* V57 tmp53 [V57,T24] ( 0, 0 ) int -> zero-ref
+;* V58 tmp54 [V58,T25] ( 0, 0 ) int -> zero-ref single-def
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref single-def
-;* V60 tmp56 [V60,T39] ( 0, 0 ) int -> zero-ref
-;* V61 tmp57 [V61,T40] ( 0, 0 ) int -> zero-ref single-def
+;* V60 tmp56 [V60,T38] ( 0, 0 ) int -> zero-ref
+;* V61 tmp57 [V61,T39] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref single-def
-;* V63 tmp59 [V63,T41] ( 0, 0 ) int -> zero-ref
-;* V64 tmp60 [V64,T42] ( 0, 0 ) int -> zero-ref single-def
+;* V63 tmp59 [V63,T40] ( 0, 0 ) int -> zero-ref
+; V64 tmp60 [V64,T26] ( 2, 2 ) int -> rcx single-def
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref single-def
-;* V66 tmp62 [V66,T43] ( 0, 0 ) int -> zero-ref
-; V67 cse0 [V67,T04] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V68 cse1 [V68,T07] ( 2, 2 ) int -> rax "CSE - moderate"
+; V66 tmp62 [V66,T27] ( 2, 2 ) int -> rax
+;* V67 cse0 [V67,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
+;* V68 cse1 [V68,T07] ( 0, 0 ) int -> zero-ref "CSE - moderate"
;* V69 cse2 [V69,T08] ( 0, 0 ) int -> zero-ref "CSE - moderate"
-; V70 cse3 [V70,T02] ( 2, 2 ) int -> rdx "CSE - moderate"
-; V71 cse4 [V71,T05] ( 2, 2 ) int -> rcx "CSE - moderate"
+; V70 cse3 [V70,T02] ( 2, 2 ) int -> rcx "CSE - moderate"
+;* V71 cse4 [V71,T05] ( 0, 0 ) int -> zero-ref "CSE - moderate"
; V72 cse5 [V72,T06] ( 2, 2 ) int -> rax "CSE - moderate"
-; V73 cse6 [V73,T09] ( 2, 2 ) int -> rax "CSE - moderate"
;
; Lcl frame size = 32
@@ -114,25 +113,18 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov byte ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
- mov ecx, dword ptr [rbx+0x08]
- add ecx, 17
- mov edx, dword ptr [rax+0x14]
- add ecx, edx
+ mov ecx, dword ptr [rax+0x14]
mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
add eax, ecx
- add eax, 3
- add eax, -5
- add eax, 3
- add eax, -5
- ;; size=154 bbWeight=1 PerfScore 21.50
+ ;; size=134 bbWeight=1 PerfScore 18.00
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 165, prolog size 5, PerfScore 24.50, instruction count 34, allocated bytes for code 165 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 145, prolog size 5, PerfScore 21.00, instruction count 27, allocated bytes for code 145 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -32,15 +32,14 @@ G_M23529_IG04: ; bbWeight=0.85, epilog, nogc, extend
G_M23529_IG05: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
cmp qword ptr [rdx], rcx
- jne SHORT G_M23529_IG06
- jmp SHORT G_M23529_IG03
- ;; size=7 bbWeight=0.46 PerfScore 2.77
+ je SHORT G_M23529_IG03
+ ;; size=5 bbWeight=0.46 PerfScore 1.85
G_M23529_IG06: ; bbWeight=0.15, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
tail.jmp [System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object]
; gcr arg pop 0
;; size=6 bbWeight=0.15 PerfScore 0.31
-; Total bytes of code 22, prolog size 0, PerfScore 5.38, instruction count 8, allocated bytes for code 22 (MethodHash=3733a416) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 20, prolog size 0, PerfScore 4.46, instruction count 7, allocated bytes for code 20 (MethodHash=3733a416) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -9,10 +9,10 @@
; 4 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 5 ) byref -> rbx this single-def
+; V00 this [V00,T01] ( 9, 5 ) byref -> rbx this single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 6 ) int -> rcx "Span.get_Item index"
-; V03 tmp2 [V03,T02] ( 3, 6 ) byref -> rax "Span.get_Item ptrToSpan"
+; V02 tmp1 [V02,T03] ( 3, 6 ) int -> rsi "Span.get_Item index"
+; V03 tmp2 [V03,T02] ( 3, 6 ) byref -> rcx "Span.get_Item ptrToSpan"
; V04 tmp3 [V04,T05] ( 2, 2 ) ubyte -> rax "Inline return value spill temp"
; V05 tmp4 [V05,T00] ( 4, 8 ) ushort -> rcx "Inlining Arg"
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -34,57 +34,65 @@
;* V22 tmp21 [V22 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V23 tmp22 [V23 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V25 cse0 [V25,T04] ( 3, 3 ) int -> rcx "CSE - aggressive"
+; V25 cse0 [V25,T04] ( 5, 3 ) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M7781_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rsi
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; byrRegs +[rbx]
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=9 bbWeight=1 PerfScore 2.50
G_M7781_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov ecx, dword ptr [rbx+0x20]
- cmp ecx, dword ptr [rbx+0x38]
- jge SHORT G_M7781_IG05
- lea rax, bword ptr [rbx+0x30]
- ; byrRegs +[rax]
- cmp ecx, dword ptr [rax+0x08]
- jae SHORT G_M7781_IG06
- mov rax, bword ptr [rax]
- movzx rcx, word ptr [rax+2*rcx]
+ mov esi, dword ptr [rbx+0x20]
+ cmp esi, dword ptr [rbx+0x38]
+ jge SHORT G_M7781_IG06
+ ;; size=8 bbWeight=1 PerfScore 6.00
+G_M7781_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ lea rcx, bword ptr [rbx+0x30]
+ ; byrRegs +[rcx]
+ cmp esi, dword ptr [rcx+0x08]
+ jae SHORT G_M7781_IG07
+ mov rcx, bword ptr [rcx]
+ mov eax, esi
+ movzx rcx, word ptr [rcx+2*rax]
+ ; byrRegs -[rcx]
cmp ecx, 256
jb SHORT G_M7781_IG04
call [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
- ; byrRegs -[rax]
; gcr arg pop 0
test eax, eax
- je SHORT G_M7781_IG05
- ;; size=42 bbWeight=1 PerfScore 20.00
-G_M7781_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- inc dword ptr [rbx+0x20]
- jmp SHORT G_M7781_IG02
- ;; size=5 bbWeight=0 PerfScore 0.00
+ jne SHORT G_M7781_IG05
+ jmp SHORT G_M7781_IG06
+ ;; size=38 bbWeight=1 PerfScore 16.25
G_M7781_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, ecx
mov rax, 0xD1FFAB1E ; static handle
test byte ptr [rcx+rax], 128
- jne SHORT G_M7781_IG03
+ je SHORT G_M7781_IG06
;; size=18 bbWeight=1 PerfScore 4.50
-G_M7781_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M7781_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ inc dword ptr [rbx+0x20]
+ mov esi, dword ptr [rbx+0x20]
+ cmp esi, dword ptr [rbx+0x38]
+ jl SHORT G_M7781_IG03
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M7781_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbx]
- add rsp, 32
+ add rsp, 40
pop rbx
+ pop rsi
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
-G_M7781_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M7781_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 85, prolog size 8, PerfScore 27.75, instruction count 27, allocated bytes for code 85 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 97, prolog size 9, PerfScore 31.50, instruction count 33, allocated bytes for code 97 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
; ============================================================
Unwind Info:
@@ -92,10 +100,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x06
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
@@ -10,78 +10,77 @@
;
;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 loc2 [V02,T02] ( 3, 3 ) ref -> rbx class-hnd exact single-def <testout1>
+; V02 loc2 [V02,T02] ( 4, 4 ) ref -> rbx class-hnd exact single-def <testout1>
; V03 loc3 [V03,T01] ( 5, 5 ) ref -> rax class-hnd exact single-def <<unknown class>>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
; V06 tmp2 [V06,T00] ( 3, 6 ) ref -> rax class-hnd exact single-def "dup spill" <<unknown class>>
-;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref single-def
+;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref
-;* V10 tmp6 [V10,T10] ( 0, 0 ) int -> zero-ref single-def
+;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref
-;* V13 tmp9 [V13,T11] ( 0, 0 ) int -> zero-ref single-def
+;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref
-;* V16 tmp12 [V16,T12] ( 0, 0 ) int -> zero-ref single-def
+;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref
-;* V19 tmp15 [V19,T13] ( 0, 0 ) int -> zero-ref single-def
+; V19 tmp15 [V19,T08] ( 2, 2 ) int -> r10 single-def
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref
-;* V25 tmp21 [V25,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref
-;* V28 tmp24 [V28,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref
-;* V31 tmp27 [V31,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref
-;* V34 tmp30 [V34,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref
-;* V37 tmp33 [V37,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref
-;* V40 tmp36 [V40,T24] ( 0, 0 ) int -> zero-ref single-def
+; V40 tmp36 [V40,T09] ( 2, 2 ) int -> rcx single-def
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref
-;* V43 tmp39 [V43,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V43 tmp39 [V43 ] ( 0, 0 ) int -> zero-ref
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref
-;* V46 tmp42 [V46,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp45 [V49 ] ( 0, 0 ) int -> zero-ref
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp48 [V52,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp50 [V54 ] ( 0, 0 ) int -> zero-ref
-;* V55 tmp51 [V55,T20] ( 0, 0 ) int -> zero-ref single-def
+; V55 tmp51 [V55,T10] ( 2, 2 ) int -> rcx single-def
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref
-;* V58 tmp54 [V58,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref
-;* V61 tmp57 [V61,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp57 [V61 ] ( 0, 0 ) int -> zero-ref
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp59 [V63 ] ( 0, 0 ) int -> zero-ref
-; V64 tmp60 [V64,T22] ( 2, 2 ) int -> rcx single-def
+;* V64 tmp60 [V64 ] ( 0, 0 ) int -> zero-ref
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp62 [V66 ] ( 0, 0 ) int -> zero-ref
-;* V67 cse0 [V67,T06] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-;* V68 cse1 [V68,T03] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V69 cse2 [V69,T04] ( 2, 2 ) int -> rcx "CSE - aggressive"
-;* V70 cse3 [V70,T05] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V71 cse4 [V71,T07] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V72 cse5 [V72,T08] ( 2, 2 ) long -> rcx "CSE - aggressive"
-; V73 cse6 [V73,T09] ( 2, 2 ) long -> rcx "CSE - aggressive"
+; V67 cse0 [V67,T11] ( 2, 2 ) int -> rcx "CSE - aggressive"
+; V68 cse1 [V68,T03] ( 4, 4 ) int -> rdx "CSE - aggressive"
+; V69 cse2 [V69,T04] ( 4, 4 ) int -> r8 "CSE - aggressive"
+; V70 cse3 [V70,T05] ( 4, 4 ) int -> rax "CSE - aggressive"
+; V71 cse4 [V71,T06] ( 3, 3 ) long -> rcx "CSE - aggressive"
+; V72 cse5 [V72,T07] ( 2, 2 ) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -115,18 +114,27 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov byte ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
- mov ecx, dword ptr [rax+0x14]
+ mov edx, dword ptr [rbx+0x08]
+ mov r8d, dword ptr [rax+0x14]
+ lea r10d, [rdx+r8]
mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
- add eax, ecx
- ;; size=140 bbWeight=1 PerfScore 18.25
+ lea r10d, [r10+rax+0x11]
+ add r10d, dword ptr [rcx]
+ add r10d, edx
+ lea ecx, [r10+r8+0x0A]
+ add ecx, eax
+ add ecx, edx
+ add ecx, r8d
+ lea eax, [rcx+rax+0x11]
+ ;; size=173 bbWeight=1 PerfScore 27.50
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 151, prolog size 5, PerfScore 21.25, instruction count 28, allocated bytes for code 151 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 184, prolog size 5, PerfScore 30.50, instruction count 37, allocated bytes for code 184 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -8,83 +8,82 @@
; 0 inlinees with PGO data; 25 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T00] ( 8, 8 ) int -> r10
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 loc3 [V03 ] ( 0, 0 ) ubyte -> zero-ref
;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc5 [V05,T01] ( 3, 3 ) ref -> rbx class-hnd exact single-def <testout1>
+; V05 loc5 [V05,T02] ( 4, 4 ) ref -> rbx class-hnd exact single-def <testout1>
;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T05] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
-; V08 loc8 [V08,T00] ( 5, 5 ) ref -> rax class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T06] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>>
+; V08 loc8 [V08,T01] ( 5, 5 ) ref -> rax class-hnd exact single-def <<unknown class>>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 tmp5 [V14,T09] ( 0, 0 ) int -> zero-ref single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
-;* V17 tmp8 [V17,T10] ( 0, 0 ) int -> zero-ref single-def
+;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref
-;* V20 tmp11 [V20,T11] ( 0, 0 ) int -> zero-ref single-def
+;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-;* V23 tmp14 [V23,T12] ( 0, 0 ) int -> zero-ref single-def
+;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp20 [V29,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-;* V32 tmp23 [V32,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-;* V35 tmp26 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp29 [V38,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp38 [V47,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp41 [V50,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-; V68 tmp59 [V68,T21] ( 2, 2 ) int -> rcx single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-;* V71 cse0 [V71,T06] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-;* V72 cse1 [V72,T02] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V73 cse2 [V73,T03] ( 2, 2 ) int -> rcx "CSE - aggressive"
-;* V74 cse3 [V74,T04] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V75 cse4 [V75,T07] ( 2, 2 ) int -> rax "CSE - aggressive"
-; V76 cse5 [V76,T08] ( 2, 2 ) long -> rcx "CSE - aggressive"
+; V71 cse0 [V71,T08] ( 2, 2 ) int -> r10 "CSE - aggressive"
+; V72 cse1 [V72,T03] ( 4, 4 ) int -> rdx "CSE - aggressive"
+; V73 cse2 [V73,T04] ( 4, 4 ) int -> r8 "CSE - aggressive"
+; V74 cse3 [V74,T05] ( 4, 4 ) int -> rax "CSE - aggressive"
+; V75 cse4 [V75,T07] ( 3, 3 ) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -118,18 +117,28 @@ G_M59959_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov byte ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
mov dword ptr [rbx+0x08], -13
mov word ptr [rbx+0x0C], 256
- mov ecx, dword ptr [rax+0x14]
+ mov edx, dword ptr [rbx+0x08]
+ mov r8d, dword ptr [rax+0x14]
+ lea r10d, [rdx+r8]
mov eax, dword ptr [rax+0x10]
; gcrRegs -[rax]
- add eax, ecx
- ;; size=140 bbWeight=1 PerfScore 18.25
+ lea r10d, [r10+rax+0x11]
+ add r10d, dword ptr [rcx]
+ add r10d, edx
+ lea r10d, [r10+r8+0x0A]
+ add r10d, eax
+ add edx, r10d
+ add edx, r8d
+ lea r10d, [rdx+rax+0x11]
+ mov eax, r10d
+ ;; size=179 bbWeight=1 PerfScore 27.75
G_M59959_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 151, prolog size 5, PerfScore 21.25, instruction count 28, allocated bytes for code 151 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 190, prolog size 5, PerfScore 30.75, instruction count 38, allocated bytes for code 190 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
; ============================================================
Unwind Info:
@@ -9,46 +9,45 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 10 ) ref -> rbx this class-hnd single-def <System.Xml.XmlSqlBinaryReader>
-; V01 loc0 [V01,T10] ( 4, 2.50) int -> rsi
-; V02 loc1 [V02,T07] ( 4, 3.50) int -> rdi
-; V03 loc2 [V03,T08] ( 4, 3 ) int -> rbp
+; V00 this [V00,T00] ( 12, 8.50) ref -> rbx this class-hnd single-def <System.Xml.XmlSqlBinaryReader>
+; V01 loc0 [V01,T09] ( 4, 2.50) int -> rsi
+; V02 loc1 [V02,T06] ( 4, 3.50) int -> rdi
+; V03 loc2 [V03,T07] ( 4, 3 ) int -> rbp
;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc4 [V05,T04] ( 7, 4.50) ref -> r15 class-hnd <<unknown class>>
-; V06 loc5 [V06,T05] ( 5, 4 ) ref -> r13 class-hnd single-def <<unknown class>>
-; V07 loc6 [V07,T02] ( 10, 5 ) ref -> registers class-hnd <System.String>
-; V08 loc7 [V08,T11] ( 4, 2 ) ref -> registers class-hnd <System.String>
-; V09 loc8 [V09,T15] ( 3, 1.50) ref -> rbx class-hnd <System.String>
-; V10 loc9 [V10,T03] ( 7, 5 ) int -> r14
-; V11 loc10 [V11,T16] ( 3, 1.50) ref -> r13 class-hnd exact single-def <<unknown class>>
+; V05 loc4 [V05,T03] ( 7, 4.50) ref -> r15 class-hnd <<unknown class>>
+; V06 loc5 [V06,T04] ( 5, 4 ) ref -> rcx class-hnd single-def <<unknown class>>
+; V07 loc6 [V07,T10] ( 10, 1.50) ref -> r13 class-hnd <System.String>
+; V08 loc7 [V08,T12] ( 4, 1 ) ref -> rdi class-hnd <System.String>
+; V09 loc8 [V09,T13] ( 3, 1 ) ref -> rsi class-hnd <System.String>
+; V10 loc9 [V10,T02] ( 7, 5 ) int -> r14
+; V11 loc10 [V11,T11] ( 3, 1.50) ref -> r13 class-hnd exact single-def <<unknown class>>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 tmp1 [V13,T01] ( 3, 6 ) byref -> rcx single-def "dup spill"
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V15 tmp3 [V15,T19] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V16 tmp4 [V16,T17] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V16 tmp4 [V16,T15] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V17 tmp5 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
-; V18 tmp6 [V18,T06] ( 4, 4 ) byref -> rbp single-def "Inlining Arg"
-; V19 tmp7 [V19,T18] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V20 tmp8 [V20,T13] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V21 tmp9 [V21,T14] ( 2, 2 ) ref -> rbp single-def "argument with side effect"
-; V22 cse0 [V22,T12] ( 4, 2 ) int -> rcx "CSE - moderate"
-; V23 cse1 [V23,T09] ( 4, 3 ) int -> r12 "CSE - aggressive"
+; V18 tmp6 [V18,T05] ( 4, 4 ) byref -> rbx single-def "Inlining Arg"
+; V19 tmp7 [V19,T16] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V20 tmp8 [V20,T17] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V21 tmp9 [V21,T18] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V22 cse0 [V22,T14] ( 4, 0 ) int -> rcx "CSE - moderate"
+; V23 cse1 [V23,T08] ( 4, 3 ) int -> rdx "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M55691_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
push r13
- push r12
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 8.50
+ ;; size=17 bbWeight=1 PerfScore 7.50
G_M55691_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -81,7 +80,7 @@ G_M55691_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
G_M55691_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
imul ecx, r14d, 2
- jo G_M55691_IG16
+ jo G_M55691_IG11
movsxd rcx, ecx
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcrRegs +[rax]
@@ -106,170 +105,155 @@ G_M55691_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcrRegs -[rdx r13]
; byrRegs -[rcx]
;; size=56 bbWeight=0.50 PerfScore 7.12
-G_M55691_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov r13, gword ptr [rbx+0xC8]
- ; gcrRegs +[r13]
- mov r12d, dword ptr [r13+0x08]
- cmp edi, r12d
- jae G_M55691_IG15
- mov ecx, edi
- mov rdx, gword ptr [r13+8*rcx+0x10]
- ; gcrRegs +[rdx]
- mov rax, rdx
+G_M55691_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rbx+0xC8]
+ ; gcrRegs +[rcx]
+ mov edx, dword ptr [rcx+0x08]
+ cmp edi, edx
+ jae G_M55691_IG10
+ mov eax, edi
+ mov rax, gword ptr [rcx+8*rax+0x10]
; gcrRegs +[rax]
+ mov r13, rax
+ ; gcrRegs +[r13]
test ebp, ebp
- jne G_M55691_IG12
- ;; size=38 bbWeight=1 PerfScore 9.00
-G_M55691_IG05: ; bbWeight=0.50, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx r13]
- or esi, edi
jne SHORT G_M55691_IG07
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M55691_IG05: ; bbWeight=0.50, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rcx]
+ or esi, edi
+ jne SHORT G_M55691_IG12
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M55691_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
- pop r12
pop r13
pop r14
pop r15
ret
- ;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M55691_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, gcvars, byref
- mov ecx, dword ptr [rax+0x08]
- cmp ecx, 5
- jl G_M55691_IG17
- ;; size=12 bbWeight=0.50 PerfScore 1.62
-G_M55691_IG08: ; bbWeight=0.25, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
- mov r11, 0xD1FFAB1E
- xor r11, qword ptr [rax+0x0C]
- mov edx, dword ptr [rax+0x12]
- xor edx, 0xD1FFAB1E
- or r11, rdx
- jne G_M55691_IG17
- ;; size=32 bbWeight=0.25 PerfScore 1.69
-G_M55691_IG09: ; bbWeight=0.50, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 5
- jle SHORT G_M55691_IG10
- cmp ecx, 6
- je G_M55691_IG17
- cmp word ptr [rax+0x16], 58
- jne G_M55691_IG17
- mov rbp, gword ptr [rbx+0x18]
- ; gcrRegs +[rbp]
- mov rcx, rax
- ; gcrRegs +[rcx]
- lea r11, [(reloc)] ; function address
- mov edx, 6
- call [r11]<unknown method>
+ ;; size=15 bbWeight=0.50 PerfScore 2.38
+G_M55691_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=A002 {rcx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rbx] +[rcx]
+ cmp ebp, edx
+ jae SHORT G_M55691_IG10
+ mov eax, ebp
+ mov rdi, gword ptr [rcx+8*rax+0x10]
+ ; gcrRegs +[rdi]
+ cmp esi, edx
+ jae SHORT G_M55691_IG10
+ mov edx, esi
+ mov rsi, gword ptr [rcx+8*rdx+0x10]
+ ; gcrRegs +[rsi]
+ ;; size=22 bbWeight=0.50 PerfScore 3.50
+G_M55691_IG08: ; bbWeight=0.50, gcrefRegs=A0C0 {rsi rdi r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, rbp
- ; gcrRegs +[rcx]
- lea r11, [(reloc)] ; function address
- cmp dword ptr [rcx], ecx
- call [r11]<unknown method>
- ; gcrRegs -[rcx rdx rbp]
- ; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- mov rax, gword ptr [rbx+0x28]
- mov rdi, rax
- ; gcrRegs +[rdi]
- jmp SHORT G_M55691_IG11
- ;; size=77 bbWeight=0.50 PerfScore 12.00
-G_M55691_IG10: ; bbWeight=0.50, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi]
- mov rsi, rax
- ; gcrRegs +[rsi]
- mov rax, qword ptr [(reloc)] ; const ptr
- ; gcrRegs -[rax]
- mov rax, gword ptr [rax]
- ; gcrRegs +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- ;; size=16 bbWeight=0.50 PerfScore 2.25
-G_M55691_IG11: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rbx, gword ptr [rbx+0x30]
- jmp SHORT G_M55691_IG13
- ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M55691_IG12: ; bbWeight=0.50, gcrefRegs=A001 {rax r13 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rsi rdi] +[rax r13]
- cmp ebp, r12d
- jae SHORT G_M55691_IG15
- mov ecx, ebp
- mov rcx, gword ptr [r13+8*rcx+0x10]
- ; gcrRegs +[rcx]
- mov rdi, rcx
- ; gcrRegs +[rdi]
- cmp esi, r12d
- jae SHORT G_M55691_IG15
- mov ecx, esi
- ; gcrRegs -[rcx]
- mov rbx, gword ptr [r13+8*rcx+0x10]
- ; gcrRegs +[rbx]
- mov rsi, rdi
- ; gcrRegs +[rsi]
- mov rdi, rax
- ;; size=33 bbWeight=0.50 PerfScore 3.88
-G_M55691_IG13: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax r13]
cmp r14d, dword ptr [r15+0x08]
- jae SHORT G_M55691_IG15
+ jae SHORT G_M55691_IG10
mov ecx, r14d
lea rcx, [rcx+2*rcx]
- lea rbp, bword ptr [r15+8*rcx+0x10]
- ; byrRegs +[rbp]
- mov rcx, rbp
+ lea rbx, bword ptr [r15+8*rcx+0x10]
+ ; byrRegs +[rbx]
+ mov rcx, rbx
+ ; byrRegs +[rcx]
+ mov rdx, r13
+ ; gcrRegs +[rdx]
+ call [CORINFO_HELP_CHECKED_ASSIGN_REF]
+ ; gcrRegs -[rdx r13 r15]
+ ; byrRegs -[rcx]
+ lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
mov rdx, rdi
; gcrRegs +[rdx]
call [CORINFO_HELP_CHECKED_ASSIGN_REF]
- ; gcrRegs -[rdx rdi r15]
+ ; gcrRegs -[rdx rdi]
; byrRegs -[rcx]
...
1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder
1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.BitVector,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]):ubyte (FullOpts)@@ -81,12 +81,12 @@ G_M49290_IG02: ; bbWeight=1, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefR
mov dword ptr [rbp-0x40], 1
xor edx, edx
test r9d, r9d
- jle G_M49290_IG10
+ jle G_M49290_IG13
test r13, r13
- je G_M49290_IG09
+ je G_M49290_IG08
mov ecx, dword ptr [r15+0x08]
cmp dword ptr [r13+0x08], r9d
- jl G_M49290_IG11
+ jl G_M49290_IG08
;; size=49 bbWeight=1 PerfScore 12.75
G_M49290_IG03: ; bbWeight=3.96, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, byref, isz
mov rcx, r14
@@ -136,60 +136,41 @@ G_M49290_IG06: ; bbWeight=1.98, isz, extend
xor r11d, r11d
mov dword ptr [rbp-0x40], r11d
;; size=67 bbWeight=1.98 PerfScore 29.20
-G_M49290_IG07: ; bbWeight=3.96, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, byref
+G_M49290_IG07: ; bbWeight=3.96, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, byref, isz
mov ecx, dword ptr [rbp-0x44]
inc ecx
- mov r8d, dword ptr [rbp-0x3C]
- cmp ecx, r8d
+ cmp ecx, dword ptr [rbp-0x3C]
mov edx, ecx
- jl G_M49290_IG03
- ;; size=20 bbWeight=3.96 PerfScore 14.85
-G_M49290_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi r12-r13 r15]
- ; byrRegs -[rsi r14]
- mov r11d, dword ptr [rbp-0x40]
- jmp G_M49290_IG17
- ;; size=9 bbWeight=1 PerfScore 3.00
-G_M49290_IG09: ; bbWeight=0.50, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, byref, isz
- ; gcrRegs +[rbx rdi r12-r13 r15]
- ; byrRegs +[rsi r14]
- jmp SHORT G_M49290_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M49290_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi r12-r13 r15]
- ; byrRegs -[rsi r14]
- mov r11d, dword ptr [rbp-0x40]
- jmp G_M49290_IG17
- ;; size=9 bbWeight=0.50 PerfScore 1.50
-G_M49290_IG11: ; bbWeight=0.04, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, byref
- ; gcrRegs +[rbx rdi r12-r13 r15]
- ; byrRegs +[rsi r14]
+ jl SHORT G_M49290_IG03
+ jmp G_M49290_IG13
+ ;; size=17 bbWeight=3.96 PerfScore 25.74
+G_M49290_IG08: ; bbWeight=0.04, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, byref
mov rcx, r14
; byrRegs +[rcx]
mov dword ptr [rbp-0x44], edx
call [<unknown method>]
; byrRegs -[rcx]
test eax, eax
- jne G_M49290_IG20
+ jne G_M49290_IG12
;; size=20 bbWeight=0.04 PerfScore 0.22
-G_M49290_IG12: ; bbWeight=0.02, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, byref
+G_M49290_IG09: ; bbWeight=0.02, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, byref
mov eax, dword ptr [rbp-0x44]
mov ecx, eax
mov r9, gword ptr [r15+8*rcx+0x10]
; gcrRegs +[r9]
cmp eax, dword ptr [r13+0x08]
- jae G_M49290_IG21
+ jae G_M49290_IG15
mov dword ptr [rbp-0x44], eax
mov ecx, eax
lea rcx, [rcx+2*rcx]
;; size=29 bbWeight=0.02 PerfScore 0.18
-G_M49290_IG13: ; bbWeight=0.02, nogc, extend
+G_M49290_IG10: ; bbWeight=0.02, nogc, extend
movups xmm0, xmmword ptr [r13+8*rcx+0x10]
movups xmmword ptr [rbp-0x60], xmm0
mov rdx, qword ptr [r13+8*rcx+0x20]
mov qword ptr [rbp-0x50], rdx
;; size=19 bbWeight=0.02 PerfScore 0.16
-G_M49290_IG14: ; bbWeight=0.02, isz, extend
+G_M49290_IG11: ; bbWeight=0.02, isz, extend
mov gword ptr [rsp+0x28], r12
mov r10, gword ptr [rbp+0x40]
; gcrRegs +[r10]
@@ -215,28 +196,25 @@ G_M49290_IG14: ; bbWeight=0.02, isz, extend
; gcrRegs -[rcx r8-r10]
; byrRegs -[rdx r11]
test eax, eax
- mov eax, dword ptr [rbp-0x40]
- jne SHORT G_M49290_IG15
+ jne SHORT G_M49290_IG12
xor r11d, r11d
xor eax, eax
+ mov dword ptr [rbp-0x40], eax
;; size=76 bbWeight=0.02 PerfScore 0.34
-G_M49290_IG15: ; bbWeight=0.04, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, byref, isz
+G_M49290_IG12: ; bbWeight=0.04, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, byref
mov ecx, dword ptr [rbp-0x44]
inc ecx
mov r9d, dword ptr [rbp-0x3C]
cmp ecx, r9d
mov edx, ecx
- jl SHORT G_M49290_IG19
- ;; size=16 bbWeight=0.04 PerfScore 0.15
-G_M49290_IG16: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jl G_M49290_IG08
+ ;; size=20 bbWeight=0.04 PerfScore 0.15
+G_M49290_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi r12-r13 r15]
; byrRegs -[rsi r14]
- mov r11d, eax
- ;; size=3 bbWeight=0.02 PerfScore 0.01
-G_M49290_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, r11d
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M49290_IG18: ; bbWeight=1, epilog, nogc, extend
+ mov eax, dword ptr [rbp-0x40]
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M49290_IG14: ; bbWeight=1, epilog, nogc, extend
add rsp, 120
pop rbx
pop rsi
@@ -248,24 +226,12 @@ G_M49290_IG18: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=17 bbWeight=1 PerfScore 5.25
-G_M49290_IG19: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, gcvars, byref
- ; gcrRegs +[rbx rdi r12-r13 r15]
- ; byrRegs +[rsi r14]
- mov dword ptr [rbp-0x40], eax
- jmp G_M49290_IG11
- ;; size=8 bbWeight=0.02 PerfScore 0.06
-G_M49290_IG20: ; bbWeight=0.02, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=4040 {rsi r14}, byref, isz
- mov eax, dword ptr [rbp-0x40]
- jmp SHORT G_M49290_IG15
- ;; size=5 bbWeight=0.02 PerfScore 0.06
-G_M49290_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi r12-r13 r15]
- ; byrRegs -[rsi r14]
+G_M49290_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 471, prolog size 41, PerfScore 130.86, instruction count 134, allocated bytes for code 471 (MethodHash=ce803f75) for method Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.BitVector,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]):ubyte (FullOpts)
+; Total bytes of code 436, prolog size 41, PerfScore 136.88, instruction count 124, allocated bytes for code 436 (MethodHash=ce803f75) for method Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.BitVector,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 19 ) ref -> rbx class-hnd <System.Xml.Schema.XmlSchemaObject>
-; V01 loc0 [V01,T01] ( 4, 10 ) ref -> rax class-hnd <System.Xml.Schema.XmlSchema>
+; V00 arg0 [V00,T00] ( 6, 12 ) ref -> rbx class-hnd <System.Xml.Schema.XmlSchemaObject>
+; V01 loc0 [V01,T01] ( 4, 6 ) ref -> rax class-hnd <System.Xml.Schema.XmlSchema>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 32
@@ -24,10 +24,9 @@ G_M65415_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M65415_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor rax, rax
; gcrRegs +[rax]
- test rbx, rbx
- je SHORT G_M65415_IG04
- ;; size=7 bbWeight=1 PerfScore 1.50
-G_M65415_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M65415_IG04
+ ;; size=4 bbWeight=1 PerfScore 2.25
+G_M65415_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rbx, gword ptr [rbx+0x18]
mov rcx, rbx
@@ -36,18 +35,20 @@ G_M65415_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M65415_IG04
+ jne SHORT G_M65415_IG05
+ ;; size=18 bbWeight=2 PerfScore 13.00
+G_M65415_IG04: ; bbWeight=4, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
jne SHORT G_M65415_IG03
- ;; size=23 bbWeight=4 PerfScore 31.00
-G_M65415_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M65415_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 44, prolog size 8, PerfScore 35.75, instruction count 16, allocated bytes for code 44 (MethodHash=360f0078) for method System.Xml.Schema.Preprocessor:GetParentSchema(System.Xml.Schema.XmlSchemaObject):System.Xml.Schema.XmlSchema (FullOpts)
+; Total bytes of code 41, prolog size 8, PerfScore 23.50, instruction count 15, allocated bytes for code 41 (MethodHash=360f0078) for method System.Xml.Schema.Preprocessor:GetParentSchema(System.Xml.Schema.XmlSchemaObject):System.Xml.Schema.XmlSchema (FullOpts)
; ============================================================
Unwind Info:
@@ -13,31 +13,32 @@
; V01 arg1 [V01,T05] ( 3, 3 ) ubyte -> rbp single-def
; V02 arg2 [V02,T01] ( 10, 7 ) int -> rbx single-def
; V03 arg3 [V03,T04] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String>
-; V04 loc0 [V04,T06] ( 7, 4.50) ref -> r14 class-hnd <System.String>
+; V04 loc0 [V04,T06] ( 7, 4.50) ref -> r15 class-hnd <System.String>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Configuration.Configuration>
; V06 loc2 [V06,T09] ( 5, 2.50) ref -> r14 class-hnd single-def <System.Configuration.ExeConfigurationFileMap>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T00] ( 5, 10 ) ref -> rbp class-hnd exact single-def "dup spill" <<unknown class>>
-; V09 tmp2 [V09,T07] ( 2, 4 ) ref -> rbx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V10 tmp3 [V10,T03] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Configuration.Configuration>
+; V09 tmp2 [V09,T07] ( 2, 4 ) ref -> r14 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V10 tmp3 [V10,T03] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Configuration.Configuration>
; V11 rat0 [V11,T08] ( 3, 3 ) ref -> rax "delegate invoke call"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M58367_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rsi, rcx
; gcrRegs +[rsi]
mov ebp, edx
mov ebx, r8d
mov rdi, r9
; gcrRegs +[rdi]
- ;; size=21 bbWeight=1 PerfScore 6.25
+ ;; size=23 bbWeight=1 PerfScore 7.25
G_M58367_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp ebx, 20
ja G_M58367_IG13
@@ -45,7 +46,7 @@ G_M58367_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
bt ecx, ebx
jae G_M58367_IG13
test rsi, rsi
- je SHORT G_M58367_IG06
+ je SHORT G_M58367_IG05
;; size=28 bbWeight=1 PerfScore 4.25
G_M58367_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rsi+0x08]
@@ -70,31 +71,23 @@ G_M58367_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
mov r14, rax
; gcrRegs +[r14]
test r14, r14
- je SHORT G_M58367_IG06
- test ebx, ebx
je SHORT G_M58367_IG05
- cmp ebx, 10
+ test ebx, ebx
je SHORT G_M58367_IG04
+ cmp ebx, 10
+ je G_M58367_IG09
cmp ebx, 20
- jne SHORT G_M58367_IG06
+ jne SHORT G_M58367_IG05
mov rcx, gword ptr [r14+0x20]
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rax rcx]
; gcr arg pop 0
test eax, eax
- jne G_M58367_IG17
- ;; size=77 bbWeight=0.50 PerfScore 13.12
+ je G_M58367_IG09
+ jmp G_M58367_IG17
+ ;; size=86 bbWeight=0.50 PerfScore 14.12
G_M58367_IG04: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
- mov rcx, gword ptr [r14+0x18]
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- test eax, eax
- jne G_M58367_IG16
- ;; size=18 bbWeight=0.50 PerfScore 3.12
-G_M58367_IG05: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [r14+0x10]
; gcrRegs +[rcx]
call [<unknown method>]
@@ -103,49 +96,25 @@ G_M58367_IG05: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0
test eax, eax
jne G_M58367_IG15
;; size=18 bbWeight=0.50 PerfScore 3.12
-G_M58367_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- xor r14, r14
- ; gcrRegs +[r14]
+G_M58367_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ xor r15, r15
+ ; gcrRegs +[r15]
test bpl, bpl
- je SHORT G_M58367_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M58367_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
+ je G_M58367_IG10
+ ;; size=12 bbWeight=1 PerfScore 1.50
+G_M58367_IG06: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
mov rcx, qword ptr [(reloc)] ; const ptr
- mov r14, gword ptr [rcx]
- ; gcrRegs +[r14]
- jmp SHORT G_M58367_IG11
- ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M58367_IG08: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- test ebx, ebx
- je SHORT G_M58367_IG09
- cmp ebx, 10
- je SHORT G_M58367_IG10
- mov rcx, qword ptr [(reloc)] ; const ptr
- cmp ebx, 20
- cmove r14, gword ptr [rcx]
- jmp SHORT G_M58367_IG11
- ;; size=25 bbWeight=0.50 PerfScore 4.88
-G_M58367_IG09: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
- mov rcx, qword ptr [(reloc)] ; const ptr
- mov r14, gword ptr [rcx]
- ; gcrRegs +[r14]
- jmp SHORT G_M58367_IG11
- ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M58367_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
- mov rcx, qword ptr [(reloc)] ; const ptr
- mov r14, gword ptr [rcx]
- ; gcrRegs +[r14]
+ mov r15, gword ptr [rcx]
+ ; gcrRegs +[r15]
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M58367_IG11: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M58367_IG07: ; bbWeight=1, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [(reloc)] ; System.Configuration.ClientConfigurationHost
call [CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov r14, rax
+ ; gcrRegs +[r14]
mov ecx, 3
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcr arg pop 0
@@ -167,41 +136,78 @@ G_M58367_IG11: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000
; byrRegs -[rcx]
lea rcx, bword ptr [rbp+0x20]
; byrRegs +[rcx]
- mov rdx, r14
+ mov rdx, r15
; gcrRegs +[rdx]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rdx r14]
+ ; gcrRegs -[rdx r15]
; byrRegs -[rcx]
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- mov rcx, rsi
+ mov rbx, rax
+ ; gcrRegs +[rbx]
+ mov rcx, rbx
; gcrRegs +[rcx]
mov r9, rbp
; gcrRegs +[r9]
- mov r8, rbx
+ mov r8, r14
; gcrRegs +[r8]
xor rdx, rdx
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx rbx rbp r8-r9]
+ ; gcrRegs -[rax rcx rdx rbp r8-r9 r14]
; gcr arg pop 0
- mov rax, rsi
+ mov rax, rbx
; gcrRegs +[rax]
;; size=98 bbWeight=1 PerfScore 27.50
-G_M58367_IG12: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+G_M58367_IG08: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
+ pop r15
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
-G_M58367_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rsi]
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M58367_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx] +[rsi rdi r14]
+ mov rcx, gword ptr [r14+0x18]
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test eax, eax
+ jne G_M58367_IG16
+ jmp G_M58367_IG04
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M58367_IG10: ; bbWeight=0.50, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14] +[r15]
+ test ebx, ebx
+ je SHORT G_M58367_IG11
+ cmp ebx, 10
+ je SHORT G_M58367_IG12
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ cmp ebx, 20
+ cmove r15, gword ptr [rcx]
+ jmp G_M58367_IG07
+ ;; size=28 bbWeight=0.50 PerfScore 4.88
+G_M58367_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ mov r15, gword ptr [rcx]
+ ; gcrRegs +[r15]
+ jmp G_M58367_IG07
+ ;; size=15 bbWeight=0.50 PerfScore 3.00
+G_M58367_IG12: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ mov r15, gword ptr [rcx]
+ ; gcrRegs +[r15]
+ jmp G_M58367_IG07
+ ;; size=15 bbWeight=0.50 PerfScore 3.00
+G_M58367_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi rdi r15]
mov rcx, qword ptr [(reloc)] ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
@@ -268,7 +274,7 @@ G_M58367_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 464, prolog size 10, PerfScore 75.50, instruction count 122, allocated bytes for code 464 (MethodHash=13661c00) for method System.Configuration.ClientConfigurationHost:OpenExeConfiguration(System.Configuration.ConfigurationFileMap,ubyte,int,System.String):System.Configuration.Configuration (FullOpts)
+; Total bytes of code 495, prolog size 12, PerfScore 79.00, instruction count 126, allocated bytes for code 495 (MethodHash=13661c00) for method System.Configuration.ClientConfigurationHost:OpenExeConfiguration(System.Configuration.ConfigurationFileMap,ubyte,int,System.String):System.Configuration.Configuration (FullOpts)
; ============================================================
Unwind Info:
...
@@ -13,31 +13,32 @@
; V01 arg1 [V01,T05] ( 3, 3 ) ubyte -> rbp single-def
; V02 arg2 [V02,T01] ( 10, 7 ) int -> rbx single-def
; V03 arg3 [V03,T04] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String>
-; V04 loc0 [V04,T06] ( 7, 4.50) ref -> r14 class-hnd <System.String>
+; V04 loc0 [V04,T06] ( 7, 4.50) ref -> r15 class-hnd <System.String>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Configuration.Configuration>
; V06 loc2 [V06,T09] ( 5, 2.50) ref -> r14 class-hnd single-def <System.Configuration.ExeConfigurationFileMap>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T00] ( 5, 10 ) ref -> rbp class-hnd exact single-def "dup spill" <<unknown class>>
-; V09 tmp2 [V09,T07] ( 2, 4 ) ref -> rbx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V10 tmp3 [V10,T03] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Configuration.Configuration>
+; V09 tmp2 [V09,T07] ( 2, 4 ) ref -> r14 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V10 tmp3 [V10,T03] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Configuration.Configuration>
; V11 rat0 [V11,T08] ( 3, 3 ) ref -> rax "delegate invoke call"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M58367_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rsi, rcx
; gcrRegs +[rsi]
mov ebp, edx
mov ebx, r8d
mov rdi, r9
; gcrRegs +[rdi]
- ;; size=21 bbWeight=1 PerfScore 6.25
+ ;; size=23 bbWeight=1 PerfScore 7.25
G_M58367_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp ebx, 20
ja G_M58367_IG13
@@ -45,7 +46,7 @@ G_M58367_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
bt ecx, ebx
jae G_M58367_IG13
test rsi, rsi
- je SHORT G_M58367_IG06
+ je SHORT G_M58367_IG05
;; size=28 bbWeight=1 PerfScore 4.25
G_M58367_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rsi+0x08]
@@ -70,31 +71,23 @@ G_M58367_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
mov r14, rax
; gcrRegs +[r14]
test r14, r14
- je SHORT G_M58367_IG06
- test ebx, ebx
je SHORT G_M58367_IG05
- cmp ebx, 10
+ test ebx, ebx
je SHORT G_M58367_IG04
+ cmp ebx, 10
+ je G_M58367_IG09
cmp ebx, 20
- jne SHORT G_M58367_IG06
+ jne SHORT G_M58367_IG05
mov rcx, gword ptr [r14+0x20]
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rax rcx]
; gcr arg pop 0
test eax, eax
- jne G_M58367_IG17
- ;; size=77 bbWeight=0.50 PerfScore 13.12
+ je G_M58367_IG09
+ jmp G_M58367_IG17
+ ;; size=86 bbWeight=0.50 PerfScore 14.12
G_M58367_IG04: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
- mov rcx, gword ptr [r14+0x18]
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- test eax, eax
- jne G_M58367_IG16
- ;; size=18 bbWeight=0.50 PerfScore 3.12
-G_M58367_IG05: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [r14+0x10]
; gcrRegs +[rcx]
call [<unknown method>]
@@ -103,49 +96,25 @@ G_M58367_IG05: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0
test eax, eax
jne G_M58367_IG15
;; size=18 bbWeight=0.50 PerfScore 3.12
-G_M58367_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- xor r14, r14
- ; gcrRegs +[r14]
+G_M58367_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ xor r15, r15
+ ; gcrRegs +[r15]
test bpl, bpl
- je SHORT G_M58367_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M58367_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
+ je G_M58367_IG10
+ ;; size=12 bbWeight=1 PerfScore 1.50
+G_M58367_IG06: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
mov rcx, qword ptr [(reloc)] ; const ptr
- mov r14, gword ptr [rcx]
- ; gcrRegs +[r14]
- jmp SHORT G_M58367_IG11
- ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M58367_IG08: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- test ebx, ebx
- je SHORT G_M58367_IG09
- cmp ebx, 10
- je SHORT G_M58367_IG10
- mov rcx, qword ptr [(reloc)] ; const ptr
- cmp ebx, 20
- cmove r14, gword ptr [rcx]
- jmp SHORT G_M58367_IG11
- ;; size=25 bbWeight=0.50 PerfScore 4.88
-G_M58367_IG09: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
- mov rcx, qword ptr [(reloc)] ; const ptr
- mov r14, gword ptr [rcx]
- ; gcrRegs +[r14]
- jmp SHORT G_M58367_IG11
- ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M58367_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
- mov rcx, qword ptr [(reloc)] ; const ptr
- mov r14, gword ptr [rcx]
- ; gcrRegs +[r14]
+ mov r15, gword ptr [rcx]
+ ; gcrRegs +[r15]
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M58367_IG11: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M58367_IG07: ; bbWeight=1, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [(reloc)] ; System.Configuration.ClientConfigurationHost
call [CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov r14, rax
+ ; gcrRegs +[r14]
mov ecx, 3
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcr arg pop 0
@@ -167,41 +136,78 @@ G_M58367_IG11: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000
; byrRegs -[rcx]
lea rcx, bword ptr [rbp+0x20]
; byrRegs +[rcx]
- mov rdx, r14
+ mov rdx, r15
; gcrRegs +[rdx]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rdx r14]
+ ; gcrRegs -[rdx r15]
; byrRegs -[rcx]
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- mov rcx, rsi
+ mov rbx, rax
+ ; gcrRegs +[rbx]
+ mov rcx, rbx
; gcrRegs +[rcx]
mov r9, rbp
; gcrRegs +[r9]
- mov r8, rbx
+ mov r8, r14
; gcrRegs +[r8]
xor rdx, rdx
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx rbx rbp r8-r9]
+ ; gcrRegs -[rax rcx rdx rbp r8-r9 r14]
; gcr arg pop 0
- mov rax, rsi
+ mov rax, rbx
; gcrRegs +[rax]
;; size=98 bbWeight=1 PerfScore 27.50
-G_M58367_IG12: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+G_M58367_IG08: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
+ pop r15
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
-G_M58367_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rsi]
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M58367_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx] +[rsi rdi r14]
+ mov rcx, gword ptr [r14+0x18]
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test eax, eax
+ jne G_M58367_IG16
+ jmp G_M58367_IG04
+ ;; size=23 bbWeight=0.50 PerfScore 4.12
+G_M58367_IG10: ; bbWeight=0.50, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14] +[r15]
+ test ebx, ebx
+ je SHORT G_M58367_IG11
+ cmp ebx, 10
+ je SHORT G_M58367_IG12
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ cmp ebx, 20
+ cmove r15, gword ptr [rcx]
+ jmp G_M58367_IG07
+ ;; size=28 bbWeight=0.50 PerfScore 4.88
+G_M58367_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ mov r15, gword ptr [rcx]
+ ; gcrRegs +[r15]
+ jmp G_M58367_IG07
+ ;; size=15 bbWeight=0.50 PerfScore 3.00
+G_M58367_IG12: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ mov r15, gword ptr [rcx]
+ ; gcrRegs +[r15]
+ jmp G_M58367_IG07
+ ;; size=15 bbWeight=0.50 PerfScore 3.00
+G_M58367_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi rdi r15]
mov rcx, qword ptr [(reloc)] ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
@@ -268,7 +274,7 @@ G_M58367_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 464, prolog size 10, PerfScore 75.50, instruction count 122, allocated bytes for code 464 (MethodHash=13661c00) for method System.Configuration.ClientConfigurationHost:OpenExeConfiguration(System.Configuration.ConfigurationFileMap,ubyte,int,System.String):System.Configuration.Configuration (FullOpts)
+; Total bytes of code 495, prolog size 12, PerfScore 79.00, instruction count 126, allocated bytes for code 495 (MethodHash=13661c00) for method System.Configuration.ClientConfigurationHost:OpenExeConfiguration(System.Configuration.ConfigurationFileMap,ubyte,int,System.String):System.Configuration.Configuration (FullOpts)
; ============================================================
Unwind Info:
...
@@ -8,25 +8,26 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 13, 18 ) ref -> rbx this class-hnd single-def <Microsoft.VisualBasic.FileIO.TextFieldParser>
-; V01 loc0 [V01,T14] ( 3, 2 ) ubyte -> rax
+; V00 this [V00,T06] ( 13, 18.50) ref -> rbx this class-hnd single-def <Microsoft.VisualBasic.FileIO.TextFieldParser>
+; V01 loc0 [V01,T15] ( 3, 2 ) ubyte -> rax
;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc2 [V03,T13] ( 3, 2.50) int -> rcx single-def
-; V04 loc3 [V04,T15] ( 2, 1 ) int -> rsi single-def
+; V03 loc2 [V03,T14] ( 3, 2.50) int -> rcx single-def
+; V04 loc3 [V04,T16] ( 2, 1 ) int -> rsi single-def
; V05 loc4 [V05,T11] ( 3, 5 ) int -> rdi single-def
; V06 loc5 [V06,T00] ( 8, 25 ) int -> rsi
-; V07 loc6 [V07,T16] ( 2, 1 ) int -> rsi single-def
-; V08 loc7 [V08,T12] ( 2, 4.50) int -> rax single-def
-; V09 loc8 [V09,T06] ( 7, 14.50) int -> rsi
+; V07 loc6 [V07,T17] ( 2, 1 ) int -> rsi single-def
+; V08 loc7 [V08,T12] ( 3, 5 ) int -> rax single-def
+; V09 loc8 [V09,T01] ( 8, 25 ) int -> rsi
; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V12 tmp2 [V12,T02] ( 3, 24 ) ref -> r8 "arr expr"
-; V13 tmp3 [V13,T04] ( 2, 16 ) ref -> rcx "argument with side effect"
-; V14 tmp4 [V14,T05] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V15 tmp5 [V15,T07] ( 3, 12 ) ref -> rcx "arr expr"
-; V16 tmp6 [V16,T08] ( 3, 12 ) ref -> r8 "arr expr"
-; V17 cse0 [V17,T09] ( 3, 12 ) long -> rdx "CSE - aggressive"
-; V18 cse1 [V18,T10] ( 3, 6 ) long -> rdx "CSE - aggressive"
+; V11 tmp1 [V11,T02] ( 3, 24 ) ref -> rcx "arr expr"
+; V12 tmp2 [V12,T03] ( 3, 24 ) ref -> r8 "arr expr"
+; V13 tmp3 [V13,T07] ( 2, 16 ) ref -> rcx "argument with side effect"
+; V14 tmp4 [V14,T08] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V15 tmp5 [V15,T04] ( 3, 24 ) ref -> rdx "arr expr"
+; V16 tmp6 [V16,T05] ( 3, 24 ) ref -> r10 "arr expr"
+; V17 cse0 [V17,T13] ( 2, 4.50) ref -> rcx hoist "CSE - aggressive"
+; V18 cse1 [V18,T09] ( 3, 12 ) long -> rdx "CSE - aggressive"
+; V19 cse2 [V19,T10] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 32
@@ -48,26 +49,9 @@ G_M10517_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
jne G_M10517_IG10
cmp gword ptr [rbx+0x20], 0
je G_M10517_IG10
- mov rcx, gword ptr [rbx+0x30]
- ; gcrRegs +[rcx]
- lea r11, [(reloc)] ; function address
- xor edx, edx
- cmp dword ptr [rcx], ecx
- call [r11]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov esi, eax
- mov rcx, gword ptr [rbx+0x30]
- ; gcrRegs +[rcx]
- lea r11, [(reloc)] ; function address
- xor edx, edx
- cmp dword ptr [rcx], ecx
- call [r11]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- jmp G_M10517_IG09
- ;; size=63 bbWeight=0.50 PerfScore 12.50
-G_M10517_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M10517_IG08
+ ;; size=25 bbWeight=0.50 PerfScore 3.62
+G_M10517_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp gword ptr [rbx+0x28], 0
je G_M10517_IG10
mov rcx, gword ptr [rbx+0x38]
@@ -89,19 +73,19 @@ G_M10517_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
mov edi, eax
cmp esi, edi
- jg SHORT G_M10517_IG10
- ;; size=55 bbWeight=0.50 PerfScore 11.62
+ jg G_M10517_IG10
+ ;; size=59 bbWeight=0.50 PerfScore 11.62
G_M10517_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x28]
; gcrRegs +[rcx]
cmp esi, dword ptr [rcx+0x08]
- jae SHORT G_M10517_IG13
+ jae G_M10517_IG13
mov edx, esi
mov rcx, gword ptr [rcx+8*rdx+0x10]
mov r8, gword ptr [rbx+0x38]
; gcrRegs +[r8]
cmp esi, dword ptr [r8+0x08]
- jae SHORT G_M10517_IG13
+ jae G_M10517_IG13
mov rdx, gword ptr [r8+8*rdx+0x10]
; gcrRegs +[rdx]
xor r8d, r8d
@@ -115,7 +99,7 @@ G_M10517_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
jo SHORT G_M10517_IG12
cmp esi, edi
jle SHORT G_M10517_IG05
- ;; size=53 bbWeight=4 PerfScore 93.00
+ ;; size=61 bbWeight=4 PerfScore 93.00
G_M10517_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
jmp SHORT G_M10517_IG10
@@ -124,31 +108,51 @@ G_M10517_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov eax, 1
jmp SHORT G_M10517_IG11
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M10517_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10517_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
+ mov rcx, gword ptr [rbx+0x30]
+ ; gcrRegs +[rcx]
+ lea r11, [(reloc)] ; function address
+ xor edx, edx
+ cmp dword ptr [rcx], ecx
+ call [r11]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ mov esi, eax
+ mov rcx, gword ptr [rbx+0x30]
+ ; gcrRegs +[rcx]
+ lea r11, [(reloc)] ; function address
+ xor edx, edx
+ cmp dword ptr [rcx], ecx
+ call [r11]<unknown method>
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ cmp esi, eax
+ jg SHORT G_M10517_IG10
mov rcx, gword ptr [rbx+0x20]
; gcrRegs +[rcx]
- cmp esi, dword ptr [rcx+0x08]
+ ;; size=46 bbWeight=0.50 PerfScore 10.50
+G_M10517_IG09: ; bbWeight=4, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdx, rcx
+ ; gcrRegs +[rdx]
+ cmp esi, dword ptr [rdx+0x08]
jae SHORT G_M10517_IG13
- mov edx, esi
- mov ecx, dword ptr [rcx+4*rdx+0x10]
- ; gcrRegs -[rcx]
- mov r8, gword ptr [rbx+0x30]
- ; gcrRegs +[r8]
- cmp esi, dword ptr [r8+0x08]
+ mov r8d, esi
+ mov edx, dword ptr [rdx+4*r8+0x10]
+ ; gcrRegs -[rdx]
+ mov r10, gword ptr [rbx+0x30]
+ ; gcrRegs +[r10]
+ cmp esi, dword ptr [r10+0x08]
jae SHORT G_M10517_IG13
- cmp ecx, dword ptr [r8+4*rdx+0x10]
+ cmp edx, dword ptr [r10+4*r8+0x10]
jne SHORT G_M10517_IG07
add esi, 1
jo SHORT G_M10517_IG12
- ;; size=37 bbWeight=2 PerfScore 39.00
-G_M10517_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r8]
cmp esi, eax
- jle SHORT G_M10517_IG08
- ;; size=4 bbWeight=4 PerfScore 5.00
+ jle SHORT G_M10517_IG09
+ ;; size=42 bbWeight=4 PerfScore 76.00
G_M10517_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rcx rbx r10]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M10517_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
@@ -169,7 +173,7 @@ G_M10517_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 265, prolog size 10, PerfScore 172.88, instruction count 84, allocated bytes for code 265 (MethodHash=2a83d6ea) for method Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
+; Total bytes of code 286, prolog size 10, PerfScore 206.50, instruction count 87, allocated bytes for code 286 (MethodHash=2a83d6ea) for method Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
1[ubyte],System.Span
1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (FullOpts)@@ -13,15 +13,15 @@
; V02 arg2 [V02,T00] ( 6, 9 ) byref -> rbx ld-addr-op single-def
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Security.Cryptography.HashAlgorithmName>
; V04 arg4 [V04,T10] ( 2, 1 ) byref -> [rsp+0xB0] single-def
-; V05 loc0 [V05 ] ( 2, 1.50) int -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op
+; V05 loc0 [V05 ] ( 2, 1.50) int -> [rsp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V08 tmp2 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V09 tmp3 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V10 tmp4 [V10,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T04] ( 4, 4 ) int -> r14 "Inlining Arg"
+; V11 tmp5 [V11,T04] ( 4, 4 ) int -> rbp "Inlining Arg"
;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V13 tmp7 [V13,T08] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V13 tmp7 [V13,T08] ( 2, 2 ) byref -> r14 single-def "Inlining Arg"
;* V14 tmp8 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp10 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
@@ -43,55 +43,153 @@
;* V32 tmp26 [V32 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;* V33 tmp27 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp28 [V34 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V35 tmp29 [V35,T11] ( 2, 1 ) byref -> r15 single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-; V36 tmp30 [V36,T12] ( 2, 1 ) int -> r14 "field V17._length (fldOffset=0x8)" P-INDEP
+; V35 tmp29 [V35,T11] ( 2, 1 ) byref -> r14 single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+; V36 tmp30 [V36,T12] ( 2, 1 ) int -> rbp "field V17._length (fldOffset=0x8)" P-INDEP
;* V37 tmp31 [V37 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
;* V38 tmp32 [V38 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
; V39 tmp33 [V39,T15] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V40 tmp34 [V40 ] ( 2, 4 ) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
+; V40 tmp34 [V40 ] ( 2, 4 ) struct (16) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
;* V41 tmp35 [V41,T09] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V42 tmp36 [V42,T05] ( 2, 4 ) byref -> rdx single-def "argument with side effect"
-; V43 tmp37 [V43 ] ( 3, 3 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
+; V43 tmp37 [V43 ] ( 3, 3 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
;* V44 tmp38 [V44,T13] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V45 cse0 [V45,T07] ( 3, 2.50) long -> rdi "CSE - aggressive"
-; V46 cse1 [V46,T06] ( 5, 2.50) ref -> r13 "CSE - moderate"
+; V46 cse1 [V46,T06] ( 5, 2.50) ref -> r15 "CSE - moderate"
;
-; Lcl frame size = 80
+; Lcl frame size = 88
G_M62408_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
- push r13
push rdi
push rsi
push rbp
push rbx
- sub rsp, 80
+ sub rsp, 88
vzeroupper
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x30], xmm4
- mov qword ptr [rsp+0x40], rax
+ vmovdqu ymmword ptr [rsp+0x30], ymm4
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, r8
; byrRegs +[rbx]
mov rdi, r9
; gcrRegs +[rdi]
- ;; size=48 bbWeight=1 PerfScore 13.58
-G_M62408_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C {rdx rbx}, byref, isz
+ ;; size=34 bbWeight=1 PerfScore 10.33
+G_M62408_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C {rdx rbx}, byref
; byrRegs +[rdx]
test rdi, rdi
- je SHORT G_M62408_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M62408_IG03: ; bbWeight=0.46, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C {rdx rbx}, byref, isz
+ je G_M62408_IG13
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M62408_IG03: ; bbWeight=0.46, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C {rdx rbx}, byref
cmp dword ptr [rdi+0x08], 0
- jne SHORT G_M62408_IG05
- ;; size=6 bbWeight=0.46 PerfScore 1.84
-G_M62408_IG04: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ je G_M62408_IG13
+ ;; size=10 bbWeight=0.46 PerfScore 1.84
+G_M62408_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C {rdx rbx}, byref, nogc
+ vmovdqu xmm0, xmmword ptr [rbx]
+ vmovdqu xmmword ptr [rsp+0x40], xmm0
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M62408_IG05: ; bbWeight=1, isz, extend
+ lea rcx, [rsp+0x50]
+ mov qword ptr [rsp+0x20], rcx
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ lea r8, [rsp+0x40]
+ mov r9, rdi
+ ; gcrRegs +[r9]
+ mov rax, qword ptr [rsi]
+ mov rdi, qword ptr [rax+0x70]
+ ; gcrRegs -[rdi]
+ call [rdi+0x18]<unknown method>
+ ; gcrRegs -[rcx r9]
+ ; byrRegs -[rdx]
+ ; gcr arg pop 0
+ test eax, eax
+ je SHORT G_M62408_IG11
+ ;; size=35 bbWeight=1 PerfScore 10.75
+G_M62408_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ mov ebp, dword ptr [rsp+0x50]
+ cmp ebp, dword ptr [rbx+0x08]
+ jbe SHORT G_M62408_IG08
+ ;; size=9 bbWeight=0.50 PerfScore 2.50
+G_M62408_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- ; byrRegs -[rdx rbx]
+ ; byrRegs -[rbx]
+ call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M62408_IG08: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[rbx]
+ mov r14, bword ptr [rbx]
+ ; byrRegs +[r14]
+ test ebp, ebp
+ jge SHORT G_M62408_IG09
+ mov r15, 0xD1FFAB1E
+ ; gcrRegs +[r15]
+ mov rcx, r15
+ ; gcrRegs +[rcx]
+ mov rdx, r15
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ mov rcx, r15
+ ; gcrRegs +[rcx]
+ mov rdx, r15
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx r15]
+ ; gcr arg pop 0
+ ;; size=41 bbWeight=0.50 PerfScore 5.25
+G_M62408_IG09: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=4008 {rbx r14}, byref, isz
+ mov bword ptr [rsp+0x30], r14
+ mov dword ptr [rsp+0x38], ebp
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ lea rdx, [rsp+0x30]
+ mov r8, rbx
+ ; byrRegs +[r8]
+ mov r9, bword ptr [rsp+0xB0]
+ ; byrRegs +[r9]
+ call [rdi+0x08]<unknown method>
+ ; gcrRegs -[rcx rsi]
+ ; byrRegs -[rbx r8-r9 r14]
+ ; gcr arg pop 0
+ test eax, eax
+ je SHORT G_M62408_IG11
+ mov eax, 1
+ ;; size=40 bbWeight=0.50 PerfScore 4.25
+G_M62408_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 88
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ pop r15
+ ret
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M62408_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ mov rbx, bword ptr [rsp+0xB0]
+ ; byrRegs +[rbx]
+ mov dword ptr [rbx], eax
+ ;; size=12 bbWeight=0.50 PerfScore 1.12
+G_M62408_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[rbx]
+ add rsp, 88
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ pop r15
+ ret
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M62408_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rdi]
mov ecx, 0x43B1
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -106,119 +204,8 @@ G_M62408_IG04: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
; gcr arg pop 0
int3
;; size=33 bbWeight=0 PerfScore 0.00
-G_M62408_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=000C {rdx rbx}, byref, nogc
- ; gcrRegs +[rsi rdi]
- ; byrRegs +[rdx rbx]
- vmovdqu xmm0, xmmword ptr [rbx]
- vmovdqu xmmword ptr [rsp+0x38], xmm0
- ;; size=10 bbWeight=1 PerfScore 5.00
-G_M62408_IG06: ; bbWeight=1, extend
- lea rcx, [rsp+0x48]
- mov qword ptr [rsp+0x20], rcx
- mov rcx, rsi
- ; gcrRegs +[rcx]
- lea r8, [rsp+0x38]
- mov r9, rdi
- ; gcrRegs +[r9]
- mov rax, qword ptr [rsi]
- mov rdi, qword ptr [rax+0x70]
- ; gcrRegs -[rdi]
- call [rdi+0x18]<unknown method>
- ; gcrRegs -[rcx r9]
- ; byrRegs -[rdx]
- ; gcr arg pop 0
- test eax, eax
- je G_M62408_IG12
- ;; size=39 bbWeight=1 PerfScore 10.75
-G_M62408_IG07: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- mov rbp, bword ptr [rsp+0xB0]
- ; byrRegs +[rbp]
- mov r14d, dword ptr [rsp+0x48]
- cmp r14d, dword ptr [rbx+0x08]
- jbe SHORT G_M62408_IG09
- ;; size=19 bbWeight=0.50 PerfScore 3.00
-G_M62408_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
- ; byrRegs -[rbx rbp]
- call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M62408_IG09: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0028 {rbx rbp}, byref, isz
- ; gcrRegs +[rsi]
- ; byrRegs +[rbx rbp]
- mov r15, bword ptr [rbx]
- ; byrRegs +[r15]
- test r14d, r14d
- jge SHORT G_M62408_IG10
- mov r13, 0xD1FFAB1E
- ; gcrRegs +[r13]
- mov rcx, r13
- ; gcrRegs +[rcx]
- mov rdx, r13
- ; gcrRegs +[rdx]
- call [<unknown method>]
...
@@ -17,14 +17,14 @@
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
; V08 tmp2 [V08,T03] ( 3, 8 ) ref -> rdx class-hnd exact "impAppendStmt" <System.Version>
-; V09 tmp3 [V09,T10] ( 4, 4 ) ref -> r12 class-hnd exact "dup spill" <<unknown class>>
+; V09 tmp3 [V09,T10] ( 4, 4 ) ref -> rsi class-hnd exact "dup spill" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref
-; V11 tmp5 [V11,T04] ( 7, 7 ) ref -> rbx class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerLoadFailureEventArgs>
-; V12 tmp6 [V12,T11] ( 2, 2 ) ref -> r13 class-hnd exact "impAppendStmt" <<unknown class>>
+; V11 tmp5 [V11,T04] ( 7, 7 ) ref -> rdi class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerLoadFailureEventArgs>
+; V12 tmp6 [V12,T11] ( 2, 2 ) ref -> rbx class-hnd exact "impAppendStmt" <<unknown class>>
; V13 tmp7 [V13,T01] ( 3, 12 ) ref -> rcx class-hnd exact "Inlining Arg" <System.Version>
; V14 tmp8 [V14,T13] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
-; V16 cse0 [V16,T12] ( 3, 1.50) ref -> r13 "CSE - moderate"
+; V16 cse0 [V16,T12] ( 3, 1.50) ref -> rbx "CSE - moderate"
; V17 cse1 [V17,T08] ( 3, 6 ) int -> r14 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -32,8 +32,6 @@
G_M22614_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
- push r13
- push r12
push rdi
push rsi
push rbp
@@ -43,8 +41,8 @@ G_M22614_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=22 bbWeight=1 PerfScore 8.75
-G_M22614_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=1 PerfScore 6.75
+G_M22614_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
call <unknown method>
@@ -71,9 +69,9 @@ G_M22614_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
xor ebp, ebp
mov r14d, dword ptr [rbx+0x08]
test r14d, r14d
- jle G_M22614_IG12
- ;; size=59 bbWeight=1 PerfScore 18.75
-G_M22614_IG03: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ jle SHORT G_M22614_IG08
+ ;; size=55 bbWeight=1 PerfScore 18.75
+G_M22614_IG03: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov ecx, ebp
mov r15, gword ptr [rbx+8*rcx+0x10]
@@ -87,8 +85,8 @@ G_M22614_IG03: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je G_M22614_IG11
- ;; size=35 bbWeight=4 PerfScore 43.00
+ je SHORT G_M22614_IG07
+ ;; size=31 bbWeight=4 PerfScore 43.00
G_M22614_IG04: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [r15+0x30]
; gcrRegs +[rdx]
@@ -110,94 +108,89 @@ G_M22614_IG06: ; bbWeight=2, gcrefRegs=80CE {rcx rdx rbx rsi rdi r15}, by
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jge SHORT G_M22614_IG11
+ jl SHORT G_M22614_IG10
;; size=10 bbWeight=2 PerfScore 8.50
-G_M22614_IG07: ; bbWeight=0.50, gcrefRegs=8040 {rsi r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rdi]
- mov r13, gword ptr [rsi+0x08]
- ; gcrRegs +[r13]
- mov r12, gword ptr [r13+0x40]
- ; gcrRegs +[r12]
- test r12, r12
- je SHORT G_M22614_IG09
- mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.Diagnostics.AnalyzerLoadFailureEventArgs
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[rsi] +[rax]
- ; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- mov dword ptr [rbx+0x28], 5
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov gword ptr [rbx+0x10], rcx
- xor rcx, rcx
- mov gword ptr [rbx+0x08], rcx
- ;; size=58 bbWeight=0.50 PerfScore 5.12
-G_M22614_IG08: ; bbWeight=0.50, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx]
- mov gword ptr [rbx+0x18], rcx
- mov rdx, gword ptr [r15+0x30]
- ; gcrRegs +[rdx]
- lea rcx, bword ptr [rbx+0x20]
- ; byrRegs +[rcx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx r15]
- ; byrRegs -[rcx]
- mov rdx, r13
- ; gcrRegs +[rdx]
- mov r8, rbx
- ; gcrRegs +[r8]
- mov rcx, gword ptr [r12+0x08]
- ; gcrRegs +[rcx]
- call [r12+0x18]<unknown method>
- ; gcrRegs -[rcx rdx rbx r8 r12-r13]
- ; gcr arg pop 0
- ;; size=33 bbWeight=0.50 PerfScore 5.00
-G_M22614_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M22614_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M22614_IG07: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
+ inc ebp
+ cmp r14d, ebp
+ jg SHORT G_M22614_IG03
+ ;; size=7 bbWeight=4 PerfScore 6.00
+G_M22614_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi rdi]
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M22614_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r12
- pop r13
pop r14
pop r15
ret
- ;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M22614_IG11: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx rsi rdi]
- inc ebp
- cmp r14d, ebp
- jg G_M22614_IG03
- ;; size=11 bbWeight=4 PerfScore 6.00
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M22614_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8040 {rsi r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rsi r15]
+ mov rbx, gword ptr [rsi+0x08]
+ ; gcrRegs +[rbx]
+ mov rsi, gword ptr [rbx+0x40]
+ test rsi, rsi
+ je SHORT G_M22614_IG12
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.Diagnostics.AnalyzerLoadFailureEventArgs
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ mov dword ptr [rdi+0x28], 5
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov gword ptr [rdi+0x10], rcx
+ xor rcx, rcx
+ mov gword ptr [rdi+0x08], rcx
+ ;; size=58 bbWeight=0.50 PerfScore 5.12
+G_M22614_IG11: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx]
+ mov gword ptr [rdi+0x18], rcx
+ mov rdx, gword ptr [r15+0x30]
+ ; gcrRegs +[rdx]
+ lea rcx, bword ptr [rdi+0x20]
+ ; byrRegs +[rcx]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx r15]
+ ; byrRegs -[rcx]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov r8, rdi
+ ; gcrRegs +[r8]
+ mov rcx, gword ptr [rsi+0x08]
+ ; gcrRegs +[rcx]
+ call [rsi+0x18]<unknown method>
+ ; gcrRegs -[rcx rdx rbx rsi rdi r8]
+ ; gcr arg pop 0
+ ;; size=30 bbWeight=0.50 PerfScore 5.00
G_M22614_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi rdi]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ mov eax, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
G_M22614_IG13: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r12
- pop r13
pop r14
pop r15
ret
- ;; size=17 bbWeight=0.50 PerfScore 2.62
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M22614_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi rdi r15]
test eax, eax
- jne G_M22614_IG07
- jmp SHORT G_M22614_IG11
- ;; size=10 bbWeight=0 PerfScore 0.00
+ jne SHORT G_M22614_IG10
+ jmp G_M22614_IG07
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 305, prolog size 16, PerfScore 111.12, instruction count 93, allocated bytes for code 305 (MethodHash=7902a7a9) for method Microsoft.CodeAnalysis.Diagnostics.AnalyzerFileReference+Extensions`1[System.__Canon]:CheckAssemblyReferencesNewerCompiler(System.Reflection.Assembly):ubyte:this (FullOpts)
+; Total bytes of code 277, prolog size 12, PerfScore 108.12, instruction count 87, allocated bytes for code 277 (MethodHash=7902a7a9) for method Microsoft.CodeAnalysis.Diagnostics.AnalyzerFileReference+Extensions`1[System.__Canon]:CheckAssemblyReferencesNewerCompiler(System.Reflection.Assembly):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -205,17 +198,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x10
- CountOfUnwindCodes: 9
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -17,14 +17,14 @@
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
; V08 tmp2 [V08,T03] ( 3, 8 ) ref -> rdx class-hnd exact "impAppendStmt" <System.Version>
-; V09 tmp3 [V09,T10] ( 4, 4 ) ref -> r12 class-hnd exact "dup spill" <<unknown class>>
+; V09 tmp3 [V09,T10] ( 4, 4 ) ref -> rsi class-hnd exact "dup spill" <<unknown class>>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref
-; V11 tmp5 [V11,T04] ( 7, 7 ) ref -> rbx class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerLoadFailureEventArgs>
-; V12 tmp6 [V12,T11] ( 2, 2 ) ref -> r13 class-hnd exact "impAppendStmt" <<unknown class>>
+; V11 tmp5 [V11,T04] ( 7, 7 ) ref -> rdi class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.Diagnostics.AnalyzerLoadFailureEventArgs>
+; V12 tmp6 [V12,T11] ( 2, 2 ) ref -> rbx class-hnd exact "impAppendStmt" <<unknown class>>
; V13 tmp7 [V13,T01] ( 3, 12 ) ref -> rcx class-hnd exact "Inlining Arg" <System.Version>
; V14 tmp8 [V14,T13] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Version>
-; V16 cse0 [V16,T12] ( 3, 1.50) ref -> r13 "CSE - moderate"
+; V16 cse0 [V16,T12] ( 3, 1.50) ref -> rbx "CSE - moderate"
; V17 cse1 [V17,T08] ( 3, 6 ) int -> r14 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -32,8 +32,6 @@
G_M22614_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
- push r13
- push r12
push rdi
push rsi
push rbp
@@ -43,8 +41,8 @@ G_M22614_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=22 bbWeight=1 PerfScore 8.75
-G_M22614_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=1 PerfScore 6.75
+G_M22614_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
call <unknown method>
@@ -71,9 +69,9 @@ G_M22614_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
xor ebp, ebp
mov r14d, dword ptr [rbx+0x08]
test r14d, r14d
- jle G_M22614_IG12
- ;; size=59 bbWeight=1 PerfScore 18.75
-G_M22614_IG03: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ jle SHORT G_M22614_IG08
+ ;; size=55 bbWeight=1 PerfScore 18.75
+G_M22614_IG03: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov ecx, ebp
mov r15, gword ptr [rbx+8*rcx+0x10]
@@ -87,8 +85,8 @@ G_M22614_IG03: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je G_M22614_IG11
- ;; size=35 bbWeight=4 PerfScore 43.00
+ je SHORT G_M22614_IG07
+ ;; size=31 bbWeight=4 PerfScore 43.00
G_M22614_IG04: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [r15+0x30]
; gcrRegs +[rdx]
@@ -110,94 +108,89 @@ G_M22614_IG06: ; bbWeight=2, gcrefRegs=80CE {rcx rdx rbx rsi rdi r15}, by
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jge SHORT G_M22614_IG11
+ jl SHORT G_M22614_IG10
;; size=10 bbWeight=2 PerfScore 8.50
-G_M22614_IG07: ; bbWeight=0.50, gcrefRegs=8040 {rsi r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rdi]
- mov r13, gword ptr [rsi+0x08]
- ; gcrRegs +[r13]
- mov r12, gword ptr [r13+0x40]
- ; gcrRegs +[r12]
- test r12, r12
- je SHORT G_M22614_IG09
- mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.Diagnostics.AnalyzerLoadFailureEventArgs
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[rsi] +[rax]
- ; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- mov dword ptr [rbx+0x28], 5
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov gword ptr [rbx+0x10], rcx
- xor rcx, rcx
- mov gword ptr [rbx+0x08], rcx
- ;; size=58 bbWeight=0.50 PerfScore 5.12
-G_M22614_IG08: ; bbWeight=0.50, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx]
- mov gword ptr [rbx+0x18], rcx
- mov rdx, gword ptr [r15+0x30]
- ; gcrRegs +[rdx]
- lea rcx, bword ptr [rbx+0x20]
- ; byrRegs +[rcx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx r15]
- ; byrRegs -[rcx]
- mov rdx, r13
- ; gcrRegs +[rdx]
- mov r8, rbx
- ; gcrRegs +[r8]
- mov rcx, gword ptr [r12+0x08]
- ; gcrRegs +[rcx]
- call [r12+0x18]<unknown method>
- ; gcrRegs -[rcx rdx rbx r8 r12-r13]
- ; gcr arg pop 0
- ;; size=33 bbWeight=0.50 PerfScore 5.00
-G_M22614_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M22614_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M22614_IG07: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r15]
+ inc ebp
+ cmp r14d, ebp
+ jg SHORT G_M22614_IG03
+ ;; size=7 bbWeight=4 PerfScore 6.00
+G_M22614_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi rdi]
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M22614_IG09: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r12
- pop r13
pop r14
pop r15
ret
- ;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M22614_IG11: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx rsi rdi]
- inc ebp
- cmp r14d, ebp
- jg G_M22614_IG03
- ;; size=11 bbWeight=4 PerfScore 6.00
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M22614_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8040 {rsi r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rsi r15]
+ mov rbx, gword ptr [rsi+0x08]
+ ; gcrRegs +[rbx]
+ mov rsi, gword ptr [rbx+0x40]
+ test rsi, rsi
+ je SHORT G_M22614_IG12
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.Diagnostics.AnalyzerLoadFailureEventArgs
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ mov dword ptr [rdi+0x28], 5
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov gword ptr [rdi+0x10], rcx
+ xor rcx, rcx
+ mov gword ptr [rdi+0x08], rcx
+ ;; size=58 bbWeight=0.50 PerfScore 5.12
+G_M22614_IG11: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx]
+ mov gword ptr [rdi+0x18], rcx
+ mov rdx, gword ptr [r15+0x30]
+ ; gcrRegs +[rdx]
+ lea rcx, bword ptr [rdi+0x20]
+ ; byrRegs +[rcx]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx r15]
+ ; byrRegs -[rcx]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov r8, rdi
+ ; gcrRegs +[r8]
+ mov rcx, gword ptr [rsi+0x08]
+ ; gcrRegs +[rcx]
+ call [rsi+0x18]<unknown method>
+ ; gcrRegs -[rcx rdx rbx rsi rdi r8]
+ ; gcr arg pop 0
+ ;; size=30 bbWeight=0.50 PerfScore 5.00
G_M22614_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi rdi]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ mov eax, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
G_M22614_IG13: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r12
- pop r13
pop r14
pop r15
ret
- ;; size=17 bbWeight=0.50 PerfScore 2.62
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M22614_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi rdi r15]
test eax, eax
- jne G_M22614_IG07
- jmp SHORT G_M22614_IG11
- ;; size=10 bbWeight=0 PerfScore 0.00
+ jne SHORT G_M22614_IG10
+ jmp G_M22614_IG07
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 305, prolog size 16, PerfScore 111.12, instruction count 93, allocated bytes for code 305 (MethodHash=7902a7a9) for method Microsoft.CodeAnalysis.Diagnostics.AnalyzerFileReference+Extensions`1[System.__Canon]:CheckAssemblyReferencesNewerCompiler(System.Reflection.Assembly):ubyte:this (FullOpts)
+; Total bytes of code 277, prolog size 12, PerfScore 108.12, instruction count 87, allocated bytes for code 277 (MethodHash=7902a7a9) for method Microsoft.CodeAnalysis.Diagnostics.AnalyzerFileReference+Extensions`1[System.__Canon]:CheckAssemblyReferencesNewerCompiler(System.Reflection.Assembly):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -205,17 +198,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x10
- CountOfUnwindCodes: 9
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
@@ -7,25 +7,26 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 13, 18 ) ref -> rbx this class-hnd single-def <Microsoft.VisualBasic.FileIO.TextFieldParser>
-; V01 loc0 [V01,T14] ( 3, 2 ) ubyte -> rax
+; V00 this [V00,T06] ( 13, 18.50) ref -> rbx this class-hnd single-def <Microsoft.VisualBasic.FileIO.TextFieldParser>
+; V01 loc0 [V01,T15] ( 3, 2 ) ubyte -> rax
;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc2 [V03,T13] ( 3, 2.50) int -> rcx single-def
-; V04 loc3 [V04,T15] ( 2, 1 ) int -> rsi single-def
+; V03 loc2 [V03,T14] ( 3, 2.50) int -> rcx single-def
+; V04 loc3 [V04,T16] ( 2, 1 ) int -> rsi single-def
; V05 loc4 [V05,T11] ( 3, 5 ) int -> rdi single-def
; V06 loc5 [V06,T00] ( 8, 25 ) int -> rsi
-; V07 loc6 [V07,T16] ( 2, 1 ) int -> rsi single-def
-; V08 loc7 [V08,T12] ( 2, 4.50) int -> rax single-def
-; V09 loc8 [V09,T06] ( 7, 14.50) int -> rsi
+; V07 loc6 [V07,T17] ( 2, 1 ) int -> rsi single-def
+; V08 loc7 [V08,T12] ( 3, 5 ) int -> rax single-def
+; V09 loc8 [V09,T01] ( 8, 25 ) int -> rsi
; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T01] ( 3, 24 ) ref -> rcx "arr expr"
-; V12 tmp2 [V12,T02] ( 3, 24 ) ref -> r8 "arr expr"
-; V13 tmp3 [V13,T04] ( 2, 16 ) ref -> rcx "argument with side effect"
-; V14 tmp4 [V14,T05] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V15 tmp5 [V15,T07] ( 3, 12 ) ref -> rcx "arr expr"
-; V16 tmp6 [V16,T08] ( 3, 12 ) ref -> r8 "arr expr"
-; V17 cse0 [V17,T09] ( 3, 12 ) long -> rdx "CSE - aggressive"
-; V18 cse1 [V18,T10] ( 3, 6 ) long -> rdx "CSE - aggressive"
+; V11 tmp1 [V11,T02] ( 3, 24 ) ref -> rcx "arr expr"
+; V12 tmp2 [V12,T03] ( 3, 24 ) ref -> r8 "arr expr"
+; V13 tmp3 [V13,T07] ( 2, 16 ) ref -> rcx "argument with side effect"
+; V14 tmp4 [V14,T08] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V15 tmp5 [V15,T04] ( 3, 24 ) ref -> rdx "arr expr"
+; V16 tmp6 [V16,T05] ( 3, 24 ) ref -> r10 "arr expr"
+; V17 cse0 [V17,T13] ( 2, 4.50) ref -> rcx hoist "CSE - aggressive"
+; V18 cse1 [V18,T09] ( 3, 12 ) long -> rdx "CSE - aggressive"
+; V19 cse2 [V19,T10] ( 3, 12 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 32
@@ -42,29 +43,14 @@ G_M10517_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
test ecx, ecx
je SHORT G_M10517_IG04
;; size=10 bbWeight=1 PerfScore 3.25
-G_M10517_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M10517_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ecx, 1
jne G_M10517_IG10
cmp gword ptr [rbx+0x20], 0
je G_M10517_IG10
- mov rcx, gword ptr [rbx+0x30]
- ; gcrRegs +[rcx]
- xor edx, edx
- cmp dword ptr [rcx], ecx
- call [System.Array:GetLowerBound(int):int:this]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- mov esi, eax
- mov rcx, gword ptr [rbx+0x30]
- ; gcrRegs +[rcx]
- xor edx, edx
- cmp dword ptr [rcx], ecx
- call [System.Array:GetUpperBound(int):int:this]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- jmp G_M10517_IG09
- ;; size=55 bbWeight=0.50 PerfScore 12.00
-G_M10517_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M10517_IG08
+ ;; size=22 bbWeight=0.50 PerfScore 3.62
+G_M10517_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp gword ptr [rbx+0x28], 0
je G_M10517_IG10
mov rcx, gword ptr [rbx+0x38]
@@ -84,19 +70,19 @@ G_M10517_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
mov edi, eax
cmp esi, edi
- jg SHORT G_M10517_IG10
- ;; size=47 bbWeight=0.50 PerfScore 11.12
+ jg G_M10517_IG10
+ ;; size=51 bbWeight=0.50 PerfScore 11.12
G_M10517_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x28]
; gcrRegs +[rcx]
cmp esi, dword ptr [rcx+0x08]
- jae SHORT G_M10517_IG13
+ jae G_M10517_IG13
mov edx, esi
mov rcx, gword ptr [rcx+8*rdx+0x10]
mov r8, gword ptr [rbx+0x38]
; gcrRegs +[r8]
cmp esi, dword ptr [r8+0x08]
- jae SHORT G_M10517_IG13
+ jae G_M10517_IG13
mov rdx, gword ptr [r8+8*rdx+0x10]
; gcrRegs +[rdx]
xor r8d, r8d
@@ -110,7 +96,7 @@ G_M10517_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
jo SHORT G_M10517_IG12
cmp esi, edi
jle SHORT G_M10517_IG05
- ;; size=53 bbWeight=4 PerfScore 93.00
+ ;; size=61 bbWeight=4 PerfScore 93.00
G_M10517_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
jmp SHORT G_M10517_IG10
@@ -119,31 +105,49 @@ G_M10517_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov eax, 1
jmp SHORT G_M10517_IG11
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M10517_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10517_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
+ mov rcx, gword ptr [rbx+0x30]
+ ; gcrRegs +[rcx]
+ xor edx, edx
+ cmp dword ptr [rcx], ecx
+ call [System.Array:GetLowerBound(int):int:this]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ mov esi, eax
+ mov rcx, gword ptr [rbx+0x30]
+ ; gcrRegs +[rcx]
+ xor edx, edx
+ cmp dword ptr [rcx], ecx
+ call [System.Array:GetUpperBound(int):int:this]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ cmp esi, eax
+ jg SHORT G_M10517_IG10
mov rcx, gword ptr [rbx+0x20]
; gcrRegs +[rcx]
- cmp esi, dword ptr [rcx+0x08]
+ ;; size=38 bbWeight=0.50 PerfScore 10.00
+G_M10517_IG09: ; bbWeight=4, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdx, rcx
+ ; gcrRegs +[rdx]
+ cmp esi, dword ptr [rdx+0x08]
jae SHORT G_M10517_IG13
- mov edx, esi
- mov ecx, dword ptr [rcx+4*rdx+0x10]
- ; gcrRegs -[rcx]
- mov r8, gword ptr [rbx+0x30]
- ; gcrRegs +[r8]
- cmp esi, dword ptr [r8+0x08]
+ mov r8d, esi
+ mov edx, dword ptr [rdx+4*r8+0x10]
+ ; gcrRegs -[rdx]
+ mov r10, gword ptr [rbx+0x30]
+ ; gcrRegs +[r10]
+ cmp esi, dword ptr [r10+0x08]
jae SHORT G_M10517_IG13
- cmp ecx, dword ptr [r8+4*rdx+0x10]
+ cmp edx, dword ptr [r10+4*r8+0x10]
jne SHORT G_M10517_IG07
add esi, 1
jo SHORT G_M10517_IG12
- ;; size=37 bbWeight=2 PerfScore 39.00
-G_M10517_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r8]
cmp esi, eax
- jle SHORT G_M10517_IG08
- ;; size=4 bbWeight=4 PerfScore 5.00
+ jle SHORT G_M10517_IG09
+ ;; size=42 bbWeight=4 PerfScore 76.00
G_M10517_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rcx rbx r10]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M10517_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
@@ -164,7 +168,7 @@ G_M10517_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 247, prolog size 10, PerfScore 171.88, instruction count 80, allocated bytes for code 247 (MethodHash=2a83d6ea) for method Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
+; Total bytes of code 265, prolog size 10, PerfScore 205.50, instruction count 83, allocated bytes for code 265 (MethodHash=2a83d6ea) for method Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -56,58 +56,24 @@ G_M25025_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, r8
; gcrRegs +[rsi]
;; size=17 bbWeight=1 PerfScore 5.00
-G_M25025_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rbx, rbx
- je SHORT G_M25025_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M25025_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M25025_IG14
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M25025_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M25025_IG05
- ;; size=6 bbWeight=0.46 PerfScore 1.84
-G_M25025_IG04: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi]
- mov ecx, 0x192F
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rax rcx rdx rbx]
- ; gcr arg pop 0
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M25025_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi rdi]
+ je G_M25025_IG14
+ ;; size=10 bbWeight=0.46 PerfScore 1.84
+G_M25025_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je SHORT G_M25025_IG07
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M25025_IG06: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M25025_IG15
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M25025_IG05: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov ebp, dword ptr [rsi+0x08]
test ebp, ebp
- jne SHORT G_M25025_IG08
- ;; size=7 bbWeight=0.46 PerfScore 1.49
-G_M25025_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi]
- mov ecx, 0x13A3
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, rsi
- ; gcrRegs +[rcx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rax rcx rdx rsi]
- ; gcr arg pop 0
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M25025_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi rdi]
+ je G_M25025_IG15
+ ;; size=11 bbWeight=0.46 PerfScore 1.49
+G_M25025_IG06: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
call [System.Net.Mime.MailBnfHelper:ValidateHeaderName(System.String)]
@@ -128,9 +94,9 @@ G_M25025_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; byrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M25025_IG12
+ jne SHORT G_M25025_IG10
;; size=37 bbWeight=1 PerfScore 11.75
-G_M25025_IG09: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M25025_IG07: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
mov edx, 1
@@ -140,7 +106,7 @@ G_M25025_IG09: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov rsi, rax
; gcrRegs +[rsi]
;; size=17 bbWeight=0 PerfScore 0.00
-G_M25025_IG10: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -148,9 +114,9 @@ G_M25025_IG10: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M25025_IG13
+ je SHORT G_M25025_IG11
;; size=13 bbWeight=1 PerfScore 4.50
-G_M25025_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG09: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, rbx
@@ -160,13 +126,13 @@ G_M25025_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
call [System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this]
; gcrRegs -[rcx rdx rbx rsi rdi r8]
; gcr arg pop 0
- jmp SHORT G_M25025_IG14
+ jmp SHORT G_M25025_IG12
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M25025_IG12: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG10: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi rdi]
- jmp SHORT G_M25025_IG10
+ jmp SHORT G_M25025_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M25025_IG13: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M25025_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, rbx
@@ -177,10 +143,10 @@ G_M25025_IG13: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdx rbx rsi rdi r8]
; gcr arg pop 0
;; size=15 bbWeight=0.50 PerfScore 1.88
-G_M25025_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25025_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M25025_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M25025_IG13: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -188,8 +154,40 @@ G_M25025_IG15: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
+G_M25025_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
+ mov ecx, 0x192F
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rax rcx rdx rbx]
+ ; gcr arg pop 0
+ int3
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M25025_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi]
+ mov ecx, 0x13A3
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rax rcx rdx rsi]
+ ; gcr arg pop 0
+ int3
+ ;; size=33 bbWeight=0 PerfScore 0.00
-; Total bytes of code 217, prolog size 8, PerfScore 36.33, instruction count 66, allocated bytes for code 217 (MethodHash=ec109e3e) for method System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
+; Total bytes of code 233, prolog size 8, PerfScore 36.33, instruction count 66, allocated bytes for code 233 (MethodHash=ec109e3e) for method System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
1[ubyte],System.Span
1[ubyte],System.Security.Cryptography.HashAlgorithmName,int):int:this (FullOpts)@@ -40,44 +40,25 @@ G_M15172_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
mov eax, dword ptr [rsp+0x70]
;; size=13 bbWeight=1 PerfScore 3.50
-G_M15172_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0104 {rdx r8}, byref, isz
+G_M15172_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0104 {rdx r8}, byref
; gcrRegs +[rcx]
; byrRegs +[rdx r8]
test rbx, rbx
- je SHORT G_M15172_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M15172_IG03: ; bbWeight=0.46, gcrefRegs=000A {rcx rbx}, byrefRegs=0104 {rdx r8}, byref, isz
+ je G_M15172_IG09
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M15172_IG03: ; bbWeight=0.46, gcrefRegs=000A {rcx rbx}, byrefRegs=0104 {rdx r8}, byref
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M15172_IG05
- ;; size=6 bbWeight=0.46 PerfScore 1.84
-G_M15172_IG04: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
- ; byrRegs -[rdx r8]
- mov ecx, 0x43B1
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rax rcx rdx rbx]
- ; gcr arg pop 0
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M15172_IG05: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0104 {rdx r8}, byref, isz
- ; gcrRegs +[rcx rbx]
- ; byrRegs +[rdx r8]
+ je G_M15172_IG09
+ ;; size=10 bbWeight=0.46 PerfScore 1.84
+G_M15172_IG04: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0104 {rdx r8}, byref
test eax, eax
- jl SHORT G_M15172_IG10
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M15172_IG06: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0104 {rdx r8}, byref, isz
+ jl G_M15172_IG10
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M15172_IG05: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0104 {rdx r8}, byref
cmp eax, 1
- jg SHORT G_M15172_IG10
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M15172_IG07: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0104 {rdx r8}, byref, isz
+ jg G_M15172_IG10
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M15172_IG06: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0104 {rdx r8}, byref, isz
mov dword ptr [rsp+0x20], eax
lea r9, [rsp+0x30]
mov qword ptr [rsp+0x28], r9
@@ -90,16 +71,16 @@ G_M15172_IG07: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0104 {rd
; byrRegs -[rdx r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M15172_IG09
+ je SHORT G_M15172_IG08
mov eax, dword ptr [rsp+0x30]
;; size=35 bbWeight=1 PerfScore 12.00
-G_M15172_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M15172_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M15172_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M15172_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -129,6 +110,22 @@ G_M15172_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=70 bbWeight=0 PerfScore 0.00
+G_M15172_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx]
+ mov ecx, 0x43B1
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rax rcx rdx rbx]
+ ; gcr arg pop 0
+ int3
+ ;; size=33 bbWeight=0 PerfScore 0.00
G_M15172_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, eax
call [<unknown method>]
@@ -142,7 +139,7 @@ G_M15172_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 195, prolog size 6, PerfScore 22.71, instruction count 53, allocated bytes for code 195 (MethodHash=0aabc4bb) for method System.Security.Cryptography.ECDsa:SignData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,int):int:this (FullOpts)
+; Total bytes of code 211, prolog size 6, PerfScore 22.71, instruction count 53, allocated bytes for code 211 (MethodHash=0aabc4bb) for method System.Security.Cryptography.ECDsa:SignData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,int):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -12,135 +12,121 @@
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> rbx class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T01] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Type>
; V03 arg3 [V03,T02] ( 4, 3 ) int -> rdi single-def
-; V04 arg4 [V04,T10] ( 2, 1 ) int -> [rsp+0x80] single-def
-; V05 arg5 [V05,T06] ( 4, 1.75) ref -> rbp class-hnd single-def <System.Object>
+; V04 arg4 [V04,T09] ( 2, 1 ) int -> [rsp+0x70] single-def
+; V05 arg5 [V05,T05] ( 3, 1.50) ref -> rbp class-hnd single-def <System.Object>
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T04] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V09 tmp2 [V09,T09] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V10 tmp3 [V10,T12] ( 0, 0 ) int -> zero-ref
+;* V09 tmp2 [V09,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V10 tmp3 [V10,T11] ( 0, 0 ) int -> zero-ref
; V11 tmp4 [V11,T03] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-; V12 tmp5 [V12,T11] ( 2, 1 ) ubyte -> rax single-def "Inline stloc first use temp"
-; V13 tmp6 [V13,T07] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
-; V14 cse0 [V14,T08] ( 3, 1.50) long -> rdx "CSE - moderate"
-; V15 cse1 [V15,T05] ( 5, 2.25) long -> r15 "CSE - aggressive"
+; V12 tmp5 [V12,T10] ( 2, 1 ) ubyte -> rcx single-def "Inline stloc first use temp"
+; V13 tmp6 [V13,T06] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
+; V14 cse0 [V14,T07] ( 3, 1.50) long -> rcx "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M49136_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rdx
; gcrRegs +[rbx]
mov rsi, r8
; gcrRegs +[rsi]
mov edi, r9d
- mov rbp, gword ptr [rsp+0x88]
+ mov rbp, gword ptr [rsp+0x78]
; gcrRegs +[rbp]
- ;; size=29 bbWeight=1 PerfScore 8.00
+ ;; size=24 bbWeight=1 PerfScore 7.00
G_M49136_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- cmp rsi, rdx
- jne SHORT G_M49136_IG09
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ cmp rsi, rcx
+ jne SHORT G_M49136_IG04
;; size=15 bbWeight=1 PerfScore 1.50
G_M49136_IG03: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rcx]
cmp edi, 1
- jne SHORT G_M49136_IG09
- mov r14d, dword ptr [rsp+0x80]
+ jne SHORT G_M49136_IG04
+ mov r14d, dword ptr [rsp+0x70]
cmp r14d, 1
- jne SHORT G_M49136_IG08
+ jne SHORT G_M49136_IG07
test rbp, rbp
- je SHORT G_M49136_IG07
- mov rdx, qword ptr [rbp]
- mov r15, 0xD1FFAB1E ; System.Int32
- cmp rdx, r15
- mov dword ptr [rsp+0x80], r14d
- jne SHORT G_M49136_IG09
- je SHORT G_M49136_IG05
- ;; size=53 bbWeight=0.50 PerfScore 5.12
-G_M49136_IG04: ; bbWeight=0.25, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- mov rdx, rbp
- ; gcrRegs +[rdx]
- mov rcx, r15
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rdx rbp]
- ; gcr arg pop 0
- ;; size=11 bbWeight=0.25 PerfScore 0.38
-G_M49136_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, r15
+ je SHORT G_M49136_IG06
+ mov rcx, 0xD1FFAB1E ; System.Int32
+ cmp qword ptr [rbp], rcx
+ mov dword ptr [rsp+0x70], r14d
+ je SHORT G_M49136_IG08
+ ;; size=42 bbWeight=0.50 PerfScore 5.00
+G_M49136_IG04: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ movzx rcx, byte ptr [rbx+0x10]
+ mov byte ptr [rbx+0x10], 0
+ test ecx, ecx
+ je SHORT G_M49136_IG10
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M49136_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ mov dword ptr [rsp+0x70], r14d
+ jmp SHORT G_M49136_IG04
+ ;; size=7 bbWeight=0.25 PerfScore 0.75
+G_M49136_IG07: ; bbWeight=0.25, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rsp+0x70], r14d
+ jmp SHORT G_M49136_IG04
+ ;; size=7 bbWeight=0.25 PerfScore 0.75
+G_M49136_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rbp rsi]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
xor ecx, ecx
mov dword ptr [rax+0x08], ecx
- ;; size=13 bbWeight=0.50 PerfScore 1.25
-G_M49136_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ ;; size=10 bbWeight=0.50 PerfScore 1.12
+G_M49136_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M49136_IG07: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M49136_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx rbp rsi]
- mov dword ptr [rsp+0x80], r14d
- jmp SHORT G_M49136_IG09
- ;; size=10 bbWeight=0.25 PerfScore 0.75
-G_M49136_IG08: ; bbWeight=0.25, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
- mov dword ptr [rsp+0x80], r14d
- ;; size=8 bbWeight=0.25 PerfScore 0.25
-G_M49136_IG09: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [rbx+0x10]
- mov byte ptr [rbx+0x10], 0
- test eax, eax
- je SHORT G_M49136_IG11
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M49136_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M49136_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rbx], rcx
- je SHORT G_M49136_IG13
+ je SHORT G_M49136_IG12
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M49136_IG12: ; bbWeight=0.25, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M49136_IG11: ; bbWeight=0.25, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
;; size=8 bbWeight=0.25 PerfScore 0.31
-G_M49136_IG13: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M49136_IG12: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rdx]
; gcrRegs +[rax]
;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M49136_IG14: ; bbWeight=0.50, nogc, extend
- mov r14d, dword ptr [rsp+0x80]
- mov dword ptr [rsp+0x80], r14d
- mov gword ptr [rsp+0x88], rbp
+G_M49136_IG13: ; bbWeight=0.50, nogc, extend
+ mov r14d, dword ptr [rsp+0x70]
+ mov dword ptr [rsp+0x70], r14d
+ mov gword ptr [rsp+0x78], rbp
mov rdx, rbx
; gcrRegs +[rdx]
mov r8, rsi
@@ -148,19 +134,18 @@ G_M49136_IG14: ; bbWeight=0.50, nogc, extend
mov r9d, edi
mov rcx, gword ptr [rax+0x08]
; gcrRegs +[rcx]
- ;; size=37 bbWeight=0.50 PerfScore 2.88
-G_M49136_IG15: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ ;; size=28 bbWeight=0.50 PerfScore 2.88
+G_M49136_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
tail.jmp [rax+0x18]<unknown method>
- ;; size=16 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.38
-; Total bytes of code 268, prolog size 29, PerfScore 32.81, instruction count 80, allocated bytes for code 268 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
+; Total bytes of code 219, prolog size 24, PerfScore 30.94, instruction count 71, allocated bytes for code 219 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -168,15 +153,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x0A
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
@@ -12,61 +12,76 @@
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> rbx class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 5, 4 ) ref -> rdi class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass>
; V03 arg3 [V03,T01] ( 6, 4 ) ref -> rsi class-hnd single-def <System.Object>
-; V04 arg4 [V04,T07] ( 5, 2.25) ref -> rbp class-hnd single-def <System.Object>
+; V04 arg4 [V04,T06] ( 4, 2 ) ref -> rbp class-hnd single-def <System.Object>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T12] ( 0, 0 ) int -> zero-ref
-; V07 tmp2 [V07,T06] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V08 tmp3 [V08,T10] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V09 tmp4 [V09,T13] ( 0, 0 ) int -> zero-ref
-;* V10 tmp5 [V10,T14] ( 0, 0 ) int -> zero-ref
+;* V06 tmp1 [V06,T11] ( 0, 0 ) int -> zero-ref
+; V07 tmp2 [V07,T05] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
+;* V08 tmp3 [V08,T09] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp4 [V09,T12] ( 0, 0 ) int -> zero-ref
+;* V10 tmp5 [V10,T13] ( 0, 0 ) int -> zero-ref
; V11 tmp6 [V11,T03] ( 3, 3 ) ref -> rbx class-hnd exact single-def "dup spill" <System.Object[]>
; V12 tmp7 [V12,T04] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V13 tmp8 [V13,T11] ( 2, 1 ) ubyte -> rcx single-def "Inline stloc first use temp"
+; V13 tmp8 [V13,T10] ( 2, 1 ) ubyte -> rcx single-def "Inline stloc first use temp"
; V14 tmp9 [V14,T08] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
-; V15 cse0 [V15,T09] ( 3, 1.50) long -> r15 "CSE - moderate"
-; V16 cse1 [V16,T05] ( 6, 2.75) long -> r14 "CSE - aggressive"
+; V15 cse0 [V15,T07] ( 4, 2 ) long -> r14 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M52598_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rdx
; gcrRegs +[rbx]
mov rdi, r8
; gcrRegs +[rdi]
mov rsi, r9
; gcrRegs +[rsi]
- mov rbp, gword ptr [rsp+0x80]
+ mov rbp, gword ptr [rsp+0x70]
; gcrRegs +[rbp]
- ;; size=29 bbWeight=1 PerfScore 8.00
-G_M52598_IG02: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=1 PerfScore 7.00
+G_M52598_IG02: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je G_M52598_IG07
- ;; size=9 bbWeight=1 PerfScore 1.25
+ je SHORT G_M52598_IG04
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M52598_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass
cmp qword ptr [rdi], rcx
- jne G_M52598_IG07
+ jne SHORT G_M52598_IG04
test rsi, rsi
- je G_M52598_IG07
+ je SHORT G_M52598_IG04
mov r14, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rsi], r14
- jne SHORT G_M52598_IG07
+ jne SHORT G_M52598_IG04
test rbp, rbp
- je SHORT G_M52598_IG07
- mov r15, qword ptr [rbp]
- cmp r15, r14
- jne SHORT G_M52598_IG07
+ je SHORT G_M52598_IG04
+ cmp qword ptr [rbp], r14
+ je SHORT G_M52598_IG06
+ ;; size=46 bbWeight=0.50 PerfScore 7.50
+G_M52598_IG04: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ movzx rcx, byte ptr [rbx+0x10]
+ mov byte ptr [rbx+0x10], 0
+ test ecx, ecx
+ je SHORT G_M52598_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.12
+G_M52598_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M52598_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx rdi]
mov rcx, 0xD1FFAB1E ; System.Object[]
mov edx, 2
call CORINFO_HELP_NEWARR_1_OBJ
- ; gcrRegs -[rbx rdi] +[rax]
+ ; gcrRegs +[rax]
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
@@ -77,18 +92,6 @@ G_M52598_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx rsi]
; byrRegs -[rcx]
- cmp r15, r14
- je SHORT G_M52598_IG05
- ;; size=97 bbWeight=0.50 PerfScore 9.50
-G_M52598_IG04: ; bbWeight=0.25, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
- mov rdx, rbp
- ; gcrRegs +[rdx]
- mov rcx, r14
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rdx]
- ; gcr arg pop 0
- ;; size=11 bbWeight=0.25 PerfScore 0.38
-G_M52598_IG05: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
mov rcx, r14
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -103,54 +106,37 @@ G_M52598_IG05: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000
; gcrRegs -[rax rdx rbx rbp]
; byrRegs -[rcx]
mov dword ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
- ;; size=36 bbWeight=0.50 PerfScore 3.50
-G_M52598_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ ;; size=71 bbWeight=0.50 PerfScore 5.25
+G_M52598_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M52598_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M52598_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rbp rsi rdi]
- movzx rcx, byte ptr [rbx+0x10]
- mov byte ptr [rbx+0x10], 0
- test ecx, ecx
- je SHORT G_M52598_IG09
- ;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M52598_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M52598_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rbx], rcx
- je SHORT G_M52598_IG11
+ je SHORT G_M52598_IG10
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M52598_IG10: ; bbWeight=0.25, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+G_M52598_IG09: ; bbWeight=0.25, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
;; size=8 bbWeight=0.25 PerfScore 0.31
-G_M52598_IG11: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+G_M52598_IG10: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rdx]
; gcrRegs +[rax]
;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M52598_IG12: ; bbWeight=0.50, nogc, extend
- mov gword ptr [rsp+0x80], rbp
+G_M52598_IG11: ; bbWeight=0.50, nogc, extend
+ mov gword ptr [rsp+0x70], rbp
mov rdx, rbx
; gcrRegs +[rdx]
mov r8, rdi
@@ -159,19 +145,18 @@ G_M52598_IG12: ; bbWeight=0.50, nogc, extend
; gcrRegs +[r9]
mov rcx, gword ptr [rax+0x08]
; gcrRegs +[rcx]
- ;; size=21 bbWeight=0.50 PerfScore 1.88
-G_M52598_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ ;; size=18 bbWeight=0.50 PerfScore 1.88
+G_M52598_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
tail.jmp [rax+0x18]<unknown method>
- ;; size=16 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.38
-; Total bytes of code 293, prolog size 29, PerfScore 37.06, instruction count 86, allocated bytes for code 293 (MethodHash=e7623289) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass,System.Object,System.Object) (FullOpts)
+; Total bytes of code 248, prolog size 24, PerfScore 34.69, instruction count 76, allocated bytes for code 248 (MethodHash=e7623289) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass,System.Object,System.Object) (FullOpts)
; ============================================================
Unwind Info:
@@ -179,15 +164,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x0A
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
@@ -14,9 +14,9 @@
; V02 loc1 [V02,T01] ( 5, 29.03) int -> rdi
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V05 tmp2 [V05,T07] ( 3, 0 ) ubyte -> rbp "Inline return value spill temp"
+; V05 tmp2 [V05,T07] ( 3, 0 ) ubyte -> rdi "Inline return value spill temp"
; V06 tmp3 [V06,T04] ( 8, 7.96) ushort -> rcx "Inlining Arg"
-; V07 tmp4 [V07,T10] ( 3, 0 ) ubyte -> rbp "Inline return value spill temp"
+; V07 tmp4 [V07,T10] ( 3, 0 ) ubyte -> rdi "Inline return value spill temp"
; V08 tmp5 [V08,T11] ( 3, 0 ) int -> rax "Inlining Arg"
; V09 tmp6 [V09,T08] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
; V10 tmp7 [V10,T00] ( 10, 42.21) ushort -> rcx "Inlining Arg"
@@ -25,179 +25,155 @@
;* V13 tmp10 [V13,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V14 cse0 [V14,T05] ( 3, 3.00) int -> rsi "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M26758_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
- push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 4.50
+ ;; size=10 bbWeight=1 PerfScore 3.50
G_M26758_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je SHORT G_M26758_IG03
+ je G_M26758_IG19
mov esi, dword ptr [rbx+0x08]
test esi, esi
- jne SHORT G_M26758_IG05
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M26758_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- xor eax, eax
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M26758_IG04: ; bbWeight=0, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M26758_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
+ je G_M26758_IG19
movzx rcx, word ptr [rbx+0x0C]
cmp ecx, 97
- jge SHORT G_M26758_IG14
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M26758_IG06: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M26758_IG08
- ;; size=2 bbWeight=0.98 PerfScore 1.96
-G_M26758_IG07: ; bbWeight=7.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- inc edi
- cmp edi, esi
- jl SHORT G_M26758_IG13
- jmp SHORT G_M26758_IG22
- ;; size=8 bbWeight=7.13 PerfScore 24.95
-G_M26758_IG08: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jge SHORT G_M26758_IG11
+ ;; size=29 bbWeight=1 PerfScore 7.75
+G_M26758_IG03: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp ecx, 65
- jl SHORT G_M26758_IG03
- ;; size=5 bbWeight=0.98 PerfScore 1.23
-G_M26758_IG09: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jl G_M26758_IG19
+ ;; size=9 bbWeight=0.98 PerfScore 1.23
+G_M26758_IG04: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ecx, 90
- jle SHORT G_M26758_IG11
+ jle SHORT G_M26758_IG06
;; size=5 bbWeight=0.98 PerfScore 1.23
-G_M26758_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M26758_IG12
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M26758_IG11: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26758_IG05: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ xor edi, edi
+ cmp ecx, 95
+ sete dil
+ jmp G_M26758_IG24
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M26758_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edi, 1
cmp esi, 1
- jle SHORT G_M26758_IG22
- jmp SHORT G_M26758_IG13
- ;; size=12 bbWeight=1.00 PerfScore 3.50
-G_M26758_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- xor ebp, ebp
- cmp ecx, 95
- sete bpl
- jmp SHORT G_M26758_IG27
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M26758_IG13: ; bbWeight=6.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M26758_IG17
+ ;; size=10 bbWeight=1.00 PerfScore 1.50
+G_M26758_IG07: ; bbWeight=6.65, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov eax, edi
movzx rcx, word ptr [rbx+2*rax+0x0C]
cmp ecx, 97
- jge SHORT G_M26758_IG18
- jmp SHORT G_M26758_IG15
- ;; size=14 bbWeight=6.65 PerfScore 36.56
-G_M26758_IG14: ; bbWeight=0.02, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 122
- jg SHORT G_M26758_IG24
- jmp SHORT G_M26758_IG11
- ;; size=7 bbWeight=0.02 PerfScore 0.06
-G_M26758_IG15: ; bbWeight=1.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jge SHORT G_M26758_IG14
+ ;; size=12 bbWeight=6.65 PerfScore 23.26
+G_M26758_IG08: ; bbWeight=1.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ecx, 65
- jge SHORT G_M26758_IG19
+ jge SHORT G_M26758_IG12
;; size=5 bbWeight=1.09 PerfScore 1.36
-G_M26758_IG16: ; bbWeight=0.58, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26758_IG09: ; bbWeight=0.58, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ecx, 48
- jl SHORT G_M26758_IG03
+ jl SHORT G_M26758_IG19
;; size=5 bbWeight=0.58 PerfScore 0.73
-G_M26758_IG17: ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26758_IG10: ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ecx, 57
- jg SHORT G_M26758_IG03
- jmp SHORT G_M26758_IG07
+ jle SHORT G_M26758_IG16
+ jmp SHORT G_M26758_IG19
;; size=7 bbWeight=0.07 PerfScore 0.23
-G_M26758_IG18: ; bbWeight=5.56, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26758_IG11: ; bbWeight=0.02, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ecx, 122
- jle SHORT G_M26758_IG07
- jmp SHORT G_M26758_IG28
- ;; size=7 bbWeight=5.56 PerfScore 18.07
-G_M26758_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 90
jg SHORT G_M26758_IG21
+ jmp SHORT G_M26758_IG06
+ ;; size=7 bbWeight=0.02 PerfScore 0.06
+G_M26758_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, 90
+ jle SHORT G_M26758_IG16
;; size=5 bbWeight=0.50 PerfScore 0.63
-G_M26758_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M26758_IG07
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M26758_IG21: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26758_IG13: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ecx, 95
- jne SHORT G_M26758_IG03
- jmp SHORT G_M26758_IG07
+ je SHORT G_M26758_IG16
+ jmp SHORT G_M26758_IG19
;; size=7 bbWeight=0.01 PerfScore 0.02
-G_M26758_IG22: ; bbWeight=0.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov eax, 1
- ;; size=5 bbWeight=0.93 PerfScore 0.23
-G_M26758_IG23: ; bbWeight=0.93, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0.93 PerfScore 3.03
-G_M26758_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
+G_M26758_IG14: ; bbWeight=5.56, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, 122
+ jle SHORT G_M26758_IG16
+ ;; size=5 bbWeight=5.56 PerfScore 6.95
+G_M26758_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ecx, 127
- jle G_M26758_IG03
+ jle SHORT G_M26758_IG19
call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int]
; gcr arg pop 0
cmp eax, 4
- jbe SHORT G_M26758_IG25
+ jbe SHORT G_M26758_IG16
cmp eax, 9
- jne SHORT G_M26758_IG26
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M26758_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov ebp, 1
- jmp SHORT G_M26758_IG27
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M26758_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor ebp, ebp
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M26758_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- test ebp, ebp
- je G_M26758_IG03
- jmp G_M26758_IG11
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M26758_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 127
- jle G_M26758_IG03
- call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int]
- ; gcr arg pop 0
- cmp eax, 4
- jbe G_M26758_IG07
- cmp eax, 9
- je G_M26758_IG07
+ je SHORT G_M26758_IG16
cmp eax, 8
- je G_M26758_IG07
+ je SHORT G_M26758_IG16
cmp eax, 18
- je G_M26758_IG07
+ je SHORT G_M26758_IG16
lea ecx, [rax-0x05]
cmp ecx, 1
- ja SHORT G_M26758_IG29
- jmp G_M26758_IG07
- ;; size=64 bbWeight=0 PerfScore 0.00
-G_M26758_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jbe SHORT G_M26758_IG16
cmp eax, 15
sete al
movzx rax, al
test eax, eax
- je G_M26758_IG03
- jmp G_M26758_IG07
- ;; size=22 bbWeight=0 PerfScore 0.00
+ je SHORT G_M26758_IG19
+ ;; size=52 bbWeight=0 PerfScore 0.00
+G_M26758_IG16: ; bbWeight=7.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ inc edi
+ cmp edi, esi
+ jl SHORT G_M26758_IG07
+ ;; size=6 bbWeight=7.13 PerfScore 10.69
+G_M26758_IG17: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
+ mov eax, 1
+ ;; size=5 bbWeight=0.49 PerfScore 0.12
+G_M26758_IG18: ; bbWeight=0.49, epilog, nogc, extend
...
@@ -5,15 +5,15 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1968
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1968
; 3 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 8, 7 ) ref -> rbx this class-hnd single-def <Xunit.Sdk.MessageBus>
+; V00 this [V00,T01] ( 9, 7 ) ref -> rbx this class-hnd single-def <Xunit.Sdk.MessageBus>
; V01 arg1 [V01,T03] ( 5, 3 ) ref -> rsi class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T16] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V04 tmp2 [V04,T05] ( 3, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V04 tmp2 [V04,T07] ( 3, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V05 tmp3 [V05,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V06 tmp4 [V06,T00] ( 5, 10 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
; V07 tmp5 [V07,T09] ( 3, 3 ) ref -> rbp class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -21,15 +21,15 @@
; V09 tmp7 [V09,T10] ( 3, 3 ) int -> rdx "Inline stloc first use temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V11 tmp9 [V11,T12] ( 3, 2 ) int -> r8 "Inline stloc first use temp"
-; V12 tmp10 [V12,T06] ( 3, 4 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V12 tmp10 [V12,T04] ( 5, 4 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V13 tmp11 [V13,T13] ( 2, 2 ) ubyte -> rax single-def "Inline stloc first use temp"
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V15 tmp13 [V15,T07] ( 2, 4 ) ref -> rcx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V16 tmp14 [V16,T08] ( 4, 3 ) ref -> rcx
+; V15 tmp13 [V15,T05] ( 4, 4 ) ref -> rcx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
+; V16 tmp14 [V16,T08] ( 6, 3 ) ref -> rcx
; V17 tmp15 [V17,T15] ( 5, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
; V19 tmp17 [V19,T17] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V20 cse0 [V20,T04] ( 4, 4 ) byref -> r14 "CSE - aggressive"
+; V20 cse0 [V20,T06] ( 4, 4 ) byref -> r14 "CSE - aggressive"
; V21 cse1 [V21,T11] ( 3, 3 ) int -> r15 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -47,12 +47,83 @@ G_M26012_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, rdx
; gcrRegs +[rsi]
;; size=18 bbWeight=1 PerfScore 6.75
-G_M26012_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M26012_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x29], 0
- je SHORT G_M26012_IG04
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
+ jne G_M26012_IG08
+ cmp byte ptr [rbx+0x2A], 0
+ jne G_M26012_IG09
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M26012_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rcx]
+ mov rdi, gword ptr [rcx+0x10]
+ ; gcrRegs +[rdi]
+ mov rbp, gword ptr [rdi+0x08]
+ ; gcrRegs +[rbp]
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M26012_IG04: ; bbWeight=1, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [rdi+0xA0]
+ mov dword ptr [rsp+0x24], eax
+ mov edx, eax
+ and edx, dword ptr [rdi+0x18]
+ cmp edx, dword ptr [rbp+0x08]
+ jae SHORT G_M26012_IG07
+ shl rdx, 4
+ lea r14, bword ptr [rbp+rdx+0x10]
+ ; byrRegs +[r14]
+ mov r8d, dword ptr [r14+0x08]
+ sub r8d, eax
+ jne G_M26012_IG10
+ lea rdx, bword ptr [rdi+0xA0]
+ ; byrRegs +[rdx]
+ lea r15d, [rax+0x01]
+ lock
+ cmpxchg dword ptr [rdx], r15d
+ cmp eax, dword ptr [rsp+0x24]
+ jne SHORT G_M26012_IG04
+ mov rcx, r14
+ ; gcrRegs -[rcx]
+ ; byrRegs +[rcx]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[rdx rbp rsi rdi]
+ ; byrRegs -[rcx]
+ mov dword ptr [r14+0x08], r15d
+ mov r14, gword ptr [rbx+0x20]
+ ; gcrRegs +[r14]
+ ; byrRegs -[r14]
+ mov rcx, gword ptr [r14+0x08]
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je G_M26012_IG11
+ ;; size=96 bbWeight=1 PerfScore 45.75
+G_M26012_IG05: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
+ call [<unknown method>]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test eax, eax
+ je G_M26012_IG12
+ movzx rax, byte ptr [rbx+0x28]
+ ;; size=18 bbWeight=1 PerfScore 6.25
+G_M26012_IG06: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ pop r15
+ ret
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M26012_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M26012_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -76,12 +147,8 @@ G_M26012_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rsi]
; gcr arg pop 0
;; size=58 bbWeight=0 PerfScore 0.00
-G_M26012_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M26012_IG09: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rsi]
- cmp byte ptr [rbx+0x2A], 0
- je SHORT G_M26012_IG06
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG05: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -89,67 +156,26 @@ G_M26012_IG05: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M26012_IG06
+ je G_M26012_IG03
mov byte ptr [rbx+0x28], 0
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M26012_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- mov rdi, gword ptr [rcx+0x10]
- ; gcrRegs +[rdi]
- mov rbp, gword ptr [rdi+0x08]
- ; gcrRegs +[rbp]
- ;; size=12 bbWeight=1 PerfScore 6.00
-G_M26012_IG07: ; bbWeight=1, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rdi+0xA0]
- mov dword ptr [rsp+0x24], eax
- mov edx, eax
- and edx, dword ptr [rdi+0x18]
- cmp edx, dword ptr [rbp+0x08]
- jae G_M26012_IG14
- shl rdx, 4
- lea r14, bword ptr [rbp+rdx+0x10]
- ; byrRegs +[r14]
- mov r8d, dword ptr [r14+0x08]
- sub r8d, eax
- je SHORT G_M26012_IG09
- ;; size=42 bbWeight=1 PerfScore 16.00
-G_M26012_IG08: ; bbWeight=0, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r14]
+ jmp G_M26012_IG03
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M26012_IG10: ; bbWeight=0, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax] +[rcx rbp rdi]
test r8d, r8d
- jge SHORT G_M26012_IG07
- jmp G_M26012_IG15
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M26012_IG09: ; bbWeight=1, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=4000 {r14}, byref, isz
- ; byrRegs +[r14]
- lea rdx, bword ptr [rdi+0xA0]
- ; byrRegs +[rdx]
- lea r15d, [rax+0x01]
- lock
- cmpxchg dword ptr [rdx], r15d
- cmp eax, dword ptr [rsp+0x24]
- jne SHORT G_M26012_IG07
- mov rcx, r14
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
+ jge G_M26012_IG04
mov rdx, rsi
; gcrRegs +[rdx]
- ; byrRegs -[rdx]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rdx rbp rsi rdi]
- ; byrRegs -[rcx]
- mov dword ptr [r14+0x08], r15d
- ;; size=37 bbWeight=1 PerfScore 24.50
-G_M26012_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r14]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx rbp rsi rdi]
+ ; gcr arg pop 0
mov r14, gword ptr [rbx+0x20]
; gcrRegs +[r14]
mov rcx, gword ptr [r14+0x08]
; gcrRegs +[rcx]
test rcx, rcx
- jne SHORT G_M26012_IG12
- ;; size=13 bbWeight=1 PerfScore 5.25
+ jne G_M26012_IG05
+ ;; size=35 bbWeight=0 PerfScore 0.00
G_M26012_IG11: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rcx, 0xD1FFAB1E ; Microsoft.Win32.SafeHandles.SafeWaitHandle
@@ -175,42 +201,10 @@ G_M26012_IG11: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
; byrRegs -[rcx]
mov rcx, rsi
; gcrRegs +[rcx]
- ;; size=55 bbWeight=0 PerfScore 0.00
-G_M26012_IG12: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- call [<unknown method>]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- test eax, eax
- je SHORT G_M26012_IG16
- movzx rax, byte ptr [rbx+0x28]
- ;; size=14 bbWeight=1 PerfScore 6.25
-G_M26012_IG13: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- ret
- ;; size=13 bbWeight=1 PerfScore 4.25
-G_M26012_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
...
@@ -5,15 +5,15 @@
; optimized using Dynamic PGO
; rsp based frame
; fully 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; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 8, 7 ) ref -> rbx this class-hnd single-def <Xunit.Sdk.MessageBus>
+; V00 this [V00,T01] ( 9, 7 ) ref -> rbx this class-hnd single-def <Xunit.Sdk.MessageBus>
; V01 arg1 [V01,T03] ( 5, 3 ) ref -> rsi class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T16] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V04 tmp2 [V04,T05] ( 3, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V04 tmp2 [V04,T07] ( 3, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V05 tmp3 [V05,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V06 tmp4 [V06,T00] ( 5, 10 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
; V07 tmp5 [V07,T09] ( 3, 3 ) ref -> rbp class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -21,15 +21,15 @@
; V09 tmp7 [V09,T10] ( 3, 3 ) int -> rdx "Inline stloc first use temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V11 tmp9 [V11,T12] ( 3, 2 ) int -> r8 "Inline stloc first use temp"
-; V12 tmp10 [V12,T06] ( 3, 4 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V12 tmp10 [V12,T04] ( 5, 4 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V13 tmp11 [V13,T13] ( 2, 2 ) ubyte -> rax single-def "Inline stloc first use temp"
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V15 tmp13 [V15,T07] ( 2, 4 ) ref -> rcx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V16 tmp14 [V16,T08] ( 4, 3 ) ref -> rcx
+; V15 tmp13 [V15,T05] ( 4, 4 ) ref -> rcx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
+; V16 tmp14 [V16,T08] ( 6, 3 ) ref -> rcx
; V17 tmp15 [V17,T15] ( 5, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
; V19 tmp17 [V19,T17] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V20 cse0 [V20,T04] ( 4, 4 ) byref -> r14 "CSE - aggressive"
+; V20 cse0 [V20,T06] ( 4, 4 ) byref -> r14 "CSE - aggressive"
; V21 cse1 [V21,T11] ( 3, 3 ) int -> r15 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -47,12 +47,83 @@ G_M26012_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, rdx
; gcrRegs +[rsi]
;; size=18 bbWeight=1 PerfScore 6.75
-G_M26012_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M26012_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x29], 0
- je SHORT G_M26012_IG04
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
+ jne G_M26012_IG08
+ cmp byte ptr [rbx+0x2A], 0
+ jne G_M26012_IG09
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M26012_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rcx]
+ mov rdi, gword ptr [rcx+0x10]
+ ; gcrRegs +[rdi]
+ mov rbp, gword ptr [rdi+0x08]
+ ; gcrRegs +[rbp]
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M26012_IG04: ; bbWeight=1, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [rdi+0xA0]
+ mov dword ptr [rsp+0x24], eax
+ mov edx, eax
+ and edx, dword ptr [rdi+0x18]
+ cmp edx, dword ptr [rbp+0x08]
+ jae SHORT G_M26012_IG07
+ shl rdx, 4
+ lea r14, bword ptr [rbp+rdx+0x10]
+ ; byrRegs +[r14]
+ mov r8d, dword ptr [r14+0x08]
+ sub r8d, eax
+ jne G_M26012_IG10
+ lea rdx, bword ptr [rdi+0xA0]
+ ; byrRegs +[rdx]
+ lea r15d, [rax+0x01]
+ lock
+ cmpxchg dword ptr [rdx], r15d
+ cmp eax, dword ptr [rsp+0x24]
+ jne SHORT G_M26012_IG04
+ mov rcx, r14
+ ; gcrRegs -[rcx]
+ ; byrRegs +[rcx]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[rdx rbp rsi rdi]
+ ; byrRegs -[rcx]
+ mov dword ptr [r14+0x08], r15d
+ mov r14, gword ptr [rbx+0x20]
+ ; gcrRegs +[r14]
+ ; byrRegs -[r14]
+ mov rcx, gword ptr [r14+0x08]
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je G_M26012_IG11
+ ;; size=96 bbWeight=1 PerfScore 45.75
+G_M26012_IG05: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
+ call [<unknown method>]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test eax, eax
+ je G_M26012_IG12
+ movzx rax, byte ptr [rbx+0x28]
+ ;; size=18 bbWeight=1 PerfScore 6.25
+G_M26012_IG06: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ pop r15
+ ret
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M26012_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M26012_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -76,12 +147,8 @@ G_M26012_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rsi]
; gcr arg pop 0
;; size=58 bbWeight=0 PerfScore 0.00
-G_M26012_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M26012_IG09: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rsi]
- cmp byte ptr [rbx+0x2A], 0
- je SHORT G_M26012_IG06
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG05: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -89,67 +156,26 @@ G_M26012_IG05: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M26012_IG06
+ je G_M26012_IG03
mov byte ptr [rbx+0x28], 0
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M26012_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- mov rdi, gword ptr [rcx+0x10]
- ; gcrRegs +[rdi]
- mov rbp, gword ptr [rdi+0x08]
- ; gcrRegs +[rbp]
- ;; size=12 bbWeight=1 PerfScore 6.00
-G_M26012_IG07: ; bbWeight=1, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rdi+0xA0]
- mov dword ptr [rsp+0x24], eax
- mov edx, eax
- and edx, dword ptr [rdi+0x18]
- cmp edx, dword ptr [rbp+0x08]
- jae G_M26012_IG14
- shl rdx, 4
- lea r14, bword ptr [rbp+rdx+0x10]
- ; byrRegs +[r14]
- mov r8d, dword ptr [r14+0x08]
- sub r8d, eax
- je SHORT G_M26012_IG09
- ;; size=42 bbWeight=1 PerfScore 16.00
-G_M26012_IG08: ; bbWeight=0, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r14]
+ jmp G_M26012_IG03
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M26012_IG10: ; bbWeight=0, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax] +[rcx rbp rdi]
test r8d, r8d
- jge SHORT G_M26012_IG07
- jmp G_M26012_IG15
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M26012_IG09: ; bbWeight=1, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=4000 {r14}, byref, isz
- ; byrRegs +[r14]
- lea rdx, bword ptr [rdi+0xA0]
- ; byrRegs +[rdx]
- lea r15d, [rax+0x01]
- lock
- cmpxchg dword ptr [rdx], r15d
- cmp eax, dword ptr [rsp+0x24]
- jne SHORT G_M26012_IG07
- mov rcx, r14
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
+ jge G_M26012_IG04
mov rdx, rsi
; gcrRegs +[rdx]
- ; byrRegs -[rdx]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rdx rbp rsi rdi]
- ; byrRegs -[rcx]
- mov dword ptr [r14+0x08], r15d
- ;; size=37 bbWeight=1 PerfScore 24.50
-G_M26012_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r14]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx rbp rsi rdi]
+ ; gcr arg pop 0
mov r14, gword ptr [rbx+0x20]
; gcrRegs +[r14]
mov rcx, gword ptr [r14+0x08]
; gcrRegs +[rcx]
test rcx, rcx
- jne SHORT G_M26012_IG12
- ;; size=13 bbWeight=1 PerfScore 5.25
+ jne G_M26012_IG05
+ ;; size=35 bbWeight=0 PerfScore 0.00
G_M26012_IG11: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rcx, 0xD1FFAB1E ; Microsoft.Win32.SafeHandles.SafeWaitHandle
@@ -175,42 +201,10 @@ G_M26012_IG11: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
; byrRegs -[rcx]
mov rcx, rsi
; gcrRegs +[rcx]
- ;; size=55 bbWeight=0 PerfScore 0.00
-G_M26012_IG12: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- call [<unknown method>]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- test eax, eax
- je SHORT G_M26012_IG16
- movzx rax, byte ptr [rbx+0x28]
- ;; size=14 bbWeight=1 PerfScore 6.25
-G_M26012_IG13: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- ret
- ;; size=13 bbWeight=1 PerfScore 4.25
-G_M26012_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
...
@@ -5,15 +5,15 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 45
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 45
; 3 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 8, 7 ) ref -> rbx this class-hnd single-def <Xunit.Sdk.MessageBus>
+; V00 this [V00,T01] ( 9, 7 ) ref -> rbx this class-hnd single-def <Xunit.Sdk.MessageBus>
; V01 arg1 [V01,T03] ( 5, 3 ) ref -> rsi class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T16] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V04 tmp2 [V04,T05] ( 3, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V04 tmp2 [V04,T07] ( 3, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V05 tmp3 [V05,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V06 tmp4 [V06,T00] ( 5, 10 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
; V07 tmp5 [V07,T09] ( 3, 3 ) ref -> rbp class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -21,15 +21,15 @@
; V09 tmp7 [V09,T10] ( 3, 3 ) int -> rdx "Inline stloc first use temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V11 tmp9 [V11,T12] ( 3, 2 ) int -> r8 "Inline stloc first use temp"
-; V12 tmp10 [V12,T06] ( 3, 4 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+; V12 tmp10 [V12,T04] ( 5, 4 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V13 tmp11 [V13,T13] ( 2, 2 ) ubyte -> rax single-def "Inline stloc first use temp"
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V15 tmp13 [V15,T07] ( 2, 4 ) ref -> rcx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-; V16 tmp14 [V16,T08] ( 4, 3 ) ref -> rcx
+; V15 tmp13 [V15,T05] ( 4, 4 ) ref -> rcx class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
+; V16 tmp14 [V16,T08] ( 6, 3 ) ref -> rcx
; V17 tmp15 [V17,T15] ( 5, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
; V19 tmp17 [V19,T17] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V20 cse0 [V20,T04] ( 4, 4 ) byref -> r14 "CSE - aggressive"
+; V20 cse0 [V20,T06] ( 4, 4 ) byref -> r14 "CSE - aggressive"
; V21 cse1 [V21,T11] ( 3, 3 ) int -> r15 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -47,12 +47,83 @@ G_M26012_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, rdx
; gcrRegs +[rsi]
;; size=18 bbWeight=1 PerfScore 6.75
-G_M26012_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M26012_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x29], 0
- je SHORT G_M26012_IG04
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
+ jne G_M26012_IG08
+ cmp byte ptr [rbx+0x2A], 0
+ jne G_M26012_IG09
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M26012_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rcx]
+ mov rdi, gword ptr [rcx+0x10]
+ ; gcrRegs +[rdi]
+ mov rbp, gword ptr [rdi+0x08]
+ ; gcrRegs +[rbp]
+ ;; size=12 bbWeight=1 PerfScore 6.00
+G_M26012_IG04: ; bbWeight=1, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [rdi+0xA0]
+ mov dword ptr [rsp+0x24], eax
+ mov edx, eax
+ and edx, dword ptr [rdi+0x18]
+ cmp edx, dword ptr [rbp+0x08]
+ jae SHORT G_M26012_IG07
+ shl rdx, 4
+ lea r14, bword ptr [rbp+rdx+0x10]
+ ; byrRegs +[r14]
+ mov r8d, dword ptr [r14+0x08]
+ sub r8d, eax
+ jne G_M26012_IG10
+ lea rdx, bword ptr [rdi+0xA0]
+ ; byrRegs +[rdx]
+ lea r15d, [rax+0x01]
+ lock
+ cmpxchg dword ptr [rdx], r15d
+ cmp eax, dword ptr [rsp+0x24]
+ jne SHORT G_M26012_IG04
+ mov rcx, r14
+ ; gcrRegs -[rcx]
+ ; byrRegs +[rcx]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[rdx rbp rsi rdi]
+ ; byrRegs -[rcx]
+ mov dword ptr [r14+0x08], r15d
+ mov r14, gword ptr [rbx+0x20]
+ ; gcrRegs +[r14]
+ ; byrRegs -[r14]
+ mov rcx, gword ptr [r14+0x08]
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je G_M26012_IG11
+ ;; size=96 bbWeight=1 PerfScore 45.75
+G_M26012_IG05: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
+ call [<unknown method>]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test eax, eax
+ je G_M26012_IG12
+ movzx rax, byte ptr [rbx+0x28]
+ ;; size=18 bbWeight=1 PerfScore 6.25
+G_M26012_IG06: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ pop r15
+ ret
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M26012_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M26012_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -76,12 +147,8 @@ G_M26012_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rsi]
; gcr arg pop 0
;; size=58 bbWeight=0 PerfScore 0.00
-G_M26012_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M26012_IG09: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rsi]
- cmp byte ptr [rbx+0x2A], 0
- je SHORT G_M26012_IG06
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG05: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -89,67 +156,26 @@ G_M26012_IG05: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M26012_IG06
+ je G_M26012_IG03
mov byte ptr [rbx+0x28], 0
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M26012_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- mov rdi, gword ptr [rcx+0x10]
- ; gcrRegs +[rdi]
- mov rbp, gword ptr [rdi+0x08]
- ; gcrRegs +[rbp]
- ;; size=12 bbWeight=1 PerfScore 6.00
-G_M26012_IG07: ; bbWeight=1, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rdi+0xA0]
- mov dword ptr [rsp+0x24], eax
- mov edx, eax
- and edx, dword ptr [rdi+0x18]
- cmp edx, dword ptr [rbp+0x08]
- jae G_M26012_IG14
- shl rdx, 4
- lea r14, bword ptr [rbp+rdx+0x10]
- ; byrRegs +[r14]
- mov r8d, dword ptr [r14+0x08]
- sub r8d, eax
- je SHORT G_M26012_IG09
- ;; size=42 bbWeight=1 PerfScore 16.00
-G_M26012_IG08: ; bbWeight=0, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r14]
+ jmp G_M26012_IG03
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M26012_IG10: ; bbWeight=0, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax] +[rcx rbp rdi]
test r8d, r8d
- jge SHORT G_M26012_IG07
- jmp G_M26012_IG15
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M26012_IG09: ; bbWeight=1, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=4000 {r14}, byref, isz
- ; byrRegs +[r14]
- lea rdx, bword ptr [rdi+0xA0]
- ; byrRegs +[rdx]
- lea r15d, [rax+0x01]
- lock
- cmpxchg dword ptr [rdx], r15d
- cmp eax, dword ptr [rsp+0x24]
- jne SHORT G_M26012_IG07
- mov rcx, r14
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
+ jge G_M26012_IG04
mov rdx, rsi
; gcrRegs +[rdx]
- ; byrRegs -[rdx]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rdx rbp rsi rdi]
- ; byrRegs -[rcx]
- mov dword ptr [r14+0x08], r15d
- ;; size=37 bbWeight=1 PerfScore 24.50
-G_M26012_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r14]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx rbp rsi rdi]
+ ; gcr arg pop 0
mov r14, gword ptr [rbx+0x20]
; gcrRegs +[r14]
mov rcx, gword ptr [r14+0x08]
; gcrRegs +[rcx]
test rcx, rcx
- jne SHORT G_M26012_IG12
- ;; size=13 bbWeight=1 PerfScore 5.25
+ jne G_M26012_IG05
+ ;; size=35 bbWeight=0 PerfScore 0.00
G_M26012_IG11: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rcx, 0xD1FFAB1E ; Microsoft.Win32.SafeHandles.SafeWaitHandle
@@ -175,42 +201,10 @@ G_M26012_IG11: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
; byrRegs -[rcx]
mov rcx, rsi
; gcrRegs +[rcx]
- ;; size=55 bbWeight=0 PerfScore 0.00
-G_M26012_IG12: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- call [<unknown method>]
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- test eax, eax
- je SHORT G_M26012_IG16
- movzx rax, byte ptr [rbx+0x28]
- ;; size=14 bbWeight=1 PerfScore 6.25
-G_M26012_IG13: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- ret
- ;; size=13 bbWeight=1 PerfScore 4.25
-G_M26012_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
...
@@ -12,135 +12,121 @@
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> rbx class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T01] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Type>
; V03 arg3 [V03,T02] ( 4, 3 ) int -> rdi single-def
-; V04 arg4 [V04,T10] ( 2, 1 ) int -> [rsp+0x80] single-def
-; V05 arg5 [V05,T06] ( 4, 1.75) ref -> rbp class-hnd single-def <System.Object>
+; V04 arg4 [V04,T09] ( 2, 1 ) int -> [rsp+0x70] single-def
+; V05 arg5 [V05,T05] ( 3, 1.50) ref -> rbp class-hnd single-def <System.Object>
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T04] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V09 tmp2 [V09,T09] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V10 tmp3 [V10,T12] ( 0, 0 ) int -> zero-ref
+;* V09 tmp2 [V09,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V10 tmp3 [V10,T11] ( 0, 0 ) int -> zero-ref
; V11 tmp4 [V11,T03] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-; V12 tmp5 [V12,T11] ( 2, 1 ) ubyte -> rax single-def "Inline stloc first use temp"
-; V13 tmp6 [V13,T07] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
-; V14 cse0 [V14,T08] ( 3, 1.50) long -> rdx "CSE - moderate"
-; V15 cse1 [V15,T05] ( 5, 2.25) long -> r15 "CSE - aggressive"
+; V12 tmp5 [V12,T10] ( 2, 1 ) ubyte -> rcx single-def "Inline stloc first use temp"
+; V13 tmp6 [V13,T06] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
+; V14 cse0 [V14,T07] ( 3, 1.50) long -> rcx "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M49136_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rdx
; gcrRegs +[rbx]
mov rsi, r8
; gcrRegs +[rsi]
mov edi, r9d
- mov rbp, gword ptr [rsp+0x88]
+ mov rbp, gword ptr [rsp+0x78]
; gcrRegs +[rbp]
- ;; size=29 bbWeight=1 PerfScore 8.00
+ ;; size=24 bbWeight=1 PerfScore 7.00
G_M49136_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- cmp rsi, rdx
- jne SHORT G_M49136_IG09
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ cmp rsi, rcx
+ jne SHORT G_M49136_IG04
;; size=15 bbWeight=1 PerfScore 1.50
G_M49136_IG03: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rcx]
cmp edi, 1
- jne SHORT G_M49136_IG09
- mov r14d, dword ptr [rsp+0x80]
+ jne SHORT G_M49136_IG04
+ mov r14d, dword ptr [rsp+0x70]
cmp r14d, 1
- jne SHORT G_M49136_IG08
+ jne SHORT G_M49136_IG07
test rbp, rbp
- je SHORT G_M49136_IG07
- mov rdx, qword ptr [rbp]
- mov r15, 0xD1FFAB1E ; System.Int32
- cmp rdx, r15
- mov dword ptr [rsp+0x80], r14d
- jne SHORT G_M49136_IG09
- je SHORT G_M49136_IG05
- ;; size=53 bbWeight=0.50 PerfScore 5.12
-G_M49136_IG04: ; bbWeight=0.25, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- mov rdx, rbp
- ; gcrRegs +[rdx]
- mov rcx, r15
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rdx rbp]
- ; gcr arg pop 0
- ;; size=11 bbWeight=0.25 PerfScore 0.38
-G_M49136_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, r15
+ je SHORT G_M49136_IG06
+ mov rcx, 0xD1FFAB1E ; System.Int32
+ cmp qword ptr [rbp], rcx
+ mov dword ptr [rsp+0x70], r14d
+ je SHORT G_M49136_IG08
+ ;; size=42 bbWeight=0.50 PerfScore 5.00
+G_M49136_IG04: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ movzx rcx, byte ptr [rbx+0x10]
+ mov byte ptr [rbx+0x10], 0
+ test ecx, ecx
+ je SHORT G_M49136_IG10
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M49136_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ mov dword ptr [rsp+0x70], r14d
+ jmp SHORT G_M49136_IG04
+ ;; size=7 bbWeight=0.25 PerfScore 0.75
+G_M49136_IG07: ; bbWeight=0.25, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rsp+0x70], r14d
+ jmp SHORT G_M49136_IG04
+ ;; size=7 bbWeight=0.25 PerfScore 0.75
+G_M49136_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rbp rsi]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
xor ecx, ecx
mov dword ptr [rax+0x08], ecx
- ;; size=13 bbWeight=0.50 PerfScore 1.25
-G_M49136_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ ;; size=10 bbWeight=0.50 PerfScore 1.12
+G_M49136_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M49136_IG07: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M49136_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx rbp rsi]
- mov dword ptr [rsp+0x80], r14d
- jmp SHORT G_M49136_IG09
- ;; size=10 bbWeight=0.25 PerfScore 0.75
-G_M49136_IG08: ; bbWeight=0.25, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
- mov dword ptr [rsp+0x80], r14d
- ;; size=8 bbWeight=0.25 PerfScore 0.25
-G_M49136_IG09: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [rbx+0x10]
- mov byte ptr [rbx+0x10], 0
- test eax, eax
- je SHORT G_M49136_IG11
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M49136_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M49136_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rbx], rcx
- je SHORT G_M49136_IG13
+ je SHORT G_M49136_IG12
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M49136_IG12: ; bbWeight=0.25, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M49136_IG11: ; bbWeight=0.25, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
;; size=8 bbWeight=0.25 PerfScore 0.31
-G_M49136_IG13: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M49136_IG12: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rdx]
; gcrRegs +[rax]
;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M49136_IG14: ; bbWeight=0.50, nogc, extend
- mov r14d, dword ptr [rsp+0x80]
- mov dword ptr [rsp+0x80], r14d
- mov gword ptr [rsp+0x88], rbp
+G_M49136_IG13: ; bbWeight=0.50, nogc, extend
+ mov r14d, dword ptr [rsp+0x70]
+ mov dword ptr [rsp+0x70], r14d
+ mov gword ptr [rsp+0x78], rbp
mov rdx, rbx
; gcrRegs +[rdx]
mov r8, rsi
@@ -148,19 +134,18 @@ G_M49136_IG14: ; bbWeight=0.50, nogc, extend
mov r9d, edi
mov rcx, gword ptr [rax+0x08]
; gcrRegs +[rcx]
- ;; size=37 bbWeight=0.50 PerfScore 2.88
-G_M49136_IG15: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ ;; size=28 bbWeight=0.50 PerfScore 2.88
+G_M49136_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
tail.jmp [rax+0x18]<unknown method>
- ;; size=16 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.38
-; Total bytes of code 268, prolog size 29, PerfScore 32.81, instruction count 80, allocated bytes for code 268 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
+; Total bytes of code 219, prolog size 24, PerfScore 30.94, instruction count 71, allocated bytes for code 219 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -168,15 +153,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x0A
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
@@ -12,61 +12,76 @@
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> rbx class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T02] ( 5, 4 ) ref -> rdi class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass>
; V03 arg3 [V03,T01] ( 6, 4 ) ref -> rsi class-hnd single-def <System.Object>
-; V04 arg4 [V04,T07] ( 5, 2.25) ref -> rbp class-hnd single-def <System.Object>
+; V04 arg4 [V04,T06] ( 4, 2 ) ref -> rbp class-hnd single-def <System.Object>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T12] ( 0, 0 ) int -> zero-ref
-; V07 tmp2 [V07,T06] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V08 tmp3 [V08,T10] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V09 tmp4 [V09,T13] ( 0, 0 ) int -> zero-ref
-;* V10 tmp5 [V10,T14] ( 0, 0 ) int -> zero-ref
+;* V06 tmp1 [V06,T11] ( 0, 0 ) int -> zero-ref
+; V07 tmp2 [V07,T05] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
+;* V08 tmp3 [V08,T09] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp4 [V09,T12] ( 0, 0 ) int -> zero-ref
+;* V10 tmp5 [V10,T13] ( 0, 0 ) int -> zero-ref
; V11 tmp6 [V11,T03] ( 3, 3 ) ref -> rbx class-hnd exact single-def "dup spill" <System.Object[]>
; V12 tmp7 [V12,T04] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V13 tmp8 [V13,T11] ( 2, 1 ) ubyte -> rcx single-def "Inline stloc first use temp"
+; V13 tmp8 [V13,T10] ( 2, 1 ) ubyte -> rcx single-def "Inline stloc first use temp"
; V14 tmp9 [V14,T08] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
-; V15 cse0 [V15,T09] ( 3, 1.50) long -> r15 "CSE - moderate"
-; V16 cse1 [V16,T05] ( 6, 2.75) long -> r14 "CSE - aggressive"
+; V15 cse0 [V15,T07] ( 4, 2 ) long -> r14 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M52598_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rdx
; gcrRegs +[rbx]
mov rdi, r8
; gcrRegs +[rdi]
mov rsi, r9
; gcrRegs +[rsi]
- mov rbp, gword ptr [rsp+0x80]
+ mov rbp, gword ptr [rsp+0x70]
; gcrRegs +[rbp]
- ;; size=29 bbWeight=1 PerfScore 8.00
-G_M52598_IG02: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=1 PerfScore 7.00
+G_M52598_IG02: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je G_M52598_IG07
- ;; size=9 bbWeight=1 PerfScore 1.25
+ je SHORT G_M52598_IG04
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M52598_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass
cmp qword ptr [rdi], rcx
- jne G_M52598_IG07
+ jne SHORT G_M52598_IG04
test rsi, rsi
- je G_M52598_IG07
+ je SHORT G_M52598_IG04
mov r14, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rsi], r14
- jne SHORT G_M52598_IG07
+ jne SHORT G_M52598_IG04
test rbp, rbp
- je SHORT G_M52598_IG07
- mov r15, qword ptr [rbp]
- cmp r15, r14
- jne SHORT G_M52598_IG07
+ je SHORT G_M52598_IG04
+ cmp qword ptr [rbp], r14
+ je SHORT G_M52598_IG06
+ ;; size=46 bbWeight=0.50 PerfScore 7.50
+G_M52598_IG04: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ movzx rcx, byte ptr [rbx+0x10]
+ mov byte ptr [rbx+0x10], 0
+ test ecx, ecx
+ je SHORT G_M52598_IG08
+ ;; size=12 bbWeight=0.50 PerfScore 2.12
+G_M52598_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M52598_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx rdi]
mov rcx, 0xD1FFAB1E ; System.Object[]
mov edx, 2
call CORINFO_HELP_NEWARR_1_OBJ
- ; gcrRegs -[rbx rdi] +[rax]
+ ; gcrRegs +[rax]
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
@@ -77,18 +92,6 @@ G_M52598_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx rsi]
; byrRegs -[rcx]
- cmp r15, r14
- je SHORT G_M52598_IG05
- ;; size=97 bbWeight=0.50 PerfScore 9.50
-G_M52598_IG04: ; bbWeight=0.25, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
- mov rdx, rbp
- ; gcrRegs +[rdx]
- mov rcx, r14
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rdx]
- ; gcr arg pop 0
- ;; size=11 bbWeight=0.25 PerfScore 0.38
-G_M52598_IG05: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
mov rcx, r14
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -103,54 +106,37 @@ G_M52598_IG05: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000
; gcrRegs -[rax rdx rbx rbp]
; byrRegs -[rcx]
mov dword ptr [(reloc)], 1 ; data for <unknown class>:<unknown field>
- ;; size=36 bbWeight=0.50 PerfScore 3.50
-G_M52598_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ ;; size=71 bbWeight=0.50 PerfScore 5.25
+G_M52598_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M52598_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M52598_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rbp rsi rdi]
- movzx rcx, byte ptr [rbx+0x10]
- mov byte ptr [rbx+0x10], 0
- test ecx, ecx
- je SHORT G_M52598_IG09
- ;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M52598_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M52598_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rbx], rcx
- je SHORT G_M52598_IG11
+ je SHORT G_M52598_IG10
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M52598_IG10: ; bbWeight=0.25, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+G_M52598_IG09: ; bbWeight=0.25, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
;; size=8 bbWeight=0.25 PerfScore 0.31
-G_M52598_IG11: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+G_M52598_IG10: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rdx]
; gcrRegs +[rax]
;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M52598_IG12: ; bbWeight=0.50, nogc, extend
- mov gword ptr [rsp+0x80], rbp
+G_M52598_IG11: ; bbWeight=0.50, nogc, extend
+ mov gword ptr [rsp+0x70], rbp
mov rdx, rbx
; gcrRegs +[rdx]
mov r8, rdi
@@ -159,19 +145,18 @@ G_M52598_IG12: ; bbWeight=0.50, nogc, extend
; gcrRegs +[r9]
mov rcx, gword ptr [rax+0x08]
; gcrRegs +[rcx]
- ;; size=21 bbWeight=0.50 PerfScore 1.88
-G_M52598_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ ;; size=18 bbWeight=0.50 PerfScore 1.88
+G_M52598_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
tail.jmp [rax+0x18]<unknown method>
- ;; size=16 bbWeight=0.50 PerfScore 2.62
+ ;; size=14 bbWeight=0.50 PerfScore 2.38
-; Total bytes of code 293, prolog size 29, PerfScore 37.06, instruction count 86, allocated bytes for code 293 (MethodHash=e7623289) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass,System.Object,System.Object) (FullOpts)
+; Total bytes of code 248, prolog size 24, PerfScore 34.69, instruction count 76, allocated bytes for code 248 (MethodHash=e7623289) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass,System.Object,System.Object) (FullOpts)
; ============================================================
Unwind Info:
@@ -179,15 +164,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x0A
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
@@ -12,28 +12,26 @@
; V01 arg1 [V01,T00] ( 7, 4.25) ref -> rbx class-hnd single-def <System.Runtime.CompilerServices.CallSite>
; V02 arg2 [V02,T01] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Type>
; V03 arg3 [V03,T02] ( 3, 2.50) int -> rdi single-def
-; V04 arg4 [V04,T06] ( 4, 1.75) ref -> rbp class-hnd single-def <System.Object>
+; V04 arg4 [V04,T05] ( 3, 1.50) ref -> rbp class-hnd single-def <System.Object>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T04] ( 3, 2.50) long -> rcx "fgMakeTemp is creating a new local variable"
-;* V08 tmp2 [V08,T09] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-;* V09 tmp3 [V09,T11] ( 0, 0 ) int -> zero-ref
+;* V08 tmp2 [V08,T08] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref
; V10 tmp4 [V10,T03] ( 3, 3 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
-; V12 tmp6 [V12,T10] ( 2, 1 ) ubyte -> rax single-def "Inline stloc first use temp"
-; V13 tmp7 [V13,T07] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
-; V14 cse0 [V14,T08] ( 3, 1.50) long -> rdx "CSE - moderate"
-; V15 cse1 [V15,T05] ( 5, 2.25) long -> r14 "CSE - aggressive"
+; V12 tmp6 [V12,T09] ( 2, 1 ) ubyte -> rcx single-def "Inline stloc first use temp"
+; V13 tmp7 [V13,T06] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <<unknown class>>
+; V14 cse0 [V14,T07] ( 3, 1.50) long -> rcx "CSE - moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M31567_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rdx
; gcrRegs +[rbx]
mov rsi, r8
@@ -41,87 +39,73 @@ G_M31567_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov edi, r9d
mov rbp, gword ptr [rsp+0x70]
; gcrRegs +[rbp]
- ;; size=24 bbWeight=1 PerfScore 7.00
+ ;; size=22 bbWeight=1 PerfScore 6.00
G_M31567_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- cmp rsi, rdx
- jne SHORT G_M31567_IG07
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ cmp rsi, rcx
+ jne SHORT G_M31567_IG04
;; size=15 bbWeight=1 PerfScore 1.50
G_M31567_IG03: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rcx]
test rbp, rbp
- je SHORT G_M31567_IG07
- mov rdx, qword ptr [rbp]
- mov r14, 0xD1FFAB1E ; System.Int32
- cmp rdx, r14
- jne SHORT G_M31567_IG07
- je SHORT G_M31567_IG05
- ;; size=26 bbWeight=0.50 PerfScore 2.88
-G_M31567_IG04: ; bbWeight=0.25, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- mov rdx, rbp
- ; gcrRegs +[rdx]
- mov rcx, r14
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rdx rbp]
- ; gcr arg pop 0
- ;; size=11 bbWeight=0.25 PerfScore 0.38
-G_M31567_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, r14
+ je SHORT G_M31567_IG04
+ mov rcx, 0xD1FFAB1E ; System.Int32
+ cmp qword ptr [rbp], rcx
+ je SHORT G_M31567_IG06
+ ;; size=21 bbWeight=0.50 PerfScore 2.75
+G_M31567_IG04: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ movzx rcx, byte ptr [rbx+0x10]
+ mov byte ptr [rbx+0x10], 0
+ test ecx, ecx
+ je SHORT G_M31567_IG08
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=14 bbWeight=0.50 PerfScore 2.25
+G_M31567_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M31567_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx rbp rsi]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
xor ecx, ecx
mov dword ptr [rax+0x08], ecx
- ;; size=13 bbWeight=0.50 PerfScore 1.25
-G_M31567_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ ;; size=10 bbWeight=0.50 PerfScore 1.12
+G_M31567_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M31567_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M31567_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx rbp rsi]
- movzx rax, byte ptr [rbx+0x10]
- mov byte ptr [rbx+0x10], 0
- test eax, eax
- je SHORT G_M31567_IG09
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M31567_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M31567_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rbx], rcx
- je SHORT G_M31567_IG11
+ je SHORT G_M31567_IG10
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M31567_IG10: ; bbWeight=0.25, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M31567_IG09: ; bbWeight=0.25, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
;; size=8 bbWeight=0.25 PerfScore 0.31
-G_M31567_IG11: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M31567_IG10: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rdx]
; gcrRegs +[rax]
;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M31567_IG12: ; bbWeight=0.50, nogc, extend
+G_M31567_IG11: ; bbWeight=0.50, nogc, extend
mov gword ptr [rsp+0x70], rbp
mov rdx, rbx
; gcrRegs +[rdx]
@@ -131,17 +115,16 @@ G_M31567_IG12: ; bbWeight=0.50, nogc, extend
mov rcx, gword ptr [rax+0x08]
; gcrRegs +[rcx]
;; size=18 bbWeight=0.50 PerfScore 1.88
-G_M31567_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+G_M31567_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
tail.jmp [rax+0x18]<unknown method>
- ;; size=14 bbWeight=0.50 PerfScore 2.38
+ ;; size=12 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 193, prolog size 24, PerfScore 26.81, instruction count 65, allocated bytes for code 193 (MethodHash=0d2084b0) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,System.Object):System.Object (FullOpts)
+; Total bytes of code 166, prolog size 22, PerfScore 24.44, instruction count 55, allocated bytes for code 166 (MethodHash=0d2084b0) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -149,14 +132,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
@@ -56,58 +56,24 @@ G_M25025_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, r8
; gcrRegs +[rsi]
;; size=17 bbWeight=1 PerfScore 5.00
-G_M25025_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rbx, rbx
- je SHORT G_M25025_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M25025_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M25025_IG14
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M25025_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M25025_IG05
- ;; size=6 bbWeight=0.46 PerfScore 1.84
-G_M25025_IG04: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi]
- mov ecx, 0x3071
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rax rcx rdx rbx]
- ; gcr arg pop 0
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M25025_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi rdi]
+ je G_M25025_IG14
+ ;; size=10 bbWeight=0.46 PerfScore 1.84
+G_M25025_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je SHORT G_M25025_IG07
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M25025_IG06: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M25025_IG15
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M25025_IG05: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov ebp, dword ptr [rsi+0x08]
test ebp, ebp
- jne SHORT G_M25025_IG08
- ;; size=7 bbWeight=0.46 PerfScore 1.49
-G_M25025_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi]
- mov ecx, 0x15BB
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, rsi
- ; gcrRegs +[rcx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rax rcx rdx rsi]
- ; gcr arg pop 0
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M25025_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi rdi]
+ je G_M25025_IG15
+ ;; size=11 bbWeight=0.46 PerfScore 1.49
+G_M25025_IG06: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
call [System.Net.Mime.MailBnfHelper:ValidateHeaderName(System.String)]
@@ -128,9 +94,9 @@ G_M25025_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; byrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M25025_IG12
+ jne SHORT G_M25025_IG10
;; size=37 bbWeight=1 PerfScore 11.75
-G_M25025_IG09: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M25025_IG07: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
mov edx, 1
@@ -140,7 +106,7 @@ G_M25025_IG09: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov rsi, rax
; gcrRegs +[rsi]
;; size=17 bbWeight=0 PerfScore 0.00
-G_M25025_IG10: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -148,9 +114,9 @@ G_M25025_IG10: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M25025_IG13
+ je SHORT G_M25025_IG11
;; size=13 bbWeight=1 PerfScore 4.50
-G_M25025_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG09: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, rbx
@@ -160,13 +126,13 @@ G_M25025_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
call [System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this]
; gcrRegs -[rcx rdx rbx rsi rdi r8]
; gcr arg pop 0
- jmp SHORT G_M25025_IG14
+ jmp SHORT G_M25025_IG12
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M25025_IG12: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG10: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi rdi]
- jmp SHORT G_M25025_IG10
+ jmp SHORT G_M25025_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M25025_IG13: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M25025_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, rbx
@@ -177,10 +143,10 @@ G_M25025_IG13: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdx rbx rsi rdi r8]
; gcr arg pop 0
;; size=15 bbWeight=0.50 PerfScore 1.88
-G_M25025_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25025_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M25025_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M25025_IG13: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -188,8 +154,40 @@ G_M25025_IG15: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
+G_M25025_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
+ mov ecx, 0x3071
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rax rcx rdx rbx]
+ ; gcr arg pop 0
+ int3
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M25025_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi]
+ mov ecx, 0x15BB
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rax rcx rdx rsi]
+ ; gcr arg pop 0
+ int3
+ ;; size=33 bbWeight=0 PerfScore 0.00
-; Total bytes of code 217, prolog size 8, PerfScore 36.33, instruction count 66, allocated bytes for code 217 (MethodHash=ec109e3e) for method System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
+; Total bytes of code 233, prolog size 8, PerfScore 36.33, instruction count 66, allocated bytes for code 233 (MethodHash=ec109e3e) for method System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -56,58 +56,24 @@ G_M25025_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, r8
; gcrRegs +[rsi]
;; size=17 bbWeight=1 PerfScore 5.00
-G_M25025_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rbx, rbx
- je SHORT G_M25025_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M25025_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M25025_IG14
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M25025_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x08], 0
- jne SHORT G_M25025_IG05
- ;; size=6 bbWeight=0.46 PerfScore 1.84
-G_M25025_IG04: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi]
- mov ecx, 0x192F
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rax rcx rdx rbx]
- ; gcr arg pop 0
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M25025_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi rdi]
+ je G_M25025_IG14
+ ;; size=10 bbWeight=0.46 PerfScore 1.84
+G_M25025_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je SHORT G_M25025_IG07
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M25025_IG06: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M25025_IG15
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M25025_IG05: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov ebp, dword ptr [rsi+0x08]
test ebp, ebp
- jne SHORT G_M25025_IG08
- ;; size=7 bbWeight=0.46 PerfScore 1.49
-G_M25025_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi]
- mov ecx, 0x13A3
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, rsi
- ; gcrRegs +[rcx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rax rcx rdx rsi]
- ; gcr arg pop 0
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M25025_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi rdi]
+ je G_M25025_IG15
+ ;; size=11 bbWeight=0.46 PerfScore 1.49
+G_M25025_IG06: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
call [System.Net.Mime.MailBnfHelper:ValidateHeaderName(System.String)]
@@ -128,9 +94,9 @@ G_M25025_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; byrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M25025_IG12
+ jne SHORT G_M25025_IG10
;; size=37 bbWeight=1 PerfScore 11.75
-G_M25025_IG09: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M25025_IG07: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
mov edx, 1
@@ -140,7 +106,7 @@ G_M25025_IG09: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov rsi, rax
; gcrRegs +[rsi]
;; size=17 bbWeight=0 PerfScore 0.00
-G_M25025_IG10: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -148,9 +114,9 @@ G_M25025_IG10: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M25025_IG13
+ je SHORT G_M25025_IG11
;; size=13 bbWeight=1 PerfScore 4.50
-G_M25025_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG09: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, rbx
@@ -160,13 +126,13 @@ G_M25025_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
call [System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this]
; gcrRegs -[rcx rdx rbx rsi rdi r8]
; gcr arg pop 0
- jmp SHORT G_M25025_IG14
+ jmp SHORT G_M25025_IG12
;; size=17 bbWeight=0.50 PerfScore 2.88
-G_M25025_IG12: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M25025_IG10: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi rdi]
- jmp SHORT G_M25025_IG10
+ jmp SHORT G_M25025_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M25025_IG13: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M25025_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, rbx
@@ -177,10 +143,10 @@ G_M25025_IG13: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdx rbx rsi rdi r8]
; gcr arg pop 0
;; size=15 bbWeight=0.50 PerfScore 1.88
-G_M25025_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25025_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M25025_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M25025_IG13: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -188,8 +154,40 @@ G_M25025_IG15: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
+G_M25025_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
+ mov ecx, 0x192F
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rax rcx rdx rbx]
+ ; gcr arg pop 0
+ int3
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M25025_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi]
+ mov ecx, 0x13A3
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rax rcx rdx rsi]
+ ; gcr arg pop 0
+ int3
+ ;; size=33 bbWeight=0 PerfScore 0.00
-; Total bytes of code 217, prolog size 8, PerfScore 36.33, instruction count 66, allocated bytes for code 217 (MethodHash=ec109e3e) for method System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
+; Total bytes of code 233, prolog size 8, PerfScore 36.33, instruction count 66, allocated bytes for code 233 (MethodHash=ec109e3e) for method System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -120,58 +120,24 @@ G_M38562_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, r8
; gcrRegs +[rsi]
;; size=17 bbWeight=1 PerfScore 5.00
-G_M38562_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M38562_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rbx, rbx
- je SHORT G_M38562_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M38562_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M38562_IG13
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M38562_IG03: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov ebp, dword ptr [rbx+0x08]
test ebp, ebp
- jne SHORT G_M38562_IG05
- ;; size=7 bbWeight=0.46 PerfScore 1.49
-G_M38562_IG04: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi]
- mov ecx, 0x192F
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rax rcx rdx rbx]
- ; gcr arg pop 0
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M38562_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi rdi]
+ je G_M38562_IG13
+ ;; size=11 bbWeight=0.46 PerfScore 1.49
+G_M38562_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je SHORT G_M38562_IG07
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M38562_IG06: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M38562_IG14
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M38562_IG05: ; bbWeight=0.46, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
cmp dword ptr [rsi+0x08], 0
- jne SHORT G_M38562_IG08
- ;; size=6 bbWeight=0.46 PerfScore 1.84
-G_M38562_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rdi]
- mov ecx, 0x13A3
- mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, rsi
- ; gcrRegs +[rcx]
- call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
- ; gcrRegs -[rax rcx rdx rsi]
- ; gcr arg pop 0
- int3
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M38562_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi rdi]
+ je G_M38562_IG14
+ ;; size=10 bbWeight=0.46 PerfScore 1.84
+G_M38562_IG06: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -186,9 +152,9 @@ G_M38562_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; byrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M38562_IG15
- ;; size=35 bbWeight=1 PerfScore 8.50
-G_M38562_IG09: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M38562_IG15
+ ;; size=39 bbWeight=1 PerfScore 8.50
+G_M38562_IG07: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [rbx+0x0C]
; byrRegs +[rcx]
mov r9d, ebp
@@ -198,9 +164,9 @@ G_M38562_IG09: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; byrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jge SHORT G_M38562_IG15
- ;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M38562_IG10: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jge G_M38562_IG15
+ ;; size=32 bbWeight=0.50 PerfScore 2.75
+G_M38562_IG08: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
call [System.Net.Mail.MailHeaderInfo:NormalizeCase(System.String):System.String]
@@ -216,9 +182,9 @@ G_M38562_IG10: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; byrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M38562_IG14
+ jne SHORT G_M38562_IG12
;; size=29 bbWeight=1 PerfScore 10.25
-G_M38562_IG11: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M38562_IG09: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
mov edx, 1
@@ -228,7 +194,7 @@ G_M38562_IG11: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov r8, rax
; gcrRegs +[r8]
;; size=17 bbWeight=0 PerfScore 0.00
-G_M38562_IG12: ; bbWeight=1, gcrefRegs=0188 {rbx rdi r8}, byrefRegs=0000 {}, byref
+G_M38562_IG10: ; bbWeight=1, gcrefRegs=0188 {rbx rdi r8}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, rdi
; gcrRegs +[rcx]
@@ -239,7 +205,7 @@ G_M38562_IG12: ; bbWeight=1, gcrefRegs=0188 {rbx rdi r8}, byrefRegs=0000
; gcr arg pop 0
nop
;; size=13 bbWeight=1 PerfScore 3.75
-G_M38562_IG13: ; bbWeight=1, epilog, nogc, extend
+G_M38562_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -247,14 +213,45 @@ G_M38562_IG13: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M38562_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38562_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi rdi]
mov r8, rsi
; gcrRegs +[r8]
- jmp SHORT G_M38562_IG12
+ jmp SHORT G_M38562_IG10
;; size=5 bbWeight=0.50 PerfScore 1.12
+G_M38562_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi rdi r8]
+ mov ecx, 0x192F
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rax rcx rdx rbx]
+ ; gcr arg pop 0
+ int3
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M38562_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi]
+ mov ecx, 0x13A3
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, rsi
+ ; gcrRegs +[rcx]
+ call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+ ; gcrRegs -[rax rcx rdx rsi]
+ ; gcr arg pop 0
+ int3
+ ;; size=33 bbWeight=0 PerfScore 0.00
G_M38562_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi rdi r8]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -278,7 +275,7 @@ G_M38562_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=45 bbWeight=0 PerfScore 0.00
-; Total bytes of code 287, prolog size 8, PerfScore 40.46, instruction count 80, allocated bytes for code 287 (MethodHash=6510695d) for method System.Net.Mime.HeaderCollection:Set(System.String,System.String):this (FullOpts)
+; Total bytes of code 311, prolog size 8, PerfScore 40.46, instruction count 80, allocated bytes for code 311 (MethodHash=6510695d) for method System.Net.Mime.HeaderCollection:Set(System.String,System.String):this (FullOpts)
; ============================================================
Unwind Info:
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 5 ) ref -> rsi this class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor>
-; V01 arg1 [V01,T00] ( 9, 18 ) byref -> rbx single-def
-; V02 arg2 [V02,T02] ( 5, 5 ) ref -> rdi class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler>
-; V03 arg3 [V03,T04] ( 3, 3 ) struct ( 8) rbp single-def <SixLabors.ImageSharp.Size>
+; V00 this [V00,T01] ( 5, 2 ) ref -> rsi this class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor>
+; V01 arg1 [V01,T00] ( 9, 4 ) byref -> rbx single-def
+; V02 arg2 [V02,T02] ( 5, 2 ) ref -> rdi class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler>
+; V03 arg3 [V03,T03] ( 3, 2 ) struct ( 8) rbp single-def <SixLabors.ImageSharp.Size>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T15] ( 4, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <SixLabors.ImageSharp.Processing.Processors.Transforms.DegenerateTransformException>
+; V05 tmp1 [V05,T04] ( 4, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <SixLabors.ImageSharp.Processing.Processors.Transforms.DegenerateTransformException>
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler>
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V08 tmp4 [V08,T06] ( 2, 1 ) ubyte -> rcx "Inline return value spill temp"
+; V08 tmp4 [V08,T10] ( 2, 0 ) ubyte -> rcx "Inline return value spill temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Numerics.Matrix3x2>
;* V10 tmp6 [V10,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "Inlining Arg" <System.Numerics.Matrix3x2>
@@ -26,26 +26,26 @@
;* V15 tmp11 [V15 ] ( 0, 0 ) float -> zero-ref "Inlining Arg"
;* V16 tmp12 [V16 ] ( 0, 0 ) float -> zero-ref "Inlining Arg"
;* V17 tmp13 [V17 ] ( 0, 0 ) float -> zero-ref "Inlining Arg"
-; V18 tmp14 [V18,T05] ( 3, 1.50) ubyte -> rcx "Inline return value spill temp"
-; V19 tmp15 [V19,T08] ( 3, 3 ) float -> mm6 "Inlining Arg"
-; V20 tmp16 [V20,T07] ( 4, 3.50) float -> mm0 single-def "V09.[000..004)"
-; V21 tmp17 [V21,T09] ( 4, 2.50) float -> mm1 single-def "V09.[004..008)"
-; V22 tmp18 [V22,T10] ( 4, 2.50) float -> mm2 single-def "V09.[008..012)"
-; V23 tmp19 [V23,T11] ( 4, 2.50) float -> mm3 single-def "V09.[012..016)"
-; V24 tmp20 [V24,T12] ( 3, 2 ) float -> mm4 single-def "V09.[016..020)"
-; V25 tmp21 [V25,T13] ( 3, 2 ) float -> mm5 single-def "V09.[020..024)"
+; V18 tmp14 [V18,T11] ( 3, 0 ) ubyte -> rcx "Inline return value spill temp"
+; V19 tmp15 [V19,T12] ( 3, 0 ) float -> mm6 "Inlining Arg"
+; V20 tmp16 [V20,T05] ( 4, 0 ) float -> mm0 single-def "V09.[000..004)"
+; V21 tmp17 [V21,T06] ( 4, 0 ) float -> mm1 single-def "V09.[004..008)"
+; V22 tmp18 [V22,T07] ( 4, 0 ) float -> mm2 single-def "V09.[008..012)"
+; V23 tmp19 [V23,T08] ( 4, 0 ) float -> mm3 single-def "V09.[012..016)"
+; V24 tmp20 [V24,T13] ( 3, 0 ) float -> mm4 single-def "V09.[016..020)"
+; V25 tmp21 [V25,T14] ( 3, 0 ) float -> mm5 single-def "V09.[020..024)"
;* V26 tmp22 [V26 ] ( 0, 0 ) float -> zero-ref single-def "V11.[000..004)"
;* V27 tmp23 [V27 ] ( 0, 0 ) float -> zero-ref single-def "V11.[004..008)"
;* V28 tmp24 [V28 ] ( 0, 0 ) float -> zero-ref single-def "V11.[008..012)"
;* V29 tmp25 [V29 ] ( 0, 0 ) float -> zero-ref single-def "V11.[012..016)"
;* V30 tmp26 [V30 ] ( 0, 0 ) float -> zero-ref single-def "V11.[016..020)"
;* V31 tmp27 [V31 ] ( 0, 0 ) float -> zero-ref single-def "V11.[020..024)"
-; V32 tmp28 [V32,T03] ( 3, 6 ) ref -> rax single-def "argument with side effect"
-; V33 cse0 [V33,T14] ( 3, 1.50) float -> mm0 "CSE - moderate"
+; V32 tmp28 [V32,T09] ( 3, 0 ) ref -> rax single-def "argument with side effect"
+; V33 cse0 [V33,T15] ( 3, 0 ) float -> mm0 "CSE - moderate"
;
; Lcl frame size = 56
-G_M56268_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M56268_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbp
@@ -60,19 +60,17 @@ G_M56268_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdi, r8
; gcrRegs +[rdi]
mov rbp, r9
- ;; size=29 bbWeight=1 PerfScore 8.25
-G_M56268_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M56268_IG02: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
test rdi, rdi
- jne SHORT G_M56268_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M56268_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ jne SHORT G_M56268_IG03
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 1.62
-G_M56268_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M56268_IG03: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
call <unknown method>
@@ -87,9 +85,7 @@ G_M56268_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M56268_IG06
- ;; size=28 bbWeight=1 PerfScore 9.75
-G_M56268_IG05: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ jne SHORT G_M56268_IG04
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -97,8 +93,8 @@ G_M56268_IG05: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=26 bbWeight=0.50 PerfScore 1.75
-G_M56268_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ ;; size=54 bbWeight=0 PerfScore 0.00
+G_M56268_IG04: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
vmovss xmm0, dword ptr [rbx]
vmovss xmm1, dword ptr [rbx+0x04]
vmovss xmm2, dword ptr [rbx+0x08]
@@ -106,83 +102,54 @@ G_M56268_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rb
vmovss xmm4, dword ptr [rbx+0x10]
vmovss xmm5, dword ptr [rbx+0x14]
vucomiss xmm0, xmm0
- jp G_M56268_IG14
- ;; size=39 bbWeight=1 PerfScore 27.00
-G_M56268_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ jp SHORT G_M56268_IG08
vucomiss xmm1, xmm1
- jp G_M56268_IG14
+ jp SHORT G_M56268_IG08
vucomiss xmm2, xmm2
- jp G_M56268_IG14
+ jp SHORT G_M56268_IG08
vucomiss xmm3, xmm3
- jp G_M56268_IG14
+ jp SHORT G_M56268_IG08
vucomiss xmm4, xmm4
- jp G_M56268_IG14
+ jp SHORT G_M56268_IG08
vucomiss xmm5, xmm5
- jp G_M56268_IG14
+ jp SHORT G_M56268_IG08
vmulss xmm0, xmm0, xmm3
vmulss xmm1, xmm2, xmm1
vsubss xmm6, xmm0, xmm1
test byte ptr [(reloc)], 1 ; global ptr
- je SHORT G_M56268_IG13
- ;; size=71 bbWeight=0.50 PerfScore 14.00
-G_M56268_IG08: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
- vmovss xmm0, dword ptr [(reloc)] ; static handle
- vxorps xmm1, xmm0, xmmword ptr [reloc @RWD00]
- vucomiss xmm6, xmm1
- jbe SHORT G_M56268_IG09
- xor ecx, ecx
- vucomiss xmm0, xmm6
- seta cl
- jmp SHORT G_M56268_IG10
- ;; size=33 bbWeight=0.50 PerfScore 7.12
-G_M56268_IG09: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
- xor ecx, ecx
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M56268_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
- test ecx, ecx
- jne SHORT G_M56268_IG14
- ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M56268_IG11: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
- lea rcx, bword ptr [rsi+0x08]
- ; byrRegs +[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rdi]
- ; byrRegs -[rcx]
- vmovdqu xmm0, xmmword ptr [rbx]
- vmovdqu xmmword ptr [rsi+0x10], xmm0
- mov rcx, qword ptr [rbx+0x10]
- mov qword ptr [rsi+0x20], rcx
- mov qword ptr [rsi+0x28], rbp
- ;; size=33 bbWeight=1 PerfScore 11.75
-G_M56268_IG12: ; bbWeight=1, epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0x20]
- add rsp, 56
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=15 bbWeight=1 PerfScore 7.25
-G_M56268_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; gcrRegs +[rdi]
+ jne SHORT G_M56268_IG05
mov rcx, 0xD1FFAB1E
mov edx, 11
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcr arg pop 0
- jmp SHORT G_M56268_IG08
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M56268_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=106 bbWeight=0 PerfScore 0.00
+G_M56268_IG05: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ vmovss xmm0, dword ptr [(reloc)] ; static handle
+ vxorps xmm1, xmm0, xmmword ptr [reloc @RWD00]
+ vucomiss xmm6, xmm1
+ jbe SHORT G_M56268_IG06
+ xor ecx, ecx
+ vucomiss xmm0, xmm6
+ seta cl
+ jmp SHORT G_M56268_IG07
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M56268_IG06: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ xor ecx, ecx
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M56268_IG07: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ test ecx, ecx
+ je SHORT G_M56268_IG09
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M56268_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi rdi]
; byrRegs -[rbx]
mov rcx, 0xD1FFAB1E ; SixLabors.ImageSharp.Processing.Processors.Transforms.DegenerateTransformException
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- mov rcx, rbx
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ mov rcx, rsi
; gcrRegs +[rcx]
call [System.Exception:.ctor():this]
; gcrRegs -[rax rcx]
@@ -192,24 +159,48 @@ G_M56268_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_STRCNS
; gcrRegs +[rax]
; gcr arg pop 0
- lea rcx, bword ptr [rbx+0x10]
+ lea rcx, bword ptr [rsi+0x10]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rcx, rbx
+ mov rcx, rsi
; gcrRegs +[rcx]
call CORINFO_HELP_THROW
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rcx rsi]
; gcr arg pop 0
- int3
- ;; size=68 bbWeight=0 PerfScore 0.00
+ ;; size=67 bbWeight=0 PerfScore 0.00
+G_M56268_IG09: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs +[rsi rdi]
+ ; byrRegs +[rbx]
+ lea rcx, bword ptr [rsi+0x08]
+ ; byrRegs +[rcx]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF
...
@@ -11,22 +11,20 @@
; V00 arg0 [V00,T02] ( 7, 8.50) ref -> rbx class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 4, 3.50) byref -> rsi single-def
; V02 arg2 [V02,T04] ( 4, 3.50) byref -> rdi single-def
-; V03 loc0 [V03,T07] ( 5, 4 ) int -> r14
+; V03 loc0 [V03,T07] ( 5, 2.50) int -> rbp
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
-; V05 loc2 [V05,T01] ( 6, 18.50) int -> r15
+; V05 loc2 [V05,T01] ( 6, 17 ) int -> r8
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
;* V08 tmp2 [V08,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp3 [V09,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T00] ( 5, 28 ) ushort -> rax "Inlining Arg"
-; V11 cse0 [V11,T05] ( 4, 5.50) int -> rbp "CSE - aggressive"
+; V10 tmp4 [V10,T00] ( 5, 28 ) ushort -> rdx "Inlining Arg"
+; V11 cse0 [V11,T05] ( 4, 5.50) int -> rcx "CSE - aggressive"
; V12 cse1 [V12,T06] ( 3, 3 ) ref -> rbp "CSE - aggressive"
;
; Lcl frame size = 40
G_M22854_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r15
- push r14
push rdi
push rsi
push rbp
@@ -38,7 +36,7 @@ G_M22854_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[rsi]
mov rdi, r8
; byrRegs +[rdi]
- ;; size=21 bbWeight=1 PerfScore 7.00
+ ;; size=17 bbWeight=1 PerfScore 5.00
G_M22854_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
mov rbp, 0xD1FFAB1E
; gcrRegs +[rbp]
@@ -60,15 +58,10 @@ G_M22854_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rd
je SHORT G_M22854_IG04
;; size=37 bbWeight=1 PerfScore 4.50
G_M22854_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- mov ebp, dword ptr [rbx+0x08]
- test ebp, ebp
- je SHORT G_M22854_IG04
- xor r14d, r14d
- xor r15d, r15d
- test ebp, ebp
- jle SHORT G_M22854_IG11
- jmp SHORT G_M22854_IG06
- ;; size=19 bbWeight=0.50 PerfScore 3.50
+ mov ecx, dword ptr [rbx+0x08]
+ test ecx, ecx
+ jne SHORT G_M22854_IG06
+ ;; size=7 bbWeight=0.50 PerfScore 1.62
G_M22854_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
; byrRegs -[rsi rdi]
@@ -80,43 +73,45 @@ G_M22854_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
pop rsi
pop rdi
- pop r14
- pop r15
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M22854_IG06: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, gcvars, byref, isz
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M22854_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, gcvars, byref, isz
; gcrRegs +[rbx]
; byrRegs +[rsi rdi]
- mov eax, r15d
- movzx rax, word ptr [rbx+2*rax+0x0C]
- cmp eax, 45
+ xor ebp, ebp
+ xor r8d, r8d
+ test ecx, ecx
+ jle SHORT G_M22854_IG11
+ ;; size=9 bbWeight=0.50 PerfScore 0.88
+G_M22854_IG07: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ mov edx, r8d
+ movzx rdx, word ptr [rbx+2*rdx+0x0C]
+ cmp edx, 45
je SHORT G_M22854_IG10
;; size=13 bbWeight=4 PerfScore 14.00
-G_M22854_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- cmp eax, 0x2013
+G_M22854_IG08: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ cmp edx, 0x2013
je SHORT G_M22854_IG10
- cmp eax, 0x2014
+ cmp edx, 0x2014
je SHORT G_M22854_IG10
- cmp eax, 0x2015
+ cmp edx, 0x2015
je SHORT G_M22854_IG10
- ;; size=21 bbWeight=2 PerfScore 7.50
-G_M22854_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- inc r15d
- cmp ebp, r15d
- jg SHORT G_M22854_IG06
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M22854_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ ;; size=24 bbWeight=2 PerfScore 7.50
+G_M22854_IG09: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ inc r8d
+ cmp ecx, r8d
+ jg SHORT G_M22854_IG07
jmp SHORT G_M22854_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M22854_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
- mov r14d, r15d
- ;; size=3 bbWeight=2 PerfScore 0.50
+ ;; size=10 bbWeight=4 PerfScore 14.00
+G_M22854_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
+ mov ebp, r8d
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
G_M22854_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- test r14d, r14d
+ test ebp, ebp
jle SHORT G_M22854_IG04
mov rcx, rbx
; gcrRegs +[rcx]
- mov r8d, r14d
+ mov r8d, ebp
xor edx, edx
call [System.String:Substring(int,int):System.String:this]
; gcrRegs -[rcx] +[rax]
@@ -128,7 +123,7 @@ G_M22854_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx rsi]
- lea edx, [r14+0x01]
+ lea edx, [rbp+0x01]
mov rcx, rbx
; gcrRegs +[rcx]
call [System.String:Substring(int):System.String:this]
@@ -142,19 +137,17 @@ G_M22854_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi
; gcrRegs -[rax rdx]
; byrRegs -[rcx rdi]
mov eax, 1
- ;; size=59 bbWeight=0.50 PerfScore 6.00
+ ;; size=57 bbWeight=0.50 PerfScore 6.00
G_M22854_IG12: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
- pop r14
- pop r15
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 211, prolog size 21, PerfScore 54.38, instruction count 75, allocated bytes for code 211 (MethodHash=b068a6b9) for method System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
+; Total bytes of code 197, prolog size 17, PerfScore 57.00, instruction count 68, allocated bytes for code 197 (MethodHash=b068a6b9) for method System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -162,15 +155,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
@@ -75,22 +75,43 @@ G_M46385_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
G_M46385_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
mov edi, dword ptr [rbx+0x08]
test edi, edi
- je SHORT G_M46385_IG04
+ jne SHORT G_M46385_IG05
+ ;; size=7 bbWeight=0.50 PerfScore 1.62
+G_M46385_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ mov ecx, 36
+ jmp SHORT G_M46385_IG09
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M46385_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
cmp edi, 1
- jne G_M46385_IG16
+ jne G_M46385_IG17
movzx rcx, word ptr [rbx+0x0C]
or ecx, 32
cmp ecx, 100
- jg G_M46385_IG12
+ jg SHORT G_M46385_IG06
cmp ecx, 98
- je G_M46385_IG14
+ je SHORT G_M46385_IG08
cmp ecx, 100
- jne G_M46385_IG17
- ;; size=50 bbWeight=0.50 PerfScore 5.25
-G_M46385_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- mov ecx, 36
+ jne G_M46385_IG18
+ jmp SHORT G_M46385_IG04
+ ;; size=37 bbWeight=0.50 PerfScore 4.62
+G_M46385_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ cmp ecx, 110
+ je SHORT G_M46385_IG07
+ cmp ecx, 112
+ je SHORT G_M46385_IG08
+ cmp ecx, 120
+ jne G_M46385_IG18
+ mov ecx, 68
+ jmp SHORT G_M46385_IG09
+ ;; size=26 bbWeight=0.50 PerfScore 3.00
+G_M46385_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ mov ecx, 32
+ jmp SHORT G_M46385_IG09
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M46385_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ mov ecx, 38
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M46385_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+G_M46385_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
call <unknown method>
; gcrRegs +[rax]
; gcr arg pop 0
@@ -100,15 +121,25 @@ G_M46385_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
; byrRegs +[rcx]
mov edx, dword ptr [rbp+0x08]
test rbx, rbx
- jne G_M46385_IG15
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M46385_IG06: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0042 {rcx rsi}, byref
+ jne SHORT G_M46385_IG11
+ ;; size=20 bbWeight=1 PerfScore 5.00
+G_M46385_IG10: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0042 {rcx rsi}, byref, isz
; gcrRegs -[rax rbx]
xor r9, r9
; byrRegs +[r9]
xor r8d, r8d
- ;; size=6 bbWeight=0.50 PerfScore 0.25
-G_M46385_IG07: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0242 {rcx rsi r9}, byref, isz
+ jmp SHORT G_M46385_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
+G_M46385_IG11: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0042 {rcx rsi}, byref
+ ; gcrRegs +[rbx]
+ ; byrRegs -[r9]
+ lea r9, bword ptr [rbx+0x0C]
+ ; byrRegs +[r9]
+ mov edi, dword ptr [rbx+0x08]
+ mov r8d, edi
+ ;; size=10 bbWeight=0.50 PerfScore 1.38
+G_M46385_IG12: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0242 {rcx rsi r9}, byref, isz
+ ; gcrRegs -[rbx]
mov bword ptr [rsp+0x30], rcx
mov dword ptr [rsp+0x38], edx
mov bword ptr [rsp+0x20], r9
@@ -122,17 +153,17 @@ G_M46385_IG07: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0242 {rcx rs
; byrRegs -[rcx rsi]
; gcr arg pop 0
test eax, eax
- je SHORT G_M46385_IG09
+ je SHORT G_M46385_IG14
;; size=47 bbWeight=1 PerfScore 10.00
-G_M46385_IG08: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+G_M46385_IG13: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rsp+0x40]
cmp ecx, dword ptr [rbp+0x08]
sete cl
movzx rcx, cl
test cl, cl
- jne SHORT G_M46385_IG10
+ jne SHORT G_M46385_IG15
;; size=17 bbWeight=0.50 PerfScore 3.25
-G_M46385_IG09: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+G_M46385_IG14: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -141,11 +172,11 @@ G_M46385_IG09: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=26 bbWeight=0.50 PerfScore 1.75
-G_M46385_IG10: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+G_M46385_IG15: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
mov rax, rbp
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M46385_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M46385_IG16: ; bbWeight=1, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -153,49 +184,19 @@ G_M46385_IG11: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M46385_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz
- ; gcrRegs -[rax rbp] +[rbx]
- ; byrRegs +[rsi]
- cmp ecx, 110
- je SHORT G_M46385_IG13
- cmp ecx, 112
- je SHORT G_M46385_IG14
- cmp ecx, 120
- jne SHORT G_M46385_IG17
- mov ecx, 68
- jmp G_M46385_IG05
- ;; size=25 bbWeight=0.50 PerfScore 3.00
-G_M46385_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- mov ecx, 32
- jmp G_M46385_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M46385_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- mov ecx, 38
- jmp G_M46385_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M46385_IG15: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0042 {rcx rsi}, byref
- ; gcrRegs +[rbp]
- ; byrRegs +[rcx]
- lea r9, bword ptr [rbx+0x0C]
- ; byrRegs +[r9]
- mov edi, dword ptr [rbx+0x08]
- mov r8d, edi
- jmp G_M46385_IG07
- ;; size=15 bbWeight=0.50 PerfScore 2.38
-G_M46385_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rbp]
- ; byrRegs -[rcx rsi r9]
+G_M46385_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbp]
call [System.Guid:ThrowBadGuidFormatSpecification()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M46385_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46385_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Guid:ThrowBadGuidFormatSpecification()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 290, prolog size 18, PerfScore 45.08, instruction count 80, allocated bytes for code 290 (MethodHash=c08c4ace) for method System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
+; Total bytes of code 272, prolog size 18, PerfScore 46.08, instruction count 81, allocated bytes for code 272 (MethodHash=c08c4ace) for method System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -241,7 +241,7 @@ G_M24350_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00C
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
- jmp G_M24350_IG29
+ jmp G_M24350_IG28
;; size=27 bbWeight=0.50 PerfScore 3.75
G_M24350_IG13: ; bbWeight=2, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
@@ -255,11 +255,11 @@ G_M24350_IG13: ; bbWeight=2, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
movzx rdx, byte ptr [rdx]
; byrRegs -[rdx]
test edx, edx
- jne G_M24350_IG30
+ jne G_M24350_IG29
;; size=24 bbWeight=2 PerfScore 13.50
G_M24350_IG14: ; bbWeight=2, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rsi+0x38], 0x112A
- je G_M24350_IG30
+ je G_M24350_IG29
mov r15, gword ptr [r14+0x08]
; gcrRegs +[r15]
mov r13d, dword ptr [r15+0x10]
@@ -281,7 +281,7 @@ G_M24350_IG15: ; bbWeight=2, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefR
mov bword ptr [rbp-0xA8], rax
; GC ptr vars +{V56}
test r12d, r12d
- jl G_M24350_IG49
+ jl G_M24350_IG48
mov r8, gword ptr [rax]
; gcrRegs +[r8]
mov gword ptr [rbp-0xB0], r8
@@ -387,17 +387,17 @@ G_M24350_IG22: ; bbWeight=2, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefR
mov dword ptr [r15+0x10], r13d
mov rsi, gword ptr [rsi+0x20]
test rsi, rsi
- je SHORT G_M24350_IG29
+ je SHORT G_M24350_IG28
;; size=29 bbWeight=2 PerfScore 23.00
G_M24350_IG23: ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator
cmp qword ptr [rsi], rcx
- je SHORT G_M24350_IG29
+ je SHORT G_M24350_IG28
;; size=15 bbWeight=1 PerfScore 4.25
G_M24350_IG24: ; bbWeight=0.50, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- jmp SHORT G_M24350_IG30
+ jmp SHORT G_M24350_IG29
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M24350_IG25: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
@@ -412,7 +412,7 @@ G_M24350_IG26: ; bbWeight=2, gcrefRegs=40CC {rdx rbx rsi rdi r14}, byrefR
test rcx, rcx
je G_M24350_IG13
;; size=13 bbWeight=2 PerfScore 6.50
-G_M24350_IG27: ; bbWeight=4, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M24350_IG27: ; bbWeight=4, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
xor rdx, rdx
; gcrRegs +[rdx]
@@ -423,17 +423,13 @@ G_M24350_IG27: ; bbWeight=4, gcrefRegs=40CA {rcx rbx rsi rdi r14}, byrefR
; gcr arg pop 0
test eax, eax
jne G_M24350_IG13
- ;; size=20 bbWeight=4 PerfScore 34.00
-G_M24350_IG28: ; bbWeight=0.50, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- jmp SHORT G_M24350_IG30
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M24350_IG29: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi]
+ jmp SHORT G_M24350_IG29
+ ;; size=22 bbWeight=4 PerfScore 42.00
+G_M24350_IG28: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
jne SHORT G_M24350_IG25
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M24350_IG30: ; bbWeight=0.50, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M24350_IG29: ; bbWeight=0.50, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov rdx, gword ptr [r14+0x08]
; gcrRegs +[rdx]
@@ -448,29 +444,18 @@ G_M24350_IG30: ; bbWeight=0.50, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0
mov rdx, gword ptr [rax+0x20]
; gcrRegs +[rdx]
test rdx, rdx
- jne SHORT G_M24350_IG31
+ jne G_M24350_IG43
xor rsi, rsi
; gcrRegs +[rsi]
- jmp SHORT G_M24350_IG32
- ;; size=31 bbWeight=0.50 PerfScore 6.50
-G_M24350_IG31: ; bbWeight=0.50, gcrefRegs=408C {rdx rbx rdi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rsi]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx] +[rax]
- ; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M24350_IG32: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ ;; size=33 bbWeight=0.50 PerfScore 5.50
+G_M24350_IG30: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdx]
mov rdx, gword ptr [r14+0x08]
; gcrRegs +[rdx]
cmp dword ptr [rdx+0x10], 0
- jle G_M24350_IG47
+ jle G_M24350_IG41
;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M24350_IG33: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M24350_IG31: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
mov rdx, gword ptr [r14+0x08]
; gcrRegs +[rdx]
@@ -494,26 +479,14 @@ G_M24350_IG33: ; bbWeight=4, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
mov rdx, gword ptr [r15+0x28]
; gcrRegs +[rdx]
test rdx, rdx
- jne SHORT G_M24350_IG35
- ;; size=45 bbWeight=4 PerfScore 73.00
-G_M24350_IG34: ; bbWeight=2, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M24350_IG44
+ ;; size=49 bbWeight=4 PerfScore 73.00
+G_M24350_IG32: ; bbWeight=2, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
xor r13, r13
; gcrRegs +[r13]
- jmp SHORT G_M24350_IG36
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M24350_IG35: ; bbWeight=2, gcrefRegs=C0CC {rdx rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13] +[rdx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx] +[rax]
- ; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
- ;; size=12 bbWeight=2 PerfScore 7.00
-G_M24350_IG36: ; bbWeight=4, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+ ;; size=3 bbWeight=2 PerfScore 0.50
+G_M24350_IG33: ; bbWeight=4, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
mov r8, gword ptr [r15+0x08]
; gcrRegs +[r8]
mov r9d, dword ptr [r15+0x38]
@@ -524,54 +497,34 @@ G_M24350_IG36: ; bbWeight=4, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, by
mov rax, rdx
; gcrRegs +[rax]
test rax, rax
- jne SHORT G_M24350_IG38
- ;; size=24 bbWeight=4 PerfScore 38.00
-G_M24350_IG37: ; bbWeight=2, gcrefRegs=E1CE {rcx rdx rbx rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M24350_IG45
+ ;; size=28 bbWeight=4 PerfScore 38.00
+G_M24350_IG34: ; bbWeight=2, gcrefRegs=E1CE {rcx rdx rbx rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor r10, r10
; gcrRegs +[r10]
- jmp SHORT G_M24350_IG39
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M24350_IG38: ; bbWeight=2, gcrefRegs=E1CF {rax rcx rdx rbx rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r10] +[rax]
- mov r10, gword ptr [rax+0x10]
- ; gcrRegs +[r10]
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M24350_IG39: ; bbWeight=4, gcrefRegs=E5CE {rcx rdx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+ ;; size=3 bbWeight=2 PerfScore 0.50
+G_M24350_IG35: ; bbWeight=4, gcrefRegs=E5CE {rcx rdx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref
test rdx, rdx
- jne SHORT G_M24350_IG41
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M24350_IG40: ; bbWeight=2, gcrefRegs=E5CA {rcx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M24350_IG46
+ ;; size=9 bbWeight=4 PerfScore 5.00
+G_M24350_IG36: ; bbWeight=2, gcrefRegs=E5CA {rcx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
xor rax, rax
; gcrRegs +[rax]
- jmp SHORT G_M24350_IG42
- ;; size=4 bbWeight=2 PerfScore 4.50
-G_M24350_IG41: ; bbWeight=2, gcrefRegs=E5CE {rcx rdx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[rdx]
- mov rax, gword ptr [rdx+0x18]
- ; gcrRegs +[rax]
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M24350_IG42: ; bbWeight=4, gcrefRegs=E5CB {rax rcx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
+ ;; size=2 bbWeight=2 PerfScore 0.50
+G_M24350_IG37: ; bbWeight=4, gcrefRegs=E5CB {rax rcx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdx, gword ptr [r14+0x08]
; gcrRegs +[rdx]
cmp dword ptr [rdx+0x10], 0
- je SHORT G_M24350_IG44
- ;; size=10 bbWeight=4 PerfScore 24.00
-G_M24350_IG43: ; bbWeight=2, gcrefRegs=E5CB {rax rcx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ je G_M24350_IG47
+ ;; size=14 bbWeight=4 PerfScore 24.00
+G_M24350_IG38: ; bbWeight=2, gcrefRegs=E5CB {rax rcx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
xor rdx, rdx
; gcrRegs +[rdx]
- jmp SHORT G_M24350_IG45
- ;; size=4 bbWeight=2 PerfScore 4.50
-G_M24350_IG44: ; bbWeight=2, gcrefRegs=E5CB {rax rcx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M24350_IG45: ; bbWeight=4, gcrefRegs=E5CF {rax rcx rdx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=2 PerfScore 0.50
+G_M24350_IG39: ; bbWeight=4, gcrefRegs=E5CF {rax rcx rdx rbx rsi rdi r8 r10 r13 r14 r15}, byrefRegs=0000 {}, byref
mov gword ptr [rsp+0x20], rsi
; gcr arg write
mov gword ptr [rsp+0x28], r13
@@ -586,7 +539,7 @@ G_M24350_IG45: ; bbWeight=4, gcrefRegs=E5CF {rax rcx rdx rbx rsi rdi r8 r
; gcrRegs -[rcx]
mov dword ptr [rsp+0x48], ecx
;; size=31 bbWeight=4 PerfScore 25.00
-G_M24350_IG46: ; bbWeight=4, gcrefRegs=C18C {rdx rbx rdi r8 r14 r15}, byrefRegs=0000 {}, byref
+G_M24350_IG40: ; bbWeight=4, gcrefRegs=C18C {rdx rbx rdi r8 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rsi r10 r13]
mov dword ptr [rsp+0x50], ecx
mov gword ptr [rsp+0x58], rdx
@@ -602,9 +555,9 @@ G_M24350_IG46: ; bbWeight=4, gcrefRegs=C18C {rdx rbx rdi r8 r14 r15}, byr
mov rcx, gword ptr [r14+0x08]
; gcrRegs +[rcx]
cmp dword ptr [rcx+0x10], 0
- jg G_M24350_IG33
+ jg G_M24350_IG31
;; size=38 bbWeight=4 PerfScore 47.00
-G_M24350_IG47: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M24350_IG41: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rcx rbx rdi]
mov rcx, r14
; gcrRegs +[rcx]
@@ -614,7 +567,7 @@ G_M24350_IG47: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000
mov rax, rsi
; gcrRegs +[rax]
;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M24350_IG48: ; bbWeight=0.50, epilog, nogc, extend
+G_M24350_IG42: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 232
...
@@ -19,7 +19,7 @@
;
; Lcl frame size = 32
-G_M5512_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M5512_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
sub rsp, 32
;; size=5 bbWeight=1 PerfScore 1.25
@@ -48,44 +48,48 @@ G_M5512_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M5512_IG09
+ jne SHORT G_M5512_IG07
;; size=41 bbWeight=2 PerfScore 26.00
G_M5512_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x10]
; gcrRegs +[rdx]
cmp word ptr [rdx+0x0C], 0x2164
- je SHORT G_M5512_IG07
+ je SHORT G_M5512_IG09
mov rbx, gword ptr [rbx+0x08]
;; size=16 bbWeight=2 PerfScore 16.00
G_M5512_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
test rbx, rbx
- je SHORT G_M5512_IG07
+ je SHORT G_M5512_IG09
;; size=5 bbWeight=8 PerfScore 10.00
G_M5512_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; const ptr
cmp rbx, gword ptr [rdx]
jne SHORT G_M5512_IG03
- ;; size=15 bbWeight=4 PerfScore 17.00
+ jmp SHORT G_M5512_IG11
+ ;; size=17 bbWeight=4 PerfScore 25.00
G_M5512_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ mov eax, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
G_M5512_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
G_M5512_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
+ xor eax, eax
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M5512_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
+G_M5512_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ jmp SHORT G_M5512_IG09
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 106, prolog size 5, PerfScore 76.25, instruction count 32, allocated bytes for code 106 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
+; Total bytes of code 110, prolog size 5, PerfScore 85.25, instruction count 34, allocated bytes for code 110 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -10,7 +10,7 @@
;
; V00 this [V00,T02] ( 5, 3.50) ref -> rdi this class-hnd single-def <System.Management.Automation.Provider.NavigationCmdletProvider>
; V01 arg1 [V01,T01] ( 17, 10 ) ref -> rsi class-hnd <System.String>
-; V02 arg2 [V02,T00] ( 19, 10.50) ref -> rbx class-hnd <System.String>
+; V02 arg2 [V02,T00] ( 18, 10 ) ref -> rbx class-hnd <System.String>
; V03 arg3 [V03,T03] ( 3, 2.50) ubyte -> r14 single-def
;* V04 loc0 [V04,T33] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <System.IDisposable>
; V05 loc1 [V05,T04] ( 6, 3.50) ref -> rax class-hnd <System.String>
@@ -88,45 +88,112 @@ G_M32221_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[rbx]
mov r14d, r9d
;; size=47 bbWeight=1 PerfScore 12.08
-G_M32221_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M32221_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rsi, rsi
- jne SHORT G_M32221_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M32221_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M32221_IG15
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M32221_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rbx, rbx
- je SHORT G_M32221_IG08
+ je G_M32221_IG14
+ ;; size=9 bbWeight=0.50 PerfScore 0.62
+G_M32221_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rbx, rbx
- je SHORT G_M32221_IG10
- ;; size=10 bbWeight=0.50 PerfScore 1.25
-G_M32221_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M32221_IG16
cmp dword ptr [rbx+0x08], 0
- je SHORT G_M32221_IG10
+ je G_M32221_IG16
test rsi, rsi
- jne SHORT G_M32221_IG11
- ;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M32221_IG05: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- test rbx, rbx
- je SHORT G_M32221_IG12
- cmp dword ptr [rbx+0x08], 0
- je SHORT G_M32221_IG12
+ je G_M32221_IG17
+ ;; size=28 bbWeight=0.50 PerfScore 3.25
+G_M32221_IG05: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ cmp dword ptr [rsi+0x08], 0
+ je G_M32221_IG17
+ ;; size=10 bbWeight=0.50 PerfScore 2.00
+G_M32221_IG06: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ cmp dword ptr [rsi+0x08], 0
+ jne G_M32221_IG19
+ ;; size=10 bbWeight=0.50 PerfScore 2.00
+G_M32221_IG07: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, rdi
+ ; gcrRegs +[rcx]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ call [System.Management.Automation.Provider.NavigationCmdletProvider:NormalizePath(System.String):System.String:this]
+ ; gcrRegs -[rcx rdx rsi] +[rax]
+ ; gcr arg pop 0
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ test r14b, r14b
+ jne SHORT G_M32221_IG08
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
call [System.Management.Automation.Provider.NavigationCmdletProvider:NormalizePath(System.String):System.String:this]
- ; gcrRegs -[rcx rdx rbx rsi rdi] +[rax]
+ ; gcrRegs -[rcx rdx rbx rdi]
; gcr arg pop 0
- ;; size=23 bbWeight=0.50 PerfScore 4.38
-G_M32221_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- jmp G_M32221_IG23
+ mov rbx, rax
+ ; gcrRegs +[rbx]
+ ;; size=35 bbWeight=0.50 PerfScore 4.38
+G_M32221_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ test rbx, rbx
+ jne G_M32221_IG22
+ xor rdi, rdi
+ ; byrRegs +[rdi]
+ xor r14d, r14d
+ ;; size=14 bbWeight=0.50 PerfScore 0.88
+G_M32221_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref, isz
+ mov r15, rdi
+ ; byrRegs +[r15]
+ mov r13d, r14d
+ cmp word ptr [rbx+0x0C], 92
+ jne SHORT G_M32221_IG10
+ test r14d, r14d
+ je SHORT G_M32221_IG13
+ add rdi, 2
+ dec r14d
+ mov ecx, r14d
+ not ecx
+ shr ecx, 31
+ call [<unknown method>]
+ ; gcrRegs -[rbx]
+ ; byrRegs -[r15]
+ ; gcr arg pop 0
+ mov r15, rdi
+ ; byrRegs +[r15]
+ mov r13d, r14d
+ ;; size=45 bbWeight=0.50 PerfScore 5.38
+G_M32221_IG10: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref
+ ; byrRegs -[rdi]
+ test rsi, rsi
+ jne G_M32221_IG23
+ xor rbx, rbx
+ ; byrRegs +[rbx]
+ xor edi, edi
+ ;; size=13 bbWeight=0.50 PerfScore 0.88
+G_M32221_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+ ; gcrRegs -[rsi]
+ mov bword ptr [rbp-0x40], rbx
+ mov dword ptr [rbp-0x38], edi
+ mov bword ptr [rbp-0x50], r15
+ mov dword ptr [rbp-0x48], r13d
+ lea rcx, [rbp-0x40]
+ lea rdx, [rbp-0x50]
+ call [System.IO.Path:Join(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String]
+ ; gcrRegs +[rax]
+ ; byrRegs -[rbx r15]
+ ; gcr arg pop 0
+ ;; size=29 bbWeight=0.50 PerfScore 4.00
+G_M32221_IG12: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ jmp G_M32221_IG24
;; size=5 bbWeight=1 PerfScore 2.00
-G_M32221_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32221_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M32221_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32221_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0xD1FFAB1E
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -143,36 +210,44 @@ G_M32221_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rcx]
; gcr arg pop 0
;; size=37 bbWeight=0 PerfScore 0.00
-G_M32221_IG09: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M32221_IG15: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rsi rdi]
cmp dword ptr [rsi+0x08], 0
- jne SHORT G_M32221_IG11
- test rbx, rbx
- jne SHORT G_M32221_IG04
- ;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M32221_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne G_M32221_IG05
+ jmp G_M32221_IG04
+ ;; size=15 bbWeight=0.50 PerfScore 3.00
+G_M32221_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi rdi]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
- jmp SHORT G_M32221_IG06
+ jmp SHORT G_M32221_IG12
;; size=12 bbWeight=0.50 PerfScore 1.12
-G_M32221_IG11: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M32221_IG17: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rbx rsi rdi]
- cmp dword ptr [rsi+0x08], 0
- jne SHORT G_M32221_IG13
- jmp SHORT G_M32221_IG05
- ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M32221_IG12: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- test rsi, rsi
- je G_M32221_IG16
- ;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M32221_IG13: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rsi+0x08], 0
- je G_M32221_IG16
test rbx, rbx
- je SHORT G_M32221_IG14
+ je SHORT G_M32221_IG18
cmp dword ptr [rbx+0x08], 0
- je SHORT G_M32221_IG14
+ je SHORT G_M32221_IG18
+ mov rcx, rdi
+ ; gcrRegs +[rcx]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ call [System.Management.Automation.Provider.NavigationCmdletProvider:NormalizePath(System.String):System.String:this]
+ ; gcrRegs -[rcx rdx rbx rsi rdi] +[rax]
+ ; gcr arg pop 0
+ jmp SHORT G_M32221_IG12
+ ;; size=25 bbWeight=0.50 PerfScore 5.38
+G_M32221_IG18: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax] +[rbx rsi rdi]
+ test rsi, rsi
+ je G_M32221_IG07
+ jmp G_M32221_IG06
+ ;; size=14 bbWeight=0.50 PerfScore 1.62
+G_M32221_IG19: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ test rbx, rbx
+ je SHORT G_M32221_IG20
+ cmp dword ptr [rbx+0x08], 0
+ je SHORT G_M32221_IG20
mov rdx, 0xD1FFAB1E ; const ptr
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
@@ -183,7 +258,7 @@ G_M32221_IG13: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M32221_IG14
+ jne SHORT G_M32221_IG20
mov rdx, 0xD1FFAB1E ; const ptr
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
@@ -194,18 +269,18 @@ G_M32221_IG13: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M32221_IG16
- ;; size=85 bbWeight=0.50 PerfScore 11.62
-G_M32221_IG14: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M32221_IG07
+ ;; size=79 bbWeight=0.50 PerfScore 9.62
+G_M32221_IG20: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rdi]
mov ecx, dword ptr [rsi+0x08]
cmp word ptr [rsi+2*rcx+0x0A], 92
- jne SHORT G_M32221_IG15
+ jne SHORT G_M32221_IG21
mov rax, rsi
; gcrRegs +[rax]
- jmp G_M32221_IG06
+ jmp G_M32221_IG12
;; size=19 bbWeight=0.50 PerfScore 4.12
-G_M32221_IG15: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M32221_IG21: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov ecx, 1
call <unknown method>
@@ -219,95 +294,21 @@ G_M32221_IG15: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rcx rdx rsi]
; gcr arg pop 0
- jmp G_M32221_IG06
+ jmp G_M32221_IG12
...
@@ -74,22 +74,43 @@ G_M46385_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
G_M46385_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
mov edi, dword ptr [rbx+0x08]
test edi, edi
- je SHORT G_M46385_IG04
+ jne SHORT G_M46385_IG05
+ ;; size=7 bbWeight=0.50 PerfScore 1.62
+G_M46385_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ mov ecx, 36
+ jmp SHORT G_M46385_IG09
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M46385_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
cmp edi, 1
- jne G_M46385_IG16
+ jne G_M46385_IG17
movzx rcx, word ptr [rbx+0x0C]
or ecx, 32
cmp ecx, 100
- jg G_M46385_IG12
+ jg SHORT G_M46385_IG06
cmp ecx, 98
- je G_M46385_IG14
+ je SHORT G_M46385_IG08
cmp ecx, 100
- jne G_M46385_IG17
- ;; size=50 bbWeight=0.50 PerfScore 5.25
-G_M46385_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- mov ecx, 36
+ jne G_M46385_IG18
+ jmp SHORT G_M46385_IG04
+ ;; size=37 bbWeight=0.50 PerfScore 4.62
+G_M46385_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ cmp ecx, 110
+ je SHORT G_M46385_IG07
+ cmp ecx, 112
+ je SHORT G_M46385_IG08
+ cmp ecx, 120
+ jne G_M46385_IG18
+ mov ecx, 68
+ jmp SHORT G_M46385_IG09
+ ;; size=26 bbWeight=0.50 PerfScore 3.00
+G_M46385_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ mov ecx, 32
+ jmp SHORT G_M46385_IG09
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M46385_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ mov ecx, 38
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M46385_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+G_M46385_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
call System.String:FastAllocateString(int):System.String
; gcrRegs +[rax]
; gcr arg pop 0
@@ -99,15 +120,25 @@ G_M46385_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
; byrRegs +[rcx]
mov edx, dword ptr [rbp+0x08]
test rbx, rbx
- jne G_M46385_IG15
- ;; size=24 bbWeight=1 PerfScore 5.00
-G_M46385_IG06: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0042 {rcx rsi}, byref
+ jne SHORT G_M46385_IG11
+ ;; size=20 bbWeight=1 PerfScore 5.00
+G_M46385_IG10: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0042 {rcx rsi}, byref, isz
; gcrRegs -[rax rbx]
xor r9, r9
; byrRegs +[r9]
xor r8d, r8d
- ;; size=6 bbWeight=0.50 PerfScore 0.25
-G_M46385_IG07: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0242 {rcx rsi r9}, byref, isz
+ jmp SHORT G_M46385_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
+G_M46385_IG11: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0042 {rcx rsi}, byref
+ ; gcrRegs +[rbx]
+ ; byrRegs -[r9]
+ lea r9, bword ptr [rbx+0x0C]
+ ; byrRegs +[r9]
+ mov edi, dword ptr [rbx+0x08]
+ mov r8d, edi
+ ;; size=10 bbWeight=0.50 PerfScore 1.38
+G_M46385_IG12: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0242 {rcx rsi r9}, byref, isz
+ ; gcrRegs -[rbx]
mov bword ptr [rsp+0x30], rcx
mov dword ptr [rsp+0x38], edx
mov bword ptr [rsp+0x20], r9
@@ -121,17 +152,17 @@ G_M46385_IG07: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0242 {rcx rs
; byrRegs -[rcx rsi]
; gcr arg pop 0
test eax, eax
- je SHORT G_M46385_IG09
+ je SHORT G_M46385_IG14
;; size=46 bbWeight=1 PerfScore 8.00
-G_M46385_IG08: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+G_M46385_IG13: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rsp+0x40]
cmp ecx, dword ptr [rbp+0x08]
sete cl
movzx rcx, cl
test cl, cl
- jne SHORT G_M46385_IG10
+ jne SHORT G_M46385_IG15
;; size=17 bbWeight=0.50 PerfScore 3.25
-G_M46385_IG09: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+G_M46385_IG14: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -140,11 +171,11 @@ G_M46385_IG09: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M46385_IG10: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+G_M46385_IG15: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
mov rax, rbp
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M46385_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M46385_IG16: ; bbWeight=1, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -152,49 +183,19 @@ G_M46385_IG11: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M46385_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz
- ; gcrRegs -[rax rbp] +[rbx]
- ; byrRegs +[rsi]
- cmp ecx, 110
- je SHORT G_M46385_IG13
- cmp ecx, 112
- je SHORT G_M46385_IG14
- cmp ecx, 120
- jne SHORT G_M46385_IG17
- mov ecx, 68
- jmp G_M46385_IG05
- ;; size=25 bbWeight=0.50 PerfScore 3.00
-G_M46385_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- mov ecx, 32
- jmp G_M46385_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M46385_IG14: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- mov ecx, 38
- jmp G_M46385_IG05
- ;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M46385_IG15: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0042 {rcx rsi}, byref
- ; gcrRegs +[rbp]
- ; byrRegs +[rcx]
- lea r9, bword ptr [rbx+0x0C]
- ; byrRegs +[r9]
- mov edi, dword ptr [rbx+0x08]
- mov r8d, edi
- jmp G_M46385_IG07
- ;; size=15 bbWeight=0.50 PerfScore 2.38
-G_M46385_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rbp]
- ; byrRegs -[rcx rsi r9]
+G_M46385_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbp]
call System.Guid:ThrowBadGuidFormatSpecification()
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M46385_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46385_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call System.Guid:ThrowBadGuidFormatSpecification()
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 283, prolog size 21, PerfScore 44.33, instruction count 81, allocated bytes for code 283 (MethodHash=c08c4ace) for method System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
+; Total bytes of code 265, prolog size 21, PerfScore 45.33, instruction count 82, allocated bytes for code 265 (MethodHash=c08c4ace) for method System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -21,8 +21,8 @@
; V11 loc6 [V11,T04] ( 8, 7 ) int -> r13 single-def
; V12 loc7 [V12,T07] ( 11, 5.50) long -> rax ld-addr-op
;* V13 loc8 [V13 ] ( 0, 0 ) long -> zero-ref single-def
-; V14 loc9 [V14,T09] ( 3, 4.50) long -> rbx single-def
-; V15 loc10 [V15,T00] ( 12, 20.54) int -> r14
+; V14 loc9 [V14,T09] ( 3, 4.50) long -> rcx single-def
+; V15 loc10 [V15,T00] ( 12, 20.54) int -> rdx
;* V16 loc11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.RuntimeTypeHandle>
;* V17 loc12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref <System.RuntimeMethodHandle>
; V18 OutArgs [V18 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -38,7 +38,7 @@
;* V28 tmp10 [V28 ] ( 0, 0 ) int -> zero-ref "field V03._tokenOrOffset (fldOffset=0x8)" P-INDEP
;* V29 tmp11 [V29 ] ( 0, 0 ) ubyte -> zero-ref "field V03._isNativeLayoutSignature (fldOffset=0xc)" P-INDEP
; V30 tmp12 [V30 ] ( 5, 4 ) long -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V07._value (fldOffset=0x0)" P-DEP
-; V31 tmp13 [V31,T02] ( 4, 8 ) long -> r15 "field V16._value (fldOffset=0x0)" P-INDEP
+; V31 tmp13 [V31,T02] ( 4, 8 ) long -> r8 "field V16._value (fldOffset=0x0)" P-INDEP
; V32 tmp14 [V32,T16] ( 2, 2 ) long -> rbx single-def "field V17._value (fldOffset=0x0)" P-INDEP
;* V33 tmp15 [V33 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <Internal.Runtime.CompilerServices.RuntimeSignature>
; V34 tmp16 [V34 ] ( 2, 4 ) struct (16) [rbp-0x80] do-not-enreg[XS] addr-exposed "by-value struct argument" <Internal.Runtime.CompilerServices.RuntimeSignature>
@@ -140,7 +140,7 @@ G_M51005_IG08: ; bbWeight=1, extend
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne G_M51005_IG18
+ jne G_M51005_IG22
;; size=26 bbWeight=1 PerfScore 6.25
G_M51005_IG09: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
test rsi, rsi
@@ -157,82 +157,49 @@ G_M51005_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008
xor ecx, ecx
jmp SHORT G_M51005_IG13
;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M51005_IG12: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M51005_IG12: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, r13d
sub ecx, 1
- jo G_M51005_IG19
+ jo SHORT G_M51005_IG16
imul ecx, ecx, 8
- jo G_M51005_IG19
- ;; size=21 bbWeight=0.50 PerfScore 2.25
+ jo SHORT G_M51005_IG16
+ ;; size=13 bbWeight=0.50 PerfScore 2.25
G_M51005_IG13: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
add ecx, 48
- jo G_M51005_IG19
+ jo SHORT G_M51005_IG16
movsxd rcx, ecx
call System.Runtime.InteropServices.NativeMemory:Alloc(ulong):ulong
; gcr arg pop 0
test rax, rax
- je G_M51005_IG21
+ je SHORT G_M51005_IG15
mov qword ptr [rax], r15
mov qword ptr [rax+0x08], r14
movups xmm0, xmmword ptr [rbx]
movups xmmword ptr [rax+0x10], xmm0
mov dword ptr [rax+0x20], r13d
cmp byte ptr [rax], al
- lea rbx, [rax+0x28]
- ; byrRegs -[rbx]
- xor r14d, r14d
+ lea rcx, [rax+0x28]
+ xor edx, edx
test r13d, r13d
- jle SHORT G_M51005_IG15
+ jle SHORT G_M51005_IG19
test rsi, rsi
- je G_M51005_IG22
+ je SHORT G_M51005_IG18
cmp dword ptr [rsi+0x08], r13d
- jl G_M51005_IG22
- ;; size=77 bbWeight=0.50 PerfScore 11.50
+ jl SHORT G_M51005_IG18
+ ;; size=60 bbWeight=0.50 PerfScore 11.50
G_M51005_IG14: ; bbWeight=3.96, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, r14d
- mov r15, qword ptr [rsi+8*rcx+0x10]
- movsxd rcx, r14d
- mov qword ptr [rbx+8*rcx], r15
- inc r14d
- cmp r14d, r13d
+ ; byrRegs -[rbx]
+ mov r8d, edx
+ mov r8, qword ptr [rsi+8*r8+0x10]
+ movsxd r10, edx
+ mov qword ptr [rcx+8*r10], r8
+ inc edx
+ cmp edx, r13d
jl SHORT G_M51005_IG14
- ;; size=23 bbWeight=3.96 PerfScore 19.80
-G_M51005_IG15: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
- inc rax
- mov qword ptr [rbp-0x68], rax
- mov rcx, gword ptr [rdi+0x48]
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M51005_IG16: ; bbWeight=0.50, nogc, extend
- movups xmm0, xmmword ptr [rbp-0x60]
- movups xmmword ptr [rbp-0xB0], xmm0
- movups xmm0, xmmword ptr [rbp-0x50]
- movups xmmword ptr [rbp-0xA0], xmm0
- movups xmm0, xmmword ptr [rbp-0x40]
- movups xmmword ptr [rbp-0x90], xmm0
- ;; size=33 bbWeight=0.50 PerfScore 6.00
-G_M51005_IG17: ; bbWeight=0.50, extend
- lea rdx, [rbp-0xB0]
- mov r8, qword ptr [rbp-0x68]
- cmp dword ptr [rcx], ecx
- call System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.TypeLoader.TypeLoaderEnvironment+RuntimeMethodHandleKey,System.RuntimeMethodHandle]:Add(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+RuntimeMethodHandleKey,System.RuntimeMethodHandle):this
- ; gcrRegs -[rcx rdi]
- ; gcr arg pop 0
- ;; size=18 bbWeight=0.50 PerfScore 2.75
-G_M51005_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rbx, qword ptr [rbp-0x68]
- jmp SHORT G_M51005_IG23
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M51005_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_OVERFLOW
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51005_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51005_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M51005_IG19
+ ;; size=24 bbWeight=3.96 PerfScore 27.72
+G_M51005_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi rdi]
lea rcx, [(reloc)] ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -250,21 +217,53 @@ G_M51005_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=31 bbWeight=0 PerfScore 0.00
-G_M51005_IG22: ; bbWeight=0.04, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51005_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_OVERFLOW
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51005_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51005_IG18: ; bbWeight=0.04, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi rdi]
- cmp r14d, dword ptr [rsi+0x08]
- jae SHORT G_M51005_IG20
- mov ecx, r14d
- mov r15, qword ptr [rsi+8*rcx+0x10]
- movsxd rcx, r14d
- mov qword ptr [rbx+8*rcx], r15
- inc r14d
- cmp r14d, r13d
- jl SHORT G_M51005_IG22
- jmp G_M51005_IG15
- ;; size=34 bbWeight=0.04 PerfScore 0.44
+ cmp edx, dword ptr [rsi+0x08]
+ jae SHORT G_M51005_IG17
+ mov r8d, edx
+ mov r8, qword ptr [rsi+8*r8+0x10]
+ movsxd r10, edx
+ mov qword ptr [rcx+8*r10], r8
+ inc edx
+ cmp edx, r13d
+ jl SHORT G_M51005_IG18
+ ;; size=27 bbWeight=0.04 PerfScore 0.36
+G_M51005_IG19: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
+ inc rax
+ mov qword ptr [rbp-0x68], rax
+ mov rcx, gword ptr [rdi+0x48]
+ ; gcrRegs +[rcx]
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M51005_IG20: ; bbWeight=0.50, nogc, extend
+ movups xmm0, xmmword ptr [rbp-0x60]
+ movups xmmword ptr [rbp-0xB0], xmm0
+ movups xmm0, xmmword ptr [rbp-0x50]
+ movups xmmword ptr [rbp-0xA0], xmm0
+ movups xmm0, xmmword ptr [rbp-0x40]
+ movups xmmword ptr [rbp-0x90], xmm0
+ ;; size=33 bbWeight=0.50 PerfScore 6.00
+G_M51005_IG21: ; bbWeight=0.50, extend
+ lea rdx, [rbp-0xB0]
+ mov r8, qword ptr [rbp-0x68]
+ cmp dword ptr [rcx], ecx
+ call System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.TypeLoader.TypeLoaderEnvironment+RuntimeMethodHandleKey,System.RuntimeMethodHandle]:Add(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+RuntimeMethodHandleKey,System.RuntimeMethodHandle):this
+ ; gcrRegs -[rcx rdi]
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=0.50 PerfScore 2.75
+G_M51005_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rbp-0x68]
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M51005_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi]
mov rcx, gword ptr [rbp-0xB8]
; gcrRegs +[rcx]
; GC ptr vars -{V08}
@@ -320,7 +319,7 @@ G_M51005_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 603, prolog size 89, PerfScore 119.57, instruction count 167, allocated bytes for code 603 (MethodHash=804938c2) for method Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
+; Total bytes of code 570, prolog size 89, PerfScore 125.41, instruction count 166, allocated bytes for code 570 (MethodHash=804938c2) for method Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
; ============================================================
Unwind Info:
@@ -22,8 +22,8 @@
; V11 loc6 [V11,T04] ( 8, 7 ) int -> r13 single-def
; V12 loc7 [V12,T07] ( 11, 5.50) long -> rax ld-addr-op
;* V13 loc8 [V13 ] ( 0, 0 ) long -> zero-ref single-def
-; V14 loc9 [V14,T09] ( 3, 4.50) long -> rbx single-def
-; V15 loc10 [V15,T00] ( 12, 20.54) int -> r14
+; V14 loc9 [V14,T09] ( 3, 4.50) long -> rcx single-def
+; V15 loc10 [V15,T00] ( 12, 20.54) int -> rdx
;* V16 loc11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.RuntimeTypeHandle>
;* V17 loc12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref <System.RuntimeMethodHandle>
; V18 OutArgs [V18 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -39,7 +39,7 @@
;* V28 tmp10 [V28 ] ( 0, 0 ) int -> zero-ref "field V03._tokenOrOffset (fldOffset=0x8)" P-INDEP
;* V29 tmp11 [V29 ] ( 0, 0 ) ubyte -> zero-ref "field V03._isNativeLayoutSignature (fldOffset=0xc)" P-INDEP
; V30 tmp12 [V30 ] ( 5, 4 ) long -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V07._value (fldOffset=0x0)" P-DEP
-; V31 tmp13 [V31,T02] ( 4, 8 ) long -> r15 "field V16._value (fldOffset=0x0)" P-INDEP
+; V31 tmp13 [V31,T02] ( 4, 8 ) long -> r8 "field V16._value (fldOffset=0x0)" P-INDEP
; V32 tmp14 [V32,T16] ( 2, 2 ) long -> rbx single-def "field V17._value (fldOffset=0x0)" P-INDEP
;* V33 tmp15 [V33 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <Internal.Runtime.CompilerServices.RuntimeSignature>
; V34 tmp16 [V34 ] ( 2, 4 ) struct (16) [rbp-0x80] do-not-enreg[XS] addr-exposed "by-value struct argument" <Internal.Runtime.CompilerServices.RuntimeSignature>
@@ -141,7 +141,7 @@ G_M51005_IG08: ; bbWeight=1, extend
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne G_M51005_IG18
+ jne G_M51005_IG22
;; size=26 bbWeight=1 PerfScore 6.25
G_M51005_IG09: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
test rsi, rsi
@@ -158,82 +158,49 @@ G_M51005_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008
xor ecx, ecx
jmp SHORT G_M51005_IG13
;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M51005_IG12: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
+G_M51005_IG12: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, r13d
sub ecx, 1
- jo G_M51005_IG19
+ jo SHORT G_M51005_IG16
imul ecx, ecx, 8
- jo G_M51005_IG19
- ;; size=21 bbWeight=0.50 PerfScore 2.25
+ jo SHORT G_M51005_IG16
+ ;; size=13 bbWeight=0.50 PerfScore 2.25
G_M51005_IG13: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
add ecx, 48
- jo G_M51005_IG19
+ jo SHORT G_M51005_IG16
movsxd rcx, ecx
call System.Runtime.InteropServices.NativeMemory:Alloc(ulong):ulong
; gcr arg pop 0
test rax, rax
- je G_M51005_IG21
+ je SHORT G_M51005_IG15
mov qword ptr [rax], r15
mov qword ptr [rax+0x08], r14
movups xmm0, xmmword ptr [rbx]
movups xmmword ptr [rax+0x10], xmm0
mov dword ptr [rax+0x20], r13d
cmp byte ptr [rax], al
- lea rbx, [rax+0x28]
- ; byrRegs -[rbx]
- xor r14d, r14d
+ lea rcx, [rax+0x28]
+ xor edx, edx
test r13d, r13d
- jle SHORT G_M51005_IG15
+ jle SHORT G_M51005_IG19
test rsi, rsi
- je G_M51005_IG22
+ je SHORT G_M51005_IG18
cmp dword ptr [rsi+0x08], r13d
- jl G_M51005_IG22
- ;; size=77 bbWeight=0.50 PerfScore 11.50
+ jl SHORT G_M51005_IG18
+ ;; size=60 bbWeight=0.50 PerfScore 11.50
G_M51005_IG14: ; bbWeight=3.96, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, r14d
- mov r15, qword ptr [rsi+8*rcx+0x10]
- movsxd rcx, r14d
- mov qword ptr [rbx+8*rcx], r15
- inc r14d
- cmp r14d, r13d
+ ; byrRegs -[rbx]
+ mov r8d, edx
+ mov r8, qword ptr [rsi+8*r8+0x10]
+ movsxd r10, edx
+ mov qword ptr [rcx+8*r10], r8
+ inc edx
+ cmp edx, r13d
jl SHORT G_M51005_IG14
- ;; size=23 bbWeight=3.96 PerfScore 19.80
-G_M51005_IG15: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
- inc rax
- mov qword ptr [rbp-0x68], rax
- mov rcx, gword ptr [rdi+0x48]
- ; gcrRegs +[rcx]
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M51005_IG16: ; bbWeight=0.50, nogc, extend
- movups xmm0, xmmword ptr [rbp-0x60]
- movups xmmword ptr [rbp-0xB0], xmm0
- movups xmm0, xmmword ptr [rbp-0x50]
- movups xmmword ptr [rbp-0xA0], xmm0
- movups xmm0, xmmword ptr [rbp-0x40]
- movups xmmword ptr [rbp-0x90], xmm0
- ;; size=33 bbWeight=0.50 PerfScore 6.00
-G_M51005_IG17: ; bbWeight=0.50, extend
- lea rdx, [rbp-0xB0]
- mov r8, qword ptr [rbp-0x68]
- cmp dword ptr [rcx], ecx
- call System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.TypeLoader.TypeLoaderEnvironment+RuntimeMethodHandleKey,System.RuntimeMethodHandle]:Add(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+RuntimeMethodHandleKey,System.RuntimeMethodHandle):this
- ; gcrRegs -[rcx rdi]
- ; gcr arg pop 0
- ;; size=18 bbWeight=0.50 PerfScore 2.75
-G_M51005_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rbx, qword ptr [rbp-0x68]
- jmp SHORT G_M51005_IG23
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M51005_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_OVERFLOW
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51005_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51005_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M51005_IG19
+ ;; size=24 bbWeight=3.96 PerfScore 27.72
+G_M51005_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi rdi]
lea rcx, [(reloc)] ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -251,21 +218,53 @@ G_M51005_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=31 bbWeight=0 PerfScore 0.00
-G_M51005_IG22: ; bbWeight=0.04, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51005_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_OVERFLOW
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51005_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51005_IG18: ; bbWeight=0.04, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi rdi]
- cmp r14d, dword ptr [rsi+0x08]
- jae SHORT G_M51005_IG20
- mov ecx, r14d
- mov r15, qword ptr [rsi+8*rcx+0x10]
- movsxd rcx, r14d
- mov qword ptr [rbx+8*rcx], r15
- inc r14d
- cmp r14d, r13d
- jl SHORT G_M51005_IG22
- jmp G_M51005_IG15
- ;; size=34 bbWeight=0.04 PerfScore 0.44
+ cmp edx, dword ptr [rsi+0x08]
+ jae SHORT G_M51005_IG17
+ mov r8d, edx
+ mov r8, qword ptr [rsi+8*r8+0x10]
+ movsxd r10, edx
+ mov qword ptr [rcx+8*r10], r8
+ inc edx
+ cmp edx, r13d
+ jl SHORT G_M51005_IG18
+ ;; size=27 bbWeight=0.04 PerfScore 0.36
+G_M51005_IG19: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
+ inc rax
+ mov qword ptr [rbp-0x68], rax
+ mov rcx, gword ptr [rdi+0x48]
+ ; gcrRegs +[rcx]
+ ;; size=11 bbWeight=0.50 PerfScore 1.62
+G_M51005_IG20: ; bbWeight=0.50, nogc, extend
+ movups xmm0, xmmword ptr [rbp-0x60]
+ movups xmmword ptr [rbp-0xB0], xmm0
+ movups xmm0, xmmword ptr [rbp-0x50]
+ movups xmmword ptr [rbp-0xA0], xmm0
+ movups xmm0, xmmword ptr [rbp-0x40]
+ movups xmmword ptr [rbp-0x90], xmm0
+ ;; size=33 bbWeight=0.50 PerfScore 6.00
+G_M51005_IG21: ; bbWeight=0.50, extend
+ lea rdx, [rbp-0xB0]
+ mov r8, qword ptr [rbp-0x68]
+ cmp dword ptr [rcx], ecx
+ call System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.TypeLoader.TypeLoaderEnvironment+RuntimeMethodHandleKey,System.RuntimeMethodHandle]:Add(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+RuntimeMethodHandleKey,System.RuntimeMethodHandle):this
+ ; gcrRegs -[rcx rdi]
+ ; gcr arg pop 0
+ ;; size=18 bbWeight=0.50 PerfScore 2.75
+G_M51005_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, qword ptr [rbp-0x68]
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M51005_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi]
mov rcx, gword ptr [rbp-0xB8]
; gcrRegs +[rcx]
; GC ptr vars -{V08}
@@ -321,7 +320,7 @@ G_M51005_IG28: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 603, prolog size 89, PerfScore 119.57, instruction count 167, allocated bytes for code 603 (MethodHash=804938c2) for method Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
+; Total bytes of code 570, prolog size 89, PerfScore 125.41, instruction count 166, allocated bytes for code 570 (MethodHash=804938c2) for method Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
; ============================================================
Unwind Info:
@@ -17,7 +17,7 @@
; V06 loc4 [V06,T06] ( 7, 11 ) int -> registers
; V07 loc5 [V07,T12] ( 4, 2.50) long -> registers
; V08 loc6 [V08,T13] ( 4, 2.50) int -> registers
-; V09 loc7 [V09,T14] ( 3, 1.50) int -> rax
+; V09 loc7 [V09,T14] ( 3, 1.50) int -> r10
; V10 loc8 [V10,T15] ( 3, 1.50) long -> rax
; V11 loc9 [V11,T16] ( 2, 1 ) long -> r10
; V12 loc10 [V12,T17] ( 2, 1 ) int -> rcx
@@ -78,7 +78,7 @@ G_M9821_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=5 bbWeight=4 PerfScore 5.00
G_M9821_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp eax, 10
- jae G_M9821_IG16
+ jae G_M9821_IG17
mov r11d, eax
lea rbx, bword ptr [(reloc)]
; byrRegs +[rbx]
@@ -117,18 +117,18 @@ G_M9821_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov ecx, r10d
add eax, -9
test eax, eax
- jg SHORT G_M9821_IG13
+ jg SHORT G_M9821_IG10
;; size=76 bbWeight=4 PerfScore 55.00
G_M9821_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov eax, ecx
- sub eax, edx
- je SHORT G_M9821_IG14
- cmp eax, ecx
- jbe SHORT G_M9821_IG11
- ;; size=10 bbWeight=0.50 PerfScore 1.38
-G_M9821_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- neg r8d
- ;; size=3 bbWeight=0.50 PerfScore 0.12
+ mov r10d, ecx
+ sub r10d, edx
+ je SHORT G_M9821_IG15
+ jmp SHORT G_M9821_IG13
+ ;; size=10 bbWeight=0.50 PerfScore 1.75
+G_M9821_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r10, rsi
+ jmp G_M9821_IG04
+ ;; size=8 bbWeight=2 PerfScore 4.50
G_M9821_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, r8d
;; size=3 bbWeight=1 PerfScore 0.25
@@ -138,29 +138,33 @@ G_M9821_IG12: ; bbWeight=1, epilog, nogc, extend
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M9821_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov r10, rsi
- jmp G_M9821_IG04
- ;; size=8 bbWeight=2 PerfScore 4.50
+G_M9821_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp r10d, ecx
+ jbe SHORT G_M9821_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M9821_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ neg r8d
+ jmp SHORT G_M9821_IG11
+ ;; size=5 bbWeight=0.50 PerfScore 1.12
+G_M9821_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rax, rsi
sub rax, r9
- jne SHORT G_M9821_IG15
+ jne SHORT G_M9821_IG16
xor r8d, r8d
jmp SHORT G_M9821_IG11
;; size=13 bbWeight=0.50 PerfScore 1.88
-G_M9821_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M9821_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rax, rsi
jbe SHORT G_M9821_IG11
- jmp SHORT G_M9821_IG10
+ jmp SHORT G_M9821_IG14
;; size=7 bbWeight=0.50 PerfScore 1.62
-G_M9821_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M9821_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 6, PerfScore 104.88, instruction count 82, allocated bytes for code 240 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
+; Total bytes of code 247, prolog size 6, PerfScore 106.88, instruction count 84, allocated bytes for code 247 (MethodHash=418ad9a2) for method System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
; ============================================================
Unwind Info:
@@ -8,7 +8,7 @@
; control-flow guard enabled
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 4.50) ref -> rbx class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T00] ( 7, 4.50) ref -> rbx class-hnd exact single-def <System.String>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V03 rat0 [V03,T01] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
@@ -24,28 +24,34 @@ G_M4104_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M4104_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rcx, [(reloc)]
cmp qword ptr [rcx-0x08], 0
- jne SHORT G_M4104_IG08
- ;; size=14 bbWeight=1 PerfScore 4.50
-G_M4104_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M4104_IG06
test rbx, rbx
je SHORT G_M4104_IG07
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M4104_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=19 bbWeight=1 PerfScore 5.75
+G_M4104_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x08], 0
je SHORT G_M4104_IG07
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M4104_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M4104_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx
; gcrRegs +[rcx]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M4104_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M4104_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
jmp System.Diagnostics.ProcessManager:IsRemoteMachineCore(System.String):ubyte
; gcr arg pop 0
;; size=10 bbWeight=1 PerfScore 2.75
-G_M4104_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M4104_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx]
+ call CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
+ ; byrRegs +[rax]
+ ; gcr arg pop 0
+ test rbx, rbx
+ jne SHORT G_M4104_IG03
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M4104_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rax]
mov rcx, rbx
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -55,15 +61,8 @@ G_M4104_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r
; gcr arg pop 0
int3
;; size=16 bbWeight=0 PerfScore 0.00
-G_M4104_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
- call CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
- ; byrRegs +[rax]
- ; gcr arg pop 0
- jmp SHORT G_M4104_IG03
- ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 69, prolog size 8, PerfScore 12.25, instruction count 20, allocated bytes for code 69 (MethodHash=ccb9eff7) for method System.Diagnostics.ProcessManager:IsRemoteMachine(System.String):ubyte (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 12.25, instruction count 21, allocated bytes for code 72 (MethodHash=ccb9eff7) for method System.Diagnostics.ProcessManager:IsRemoteMachine(System.String):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -10,7 +10,7 @@
; V00 this [V00,T11] ( 10, 6 ) ref -> rbx this class-hnd single-def <System.MulticastDelegate>
; V01 arg1 [V01,T13] ( 8, 5 ) ref -> rsi class-hnd single-def <System.Delegate>
; V02 loc0 [V02,T15] ( 5, 2.50) ref -> rsi class-hnd single-def <System.MulticastDelegate>
-; V03 loc1 [V03,T03] ( 17, 17.50) ref -> r12 class-hnd <System.Delegate[]>
+; V03 loc1 [V03,T03] ( 17, 17.50) ref -> [rsp+0x20] class-hnd <System.Delegate[]>
; V04 loc2 [V04,T04] ( 16, 17 ) int -> rbp
; V05 loc3 [V05,T06] ( 17, 16.12) ref -> r14 class-hnd single-def <System.Delegate[]>
; V06 loc4 [V06,T12] ( 8, 7.50) int -> r13
@@ -72,7 +72,7 @@ G_M24678_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=004
; gcrRegs -[rax] +[rsi]
mov rcx, qword ptr [rbx]
cmp rcx, qword ptr [rsi]
- jne G_M24678_IG37
+ jne G_M24678_IG36
mov rcx, rbx
; gcrRegs +[rcx]
call System.Delegate:IsDynamicDelegate():ubyte:this
@@ -86,7 +86,7 @@ G_M24678_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=004
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne G_M24678_IG38
+ jne G_M24678_IG37
;; size=40 bbWeight=0.50 PerfScore 5.50
G_M24678_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea rcx, [(reloc)] ; System.MulticastDelegate
@@ -136,7 +136,7 @@ G_M24678_IG10: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
mov r15, rax
; gcrRegs +[r15]
test r15, r15
- jne G_M24678_IG17
+ jne G_M24678_IG16
lea r13d, [rbp+0x01]
movsxd rdx, r13d
lea rcx, [(reloc)] ; System.Delegate[]
@@ -163,15 +163,15 @@ G_M24678_IG10: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[rcx rdi r8 r14]
; gcr arg pop 0
- jmp SHORT G_M24678_IG15
+ jmp SHORT G_M24678_IG14
;; size=86 bbWeight=0.50 PerfScore 7.12
G_M24678_IG11: ; bbWeight=0.50, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r14]
xor r15d, r15d
test ebp, ebp
- jle SHORT G_M24678_IG15
+ jle SHORT G_M24678_IG14
cmp dword ptr [r14+0x08], ebp
- jl SHORT G_M24678_IG14
+ jl SHORT G_M24678_IG13
;; size=13 bbWeight=0.50 PerfScore 2.75
G_M24678_IG12: ; bbWeight=3.96, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
mov r8d, r15d
@@ -186,15 +186,11 @@ G_M24678_IG12: ; bbWeight=3.96, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
; gcr arg pop 0
cmp r15d, ebp
jl SHORT G_M24678_IG12
- ;; size=27 bbWeight=3.96 PerfScore 20.79
-G_M24678_IG13: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
- jmp SHORT G_M24678_IG15
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M24678_IG14: ; bbWeight=0.04, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r14]
+ jmp SHORT G_M24678_IG14
+ ;; size=29 bbWeight=3.96 PerfScore 28.71
+G_M24678_IG13: ; bbWeight=0.04, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
cmp r15d, dword ptr [r14+0x08]
- jae G_M24678_IG36
+ jae G_M24678_IG35
mov r8d, r15d
mov r8, gword ptr [r14+8*r8+0x10]
; gcrRegs +[r8]
@@ -207,9 +203,9 @@ G_M24678_IG14: ; bbWeight=0.04, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
; gcr arg pop 0
inc r15d
cmp r15d, ebp
- jl SHORT G_M24678_IG14
+ jl SHORT G_M24678_IG13
;; size=41 bbWeight=0.04 PerfScore 0.39
-G_M24678_IG15: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref
+G_M24678_IG14: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -218,7 +214,7 @@ G_M24678_IG15: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=0000
mov r8d, r13d
xor r9d, r9d
;; size=12 bbWeight=0.50 PerfScore 0.50
-G_M24678_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M24678_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
@@ -231,7 +227,7 @@ G_M24678_IG16: ; bbWeight=0.50, epilog, nogc, extend
jmp System.MulticastDelegate:NewMulticastDelegate(System.Delegate[],int,ubyte):System.MulticastDelegate:this
; gcr arg pop 0
;; size=21 bbWeight=0.50 PerfScore 3.12
-G_M24678_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M24678_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rdx r12] +[rsi r14-r15]
mov edi, dword ptr [rbx+0x18]
lea r13d, [rdi+rbp]
@@ -240,10 +236,10 @@ G_M24678_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C04
mov eax, dword ptr [r15+0x08]
mov dword ptr [rsp+0x2C], eax
cmp eax, r13d
- jl G_M24678_IG22
+ jl G_M24678_IG20
mov r12, r15
test r14, r14
- jne SHORT G_M24678_IG18
+ jne SHORT G_M24678_IG17
mov rcx, r12
; gcrRegs +[rcx]
mov edx, edi
@@ -253,17 +249,17 @@ G_M24678_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C04
; gcrRegs -[rcx r8]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M24678_IG22
- jmp SHORT G_M24678_IG23
+ jne SHORT G_M24678_IG20
+ jmp SHORT G_M24678_IG21
;; size=54 bbWeight=0.50 PerfScore 6.75
-G_M24678_IG18: ; bbWeight=0.50, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M24678_IG17: ; bbWeight=0.50, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
xor r10d, r10d
test ebp, ebp
- jle SHORT G_M24678_IG22
+ jle SHORT G_M24678_IG20
cmp dword ptr [r14+0x08], ebp
- jl SHORT G_M24678_IG21
+ jl SHORT G_M24678_IG19
;; size=13 bbWeight=0.50 PerfScore 2.75
-G_M24678_IG19: ; bbWeight=3.96, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M24678_IG18: ; bbWeight=3.96, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov r8d, r10d
mov r8, gword ptr [r14+8*r8+0x10]
; gcrRegs +[r8]
@@ -275,18 +271,16 @@ G_M24678_IG19: ; bbWeight=3.96, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byr
; gcrRegs -[rcx r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M24678_IG23
+ je SHORT G_M24678_IG21
mov r10d, dword ptr [rsp+0x34]
inc r10d
cmp r10d, ebp
- jl SHORT G_M24678_IG19
- ;; size=42 bbWeight=3.96 PerfScore 34.65
-G_M24678_IG20: ; bbWeight=0.50, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M24678_IG22
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M24678_IG21: ; bbWeight=0.04, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M24678_IG18
+ jmp SHORT G_M24678_IG20
+ ;; size=44 bbWeight=3.96 PerfScore 42.57
+G_M24678_IG19: ; bbWeight=0.04, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp r10d, dword ptr [r14+0x08]
- jae G_M24678_IG36
+ jae G_M24678_IG35
mov r8d, r10d
mov r8, gword ptr [r14+8*r8+0x10]
; gcrRegs +[r8]
@@ -298,115 +292,134 @@ G_M24678_IG21: ; bbWeight=0.04, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byr
; gcrRegs -[rcx r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M24678_IG23
+ je SHORT G_M24678_IG21
mov edx, dword ptr [rsp+0x34]
inc edx
cmp edx, ebp
mov r10d, edx
- jl SHORT G_M24678_IG21
+ jl SHORT G_M24678_IG19
;; size=52 bbWeight=0.04 PerfScore 0.52
-G_M24678_IG22: ; bbWeight=0.50, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M24678_IG20: ; bbWeight=0.50, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref
test r12, r12
- jne G_M24678_IG34
- ;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M24678_IG23: ; bbWeight=0.50, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov gword ptr [rsp+0x20], r12
+ ; GC ptr vars +{V03}
+ jne G_M24678_IG33
+ ;; size=14 bbWeight=0.50 PerfScore 1.12
+G_M24678_IG21: ; bbWeight=0.50, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r12]
- mov eax, dword ptr [rsp+0x2C]
- mov edx, eax
+ ; GC ptr vars -{V03}
+ mov r12d, dword ptr [rsp+0x2C]
+ mov edx, r12d
cmp edx, r13d
- jge SHORT G_M24678_IG25
- ;; size=11 bbWeight=0.50 PerfScore 1.25
-G_M24678_IG24: ; bbWeight=4, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+ jge SHORT G_M24678_IG23
+ ;; size=13 bbWeight=0.50 PerfScore 1.25
+G_M24678_IG22: ; bbWeight=4, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
add edx, edx
cmp edx, r13d
- jl SHORT G_M24678_IG24
+ jl SHORT G_M24678_IG22
;; size=7 bbWeight=4 PerfScore 6.00
-G_M24678_IG25: ; bbWeight=0.50, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M24678_IG23: ; bbWeight=0.50, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
movsxd rdx, edx
lea rcx, [(reloc)] ; System.Delegate[]
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- xor eax, eax
- ; gcrRegs -[rax]
+ xor r10d, r10d
test edi, edi
- jle SHORT G_M24678_IG29
- mov r10d, dword ptr [rsp+0x2C]
- cmp r10d, edi
- jl SHORT G_M24678_IG28
- ;; size=34 bbWeight=0.50 PerfScore 2.88
-G_M24678_IG26: ; bbWeight=3.96, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov r8d, eax
+ jle SHORT G_M24678_IG26
+ cmp r12d, edi
+ jl SHORT G_M24678_IG27
+ ;; size=27 bbWeight=0.50 PerfScore 2.25
+G_M24678_IG24: ; bbWeight=3.96, gcrefRegs=C049 {rax rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r8d, r10d
mov r8, gword ptr [r15+8*r8+0x10]
; gcrRegs +[r8]
- mov dword ptr [rsp+0x30], eax
- movsxd rdx, eax
- mov rcx, r12
+ mov dword ptr [rsp+0x30], r10d
+ movsxd rdx, r10d
+ mov gword ptr [rsp+0x20], rax
+ ; GC ptr vars +{V03}
+ mov rcx, rax
; gcrRegs +[rcx]
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx r8]
+ ; gcrRegs -[rax rcx r8]
; gcr arg pop 0
...
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 8,795 | 3,596 | 2,086 | 3,113 | -32,353 | +20,797 |
benchmarks.run.windows.x64.checked.mch | 1,369 | 396 | 217 | 756 | -3,450 | +5,522 |
benchmarks.run_pgo.windows.x64.checked.mch | 7,271 | 3,035 | 1,051 | 3,185 | -23,838 | +16,686 |
benchmarks.run_tiered.windows.x64.checked.mch | 556 | 135 | 74 | 347 | -1,491 | +1,694 |
coreclr_tests.run.windows.x64.checked.mch | 20,959 | 15,032 | 1,625 | 4,302 | -77,940 | +17,135 |
libraries.crossgen2.windows.x64.checked.mch | 4,957 | 814 | 504 | 3,639 | -6,782 | +5,681 |
libraries.pmi.windows.x64.checked.mch | 10,964 | 3,102 | 1,967 | 5,895 | -23,289 | +20,239 |
libraries_tests.run.windows.x64.Release.mch | 31,014 | 11,954 | 7,829 | 11,231 | -136,653 | +82,739 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 18,898 | 5,208 | 2,505 | 11,185 | -42,559 | +30,852 |
realworld.run.windows.x64.checked.mch | 1,724 | 446 | 244 | 1,034 | -5,643 | +2,328 |
smoke_tests.nativeaot.windows.x64.checked.mch | 1,117 | 229 | 112 | 776 | -1,179 | +1,290 |
107,624 | 43,947 | 18,214 | 45,463 | -355,177 | +204,963 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 113,447 | 48,462 | 64,985 | 967 (0.85%) | 967 (0.85%) |
benchmarks.run.windows.x64.checked.mch | 28,178 | 4 | 28,174 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.windows.x64.checked.mch | 101,027 | 50,170 | 50,857 | 126 (0.12%) | 126 (0.12%) |
benchmarks.run_tiered.windows.x64.checked.mch | 54,255 | 36,844 | 17,411 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.windows.x64.checked.mch | 574,112 | 341,113 | 232,999 | 300 (0.05%) | 300 (0.05%) |
libraries.crossgen2.windows.x64.checked.mch | 243,023 | 15 | 243,008 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.windows.x64.checked.mch | 307,639 | 6 | 307,633 | 2 (0.00%) | 2 (0.00%) |
libraries_tests.run.windows.x64.Release.mch | 682,158 | 485,176 | 196,982 | 2,458 (0.36%) | 2,459 (0.36%) |
librariestestsnotieredcompilation.run.windows.x64.Release.mch | 319,780 | 21,886 | 297,894 | 6 (0.00%) | 6 (0.00%) |
realworld.run.windows.x64.checked.mch | 36,888 | 3 | 36,885 | 0 (0.00%) | 0 (0.00%) |
smoke_tests.nativeaot.windows.x64.checked.mch | 32,444 | 10 | 32,434 | 0 (0.00%) | 0 (0.00%) |
2,492,951 | 983,689 | 1,509,262 | 3,859 (0.15%) | 3,860 (0.15%) |
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 41763246 (overridden on cmd)
Total bytes of diff: 41751690 (overridden on cmd)
Total bytes of delta: -11556 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
116 : 55573.dasm (2.33 % of base)
103 : 10122.dasm (2.43 % of base)
88 : 55914.dasm (10.27 % of base)
88 : 56857.dasm (10.27 % of base)
88 : 59956.dasm (10.27 % of base)
82 : 58690.dasm (1.56 % of base)
74 : 100828.dasm (6.76 % of base)
74 : 91525.dasm (6.76 % of base)
72 : 59491.dasm (1.44 % of base)
68 : 110130.dasm (0.70 % of base)
67 : 101225.dasm (1.43 % of base)
67 : 48563.dasm (1.35 % of base)
66 : 101576.dasm (5.72 % of base)
66 : 8334.dasm (1.73 % of base)
65 : 97147.dasm (1.31 % of base)
63 : 95905.dasm (5.70 % of base)
63 : 57311.dasm (1.27 % of base)
62 : 55876.dasm (8.52 % of base)
62 : 59907.dasm (8.52 % of base)
62 : 56834.dasm (8.52 % of base)
Top file improvements (bytes):
-279 : 90657.dasm (-5.44 % of base)
-231 : 91182.dasm (-2.16 % of base)
-172 : 63166.dasm (-2.85 % of base)
-163 : 46649.dasm (-4.03 % of base)
-154 : 61640.dasm (-2.52 % of base)
-118 : 101029.dasm (-1.06 % of base)
-118 : 52039.dasm (-1.92 % of base)
-118 : 91769.dasm (-1.07 % of base)
-107 : 101987.dasm (-0.87 % of base)
-107 : 93027.dasm (-0.87 % of base)
-106 : 58094.dasm (-1.79 % of base)
-105 : 44090.dasm (-5.85 % of base)
-104 : 45328.dasm (-5.60 % of base)
-100 : 91263.dasm (-0.91 % of base)
-90 : 46108.dasm (-4.55 % of base)
-88 : 45876.dasm (-3.85 % of base)
-86 : 54110.dasm (-7.12 % of base)
-84 : 37905.dasm (-7.00 % of base)
-84 : 42200.dasm (-6.98 % of base)
-82 : 34085.dasm (-6.82 % of base)
84 total files with Code Size differences (48 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
116 (2.33 % of base) : 55573.dasm - Dapper.SqlMapper+<QueryAsync>d__33`1[System.__Canon]:MoveNext():this (Tier1)
103 (2.43 % of base) : 10122.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
88 (10.27 % of base) : 55914.dasm - System.Net.Sockets.NetworkStream:WriteAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
88 (10.27 % of base) : 56857.dasm - System.Net.Sockets.NetworkStream:WriteAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
88 (10.27 % of base) : 59956.dasm - System.Net.Sockets.NetworkStream:WriteAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
82 (1.56 % of base) : 58690.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
74 (6.76 % of base) : 100828.dasm - Microsoft.Extensions.Internal.PropertyHelper:GetVisibleProperties(System.Type,System.Collections.Concurrent.ConcurrentDictionary`2[System.Type,Microsoft.Extensions.Internal.PropertyHelper[]],System.Collections.Concurrent.ConcurrentDictionary`2[System.Type,Microsoft.Extensions.Internal.PropertyHelper[]]):Microsoft.Extensions.Internal.PropertyHelper[] (Tier1-OSR)
74 (6.76 % of base) : 91525.dasm - Microsoft.Extensions.Internal.PropertyHelper:GetVisibleProperties(System.Type,System.Collections.Concurrent.ConcurrentDictionary`2[System.Type,Microsoft.Extensions.Internal.PropertyHelper[]],System.Collections.Concurrent.ConcurrentDictionary`2[System.Type,Microsoft.Extensions.Internal.PropertyHelper[]]):Microsoft.Extensions.Internal.PropertyHelper[] (Tier1-OSR)
72 (1.44 % of base) : 59491.dasm - Dapper.SqlMapper+<QueryAsync>d__33`1[System.__Canon]:MoveNext():this (Tier1)
68 (0.70 % of base) : 110130.dasm - OrchardCore.Resources.Liquid.ScriptTag+<WriteToAsync>d__1:MoveNext():this (FullOpts)
67 (1.35 % of base) : 48563.dasm - Dapper.SqlMapper+<QueryAsync>d__33`1[System.__Canon]:MoveNext():this (Tier1)
67 (1.43 % of base) : 101225.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
66 (1.73 % of base) : 8334.dasm - Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketConnection+<DoSend>d__28:MoveNext():this (Tier1)
66 (5.72 % of base) : 101576.dasm - System.SpanHelpers:IndexOfAnyValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,short,short,short,int):int (Tier1)
65 (1.31 % of base) : 97147.dasm - OrchardCore.DisplayManagement.Descriptors.DefaultShapeTableManager+<GetShapeTableAsync>d__11:MoveNext():this (Tier1)
63 (1.27 % of base) : 57311.dasm - Dapper.SqlMapper+<QueryAsync>d__33`1[System.__Canon]:MoveNext():this (Tier1)
63 (5.70 % of base) : 95905.dasm - System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase (Tier1)
62 (8.52 % of base) : 55876.dasm - System.Net.Sockets.NetworkStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
62 (8.52 % of base) : 59907.dasm - System.Net.Sockets.NetworkStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
62 (8.52 % of base) : 56834.dasm - System.Net.Sockets.NetworkStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
Top method improvements (bytes):
-279 (-5.44 % of base) : 90657.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpResponseHeaders:SetValueFast(System.String,Microsoft.Extensions.Primitives.StringValues):this (Tier1)
-231 (-2.16 % of base) : 91182.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:GetCallbackMethodsForType(System.Type,byref,byref,byref,byref,byref):this (Tier1-OSR)
-172 (-2.85 % of base) : 63166.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-163 (-4.03 % of base) : 46649.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (FullOpts)
-154 (-2.52 % of base) : 61640.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-118 (-1.92 % of base) : 52039.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-118 (-1.06 % of base) : 101029.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1-OSR)
-118 (-1.07 % of base) : 91769.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1-OSR)
-107 (-0.87 % of base) : 101987.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-107 (-0.87 % of base) : 93027.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
-106 (-1.79 % of base) : 58094.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-105 (-5.85 % of base) : 44090.dasm - Microsoft.EntityFrameworkCore.Metadata.Internal.ClrPropertySetterFactory:CreateGeneric[System.__Canon,System.__Canon,System.__Canon,System.__Canon](System.Reflection.MemberInfo,Microsoft.EntityFrameworkCore.Metadata.IPropertyBase):Microsoft.EntityFrameworkCore.Metadata.IClrPropertySetter:this (FullOpts)
-104 (-5.60 % of base) : 45328.dasm - Microsoft.EntityFrameworkCore.ChangeTracking.Internal.ValueComparerExtensions:ToNullableComparer(Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer,System.Type):Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer (FullOpts)
-100 (-0.91 % of base) : 91263.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
-90 (-4.55 % of base) : 46108.dasm - Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor+ShaperProcessingExpressionVisitor:.ctor(Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor,Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression,System.Collections.Generic.ISet`1[System.String],ubyte,ubyte):this (FullOpts)
-88 (-3.85 % of base) : 45876.dasm - Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor:Expand(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts)
-86 (-7.12 % of base) : 54110.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry],Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,int,byref):ubyte (Tier1)
-84 (-7.00 % of base) : 37905.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry],Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,int,byref):ubyte (Tier1)
-84 (-6.98 % of base) : 42200.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry],Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,int,byref):ubyte (Tier1)
-82 (-6.82 % of base) : 34085.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry],Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,int,byref):ubyte (Tier1)
Top method regressions (percentages):
88 (10.27 % of base) : 55914.dasm - System.Net.Sockets.NetworkStream:WriteAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
88 (10.27 % of base) : 56857.dasm - System.Net.Sockets.NetworkStream:WriteAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
88 (10.27 % of base) : 59956.dasm - System.Net.Sockets.NetworkStream:WriteAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (Tier1)
37 (8.85 % of base) : 56859.dasm - System.Net.Sockets.Socket:SendAsyncForNetworkStream(System.ReadOnlyMemory`1[ubyte],int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
37 (8.85 % of base) : 55916.dasm - System.Net.Sockets.Socket:SendAsyncForNetworkStream(System.ReadOnlyMemory`1[ubyte],int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
37 (8.85 % of base) : 59958.dasm - System.Net.Sockets.Socket:SendAsyncForNetworkStream(System.ReadOnlyMemory`1[ubyte],int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
62 (8.52 % of base) : 55876.dasm - System.Net.Sockets.NetworkStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
62 (8.52 % of base) : 59907.dasm - System.Net.Sockets.NetworkStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
62 (8.52 % of base) : 56834.dasm - System.Net.Sockets.NetworkStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
36 (8.22 % of base) : 55877.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Memory`1[ubyte],int,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
36 (8.22 % of base) : 56835.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Memory`1[ubyte],int,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
36 (8.22 % of base) : 59905.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Memory`1[ubyte],int,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
19 (7.79 % of base) : 1837.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryDequeue(byref):ubyte:this (Tier1)
30 (7.33 % of base) : 102452.dasm - OrchardCore.Security.AuthorizationHandlers.PermissionHandler:HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext,OrchardCore.Security.PermissionRequirement):System.Threading.Tasks.Task:this (Tier1)
30 (7.33 % of base) : 93349.dasm - OrchardCore.Security.AuthorizationHandlers.PermissionHandler:HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext,OrchardCore.Security.PermissionRequirement):System.Threading.Tasks.Task:this (Tier1)
74 (6.76 % of base) : 100828.dasm - Microsoft.Extensions.Internal.PropertyHelper:GetVisibleProperties(System.Type,System.Collections.Concurrent.ConcurrentDictionary`2[System.Type,Microsoft.Extensions.Internal.PropertyHelper[]],System.Collections.Concurrent.ConcurrentDictionary`2[System.Type,Microsoft.Extensions.Internal.PropertyHelper[]]):Microsoft.Extensions.Internal.PropertyHelper[] (Tier1-OSR)
74 (6.76 % of base) : 91525.dasm - Microsoft.Extensions.Internal.PropertyHelper:GetVisibleProperties(System.Type,System.Collections.Concurrent.ConcurrentDictionary`2[System.Type,Microsoft.Extensions.Internal.PropertyHelper[]],System.Collections.Concurrent.ConcurrentDictionary`2[System.Type,Microsoft.Extensions.Internal.PropertyHelper[]]):Microsoft.Extensions.Internal.PropertyHelper[] (Tier1-OSR)
19 (6.64 % of base) : 41326.dasm - System.Threading.ThreadPoolWorkQueue:EnqueueAtHighPriority(System.Object):this (Tier1)
25 (6.54 % of base) : 40949.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
47 (5.93 % of base) : 88783.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (Tier1)
Top method improvements (percentages):
-15 (-15.15 % of base) : 53577.dasm - Npgsql.NpgsqlCommand:<ProcessRawQuery>g__ValidateParameterCount|98_0(Npgsql.NpgsqlBatchCommand) (Tier1)
-15 (-15.15 % of base) : 65726.dasm - Npgsql.NpgsqlCommand:<ProcessRawQuery>g__ValidateParameterCount|98_0(Npgsql.NpgsqlBatchCommand) (Tier1)
-26 (-10.28 % of base) : 99088.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.HttpUtilities:IsHostHeaderValid(System.String):ubyte (Tier1)
-13 (-9.70 % of base) : 76012.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
-2 (-9.09 % of base) : 93854.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-2 (-9.09 % of base) : 13956.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-2 (-9.09 % of base) : 153.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-13 (-8.33 % of base) : 76016.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object) (FullOpts)
-40 (-8.16 % of base) : 47486.dasm - System.Threading.Channels.UnboundedChannel`1+UnboundedChannelWriter[System.__Canon]:TryWrite(System.__Canon):ubyte:this (Tier1)
-40 (-8.16 % of base) : 40195.dasm - System.Threading.Channels.UnboundedChannel`1+UnboundedChannelWriter[System.__Canon]:TryWrite(System.__Canon):ubyte:this (Tier1)
-13 (-7.93 % of base) : 75999.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-24 (-7.79 % of base) : 50888.dasm - Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketSenderPool:Return(Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketSender):this (Tier1)
-24 (-7.79 % of base) : 66334.dasm - Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketSenderPool:Return(Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketSender):this (Tier1)
-38 (-7.76 % of base) : 38998.dasm - System.Threading.Channels.UnboundedChannel`1+UnboundedChannelWriter[System.__Canon]:TryWrite(System.__Canon):ubyte:this (Tier1)
-38 (-7.76 % of base) : 54371.dasm - System.Threading.Channels.UnboundedChannel`1+UnboundedChannelWriter[System.__Canon]:TryWrite(System.__Canon):ubyte:this (Tier1)
-13 (-7.69 % of base) : 80360.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-38 (-7.16 % of base) : 49021.dasm - System.Threading.Tasks.Task:FinishStageTwo():this (Tier1)
-86 (-7.12 % of base) : 54110.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry],Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,int,byref):ubyte (Tier1)
-39 (-7.12 % of base) : 110931.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection:EnsureHostHeaderExists():this (Tier1)
-84 (-7.00 % of base) : 37905.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry],Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ModelMetadataIdentity,int,byref):ubyte (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8749663 (overridden on cmd)
Total bytes of diff: 8751735 (overridden on cmd)
Total bytes of delta: 2072 (0.02 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
291 : 17578.dasm (8.47 % of base)
245 : 10642.dasm (7.54 % of base)
230 : 28136.dasm (6.79 % of base)
177 : 16968.dasm (8.67 % of base)
165 : 1029.dasm (3.56 % of base)
130 : 3512.dasm (6.92 % of base)
117 : 15086.dasm (6.89 % of base)
117 : 15268.dasm (7.46 % of base)
117 : 16554.dasm (6.78 % of base)
107 : 2882.dasm (3.62 % of base)
93 : 4685.dasm (7.89 % of base)
89 : 16221.dasm (6.38 % of base)
78 : 15316.dasm (2.44 % of base)
78 : 19294.dasm (1.51 % of base)
78 : 15260.dasm (1.66 % of base)
77 : 2884.dasm (4.04 % of base)
73 : 16208.dasm (7.57 % of base)
70 : 1755.dasm (5.59 % of base)
69 : 3672.dasm (2.00 % of base)
69 : 18450.dasm (5.90 % of base)
Top file improvements (bytes):
-159 : 5371.dasm (-7.96 % of base)
-87 : 11224.dasm (-4.30 % of base)
-80 : 20813.dasm (-1.32 % of base)
-78 : 5369.dasm (-2.87 % of base)
-68 : 19909.dasm (-2.55 % of base)
-66 : 27739.dasm (-0.63 % of base)
-65 : 18358.dasm (-1.92 % of base)
-62 : 23661.dasm (-7.81 % of base)
-59 : 6045.dasm (-2.48 % of base)
-51 : 24702.dasm (-7.85 % of base)
-49 : 14865.dasm (-0.73 % of base)
-49 : 8691.dasm (-7.10 % of base)
-44 : 23181.dasm (-3.21 % of base)
-42 : 16364.dasm (-2.87 % of base)
-42 : 19919.dasm (-4.18 % of base)
-41 : 21675.dasm (-1.52 % of base)
-41 : 22933.dasm (-1.69 % of base)
-35 : 7301.dasm (-0.20 % of base)
-34 : 25410.dasm (-0.39 % of base)
-34 : 7314.dasm (-0.39 % of base)
64 total files with Code Size differences (33 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
291 (8.47 % of base) : 17578.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
245 (7.54 % of base) : 10642.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
230 (6.79 % of base) : 28136.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
177 (8.67 % of base) : 16968.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
165 (3.56 % of base) : 1029.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.SyncReadWriteAdapter]:MoveNext():this (FullOpts)
130 (6.92 % of base) : 3512.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
117 (6.89 % of base) : 15086.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
117 (6.78 % of base) : 16554.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
117 (7.46 % of base) : 15268.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
107 (3.62 % of base) : 2882.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (FullOpts)
93 (7.89 % of base) : 4685.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
89 (6.38 % of base) : 16221.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
78 (1.51 % of base) : 19294.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
78 (2.44 % of base) : 15316.dasm - System.Formats.Tar.TarHeader+<WriteAsPaxAsync>d__93:MoveNext():this (FullOpts)
78 (1.66 % of base) : 15260.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (FullOpts)
77 (4.04 % of base) : 2884.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
73 (7.57 % of base) : 16208.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
70 (5.59 % of base) : 1755.dasm - System.Text.Json.Serialization.ReadBufferState+<ReadFromStreamAsync>d__11:MoveNext():this (FullOpts)
69 (5.90 % of base) : 18450.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (FullOpts)
69 (2.00 % of base) : 3672.dasm - System.IO.File+<WriteToFileAsync>d__110:MoveNext():this (FullOpts)
Top method improvements (bytes):
-159 (-7.96 % of base) : 5371.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-87 (-4.30 % of base) : 11224.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartAttribute(System.String,System.String,System.String):this (FullOpts)
-80 (-1.32 % of base) : 20813.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-78 (-2.87 % of base) : 5369.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-68 (-2.55 % of base) : 19909.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
-66 (-0.63 % of base) : 27739.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
-65 (-1.92 % of base) : 18358.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-62 (-7.81 % of base) : 23661.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-59 (-2.48 % of base) : 6045.dasm - BenchmarksGame.KNucleotide_9:Bench(BenchmarksGame.NucleotideHelpers,ubyte):ubyte (FullOpts)
-51 (-7.85 % of base) : 24702.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[int],System.Collections.Immutable.ImmutableList`1+Builder[int],int,int,ubyte):this (FullOpts)
-49 (-0.73 % of base) : 14865.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime (FullOpts)
-49 (-7.10 % of base) : 8691.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
-44 (-3.21 % of base) : 23181.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (FullOpts)
-42 (-2.87 % of base) : 16364.dasm - AssignRect:first_assignments(int[,],short[,]):int (FullOpts)
-42 (-4.18 % of base) : 19919.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-41 (-1.52 % of base) : 21675.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
-41 (-1.69 % of base) : 22933.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
-35 (-0.20 % of base) : 7301.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
-34 (-0.39 % of base) : 7314.dasm - Jil.Deserialize.Methods:ParseISO8601Date(System.IO.TextReader,ushort[],int,int):System.DateTime (FullOpts)
-34 (-0.39 % of base) : 25410.dasm - Jil.Deserialize.Methods:ParseISO8601DateThunkReader(byref,ushort[],int,int):System.DateTime (FullOpts)
Top method regressions (percentages):
63 (9.12 % of base) : 16219.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
177 (8.67 % of base) : 16968.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
291 (8.47 % of base) : 17578.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
93 (7.89 % of base) : 4685.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
54 (7.75 % of base) : 17584.dasm - System.Threading.Tasks.ValueTaskPerfTest+<AwaitTcsAsValueTask>d__21:MoveNext():this (FullOpts)
73 (7.57 % of base) : 16208.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
245 (7.54 % of base) : 10642.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
117 (7.46 % of base) : 15268.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
130 (6.92 % of base) : 3512.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
117 (6.89 % of base) : 15086.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
230 (6.79 % of base) : 28136.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
117 (6.78 % of base) : 16554.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
89 (6.38 % of base) : 16221.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
69 (5.90 % of base) : 18450.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (FullOpts)
63 (5.90 % of base) : 15335.dasm - System.Formats.Tar.TarWriter+<WriteFinalRecordsAsync>d__23:MoveNext():this (FullOpts)
56 (5.63 % of base) : 15178.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedTask_ConfigureAwait>d__9:MoveNext():this (FullOpts)
56 (5.63 % of base) : 14917.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedTask>d__8:MoveNext():this (FullOpts)
56 (5.63 % of base) : 16049.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedValueTaskSource_ConfigureAwait>d__11:MoveNext():this (FullOpts)
56 (5.63 % of base) : 15619.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedValueTaskSource>d__10:MoveNext():this (FullOpts)
56 (5.61 % of base) : 17077.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromYieldingAsyncMethod>d__12:MoveNext():this (FullOpts)
Top method improvements (percentages):
-159 (-7.96 % of base) : 5371.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-51 (-7.85 % of base) : 24702.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[int],System.Collections.Immutable.ImmutableList`1+Builder[int],int,int,ubyte):this (FullOpts)
-62 (-7.81 % of base) : 23661.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-23 (-7.67 % of base) : 19180.dasm - Microsoft.Extensions.Primitives.StringSegment:TrimEnd():Microsoft.Extensions.Primitives.StringSegment:this (FullOpts)
-49 (-7.10 % of base) : 8691.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
-18 (-6.21 % of base) : 634.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
-16 (-5.35 % of base) : 636.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-29 (-4.33 % of base) : 6629.dasm - System.IO.Pipelines.Pipe:PrepareFlushUnsynchronized(byref,byref,System.Threading.CancellationToken):this (FullOpts)
-87 (-4.30 % of base) : 11224.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartAttribute(System.String,System.String,System.String):this (FullOpts)
-42 (-4.18 % of base) : 19919.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-2 (-3.92 % of base) : 18839.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
-18 (-3.61 % of base) : 1024.dasm - System.Net.Security.SslAuthenticationOptions:UpdateOptions(System.Net.Security.SslClientAuthenticationOptions):this (FullOpts)
-31 (-3.61 % of base) : 16334.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
-14 (-3.43 % of base) : 539.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-44 (-3.21 % of base) : 23181.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (FullOpts)
-29 (-3.19 % of base) : 5803.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (FullOpts)
-15 (-3.14 % of base) : 20014.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+UsingsFromOptionsAndDiagnostics:Complete(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Threading.CancellationToken):this (FullOpts)
-18 (-3.07 % of base) : 7580.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
-8 (-3.07 % of base) : 11571.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
-14 (-2.89 % of base) : 271.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34741684 (overridden on cmd)
Total bytes of diff: 34734532 (overridden on cmd)
Total bytes of delta: -7152 (-0.02 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
856 : 26907.dasm (28.83 % of base)
112 : 70501.dasm (14.53 % of base)
112 : 85281.dasm (14.53 % of base)
112 : 30992.dasm (14.53 % of base)
112 : 87939.dasm (14.53 % of base)
109 : 84413.dasm (5.46 % of base)
104 : 97579.dasm (8.84 % of base)
103 : 94982.dasm (8.75 % of base)
94 : 44871.dasm (12.19 % of base)
94 : 49071.dasm (12.19 % of base)
91 : 94000.dasm (7.42 % of base)
89 : 55910.dasm (21.60 % of base)
89 : 74989.dasm (21.60 % of base)
89 : 53729.dasm (21.60 % of base)
88 : 92027.dasm (7.34 % of base)
84 : 70548.dasm (11.60 % of base)
84 : 50063.dasm (11.60 % of base)
84 : 50064.dasm (11.67 % of base)
84 : 49072.dasm (11.60 % of base)
84 : 56500.dasm (11.60 % of base)
Top file improvements (bytes):
-511 : 32142.dasm (-37.06 % of base)
-455 : 32152.dasm (-33.88 % of base)
-252 : 53011.dasm (-34.19 % of base)
-252 : 53049.dasm (-34.19 % of base)
-202 : 83055.dasm (-9.83 % of base)
-173 : 76179.dasm (-8.29 % of base)
-151 : 83070.dasm (-6.91 % of base)
-147 : 46739.dasm (-6.07 % of base)
-146 : 42541.dasm (-6.05 % of base)
-130 : 54125.dasm (-3.90 % of base)
-115 : 84684.dasm (-5.10 % of base)
-106 : 91502.dasm (-2.41 % of base)
-94 : 88770.dasm (-4.92 % of base)
-94 : 84685.dasm (-3.93 % of base)
-91 : 36482.dasm (-2.12 % of base)
-87 : 86191.dasm (-2.13 % of base)
-85 : 88039.dasm (-2.08 % of base)
-80 : 98182.dasm (-2.88 % of base)
-78 : 98178.dasm (-2.17 % of base)
-66 : 79048.dasm (-7.80 % of base)
70 total files with Code Size differences (31 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
856 (28.83 % of base) : 26907.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
112 (14.53 % of base) : 70501.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
112 (14.53 % of base) : 85281.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
112 (14.53 % of base) : 30992.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
112 (14.53 % of base) : 87939.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
109 (5.46 % of base) : 84413.dasm - System.Version:ParseVersion(System.ReadOnlySpan`1[ushort],ubyte):System.Version (Tier1)
104 (8.84 % of base) : 97579.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
103 (8.75 % of base) : 94982.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
94 (12.19 % of base) : 44871.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
94 (12.19 % of base) : 49071.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
91 (7.42 % of base) : 94000.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
89 (21.60 % of base) : 55910.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
89 (21.60 % of base) : 74989.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
89 (21.60 % of base) : 53729.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
88 (7.34 % of base) : 92027.dasm - System.Number+Grisu3:TryRunDouble(double,int,byref):ubyte (Tier1)
84 (11.60 % of base) : 70548.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
84 (11.60 % of base) : 50063.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
84 (11.60 % of base) : 49072.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
84 (11.60 % of base) : 56500.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
84 (11.67 % of base) : 50064.dasm - System.Globalization.CompareInfo:NlsCompareString(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
Top method improvements (bytes):
-511 (-37.06 % of base) : 32142.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-455 (-33.88 % of base) : 32152.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-252 (-34.19 % of base) : 53011.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-252 (-34.19 % of base) : 53049.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-202 (-9.83 % of base) : 83055.dasm - System.Net.Security.Tests.SslStreamTests+<>c__DisplayClass38_0+<<ConcurrentReadWrite>b__0>d:MoveNext():this (Tier1-OSR)
-173 (-8.29 % of base) : 76179.dasm - System.Net.Security.Tests.SslStreamTests+<WriteReadAsync>d__33:MoveNext():this (Tier1-OSR)
-151 (-6.91 % of base) : 83070.dasm - System.Net.Security.Tests.SslStreamTests+<ConcurrentReadWrite>d__38:MoveNext():this (Tier1-OSR)
-147 (-6.07 % of base) : 46739.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier1-OSR)
-146 (-6.05 % of base) : 42541.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsync>d__7:MoveNext():this (Tier1-OSR)
-130 (-3.90 % of base) : 54125.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
-115 (-5.10 % of base) : 84684.dasm - System.Net.Security.Tests.SslStreamTests+<>c__DisplayClass40_0+<<ConcurrentReadWriteLargeBuffer>b__0>d:MoveNext():this (Tier1-OSR)
-106 (-2.41 % of base) : 91502.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
-94 (-4.92 % of base) : 88770.dasm - Microsoft.AspNetCore.Server.Kestrel.Performance.PipeThroughputBenchmark+<Parse_SequentialAsync>d__15:MoveNext():this (Tier1-OSR)
-94 (-3.93 % of base) : 84685.dasm - System.Net.Security.Tests.SslStreamTests+<ConcurrentReadWriteLargeBuffer>d__40:MoveNext():this (Tier1-OSR)
-91 (-2.12 % of base) : 36482.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest:SendToThenReceiveFrom():this (Tier1-OSR)
-87 (-2.13 % of base) : 86191.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
-85 (-2.08 % of base) : 88039.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
-80 (-2.88 % of base) : 98182.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
-78 (-2.17 % of base) : 98178.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[System.__Canon]:MoveNext():this (Tier1-OSR)
-66 (-7.80 % of base) : 79048.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
856 (28.83 % of base) : 26907.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (Tier1)
89 (21.60 % of base) : 55910.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
89 (21.60 % of base) : 74989.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
89 (21.60 % of base) : 53729.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
72 (17.60 % of base) : 33222.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 81384.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 8491.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 96195.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 33426.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 42575.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 44714.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 22095.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 49796.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 34271.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 75526.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 77314.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 78146.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 82438.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 86350.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
71 (17.23 % of base) : 87635.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
Top method improvements (percentages):
-511 (-37.06 % of base) : 32142.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-252 (-34.19 % of base) : 53011.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-252 (-34.19 % of base) : 53049.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-455 (-33.88 % of base) : 32152.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-4 (-11.11 % of base) : 7634.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
-202 (-9.83 % of base) : 83055.dasm - System.Net.Security.Tests.SslStreamTests+<>c__DisplayClass38_0+<<ConcurrentReadWrite>b__0>d:MoveNext():this (Tier1-OSR)
-26 (-9.42 % of base) : 72327.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ThisParameterSymbol:get_RefKind():ubyte:this (Tier1)
-2 (-9.09 % of base) : 100047.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-2 (-9.09 % of base) : 75842.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-173 (-8.29 % of base) : 76179.dasm - System.Net.Security.Tests.SslStreamTests+<WriteReadAsync>d__33:MoveNext():this (Tier1-OSR)
-66 (-7.80 % of base) : 79048.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-7 (-6.93 % of base) : 67866.dasm - Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[System.__Canon]:get_Current():System.__Canon:this (Tier1)
-151 (-6.91 % of base) : 83070.dasm - System.Net.Security.Tests.SslStreamTests+<ConcurrentReadWrite>d__38:MoveNext():this (Tier1-OSR)
-51 (-6.48 % of base) : 97751.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-51 (-6.48 % of base) : 74575.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-16 (-6.32 % of base) : 83355.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-147 (-6.07 % of base) : 46739.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier1-OSR)
-146 (-6.05 % of base) : 42541.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsync>d__7:MoveNext():this (Tier1-OSR)
-48 (-5.76 % of base) : 79029.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-40 (-5.58 % of base) : 56157.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 12662284 (overridden on cmd)
Total bytes of diff: 12662487 (overridden on cmd)
Total bytes of delta: 203 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
283 : 32403.dasm (8.95 % of base)
174 : 46023.dasm (4.11 % of base)
158 : 31529.dasm (8.12 % of base)
127 : 51442.dasm (7.16 % of base)
77 : 34745.dasm (4.04 % of base)
69 : 17578.dasm (2.04 % of base)
69 : 34587.dasm (5.90 % of base)
68 : 25048.dasm (4.95 % of base)
51 : 32917.dasm (3.77 % of base)
49 : 51455.dasm (3.09 % of base)
42 : 30608.dasm (3.51 % of base)
42 : 35054.dasm (2.34 % of base)
42 : 15610.dasm (2.77 % of base)
41 : 16138.dasm (2.92 % of base)
31 : 47784.dasm (2.29 % of base)
31 : 31000.dasm (1.87 % of base)
31 : 49769.dasm (1.82 % of base)
25 : 47904.dasm (1.40 % of base)
22 : 32320.dasm (0.26 % of base)
19 : 46621.dasm (1.59 % of base)
Top file improvements (bytes):
-457 : 25130.dasm (-33.43 % of base)
-147 : 33238.dasm (-15.91 % of base)
-65 : 33770.dasm (-1.88 % of base)
-50 : 46985.dasm (-6.39 % of base)
-42 : 30263.dasm (-2.87 % of base)
-35 : 14462.dasm (-0.20 % of base)
-33 : 50032.dasm (-0.32 % of base)
-30 : 52355.dasm (-0.30 % of base)
-26 : 32557.dasm (-0.63 % of base)
-25 : 48124.dasm (-1.89 % of base)
-19 : 50030.dasm (-0.34 % of base)
-18 : 52305.dasm (-1.25 % of base)
-18 : 41880.dasm (-0.60 % of base)
-18 : 53361.dasm (-1.85 % of base)
-16 : 3486.dasm (-5.35 % of base)
-16 : 42018.dasm (-1.57 % of base)
-16 : 14788.dasm (-0.63 % of base)
-14 : 25133.dasm (-0.91 % of base)
-14 : 33857.dasm (-3.43 % of base)
-14 : 48375.dasm (-2.89 % of base)
55 total files with Code Size differences (29 improved, 26 regressed), 20 unchanged.
Top method regressions (bytes):
283 (8.95 % of base) : 32403.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
174 (4.11 % of base) : 46023.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
158 (8.12 % of base) : 31529.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier1-OSR)
127 (7.16 % of base) : 51442.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier1)
77 (4.04 % of base) : 34745.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (Tier1)
69 (5.90 % of base) : 34587.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1)
69 (2.04 % of base) : 17578.dasm - System.IO.File+<WriteToFileAsync>d__110:MoveNext():this (Tier1)
68 (4.95 % of base) : 25048.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1)
51 (3.77 % of base) : 32917.dasm - System.IO.Pipes.Tests.Perf_PipeTest+<ReadWriteAsync>d__8:MoveNext():this (Tier1)
49 (3.09 % of base) : 51455.dasm - System.IO.Tests.Perf_RandomAccess+<WriteAsync>d__17:MoveNext():this (Tier1)
42 (3.51 % of base) : 30608.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsyncWithCancellationToken>d__9:MoveNext():this (Tier1-OSR)
42 (2.77 % of base) : 15610.dasm - System.IO.Tests.Perf_RandomAccess_NoBuffering+<WriteGatherAsync>d__16:MoveNext():this (Tier1)
42 (2.34 % of base) : 35054.dasm - System.IO.Tests.Perf_RandomAccess+<WriteGatherAsync>d__22:MoveNext():this (Tier1)
41 (2.92 % of base) : 16138.dasm - System.IO.Tests.Perf_RandomAccess+<ReadAsync>d__16:MoveNext():this (Tier1)
31 (1.82 % of base) : 49769.dasm - Benchstone.MDBenchF.MDRomber:Test():ubyte:this (Tier1-OSR)
31 (2.29 % of base) : 47784.dasm - System.IO.Tests.Perf_RandomAccess_NoBuffering+<ReadScatterAsync>d__15:MoveNext():this (Tier1)
31 (1.87 % of base) : 31000.dasm - System.IO.Tests.Perf_RandomAccess+<ReadScatterAsync>d__21:MoveNext():this (Tier1)
25 (1.40 % of base) : 47904.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
22 (0.26 % of base) : 32320.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
19 (1.59 % of base) : 46621.dasm - System.IO.File:WriteToFile(System.String,int,System.String,System.Text.Encoding) (Tier0-FullOpts)
Top method improvements (bytes):
-457 (-33.43 % of base) : 25130.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-147 (-15.91 % of base) : 33238.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-65 (-1.88 % of base) : 33770.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
-50 (-6.39 % of base) : 46985.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-42 (-2.87 % of base) : 30263.dasm - AssignRect:first_assignments(int[,],short[,]):int (Tier1)
-35 (-0.20 % of base) : 14462.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
-33 (-0.32 % of base) : 50032.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
-30 (-0.30 % of base) : 52355.dasm - (dynamicClass):_DynamicMethod3(System.IO.TextReader,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
-26 (-0.63 % of base) : 32557.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
-25 (-1.89 % of base) : 48124.dasm - System.IO.FileSystem:RemoveDirectoryRecursive(System.String,byref,ubyte) (Tier1-OSR)
-19 (-0.34 % of base) : 50030.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
-18 (-0.60 % of base) : 41880.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:LoadMembers():this (Tier1)
-18 (-1.25 % of base) : 52305.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier1)
-18 (-1.85 % of base) : 53361.dasm - System.Threading.TimerQueue:FireNextTimers():this (Tier1)
-16 (-1.57 % of base) : 42018.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetRuntimeMember(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],byref,Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
-16 (-0.63 % of base) : 14788.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
-16 (-5.35 % of base) : 3486.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
-14 (-0.91 % of base) : 25133.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1)
-14 (-2.89 % of base) : 48375.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Tier1)
-14 (-3.43 % of base) : 33857.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
Top method regressions (percentages):
283 (8.95 % of base) : 32403.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
158 (8.12 % of base) : 31529.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier1-OSR)
127 (7.16 % of base) : 51442.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier1)
69 (5.90 % of base) : 34587.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1)
68 (4.95 % of base) : 25048.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1)
174 (4.11 % of base) : 46023.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
77 (4.04 % of base) : 34745.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (Tier1)
51 (3.77 % of base) : 32917.dasm - System.IO.Pipes.Tests.Perf_PipeTest+<ReadWriteAsync>d__8:MoveNext():this (Tier1)
42 (3.51 % of base) : 30608.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsyncWithCancellationToken>d__9:MoveNext():this (Tier1-OSR)
2 (3.28 % of base) : 8415.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
4 (3.10 % of base) : 48453.dasm - System.Xml.XmlReader:MoveToContent():int:this (Tier1)
49 (3.09 % of base) : 51455.dasm - System.IO.Tests.Perf_RandomAccess+<WriteAsync>d__17:MoveNext():this (Tier1)
41 (2.92 % of base) : 16138.dasm - System.IO.Tests.Perf_RandomAccess+<ReadAsync>d__16:MoveNext():this (Tier1)
2 (2.90 % of base) : 17634.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (Tier1)
7 (2.88 % of base) : 34417.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier1)
42 (2.77 % of base) : 15610.dasm - System.IO.Tests.Perf_RandomAccess_NoBuffering+<WriteGatherAsync>d__16:MoveNext():this (Tier1)
42 (2.34 % of base) : 35054.dasm - System.IO.Tests.Perf_RandomAccess+<WriteGatherAsync>d__22:MoveNext():this (Tier1)
18 (2.32 % of base) : 30264.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier1)
31 (2.29 % of base) : 47784.dasm - System.IO.Tests.Perf_RandomAccess_NoBuffering+<ReadScatterAsync>d__15:MoveNext():this (Tier1)
69 (2.04 % of base) : 17578.dasm - System.IO.File+<WriteToFileAsync>d__110:MoveNext():this (Tier1)
Top method improvements (percentages):
-457 (-33.43 % of base) : 25130.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-147 (-15.91 % of base) : 33238.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-50 (-6.39 % of base) : 46985.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
-16 (-5.35 % of base) : 3486.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
-14 (-3.43 % of base) : 33857.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
-8 (-3.07 % of base) : 48392.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier1)
-14 (-2.89 % of base) : 48375.dasm - System.Reflection.RuntimeAssembly:GetType(System.String,ubyte,ubyte):System.Type:this (Tier1)
-42 (-2.87 % of base) : 30263.dasm - AssignRect:first_assignments(int[,],short[,]):int (Tier1)
-6 (-2.62 % of base) : 3398.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
-4 (-2.56 % of base) : 9764.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-3 (-1.91 % of base) : 3036.dasm - System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
-25 (-1.89 % of base) : 48124.dasm - System.IO.FileSystem:RemoveDirectoryRecursive(System.String,byref,ubyte) (Tier1-OSR)
-65 (-1.88 % of base) : 33770.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
-18 (-1.85 % of base) : 53361.dasm - System.Threading.TimerQueue:FireNextTimers():this (Tier1)
-12 (-1.80 % of base) : 41963.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier1)
-2 (-1.64 % of base) : 46664.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (Tier1)
-2 (-1.64 % of base) : 2607.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier1)
-2 (-1.64 % of base) : 26198.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-1 (-1.61 % of base) : 9714.dasm - System.IO.PathInternal:EndsWithPeriodOrSpace(System.String):ubyte (Tier1)
-16 (-1.57 % of base) : 42018.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetRuntimeMember(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],byref,Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.CSharp.Symbol (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 392866349 (overridden on cmd)
Total bytes of diff: 392805544 (overridden on cmd)
Total bytes of delta: -60805 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
291 : 480908.dasm (8.47 % of base)
200 : 366317.dasm (5.42 % of base)
132 : 506561.dasm (6.96 % of base)
122 : 370834.dasm (3.29 % of base)
104 : 463765.dasm (0.96 % of base)
87 : 198578.dasm (6.10 % of base)
78 : 475561.dasm (1.51 % of base)
64 : 370873.dasm (3.55 % of base)
62 : 476097.dasm (3.93 % of base)
61 : 366879.dasm (3.33 % of base)
61 : 464425.dasm (2.05 % of base)
59 : 572520.dasm (1.52 % of base)
58 : 368839.dasm (2.01 % of base)
58 : 375310.dasm (0.88 % of base)
57 : 475611.dasm (1.91 % of base)
52 : 227920.dasm (4.49 % of base)
48 : 246948.dasm (2.71 % of base)
48 : 360159.dasm (2.71 % of base)
48 : 234128.dasm (2.71 % of base)
48 : 268480.dasm (2.71 % of base)
Top file improvements (bytes):
-511 : 230925.dasm (-37.06 % of base)
-266 : 372272.dasm (-3.98 % of base)
-252 : 228079.dasm (-34.19 % of base)
-252 : 228064.dasm (-34.19 % of base)
-228 : 369914.dasm (-3.42 % of base)
-153 : 277430.dasm (-21.49 % of base)
-153 : 513431.dasm (-21.52 % of base)
-146 : 281078.dasm (-36.68 % of base)
-115 : 367314.dasm (-3.98 % of base)
-101 : 371253.dasm (-3.64 % of base)
-90 : 558135.dasm (-1.29 % of base)
-86 : 264484.dasm (-1.86 % of base)
-86 : 271960.dasm (-1.86 % of base)
-85 : 286810.dasm (-1.84 % of base)
-85 : 481364.dasm (-4.20 % of base)
-84 : 369132.dasm (-7.10 % of base)
-83 : 370805.dasm (-4.65 % of base)
-82 : 337063.dasm (-2.10 % of base)
-82 : 336994.dasm (-2.10 % of base)
-82 : 560074.dasm (-2.10 % of base)
73 total files with Code Size differences (34 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
291 (8.47 % of base) : 480908.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
200 (5.42 % of base) : 366317.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
132 (6.96 % of base) : 506561.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
122 (3.29 % of base) : 370834.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,byref):ubyte:this (Tier1)
104 (0.96 % of base) : 463765.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
87 (6.10 % of base) : 198578.dasm - System.Reflection.TypeNameParser:GetType(System.String,System.Func`2[System.Reflection.AssemblyName,System.Reflection.Assembly],System.Func`4[System.Reflection.Assembly,System.String,ubyte,System.Type],System.Reflection.Assembly,ubyte,ubyte,ubyte):System.Type (Instrumented Tier1)
78 (1.51 % of base) : 475561.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
64 (3.55 % of base) : 370873.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,byref):ubyte:this (Tier1)
62 (3.93 % of base) : 476097.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
61 (3.33 % of base) : 366879.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,byref):ubyte:this (Tier1)
61 (2.05 % of base) : 464425.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
59 (1.52 % of base) : 572520.dasm - Internal.IL.Stubs.UnsafeIntrinsics:EmitIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (FullOpts)
58 (2.01 % of base) : 368839.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+RuntimeDeterminedTypeKey,byref):ubyte:this (Tier1)
58 (0.88 % of base) : 375310.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1)
57 (1.91 % of base) : 475611.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
52 (4.49 % of base) : 227920.dasm - Huffman:Run():double:this (Tier1)
48 (2.71 % of base) : 246948.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
48 (2.71 % of base) : 360159.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
48 (2.71 % of base) : 234128.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
48 (2.71 % of base) : 268480.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
Top method improvements (bytes):
-511 (-37.06 % of base) : 230925.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-266 (-3.98 % of base) : 372272.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.InliningInfoNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
-252 (-34.19 % of base) : 228079.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-252 (-34.19 % of base) : 228064.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-228 (-3.42 % of base) : 369914.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.InliningInfoNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier1-OSR)
-153 (-21.52 % of base) : 513431.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-153 (-21.49 % of base) : 277430.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (Tier0-FullOpts)
-146 (-36.68 % of base) : 281078.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
-115 (-3.98 % of base) : 367314.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
-101 (-3.64 % of base) : 371253.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
-90 (-1.29 % of base) : 558135.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
-86 (-1.86 % of base) : 264484.dasm - TestLibrary.OutOfProcessTest:RunOutOfProcessTest(System.String) (Tier1)
-86 (-1.86 % of base) : 271960.dasm - TestLibrary.OutOfProcessTest:RunOutOfProcessTest(System.String) (Tier1)
-85 (-4.20 % of base) : 481364.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartAttribute(System.String,System.String,System.String):this (FullOpts)
-85 (-1.84 % of base) : 286810.dasm - TestLibrary.OutOfProcessTest:RunOutOfProcessTest(System.String) (Tier1)
-84 (-7.10 % of base) : 369132.dasm - System.Threading.Tasks.Task:Run(System.Func`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):System.Threading.Tasks.Task (Tier1)
-83 (-4.65 % of base) : 370805.dasm - Internal.TypeSystem.MetadataVirtualMethodAlgorithm:FindMatchingVirtualMethodOnTypeByNameAndSig(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.DefType,ubyte,System.Func`3[Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc,ubyte]):Internal.TypeSystem.MethodDesc (Tier1)
-82 (-2.10 % of base) : 560074.dasm - StrSwitchFinalTest:Run():int:this (FullOpts)
-82 (-2.10 % of base) : 337063.dasm - StrSwitchFinalTest:Run():int:this (Tier0-FullOpts)
-82 (-2.10 % of base) : 336994.dasm - StrSwitchFinalTest:Run():int:this (Tier0-FullOpts)
Top method regressions (percentages):
39 (25.83 % of base) : 385490.dasm - testout1:Sub_Funclet_221():int (FullOpts)
33 (21.85 % of base) : 385907.dasm - testout1:Sub_Funclet_221():int (FullOpts)
12 (14.12 % of base) : 281299.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
30 (13.70 % of base) : 288048.dasm - testout1:Test1(int):int (Tier1-OSR)
30 (13.70 % of base) : 288050.dasm - testout1:Test2(int):int (Tier1-OSR)
21 (12.43 % of base) : 385380.dasm - testout1:Sub_Funclet_107():int (FullOpts)
21 (12.43 % of base) : 385418.dasm - testout1:Sub_Funclet_145():int (FullOpts)
21 (12.43 % of base) : 385492.dasm - testout1:Sub_Funclet_223():int (FullOpts)
45 (9.93 % of base) : 374199.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
15 (9.43 % of base) : 385487.dasm - testout1:Sub_Funclet_218():int (FullOpts)
15 (9.43 % of base) : 385904.dasm - testout1:Sub_Funclet_218():int (FullOpts)
16 (8.89 % of base) : 385871.dasm - testout1:Sub_Funclet_182():int (FullOpts)
16 (8.89 % of base) : 385454.dasm - testout1:Sub_Funclet_182():int (FullOpts)
15 (8.88 % of base) : 385797.dasm - testout1:Sub_Funclet_107():int (FullOpts)
15 (8.88 % of base) : 385835.dasm - testout1:Sub_Funclet_145():int (FullOpts)
15 (8.88 % of base) : 385909.dasm - testout1:Sub_Funclet_223():int (FullOpts)
291 (8.47 % of base) : 480908.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
13 (8.13 % of base) : 385417.dasm - testout1:Sub_Funclet_144():int (FullOpts)
13 (8.13 % of base) : 385834.dasm - testout1:Sub_Funclet_144():int (FullOpts)
10 (7.81 % of base) : 198883.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
Top method improvements (percentages):
-511 (-37.06 % of base) : 230925.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-146 (-36.68 % of base) : 281078.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
-252 (-34.19 % of base) : 228079.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-252 (-34.19 % of base) : 228064.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-153 (-21.52 % of base) : 513431.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-153 (-21.49 % of base) : 277430.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (Tier0-FullOpts)
-20 (-12.12 % of base) : 386409.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-20 (-12.12 % of base) : 386825.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-56 (-9.09 % of base) : 394038.dasm - Program:TestEntryPoint():int (FullOpts)
-2 (-9.09 % of base) : 357237.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-2 (-9.09 % of base) : 372484.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-2 (-9.09 % of base) : 272585.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
-36 (-8.87 % of base) : 193785.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object,System.Object) (FullOpts)
-14 (-8.09 % of base) : 192536.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Action`1[ubyte],System.Object) (FullOpts)
-2 (-8.00 % of base) : 366085.dasm - System.Reflection.Metadata.SignatureHeader:get_Kind():ubyte:this (Tier1)
-2 (-8.00 % of base) : 370763.dasm - System.Reflection.Metadata.SignatureHeader:get_Kind():ubyte:this (Tier1)
-20 (-7.94 % of base) : 236828.dasm - BinderTracingTests.BinderTracingTest+CustomALC:Load(System.Reflection.AssemblyName):System.Reflection.Assembly:this (Tier1)
-14 (-7.87 % of base) : 234251.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-56 (-7.80 % of base) : 215616.dasm - System.IO.Strategies.BufferedFileStreamStrategy:WriteSpan(System.ReadOnlySpan`1[ubyte],System.ArraySegment`1[ubyte]):this (Tier1)
-56 (-7.80 % of base) : 374175.dasm - System.IO.Strategies.BufferedFileStreamStrategy:WriteSpan(System.ReadOnlySpan`1[ubyte],System.ArraySegment`1[ubyte]):this (Tier1)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 39442575 (overridden on cmd)
Total bytes of diff: 39441474 (overridden on cmd)
Total bytes of delta: -1101 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
161 : 103294.dasm (0.52 % of base)
138 : 26272.dasm (4.35 % of base)
137 : 171233.dasm (1.46 % of base)
129 : 25842.dasm (9.61 % of base)
127 : 25311.dasm (4.31 % of base)
126 : 26276.dasm (4.57 % of base)
120 : 25896.dasm (4.46 % of base)
92 : 21587.dasm (7.91 % of base)
90 : 25303.dasm (4.45 % of base)
87 : 25309.dasm (9.08 % of base)
87 : 25942.dasm (5.76 % of base)
84 : 25894.dasm (4.78 % of base)
80 : 25849.dasm (9.38 % of base)
79 : 26266.dasm (3.83 % of base)
76 : 26013.dasm (9.46 % of base)
72 : 26270.dasm (5.78 % of base)
69 : 25539.dasm (2.16 % of base)
63 : 25526.dasm (4.98 % of base)
61 : 25520.dasm (6.12 % of base)
61 : 194478.dasm (2.30 % of base)
Top file improvements (bytes):
-179 : 148343.dasm (-4.82 % of base)
-159 : 36791.dasm (-8.26 % of base)
-155 : 168647.dasm (-2.87 % of base)
-122 : 131121.dasm (-3.11 % of base)
-120 : 192153.dasm (-2.99 % of base)
-116 : 62164.dasm (-4.19 % of base)
-92 : 96830.dasm (-4.91 % of base)
-87 : 35353.dasm (-3.93 % of base)
-71 : 134361.dasm (-3.13 % of base)
-70 : 110385.dasm (-1.15 % of base)
-67 : 61854.dasm (-5.74 % of base)
-67 : 154155.dasm (-3.24 % of base)
-63 : 122491.dasm (-3.04 % of base)
-63 : 116961.dasm (-3.19 % of base)
-57 : 85202.dasm (-3.71 % of base)
-56 : 192154.dasm (-7.50 % of base)
-52 : 232000.dasm (-3.64 % of base)
-46 : 64080.dasm (-3.97 % of base)
-45 : 121131.dasm (-1.57 % of base)
-44 : 209473.dasm (-6.04 % of base)
62 total files with Code Size differences (34 improved, 28 regressed), 20 unchanged.
Top method regressions (bytes):
161 (0.52 % of base) : 103294.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
138 (4.35 % of base) : 26272.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (FullOpts)
137 (1.46 % of base) : 171233.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
129 (9.61 % of base) : 25842.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
127 (4.31 % of base) : 25311.dasm - System.IO.BufferedStream+<ReadFromUnderlyingStreamAsync>d__48:MoveNext():this (FullOpts)
126 (4.57 % of base) : 26276.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (FullOpts)
120 (4.46 % of base) : 25896.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (FullOpts)
92 (7.91 % of base) : 21587.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
90 (4.45 % of base) : 25303.dasm - System.IO.BufferedStream+<CopyToAsyncCore>d__68:MoveNext():this (FullOpts)
87 (9.08 % of base) : 25309.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
87 (5.76 % of base) : 25942.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
84 (4.78 % of base) : 25894.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
80 (9.38 % of base) : 25849.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
79 (3.83 % of base) : 26266.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (FullOpts)
76 (9.46 % of base) : 26013.dasm - System.IO.TextReader+<ReadBlockAsyncInternal>d__23:MoveNext():this (FullOpts)
72 (5.78 % of base) : 26270.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<FlushAsyncInternal>d__55:MoveNext():this (FullOpts)
69 (2.16 % of base) : 25539.dasm - System.IO.File+<WriteToFileAsync>d__110:MoveNext():this (FullOpts)
63 (4.98 % of base) : 25526.dasm - System.IO.File+<InternalReadAllTextAsync>d__88:MoveNext():this (FullOpts)
61 (2.30 % of base) : 194478.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this (FullOpts)
61 (6.12 % of base) : 25520.dasm - System.IO.File+<InternalReadAllBytesAsync>d__92:MoveNext():this (FullOpts)
Top method improvements (bytes):
-179 (-4.82 % of base) : 148343.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
-159 (-8.26 % of base) : 36791.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-155 (-2.87 % of base) : 168647.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
-122 (-3.11 % of base) : 131121.dasm - System.Xml.XmlTextReaderImpl:ParseXmlDeclaration(ubyte):ubyte:this (FullOpts)
-120 (-2.99 % of base) : 192153.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMostSpecific(System.Reflection.MethodBase,System.Reflection.MethodBase,int[],System.Object[],ubyte,int,int,System.Object[]):int:this (FullOpts)
-116 (-4.19 % of base) : 62164.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-92 (-4.91 % of base) : 96830.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindQueryOperatorCall(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.String,Microsoft.CodeAnalysis.VisualBasic.BoundMethodGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.Text.TextSpan,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-87 (-3.93 % of base) : 35353.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-71 (-3.13 % of base) : 134361.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:GenerateMembersElement(System.Object,System.Xml.Serialization.XmlMembersMapping):this (FullOpts)
-70 (-1.15 % of base) : 110385.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
-67 (-5.74 % of base) : 61854.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-67 (-3.24 % of base) : 154155.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this (FullOpts)
-63 (-3.19 % of base) : 116961.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-63 (-3.04 % of base) : 122491.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)
-57 (-3.71 % of base) : 85202.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:MergeEquivalentTypeArguments(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,short,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):ubyte (FullOpts)
-56 (-7.50 % of base) : 192154.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-52 (-3.64 % of base) : 232000.dasm - System.IO.Ports.SerialStream:.ctor(System.String,int,int,int,int,int,int,int,ubyte,ubyte,ubyte,ubyte):this (FullOpts)
-46 (-3.97 % of base) : 64080.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AnalyzeArguments(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.ArgumentAnalysisResult (FullOpts)
-45 (-1.57 % of base) : 121131.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
-44 (-6.04 % of base) : 209473.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
Top method regressions (percentages):
129 (9.61 % of base) : 25842.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
76 (9.46 % of base) : 26013.dasm - System.IO.TextReader+<ReadBlockAsyncInternal>d__23:MoveNext():this (FullOpts)
80 (9.38 % of base) : 25849.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
87 (9.08 % of base) : 25309.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
21 (7.92 % of base) : 192478.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
92 (7.91 % of base) : 21587.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
31 (6.68 % of base) : 206347.dasm - System.Configuration.ClientConfigurationHost:OpenExeConfiguration(System.Configuration.ConfigurationFileMap,ubyte,int,System.String):System.Configuration.Configuration (FullOpts)
31 (6.68 % of base) : 187482.dasm - System.Configuration.ClientConfigurationHost:OpenExeConfiguration(System.Configuration.ConfigurationFileMap,ubyte,int,System.String):System.Configuration.Configuration (FullOpts)
4 (6.45 % of base) : 68706.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
61 (6.12 % of base) : 25520.dasm - System.IO.File+<InternalReadAllBytesAsync>d__92:MoveNext():this (FullOpts)
13 (6.05 % of base) : 159103.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder:<MarkReachableBlocks>g__dispatchExceptionThroughCatches|36_4(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowRegion,int,byref) (FullOpts)
13 (6.05 % of base) : 141447.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder:<MarkReachableBlocks>g__dispatchExceptionThroughCatches|36_4(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowRegion,int,byref) (FullOpts)
48 (5.83 % of base) : 26145.dasm - System.IO.TextWriter+<<WriteLineAsync>g__WriteLineAsyncCore|66_0>d:MoveNext():this (FullOpts)
72 (5.78 % of base) : 26270.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<FlushAsyncInternal>d__55:MoveNext():this (FullOpts)
87 (5.76 % of base) : 25942.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
63 (4.98 % of base) : 25526.dasm - System.IO.File+<InternalReadAllTextAsync>d__88:MoveNext():this (FullOpts)
84 (4.78 % of base) : 25894.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
126 (4.57 % of base) : 26276.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (FullOpts)
16 (4.52 % of base) : 132059.dasm - System.Xml.Xsl.XsltOld.CallTemplateAction:CompileContent(System.Xml.Xsl.XsltOld.Compiler):this (FullOpts)
120 (4.46 % of base) : 25896.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (FullOpts)
Top method improvements (percentages):
-159 (-8.26 % of base) : 36791.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
-39 (-7.82 % of base) : 135159.dasm - System.Xml.XmlSqlBinaryReader:AddQName():this (FullOpts)
-56 (-7.50 % of base) : 192154.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
-35 (-7.43 % of base) : 85827.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.BitVector,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]):ubyte (FullOpts)
-3 (-6.82 % of base) : 134109.dasm - System.Xml.Schema.Preprocessor:GetParentSchema(System.Xml.Schema.XmlSchemaObject):System.Xml.Schema.XmlSchema (FullOpts)
-32 (-6.63 % of base) : 24827.dasm - System.Reflection.Emit.RuntimeModuleBuilder:DefinePInvokeMethodCore(System.String,System.String,System.String,int,int,System.Type,System.Type[],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
-18 (-6.12 % of base) : 16939.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
-44 (-6.04 % of base) : 209473.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-27 (-5.77 % of base) : 92365.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Blender+Cursor:MoveToNextSibling():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Blender+Cursor:this (FullOpts)
-67 (-5.74 % of base) : 61854.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-23 (-5.04 % of base) : 139256.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-23 (-5.04 % of base) : 156976.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-40 (-4.95 % of base) : 217036.dasm - System.Diagnostics.PerformanceCounterCategory:CheckValidCounterLayout(System.Diagnostics.CounterCreationDataCollection) (FullOpts)
-92 (-4.91 % of base) : 96830.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindQueryOperatorCall(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.String,Microsoft.CodeAnalysis.VisualBasic.BoundMethodGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.Text.TextSpan,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-18 (-4.89 % of base) : 15338.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-179 (-4.82 % of base) : 148343.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[System.__Canon,System.__Canon]],int):this (FullOpts)
-16 (-4.61 % of base) : 186202.dasm - System.Runtime.CompilerServices.RuleCache`1[System.__Canon]:MoveRule(System.__Canon,int):this (FullOpts)
-39 (-4.52 % of base) : 37262.dasm - System.Globalization.CultureData:InitIcuCultureDataCore():ubyte:this (FullOpts)
-21 (-4.43 % of base) : 157261.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-21 (-4.43 % of base) : 139553.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 61196926 (overridden on cmd)
Total bytes of diff: 61193876 (overridden on cmd)
Total bytes of delta: -3050 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
189 : 101483.dasm (4.76 % of base)
170 : 105616.dasm (7.33 % of base)
148 : 108721.dasm (0.42 % of base)
144 : 228482.dasm (5.85 % of base)
135 : 115882.dasm (1.50 % of base)
122 : 293803.dasm (6.39 % of base)
117 : 242762.dasm (6.15 % of base)
115 : 132866.dasm (4.94 % of base)
107 : 246994.dasm (4.47 % of base)
104 : 147702.dasm (0.96 % of base)
98 : 132844.dasm (3.67 % of base)
93 : 135192.dasm (1.95 % of base)
93 : 229368.dasm (1.14 % of base)
91 : 167598.dasm (0.32 % of base)
90 : 297207.dasm (6.59 % of base)
88 : 36973.dasm (1.68 % of base)
88 : 124542.dasm (1.43 % of base)
86 : 154452.dasm (7.05 % of base)
86 : 194301.dasm (7.06 % of base)
85 : 297205.dasm (6.03 % of base)
Top file improvements (bytes):
-165 : 153592.dasm (-4.55 % of base)
-165 : 153599.dasm (-4.37 % of base)
-164 : 167600.dasm (-3.63 % of base)
-153 : 15750.dasm (-21.55 % of base)
-140 : 123751.dasm (-1.75 % of base)
-127 : 128655.dasm (-2.60 % of base)
-108 : 60447.dasm (-2.85 % of base)
-107 : 130247.dasm (-3.36 % of base)
-107 : 299713.dasm (-3.04 % of base)
-99 : 234517.dasm (-2.63 % of base)
-96 : 128656.dasm (-2.56 % of base)
-90 : 173459.dasm (-1.29 % of base)
-89 : 298451.dasm (-2.68 % of base)
-86 : 127599.dasm (-2.46 % of base)
-85 : 235644.dasm (-4.20 % of base)
-82 : 101604.dasm (-3.07 % of base)
-82 : 128657.dasm (-1.73 % of base)
-79 : 97773.dasm (-2.45 % of base)
-78 : 99187.dasm (-4.27 % of base)
-77 : 60995.dasm (-2.09 % of base)
73 total files with Code Size differences (39 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
189 (4.76 % of base) : 101483.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindArgumentsAndNames(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax],byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
170 (7.33 % of base) : 105616.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
148 (0.42 % of base) : 108721.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
144 (5.85 % of base) : 228482.dasm - System.Net.Http.MultipartContent+<SerializeToStreamAsyncCore>d__24:MoveNext():this (FullOpts)
135 (1.50 % of base) : 115882.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
122 (6.39 % of base) : 293803.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
117 (6.15 % of base) : 242762.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
115 (4.94 % of base) : 132866.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
107 (4.47 % of base) : 246994.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
104 (0.96 % of base) : 147702.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
98 (3.67 % of base) : 132844.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteDocTypeAsync>d__98:MoveNext():this (FullOpts)
93 (1.14 % of base) : 229368.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
93 (1.95 % of base) : 135192.dasm - System.Xml.XmlTextReaderImpl+<SkipDtdAsync>d__568:MoveNext():this (FullOpts)
91 (0.32 % of base) : 167598.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
90 (6.59 % of base) : 297207.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__44:MoveNext():this (FullOpts)
88 (1.43 % of base) : 124542.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
88 (1.68 % of base) : 36973.dasm - System.Threading.Tasks.Dataflow.TransformManyBlock`2+<StoreOutputItemsNonReorderedWithIterationAsync>d__48[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)
86 (7.05 % of base) : 154452.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
86 (7.06 % of base) : 194301.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
85 (6.03 % of base) : 297205.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__43:MoveNext():this (FullOpts)
Top method improvements (bytes):
-165 (-4.55 % of base) : 153592.dasm - Microsoft.CodeAnalysis.SourceOutputNode`1[System.__Canon]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Diagnostic]]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Diagnostic]]]:this (FullOpts)
-165 (-4.37 % of base) : 153599.dasm - Microsoft.CodeAnalysis.SourceOutputNode`1[ubyte]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Diagnostic]]],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.ValueTuple`2[System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Diagnostic]]]:this (FullOpts)
-164 (-3.63 % of base) : 167600.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMostSpecific(System.Reflection.MethodBase,System.Reflection.MethodBase,int[],System.Object[],ubyte,int,int,System.Object[]):int:this (FullOpts)
-153 (-21.55 % of base) : 15750.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-140 (-1.75 % of base) : 123751.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:LateCallOrGet(Microsoft.CodeAnalysis.VisualBasic.BoundLateMemberAccess,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-127 (-2.60 % of base) : 128655.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
-108 (-2.85 % of base) : 60447.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-107 (-3.36 % of base) : 130247.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)
-107 (-3.04 % of base) : 299713.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-99 (-2.63 % of base) : 234517.dasm - System.Runtime.Serialization.SchemaExporter:ExportGenericInfo(System.Type,System.String,System.String):System.Xml.XmlElement:this (FullOpts)
-96 (-2.56 % of base) : 128656.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
-90 (-1.29 % of base) : 173459.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
-89 (-2.68 % of base) : 298451.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
-86 (-2.46 % of base) : 127599.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeToStringMethodSymbol:GetBoundMethodBody(Microsoft.CodeAnalysis.VisualBasic.TypeCompilationState,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.VisualBasic.BoundBlock:this (FullOpts)
-85 (-4.20 % of base) : 235644.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartAttribute(System.String,System.String,System.String):this (FullOpts)
-82 (-3.07 % of base) : 101604.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindQueryOperatorCall(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.String,Microsoft.CodeAnalysis.VisualBasic.BoundMethodGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.Text.TextSpan,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-82 (-1.73 % of base) : 128657.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
-79 (-2.45 % of base) : 97773.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
-78 (-4.27 % of base) : 99187.dasm - System.Speech.Internal.Synthesis.ConvertTextFrag:ToSapi(System.Collections.Generic.List`1[System.Speech.Synthesis.TtsEngine.TextFragment],byref):ubyte (FullOpts)
-77 (-2.09 % of base) : 60995.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDeconstructSubpatterns(Microsoft.CodeAnalysis.CSharp.Syntax.PositionalPatternClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundDeconstructValuePlaceholder],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundPositionalSubpattern],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this (FullOpts)
Top method regressions (percentages):
65 (9.41 % of base) : 280381.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
16 (8.21 % of base) : 242968.dasm - System.Security.Cryptography.ECDsa:SignData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,int):int:this (FullOpts)
16 (7.37 % of base) : 292320.dasm - System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
170 (7.33 % of base) : 105616.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
18 (7.29 % of base) : 167947.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
12 (7.14 % of base) : 183022.dasm - Microsoft.Build.Shared.CollectionHelpers:RemoveNulls[ubyte](System.Collections.Generic.List`1[ubyte]):System.Collections.Generic.List`1[ubyte] (FullOpts)
86 (7.06 % of base) : 194301.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
86 (7.05 % of base) : 154452.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
83 (6.96 % of base) : 228861.dasm - System.Net.Http.DecompressionHandler+DeflateDecompressedContent+ZLibOrDeflateStream+PeekFirstByteReadStream+<CopyToAsync>d__14:MoveNext():this (FullOpts)
90 (6.59 % of base) : 297207.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__44:MoveNext():this (FullOpts)
69 (6.52 % of base) : 120274.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax:this (FullOpts)
22 (6.41 % of base) : 140414.dasm - System.Xml.Xsl.Xslt.QilGenerator:CompileSingleKey(System.Collections.Generic.List`1[System.Xml.Xsl.Xslt.Key],System.Xml.Xsl.Qil.QilIterator,System.Xml.Xsl.Qil.QilIterator):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
122 (6.39 % of base) : 293803.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
20 (6.37 % of base) : 291873.dasm - System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)
5 (6.33 % of base) : 69524.dasm - Microsoft.CodeAnalysis.CSharp.ObjectDisplay:ContainsNewLine(System.String):ubyte (FullOpts)
19 (6.31 % of base) : 275861.dasm - System.Diagnostics.ActivityLink:Equals(System.Diagnostics.ActivityLink):ubyte:this (FullOpts)
11 (6.25 % of base) : 270820.dasm - Microsoft.CSharp.CSharpModifierAttributeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
67 (6.15 % of base) : 228476.dasm - System.Net.Http.MultipartContent+ContentReadStream+<DisposeAsync>d__7:MoveNext():this (FullOpts)
117 (6.15 % of base) : 242762.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
23 (6.13 % of base) : 298801.dasm - System.Reflection.Emit.ModuleBuilderImpl:DefinePInvokeMethodCore(System.String,System.String,System.String,int,int,System.Type,System.Type[],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
Top method improvements (percentages):
-153 (-21.55 % of base) : 15750.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-30 (-10.14 % of base) : 242831.dasm - System.Security.Cryptography.DSA:TrySignData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (FullOpts)
-28 (-9.18 % of base) : 164436.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerFileReference+Extensions`1[System.__Canon]:CheckAssemblyReferencesNewerCompiler(System.Reflection.Assembly):ubyte:this (FullOpts)
-28 (-9.18 % of base) : 204251.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerFileReference+Extensions`1[System.__Canon]:CheckAssemblyReferencesNewerCompiler(System.Reflection.Assembly):ubyte:this (FullOpts)
-30 (-8.88 % of base) : 279754.dasm - System.Formats.Asn1.AsnDecoder:TryReadCharacterStringBytes(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,System.Formats.Asn1.Asn1Tag,byref,byref):ubyte (FullOpts)
-51 (-8.03 % of base) : 132342.dasm - System.Xml.XmlSqlBinaryReader:AddQName():this (FullOpts)
-51 (-7.85 % of base) : 209164.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[ubyte]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[ubyte],System.Collections.Immutable.ImmutableList`1+Builder[ubyte],int,int,ubyte):this (FullOpts)
-62 (-7.81 % of base) : 209151.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
-35 (-7.31 % of base) : 88102.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.BitVector,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]):ubyte (FullOpts)
-21 (-7.29 % of base) : 266513.dasm - Microsoft.Extensions.Primitives.StringSegment:TrimEnd():Microsoft.Extensions.Primitives.StringSegment:this (FullOpts)
-34 (-7.17 % of base) : 168700.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTime():System.Nullable`1[System.DateTime]:this (FullOpts)
-28 (-7.12 % of base) : 124516.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ReportOverloadResolutionFailedOrLateBound(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],int,ubyte,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
-49 (-7.10 % of base) : 296644.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
-55 (-7.06 % of base) : 6439.dasm - Microsoft.FSharp.Quotations.DerivedPatternsModule:DecimalPattern(Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Core.FSharpOption`1[System.Decimal] (FullOpts)
-52 (-6.88 % of base) : 59646.dasm - System.Security.Cryptography.Pkcs.Asn1.RecipientInfoAsn:DecodeCore(byref,System.ReadOnlyMemory`1[ubyte],byref) (FullOpts)
-4 (-6.78 % of base) : 23333.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThan[double](double,double,System.String) (FullOpts)
-24 (-6.67 % of base) : 275863.dasm - System.Diagnostics.ActivityLink:op_Inequality(System.Diagnostics.ActivityLink,System.Diagnostics.ActivityLink):ubyte (FullOpts)
-45 (-6.67 % of base) : 135598.dasm - System.Xml.XmlWellFormedWriter+AttributeValueCache:WriteEntityRef(System.String):this (FullOpts)
-35 (-6.45 % of base) : 88100.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckTypeConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref):ubyte (FullOpts)
-17 (-6.25 % of base) : 127320.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+MemberLookup:IsDerivedInterface(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,byref):ubyte (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 279034285 (overridden on cmd)
Total bytes of diff: 278980371 (overridden on cmd)
Total bytes of delta: -53914 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
739 : 457288.dasm (5.87 % of base)
709 : 80288.dasm (5.53 % of base)
484 : 622691.dasm (4.06 % of base)
404 : 353653.dasm (3.33 % of base)
392 : 328314.dasm (2.86 % of base)
334 : 179637.dasm (2.72 % of base)
233 : 91920.dasm (3.18 % of base)
214 : 413170.dasm (2.07 % of base)
209 : 541114.dasm (5.48 % of base)
175 : 657302.dasm (1.90 % of base)
168 : 415893.dasm (3.62 % of base)
160 : 91062.dasm (3.29 % of base)
133 : 173094.dasm (2.43 % of base)
130 : 590582.dasm (3.90 % of base)
130 : 621320.dasm (2.45 % of base)
127 : 443384.dasm (0.85 % of base)
126 : 631015.dasm (1.75 % of base)
126 : 52532.dasm (2.83 % of base)
125 : 90230.dasm (5.12 % of base)
124 : 173664.dasm (4.82 % of base)
Top file improvements (bytes):
-1011 : 168852.dasm (-41.52 % of base)
-1010 : 619561.dasm (-41.29 % of base)
-914 : 628922.dasm (-7.57 % of base)
-878 : 169381.dasm (-7.53 % of base)
-608 : 57756.dasm (-3.90 % of base)
-470 : 175183.dasm (-5.50 % of base)
-427 : 57906.dasm (-2.44 % of base)
-409 : 377761.dasm (-2.77 % of base)
-364 : 65375.dasm (-3.44 % of base)
-350 : 620052.dasm (-10.25 % of base)
-324 : 310007.dasm (-3.56 % of base)
-295 : 457319.dasm (-10.25 % of base)
-294 : 109012.dasm (-10.26 % of base)
-284 : 90689.dasm (-8.06 % of base)
-282 : 196358.dasm (-9.88 % of base)
-282 : 341866.dasm (-9.88 % of base)
-282 : 384843.dasm (-9.88 % of base)
-282 : 659555.dasm (-9.88 % of base)
-282 : 543859.dasm (-9.88 % of base)
-282 : 84006.dasm (-9.88 % of base)
98 total files with Code Size differences (58 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
739 (5.87 % of base) : 457288.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
709 (5.53 % of base) : 80288.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
484 (4.06 % of base) : 622691.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier1-OSR)
404 (3.33 % of base) : 353653.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
392 (2.86 % of base) : 328314.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
334 (2.72 % of base) : 179637.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
233 (3.18 % of base) : 91920.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,int,int):ubyte (Tier1)
214 (2.07 % of base) : 413170.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteMemberElementsIf(System.Xml.Serialization.XmlSerializationReaderILGen+Member[],System.Xml.Serialization.XmlSerializationReaderILGen+Member,System.String):this (Tier1)
209 (5.48 % of base) : 541114.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier1)
175 (1.90 % of base) : 657302.dasm - Microsoft.CodeAnalysis.Formatting.AbstractSyntaxFormatting:GetFormattingResult(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Text.TextSpan],Microsoft.CodeAnalysis.Formatting.SyntaxFormattingOptions,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Formatting.Rules.AbstractFormattingRule],System.Threading.CancellationToken):Microsoft.CodeAnalysis.Formatting.IFormattingResult:this (Tier1)
168 (3.62 % of base) : 415893.dasm - System.Xml.Serialization.XmlSerializationReader:ReadSerializable(System.Xml.Serialization.IXmlSerializable,ubyte):System.Xml.Serialization.IXmlSerializable:this (Tier1)
160 (3.29 % of base) : 91062.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
133 (2.43 % of base) : 173094.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseVariableDeclarator(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,int,ubyte,ubyte,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],byref,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDeclaratorSyntax:this (Tier1)
130 (2.45 % of base) : 621320.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitLocal(Microsoft.CodeAnalysis.CSharp.BoundLocal):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
130 (3.90 % of base) : 590582.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (Tier1)
127 (0.85 % of base) : 443384.dasm - System.Xml.Tests.TCAttributeAccess:TestAttributeAccess2():int:this (Tier1)
126 (1.75 % of base) : 631015.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetInvocationEscapeWithUpdatedRules(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[int],uint,ubyte):uint:this (Tier1)
126 (2.83 % of base) : 52532.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
125 (5.12 % of base) : 90230.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (Tier1)
124 (4.82 % of base) : 173664.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:Free():this (Tier1)
Top method improvements (bytes):
-1011 (-41.52 % of base) : 168852.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ParseAdditionalSources(Microsoft.CodeAnalysis.ISourceGenerator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSyntaxTree]:this (Tier1)
-1010 (-41.29 % of base) : 619561.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ParseAdditionalSources(Microsoft.CodeAnalysis.ISourceGenerator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSyntaxTree]:this (Tier1)
-914 (-7.57 % of base) : 628922.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (Tier1)
-878 (-7.53 % of base) : 169381.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (Tier1)
-608 (-3.90 % of base) : 57756.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier1)
-470 (-5.50 % of base) : 175183.dasm - Microsoft.Cci.MetadataWriter:WriteInstructions(System.Reflection.Metadata.Blob,System.Collections.Immutable.ImmutableArray`1[ubyte],byref,byref):this (Tier1)
-427 (-2.44 % of base) : 57906.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1)
-409 (-2.77 % of base) : 377761.dasm - Systen.Net.Mail.Tests.LoopbackSmtpServer+<HandleConnectionAsync>d__62:MoveNext():this (Tier1)
-364 (-3.44 % of base) : 65375.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeDeconstructInvocationExpression(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Binder+DeconstructionVariable]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-350 (-10.25 % of base) : 620052.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDefaultArgumentsAndParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],byref,byref,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol):this (Tier1)
-324 (-3.56 % of base) : 310007.dasm - System.IO.Tests.VirtualDrive_SymbolicLinks:VirtualDrive_SymbolicLinks_WithIndirection(ubyte,ubyte,ubyte,ubyte,ubyte):this (Tier1)
-295 (-10.25 % of base) : 457319.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-294 (-10.26 % of base) : 109012.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-284 (-8.06 % of base) : 90689.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDefaultArgumentsAndParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],byref,byref,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol):this (Tier1)
-282 (-9.88 % of base) : 196358.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-282 (-9.88 % of base) : 341866.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-282 (-9.88 % of base) : 384843.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-282 (-9.88 % of base) : 659555.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-282 (-9.88 % of base) : 543859.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
-282 (-9.88 % of base) : 84006.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
Top method regressions (percentages):
44 (12.05 % of base) : 125772.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (12.05 % of base) : 127936.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (12.05 % of base) : 258119.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (12.05 % of base) : 297539.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (12.05 % of base) : 327577.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (12.05 % of base) : 377149.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (12.05 % of base) : 380009.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (12.05 % of base) : 408859.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (12.05 % of base) : 457271.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
44 (12.05 % of base) : 664861.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
49 (11.40 % of base) : 202707.dasm - System.Collections.Frozen.FrozenSetInternalBase`2[System.__Canon,System.Collections.Frozen.DefaultFrozenSet`1+GSW[System.__Canon]]:IsSubsetOfSetWithCompatibleComparer(System.Collections.Generic.IReadOnlySet`1[System.__Canon]):ubyte:this (Tier1-OSR)
41 (10.49 % of base) : 301609.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
41 (10.49 % of base) : 388441.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
41 (10.49 % of base) : 667176.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
29 (10.07 % of base) : 432975.dasm - System.Xml.Schema.Preprocessor:GetIncludedSet(System.Xml.Schema.XmlSchema,System.Collections.ArrayList) (Tier1)
30 (9.43 % of base) : 302041.dasm - System.IO.Compression.DeflateStream:ReadAsyncMemory(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
24 (9.27 % of base) : 486054.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (Tier1)
24 (9.27 % of base) : 309971.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (Tier1)
29 (8.95 % of base) : 177430.dasm - System.Reflection.AssemblyNameParser:ParsePKT(System.String,ubyte):ubyte[]:this (Tier1)
47 (8.80 % of base) : 354467.dasm - System.Threading.Tasks.Task:FinishStageTwo():this (Tier1)
Top method improvements (percentages):
-1011 (-41.52 % of base) : 168852.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ParseAdditionalSources(Microsoft.CodeAnalysis.ISourceGenerator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSyntaxTree]:this (Tier1)
-1010 (-41.29 % of base) : 619561.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ParseAdditionalSources(Microsoft.CodeAnalysis.ISourceGenerator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSourceText],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.GeneratedSyntaxTree]:this (Tier1)
-153 (-21.55 % of base) : 288834.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (Tier0-FullOpts)
-49 (-18.28 % of base) : 282825.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
-45 (-15.36 % of base) : 280422.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass,System.Object,System.Object) (FullOpts)
-44 (-14.97 % of base) : 63085.dasm - Roslyn.Utilities.UnicodeCharacterUtilities:IsValidIdentifier(System.String):ubyte (Tier1)
-44 (-14.97 % of base) : 90936.dasm - Roslyn.Utilities.UnicodeCharacterUtilities:IsValidIdentifier(System.String):ubyte (Tier1)
-27 (-13.99 % of base) : 275870.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,System.Object):System.Object (FullOpts)
-27 (-12.80 % of base) : 276008.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.types.type07b.type07b.Parent,int,System.Object):System.Object (FullOpts)
-27 (-12.68 % of base) : 282809.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Collections.Generic.List`1[System.Collections.Generic.List`1[int]],System.Object):System.Object (FullOpts)
-23 (-12.23 % of base) : 280404.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
-23 (-12.23 % of base) : 282408.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
-23 (-12.17 % of base) : 278877.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
-27 (-11.84 % of base) : 275505.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.dlgate.lambda14a.lambda14a.Foo,System.Object,System.Object):System.Object (FullOpts)
-27 (-11.69 % of base) : 280234.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage04d.usage04d.Parent,System.Object,System.Object):System.Object (FullOpts)
-27 (-11.69 % of base) : 276339.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage10a.usage10a.Parent,System.Object,System.Object):System.Object (FullOpts)
-27 (-11.54 % of base) : 273909.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.inheritance.inherit13c.inherit13c.Parent,System.Object,System.Object):System.Object (FullOpts)
-27 (-11.49 % of base) : 274149.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.dlgate.evnt23c.evnt23c.Foo,System.Object,System.Object):System.Object (FullOpts)
-33 (-11.42 % of base) : 274299.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,long):System.Object (FullOpts)
-23 (-11.39 % of base) : 280713.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Nullable`1[ubyte],System.Object):System.Object (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 133435993 (overridden on cmd)
Total bytes of diff: 133424286 (overridden on cmd)
Total bytes of delta: -11707 (-0.01 % of base)
diff is a regression.
relative diff is an improvement.
Top file regressions (bytes):
430 : 296053.dasm (11.76 % of base)
246 : 308381.dasm (6.64 % of base)
163 : 20333.dasm (3.85 % of base)
149 : 309337.dasm (4.70 % of base)
149 : 309365.dasm (4.70 % of base)
149 : 309154.dasm (4.67 % of base)
149 : 309215.dasm (4.74 % of base)
149 : 43573.dasm (2.33 % of base)
149 : 49224.dasm (2.33 % of base)
132 : 135248.dasm (1.93 % of base)
127 : 135577.dasm (4.57 % of base)
119 : 308703.dasm (4.52 % of base)
117 : 225534.dasm (6.45 % of base)
115 : 179125.dasm (4.94 % of base)
113 : 24129.dasm (4.54 % of base)
112 : 164112.dasm (8.66 % of base)
111 : 138502.dasm (6.02 % of base)
107 : 275653.dasm (4.70 % of base)
105 : 135137.dasm (5.30 % of base)
104 : 25088.dasm (0.96 % of base)
Top file improvements (bytes):
-206 : 299149.dasm (-3.94 % of base)
-187 : 209511.dasm (-5.50 % of base)
-164 : 5464.dasm (-3.40 % of base)
-156 : 45187.dasm (-2.38 % of base)
-153 : 121547.dasm (-21.55 % of base)
-152 : 173933.dasm (-10.40 % of base)
-148 : 173753.dasm (-10.20 % of base)
-130 : 51044.dasm (-2.06 % of base)
-107 : 21645.dasm (-3.10 % of base)
-103 : 278388.dasm (-2.26 % of base)
-103 : 257059.dasm (-2.26 % of base)
-102 : 52721.dasm (-1.86 % of base)
-102 : 47284.dasm (-1.87 % of base)
-97 : 182636.dasm (-2.43 % of base)
-92 : 291743.dasm (-2.42 % of base)
-90 : 131180.dasm (-4.01 % of base)
-90 : 286963.dasm (-2.72 % of base)
-89 : 185553.dasm (-2.98 % of base)
-85 : 204645.dasm (-4.20 % of base)
-79 : 86793.dasm (-2.45 % of base)
74 total files with Code Size differences (39 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
430 (11.76 % of base) : 296053.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
246 (6.64 % of base) : 308381.dasm - System.Threading.Channels.Tests.ChannelTestBase+<ReadAllAsync_DualConcurrentEnumeration_AllItemsEnumerated>d__72:MoveNext():this (FullOpts)
163 (3.85 % of base) : 20333.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
149 (2.33 % of base) : 43573.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
149 (2.33 % of base) : 49224.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
149 (4.67 % of base) : 309154.dasm - System.Threading.RateLimiting.Test.ConcurrencyLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
149 (4.74 % of base) : 309215.dasm - System.Threading.RateLimiting.Test.FixedWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
149 (4.70 % of base) : 309337.dasm - System.Threading.RateLimiting.Test.SlidingWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__8:MoveNext():this (FullOpts)
149 (4.70 % of base) : 309365.dasm - System.Threading.RateLimiting.Test.TokenBucketRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
132 (1.93 % of base) : 135248.dasm - System.IO.Pipelines.Tests.PipelineReaderWriterFacts+<ReaderShouldNotGetUnflushedBytesWithAppend>d__17:MoveNext():this (FullOpts)
127 (4.57 % of base) : 135577.dasm - System.IO.Pipelines.Tests.PipePoolTests+<AdvanceToEndReturnsAllButOneBlockIfWritingBeforeAdvance>d__1:MoveNext():this (FullOpts)
119 (4.52 % of base) : 308703.dasm - System.Threading.RateLimiting.Test.TokenBucketRateLimiterTests+<ReplenishWorksWithTicksOverInt32Max>d__43:MoveNext():this (FullOpts)
117 (6.45 % of base) : 225534.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
115 (4.94 % of base) : 179125.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
113 (4.54 % of base) : 24129.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+<>c__DisplayClass20_0+<<ProcessDocumentAsync>g__ProcessDocumentAsync|0>d:MoveNext():this (FullOpts)
112 (8.66 % of base) : 164112.dasm - System.Net.StreamFramer+<WriteMessageAsync>d__10`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
111 (6.02 % of base) : 138502.dasm - System.IO.Tests.MemoryStreamTests+<DerivedMemoryStream_ReadWriteAsyncMemoryCalled_ReadWriteAsyncArrayUsed>d__8:MoveNext():this (FullOpts)
107 (4.70 % of base) : 275653.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
105 (5.30 % of base) : 135137.dasm - System.IO.Pipelines.Tests.PipeLengthTests+<LengthIsBasedOnPreviouslyExamined>d__10:MoveNext():this (FullOpts)
104 (0.96 % of base) : 25088.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
Top method improvements (bytes):
-206 (-3.94 % of base) : 299149.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30855_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-187 (-5.50 % of base) : 209511.dasm - System.Runtime.Serialization.SchemaExporter:ExportGenericInfo(System.Type,System.String,System.String):System.Xml.XmlElement:this (FullOpts)
-164 (-3.40 % of base) : 5464.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
-156 (-2.38 % of base) : 45187.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
-153 (-21.55 % of base) : 121547.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-152 (-10.40 % of base) : 173933.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithArrayPropertyHavingChoice:Write3_Item(System.String,System.String,SerializationTypes.TypeWithArrayPropertyHavingChoice,ubyte,ubyte):this (FullOpts)
-148 (-10.20 % of base) : 173753.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1:Write2_wrapper(System.Object[]):this (FullOpts)
-130 (-2.06 % of base) : 51044.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
-107 (-3.10 % of base) : 21645.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-103 (-2.26 % of base) : 278388.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
-103 (-2.26 % of base) : 257059.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<<FloatingPointConstants_Pass>g__PerformFloatingPointSerialization|38_0>d:MoveNext():this (FullOpts)
-102 (-1.86 % of base) : 52721.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbolFromDeclarator:GetFieldType(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
-102 (-1.87 % of base) : 47284.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbolFromDeclarator:GetFieldType(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
-97 (-2.43 % of base) : 182636.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestInvalid(System.String[],System.String,System.String[]):int:this (FullOpts)
-92 (-2.42 % of base) : 291743.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2805_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-90 (-4.01 % of base) : 131180.dasm - System.IO.Tests.Enumeration.ExampleTests:TestGetFilesWithExtensions():this (FullOpts)
-90 (-2.72 % of base) : 286963.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex256_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-89 (-2.98 % of base) : 185553.dasm - System.Reflection.DispatchProxyGenerator+ProxyBuilder:AddMethodImpl(System.Reflection.MethodInfo,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
-85 (-4.20 % of base) : 204645.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartAttribute(System.String,System.String,System.String):this (FullOpts)
-79 (-2.45 % of base) : 86793.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
Top method regressions (percentages):
430 (11.76 % of base) : 296053.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
65 (9.41 % of base) : 123431.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
67 (8.99 % of base) : 136000.dasm - System.IO.Pipelines.Tests.StreamPipeReaderTests+ThrowAfterZeroByteReadStream+<ReadAsync>d__4:MoveNext():this (FullOpts)
112 (8.66 % of base) : 164112.dasm - System.Net.StreamFramer+<WriteMessageAsync>d__10`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
24 (8.36 % of base) : 160395.dasm - System.Net.Mime.HeaderCollection:Set(System.String,System.String):this (FullOpts)
16 (7.37 % of base) : 160594.dasm - System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
16 (7.37 % of base) : 161173.dasm - System.Net.Mime.HeaderCollection:Add(System.String,System.String):this (FullOpts)
18 (7.29 % of base) : 58618.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
15 (6.85 % of base) : 72127.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
15 (6.85 % of base) : 73340.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
246 (6.64 % of base) : 308381.dasm - System.Threading.Channels.Tests.ChannelTestBase+<ReadAllAsync_DualConcurrentEnumeration_AllItemsEnumerated>d__72:MoveNext():this (FullOpts)
90 (6.60 % of base) : 318357.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__44:MoveNext():this (FullOpts)
117 (6.45 % of base) : 225534.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
73 (6.39 % of base) : 317836.dasm - System.Web.HttpUtility+HttpQSCollection:ToString():System.String:this (FullOpts)
20 (6.37 % of base) : 160355.dasm - System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)
85 (6.25 % of base) : 318359.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__43:MoveNext():this (FullOpts)
55 (6.19 % of base) : 252122.dasm - System.Text.Json.SourceGeneration.Tests.AsyncStreamSerializerWrapper+<DeserializeWrapper>d__6`1[System.Text.Json.Serialization.Tests.Point_2D_With_ExtData]:MoveNext():this (FullOpts)
50 (6.14 % of base) : 270877.dasm - System.Text.Json.Serialization.Tests.JsonSerializerWrapper+AsyncStreamSerializerWrapper+<DeserializeWrapper>d__16`1[System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[int]]]:MoveNext():this (FullOpts)
23 (6.13 % of base) : 188173.dasm - System.Reflection.Emit.ModuleBuilderImpl:DefinePInvokeMethodCore(System.String,System.String,System.String,int,int,System.Type,System.Type[],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
111 (6.02 % of base) : 138502.dasm - System.IO.Tests.MemoryStreamTests+<DerivedMemoryStream_ReadWriteAsyncMemoryCalled_ReadWriteAsyncArrayUsed>d__8:MoveNext():this (FullOpts)
Top method improvements (percentages):
-153 (-21.55 % of base) : 121547.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-49 (-18.28 % of base) : 113684.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
-45 (-15.36 % of base) : 119936.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass,System.Object,System.Object) (FullOpts)
-27 (-13.99 % of base) : 118800.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,System.Object):System.Object (FullOpts)
-23 (-13.45 % of base) : 108926.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
-27 (-12.68 % of base) : 113673.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Collections.Generic.List`1[System.Collections.Generic.List`1[int]],System.Object):System.Object (FullOpts)
-23 (-12.23 % of base) : 116380.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13d.usage13d.Parent,System.Object):System.Object (FullOpts)
-23 (-12.23 % of base) : 116219.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
-23 (-12.17 % of base) : 118199.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
-28 (-11.91 % of base) : 107273.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.inheritance.inherit13a.inherit13a.Parent,System.Object,System.Object):System.Object (FullOpts)
-27 (-11.84 % of base) : 119137.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.dlgate.lambda14a.lambda14a.Foo,System.Object,System.Object):System.Object (FullOpts)
-27 (-11.69 % of base) : 111523.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage04d.usage04d.Parent,System.Object,System.Object):System.Object (FullOpts)
-27 (-11.69 % of base) : 111939.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage10a.usage10a.Parent,System.Object,System.Object):System.Object (FullOpts)
-27 (-11.49 % of base) : 113805.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.dlgate.evnt23c.evnt23c.Foo,System.Object,System.Object):System.Object (FullOpts)
-33 (-11.42 % of base) : 108599.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,long):System.Object (FullOpts)
-23 (-11.39 % of base) : 111023.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Nullable`1[ubyte],System.Object):System.Object (FullOpts)
-27 (-11.25 % of base) : 112951.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.lambda003.lambda003.Test+D1,System.Object):System.Object (FullOpts)
-38 (-11.24 % of base) : 109217.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,int,System.Object):ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.cnstrctor007.cnstrctor007.MyType1 (FullOpts)
-24 (-11.21 % of base) : 111606.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.String,System.Object):System.Object (FullOpts)
-23 (-11.17 % of base) : 113366.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.dlgate.lambda13a.lambda13a.Foo,System.Object):System.Object (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14170685 (overridden on cmd)
Total bytes of diff: 14167370 (overridden on cmd)
Total bytes of delta: -3315 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Top file regressions (bytes):
174 : 18092.dasm (4.02 % of base)
93 : 14027.dasm (8.06 % of base)
78 : 19652.dasm (1.51 % of base)
74 : 11632.dasm (4.81 % of base)
62 : 14791.dasm (3.93 % of base)
57 : 19693.dasm (1.91 % of base)
56 : 16238.dasm (1.27 % of base)
55 : 18873.dasm (0.19 % of base)
52 : 3238.dasm (7.08 % of base)
47 : 17895.dasm (1.07 % of base)
46 : 25280.dasm (1.66 % of base)
42 : 34303.dasm (7.50 % of base)
35 : 17327.dasm (0.89 % of base)
35 : 29561.dasm (3.60 % of base)
33 : 21671.dasm (1.86 % of base)
31 : 17973.dasm (0.40 % of base)
29 : 25527.dasm (2.08 % of base)
28 : 16788.dasm (0.82 % of base)
27 : 35496.dasm (1.82 % of base)
24 : 16630.dasm (2.68 % of base)
Top file improvements (bytes):
-459 : 8845.dasm (-3.87 % of base)
-246 : 11821.dasm (-6.06 % of base)
-155 : 17432.dasm (-1.93 % of base)
-153 : 2333.dasm (-20.08 % of base)
-125 : 16648.dasm (-1.47 % of base)
-108 : 28405.dasm (-2.93 % of base)
-80 : 23724.dasm (-1.32 % of base)
-76 : 16897.dasm (-2.66 % of base)
-68 : 21668.dasm (-2.62 % of base)
-62 : 27732.dasm (-7.81 % of base)
-60 : 1410.dasm (-0.33 % of base)
-52 : 7732.dasm (-2.44 % of base)
-51 : 18645.dasm (-1.39 % of base)
-50 : 27528.dasm (-0.61 % of base)
-44 : 26993.dasm (-2.55 % of base)
-44 : 7295.dasm (-2.26 % of base)
-44 : 24980.dasm (-2.26 % of base)
-43 : 16481.dasm (-0.81 % of base)
-43 : 35491.dasm (-3.68 % of base)
-42 : 29506.dasm (-4.18 % of base)
67 total files with Code Size differences (34 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
174 (4.02 % of base) : 18092.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
93 (8.06 % of base) : 14027.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
78 (1.51 % of base) : 19652.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
74 (4.81 % of base) : 11632.dasm - FSharp.Compiler.LexFilter:|TyparsCloseOp|_|$cont@519(Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[ubyte,FSharp.Compiler.Parser+token][],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Parser+token]]] (FullOpts)
62 (3.93 % of base) : 14791.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
57 (1.91 % of base) : 19693.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
56 (1.27 % of base) : 16238.dasm - Microsoft.ML.Transforms.ValueToKeyMappingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Runtime.IChannel,Microsoft.ML.Transforms.ValueToKeyMappingTransformer+ColInfo[],Microsoft.ML.IDataView,Microsoft.ML.Transforms.ValueToKeyMappingEstimator+ColumnOptionsBase[],Microsoft.ML.IDataView,ubyte):Microsoft.ML.Transforms.ValueToKeyMappingTransformer+TermMap[] (FullOpts)
55 (0.19 % of base) : 18873.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
52 (7.08 % of base) : 3238.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:GetPathToDotNetFrameworkImlpementationAssemblies@57(System.String):Microsoft.FSharp.Collections.FSharpList`1[System.String] (FullOpts)
47 (1.07 % of base) : 17895.dasm - System.Net.Http.RedirectHandler+<SendAsync>d__4:MoveNext():this (FullOpts)
46 (1.66 % of base) : 25280.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
42 (7.50 % of base) : 34303.dasm - System.Management.Automation.Provider.NavigationCmdletProvider:MakePath(System.String,System.String,ubyte):System.String:this (FullOpts)
35 (3.60 % of base) : 29561.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,Microsoft.CodeAnalysis.CSharp.BoundUnaryOperator):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
35 (0.89 % of base) : 17327.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
33 (1.86 % of base) : 21671.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:InitializeNewSymbols(System.Collections.Generic.List`1[int],Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]],Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.CSharp.Symbols.MissingAssemblySymbol]) (FullOpts)
31 (0.40 % of base) : 17973.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
29 (2.08 % of base) : 25527.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetParamArrayArgument(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],System.Collections.Immutable.ImmutableArray`1[System.String],int,int,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.TypedConstant (FullOpts)
28 (0.82 % of base) : 16788.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
27 (1.82 % of base) : 35496.dasm - System.Management.Automation.CommandDiscovery:LookupCommandInfo(System.String,int,int,int,System.Management.Automation.ExecutionContext):System.Management.Automation.CommandInfo (FullOpts)
24 (2.68 % of base) : 16630.dasm - Microsoft.ML.Data.RoleMappedSchema:.ctor(Microsoft.ML.DataViewSchema,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.IReadOnlyList`1[Microsoft.ML.DataViewSchema+Column]]):this (FullOpts)
Top method improvements (bytes):
-459 (-3.87 % of base) : 8845.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-246 (-6.06 % of base) : 11821.dasm - FSharp.Compiler.Parser:tryMkSynMemberDefnMember@1863(ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynReturnInfo],FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynPat,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.SynMemberKind,FSharp.Compiler.Syntax.SynMemberFlags],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList],FSharp.Compiler.Text.Range,FSharp.Compiler.Xml.PreXmlDoc,Microsoft.FSharp.Core.FSharpRef`1[ubyte],Microsoft.FSharp.Core.FSharpRef`1[ubyte],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.PropertyKeyword],ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList],System.Tuple`2[FSharp.Compiler.Syntax.SynPat,FSharp.Compiler.Text.Range],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynReturnInfo],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMemberDefn] (FullOpts)
-155 (-1.93 % of base) : 17432.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
-153 (-20.08 % of base) : 2333.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-125 (-1.47 % of base) : 16648.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainCore(Microsoft.ML.Runtime.IChannel,Microsoft.ML.Data.RoleMappedData,Microsoft.ML.Trainers.LinearModelParameters,int):System.__Canon:this (FullOpts)
-108 (-2.93 % of base) : 28405.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-80 (-1.32 % of base) : 23724.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-76 (-2.66 % of base) : 16897.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
-68 (-2.62 % of base) : 21668.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
-62 (-7.81 % of base) : 27732.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
-60 (-0.33 % of base) : 1410.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-52 (-2.44 % of base) : 7732.dasm - FSharp.Compiler.NameResolution:CheckForTypeLegitimacyAndMultipleGenericTypeAmbiguities(Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.NameResolution+ResolutionInfo,FSharp.Compiler.TypedTree+EntityRef]],FSharp.Compiler.NameResolution+TypeNameResolutionInfo,FSharp.Compiler.NameResolution+PermitDirectReferenceToGeneratedType,FSharp.Compiler.Text.Range):Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.NameResolution+ResolutionInfo,FSharp.Compiler.TypedTree+EntityRef]] (FullOpts)
-51 (-1.39 % of base) : 18645.dasm - Microsoft.ML.Transforms.Text.WordEmbeddingTransformer:GetVocabularyDictionary(Microsoft.ML.Runtime.IHostEnvironment):Microsoft.ML.Transforms.Text.WordEmbeddingTransformer+Model:this (FullOpts)
-50 (-0.61 % of base) : 27528.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedString(Microsoft.CodeAnalysis.CSharp.Syntax.InterpolatedStringExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-44 (-2.26 % of base) : 7295.dasm - FSharp.Compiler.ParseAndCheckInputs:ProcessMetaCommand@572[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.CompilerConfig+TcConfigBuilder,System.String,ubyte,System.__Canon,FSharp.Compiler.Syntax.ParsedHashDirective):System.__Canon (FullOpts)
-44 (-2.55 % of base) : 26993.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:ComputeBoundDecisionDagNodes(Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag,Microsoft.CodeAnalysis.CSharp.BoundLeafDecisionDagNode):this (FullOpts)
-44 (-2.26 % of base) : 24980.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEEventSymbol:GetAssociatedField(Roslyn.Utilities.MultiDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:this (FullOpts)
-43 (-0.81 % of base) : 16481.dasm - Microsoft.ML.Transforms.Text.NgramExtractingTransformer:Train(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[],System.Collections.Immutable.ImmutableArray`1[Microsoft.ML.Transforms.Text.NgramExtractingTransformer+TransformInfo],Microsoft.ML.IDataView,byref):Microsoft.ML.Internal.Utilities.SequencePool[] (FullOpts)
-43 (-3.68 % of base) : 35491.dasm - System.Management.Automation.PipelineOps:InvokePipeline(System.Object,ubyte,System.Management.Automation.CommandParameterInternal[][],System.Management.Automation.Language.CommandBaseAst[],System.Management.Automation.CommandRedirection[][],System.Management.Automation.Language.FunctionContext) (FullOpts)
-42 (-4.18 % of base) : 29506.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
Top method regressions (percentages):
93 (8.06 % of base) : 14027.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
42 (7.50 % of base) : 34303.dasm - System.Management.Automation.Provider.NavigationCmdletProvider:MakePath(System.String,System.String,ubyte):System.String:this (FullOpts)
52 (7.08 % of base) : 3238.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:GetPathToDotNetFrameworkImlpementationAssemblies@57(System.String):Microsoft.FSharp.Collections.FSharpList`1[System.String] (FullOpts)
74 (4.81 % of base) : 11632.dasm - FSharp.Compiler.LexFilter:|TyparsCloseOp|_|$cont@519(Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[ubyte,FSharp.Compiler.Parser+token][],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Parser+token]]] (FullOpts)
174 (4.02 % of base) : 18092.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
62 (3.93 % of base) : 14791.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
4 (3.77 % of base) : 21036.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
35 (3.60 % of base) : 29561.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,Microsoft.CodeAnalysis.CSharp.BoundUnaryOperator):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
19 (3.56 % of base) : 28227.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:CheckForDeconstructionAssignmentToSelf(Microsoft.CodeAnalysis.CSharp.BoundTupleExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
6 (3.33 % of base) : 27799.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
2 (3.28 % of base) : 28904.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
23 (3.22 % of base) : 35664.dasm - System.Management.Automation.AnalysisCacheData+<<QueueSerialization>b__11_0>d:MoveNext():this (FullOpts)
15 (2.99 % of base) : 33431.dasm - Microsoft.PowerShell.Commands.RegistryProvider:GetHiveRoot(System.String):Microsoft.PowerShell.Commands.IRegistryWrapper:this (FullOpts)
7 (2.88 % of base) : 2414.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
6 (2.78 % of base) : 24498.dasm - Microsoft.CodeAnalysis.AttributeData:<IsTargetEarlyAttribute>g__namespaceMatch|25_0(Microsoft.CodeAnalysis.Symbols.INamespaceSymbolInternal,System.String,int):ubyte (FullOpts)
24 (2.68 % of base) : 16630.dasm - Microsoft.ML.Data.RoleMappedSchema:.ctor(Microsoft.ML.DataViewSchema,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.IReadOnlyList`1[Microsoft.ML.DataViewSchema+Column]]):this (FullOpts)
3 (2.56 % of base) : 32400.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEmbeddedAttributeSymbolBase:GetMembers(System.String):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
13 (2.55 % of base) : 74.dasm - System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object (FullOpts)
20 (2.49 % of base) : 5022.dasm - FSharp.Compiler.AbstractIL.IL+SHA1:sha1Hash(FSharp.Compiler.AbstractIL.IL+SHA1+SHAStream):System.Tuple`5[int,int,int,int,int] (FullOpts)
12 (2.46 % of base) : 28976.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NonNegativeIntValueSetFactory:Related(int,int):Microsoft.CodeAnalysis.CSharp.IValueSet`1[int]:this (FullOpts)
Top method improvements (percentages):
-153 (-20.08 % of base) : 2333.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-62 (-7.81 % of base) : 27732.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
-27 (-6.91 % of base) : 15802.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor:.ctor(System.Numerics.Matrix3x2,SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler,SixLabors.ImageSharp.Size):this (FullOpts)
-14 (-6.64 % of base) : 33246.dasm - System.Management.Automation.CmdletInfo:SplitCmdletName(System.String,byref,byref):ubyte (FullOpts)
-18 (-6.21 % of base) : 634.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
-246 (-6.06 % of base) : 11821.dasm - FSharp.Compiler.Parser:tryMkSynMemberDefnMember@1863(ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynReturnInfo],FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynPat,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.SynMemberKind,FSharp.Compiler.Syntax.SynMemberFlags],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList],FSharp.Compiler.Text.Range,FSharp.Compiler.Xml.PreXmlDoc,Microsoft.FSharp.Core.FSharpRef`1[ubyte],Microsoft.FSharp.Core.FSharpRef`1[ubyte],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.PropertyKeyword],ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList],System.Tuple`2[FSharp.Compiler.Syntax.SynPat,FSharp.Compiler.Text.Range],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynReturnInfo],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMemberDefn] (FullOpts)
-12 (-5.66 % of base) : 5231.dasm - FSharp.Compiler.Xml.XmlDocumentationInfo:TryCreateFromFile(System.String):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Xml.XmlDocumentationInfo] (FullOpts)
-20 (-5.45 % of base) : 33023.dasm - System.Runtime.CompilerServices.RuleCache`1[System.__Canon]:MoveRule(System.__Canon,int):this (FullOpts)
-16 (-5.35 % of base) : 636.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
-23 (-5.23 % of base) : 21660.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:TryParseNameToken(System.String,byref,byref):ubyte (FullOpts)
-18 (-4.48 % of base) : 24740.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEnumConstantSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-42 (-4.18 % of base) : 29506.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (FullOpts)
-10 (-3.92 % of base) : 12727.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks+CheckEntityDefn@2342-2:Invoke(FSharp.Compiler.Infos+ParamData):ubyte:this (FullOpts)
-18 (-3.91 % of base) : 23858.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-459 (-3.87 % of base) : 8845.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-43 (-3.68 % of base) : 35491.dasm - System.Management.Automation.PipelineOps:InvokePipeline(System.Object,ubyte,System.Management.Automation.CommandParameterInternal[][],System.Management.Automation.Language.CommandBaseAst[],System.Management.Automation.CommandRedirection[][],System.Management.Automation.Language.FunctionContext) (FullOpts)
-18 (-3.61 % of base) : 18088.dasm - System.Net.Security.SslAuthenticationOptions:UpdateOptions(System.Net.Security.SslClientAuthenticationOptions):this (FullOpts)
-3 (-3.57 % of base) : 33320.dasm - System.Management.Automation.DisplayEntry:.ctor(System.String,int):this (FullOpts)
-18 (-3.53 % of base) : 26164.dasm - Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:GetUpdatedArray[System.__Canon](Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
-14 (-3.43 % of base) : 539.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5091660 (overridden on cmd)
Total bytes of diff: 5091771 (overridden on cmd)
Total bytes of delta: 111 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Top file regressions (bytes):
113 : 18365.dasm (9.96 % of base)
113 : 15557.dasm (9.96 % of base)
113 : 20985.dasm (9.96 % of base)
112 : 3363.dasm (9.72 % of base)
112 : 374.dasm (9.78 % of base)
43 : 8935.dasm (4.95 % of base)
28 : 8652.dasm (2.46 % of base)
28 : 14360.dasm (2.46 % of base)
13 : 15735.dasm (0.75 % of base)
13 : 21060.dasm (0.75 % of base)
13 : 14505.dasm (0.77 % of base)
13 : 31483.dasm (2.36 % of base)
13 : 31583.dasm (2.36 % of base)
13 : 3493.dasm (0.75 % of base)
13 : 513.dasm (0.75 % of base)
13 : 18466.dasm (0.75 % of base)
12 : 17195.dasm (0.67 % of base)
12 : 2048.dasm (0.68 % of base)
12 : 22456.dasm (0.67 % of base)
12 : 5271.dasm (0.68 % of base)
Top file improvements (bytes):
-33 : 12933.dasm (-5.47 % of base)
-33 : 4731.dasm (-5.47 % of base)
-27 : 16949.dasm (-2.90 % of base)
-27 : 19605.dasm (-2.90 % of base)
-27 : 5794.dasm (-2.93 % of base)
-27 : 1824.dasm (-2.93 % of base)
-27 : 22234.dasm (-2.90 % of base)
-21 : 22560.dasm (-3.32 % of base)
-21 : 6679.dasm (-3.37 % of base)
-21 : 19858.dasm (-3.32 % of base)
-21 : 2150.dasm (-3.37 % of base)
-21 : 17253.dasm (-3.32 % of base)
-18 : 25508.dasm (-6.36 % of base)
-18 : 30036.dasm (-2.74 % of base)
-18 : 4523.dasm (-3.25 % of base)
-18 : 16329.dasm (-3.25 % of base)
-18 : 19049.dasm (-3.25 % of base)
-18 : 21638.dasm (-3.25 % of base)
-18 : 1156.dasm (-3.25 % of base)
-16 : 16421.dasm (-2.59 % of base)
59 total files with Code Size differences (29 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
113 (9.96 % of base) : 18365.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
113 (9.96 % of base) : 15557.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
113 (9.96 % of base) : 20985.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
112 (9.72 % of base) : 3363.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
112 (9.78 % of base) : 374.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
43 (4.95 % of base) : 8935.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
28 (2.46 % of base) : 8652.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
28 (2.46 % of base) : 14360.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
13 (2.36 % of base) : 31483.dasm - ReflectionTest+TestInstanceFields:Run() (FullOpts)
13 (2.36 % of base) : 31583.dasm - ReflectionTest+TestInstanceFields:Run() (FullOpts)
13 (0.75 % of base) : 15735.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
13 (0.75 % of base) : 21060.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
13 (0.77 % of base) : 14505.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
13 (0.75 % of base) : 3493.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
13 (0.75 % of base) : 513.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
13 (0.75 % of base) : 18466.dasm - System.Text.UTF32Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
12 (0.67 % of base) : 17195.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
12 (0.68 % of base) : 2048.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
12 (0.67 % of base) : 22456.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
12 (0.68 % of base) : 5271.dasm - System.Array:CopyImplPrimitiveTypeWithWidening(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
Top method improvements (bytes):
-33 (-5.47 % of base) : 12933.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
-33 (-5.47 % of base) : 4731.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
-27 (-2.90 % of base) : 16949.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-27 (-2.90 % of base) : 19605.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-27 (-2.93 % of base) : 5794.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-27 (-2.93 % of base) : 1824.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-27 (-2.90 % of base) : 22234.dasm - System.Runtime.TypeCast:TypeParametersAreCompatible(int,Internal.Runtime.MethodTableList,Internal.Runtime.MethodTableList,ulong,ubyte,ulong):ubyte (FullOpts)
-21 (-3.32 % of base) : 22560.dasm - System.Runtime.CompilerServices.GenericCache`2[System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value]:TrySet(System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value):this (FullOpts)
-21 (-3.37 % of base) : 6679.dasm - System.Runtime.CompilerServices.GenericCache`2[System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value]:TrySet(System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value):this (FullOpts)
-21 (-3.32 % of base) : 19858.dasm - System.Runtime.CompilerServices.GenericCache`2[System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value]:TrySet(System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value):this (FullOpts)
-21 (-3.37 % of base) : 2150.dasm - System.Runtime.CompilerServices.GenericCache`2[System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value]:TrySet(System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value):this (FullOpts)
-21 (-3.32 % of base) : 17253.dasm - System.Runtime.CompilerServices.GenericCache`2[System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value]:TrySet(System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value):this (FullOpts)
-18 (-6.36 % of base) : 25508.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
-18 (-3.25 % of base) : 4523.dasm - System.Runtime.CompilerServices.CastCache:TrySet(ulong,ulong,ubyte):this (FullOpts)
-18 (-3.25 % of base) : 16329.dasm - System.Runtime.CompilerServices.CastCache:TrySet(ulong,ulong,ubyte):this (FullOpts)
-18 (-3.25 % of base) : 19049.dasm - System.Runtime.CompilerServices.CastCache:TrySet(ulong,ulong,ubyte):this (FullOpts)
-18 (-3.25 % of base) : 21638.dasm - System.Runtime.CompilerServices.CastCache:TrySet(ulong,ulong,ubyte):this (FullOpts)
-18 (-3.25 % of base) : 1156.dasm - System.Runtime.CompilerServices.CastCache:TrySet(ulong,ulong,ubyte):this (FullOpts)
-18 (-2.74 % of base) : 30036.dasm - System.Threading.TimerQueue:FireNextTimers():this (FullOpts)
-16 (-2.59 % of base) : 16421.dasm - System.Runtime.CompilerServices.ClassConstructorRunner+Cctor:GetCctor(ulong):System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle (FullOpts)
Top method regressions (percentages):
113 (9.96 % of base) : 18365.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
113 (9.96 % of base) : 15557.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
113 (9.96 % of base) : 20985.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
112 (9.78 % of base) : 374.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
112 (9.72 % of base) : 3363.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
43 (4.95 % of base) : 8935.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
3 (4.35 % of base) : 5781.dasm - System.Diagnostics.ProcessManager:IsRemoteMachine(System.String):ubyte (FullOpts)
7 (2.92 % of base) : 11913.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
7 (2.92 % of base) : 6704.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
10 (2.89 % of base) : 1481.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
10 (2.89 % of base) : 16573.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
10 (2.89 % of base) : 19221.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
10 (2.89 % of base) : 4889.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
10 (2.89 % of base) : 21977.dasm - System.Threading.ObjectHeader:TryAcquireUncommon(System.Object,int,ubyte):int (FullOpts)
2 (2.74 % of base) : 13983.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
2 (2.50 % of base) : 8608.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
28 (2.46 % of base) : 8652.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
28 (2.46 % of base) : 14360.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (FullOpts)
13 (2.36 % of base) : 31483.dasm - ReflectionTest+TestInstanceFields:Run() (FullOpts)
13 (2.36 % of base) : 31583.dasm - ReflectionTest+TestInstanceFields:Run() (FullOpts)
Top method improvements (percentages):
-18 (-6.36 % of base) : 25508.dasm - System.Guid:ToString(System.String,System.IFormatProvider):System.String:this (FullOpts)
-33 (-5.47 % of base) : 12933.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
-33 (-5.47 % of base) : 4731.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:GetRuntimeMethodHandleForComponents(System.RuntimeTypeHandle,long,Internal.Runtime.CompilerServices.RuntimeSignature,System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (FullOpts)
-21 (-3.37 % of base) : 6679.dasm - System.Runtime.CompilerServices.GenericCache`2[System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value]:TrySet(System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value):this (FullOpts)
-21 (-3.37 % of base) : 2150.dasm - System.Runtime.CompilerServices.GenericCache`2[System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value]:TrySet(System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value):this (FullOpts)
-21 (-3.32 % of base) : 22560.dasm - System.Runtime.CompilerServices.GenericCache`2[System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value]:TrySet(System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value):this (FullOpts)
-21 (-3.32 % of base) : 19858.dasm - System.Runtime.CompilerServices.GenericCache`2[System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value]:TrySet(System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value):this (FullOpts)
-21 (-3.32 % of base) : 17253.dasm - System.Runtime.CompilerServices.GenericCache`2[System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value]:TrySet(System.Runtime.TypeLoaderExports+Key,System.Runtime.TypeLoaderExports+Value):this (FullOpts)
-18 (-3.25 % of base) : 4523.dasm - System.Runtime.CompilerServices.CastCache:TrySet(ulong,ulong,ubyte):this (FullOpts)
-18 (-3.25 % of base) : 1156.dasm - System.Runtime.CompilerServices.CastCache:TrySet(ulong,ulong,ubyte):this (FullOpts)
-18 (-3.25 % of base) : 16329.dasm - System.Runtime.CompilerServices.CastCache:TrySet(ulong,ulong,ubyte):this (FullOpts)
-18 (-3.25 % of base) : 19049.dasm - System.Runtime.CompilerServices.CastCache:TrySet(ulong,ulong,ubyte):this (FullOpts)
-18 (-3.25 % of base) : 21638.dasm - System.Runtime.CompilerServices.CastCache:TrySet(ulong,ulong,ubyte):this (FullOpts)
-8 (-3.15 % of base) : 31923.dasm - Generics+TestDelegateVirtualMethod:Generic[System.__Canon]() (FullOpts)
-8 (-3.15 % of base) : 9928.dasm - Generics+TestDelegateVirtualMethod:Generic[System.__Canon]() (FullOpts)
-10 (-2.99 % of base) : 19669.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-10 (-2.99 % of base) : 4866.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-10 (-2.99 % of base) : 1358.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-10 (-2.99 % of base) : 22338.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
-10 (-2.99 % of base) : 17015.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)