Diffs are based on 1,514,429 contexts (459,672 MinOpts, 1,054,757 FullOpts).
MISSED contexts: base: 12,403 (0.82%), diff: 12,404 (0.82%)
Overall (+117,686 bytes)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 38,046,237 | +30,260 |
benchmarks.run.windows.x64.checked.mch | 7,293,703 | +3,252 |
benchmarks.run_pgo.windows.x64.checked.mch | 27,312,724 | +24,278 |
benchmarks.run_tiered.windows.x64.checked.mch | 10,236,085 | +2,421 |
coreclr_tests.run.windows.x64.checked.mch | 369,434,284 | +26,015 |
libraries.crossgen2.windows.x64.checked.mch | 6,295,320 | +217 |
libraries.pmi.windows.x64.checked.mch | 59,196,125 | +10,403 |
libraries_tests.pmi.windows.x64.checked.mch | 115,763,833 | +19,722 |
realworld.run.windows.x64.checked.mch | 13,758,228 | +1,118 |
FullOpts (+117,686 bytes)
Collection | Base size (bytes) | Diff size (bytes) |
---|---|---|
aspnet.run.windows.x64.checked.mch | 24,231,656 | +30,260 |
benchmarks.run.windows.x64.checked.mch | 6,919,181 | +3,252 |
benchmarks.run_pgo.windows.x64.checked.mch | 17,126,945 | +24,278 |
benchmarks.run_tiered.windows.x64.checked.mch | 2,632,580 | +2,421 |
coreclr_tests.run.windows.x64.checked.mch | 106,337,741 | +26,015 |
libraries.crossgen2.windows.x64.checked.mch | 6,295,320 | +217 |
libraries.pmi.windows.x64.checked.mch | 57,674,046 | +10,403 |
libraries_tests.pmi.windows.x64.checked.mch | 109,405,287 | +19,722 |
realworld.run.windows.x64.checked.mch | 12,608,898 | +1,118 |
Example diffs
aspnet.run.windows.x64.checked.mch
-15 (-5.12%) : 63414.dasm - Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
@@ -12,11 +12,11 @@
; V00 this [V00,T00] ( 6, 3.50) ref -> rsi this class-hnd single-def
; V01 arg1 [V01,T03] ( 5, 3.13) ref -> rbx class-hnd single-def
; V02 arg2 [V02,T02] ( 4, 3.25) int -> rdi single-def
-; V03 loc0 [V03 ] ( 5, 1.63) ref -> [rsp+28H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
+; V03 loc0 [V03 ] ( 5, 1.75) ref -> [rsp+28H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
; V04 loc1 [V04,T08] ( 7, 1.63) int -> rbp
; V05 loc2 [V05,T11] ( 3, 0.50) ref -> r14 class-hnd
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T07] ( 2, 1.75) bool -> rax "Inline return value spill temp"
+; V07 tmp1 [V07,T07] ( 3, 1.75) bool -> rbp "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 4, 5.26) ref -> rcx class-hnd single-def "spilling ret_expr"
; V09 tmp3 [V09,T06] ( 4, 1.75) int -> r9 "guarded devirt return temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp"
@@ -51,10 +51,10 @@ G_M24577_IG03: ; bbWeight=0.88, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov rcx, gword ptr [rsi+18H]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M24577_IG18
+ je G_M24577_IG16
mov rdx, 0xD1FFAB1E ; System.Collections.Generic.Dictionary`2[System.String,Newtonsoft.Json.Serialization.JsonProperty]
cmp qword ptr [rcx], rdx
- jne G_M24577_IG19
+ jne G_M24577_IG18
mov rdx, rbx
; gcrRegs +[rdx]
call [<unknown method>]
@@ -71,17 +71,17 @@ G_M24577_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {rax},
mov gword ptr [rsp+28H], rax
mov r9d, 1
;; size=14 bbWeight=0.50 PerfScore 1.63
-G_M24577_IG05: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M24577_IG05: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- movzx rax, r9b
- test eax, eax
- je SHORT G_M24577_IG14
- ;; size=8 bbWeight=0.88 PerfScore 1.32
-G_M24577_IG06: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rax, gword ptr [rsp+28H]
+ movzx rbp, r9b
+ ;; size=4 bbWeight=0.88 PerfScore 0.22
+G_M24577_IG06: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor rax, rax
; gcrRegs +[rax]
- ;; size=5 bbWeight=0.75 PerfScore 0.75
-G_M24577_IG07: ; bbWeight=0.75, epilog, nogc, extend
+ test ebp, ebp
+ cmovne rax, gword ptr [rsp+28H]
+ ;; size=10 bbWeight=0.88 PerfScore 2.19
+G_M24577_IG07: ; bbWeight=0.88, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -89,7 +89,7 @@ G_M24577_IG07: ; bbWeight=0.75, epilog, nogc, extend
pop rdi
pop r14
ret
- ;; size=11 bbWeight=0.75 PerfScore 2.82
+ ;; size=11 bbWeight=0.88 PerfScore 3.29
G_M24577_IG08: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
xor r9, r9
@@ -113,10 +113,10 @@ G_M24577_IG11: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov rdx, gword ptr [rsi+30H]
; gcrRegs +[rdx]
cmp ebp, dword ptr [rdx+10H]
- jae G_M24577_IG20
+ jae SHORT G_M24577_IG19
mov rdx, gword ptr [rdx+08H]
cmp ebp, dword ptr [rdx+08H]
- jae G_M24577_IG21
+ jae SHORT G_M24577_IG20
mov ecx, ebp
mov r14, gword ptr [rdx+8*rcx+10H]
; gcrRegs +[r14]
@@ -128,13 +128,13 @@ G_M24577_IG11: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M24577_IG16
+ jne SHORT G_M24577_IG14
inc ebp
mov rax, gword ptr [rsi+30H]
; gcrRegs +[rax]
cmp ebp, dword ptr [rax+10H]
jl SHORT G_M24577_IG11
- ;; size=64 bbWeight=0.25 PerfScore 6.85
+ ;; size=56 bbWeight=0.25 PerfScore 6.85
G_M24577_IG12: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx rsi r14]
xor rax, rax
@@ -149,26 +149,12 @@ G_M24577_IG13: ; bbWeight=0.12, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=0.12 PerfScore 0.46
-G_M24577_IG14: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.12 PerfScore 0.03
-G_M24577_IG15: ; bbWeight=0.12, epilog, nogc, extend
- add rsp, 48
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=0.12 PerfScore 0.47
-G_M24577_IG16: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+G_M24577_IG14: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[r14]
mov rax, r14
; gcrRegs +[rax]
;; size=3 bbWeight=0.00 PerfScore 0.00
-G_M24577_IG17: ; bbWeight=0.00, epilog, nogc, extend
+G_M24577_IG15: ; bbWeight=0.00, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -177,15 +163,19 @@ G_M24577_IG17: ; bbWeight=0.00, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=0.00 PerfScore 0.00
-G_M24577_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M24577_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r14]
xor r8, r8
; gcrRegs +[r8]
mov gword ptr [rsp+28H], r8
- jmp SHORT G_M24577_IG14
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M24577_IG19: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8] +[rcx rbx]
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M24577_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r8]
+ xor ebp, ebp
+ jmp G_M24577_IG06
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M24577_IG18: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx rbx]
lea r8, [rsp+28H]
mov rdx, rbx
; gcrRegs +[rdx]
@@ -196,18 +186,18 @@ G_M24577_IG19: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
mov r9d, eax
jmp G_M24577_IG05
;; size=29 bbWeight=0 PerfScore 0.00
-G_M24577_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24577_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M24577_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24577_IG20: ; 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 293, prolog size 17, PerfScore 64.67, instruction count 99, allocated bytes for code 293 (MethodHash=ce1d9ffe) for method Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
+; Total bytes of code 278, prolog size 17, PerfScore 63.48, instruction count 92, allocated bytes for code 278 (MethodHash=ce1d9ffe) for method Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
; ============================================================
Unwind Info:
-15 (-5.12%) : 67028.dasm - Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
@@ -12,11 +12,11 @@
; V00 this [V00,T00] ( 6, 3.50) ref -> rsi this class-hnd single-def
; V01 arg1 [V01,T03] ( 5, 3.13) ref -> rbx class-hnd single-def
; V02 arg2 [V02,T02] ( 4, 3.25) int -> rdi single-def
-; V03 loc0 [V03 ] ( 5, 1.63) ref -> [rsp+28H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
+; V03 loc0 [V03 ] ( 5, 1.75) ref -> [rsp+28H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
; V04 loc1 [V04,T08] ( 7, 1.61) int -> rbp
; V05 loc2 [V05,T11] ( 3, 0.50) ref -> r14 class-hnd
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T07] ( 2, 1.75) bool -> rax "Inline return value spill temp"
+; V07 tmp1 [V07,T07] ( 3, 1.75) bool -> rbp "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 4, 5.26) ref -> rcx class-hnd single-def "spilling ret_expr"
; V09 tmp3 [V09,T06] ( 4, 1.75) int -> r9 "guarded devirt return temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp"
@@ -51,10 +51,10 @@ G_M24577_IG03: ; bbWeight=0.88, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov rcx, gword ptr [rsi+18H]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M24577_IG18
+ je G_M24577_IG16
mov rdx, 0xD1FFAB1E ; System.Collections.Generic.Dictionary`2[System.String,Newtonsoft.Json.Serialization.JsonProperty]
cmp qword ptr [rcx], rdx
- jne G_M24577_IG19
+ jne G_M24577_IG18
mov rdx, rbx
; gcrRegs +[rdx]
call [<unknown method>]
@@ -71,17 +71,17 @@ G_M24577_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {rax},
mov gword ptr [rsp+28H], rax
mov r9d, 1
;; size=14 bbWeight=0.50 PerfScore 1.63
-G_M24577_IG05: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M24577_IG05: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- movzx rax, r9b
- test eax, eax
- je SHORT G_M24577_IG14
- ;; size=8 bbWeight=0.88 PerfScore 1.31
-G_M24577_IG06: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rax, gword ptr [rsp+28H]
+ movzx rbp, r9b
+ ;; size=4 bbWeight=0.88 PerfScore 0.22
+G_M24577_IG06: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor rax, rax
; gcrRegs +[rax]
- ;; size=5 bbWeight=0.75 PerfScore 0.75
-G_M24577_IG07: ; bbWeight=0.75, epilog, nogc, extend
+ test ebp, ebp
+ cmovne rax, gword ptr [rsp+28H]
+ ;; size=10 bbWeight=0.88 PerfScore 2.19
+G_M24577_IG07: ; bbWeight=0.88, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -89,7 +89,7 @@ G_M24577_IG07: ; bbWeight=0.75, epilog, nogc, extend
pop rdi
pop r14
ret
- ;; size=11 bbWeight=0.75 PerfScore 2.82
+ ;; size=11 bbWeight=0.88 PerfScore 3.29
G_M24577_IG08: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
xor r9, r9
@@ -113,10 +113,10 @@ G_M24577_IG11: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov rdx, gword ptr [rsi+30H]
; gcrRegs +[rdx]
cmp ebp, dword ptr [rdx+10H]
- jae G_M24577_IG20
+ jae SHORT G_M24577_IG19
mov rdx, gword ptr [rdx+08H]
cmp ebp, dword ptr [rdx+08H]
- jae G_M24577_IG21
+ jae SHORT G_M24577_IG20
mov ecx, ebp
mov r14, gword ptr [rdx+8*rcx+10H]
; gcrRegs +[r14]
@@ -128,13 +128,13 @@ G_M24577_IG11: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M24577_IG16
+ jne SHORT G_M24577_IG14
inc ebp
mov rax, gword ptr [rsi+30H]
; gcrRegs +[rax]
cmp ebp, dword ptr [rax+10H]
jl SHORT G_M24577_IG11
- ;; size=64 bbWeight=0.25 PerfScore 6.77
+ ;; size=56 bbWeight=0.25 PerfScore 6.77
G_M24577_IG12: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx rsi r14]
xor rax, rax
@@ -149,26 +149,12 @@ G_M24577_IG13: ; bbWeight=0.12, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=0.12 PerfScore 0.46
-G_M24577_IG14: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.13 PerfScore 0.03
-G_M24577_IG15: ; bbWeight=0.13, epilog, nogc, extend
- add rsp, 48
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=0.13 PerfScore 0.47
-G_M24577_IG16: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+G_M24577_IG14: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[r14]
mov rax, r14
; gcrRegs +[rax]
;; size=3 bbWeight=0.00 PerfScore 0.00
-G_M24577_IG17: ; bbWeight=0.00, epilog, nogc, extend
+G_M24577_IG15: ; bbWeight=0.00, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -177,15 +163,19 @@ G_M24577_IG17: ; bbWeight=0.00, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=0.00 PerfScore 0.00
-G_M24577_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M24577_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r14]
xor r8, r8
; gcrRegs +[r8]
mov gword ptr [rsp+28H], r8
- jmp SHORT G_M24577_IG14
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M24577_IG19: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8] +[rcx rbx]
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M24577_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r8]
+ xor ebp, ebp
+ jmp G_M24577_IG06
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M24577_IG18: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx rbx]
lea r8, [rsp+28H]
mov rdx, rbx
; gcrRegs +[rdx]
@@ -196,18 +186,18 @@ G_M24577_IG19: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
mov r9d, eax
jmp G_M24577_IG05
;; size=29 bbWeight=0 PerfScore 0.00
-G_M24577_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24577_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M24577_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24577_IG20: ; 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 293, prolog size 17, PerfScore 64.59, instruction count 99, allocated bytes for code 293 (MethodHash=ce1d9ffe) for method Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
+; Total bytes of code 278, prolog size 17, PerfScore 63.40, instruction count 92, allocated bytes for code 278 (MethodHash=ce1d9ffe) for method Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
; ============================================================
Unwind Info:
-15 (-5.12%) : 79619.dasm - Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
@@ -12,11 +12,11 @@
; V00 this [V00,T00] ( 6, 3.50) ref -> rsi this class-hnd single-def
; V01 arg1 [V01,T03] ( 5, 3.12) ref -> rbx class-hnd single-def
; V02 arg2 [V02,T01] ( 4, 3.25) int -> rdi single-def
-; V03 loc0 [V03 ] ( 5, 1.62) ref -> [rsp+28H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
+; V03 loc0 [V03 ] ( 5, 1.75) ref -> [rsp+28H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
; V04 loc1 [V04,T08] ( 7, 1.63) int -> rbp
; V05 loc2 [V05,T11] ( 3, 0.50) ref -> r14 class-hnd
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T07] ( 2, 1.75) bool -> rax "Inline return value spill temp"
+; V07 tmp1 [V07,T07] ( 3, 1.75) bool -> rbp "Inline return value spill temp"
; V08 tmp2 [V08,T02] ( 4, 5.24) ref -> rcx class-hnd single-def "spilling ret_expr"
; V09 tmp3 [V09,T06] ( 4, 1.75) int -> r9 "guarded devirt return temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp"
@@ -51,10 +51,10 @@ G_M24577_IG03: ; bbWeight=0.87, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov rcx, gword ptr [rsi+18H]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M24577_IG18
+ je G_M24577_IG16
mov rdx, 0xD1FFAB1E ; System.Collections.Generic.Dictionary`2[System.String,Newtonsoft.Json.Serialization.JsonProperty]
cmp qword ptr [rcx], rdx
- jne G_M24577_IG19
+ jne G_M24577_IG18
mov rdx, rbx
; gcrRegs +[rdx]
call [<unknown method>]
@@ -71,17 +71,17 @@ G_M24577_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {rax},
mov gword ptr [rsp+28H], rax
mov r9d, 1
;; size=14 bbWeight=0.50 PerfScore 1.63
-G_M24577_IG05: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M24577_IG05: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- movzx rax, r9b
- test eax, eax
- je SHORT G_M24577_IG14
- ;; size=8 bbWeight=0.87 PerfScore 1.31
-G_M24577_IG06: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rax, gword ptr [rsp+28H]
+ movzx rbp, r9b
+ ;; size=4 bbWeight=0.87 PerfScore 0.22
+G_M24577_IG06: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor rax, rax
; gcrRegs +[rax]
- ;; size=5 bbWeight=0.75 PerfScore 0.75
-G_M24577_IG07: ; bbWeight=0.75, epilog, nogc, extend
+ test ebp, ebp
+ cmovne rax, gword ptr [rsp+28H]
+ ;; size=10 bbWeight=0.87 PerfScore 2.18
+G_M24577_IG07: ; bbWeight=0.87, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -89,7 +89,7 @@ G_M24577_IG07: ; bbWeight=0.75, epilog, nogc, extend
pop rdi
pop r14
ret
- ;; size=11 bbWeight=0.75 PerfScore 2.80
+ ;; size=11 bbWeight=0.87 PerfScore 3.28
G_M24577_IG08: ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
xor r9, r9
@@ -113,10 +113,10 @@ G_M24577_IG11: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov rdx, gword ptr [rsi+30H]
; gcrRegs +[rdx]
cmp ebp, dword ptr [rdx+10H]
- jae G_M24577_IG20
+ jae SHORT G_M24577_IG19
mov rdx, gword ptr [rdx+08H]
cmp ebp, dword ptr [rdx+08H]
- jae G_M24577_IG21
+ jae SHORT G_M24577_IG20
mov ecx, ebp
mov r14, gword ptr [rdx+8*rcx+10H]
; gcrRegs +[r14]
@@ -128,13 +128,13 @@ G_M24577_IG11: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M24577_IG16
+ jne SHORT G_M24577_IG14
inc ebp
mov rax, gword ptr [rsi+30H]
; gcrRegs +[rax]
cmp ebp, dword ptr [rax+10H]
jl SHORT G_M24577_IG11
- ;; size=64 bbWeight=0.25 PerfScore 6.84
+ ;; size=56 bbWeight=0.25 PerfScore 6.84
G_M24577_IG12: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx rsi r14]
xor rax, rax
@@ -149,26 +149,12 @@ G_M24577_IG13: ; bbWeight=0.13, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=0.13 PerfScore 0.47
-G_M24577_IG14: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.13 PerfScore 0.03
-G_M24577_IG15: ; bbWeight=0.13, epilog, nogc, extend
- add rsp, 48
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=0.13 PerfScore 0.47
-G_M24577_IG16: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+G_M24577_IG14: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[r14]
mov rax, r14
; gcrRegs +[rax]
;; size=3 bbWeight=0.00 PerfScore 0.00
-G_M24577_IG17: ; bbWeight=0.00, epilog, nogc, extend
+G_M24577_IG15: ; bbWeight=0.00, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -177,15 +163,19 @@ G_M24577_IG17: ; bbWeight=0.00, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=0.00 PerfScore 0.00
-G_M24577_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M24577_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r14]
xor r8, r8
; gcrRegs +[r8]
mov gword ptr [rsp+28H], r8
- jmp SHORT G_M24577_IG14
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M24577_IG19: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8] +[rcx rbx]
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M24577_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r8]
+ xor ebp, ebp
+ jmp G_M24577_IG06
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M24577_IG18: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx rbx]
lea r8, [rsp+28H]
mov rdx, rbx
; gcrRegs +[rdx]
@@ -196,18 +186,18 @@ G_M24577_IG19: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
mov r9d, eax
jmp G_M24577_IG05
;; size=29 bbWeight=0 PerfScore 0.00
-G_M24577_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24577_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M24577_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24577_IG20: ; 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 293, prolog size 17, PerfScore 64.62, instruction count 99, allocated bytes for code 293 (MethodHash=ce1d9ffe) for method Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
+; Total bytes of code 278, prolog size 17, PerfScore 63.44, instruction count 92, allocated bytes for code 278 (MethodHash=ce1d9ffe) for method Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
; ============================================================
Unwind Info:
+30 (+11.76%) : 24480.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
@@ -9,20 +9,19 @@
; 3 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 12, 8.99) ref -> rsi class-hnd single-def
+; V00 arg0 [V00,T00] ( 13, 9.99) ref -> rsi class-hnd single-def
; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
-;* V06 tmp4 [V06,T05] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
-; V07 tmp5 [V07,T06] ( 3, 2 ) ref -> rbx class-hnd single-def "Inline stloc first use temp"
-; V08 tmp6 [V08,T07] ( 2, 0 ) bool -> rax "Inline return value spill temp"
+; V06 tmp4 [V06,T03] ( 3, 2.99) bool -> rbx "Inline stloc first use temp"
+; V07 tmp5 [V07,T05] ( 3, 2 ) ref -> rdi class-hnd single-def "Inline stloc first use temp"
+; V08 tmp6 [V08,T06] ( 3, 0 ) bool -> rax "Inline return value spill temp"
; V09 tmp7 [V09,T01] ( 5, 5 ) int -> [rsp+2CH] spill-single-def "Inline stloc first use temp"
; V10 tmp8 [V10,T04] ( 3, 2.98) ref -> rax class-hnd single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T09] ( 2, 0 ) int -> rdx "argument with side effect"
-; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
-; V13 cse0 [V13,T03] ( 3, 3 ) byref -> rbx "CSE - aggressive"
+; V11 tmp9 [V11,T08] ( 2, 0 ) int -> rdx "argument with side effect"
+; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
;
; Lcl frame size = 48
@@ -35,41 +34,45 @@ G_M57458_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rsi]
mov edi, edx
;; size=12 bbWeight=1 PerfScore 3.75
-G_M57458_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M57458_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; const ptr
mov rax, gword ptr [rax]
; gcrRegs +[rax]
cmp byte ptr [rax+9DH], 0
- jne SHORT G_M57458_IG09
- ;; size=22 bbWeight=1 PerfScore 6.25
-G_M57458_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jne G_M57458_IG10
+ ;; size=26 bbWeight=1 PerfScore 6.25
+G_M57458_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ xor ebx, ebx
mov eax, dword ptr [rsi+34H]
mov dword ptr [rsp+2CH], eax
test eax, 0xD1FFAB1E
jne G_M57458_IG12
- lea rbx, bword ptr [rsi+34H]
- ; byrRegs +[rbx]
- mov ecx, eax
- or ecx, 0xD1FFAB1E
+ lea rcx, bword ptr [rsi+34H]
+ ; byrRegs +[rcx]
+ mov edx, eax
+ or edx, 0xD1FFAB1E
lock
- cmpxchg dword ptr [rbx], ecx
+ cmpxchg dword ptr [rcx], edx
cmp eax, dword ptr [rsp+2CH]
- jne SHORT G_M57458_IG10
- ;; size=40 bbWeight=1 PerfScore 26.25
-G_M57458_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ jne G_M57458_IG11
+ ;; size=46 bbWeight=1 PerfScore 26.50
+G_M57458_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rcx]
mov dword ptr [rsi+38H], edi
- mov ecx, dword ptr [rsi+34H]
- or ecx, 0xD1FFAB1E
- xchg dword ptr [rbx], ecx
- mov rbx, gword ptr [rsi+28H]
- ; gcrRegs +[rbx]
- ; byrRegs -[rbx]
- test rbx, rbx
- jne SHORT G_M57458_IG11
- ;; size=23 bbWeight=1 PerfScore 26.50
+ lea rcx, bword ptr [rsi+34H]
+ ; byrRegs +[rcx]
+ mov edx, dword ptr [rsi+34H]
+ or edx, 0xD1FFAB1E
+ xchg dword ptr [rcx], edx
+ mov rdi, gword ptr [rsi+28H]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
+ jne G_M57458_IG14
+ ;; size=31 bbWeight=1 PerfScore 27.00
G_M57458_IG05: ; bbWeight=0.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rcx]
lea rcx, bword ptr [rsi+20H]
; byrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; const ptr
@@ -91,17 +94,21 @@ G_M57458_IG06: ; bbWeight=1.00, gcrefRegs=0041 {rax rsi}, byrefRegs=0000
; gcrRegs -[rax rcx rdx rsi]
; gcr arg pop 0
;; size=12 bbWeight=1.00 PerfScore 3.51
-G_M57458_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M57458_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M57458_IG07: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ebx, 1
+ ;; size=5 bbWeight=0.99 PerfScore 0.25
+G_M57458_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test ebx, ebx
+ je SHORT G_M57458_IG15
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M57458_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M57458_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M57458_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; const ptr
mov rbx, gword ptr [rcx]
@@ -121,8 +128,7 @@ G_M57458_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
; gcr arg pop 0
jmp G_M57458_IG03
;; size=46 bbWeight=0 PerfScore 0.00
-G_M57458_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+G_M57458_IG11: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
mov edx, 0xD1FFAB1E
@@ -130,26 +136,31 @@ G_M57458_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
call [System.Threading.Tasks.Task:AtomicStateUpdateSlow(int,int):bool:this]
; gcrRegs -[rcx]
; gcr arg pop 0
+ jmp SHORT G_M57458_IG13
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M57458_IG12: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57458_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test eax, eax
- je SHORT G_M57458_IG12
+ je SHORT G_M57458_IG08
jmp G_M57458_IG04
- ;; size=29 bbWeight=0 PerfScore 0.00
-G_M57458_IG11: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
- ; byrRegs -[rbx]
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M57458_IG14: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdi]
mov rcx, rsi
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, rbx
+ mov rcx, rdi
; gcrRegs +[rcx]
call [System.Threading.Tasks.Task+ContingentProperties:SetCompleted():this]
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rcx rdi]
; gcr arg pop 0
jmp G_M57458_IG05
;; size=23 bbWeight=0 PerfScore 0.00
-G_M57458_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57458_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov ecx, 24
call [System.ThrowHelper:ThrowInvalidOperationException(int)]
@@ -157,7 +168,7 @@ G_M57458_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 255, prolog size 7, PerfScore 99.69, instruction count 68, allocated bytes for code 255 (MethodHash=2c691f8d) for method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
+; Total bytes of code 285, prolog size 7, PerfScore 104.69, instruction count 74, allocated bytes for code 285 (MethodHash=2c691f8d) for method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
; ============================================================
Unwind Info:
+30 (+11.76%) : 24576.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
@@ -9,20 +9,19 @@
; 3 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 12, 9.00) ref -> rsi class-hnd single-def
+; V00 arg0 [V00,T00] ( 13, 10.00) ref -> rsi class-hnd single-def
; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdi single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
-;* V06 tmp4 [V06,T05] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
-; V07 tmp5 [V07,T06] ( 3, 2.00) ref -> rbx class-hnd single-def "Inline stloc first use temp"
-; V08 tmp6 [V08,T07] ( 2, 0 ) bool -> rax "Inline return value spill temp"
+; V06 tmp4 [V06,T04] ( 3, 2.99) bool -> rbx "Inline stloc first use temp"
+; V07 tmp5 [V07,T05] ( 3, 2.00) ref -> rdi class-hnd single-def "Inline stloc first use temp"
+; V08 tmp6 [V08,T06] ( 3, 0 ) bool -> rax "Inline return value spill temp"
; V09 tmp7 [V09,T01] ( 5, 5 ) int -> [rsp+2CH] spill-single-def "Inline stloc first use temp"
; V10 tmp8 [V10,T03] ( 3, 2.99) ref -> rax class-hnd single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T09] ( 2, 0 ) int -> rdx "argument with side effect"
-; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
-; V13 cse0 [V13,T04] ( 3, 3.00) byref -> rbx "CSE - aggressive"
+; V11 tmp9 [V11,T08] ( 2, 0 ) int -> rdx "argument with side effect"
+; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
;
; Lcl frame size = 48
@@ -35,43 +34,47 @@ G_M57458_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rsi]
mov edi, edx
;; size=12 bbWeight=1 PerfScore 3.75
-G_M57458_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M57458_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; const ptr
mov rax, gword ptr [rax]
; gcrRegs +[rax]
cmp byte ptr [rax+9DH], 0
- jne SHORT G_M57458_IG10
- ;; size=22 bbWeight=1 PerfScore 6.25
+ jne G_M57458_IG11
+ ;; size=26 bbWeight=1 PerfScore 6.25
G_M57458_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ xor ebx, ebx
mov eax, dword ptr [rsi+34H]
mov dword ptr [rsp+2CH], eax
test eax, 0xD1FFAB1E
jne G_M57458_IG13
- ;; size=18 bbWeight=1 PerfScore 4.25
-G_M57458_IG04: ; bbWeight=1.00, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- lea rbx, bword ptr [rsi+34H]
- ; byrRegs +[rbx]
- mov ecx, eax
- or ecx, 0xD1FFAB1E
+ ;; size=20 bbWeight=1 PerfScore 4.50
+G_M57458_IG04: ; bbWeight=1.00, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ lea rcx, bword ptr [rsi+34H]
+ ; byrRegs +[rcx]
+ mov edx, eax
+ or edx, 0xD1FFAB1E
lock
- cmpxchg dword ptr [rbx], ecx
+ cmpxchg dword ptr [rcx], edx
cmp eax, dword ptr [rsp+2CH]
- jne SHORT G_M57458_IG11
- ;; size=22 bbWeight=1.00 PerfScore 22.00
-G_M57458_IG05: ; bbWeight=1.00, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ jne G_M57458_IG12
+ ;; size=26 bbWeight=1.00 PerfScore 22.00
+G_M57458_IG05: ; bbWeight=1.00, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rcx]
mov dword ptr [rsi+38H], edi
- mov ecx, dword ptr [rsi+34H]
- or ecx, 0xD1FFAB1E
- xchg dword ptr [rbx], ecx
- mov rbx, gword ptr [rsi+28H]
- ; gcrRegs +[rbx]
- ; byrRegs -[rbx]
- test rbx, rbx
- jne SHORT G_M57458_IG12
- ;; size=23 bbWeight=1.00 PerfScore 26.50
+ lea rcx, bword ptr [rsi+34H]
+ ; byrRegs +[rcx]
+ mov edx, dword ptr [rsi+34H]
+ or edx, 0xD1FFAB1E
+ xchg dword ptr [rcx], edx
+ mov rdi, gword ptr [rsi+28H]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
+ jne G_M57458_IG15
+ ;; size=31 bbWeight=1.00 PerfScore 27.00
G_M57458_IG06: ; bbWeight=0.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rcx]
lea rcx, bword ptr [rsi+20H]
; byrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; const ptr
@@ -93,17 +96,21 @@ G_M57458_IG07: ; bbWeight=1.01, gcrefRegs=0041 {rax rsi}, byrefRegs=0000
; gcrRegs -[rax rcx rdx rsi]
; gcr arg pop 0
;; size=12 bbWeight=1.01 PerfScore 3.53
-G_M57458_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M57458_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M57458_IG08: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ebx, 1
+ ;; size=5 bbWeight=0.99 PerfScore 0.25
+G_M57458_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test ebx, ebx
+ je SHORT G_M57458_IG16
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M57458_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M57458_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M57458_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; const ptr
mov rbx, gword ptr [rcx]
@@ -123,8 +130,7 @@ G_M57458_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
; gcr arg pop 0
jmp G_M57458_IG03
;; size=46 bbWeight=0 PerfScore 0.00
-G_M57458_IG11: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+G_M57458_IG12: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
mov edx, 0xD1FFAB1E
@@ -132,26 +138,31 @@ G_M57458_IG11: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
call [System.Threading.Tasks.Task:AtomicStateUpdateSlow(int,int):bool:this]
; gcrRegs -[rcx]
; gcr arg pop 0
+ jmp SHORT G_M57458_IG14
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M57458_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57458_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test eax, eax
- je SHORT G_M57458_IG13
+ je SHORT G_M57458_IG09
jmp G_M57458_IG05
- ;; size=29 bbWeight=0 PerfScore 0.00
-G_M57458_IG12: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
- ; byrRegs -[rbx]
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M57458_IG15: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdi]
mov rcx, rsi
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, rbx
+ mov rcx, rdi
; gcrRegs +[rcx]
call [System.Threading.Tasks.Task+ContingentProperties:SetCompleted():this]
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rcx rdi]
; gcr arg pop 0
jmp G_M57458_IG06
;; size=23 bbWeight=0 PerfScore 0.00
-G_M57458_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57458_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov ecx, 24
call [System.ThrowHelper:ThrowInvalidOperationException(int)]
@@ -159,7 +170,7 @@ G_M57458_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 255, prolog size 7, PerfScore 99.74, instruction count 68, allocated bytes for code 255 (MethodHash=2c691f8d) for method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
+; Total bytes of code 285, prolog size 7, PerfScore 104.74, instruction count 74, allocated bytes for code 285 (MethodHash=2c691f8d) for method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
; ============================================================
Unwind Info:
+30 (+11.76%) : 30876.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
@@ -9,20 +9,19 @@
; 3 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 12, 9.05) ref -> rsi class-hnd single-def
+; V00 arg0 [V00,T00] ( 13, 10.06) ref -> rsi class-hnd single-def
; V01 arg1 [V01,T01] ( 3, 3.01) int -> rdi single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
-;* V06 tmp4 [V06,T06] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
-; V07 tmp5 [V07,T05] ( 3, 2.02) ref -> rbx class-hnd single-def "Inline stloc first use temp"
-; V08 tmp6 [V08,T07] ( 2, 0 ) bool -> rax "Inline return value spill temp"
+; V06 tmp4 [V06,T04] ( 3, 3.01) bool -> rbx "Inline stloc first use temp"
+; V07 tmp5 [V07,T05] ( 3, 2.02) ref -> rdi class-hnd single-def "Inline stloc first use temp"
+; V08 tmp6 [V08,T06] ( 3, 0 ) bool -> rax "Inline return value spill temp"
; V09 tmp7 [V09,T02] ( 5, 5 ) int -> [rsp+2CH] spill-single-def "Inline stloc first use temp"
; V10 tmp8 [V10,T03] ( 3, 3.02) ref -> rax class-hnd single-def "Inline stloc first use temp"
-; V11 tmp9 [V11,T09] ( 2, 0 ) int -> rdx "argument with side effect"
-; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
-; V13 cse0 [V13,T04] ( 3, 3.01) byref -> rbx "CSE - aggressive"
+; V11 tmp9 [V11,T08] ( 2, 0 ) int -> rdx "argument with side effect"
+; V12 tmp10 [V12,T07] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
;
; Lcl frame size = 48
@@ -35,41 +34,45 @@ G_M57458_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rsi]
mov edi, edx
;; size=12 bbWeight=1 PerfScore 3.75
-G_M57458_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M57458_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; const ptr
mov rax, gword ptr [rax]
; gcrRegs +[rax]
cmp byte ptr [rax+9DH], 0
- jne SHORT G_M57458_IG09
- ;; size=22 bbWeight=1 PerfScore 6.25
-G_M57458_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jne G_M57458_IG10
+ ;; size=26 bbWeight=1 PerfScore 6.25
+G_M57458_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ xor ebx, ebx
mov eax, dword ptr [rsi+34H]
mov dword ptr [rsp+2CH], eax
test eax, 0xD1FFAB1E
jne G_M57458_IG12
- lea rbx, bword ptr [rsi+34H]
- ; byrRegs +[rbx]
- mov ecx, eax
- or ecx, 0xD1FFAB1E
+ lea rcx, bword ptr [rsi+34H]
+ ; byrRegs +[rcx]
+ mov edx, eax
+ or edx, 0xD1FFAB1E
lock
- cmpxchg dword ptr [rbx], ecx
+ cmpxchg dword ptr [rcx], edx
cmp eax, dword ptr [rsp+2CH]
- jne SHORT G_M57458_IG10
- ;; size=40 bbWeight=1 PerfScore 26.25
-G_M57458_IG04: ; bbWeight=1.01, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ jne G_M57458_IG11
+ ;; size=46 bbWeight=1 PerfScore 26.50
+G_M57458_IG04: ; bbWeight=1.01, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rcx]
mov dword ptr [rsi+38H], edi
- mov ecx, dword ptr [rsi+34H]
- or ecx, 0xD1FFAB1E
- xchg dword ptr [rbx], ecx
- mov rbx, gword ptr [rsi+28H]
- ; gcrRegs +[rbx]
- ; byrRegs -[rbx]
- test rbx, rbx
- jne SHORT G_M57458_IG11
- ;; size=23 bbWeight=1.01 PerfScore 26.80
+ lea rcx, bword ptr [rsi+34H]
+ ; byrRegs +[rcx]
+ mov edx, dword ptr [rsi+34H]
+ or edx, 0xD1FFAB1E
+ xchg dword ptr [rcx], edx
+ mov rdi, gword ptr [rsi+28H]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
+ jne G_M57458_IG14
+ ;; size=31 bbWeight=1.01 PerfScore 27.30
G_M57458_IG05: ; bbWeight=1.01, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rcx]
lea rcx, bword ptr [rsi+20H]
; byrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; const ptr
@@ -92,16 +95,20 @@ G_M57458_IG06: ; bbWeight=1.00, gcrefRegs=0041 {rax rsi}, byrefRegs=0000
; gcr arg pop 0
;; size=12 bbWeight=1.00 PerfScore 3.50
G_M57458_IG07: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- nop
- ;; size=1 bbWeight=1.01 PerfScore 0.25
-G_M57458_IG08: ; bbWeight=1.01, epilog, nogc, extend
+ mov ebx, 1
+ ;; size=5 bbWeight=1.01 PerfScore 0.25
+G_M57458_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test ebx, ebx
+ je SHORT G_M57458_IG15
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M57458_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=1.01 PerfScore 2.78
-G_M57458_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=1 PerfScore 2.75
+G_M57458_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; const ptr
mov rbx, gword ptr [rcx]
@@ -121,8 +128,7 @@ G_M57458_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
; gcr arg pop 0
jmp G_M57458_IG03
;; size=46 bbWeight=0 PerfScore 0.00
-G_M57458_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+G_M57458_IG11: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
mov edx, 0xD1FFAB1E
@@ -130,26 +136,31 @@ G_M57458_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
call [System.Threading.Tasks.Task:AtomicStateUpdateSlow(int,int):bool:this]
; gcrRegs -[rcx]
; gcr arg pop 0
+ jmp SHORT G_M57458_IG13
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M57458_IG12: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57458_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test eax, eax
- je SHORT G_M57458_IG12
+ je SHORT G_M57458_IG08
jmp G_M57458_IG04
- ;; size=29 bbWeight=0 PerfScore 0.00
-G_M57458_IG11: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx]
- ; byrRegs -[rbx]
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M57458_IG14: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdi]
mov rcx, rsi
; gcrRegs +[rcx]
call [System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rcx, rbx
+ mov rcx, rdi
; gcrRegs +[rcx]
call [System.Threading.Tasks.Task+ContingentProperties:SetCompleted():this]
- ; gcrRegs -[rcx rbx]
+ ; gcrRegs -[rcx rdi]
; gcr arg pop 0
jmp G_M57458_IG05
;; size=23 bbWeight=0 PerfScore 0.00
-G_M57458_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57458_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov ecx, 24
call [System.ThrowHelper:ThrowInvalidOperationException(int)]
@@ -157,7 +168,7 @@ G_M57458_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 255, prolog size 7, PerfScore 100.14, instruction count 68, allocated bytes for code 255 (MethodHash=2c691f8d) for method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
+; Total bytes of code 285, prolog size 7, PerfScore 105.12, instruction count 74, allocated bytes for code 285 (MethodHash=2c691f8d) for method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
; ============================================================
Unwind Info:
benchmarks.run.windows.x64.checked.mch
-4 (-1.81%) : 20972.dasm - MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
@@ -31,13 +31,13 @@ G_M45147_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov rdi, rdx
; gcrRegs +[rdi]
;; size=14 bbWeight=1 PerfScore 4.75
-G_M45147_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+G_M45147_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
xor ebx, ebx
cmp dword ptr [rsi+34H], 45
- jne G_M45147_IG07
+ jne SHORT G_M45147_IG04
lea rbp, bword ptr [rsi+08H]
; byrRegs +[rbp]
- ;; size=16 bbWeight=1 PerfScore 4.75
+ ;; size=12 bbWeight=1 PerfScore 4.75
G_M45147_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0060 {rbp rsi}, byref, isz
mov rcx, rbp
; byrRegs +[rcx]
@@ -136,7 +136,7 @@ G_M45147_IG08: ; bbWeight=0.50, epilog, nogc, extend
; gcr arg pop 0
;; size=14 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 221, prolog size 14, PerfScore 80.35, instruction count 61, allocated bytes for code 221 (MethodHash=6aa94fa4) for method MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
+; Total bytes of code 217, prolog size 14, PerfScore 79.95, instruction count 61, allocated bytes for code 217 (MethodHash=6aa94fa4) for method MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
; ============================================================
Unwind Info:
-4 (-0.70%) : 10557.dasm - Jil.Common.ExtensionMethods:GetMethod(System.Type,System.String,int,System.Type[]):System.Reflection.MethodInfo
@@ -160,10 +160,10 @@ G_M5905_IG05: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov r12d, 1
xor r13d, r13d
test r14d, r14d
- jle G_M5905_IG17
+ jle SHORT G_M5905_IG13
cmp r15d, r14d
jl SHORT G_M5905_IG10
- ;; size=23 bbWeight=4 PerfScore 12.00
+ ;; size=19 bbWeight=4 PerfScore 12.00
G_M5905_IG06: ; bbWeight=31.68, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r15d, r13d
mov rcx, gword ptr [rbx+8*r15+10H]
@@ -353,7 +353,7 @@ G_M5905_IG28: ; bbWeight=1, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 574, prolog size 43, PerfScore 911.88, instruction count 171, allocated bytes for code 574 (MethodHash=3fefe8ee) for method Jil.Common.ExtensionMethods:GetMethod(System.Type,System.String,int,System.Type[]):System.Reflection.MethodInfo
+; Total bytes of code 570, prolog size 43, PerfScore 911.48, instruction count 171, allocated bytes for code 570 (MethodHash=3fefe8ee) for method Jil.Common.ExtensionMethods:GetMethod(System.Type,System.String,int,System.Type[]):System.Reflection.MethodInfo
; ============================================================
Unwind Info:
-4 (-0.67%) : 7979.dasm - System.Diagnostics.TraceUtils:VerifyAttributes(System.Collections.Specialized.StringDictionary,System.String[],System.Object)
@@ -101,14 +101,14 @@ G_M63624_IG06: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rax]
xor r14d, r14d
test rsi, rsi
- je G_M63624_IG15
+ je G_M63624_IG12
;; size=12 bbWeight=4 PerfScore 6.00
-G_M63624_IG07: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M63624_IG07: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
xor r15d, r15d
mov r12d, dword ptr [rsi+08H]
test r12d, r12d
- jle G_M63624_IG15
- ;; size=16 bbWeight=2 PerfScore 7.00
+ jle SHORT G_M63624_IG12
+ ;; size=12 bbWeight=2 PerfScore 7.00
G_M63624_IG08: ; bbWeight=16, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, r15d
mov r13, gword ptr [rsi+8*rcx+10H]
@@ -329,7 +329,7 @@ G_M63624_IG24: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 593, prolog size 31, PerfScore 492.05, instruction count 166, allocated bytes for code 593 (MethodHash=c5b80777) for method System.Diagnostics.TraceUtils:VerifyAttributes(System.Collections.Specialized.StringDictionary,System.String[],System.Object)
+; Total bytes of code 589, prolog size 31, PerfScore 491.65, instruction count 166, allocated bytes for code 589 (MethodHash=c5b80777) for method System.Diagnostics.TraceUtils:VerifyAttributes(System.Collections.Specialized.StringDictionary,System.String[],System.Object)
; ============================================================
Unwind Info:
+22 (+5.02%) : 15722.dasm - System.MathBenchmarks.Double:CopySignTest()
@@ -21,33 +21,33 @@
; V11 tmp7 [V11,T05] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
; V13 tmp9 [V13,T08] ( 3, 0 ) int -> rdi "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) byref -> rsi single-def "Inlining Arg"
-;* V15 tmp11 [V15,T19] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V14 tmp10 [V14,T12] ( 2, 0 ) byref -> rsi single-def "Inlining Arg"
+; V15 tmp11 [V15,T09] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V18 tmp14 [V18,T11] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V18 tmp14 [V18,T13] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument"
; V20 tmp16 [V20,T06] ( 4, 0 ) int -> rsi "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
-; V22 tmp18 [V22,T09] ( 3, 0 ) int -> rbx "Inlining Arg"
-; V23 tmp19 [V23,T12] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
-;* V24 tmp20 [V24,T20] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V22 tmp18 [V22,T10] ( 3, 0 ) int -> rbx "Inlining Arg"
+; V23 tmp19 [V23,T14] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
+; V24 tmp20 [V24,T11] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V27 tmp23 [V27,T13] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V27 tmp23 [V27,T15] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref V10._reference(offs=0x00) P-INDEP "field V10._reference (fldOffset=0x0)"
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)"
-; V30 tmp26 [V30,T14] ( 2, 0 ) byref -> rsi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
+; V30 tmp26 [V30,T16] ( 2, 0 ) byref -> rsi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref single-def V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)"
-; V32 tmp28 [V32,T15] ( 2, 0 ) byref -> rsi single-def V16._reference(offs=0x00) P-INDEP "field V16._reference (fldOffset=0x0)"
+; V32 tmp28 [V32,T17] ( 2, 0 ) byref -> rsi single-def V16._reference(offs=0x00) P-INDEP "field V16._reference (fldOffset=0x0)"
;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref single-def V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)"
;* V34 tmp30 [V34 ] ( 0, 0 ) byref -> zero-ref V19._reference(offs=0x00) P-INDEP "field V19._reference (fldOffset=0x0)"
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)"
-; V36 tmp32 [V36,T16] ( 2, 0 ) byref -> rdi single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
+; V36 tmp32 [V36,T18] ( 2, 0 ) byref -> rdi single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref single-def V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)"
-; V38 tmp34 [V38,T17] ( 2, 0 ) byref -> rdi single-def V25._reference(offs=0x00) P-INDEP "field V25._reference (fldOffset=0x0)"
+; V38 tmp34 [V38,T19] ( 2, 0 ) byref -> rdi single-def V25._reference(offs=0x00) P-INDEP "field V25._reference (fldOffset=0x0)"
;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref single-def V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)"
-; V40 tmp36 [V40,T18] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V40 tmp36 [V40,T20] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V41 cse0 [V41,T03] ( 3, 9 ) simd16 -> mm2 "CSE - aggressive"
; V42 cse1 [V42,T04] ( 2, 5 ) double -> mm1 "CSE - aggressive"
;
@@ -107,7 +107,7 @@ G_M64933_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
mov ecx, dword ptr [rsp+38H]
cmp ecx, dword ptr [rsp+48H]
- ja SHORT G_M64933_IG09
+ ja SHORT G_M64933_IG10
mov rax, bword ptr [rsp+40H]
; byrRegs +[rax]
mov edx, ecx
@@ -121,20 +121,26 @@ G_M64933_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
call [System.Diagnostics.Debug:Assert(bool)]
; byrRegs -[rax]
; gcr arg pop 0
+ xor ecx, ecx
cmp edi, 16
jb SHORT G_M64933_IG07
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
vmovdqu ymm0, ymmword ptr [rcx]
vmovdqu ymmword ptr [rsi], ymm0
- mov ecx, dword ptr [rsp+38H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=92 bbWeight=0 PerfScore 0.00
+G_M64933_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rsi]
+ test ecx, ecx
+ je SHORT G_M64933_IG08
+ mov ecx, dword ptr [rsp+38H]
add ecx, 16
mov dword ptr [rsp+38H], ecx
- jmp SHORT G_M64933_IG08
- ;; size=98 bbWeight=0 PerfScore 0.00
-G_M64933_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rsi]
+ jmp SHORT G_M64933_IG09
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M64933_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+28H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -142,21 +148,21 @@ G_M64933_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=21 bbWeight=0 PerfScore 0.00
-G_M64933_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M64933_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rcx, [rsp+28H]
xor edx, edx
call [<unknown method>]
; gcr arg pop 0
mov esi, dword ptr [rsp+38H]
cmp esi, dword ptr [rsp+48H]
- jbe SHORT G_M64933_IG10
+ jbe SHORT G_M64933_IG11
;; size=23 bbWeight=0 PerfScore 0.00
-G_M64933_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64933_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M64933_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M64933_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, bword ptr [rsp+40H]
; byrRegs +[rcx]
mov eax, esi
@@ -170,20 +176,26 @@ G_M64933_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
shr ecx, 31
call [System.Diagnostics.Debug:Assert(bool)]
; gcr arg pop 0
+ xor ecx, ecx
cmp ebx, 16
- jb SHORT G_M64933_IG11
+ jb SHORT G_M64933_IG12
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
vmovdqu ymm0, ymmword ptr [rcx]
vmovdqu ymmword ptr [rdi], ymm0
- mov ecx, dword ptr [rsp+38H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=60 bbWeight=0 PerfScore 0.00
+G_M64933_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rdi]
+ test ecx, ecx
+ je SHORT G_M64933_IG13
+ mov ecx, dword ptr [rsp+38H]
add ecx, 16
mov dword ptr [rsp+38H], ecx
- jmp SHORT G_M64933_IG12
- ;; size=66 bbWeight=0 PerfScore 0.00
-G_M64933_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ jmp SHORT G_M64933_IG14
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M64933_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+28H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -191,7 +203,7 @@ G_M64933_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=21 bbWeight=0 PerfScore 0.00
-G_M64933_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64933_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+28H]
vmovaps xmm1, xmm6
call [<unknown method>]
@@ -226,7 +238,7 @@ RWD24 dd 00000000h, 00000000h
RWD32 dq 8000000000000000h, 8000000000000000h
-; Total bytes of code 438, prolog size 39, PerfScore 114.97, instruction count 107, allocated bytes for code 438 (MethodHash=99c5025a) for method System.MathBenchmarks.Double:CopySignTest()
+; Total bytes of code 460, prolog size 39, PerfScore 117.17, instruction count 115, allocated bytes for code 460 (MethodHash=99c5025a) for method System.MathBenchmarks.Double:CopySignTest()
; ============================================================
Unwind Info:
+22 (+5.02%) : 18725.dasm - System.MathBenchmarks.Single:CopySignTest()
@@ -21,33 +21,33 @@
; V11 tmp7 [V11,T05] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
; V13 tmp9 [V13,T08] ( 3, 0 ) int -> rdi "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) byref -> rsi single-def "Inlining Arg"
-;* V15 tmp11 [V15,T19] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V14 tmp10 [V14,T12] ( 2, 0 ) byref -> rsi single-def "Inlining Arg"
+; V15 tmp11 [V15,T09] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V18 tmp14 [V18,T11] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V18 tmp14 [V18,T13] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument"
; V20 tmp16 [V20,T06] ( 4, 0 ) int -> rsi "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
-; V22 tmp18 [V22,T09] ( 3, 0 ) int -> rbx "Inlining Arg"
-; V23 tmp19 [V23,T12] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
-;* V24 tmp20 [V24,T20] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V22 tmp18 [V22,T10] ( 3, 0 ) int -> rbx "Inlining Arg"
+; V23 tmp19 [V23,T14] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
+; V24 tmp20 [V24,T11] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V27 tmp23 [V27,T13] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V27 tmp23 [V27,T15] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref V10._reference(offs=0x00) P-INDEP "field V10._reference (fldOffset=0x0)"
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)"
-; V30 tmp26 [V30,T14] ( 2, 0 ) byref -> rsi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
+; V30 tmp26 [V30,T16] ( 2, 0 ) byref -> rsi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref single-def V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)"
-; V32 tmp28 [V32,T15] ( 2, 0 ) byref -> rsi single-def V16._reference(offs=0x00) P-INDEP "field V16._reference (fldOffset=0x0)"
+; V32 tmp28 [V32,T17] ( 2, 0 ) byref -> rsi single-def V16._reference(offs=0x00) P-INDEP "field V16._reference (fldOffset=0x0)"
;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref single-def V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)"
;* V34 tmp30 [V34 ] ( 0, 0 ) byref -> zero-ref V19._reference(offs=0x00) P-INDEP "field V19._reference (fldOffset=0x0)"
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)"
-; V36 tmp32 [V36,T16] ( 2, 0 ) byref -> rdi single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
+; V36 tmp32 [V36,T18] ( 2, 0 ) byref -> rdi single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref single-def V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)"
-; V38 tmp34 [V38,T17] ( 2, 0 ) byref -> rdi single-def V25._reference(offs=0x00) P-INDEP "field V25._reference (fldOffset=0x0)"
+; V38 tmp34 [V38,T19] ( 2, 0 ) byref -> rdi single-def V25._reference(offs=0x00) P-INDEP "field V25._reference (fldOffset=0x0)"
;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref single-def V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)"
-; V40 tmp36 [V40,T18] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V40 tmp36 [V40,T20] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V41 cse0 [V41,T03] ( 3, 9 ) simd16 -> mm2 "CSE - aggressive"
; V42 cse1 [V42,T04] ( 2, 5 ) float -> mm1 "CSE - aggressive"
;
@@ -107,7 +107,7 @@ G_M19210_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
mov ecx, dword ptr [rsp+38H]
cmp ecx, dword ptr [rsp+48H]
- ja SHORT G_M19210_IG09
+ ja SHORT G_M19210_IG10
mov rax, bword ptr [rsp+40H]
; byrRegs +[rax]
mov edx, ecx
@@ -121,20 +121,26 @@ G_M19210_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
call [System.Diagnostics.Debug:Assert(bool)]
; byrRegs -[rax]
; gcr arg pop 0
+ xor ecx, ecx
cmp edi, 16
jb SHORT G_M19210_IG07
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
vmovdqu ymm0, ymmword ptr [rcx]
vmovdqu ymmword ptr [rsi], ymm0
- mov ecx, dword ptr [rsp+38H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=92 bbWeight=0 PerfScore 0.00
+G_M19210_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rsi]
+ test ecx, ecx
+ je SHORT G_M19210_IG08
+ mov ecx, dword ptr [rsp+38H]
add ecx, 16
mov dword ptr [rsp+38H], ecx
- jmp SHORT G_M19210_IG08
- ;; size=98 bbWeight=0 PerfScore 0.00
-G_M19210_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rsi]
+ jmp SHORT G_M19210_IG09
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M19210_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+28H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -142,21 +148,21 @@ G_M19210_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=21 bbWeight=0 PerfScore 0.00
-G_M19210_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M19210_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rcx, [rsp+28H]
xor edx, edx
call [<unknown method>]
; gcr arg pop 0
mov esi, dword ptr [rsp+38H]
cmp esi, dword ptr [rsp+48H]
- jbe SHORT G_M19210_IG10
+ jbe SHORT G_M19210_IG11
;; size=23 bbWeight=0 PerfScore 0.00
-G_M19210_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19210_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M19210_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M19210_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, bword ptr [rsp+40H]
; byrRegs +[rcx]
mov eax, esi
@@ -170,20 +176,26 @@ G_M19210_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
shr ecx, 31
call [System.Diagnostics.Debug:Assert(bool)]
; gcr arg pop 0
+ xor ecx, ecx
cmp ebx, 16
- jb SHORT G_M19210_IG11
+ jb SHORT G_M19210_IG12
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
vmovdqu ymm0, ymmword ptr [rcx]
vmovdqu ymmword ptr [rdi], ymm0
- mov ecx, dword ptr [rsp+38H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=60 bbWeight=0 PerfScore 0.00
+G_M19210_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rdi]
+ test ecx, ecx
+ je SHORT G_M19210_IG13
+ mov ecx, dword ptr [rsp+38H]
add ecx, 16
mov dword ptr [rsp+38H], ecx
- jmp SHORT G_M19210_IG12
- ;; size=66 bbWeight=0 PerfScore 0.00
-G_M19210_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ jmp SHORT G_M19210_IG14
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M19210_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+28H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -191,7 +203,7 @@ G_M19210_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=21 bbWeight=0 PerfScore 0.00
-G_M19210_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19210_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+28H]
vmovaps xmm1, xmm6
call [<unknown method>]
@@ -226,7 +238,7 @@ RWD12 dd 00000000h
RWD16 dq 8000000080000000h, 8000000080000000h
-; Total bytes of code 438, prolog size 39, PerfScore 114.97, instruction count 107, allocated bytes for code 438 (MethodHash=d136b4f5) for method System.MathBenchmarks.Single:CopySignTest()
+; Total bytes of code 460, prolog size 39, PerfScore 117.17, instruction count 115, allocated bytes for code 460 (MethodHash=d136b4f5) for method System.MathBenchmarks.Single:CopySignTest()
; ============================================================
Unwind Info:
+14 (+5.69%) : 8590.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):bool
@@ -7,25 +7,25 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T09] ( 4, 11 ) ref -> rdi class-hnd single-def
-; V01 arg1 [V01,T11] ( 4, 7 ) ref -> rbx class-hnd single-def
-; V02 arg2 [V02,T04] ( 5, 23 ) byref -> rsi single-def
-; V03 loc0 [V03,T08] ( 6, 21 ) int -> r14
-;* V04 loc1 [V04,T12] ( 0, 0 ) bool -> zero-ref
-; V05 loc2 [V05,T10] ( 2, 12 ) ref -> r12 class-hnd
-; V06 loc3 [V06,T00] ( 9,100 ) int -> r13
+; V00 arg0 [V00,T07] ( 4, 11 ) ref -> rdi class-hnd single-def
+; V01 arg1 [V01,T12] ( 4, 7 ) ref -> rbx class-hnd single-def
+; V02 arg2 [V02,T04] ( 5, 21 ) byref -> rsi single-def
+; V03 loc0 [V03,T06] ( 6, 19 ) int -> r14
+; V04 loc1 [V04,T11] ( 3, 10 ) bool -> r12
+; V05 loc2 [V05,T10] ( 2, 12 ) ref -> r13 class-hnd
+; V06 loc3 [V06,T00] ( 9, 96 ) int -> [rsp+24H]
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp"
-; V09 tmp2 [V09,T05] ( 3, 24 ) ref -> rax class-hnd "impAppendStmt"
+; V09 tmp2 [V09,T08] ( 3, 12 ) ref -> rdx class-hnd "impAppendStmt"
;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V11 tmp4 [V11,T15] ( 0, 0 ) bool -> zero-ref V08.hasValue(offs=0x00) P-INDEP "field V08.hasValue (fldOffset=0x0)"
-; V12 tmp5 [V12,T13] ( 2, 8 ) int -> rdx V08.value(offs=0x04) P-INDEP "field V08.value (fldOffset=0x4)"
+; V12 tmp5 [V12,T14] ( 2, 4 ) int -> rcx V08.value(offs=0x04) P-INDEP "field V08.value (fldOffset=0x4)"
; V13 tmp6 [V13,T01] ( 3, 96 ) ref -> rcx "arr expr"
; V14 tmp7 [V14,T02] ( 3, 48 ) ref -> rcx "argument with side effect"
; V15 tmp8 [V15,T03] ( 3, 48 ) ref -> rax "argument with side effect"
-; V16 tmp9 [V16,T06] ( 3, 24 ) byref -> rax "BlockOp address local"
-; V17 cse0 [V17,T07] ( 4, 22 ) int -> rbp "CSE - aggressive"
-; V18 cse1 [V18,T14] ( 3, 6 ) int -> r15 "CSE - aggressive"
+; V16 tmp9 [V16,T09] ( 3, 12 ) byref -> rax "BlockOp address local"
+; V17 cse0 [V17,T05] ( 4, 22 ) int -> rbp "CSE - aggressive"
+; V18 cse1 [V18,T13] ( 3, 6 ) int -> r15 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -63,38 +63,40 @@ G_M13032_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rs
xor r14d, r14d
mov r15d, dword ptr [rbx+08H]
test r15d, r15d
- jle G_M13032_IG09
+ jle G_M13032_IG10
;; size=47 bbWeight=1 PerfScore 8.50
-G_M13032_IG03: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
+G_M13032_IG03: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+ xor r12d, r12d
mov ecx, r14d
- mov r12, gword ptr [rbx+8*rcx+10H]
- ; gcrRegs +[r12]
- xor r13d, r13d
+ mov r13, gword ptr [rbx+8*rcx+10H]
+ ; gcrRegs +[r13]
+ xor eax, eax
test ebp, ebp
- jle G_M13032_IG11
- ;; size=19 bbWeight=4 PerfScore 15.00
-G_M13032_IG04: ; bbWeight=16, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0040 {rsi}, byref, isz
+ jle SHORT G_M13032_IG09
+ ;; size=17 bbWeight=4 PerfScore 16.00
+G_M13032_IG04: ; bbWeight=16, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0040 {rsi}, byref, isz
mov rcx, gword ptr [rsi]
; gcrRegs +[rcx]
- cmp r13d, dword ptr [rcx+08H]
- jae G_M13032_IG13
- mov eax, r13d
- cmp byte ptr [rcx+8*rax+10H], 0
+ cmp eax, dword ptr [rcx+08H]
+ jae G_M13032_IG14
+ mov edx, eax
+ cmp byte ptr [rcx+8*rdx+10H], 0
jne SHORT G_M13032_IG06
- ;; size=23 bbWeight=16 PerfScore 164.00
-G_M13032_IG05: ; bbWeight=8, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0040 {rsi}, byref, isz
+ ;; size=21 bbWeight=16 PerfScore 164.00
+G_M13032_IG05: ; bbWeight=8, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[rcx]
- mov ecx, r13d
+ mov dword ptr [rsp+24H], eax
+ mov ecx, eax
mov rcx, gword ptr [rdi+8*rcx+10H]
; gcrRegs +[rcx]
- mov rax, qword ptr [rcx]
- mov rax, qword ptr [rax+48H]
- call [rax+38H]<unknown method>
+ mov rdx, qword ptr [rcx]
+ mov rdx, qword ptr [rdx+48H]
+ call [rdx+38H]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- mov rdx, r12
+ mov rdx, r13
; gcrRegs +[rdx]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
@@ -103,42 +105,46 @@ G_M13032_IG05: ; bbWeight=8, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0040
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
+ mov eax, dword ptr [rsp+24H]
jne SHORT G_M13032_IG08
- ;; size=41 bbWeight=8 PerfScore 144.00
-G_M13032_IG06: ; bbWeight=16, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0040 {rsi}, byref, isz
- inc r13d
- cmp ebp, r13d
+ ;; size=48 bbWeight=8 PerfScore 160.00
+G_M13032_IG06: ; bbWeight=16, gcrefRegs=2088 {rbx rdi r13}, byrefRegs=0040 {rsi}, byref, isz
+ inc eax
+ cmp ebp, eax
jg SHORT G_M13032_IG04
- ;; size=8 bbWeight=16 PerfScore 24.00
-G_M13032_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rdi r12]
- ; byrRegs -[rsi]
- jmp SHORT G_M13032_IG11
+ ;; size=6 bbWeight=16 PerfScore 24.00
+G_M13032_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs -[r13]
+ jmp SHORT G_M13032_IG09
;; size=2 bbWeight=2 PerfScore 4.00
-G_M13032_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs +[rbx rdi]
- ; byrRegs +[rsi]
- mov rax, gword ptr [rsi]
- ; gcrRegs +[rax]
- mov edx, r14d
- cmp r13d, dword ptr [rax+08H]
- jae SHORT G_M13032_IG13
- mov ecx, r13d
- lea rax, bword ptr [rax+8*rcx+10H]
- ; gcrRegs -[rax]
+G_M13032_IG08: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+ mov r12d, 1
+ mov rdx, gword ptr [rsi]
+ ; gcrRegs +[rdx]
+ mov ecx, r14d
+ cmp eax, dword ptr [rdx+08H]
+ jae SHORT G_M13032_IG14
+ mov eax, eax
+ lea rax, bword ptr [rdx+8*rax+10H]
; byrRegs +[rax]
mov byte ptr [rax], 1
- mov dword ptr [rax+04H], edx
+ mov dword ptr [rax+04H], ecx
+ ;; size=30 bbWeight=2 PerfScore 19.50
+G_M13032_IG09: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs -[rdx]
+ ; byrRegs -[rax]
+ test r12d, r12d
+ je SHORT G_M13032_IG12
inc r14d
cmp r15d, r14d
- jg SHORT G_M13032_IG03
- ;; size=34 bbWeight=4 PerfScore 44.00
-G_M13032_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jg G_M13032_IG03
+ ;; size=17 bbWeight=4 PerfScore 11.00
+G_M13032_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
- ; byrRegs -[rax rsi]
+ ; byrRegs -[rsi]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M13032_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M13032_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -150,10 +156,10 @@ G_M13032_IG10: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M13032_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M13032_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M13032_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M13032_IG13: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -165,13 +171,13 @@ G_M13032_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M13032_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M13032_IG14: ; 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 246, prolog size 25, PerfScore 442.60, instruction count 85, allocated bytes for code 246 (MethodHash=1892cd17) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):bool
+; Total bytes of code 260, prolog size 25, PerfScore 447.50, instruction count 91, allocated bytes for code 260 (MethodHash=1892cd17) for method Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):bool
; ============================================================
Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-49 (-10.72%) : 61405.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
@@ -19,39 +19,36 @@
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp"
; V08 tmp3 [V08,T11] ( 2,199.98) int -> rdx "guarded devirt return temp"
-; V09 tmp4 [V09,T14] ( 2, 99.99) ref -> r12 class-hnd exact "guarded devirt this exact temp"
+; V09 tmp4 [V09,T14] ( 2, 99.99) ref -> rdi class-hnd exact "guarded devirt this exact temp"
; V10 tmp5 [V10,T12] ( 2,199.98) int -> rax "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp"
-; V12 tmp7 [V12,T01] ( 3,200 ) int -> r14 "guarded devirt return temp"
-; V13 tmp8 [V13,T02] ( 3,600 ) ref -> r14 class-hnd exact "guarded devirt this exact temp"
+; V12 tmp7 [V12,T01] ( 4,600 ) int -> r8 "guarded devirt return temp"
+; V13 tmp8 [V13,T02] ( 3,600 ) ref -> rcx class-hnd exact "guarded devirt this exact temp"
;* V14 tmp9 [V14,T16] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp"
; V16 tmp11 [V16,T10] ( 3,299.97) int -> rcx "Inline stloc first use temp"
; V17 tmp12 [V17,T09] ( 3,299.97) ref -> rdx class-hnd "Inline stloc first use temp"
-; V18 tmp13 [V18,T03] ( 3,600 ) int -> rcx "Inline stloc first use temp"
-; V19 tmp14 [V19,T05] ( 3,300 ) int -> r15 "Inline stloc first use temp"
-; V20 PSPSym [V20,T17] ( 1, 1 ) long -> [rbp-40H] do-not-enreg[V] "PSPSym"
+; V18 tmp13 [V18,T03] ( 3,600 ) int -> rdx "Inline stloc first use temp"
+; V19 tmp14 [V19,T05] ( 3,300 ) int -> rax "Inline stloc first use temp"
+; V20 PSPSym [V20,T17] ( 1, 1 ) long -> [rbp-20H] do-not-enreg[V] "PSPSym"
; V21 cse0 [V21,T13] ( 2,199.98) int -> rax "CSE - aggressive"
; V22 cse1 [V22,T06] ( 3,299.99) long -> rdi "CSE - aggressive"
; V23 cse2 [V23,T07] ( 3,299.99) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M23419_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 96
- mov qword ptr [rsp+138H], r15
- mov qword ptr [rsp+130H], r14
- mov qword ptr [rsp+128H], r12
- mov qword ptr [rsp+120H], rdi
- mov qword ptr [rsp+118H], rsi
- mov qword ptr [rsp+110H], rbx
- lea rbp, [rsp+60H]
- mov qword ptr [rbp-40H], rsp
+ sub rsp, 64
+ mov qword ptr [rsp+118H], rdi
+ mov qword ptr [rsp+110H], rsi
+ mov qword ptr [rsp+108H], rbx
+ lea rbp, [rsp+40H]
+ mov qword ptr [rbp-20H], rsp
mov rsi, gword ptr [rbp+F8H]
; gcrRegs +[rsi]
- ;; size=73 bbWeight=0.01 PerfScore 0.13
+ ;; size=49 bbWeight=0.01 PerfScore 0.10
G_M23419_IG02: ; bbWeight=0.01, gcVars=0000000000000001 {V03}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V03}
jmp G_M23419_IG10
@@ -61,14 +58,14 @@ G_M23419_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M23419_IG04: ; bbWeight=0, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r12]
- mov ecx, dword ptr [r12+10H]
+G_M23419_IG04: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdi]
+ mov ecx, dword ptr [rdi+10H]
call [System.ThrowHelper:ThrowInvalidOperationException_EnumCurrent(int)]
- ; gcrRegs -[r12]
+ ; gcrRegs -[rdi]
; gcr arg pop 0
int3
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M23419_IG05: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rcx, gword ptr [rbp+98H]
@@ -87,7 +84,7 @@ G_M23419_IG06: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r14d, eax
+ mov r8d, eax
jmp G_M23419_IG14
;; size=28 bbWeight=0 PerfScore 0.00
G_M23419_IG07: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
@@ -101,8 +98,8 @@ G_M23419_IG07: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
G_M23419_IG08: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
cmp rdi, rbx
jne SHORT G_M23419_IG05
- mov r12, gword ptr [rbp+98H]
- ; gcrRegs +[r12]
+ mov rdi, gword ptr [rbp+98H]
+ ; gcrRegs +[rdi]
mov rcx, gword ptr [rbp+98H]
; gcrRegs +[rcx]
mov ecx, dword ptr [rcx+10H]
@@ -112,13 +109,13 @@ G_M23419_IG08: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov rdx, gword ptr [rdx+08H]
mov eax, dword ptr [rdx+08H]
cmp eax, ecx
- jbe G_M23419_IG04
+ jbe SHORT G_M23419_IG04
movzx rdx, word ptr [rdx+2*rcx+0CH]
; gcrRegs -[rdx]
jmp SHORT G_M23419_IG07
- ;; size=51 bbWeight=99.99 PerfScore 1549.84
+ ;; size=47 bbWeight=99.99 PerfScore 1549.84
G_M23419_IG09: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12]
+ ; gcrRegs -[rdi]
mov rcx, gword ptr [rsi+08H]
; gcrRegs +[rcx]
call [rsi+18H]System.Func`2[ushort,bool]:Invoke(ushort):bool:this
@@ -134,40 +131,41 @@ G_M23419_IG10: ; bbWeight=100, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, b
mov rbx, 0xD1FFAB1E ; System.CharEnumerator
cmp rdi, rbx
jne G_M23419_IG06
- mov r14, gword ptr [rbp+98H]
- ; gcrRegs +[r14]
mov rcx, gword ptr [rbp+98H]
- mov ecx, dword ptr [rcx+10H]
- ; gcrRegs -[rcx]
- inc ecx
mov rdx, gword ptr [rbp+98H]
; gcrRegs +[rdx]
- mov rdx, gword ptr [rdx+08H]
- mov r15d, dword ptr [rdx+08H]
- cmp ecx, r15d
- jge SHORT G_M23419_IG13
- ;; size=68 bbWeight=100 PerfScore 1500.00
-G_M23419_IG11: ; bbWeight=400, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+ mov edx, dword ptr [rdx+10H]
; gcrRegs -[rdx]
- mov dword ptr [r14+10H], ecx
- jmp G_M23419_IG08
- ;; size=9 bbWeight=400 PerfScore 1200.00
+ inc edx
+ mov rax, gword ptr [rbp+98H]
+ ; gcrRegs +[rax]
+ mov rax, gword ptr [rax+08H]
+ mov eax, dword ptr [rax+08H]
+ ; gcrRegs -[rax]
+ cmp edx, eax
+ jge SHORT G_M23419_IG13
+ ;; size=66 bbWeight=100 PerfScore 1500.00
+G_M23419_IG11: ; bbWeight=400, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rcx+10H], edx
+ mov r8d, 1
+ jmp SHORT G_M23419_IG14
+ ;; size=11 bbWeight=400 PerfScore 1300.00
G_M23419_IG12: ; bbWeight=5.68, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
+ ; gcrRegs -[rcx]
mov ecx, dword ptr [rbp+A4H]
add ecx, 1
jo G_M23419_IG03
mov dword ptr [rbp+A4H], ecx
jmp SHORT G_M23419_IG10
;; size=23 bbWeight=5.68 PerfScore 29.81
-G_M23419_IG13: ; bbWeight=100, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r14]
- mov dword ptr [r14+10H], r15d
- xor r14d, r14d
- ; gcrRegs -[r14]
- ;; size=7 bbWeight=100 PerfScore 125.00
+G_M23419_IG13: ; bbWeight=100, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx]
+ mov dword ptr [rcx+10H], eax
+ xor r8d, r8d
+ ;; size=6 bbWeight=100 PerfScore 125.00
G_M23419_IG14: ; bbWeight=100, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- test r14d, r14d
+ ; gcrRegs -[rcx]
+ test r8d, r8d
jne G_M23419_IG08
;; size=9 bbWeight=100 PerfScore 125.00
G_M23419_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -183,29 +181,23 @@ G_M23419_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov eax, dword ptr [rbp+A4H]
;; size=6 bbWeight=0 PerfScore 0.00
G_M23419_IG18: ; bbWeight=0, epilog, nogc, extend
- add rsp, 272
+ add rsp, 264
pop rbx
pop rsi
pop rdi
- pop r12
- pop r14
- pop r15
pop rbp
ret
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M23419_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
- push r15
- push r14
- push r12
push rdi
push rsi
push rbx
- sub rsp, 48
+ sub rsp, 40
mov rbp, qword ptr [rcx+20H]
mov qword ptr [rsp+20H], rbp
- lea rbp, [rbp+60H]
- ;; size=27 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+40H]
+ ;; size=21 bbWeight=0 PerfScore 0.00
G_M23419_IG20: ; bbWeight=0, gcVars=0000000000000001 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
cmp gword ptr [rbp+98H], 0
@@ -222,18 +214,15 @@ G_M23419_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M23419_IG22: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 48
+ add rsp, 40
pop rbx
pop rsi
pop rdi
- pop r12
- pop r14
- pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 457, prolog size 73, PerfScore 5950.36, instruction count 113, allocated bytes for code 457 (MethodHash=5c03a484) for method System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
+; Total bytes of code 408, prolog size 49, PerfScore 6045.43, instruction count 102, allocated bytes for code 408 (MethodHash=5c03a484) for method System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
; ============================================================
Unwind Info:
@@ -241,24 +230,18 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x39
- CountOfUnwindCodes: 17
+ SizeOfProlog : 0x21
+ CountOfUnwindCodes: 11
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x39 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x21 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 33 * 8 = 264 = 0x00108
+ CodeOffset: 0x19 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
Scaled Small Offset: 34 * 8 = 272 = 0x00110
- CodeOffset: 0x31 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
+ CodeOffset: 0x11 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rdi (7)
...
-49 (-10.72%) : 78818.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
@@ -19,39 +19,36 @@
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp"
; V08 tmp3 [V08,T11] ( 2,199.98) int -> rdx "guarded devirt return temp"
-; V09 tmp4 [V09,T14] ( 2, 99.99) ref -> r12 class-hnd exact "guarded devirt this exact temp"
+; V09 tmp4 [V09,T14] ( 2, 99.99) ref -> rdi class-hnd exact "guarded devirt this exact temp"
; V10 tmp5 [V10,T12] ( 2,199.98) int -> rax "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp"
-; V12 tmp7 [V12,T01] ( 3,200 ) int -> r14 "guarded devirt return temp"
-; V13 tmp8 [V13,T02] ( 3,600 ) ref -> r14 class-hnd exact "guarded devirt this exact temp"
+; V12 tmp7 [V12,T01] ( 4,600 ) int -> r8 "guarded devirt return temp"
+; V13 tmp8 [V13,T02] ( 3,600 ) ref -> rcx class-hnd exact "guarded devirt this exact temp"
;* V14 tmp9 [V14,T16] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp"
; V16 tmp11 [V16,T10] ( 3,299.97) int -> rcx "Inline stloc first use temp"
; V17 tmp12 [V17,T09] ( 3,299.97) ref -> rdx class-hnd "Inline stloc first use temp"
-; V18 tmp13 [V18,T03] ( 3,600 ) int -> rcx "Inline stloc first use temp"
-; V19 tmp14 [V19,T05] ( 3,300 ) int -> r15 "Inline stloc first use temp"
-; V20 PSPSym [V20,T17] ( 1, 1 ) long -> [rbp-40H] do-not-enreg[V] "PSPSym"
+; V18 tmp13 [V18,T03] ( 3,600 ) int -> rdx "Inline stloc first use temp"
+; V19 tmp14 [V19,T05] ( 3,300 ) int -> rax "Inline stloc first use temp"
+; V20 PSPSym [V20,T17] ( 1, 1 ) long -> [rbp-20H] do-not-enreg[V] "PSPSym"
; V21 cse0 [V21,T13] ( 2,199.98) int -> rax "CSE - aggressive"
; V22 cse1 [V22,T06] ( 3,299.99) long -> rdi "CSE - aggressive"
; V23 cse2 [V23,T07] ( 3,299.99) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M23419_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 96
- mov qword ptr [rsp+138H], r15
- mov qword ptr [rsp+130H], r14
- mov qword ptr [rsp+128H], r12
- mov qword ptr [rsp+120H], rdi
- mov qword ptr [rsp+118H], rsi
- mov qword ptr [rsp+110H], rbx
- lea rbp, [rsp+60H]
- mov qword ptr [rbp-40H], rsp
+ sub rsp, 64
+ mov qword ptr [rsp+118H], rdi
+ mov qword ptr [rsp+110H], rsi
+ mov qword ptr [rsp+108H], rbx
+ lea rbp, [rsp+40H]
+ mov qword ptr [rbp-20H], rsp
mov rsi, gword ptr [rbp+F8H]
; gcrRegs +[rsi]
- ;; size=73 bbWeight=0.01 PerfScore 0.13
+ ;; size=49 bbWeight=0.01 PerfScore 0.10
G_M23419_IG02: ; bbWeight=0.01, gcVars=0000000000000001 {V03}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V03}
jmp G_M23419_IG10
@@ -61,14 +58,14 @@ G_M23419_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M23419_IG04: ; bbWeight=0, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r12]
- mov ecx, dword ptr [r12+10H]
+G_M23419_IG04: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdi]
+ mov ecx, dword ptr [rdi+10H]
call [System.ThrowHelper:ThrowInvalidOperationException_EnumCurrent(int)]
- ; gcrRegs -[r12]
+ ; gcrRegs -[rdi]
; gcr arg pop 0
int3
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M23419_IG05: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rcx, gword ptr [rbp+98H]
@@ -87,7 +84,7 @@ G_M23419_IG06: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r14d, eax
+ mov r8d, eax
jmp G_M23419_IG14
;; size=28 bbWeight=0 PerfScore 0.00
G_M23419_IG07: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
@@ -101,8 +98,8 @@ G_M23419_IG07: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
G_M23419_IG08: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
cmp rdi, rbx
jne SHORT G_M23419_IG05
- mov r12, gword ptr [rbp+98H]
- ; gcrRegs +[r12]
+ mov rdi, gword ptr [rbp+98H]
+ ; gcrRegs +[rdi]
mov rcx, gword ptr [rbp+98H]
; gcrRegs +[rcx]
mov ecx, dword ptr [rcx+10H]
@@ -112,13 +109,13 @@ G_M23419_IG08: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov rdx, gword ptr [rdx+08H]
mov eax, dword ptr [rdx+08H]
cmp eax, ecx
- jbe G_M23419_IG04
+ jbe SHORT G_M23419_IG04
movzx rdx, word ptr [rdx+2*rcx+0CH]
; gcrRegs -[rdx]
jmp SHORT G_M23419_IG07
- ;; size=51 bbWeight=99.99 PerfScore 1549.84
+ ;; size=47 bbWeight=99.99 PerfScore 1549.84
G_M23419_IG09: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12]
+ ; gcrRegs -[rdi]
mov rcx, gword ptr [rsi+08H]
; gcrRegs +[rcx]
call [rsi+18H]System.Func`2[ushort,bool]:Invoke(ushort):bool:this
@@ -134,40 +131,41 @@ G_M23419_IG10: ; bbWeight=100, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, b
mov rbx, 0xD1FFAB1E ; System.CharEnumerator
cmp rdi, rbx
jne G_M23419_IG06
- mov r14, gword ptr [rbp+98H]
- ; gcrRegs +[r14]
mov rcx, gword ptr [rbp+98H]
- mov ecx, dword ptr [rcx+10H]
- ; gcrRegs -[rcx]
- inc ecx
mov rdx, gword ptr [rbp+98H]
; gcrRegs +[rdx]
- mov rdx, gword ptr [rdx+08H]
- mov r15d, dword ptr [rdx+08H]
- cmp ecx, r15d
- jge SHORT G_M23419_IG13
- ;; size=68 bbWeight=100 PerfScore 1500.00
-G_M23419_IG11: ; bbWeight=400, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+ mov edx, dword ptr [rdx+10H]
; gcrRegs -[rdx]
- mov dword ptr [r14+10H], ecx
- jmp G_M23419_IG08
- ;; size=9 bbWeight=400 PerfScore 1200.00
+ inc edx
+ mov rax, gword ptr [rbp+98H]
+ ; gcrRegs +[rax]
+ mov rax, gword ptr [rax+08H]
+ mov eax, dword ptr [rax+08H]
+ ; gcrRegs -[rax]
+ cmp edx, eax
+ jge SHORT G_M23419_IG13
+ ;; size=66 bbWeight=100 PerfScore 1500.00
+G_M23419_IG11: ; bbWeight=400, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rcx+10H], edx
+ mov r8d, 1
+ jmp SHORT G_M23419_IG14
+ ;; size=11 bbWeight=400 PerfScore 1300.00
G_M23419_IG12: ; bbWeight=5.36, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
+ ; gcrRegs -[rcx]
mov ecx, dword ptr [rbp+A4H]
add ecx, 1
jo G_M23419_IG03
mov dword ptr [rbp+A4H], ecx
jmp SHORT G_M23419_IG10
;; size=23 bbWeight=5.36 PerfScore 28.13
-G_M23419_IG13: ; bbWeight=100, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r14]
- mov dword ptr [r14+10H], r15d
- xor r14d, r14d
- ; gcrRegs -[r14]
- ;; size=7 bbWeight=100 PerfScore 125.00
+G_M23419_IG13: ; bbWeight=100, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx]
+ mov dword ptr [rcx+10H], eax
+ xor r8d, r8d
+ ;; size=6 bbWeight=100 PerfScore 125.00
G_M23419_IG14: ; bbWeight=100, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- test r14d, r14d
+ ; gcrRegs -[rcx]
+ test r8d, r8d
jne G_M23419_IG08
;; size=9 bbWeight=100 PerfScore 125.00
G_M23419_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -183,29 +181,23 @@ G_M23419_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov eax, dword ptr [rbp+A4H]
;; size=6 bbWeight=0 PerfScore 0.00
G_M23419_IG18: ; bbWeight=0, epilog, nogc, extend
- add rsp, 272
+ add rsp, 264
pop rbx
pop rsi
pop rdi
- pop r12
- pop r14
- pop r15
pop rbp
ret
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M23419_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
- push r15
- push r14
- push r12
push rdi
push rsi
push rbx
- sub rsp, 48
+ sub rsp, 40
mov rbp, qword ptr [rcx+20H]
mov qword ptr [rsp+20H], rbp
- lea rbp, [rbp+60H]
- ;; size=27 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+40H]
+ ;; size=21 bbWeight=0 PerfScore 0.00
G_M23419_IG20: ; bbWeight=0, gcVars=0000000000000001 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
cmp gword ptr [rbp+98H], 0
@@ -222,18 +214,15 @@ G_M23419_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M23419_IG22: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 48
+ add rsp, 40
pop rbx
pop rsi
pop rdi
- pop r12
- pop r14
- pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 457, prolog size 73, PerfScore 5948.68, instruction count 113, allocated bytes for code 457 (MethodHash=5c03a484) for method System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
+; Total bytes of code 408, prolog size 49, PerfScore 6043.75, instruction count 102, allocated bytes for code 408 (MethodHash=5c03a484) for method System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
; ============================================================
Unwind Info:
@@ -241,24 +230,18 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x39
- CountOfUnwindCodes: 17
+ SizeOfProlog : 0x21
+ CountOfUnwindCodes: 11
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x39 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x21 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 33 * 8 = 264 = 0x00108
+ CodeOffset: 0x19 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
Scaled Small Offset: 34 * 8 = 272 = 0x00110
- CodeOffset: 0x31 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
+ CodeOffset: 0x11 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rdi (7)
...
-49 (-10.72%) : 39687.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
@@ -19,39 +19,36 @@
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp"
; V08 tmp3 [V08,T11] ( 2,199.98) int -> rdx "guarded devirt return temp"
-; V09 tmp4 [V09,T14] ( 2, 99.99) ref -> r12 class-hnd exact "guarded devirt this exact temp"
+; V09 tmp4 [V09,T14] ( 2, 99.99) ref -> rdi class-hnd exact "guarded devirt this exact temp"
; V10 tmp5 [V10,T12] ( 2,199.98) int -> rax "guarded devirt return temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp"
-; V12 tmp7 [V12,T01] ( 3,200 ) int -> r14 "guarded devirt return temp"
-; V13 tmp8 [V13,T02] ( 3,600 ) ref -> r14 class-hnd exact "guarded devirt this exact temp"
+; V12 tmp7 [V12,T01] ( 4,600 ) int -> r8 "guarded devirt return temp"
+; V13 tmp8 [V13,T02] ( 3,600 ) ref -> rcx class-hnd exact "guarded devirt this exact temp"
;* V14 tmp9 [V14,T16] ( 0, 0 ) int -> zero-ref "OSR entry state var"
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp"
; V16 tmp11 [V16,T10] ( 3,299.97) int -> rcx "Inline stloc first use temp"
; V17 tmp12 [V17,T09] ( 3,299.97) ref -> rdx class-hnd "Inline stloc first use temp"
-; V18 tmp13 [V18,T03] ( 3,600 ) int -> rcx "Inline stloc first use temp"
-; V19 tmp14 [V19,T05] ( 3,300 ) int -> r15 "Inline stloc first use temp"
-; V20 PSPSym [V20,T17] ( 1, 1 ) long -> [rbp-40H] do-not-enreg[V] "PSPSym"
+; V18 tmp13 [V18,T03] ( 3,600 ) int -> rdx "Inline stloc first use temp"
+; V19 tmp14 [V19,T05] ( 3,300 ) int -> rax "Inline stloc first use temp"
+; V20 PSPSym [V20,T17] ( 1, 1 ) long -> [rbp-20H] do-not-enreg[V] "PSPSym"
; V21 cse0 [V21,T13] ( 2,199.98) int -> rax "CSE - aggressive"
; V22 cse1 [V22,T06] ( 3,299.99) long -> rdi "CSE - aggressive"
; V23 cse2 [V23,T07] ( 3,299.99) long -> rbx "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M23419_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 96
- mov qword ptr [rsp+138H], r15
- mov qword ptr [rsp+130H], r14
- mov qword ptr [rsp+128H], r12
- mov qword ptr [rsp+120H], rdi
- mov qword ptr [rsp+118H], rsi
- mov qword ptr [rsp+110H], rbx
- lea rbp, [rsp+60H]
- mov qword ptr [rbp-40H], rsp
+ sub rsp, 64
+ mov qword ptr [rsp+118H], rdi
+ mov qword ptr [rsp+110H], rsi
+ mov qword ptr [rsp+108H], rbx
+ lea rbp, [rsp+40H]
+ mov qword ptr [rbp-20H], rsp
mov rsi, gword ptr [rbp+F8H]
; gcrRegs +[rsi]
- ;; size=73 bbWeight=0.01 PerfScore 0.13
+ ;; size=49 bbWeight=0.01 PerfScore 0.10
G_M23419_IG02: ; bbWeight=0.01, gcVars=0000000000000001 {V03}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V03}
jmp G_M23419_IG10
@@ -61,14 +58,14 @@ G_M23419_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M23419_IG04: ; bbWeight=0, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r12]
- mov ecx, dword ptr [r12+10H]
+G_M23419_IG04: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdi]
+ mov ecx, dword ptr [rdi+10H]
call [System.ThrowHelper:ThrowInvalidOperationException_EnumCurrent(int)]
- ; gcrRegs -[r12]
+ ; gcrRegs -[rdi]
; gcr arg pop 0
int3
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M23419_IG05: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rcx, gword ptr [rbp+98H]
@@ -87,7 +84,7 @@ G_M23419_IG06: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r14d, eax
+ mov r8d, eax
jmp G_M23419_IG14
;; size=28 bbWeight=0 PerfScore 0.00
G_M23419_IG07: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
@@ -101,8 +98,8 @@ G_M23419_IG07: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
G_M23419_IG08: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
cmp rdi, rbx
jne SHORT G_M23419_IG05
- mov r12, gword ptr [rbp+98H]
- ; gcrRegs +[r12]
+ mov rdi, gword ptr [rbp+98H]
+ ; gcrRegs +[rdi]
mov rcx, gword ptr [rbp+98H]
; gcrRegs +[rcx]
mov ecx, dword ptr [rcx+10H]
@@ -112,13 +109,13 @@ G_M23419_IG08: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov rdx, gword ptr [rdx+08H]
mov eax, dword ptr [rdx+08H]
cmp eax, ecx
- jbe G_M23419_IG04
+ jbe SHORT G_M23419_IG04
movzx rdx, word ptr [rdx+2*rcx+0CH]
; gcrRegs -[rdx]
jmp SHORT G_M23419_IG07
- ;; size=51 bbWeight=99.99 PerfScore 1549.84
+ ;; size=47 bbWeight=99.99 PerfScore 1549.84
G_M23419_IG09: ; bbWeight=99.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r12]
+ ; gcrRegs -[rdi]
mov rcx, gword ptr [rsi+08H]
; gcrRegs +[rcx]
call [rsi+18H]System.Func`2[ushort,bool]:Invoke(ushort):bool:this
@@ -134,40 +131,41 @@ G_M23419_IG10: ; bbWeight=100, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, b
mov rbx, 0xD1FFAB1E ; System.CharEnumerator
cmp rdi, rbx
jne G_M23419_IG06
- mov r14, gword ptr [rbp+98H]
- ; gcrRegs +[r14]
mov rcx, gword ptr [rbp+98H]
- mov ecx, dword ptr [rcx+10H]
- ; gcrRegs -[rcx]
- inc ecx
mov rdx, gword ptr [rbp+98H]
; gcrRegs +[rdx]
- mov rdx, gword ptr [rdx+08H]
- mov r15d, dword ptr [rdx+08H]
- cmp ecx, r15d
- jge SHORT G_M23419_IG13
- ;; size=68 bbWeight=100 PerfScore 1500.00
-G_M23419_IG11: ; bbWeight=400, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+ mov edx, dword ptr [rdx+10H]
; gcrRegs -[rdx]
- mov dword ptr [r14+10H], ecx
- jmp G_M23419_IG08
- ;; size=9 bbWeight=400 PerfScore 1200.00
+ inc edx
+ mov rax, gword ptr [rbp+98H]
+ ; gcrRegs +[rax]
+ mov rax, gword ptr [rax+08H]
+ mov eax, dword ptr [rax+08H]
+ ; gcrRegs -[rax]
+ cmp edx, eax
+ jge SHORT G_M23419_IG13
+ ;; size=66 bbWeight=100 PerfScore 1500.00
+G_M23419_IG11: ; bbWeight=400, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rcx+10H], edx
+ mov r8d, 1
+ jmp SHORT G_M23419_IG14
+ ;; size=11 bbWeight=400 PerfScore 1300.00
G_M23419_IG12: ; bbWeight=5.81, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
+ ; gcrRegs -[rcx]
mov ecx, dword ptr [rbp+A4H]
add ecx, 1
jo G_M23419_IG03
mov dword ptr [rbp+A4H], ecx
jmp SHORT G_M23419_IG10
;; size=23 bbWeight=5.81 PerfScore 30.48
-G_M23419_IG13: ; bbWeight=100, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r14]
- mov dword ptr [r14+10H], r15d
- xor r14d, r14d
- ; gcrRegs -[r14]
- ;; size=7 bbWeight=100 PerfScore 125.00
+G_M23419_IG13: ; bbWeight=100, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx]
+ mov dword ptr [rcx+10H], eax
+ xor r8d, r8d
+ ;; size=6 bbWeight=100 PerfScore 125.00
G_M23419_IG14: ; bbWeight=100, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- test r14d, r14d
+ ; gcrRegs -[rcx]
+ test r8d, r8d
jne G_M23419_IG08
;; size=9 bbWeight=100 PerfScore 125.00
G_M23419_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -183,29 +181,23 @@ G_M23419_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov eax, dword ptr [rbp+A4H]
;; size=6 bbWeight=0 PerfScore 0.00
G_M23419_IG18: ; bbWeight=0, epilog, nogc, extend
- add rsp, 272
+ add rsp, 264
pop rbx
pop rsi
pop rdi
- pop r12
- pop r14
- pop r15
pop rbp
ret
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M23419_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
- push r15
- push r14
- push r12
push rdi
push rsi
push rbx
- sub rsp, 48
+ sub rsp, 40
mov rbp, qword ptr [rcx+20H]
mov qword ptr [rsp+20H], rbp
- lea rbp, [rbp+60H]
- ;; size=27 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+40H]
+ ;; size=21 bbWeight=0 PerfScore 0.00
G_M23419_IG20: ; bbWeight=0, gcVars=0000000000000001 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V03}
cmp gword ptr [rbp+98H], 0
@@ -222,18 +214,15 @@ G_M23419_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
G_M23419_IG22: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 48
+ add rsp, 40
pop rbx
pop rsi
pop rdi
- pop r12
- pop r14
- pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 457, prolog size 73, PerfScore 5951.03, instruction count 113, allocated bytes for code 457 (MethodHash=5c03a484) for method System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
+; Total bytes of code 408, prolog size 49, PerfScore 6046.10, instruction count 102, allocated bytes for code 408 (MethodHash=5c03a484) for method System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
; ============================================================
Unwind Info:
@@ -241,24 +230,18 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x39
- CountOfUnwindCodes: 17
+ SizeOfProlog : 0x21
+ CountOfUnwindCodes: 11
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x39 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x21 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 33 * 8 = 264 = 0x00108
+ CodeOffset: 0x19 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
Scaled Small Offset: 34 * 8 = 272 = 0x00110
- CodeOffset: 0x31 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
+ CodeOffset: 0x11 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rdi (7)
...
+34 (+10.79%) : 65796.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
@@ -21,7 +21,7 @@
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp3 [V12,T13] ( 3, 0.98) int -> rax "guarded devirt return temp"
+; V12 tmp3 [V12,T13] ( 5, 1.31) int -> r12 "guarded devirt return temp"
; V13 tmp4 [V13,T11] ( 4, 1.33) ref -> rcx class-hnd exact "guarded devirt this exact temp"
;* V14 tmp5 [V14 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V15 tmp6 [V15,T09] ( 3, 1.62) int -> rax "Inline return value spill temp"
@@ -40,21 +40,22 @@
; V28 cse0 [V28,T14] ( 2, 1.21) long -> r15 "CSE - moderate"
; V29 cse1 [V29,T15] ( 3, 1.00) int -> r8 "CSE - conservative"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M33817_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
+ push r12
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
- mov qword ptr [rsp+20H], rdx
+ sub rsp, 48
+ mov qword ptr [rsp+28H], rdx
mov rdi, rdx
mov rsi, r8
; gcrRegs +[rsi]
- ;; size=23 bbWeight=1 PerfScore 7.75
+ ;; size=25 bbWeight=1 PerfScore 8.75
G_M33817_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs +[rcx]
mov rbx, gword ptr [rcx]
@@ -79,7 +80,7 @@ G_M33817_IG05: ; bbWeight=0.81, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- jmp SHORT G_M33817_IG13
+ jmp SHORT G_M33817_IG12
;; size=10 bbWeight=0.81 PerfScore 6.49
G_M33817_IG06: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi]
@@ -87,16 +88,17 @@ G_M33817_IG06: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
;; size=2 bbWeight=0.19 PerfScore 0.05
G_M33817_IG07: ; bbWeight=0.19, epilog, nogc, extend
- add rsp, 40
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r12
pop r14
pop r15
ret
- ;; size=13 bbWeight=0.19 PerfScore 0.80
-G_M33817_IG08: ; bbWeight=1.21, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=15 bbWeight=0.19 PerfScore 0.90
+G_M33817_IG08: ; bbWeight=1.21, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rbx rbp rsi]
mov r8, qword ptr [r15]
movsxd rdx, r14d
@@ -109,25 +111,25 @@ G_M33817_IG08: ; bbWeight=1.21, gcVars=0000000000000000 {}, gcrefRegs=006
mov rcx, gword ptr [rax]
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M33817_IG15
- ;; size=22 bbWeight=1.21 PerfScore 8.15
+ je G_M33817_IG19
+ ;; size=26 bbWeight=1.21 PerfScore 8.15
G_M33817_IG09: ; bbWeight=0.49, gcrefRegs=006A {rcx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
mov r8, 0xD1FFAB1E ; System.String
cmp qword ptr [rcx], r8
- jne SHORT G_M33817_IG14
+ jne SHORT G_M33817_IG13
;; size=15 bbWeight=0.49 PerfScore 2.08
G_M33817_IG10: ; bbWeight=0.33, gcrefRegs=006A {rcx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
cmp rcx, rsi
- je SHORT G_M33817_IG19
+ je G_M33817_IG22
mov rdx, rsi
; gcrRegs +[rdx]
mov r8, 0xD1FFAB1E ; System.String
cmp qword ptr [rdx], r8
- jne SHORT G_M33817_IG17
+ jne SHORT G_M33817_IG11
mov r8d, dword ptr [rcx+08H]
cmp r8d, dword ptr [rdx+08H]
- jne SHORT G_M33817_IG17
+ jne SHORT G_M33817_IG11
add rcx, 12
; gcrRegs -[rcx]
; byrRegs +[rcx]
@@ -138,15 +140,14 @@ G_M33817_IG10: ; bbWeight=0.33, gcrefRegs=006A {rcx rbx rbp rsi}, byrefRe
call [<unknown method>]
; byrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=50 bbWeight=0.33 PerfScore 5.17
-G_M33817_IG11: ; bbWeight=0.49, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- test eax, eax
- jne SHORT G_M33817_IG19
- ;; size=4 bbWeight=0.49 PerfScore 0.61
-G_M33817_IG12: ; bbWeight=0.40, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M33817_IG17
- ;; size=2 bbWeight=0.40 PerfScore 0.79
-G_M33817_IG13: ; bbWeight=0.81, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov r12d, eax
+ jmp SHORT G_M33817_IG14
+ ;; size=59 bbWeight=0.33 PerfScore 5.92
+G_M33817_IG11: ; bbWeight=0.33, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ xor r12d, r12d
+ jmp SHORT G_M33817_IG14
+ ;; size=5 bbWeight=0.33 PerfScore 0.75
+G_M33817_IG12: ; bbWeight=0.81, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
mov edx, eax
not edx
@@ -157,9 +158,9 @@ G_M33817_IG13: ; bbWeight=0.81, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
cdq
idiv edx:eax, dword ptr [rbp+08H]
mov r14d, edx
- jmp SHORT G_M33817_IG22
+ jmp SHORT G_M33817_IG23
;; size=22 bbWeight=0.81 PerfScore 24.95
-G_M33817_IG14: ; bbWeight=0.16, gcrefRegs=006A {rcx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M33817_IG13: ; bbWeight=0.16, gcrefRegs=006A {rcx rbx rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
@@ -168,54 +169,59 @@ G_M33817_IG14: ; bbWeight=0.16, gcrefRegs=006A {rcx rbx rbp rsi}, byrefRe
call [rax+10H]<unknown method>
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp SHORT G_M33817_IG11
- ;; size=15 bbWeight=0.16 PerfScore 1.45
-G_M33817_IG15: ; bbWeight=0.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rbp rsi]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.72 PerfScore 0.18
-G_M33817_IG16: ; bbWeight=0.72, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- pop r15
- ret
- ;; size=13 bbWeight=0.72 PerfScore 3.05
-G_M33817_IG17: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rbx rbp rsi]
+ mov r12d, eax
+ ;; size=16 bbWeight=0.16 PerfScore 1.18
+G_M33817_IG14: ; bbWeight=0.49, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ test r12d, r12d
+ jne SHORT G_M33817_IG17
+ ;; size=5 bbWeight=0.49 PerfScore 0.61
+G_M33817_IG15: ; bbWeight=0.40, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
inc r14d
cmp dword ptr [rbp+08H], r14d
jg G_M33817_IG08
;; size=13 bbWeight=0.40 PerfScore 1.68
-G_M33817_IG18: ; bbWeight=0.03, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M33817_IG16: ; bbWeight=0.03, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
sub r14d, dword ptr [rbp+08H]
- jmp SHORT G_M33817_IG22
+ jmp SHORT G_M33817_IG23
;; size=6 bbWeight=0.03 PerfScore 0.14
-G_M33817_IG19: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M33817_IG17: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp rsi]
mov rax, gword ptr [rbx+10H]
; gcrRegs +[rax]
cmp r14d, dword ptr [rax+08H]
- jae SHORT G_M33817_IG23
+ jae SHORT G_M33817_IG24
mov edx, r14d
mov rax, gword ptr [rax+8*rdx+10H]
;; size=18 bbWeight=0.09 PerfScore 0.78
-G_M33817_IG20: ; bbWeight=0.09, epilog, nogc, extend
- add rsp, 40
+G_M33817_IG18: ; bbWeight=0.09, epilog, nogc, extend
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r12
pop r14
pop r15
ret
- ;; size=13 bbWeight=0.09 PerfScore 0.40
+ ;; size=15 bbWeight=0.09 PerfScore 0.45
+G_M33817_IG19: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.72 PerfScore 0.18
+G_M33817_IG20: ; bbWeight=0.72, epilog, nogc, extend
+ add rsp, 48
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r12
+ pop r14
+ pop r15
+ ret
+ ;; size=15 bbWeight=0.72 PerfScore 3.41
G_M33817_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[rsi]
+ ; gcrRegs -[rax] +[rbx rsi]
mov rcx, rsi
; gcrRegs +[rcx]
mov rax, qword ptr [rsi]
@@ -223,22 +229,26 @@ G_M33817_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {
call [rax+18H]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- jmp SHORT G_M33817_IG13
+ jmp SHORT G_M33817_IG12
;; size=15 bbWeight=0 PerfScore 0.00
-G_M33817_IG22: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M33817_IG22: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbp]
+ mov r12d, 1
+ jmp SHORT G_M33817_IG14
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M33817_IG23: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
mov r8, qword ptr [rdi+38H]
mov r15, qword ptr [r8]
jmp G_M33817_IG08
;; size=12 bbWeight=0 PerfScore 0.00
-G_M33817_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M33817_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rbp rsi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 315, prolog size 23, PerfScore 102.22, instruction count 108, allocated bytes for code 315 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
+; Total bytes of code 349, prolog size 25, PerfScore 107.56, instruction count 117, allocated bytes for code 349 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
; ============================================================
...
+43 (+11.68%) : 5896.dasm - System.Reflection.RuntimeMethodInfo:get_InvocationFlags():uint:this
@@ -15,10 +15,10 @@
; V03 tmp1 [V03,T05] ( 6, 1.60) ref -> rbx class-hnd exact single-def "NewObj constructor temp"
; V04 tmp2 [V04,T07] ( 2, 0.80) ref -> rdi class-hnd single-def "dup spill"
; V05 tmp3 [V05,T08] ( 4, 0.64) ref -> rdi
-; V06 tmp4 [V06,T09] ( 2, 0 ) bool -> rax "Inline return value spill temp"
-; V07 tmp5 [V07,T11] ( 2, 0 ) bool -> rax "Inline return value spill temp"
-; V08 tmp6 [V08,T10] ( 2, 0 ) bool -> rax "Inline return value spill temp"
-; V09 tmp7 [V09,T12] ( 2, 0 ) bool -> rax "Inline return value spill temp"
+; V06 tmp4 [V06,T09] ( 3, 0 ) bool -> rdi "Inline return value spill temp"
+; V07 tmp5 [V07,T11] ( 4, 0 ) bool -> rdi "Inline return value spill temp"
+; V08 tmp6 [V08,T10] ( 3, 0 ) bool -> rdi "Inline return value spill temp"
+; V09 tmp7 [V09,T12] ( 4, 0 ) bool -> rdi "Inline return value spill temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp"
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill"
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref
@@ -107,7 +107,7 @@ G_M61080_IG08: ; bbWeight=0.20, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
;; size=51 bbWeight=0.20 PerfScore 1.80
G_M61080_IG09: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
- jge G_M61080_IG15
+ jge G_M61080_IG18
;; size=13 bbWeight=0.20 PerfScore 0.80
G_M61080_IG10: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [rsi+48H]
@@ -132,7 +132,11 @@ G_M61080_IG11: ; bbWeight=0.04, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
G_M61080_IG12: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rdi] +[rbx]
cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
- jg SHORT G_M61080_IG13
+ jle SHORT G_M61080_IG13
+ mov edi, 1
+ jmp SHORT G_M61080_IG14
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M61080_IG13: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
@@ -141,32 +145,23 @@ G_M61080_IG12: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; byrRegs -[rdx]
; gcr arg pop 0
- test eax, eax
- je SHORT G_M61080_IG09
- ;; size=39 bbWeight=0 PerfScore 0.00
-G_M61080_IG13: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
- jl SHORT G_M61080_IG14
- cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
- jg SHORT G_M61080_IG09
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- ; byrRegs +[rdx]
- call [System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):bool]
- ; gcrRegs -[rcx]
- ; byrRegs -[rdx]
- ; gcr arg pop 0
- test eax, eax
- jne G_M61080_IG09
- ;; size=52 bbWeight=0 PerfScore 0.00
+ mov edi, eax
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M61080_IG14: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov byte ptr [rbx+25H], 1
- jmp SHORT G_M61080_IG10
- ;; size=6 bbWeight=0 PerfScore 0.00
+ test edi, edi
+ je SHORT G_M61080_IG09
+ cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
+ jge SHORT G_M61080_IG15
+ xor edi, edi
+ jmp SHORT G_M61080_IG17
+ ;; size=17 bbWeight=0 PerfScore 0.00
G_M61080_IG15: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
- jg SHORT G_M61080_IG16
+ jle SHORT G_M61080_IG16
+ mov edi, 1
+ jmp SHORT G_M61080_IG17
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M61080_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
@@ -175,31 +170,64 @@ G_M61080_IG15: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; byrRegs -[rdx]
; gcr arg pop 0
- test eax, eax
- je G_M61080_IG10
- ;; size=43 bbWeight=0 PerfScore 0.00
-G_M61080_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
- jl SHORT G_M61080_IG17
- cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
- jg G_M61080_IG10
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- ; byrRegs +[rdx]
- call [System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):bool]
- ; gcrRegs -[rcx]
- ; byrRegs -[rdx]
- ; gcr arg pop 0
- test eax, eax
- jne G_M61080_IG10
- ;; size=56 bbWeight=0 PerfScore 0.00
+ mov edi, eax
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M61080_IG17: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ test edi, edi
+ jne G_M61080_IG09
+ mov byte ptr [rbx+25H], 1
+ jmp G_M61080_IG10
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M61080_IG18: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
+ jle SHORT G_M61080_IG19
+ mov edi, 1
+ jmp SHORT G_M61080_IG20
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M61080_IG19: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ ; byrRegs +[rdx]
+ call [System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):bool]
+ ; gcrRegs -[rcx]
+ ; byrRegs -[rdx]
+ ; gcr arg pop 0
+ mov edi, eax
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M61080_IG20: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ test edi, edi
+ je G_M61080_IG10
+ cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
+ jge SHORT G_M61080_IG21
+ xor edi, edi
+ jmp SHORT G_M61080_IG23
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M61080_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
+ jle SHORT G_M61080_IG22
+ mov edi, 1
+ jmp SHORT G_M61080_IG23
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M61080_IG22: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ ; byrRegs +[rdx]
+ call [System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):bool]
+ ; gcrRegs -[rcx]
+ ; byrRegs -[rdx]
+ ; gcr arg pop 0
+ mov edi, eax
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M61080_IG23: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ test edi, edi
+ jne G_M61080_IG10
mov byte ptr [rbx+24H], 1
jmp G_M61080_IG10
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 7, PerfScore 61.16, instruction count 83, allocated bytes for code 368 (MethodHash=18b21167) for method System.Reflection.RuntimeMethodInfo:get_InvocationFlags():uint:this
+; Total bytes of code 411, prolog size 7, PerfScore 65.46, instruction count 99, allocated bytes for code 411 (MethodHash=18b21167) for method System.Reflection.RuntimeMethodInfo:get_InvocationFlags():uint:this
; ============================================================
Unwind Info:
+34 (+12.06%) : 75649.dasm - System.Net.Sockets.Socket:SetToConnected():this
@@ -11,17 +11,17 @@
;
; V00 this [V00,T00] ( 12, 8 ) ref -> rsi this class-hnd single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T08] ( 2, 2 ) bool -> rax "Inline return value spill temp"
+; V02 tmp1 [V02,T08] ( 5, 1.67) bool -> rax "Inline return value spill temp"
; V03 tmp2 [V03,T01] ( 3, 5.33) ref -> rdx class-hnd single-def "Inlining Arg"
; V04 tmp3 [V04,T06] ( 3, 2.00) ref -> rax class-hnd single-def "Inline stloc first use temp"
; V05 tmp4 [V05,T02] ( 6, 4.00) ref -> rdi class-hnd single-def "Inline stloc first use temp"
-; V06 tmp5 [V06,T10] ( 2, 1.33) bool -> rax "Inline return value spill temp"
+; V06 tmp5 [V06,T09] ( 3, 1.33) bool -> rax "Inline return value spill temp"
; V07 tmp6 [V07,T12] ( 2, 1.33) ref -> rdx class-hnd single-def "Inline stloc first use temp"
; V08 tmp7 [V08,T03] ( 2, 2.67) ref -> rcx class-hnd exact single-def "Inlining Arg"
-; V09 tmp8 [V09,T11] ( 2, 1.33) bool -> rax "Inline return value spill temp"
+; V09 tmp8 [V09,T10] ( 3, 1.33) bool -> rax "Inline return value spill temp"
; V10 tmp9 [V10,T13] ( 2, 1.33) ref -> rdx class-hnd single-def "Inline stloc first use temp"
; V11 tmp10 [V11,T04] ( 2, 2.67) ref -> rcx class-hnd exact single-def "Inlining Arg"
-; V12 tmp11 [V12,T09] ( 3, 1.67) bool -> rax "Inline return value spill temp"
+; V12 tmp11 [V12,T11] ( 3, 1.33) bool -> rax "Inline return value spill temp"
; V13 tmp12 [V13,T07] ( 3, 2.00) ref -> rdx class-hnd single-def "Inline stloc first use temp"
; V14 tmp13 [V14,T05] ( 2, 2.67) ref -> rcx class-hnd exact single-def "Inlining Arg"
;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg"
@@ -49,15 +49,15 @@ G_M14876_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
mov gword ptr [rsi+28H], rdx
mov rdx, gword ptr [rsi+20H]
test rdx, rdx
- je G_M14876_IG08
+ je G_M14876_IG16
;; size=19 bbWeight=1 PerfScore 4.50
-G_M14876_IG04: ; bbWeight=0.67, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref, isz
+G_M14876_IG04: ; bbWeight=0.67, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Net.IPEndPoint
call [CORINFO_HELP_ISINSTANCEOFCLASS]
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M14876_IG08
+ je G_M14876_IG16
mov rdi, gword ptr [rax+08H]
; gcrRegs +[rdi]
mov rcx, 0xD1FFAB1E ; const ptr
@@ -66,51 +66,51 @@ G_M14876_IG04: ; bbWeight=0.67, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000
mov rdx, rdi
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M14876_IG05
+ je G_M14876_IG12
mov rdx, rdi
call [System.Net.IPAddress:Equals(System.Net.IPAddress):bool:this]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- test eax, eax
- jne SHORT G_M14876_IG13
- ;; size=59 bbWeight=0.67 PerfScore 9.84
+ ;; size=63 bbWeight=0.67 PerfScore 9.01
G_M14876_IG05: ; bbWeight=0.67, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ test eax, eax
+ jne G_M14876_IG15
mov rcx, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
mov rdx, rdi
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M14876_IG06
+ je SHORT G_M14876_IG13
mov rdx, rdi
call [System.Net.IPAddress:Equals(System.Net.IPAddress):bool:this]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- test eax, eax
- jne SHORT G_M14876_IG13
- ;; size=34 bbWeight=0.67 PerfScore 5.51
+ ;; size=38 bbWeight=0.67 PerfScore 5.51
G_M14876_IG06: ; bbWeight=0.67, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ test eax, eax
+ jne SHORT G_M14876_IG15
mov rcx, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
mov rdx, rdi
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M14876_IG12
+ je SHORT G_M14876_IG14
call [System.Net.IPAddress:Equals(System.Net.IPAddress):bool:this]
; gcrRegs -[rcx rdx rdi]
; gcr arg pop 0
- ;; size=27 bbWeight=0.67 PerfScore 4.51
+ ;; size=31 bbWeight=0.67 PerfScore 5.34
G_M14876_IG07: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne SHORT G_M14876_IG13
+ jne SHORT G_M14876_IG17
;; size=4 bbWeight=1 PerfScore 1.25
G_M14876_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; const ptr
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
cmp byte ptr [rdx+9DH], 0
- jne SHORT G_M14876_IG14
+ jne SHORT G_M14876_IG18
;; size=22 bbWeight=1 PerfScore 6.25
G_M14876_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
@@ -136,17 +136,35 @@ G_M14876_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
; byrRegs -[rcx]
jmp G_M14876_IG03
;; size=18 bbWeight=0 PerfScore 0.00
-G_M14876_IG12: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M14876_IG12: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdi]
+ xor eax, eax
+ jmp G_M14876_IG05
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M14876_IG13: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ xor eax, eax
+ jmp SHORT G_M14876_IG06
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M14876_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
xor eax, eax
jmp SHORT G_M14876_IG07
;; size=4 bbWeight=0 PerfScore 0.00
-G_M14876_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M14876_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ mov eax, 1
+ jmp SHORT G_M14876_IG07
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M14876_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ xor eax, eax
+ je SHORT G_M14876_IG08
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M14876_IG17: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
xor rcx, rcx
; gcrRegs +[rcx]
mov gword ptr [rsi+20H], rcx
jmp SHORT G_M14876_IG08
;; size=8 bbWeight=0 PerfScore 0.00
-G_M14876_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M14876_IG18: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rcx, rsi
; gcrRegs +[rcx]
@@ -155,7 +173,7 @@ G_M14876_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
mov r8, 0xD1FFAB1E
; gcrRegs +[r8]
;; size=23 bbWeight=0 PerfScore 0.00
-G_M14876_IG15: ; bbWeight=0, epilog, nogc, extend
+G_M14876_IG19: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
pop rsi
pop rdi
@@ -163,7 +181,7 @@ G_M14876_IG15: ; bbWeight=0, epilog, nogc, extend
; gcr arg pop 0
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 282, prolog size 9, PerfScore 74.81, instruction count 74, allocated bytes for code 282 (MethodHash=96ffc5e3) for method System.Net.Sockets.Socket:SetToConnected():this
+; Total bytes of code 316, prolog size 9, PerfScore 78.21, instruction count 82, allocated bytes for code 316 (MethodHash=96ffc5e3) for method System.Net.Sockets.Socket:SetToConnected():this
; ============================================================
Unwind Info:
benchmarks.run_tiered.windows.x64.checked.mch
-4 (-0.27%) : 7818.dasm - System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
@@ -198,7 +198,7 @@ G_M24617_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
je G_M24617_IG32
jmp G_M24617_IG17
;; size=94 bbWeight=0.50 PerfScore 12.25
-G_M24617_IG08: ; bbWeight=0.50, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0000 {}, byref
+G_M24617_IG08: ; bbWeight=0.50, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
call <unknown method>
; gcrRegs +[rax]
@@ -223,8 +223,8 @@ G_M24617_IG08: ; bbWeight=0.50, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0
; gcrRegs -[rax]
mov dword ptr [rbp-44H], eax
test eax, eax
- jle G_M24617_IG42
- ;; size=74 bbWeight=0.50 PerfScore 6.88
+ jle SHORT G_M24617_IG12
+ ;; size=70 bbWeight=0.50 PerfScore 6.88
G_M24617_IG09: ; bbWeight=4, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
mov edx, r13d
mov rdx, gword ptr [rbx+8*rdx+10H]
@@ -778,7 +778,7 @@ G_M24617_IG46: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {},
int3
;; size=106 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1489, prolog size 33, PerfScore 430.84, instruction count 379, allocated bytes for code 1489 (MethodHash=a0569fd6) for method System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
+; Total bytes of code 1485, prolog size 33, PerfScore 430.44, instruction count 379, allocated bytes for code 1485 (MethodHash=a0569fd6) for method System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
; ============================================================
Unwind Info:
+0 (0.00%) : 31754.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this
@@ -2125,7 +2125,7 @@ G_M21650_IG108: ; bbWeight=4, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=00A
xor eax, eax
; gcrRegs -[rax]
cmp dword ptr [r12+08H], 0
- jle G_M21650_IG124
+ jle G_M21650_IG123
;; size=29 bbWeight=4 PerfScore 32.00
G_M21650_IG109: ; bbWeight=16, gcrefRegs=9048 {rbx rsi r12 r15}, byrefRegs=00A0 {rbp rdi}, byref
mov dword ptr [rsp+14CH], eax
+0 (0.00%) : 19173.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],bool,bool):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]
@@ -359,7 +359,7 @@ G_M11912_IG22: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
xor r15d, r15d
xor r12d, r12d
cmp dword ptr [rbp+10H], 0
- jle G_M11912_IG32
+ jle G_M11912_IG27
;; size=116 bbWeight=0.50 PerfScore 10.88
G_M11912_IG23: ; bbWeight=4, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
cmp r12d, dword ptr [rbp+10H]
+22 (+4.04%) : 37768.dasm - System.MathBenchmarks.Double:ILogBTest()
@@ -19,34 +19,34 @@
; V07 tmp3 [V07,T04] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
; V09 tmp5 [V09,T07] ( 3, 0 ) int -> rbx "Inlining Arg"
-; V10 tmp6 [V10,T09] ( 2, 0 ) byref -> rsi single-def "Inlining Arg"
-;* V11 tmp7 [V11,T19] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V10 tmp6 [V10,T11] ( 2, 0 ) byref -> rsi single-def "Inlining Arg"
+; V11 tmp7 [V11,T08] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V14 tmp10 [V14,T12] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument"
; V16 tmp12 [V16,T05] ( 4, 0 ) int -> rsi "Inlining Arg"
;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
-; V18 tmp14 [V18,T08] ( 3, 0 ) int -> rbp "Inlining Arg"
-; V19 tmp15 [V19,T11] ( 2, 0 ) byref -> rbx single-def "Inlining Arg"
-;* V20 tmp16 [V20,T20] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V18 tmp14 [V18,T09] ( 3, 0 ) int -> rbp "Inlining Arg"
+; V19 tmp15 [V19,T13] ( 2, 0 ) byref -> rbx single-def "Inlining Arg"
+; V20 tmp16 [V20,T10] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V23 tmp19 [V23,T12] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V23 tmp19 [V23,T14] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V24 tmp20 [V24 ] ( 0, 0 ) byref -> zero-ref V06._reference(offs=0x00) P-INDEP "field V06._reference (fldOffset=0x0)"
;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)"
-; V26 tmp22 [V26,T13] ( 2, 0 ) byref -> rsi single-def V08._reference(offs=0x00) P-INDEP "field V08._reference (fldOffset=0x0)"
+; V26 tmp22 [V26,T15] ( 2, 0 ) byref -> rsi single-def V08._reference(offs=0x00) P-INDEP "field V08._reference (fldOffset=0x0)"
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref single-def V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)"
-; V28 tmp24 [V28,T14] ( 2, 0 ) byref -> rsi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
+; V28 tmp24 [V28,T16] ( 2, 0 ) byref -> rsi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref single-def V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)"
;* V30 tmp26 [V30 ] ( 0, 0 ) byref -> zero-ref V15._reference(offs=0x00) P-INDEP "field V15._reference (fldOffset=0x0)"
;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)"
-; V32 tmp28 [V32,T15] ( 2, 0 ) byref -> rbx single-def V17._reference(offs=0x00) P-INDEP "field V17._reference (fldOffset=0x0)"
+; V32 tmp28 [V32,T17] ( 2, 0 ) byref -> rbx single-def V17._reference(offs=0x00) P-INDEP "field V17._reference (fldOffset=0x0)"
;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref single-def V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)"
-; V34 tmp30 [V34,T16] ( 2, 0 ) byref -> rbx single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
+; V34 tmp30 [V34,T18] ( 2, 0 ) byref -> rbx single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref single-def V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)"
-; V36 tmp32 [V36,T17] ( 2, 0 ) ref -> r9 single-def "argument with side effect"
-; V37 tmp33 [V37,T18] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V36 tmp32 [V36,T19] ( 2, 0 ) ref -> r9 single-def "argument with side effect"
+; V37 tmp33 [V37,T20] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V38 cse0 [V38,T03] ( 2, 5 ) double -> mm7 "CSE - aggressive"
;
; Lcl frame size = 72
@@ -100,7 +100,7 @@ G_M18268_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
mov ecx, dword ptr [rsp+D8H]
cmp ecx, dword ptr [rsp+E8H]
- ja G_M18268_IG09
+ ja G_M18268_IG10
mov rax, bword ptr [rsp+E0H]
; byrRegs +[rax]
mov edx, ecx
@@ -114,20 +114,26 @@ G_M18268_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
call [System.Diagnostics.Debug:Assert(bool)]
; byrRegs -[rax]
; gcr arg pop 0
+ xor ecx, ecx
cmp ebx, 16
jb SHORT G_M18268_IG07
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
vmovdqu ymm0, ymmword ptr [rcx]
vmovdqu ymmword ptr [rsi], ymm0
- mov ecx, dword ptr [rsp+D8H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=111 bbWeight=0 PerfScore 0.00
+G_M18268_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rsi]
+ test ecx, ecx
+ je SHORT G_M18268_IG08
+ mov ecx, dword ptr [rsp+D8H]
add ecx, 16
mov dword ptr [rsp+D8H], ecx
- jmp SHORT G_M18268_IG08
- ;; size=123 bbWeight=0 PerfScore 0.00
-G_M18268_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rsi]
+ jmp SHORT G_M18268_IG09
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M18268_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+C8H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -135,7 +141,7 @@ G_M18268_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M18268_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M18268_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rcx, [rsp+C8H]
mov edx, 0x9C3
mov r8d, 20
@@ -146,14 +152,14 @@ G_M18268_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
mov esi, dword ptr [rsp+D8H]
cmp esi, dword ptr [rsp+E8H]
- jbe SHORT G_M18268_IG10
+ jbe SHORT G_M18268_IG11
;; size=51 bbWeight=0 PerfScore 0.00
-G_M18268_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18268_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M18268_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M18268_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, bword ptr [rsp+E0H]
; byrRegs +[rcx]
mov eax, esi
@@ -167,20 +173,26 @@ G_M18268_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
shr ecx, 31
call [System.Diagnostics.Debug:Assert(bool)]
; gcr arg pop 0
+ xor ecx, ecx
cmp ebp, 16
- jb SHORT G_M18268_IG11
+ jb SHORT G_M18268_IG12
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
vmovdqu ymm0, ymmword ptr [rcx]
vmovdqu ymmword ptr [rbx], ymm0
- mov ecx, dword ptr [rsp+D8H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=66 bbWeight=0 PerfScore 0.00
+G_M18268_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rbx]
+ test ecx, ecx
+ je SHORT G_M18268_IG13
+ mov ecx, dword ptr [rsp+D8H]
add ecx, 16
mov dword ptr [rsp+D8H], ecx
- jmp SHORT G_M18268_IG12
- ;; size=78 bbWeight=0 PerfScore 0.00
-G_M18268_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rbx]
+ jmp SHORT G_M18268_IG14
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M18268_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+C8H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -188,7 +200,7 @@ G_M18268_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M18268_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18268_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x5E93
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -228,7 +240,7 @@ G_M18268_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
RWD00 dq 3F3A36E2EB1C432Dh ; 0.0004
-; Total bytes of code 545, prolog size 43, PerfScore 119.50, instruction count 108, allocated bytes for code 545 (MethodHash=60edb8a3) for method System.MathBenchmarks.Double:ILogBTest()
+; Total bytes of code 567, prolog size 43, PerfScore 121.70, instruction count 116, allocated bytes for code 567 (MethodHash=60edb8a3) for method System.MathBenchmarks.Double:ILogBTest()
; ============================================================
Unwind Info:
+22 (+4.29%) : 28594.dasm - System.MathBenchmarks.Double:CopySignTest()
@@ -23,33 +23,33 @@
; V11 tmp7 [V11,T05] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
; V13 tmp9 [V13,T08] ( 3, 0 ) int -> rdi "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) byref -> rsi single-def "Inlining Arg"
-;* V15 tmp11 [V15,T19] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V14 tmp10 [V14,T12] ( 2, 0 ) byref -> rsi single-def "Inlining Arg"
+; V15 tmp11 [V15,T09] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V18 tmp14 [V18,T11] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V18 tmp14 [V18,T13] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument"
; V20 tmp16 [V20,T06] ( 4, 0 ) int -> rsi "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
-; V22 tmp18 [V22,T09] ( 3, 0 ) int -> rbx "Inlining Arg"
-; V23 tmp19 [V23,T12] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
-;* V24 tmp20 [V24,T20] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V22 tmp18 [V22,T10] ( 3, 0 ) int -> rbx "Inlining Arg"
+; V23 tmp19 [V23,T14] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
+; V24 tmp20 [V24,T11] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V27 tmp23 [V27,T13] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V27 tmp23 [V27,T15] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref V10._reference(offs=0x00) P-INDEP "field V10._reference (fldOffset=0x0)"
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)"
-; V30 tmp26 [V30,T14] ( 2, 0 ) byref -> rsi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
+; V30 tmp26 [V30,T16] ( 2, 0 ) byref -> rsi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref single-def V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)"
-; V32 tmp28 [V32,T15] ( 2, 0 ) byref -> rsi single-def V16._reference(offs=0x00) P-INDEP "field V16._reference (fldOffset=0x0)"
+; V32 tmp28 [V32,T17] ( 2, 0 ) byref -> rsi single-def V16._reference(offs=0x00) P-INDEP "field V16._reference (fldOffset=0x0)"
;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref single-def V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)"
;* V34 tmp30 [V34 ] ( 0, 0 ) byref -> zero-ref V19._reference(offs=0x00) P-INDEP "field V19._reference (fldOffset=0x0)"
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)"
-; V36 tmp32 [V36,T16] ( 2, 0 ) byref -> rdi single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
+; V36 tmp32 [V36,T18] ( 2, 0 ) byref -> rdi single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref single-def V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)"
-; V38 tmp34 [V38,T17] ( 2, 0 ) byref -> rdi single-def V25._reference(offs=0x00) P-INDEP "field V25._reference (fldOffset=0x0)"
+; V38 tmp34 [V38,T19] ( 2, 0 ) byref -> rdi single-def V25._reference(offs=0x00) P-INDEP "field V25._reference (fldOffset=0x0)"
;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref single-def V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)"
-; V40 tmp36 [V40,T18] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V40 tmp36 [V40,T20] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V41 cse0 [V41,T03] ( 3, 9 ) simd16 -> mm2 "CSE - aggressive"
; V42 cse1 [V42,T04] ( 2, 5 ) double -> mm1 "CSE - aggressive"
;
@@ -107,7 +107,7 @@ G_M64933_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
mov ecx, dword ptr [rsp+A8H]
cmp ecx, dword ptr [rsp+B8H]
- ja G_M64933_IG09
+ ja G_M64933_IG10
mov rax, bword ptr [rsp+B0H]
; byrRegs +[rax]
mov edx, ecx
@@ -121,20 +121,26 @@ G_M64933_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
call [System.Diagnostics.Debug:Assert(bool)]
; byrRegs -[rax]
; gcr arg pop 0
+ xor ecx, ecx
cmp edi, 16
jb SHORT G_M64933_IG07
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
vmovdqu ymm0, ymmword ptr [rcx]
vmovdqu ymmword ptr [rsi], ymm0
- mov ecx, dword ptr [rsp+A8H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=111 bbWeight=0 PerfScore 0.00
+G_M64933_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rsi]
+ test ecx, ecx
+ je SHORT G_M64933_IG08
+ mov ecx, dword ptr [rsp+A8H]
add ecx, 16
mov dword ptr [rsp+A8H], ecx
- jmp SHORT G_M64933_IG08
- ;; size=123 bbWeight=0 PerfScore 0.00
-G_M64933_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rsi]
+ jmp SHORT G_M64933_IG09
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M64933_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+98H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -142,21 +148,21 @@ G_M64933_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M64933_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M64933_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rcx, [rsp+98H]
xor edx, edx
call [<unknown method>]
; gcr arg pop 0
mov esi, dword ptr [rsp+A8H]
cmp esi, dword ptr [rsp+B8H]
- jbe SHORT G_M64933_IG10
+ jbe SHORT G_M64933_IG11
;; size=32 bbWeight=0 PerfScore 0.00
-G_M64933_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64933_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M64933_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M64933_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, bword ptr [rsp+B0H]
; byrRegs +[rcx]
mov eax, esi
@@ -170,20 +176,26 @@ G_M64933_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
shr ecx, 31
call [System.Diagnostics.Debug:Assert(bool)]
; gcr arg pop 0
+ xor ecx, ecx
cmp ebx, 16
- jb SHORT G_M64933_IG11
+ jb SHORT G_M64933_IG12
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
vmovdqu ymm0, ymmword ptr [rcx]
vmovdqu ymmword ptr [rdi], ymm0
- mov ecx, dword ptr [rsp+A8H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=66 bbWeight=0 PerfScore 0.00
+G_M64933_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rdi]
+ test ecx, ecx
+ je SHORT G_M64933_IG13
+ mov ecx, dword ptr [rsp+A8H]
add ecx, 16
mov dword ptr [rsp+A8H], ecx
- jmp SHORT G_M64933_IG12
- ;; size=78 bbWeight=0 PerfScore 0.00
-G_M64933_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ jmp SHORT G_M64933_IG14
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M64933_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+98H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -191,7 +203,7 @@ G_M64933_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M64933_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64933_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+98H]
vmovaps xmm1, xmm6
call [<unknown method>]
@@ -224,7 +236,7 @@ RWD08 dd 00000000h, 00000000h
RWD16 dq 8000000000000000h, 8000000000000000h
-; Total bytes of code 513, prolog size 62, PerfScore 122.38, instruction count 105, allocated bytes for code 513 (MethodHash=99c5025a) for method System.MathBenchmarks.Double:CopySignTest()
+; Total bytes of code 535, prolog size 62, PerfScore 124.58, instruction count 113, allocated bytes for code 535 (MethodHash=99c5025a) for method System.MathBenchmarks.Double:CopySignTest()
; ============================================================
Unwind Info:
+22 (+4.29%) : 33599.dasm - System.MathBenchmarks.Single:CopySignTest()
@@ -23,33 +23,33 @@
; V11 tmp7 [V11,T05] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
; V13 tmp9 [V13,T08] ( 3, 0 ) int -> rdi "Inlining Arg"
-; V14 tmp10 [V14,T10] ( 2, 0 ) byref -> rsi single-def "Inlining Arg"
-;* V15 tmp11 [V15,T19] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V14 tmp10 [V14,T12] ( 2, 0 ) byref -> rsi single-def "Inlining Arg"
+; V15 tmp11 [V15,T09] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V18 tmp14 [V18,T11] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V18 tmp14 [V18,T13] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument"
; V20 tmp16 [V20,T06] ( 4, 0 ) int -> rsi "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
-; V22 tmp18 [V22,T09] ( 3, 0 ) int -> rbx "Inlining Arg"
-; V23 tmp19 [V23,T12] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
-;* V24 tmp20 [V24,T20] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V22 tmp18 [V22,T10] ( 3, 0 ) int -> rbx "Inlining Arg"
+; V23 tmp19 [V23,T14] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
+; V24 tmp20 [V24,T11] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V27 tmp23 [V27,T13] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V27 tmp23 [V27,T15] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref V10._reference(offs=0x00) P-INDEP "field V10._reference (fldOffset=0x0)"
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref V10._length(offs=0x08) P-INDEP "field V10._length (fldOffset=0x8)"
-; V30 tmp26 [V30,T14] ( 2, 0 ) byref -> rsi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
+; V30 tmp26 [V30,T16] ( 2, 0 ) byref -> rsi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
;* V31 tmp27 [V31 ] ( 0, 0 ) int -> zero-ref single-def V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)"
-; V32 tmp28 [V32,T15] ( 2, 0 ) byref -> rsi single-def V16._reference(offs=0x00) P-INDEP "field V16._reference (fldOffset=0x0)"
+; V32 tmp28 [V32,T17] ( 2, 0 ) byref -> rsi single-def V16._reference(offs=0x00) P-INDEP "field V16._reference (fldOffset=0x0)"
;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref single-def V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)"
;* V34 tmp30 [V34 ] ( 0, 0 ) byref -> zero-ref V19._reference(offs=0x00) P-INDEP "field V19._reference (fldOffset=0x0)"
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref V19._length(offs=0x08) P-INDEP "field V19._length (fldOffset=0x8)"
-; V36 tmp32 [V36,T16] ( 2, 0 ) byref -> rdi single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
+; V36 tmp32 [V36,T18] ( 2, 0 ) byref -> rdi single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref single-def V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)"
-; V38 tmp34 [V38,T17] ( 2, 0 ) byref -> rdi single-def V25._reference(offs=0x00) P-INDEP "field V25._reference (fldOffset=0x0)"
+; V38 tmp34 [V38,T19] ( 2, 0 ) byref -> rdi single-def V25._reference(offs=0x00) P-INDEP "field V25._reference (fldOffset=0x0)"
;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref single-def V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)"
-; V40 tmp36 [V40,T18] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V40 tmp36 [V40,T20] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V41 cse0 [V41,T03] ( 3, 9 ) simd16 -> mm2 "CSE - aggressive"
; V42 cse1 [V42,T04] ( 2, 5 ) float -> mm1 "CSE - aggressive"
;
@@ -107,7 +107,7 @@ G_M19210_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
mov ecx, dword ptr [rsp+B0H]
cmp ecx, dword ptr [rsp+C0H]
- ja G_M19210_IG09
+ ja G_M19210_IG10
mov rax, bword ptr [rsp+B8H]
; byrRegs +[rax]
mov edx, ecx
@@ -121,20 +121,26 @@ G_M19210_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
call [System.Diagnostics.Debug:Assert(bool)]
; byrRegs -[rax]
; gcr arg pop 0
+ xor ecx, ecx
cmp edi, 16
jb SHORT G_M19210_IG07
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
vmovdqu ymm0, ymmword ptr [rcx]
vmovdqu ymmword ptr [rsi], ymm0
- mov ecx, dword ptr [rsp+B0H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=111 bbWeight=0 PerfScore 0.00
+G_M19210_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rsi]
+ test ecx, ecx
+ je SHORT G_M19210_IG08
+ mov ecx, dword ptr [rsp+B0H]
add ecx, 16
mov dword ptr [rsp+B0H], ecx
- jmp SHORT G_M19210_IG08
- ;; size=123 bbWeight=0 PerfScore 0.00
-G_M19210_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rsi]
+ jmp SHORT G_M19210_IG09
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M19210_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+A0H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -142,21 +148,21 @@ G_M19210_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M19210_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M19210_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rcx, [rsp+A0H]
xor edx, edx
call [<unknown method>]
; gcr arg pop 0
mov esi, dword ptr [rsp+B0H]
cmp esi, dword ptr [rsp+C0H]
- jbe SHORT G_M19210_IG10
+ jbe SHORT G_M19210_IG11
;; size=32 bbWeight=0 PerfScore 0.00
-G_M19210_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19210_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M19210_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M19210_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, bword ptr [rsp+B8H]
; byrRegs +[rcx]
mov eax, esi
@@ -170,20 +176,26 @@ G_M19210_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
shr ecx, 31
call [System.Diagnostics.Debug:Assert(bool)]
; gcr arg pop 0
+ xor ecx, ecx
cmp ebx, 16
- jb SHORT G_M19210_IG11
+ jb SHORT G_M19210_IG12
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
vmovdqu ymm0, ymmword ptr [rcx]
vmovdqu ymmword ptr [rdi], ymm0
- mov ecx, dword ptr [rsp+B0H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=66 bbWeight=0 PerfScore 0.00
+G_M19210_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rdi]
+ test ecx, ecx
+ je SHORT G_M19210_IG13
+ mov ecx, dword ptr [rsp+B0H]
add ecx, 16
mov dword ptr [rsp+B0H], ecx
- jmp SHORT G_M19210_IG12
- ;; size=78 bbWeight=0 PerfScore 0.00
-G_M19210_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ jmp SHORT G_M19210_IG14
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M19210_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+A0H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -191,7 +203,7 @@ G_M19210_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M19210_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19210_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+A0H]
vmovaps xmm1, xmm6
call [<unknown method>]
@@ -224,7 +236,7 @@ RWD04 dd 00000000h, 00000000h, 00000000h
RWD16 dq 8000000080000000h, 8000000080000000h
-; Total bytes of code 513, prolog size 62, PerfScore 122.38, instruction count 105, allocated bytes for code 513 (MethodHash=d136b4f5) for method System.MathBenchmarks.Single:CopySignTest()
+; Total bytes of code 535, prolog size 62, PerfScore 124.58, instruction count 113, allocated bytes for code 535 (MethodHash=d136b4f5) for method System.MathBenchmarks.Single:CopySignTest()
; ============================================================
Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-12 (-4.07%) : 231367.dasm - System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this
@@ -6,19 +6,18 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 7, 14.50) ref -> rdi this class-hnd single-def
+; V00 this [V00,T03] ( 9, 17 ) ref -> rdi this class-hnd single-def
; V01 arg1 [V01,T00] ( 12, 21.50) ref -> rsi class-hnd single-def
-; V02 loc0 [V02,T11] ( 2, 1.50) ref -> rbx class-hnd single-def
-; V03 loc1 [V03,T10] ( 3, 4 ) bool -> rbp
+; V02 loc0 [V02,T10] ( 2, 1.50) ref -> rbx class-hnd single-def
+; V03 loc1 [V03,T09] ( 3, 4 ) bool -> rbp
; V04 loc2 [V04,T01] ( 7, 23 ) int -> r14
; V05 loc3 [V05,T02] ( 7, 20 ) ref -> r12 class-hnd
-; V06 loc4 [V06,T04] ( 7, 16 ) ref -> [rsp+20H] class-hnd
-; V07 loc5 [V07,T09] ( 2, 6 ) ref -> r13 class-hnd
+; V06 loc4 [V06,T04] ( 7, 16 ) ref -> [rsp+28H] class-hnd
+; V07 loc5 [V07,T08] ( 2, 6 ) ref -> r13 class-hnd
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T08] ( 3, 8 ) ref -> r13
+; V09 tmp1 [V09,T07] ( 3, 8 ) ref -> r13
; V10 cse0 [V10,T05] ( 5, 12 ) long -> r15 "CSE - aggressive"
-; V11 cse1 [V11,T07] ( 3, 10 ) long -> [rsp+30H] spill-single-def "CSE - aggressive"
-; V12 cse2 [V12,T06] ( 4, 10.50) long -> [rsp+28H] "CSE - aggressive"
+; V11 cse1 [V11,T06] ( 3, 10 ) long -> [rsp+30H] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 56
@@ -58,7 +57,7 @@ G_M46494_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jle G_M46494_IG15
+ jle G_M46494_IG13
;; size=42 bbWeight=1 PerfScore 16.50
G_M46494_IG03: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
@@ -98,38 +97,37 @@ G_M46494_IG06: ; bbWeight=4, gcrefRegs=30C8 {rbx rsi rdi r12 r13}, byrefR
; gcrRegs +[rdx]
mov r8d, r14d
mov rax, qword ptr [rdi]
- mov qword ptr [rsp+28H], rax
- mov r9, qword ptr [rax+48H]
- mov qword ptr [rsp+30H], r9
- call [r9+30H]<unknown method>
+ mov rax, qword ptr [rax+48H]
+ mov qword ptr [rsp+30H], rax
+ call [rax+30H]<unknown method>
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
je SHORT G_M46494_IG08
- ;; size=34 bbWeight=4 PerfScore 44.00
+ ;; size=28 bbWeight=4 PerfScore 40.00
G_M46494_IG07: ; bbWeight=2, gcrefRegs=30C8 {rbx rsi rdi r12 r13}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, r12
; gcrRegs +[rdx]
- mov rax, qword ptr [rsp+28H]
- mov r8, qword ptr [rax+50H]
- call [r8]<unknown method>
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+50H]
+ call [rax]<unknown method>
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
jmp SHORT G_M46494_IG09
- ;; size=20 bbWeight=2 PerfScore 17.00
+ ;; size=17 bbWeight=2 PerfScore 19.00
G_M46494_IG08: ; bbWeight=2, gcrefRegs=30C8 {rbx rsi rdi r12 r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, r12
; gcrRegs +[rdx]
- mov r9, qword ptr [rsp+30H]
- call [r9+38H]<unknown method>
+ mov rax, qword ptr [rsp+30H]
+ call [rax+38H]<unknown method>
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
- ;; size=15 bbWeight=2 PerfScore 9.00
+ ;; size=14 bbWeight=2 PerfScore 9.00
G_M46494_IG09: ; bbWeight=4, gcrefRegs=30C9 {rax rbx rsi rdi r12 r13}, byrefRegs=0000 {}, byref, isz
cmp r12, rax
jne SHORT G_M46494_IG11
@@ -140,7 +138,7 @@ G_M46494_IG10: ; bbWeight=2, gcrefRegs=20C9 {rax rbx rsi rdi r13}, byrefR
je SHORT G_M46494_IG12
mov rcx, rax
; gcrRegs +[rcx]
- mov gword ptr [rsp+20H], rax
+ mov gword ptr [rsp+28H], rax
; GC ptr vars +{V06}
mov rdx, qword ptr [rax]
mov rdx, qword ptr [rdx+48H]
@@ -148,7 +146,7 @@ G_M46494_IG10: ; bbWeight=2, gcrefRegs=20C9 {rax rbx rsi rdi r13}, byrefR
; gcrRegs -[rcx]
; gcr arg pop 0
cmp rax, r13
- mov rax, gword ptr [rsp+20H]
+ mov rax, gword ptr [rsp+28H]
je SHORT G_M46494_IG12
;; size=33 bbWeight=2 PerfScore 23.50
G_M46494_IG11: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
@@ -175,10 +173,9 @@ G_M46494_IG12: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
jg G_M46494_IG03
;; size=18 bbWeight=4 PerfScore 19.00
G_M46494_IG13: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov r14, qword ptr [rsp+28H]
test ebp, ebp
je SHORT G_M46494_IG15
- ;; size=9 bbWeight=1 PerfScore 2.25
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M46494_IG14: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rdi
; gcrRegs +[rcx]
@@ -186,11 +183,12 @@ G_M46494_IG14: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs +[rdx]
mov r8, rbx
; gcrRegs +[r8]
- mov rax, qword ptr [r14+C0H]
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+C0H]
call [rax+08H]<unknown method>
; gcrRegs -[rcx rdx rbx rdi r8]
; gcr arg pop 0
- ;; size=19 bbWeight=0.50 PerfScore 2.88
+ ;; size=22 bbWeight=0.50 PerfScore 3.88
G_M46494_IG15: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, rsi
; gcrRegs +[rax]
@@ -208,7 +206,7 @@ G_M46494_IG16: ; bbWeight=1, epilog, nogc, extend
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 295, prolog size 16, PerfScore 230.38, instruction count 98, allocated bytes for code 295 (MethodHash=b0604a61) for method System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this
+; Total bytes of code 283, prolog size 16, PerfScore 227.18, instruction count 97, allocated bytes for code 283 (MethodHash=b0604a61) for method System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this
; ============================================================
Unwind Info:
-22 (-2.27%) : 438673.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon])
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 10
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 10
; 2 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
@@ -31,12 +31,12 @@
;* V19 tmp12 [V19 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V21 tmp14 [V21 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
-; V22 tmp15 [V22,T10] ( 5, 30.80) int -> r14 "Inline stloc first use temp"
+; V22 tmp15 [V22,T10] ( 5, 30.80) int -> rbx "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
-; V24 tmp17 [V24,T02] ( 7,113.80) ref -> r12 class-hnd "Inline stloc first use temp"
-; V25 tmp18 [V25,T01] ( 9,165.90) int -> r14 "Inline stloc first use temp"
-; V26 tmp19 [V26,T08] ( 3, 49.40) int -> rax "guarded devirt return temp"
-; V27 tmp20 [V27,T00] ( 6,247 ) ref -> r13 "guarded devirt arg temp"
+; V24 tmp17 [V24,T02] ( 7,113.80) ref -> r13 class-hnd "Inline stloc first use temp"
+; V25 tmp18 [V25,T01] ( 9,165.90) int -> rbx "Inline stloc first use temp"
+; V26 tmp19 [V26,T08] ( 6, 49.40) int -> rax "guarded devirt return temp"
+; V27 tmp20 [V27,T00] ( 6,247 ) ref -> rax "guarded devirt arg temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp"
; V29 tmp22 [V29,T03] ( 2, 98.80) byref -> rcx "impAppendStmt"
; V30 tmp23 [V30,T04] ( 2, 98.80) int -> rdx "impAppendStmt"
@@ -50,8 +50,8 @@
; V38 tmp31 [V38,T43] ( 2, 0 ) int -> [rsp+58H] do-not-enreg[H] hidden-struct-arg V14._length(offs=0x08) P-DEP "field V14._length (fldOffset=0x8)"
; V39 tmp32 [V39,T34] ( 2, 2.40) byref -> [rsp+40H] do-not-enreg[H] hidden-struct-arg V16._reference(offs=0x00) P-DEP "field V16._reference (fldOffset=0x0)"
; V40 tmp33 [V40,T35] ( 2, 2.40) int -> [rsp+48H] do-not-enreg[H] hidden-struct-arg V16._length(offs=0x08) P-DEP "field V16._length (fldOffset=0x8)"
-; V41 tmp34 [V41,T06] ( 6, 78.10) byref -> rbx single-def V23._reference(offs=0x00) P-INDEP "field V23._reference (fldOffset=0x0)"
-; V42 tmp35 [V42,T07] ( 5, 52.60) int -> r15 V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)"
+; V41 tmp34 [V41,T06] ( 6, 78.10) byref -> r15 single-def V23._reference(offs=0x00) P-INDEP "field V23._reference (fldOffset=0x0)"
+; V42 tmp35 [V42,T07] ( 5, 52.60) int -> r14 V23._length(offs=0x08) P-INDEP "field V23._length (fldOffset=0x8)"
;* V43 tmp36 [V43 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref"
; V44 tmp37 [V44 ] ( 14, 16.80) struct (16) [rsp+30H] do-not-enreg[XS] must-init addr-exposed "by-value struct argument"
; V45 tmp38 [V45,T36] ( 2, 0.40) long -> rcx "argument with side effect"
@@ -66,9 +66,9 @@
; V54 tmp47 [V54,T25] ( 2, 7.60) long -> r8 "argument with side effect"
;* V55 tmp48 [V55,T31] ( 0, 0 ) long -> zero-ref "argument with side effect"
; V56 cse0 [V56,T26] ( 7, 7.30) long -> r15 "CSE - moderate"
-; V57 cse1 [V57,T05] ( 6, 78.90) int -> registers "CSE - aggressive"
-; V58 cse2 [V58,T11] ( 3, 22.50) int -> rbp "CSE - aggressive"
-; V59 cse3 [V59,T17] ( 3, 9.10) int -> rdi "CSE - moderate"
+; V57 cse1 [V57,T05] ( 6, 78.90) int -> rdi "CSE - aggressive"
+; V58 cse2 [V58,T11] ( 3, 22.50) int -> r12 "CSE - aggressive"
+; V59 cse3 [V59,T17] ( 3, 9.10) int -> rbp "CSE - moderate"
; V60 cse4 [V60,T18] ( 9, 9 ) ref -> rdx "CSE - moderate"
; V61 rat0 [V61,T19] ( 3, 7.60) long -> r15 "runtime lookup"
; V62 rat1 [V62,T16] ( 3, 10.64) long -> r15 "fgMakeTemp is creating a new local variable"
@@ -140,25 +140,53 @@ G_M39096_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi},
G_M39096_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
mov r14d, dword ptr [rdi+08H]
cmp r14d, 1
- jle G_M39096_IG29
+ jle G_M39096_IG38
;; size=14 bbWeight=1 PerfScore 3.25
-G_M39096_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+G_M39096_IG06: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
cmp r14d, 16
- jle G_M39096_IG19
- ;; size=10 bbWeight=1.90 PerfScore 2.38
-G_M39096_IG07: ; bbWeight=0.90, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+ jg SHORT G_M39096_IG11
+ ;; size=6 bbWeight=1.90 PerfScore 2.38
+G_M39096_IG07: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+ cmp r14d, 2
+ je G_M39096_IG27
+ ;; size=10 bbWeight=1 PerfScore 1.25
+G_M39096_IG08: ; bbWeight=0.90, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+ cmp r14d, 3
+ je G_M39096_IG21
+ ;; size=10 bbWeight=0.90 PerfScore 1.12
+G_M39096_IG09: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+ mov rcx, qword ptr [rbx+38H]
+ mov rcx, qword ptr [rcx]
+ mov r15, qword ptr [rcx+30H]
+ test r15, r15
+ je G_M39096_IG30
+ ;; size=20 bbWeight=0.80 PerfScore 5.80
+G_M39096_IG10: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+ jmp G_M39096_IG31
+ ;; size=5 bbWeight=0.64 PerfScore 1.28
+G_M39096_IG11: ; bbWeight=0.90, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
test ebp, ebp
- je G_M39096_IG40
+ je G_M39096_IG43
;; size=8 bbWeight=0.90 PerfScore 1.12
-G_M39096_IG08: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+G_M39096_IG12: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
dec ebp
mov rcx, qword ptr [rbx+38H]
mov rcx, qword ptr [rcx]
mov r15, qword ptr [rcx+30H]
test r15, r15
- je G_M39096_IG15
- ;; size=22 bbWeight=1.90 PerfScore 14.25
-G_M39096_IG09: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+ je SHORT G_M39096_IG14
+ ;; size=18 bbWeight=1.90 PerfScore 14.25
+G_M39096_IG13: ; bbWeight=1.52, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
+ jmp SHORT G_M39096_IG15
+ ;; size=2 bbWeight=1.52 PerfScore 3.04
+G_M39096_IG14: ; bbWeight=0.38, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+ mov rcx, rbx
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r15, rax
+ ;; size=21 bbWeight=0.38 PerfScore 0.67
+G_M39096_IG15: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
mov r8, r15
mov dword ptr [rsp+20H], r14d
lea rdx, [rsp+70H]
@@ -169,11 +197,11 @@ G_M39096_IG09: ; bbWeight=1.90, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
; byrRegs -[rcx]
; gcr arg pop 0
;; size=25 bbWeight=1.90 PerfScore 9.97
-G_M39096_IG10: ; bbWeight=1.90, nogc, extend
+G_M39096_IG16: ; bbWeight=1.90, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+70H]
vmovdqu xmmword ptr [rsp+30H], xmm0
;; size=12 bbWeight=1.90 PerfScore 7.60
-G_M39096_IG11: ; bbWeight=1.90, extend
+G_M39096_IG17: ; bbWeight=1.90, extend
mov rcx, rbx
lea rdx, [rsp+30H]
mov r8, rsi
@@ -193,11 +221,11 @@ G_M39096_IG11: ; bbWeight=1.90, extend
; byrRegs -[rcx]
; gcr arg pop 0
;; size=50 bbWeight=1.90 PerfScore 19.00
-G_M39096_IG12: ; bbWeight=1.90, nogc, extend
+G_M39096_IG18: ; bbWeight=1.90, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+60H]
vmovdqu xmmword ptr [rsp+30H], xmm0
;; size=12 bbWeight=1.90 PerfScore 7.60
-G_M39096_IG13: ; bbWeight=1.90, extend
+G_M39096_IG19: ; bbWeight=1.90, extend
mov rcx, rbx
lea rdx, [rsp+30H]
mov r8d, ebp
@@ -210,168 +238,18 @@ G_M39096_IG13: ; bbWeight=1.90, extend
cmp r14d, 1
jg G_M39096_IG06
;; size=33 bbWeight=1.90 PerfScore 10.92
-G_M39096_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39096_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
; byrRegs -[rdi]
- jmp G_M39096_IG29
+ jmp G_M39096_IG38
;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M39096_IG15: ; bbWeight=0.38, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
- ; gcrRegs +[rsi]
- ; byrRegs +[rdi]
- mov rcx, rbx
- mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r15, rax
- jmp G_M39096_IG09
- ;; size=26 bbWeight=0.38 PerfScore 1.43
-G_M39096_IG16: ; bbWeight=18.80, gcrefRegs=1040 {rsi r12}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs +[r12]
- ; byrRegs -[rdi] +[rbx]
- lea edx, [r14+01H]
- cmp edx, r15d
- jae G_M39096_IG45
- lea rcx, bword ptr [rbx+8*rdx]
- ; byrRegs +[rcx]
- mov edx, r14d
- mov rdx, gword ptr [rbx+8*rdx]
- ; gcrRegs +[rdx]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rdx]
- ; byrRegs -[rcx]
- dec r14d
- ;; size=32 bbWeight=18.80 PerfScore 108.10
-G_M39096_IG17: ; bbWeight=26.30, gcrefRegs=1040 {rsi r12}, byrefRegs=0008 {rbx}, byref
- test r14d, r14d
- jl G_M39096_IG26
- ;; size=9 bbWeight=26.30 PerfScore 32.88
-G_M39096_IG18: ; bbWeight=24.70, gcrefRegs=1040 {rsi r12}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M39096_IG24
- ;; size=2 bbWeight=24.70 PerfScore 49.40
-G_M39096_IG19: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
- ; gcrRegs -[r12]
- ; byrRegs -[rbx] +[rdi]
- cmp r14d, 2
- je G_M39096_IG36
- ;; size=10 bbWeight=1 PerfScore 1.25
-G_M39096_IG20: ; bbWeight=0.90, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
- cmp r14d, 3
- je G_M39096_IG30
- ;; size=10 bbWeight=0.90 PerfScore 1.12
-G_M39096_IG21: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
- mov rcx, qword ptr [rbx+38H]
- mov rcx, qword ptr [rcx]
- mov r15, qword ptr [rcx+30H]
- test r15, r15
- je G_M39096_IG28
- ;; size=20 bbWeight=0.80 PerfScore 5.80
-G_M39096_IG22: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
- mov r8, r15
- mov dword ptr [rsp+20H], r14d
- lea rdx, [rsp+40H]
- mov rcx, rdi
- ; byrRegs +[rcx]
- xor r9d, r9d
- call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this]
- ; byrRegs -[rcx rdi]
- ; gcr arg pop 0
- mov rbx, bword ptr [rsp+40H]
- ; byrRegs +[rbx]
- mov r15d, dword ptr [rsp+48H]
- xor r14d, r14d
- lea edi, [r15-01H]
- test edi, edi
- jle G_M39096_IG29
- ;; size=50 bbWeight=0.80 PerfScore 7.40
-G_M39096_IG23: ; bbWeight=7.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- lea ebp, [r14+01H]
- mov edx, ebp
- mov r12, gword ptr [rbx+8*rdx]
- ; gcrRegs +[r12]
- jmp SHORT G_M39096_IG17
- ;; size=12 bbWeight=7.50 PerfScore 35.62
-G_M39096_IG24: ; bbWeight=24.70, gcrefRegs=1040 {rsi r12}, byrefRegs=0008 {rbx}, byref, isz
- cmp r14d, r15d
- jae G_M39096_IG45
- mov edx, r14d
- mov r13, gword ptr [rbx+8*rdx]
- ; gcrRegs +[r13]
- mov rdx, 0xD1FFAB1E ; code for System.OrdinalIgnoreCaseComparer:Compare(System.String,System.String):int:this
- cmp qword ptr [rsi+18H], rdx
- jne G_M39096_IG39
- cmp r12, r13
- je SHORT G_M39096_IG26
- test r12, r12
- je G_M39096_IG16
- test r13, r13
- je SHORT G_M39096_IG26
- lea rcx, bword ptr [r12+0CH]
- ; byrRegs +[rcx]
- mov edx, dword ptr [r12+08H]
- lea r8, bword ptr [r13+0CH]
- ; byrRegs +[r8]
- mov r9d, dword ptr [r13+08H]
...
-9 (-1.14%) : 460997.dasm - ILCompiler.TypeExtensions:AcquiresInstMethodTableFromThis(Internal.TypeSystem.MethodDesc):bool
@@ -9,28 +9,28 @@
; 15 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 19, 6.98) ref -> rsi class-hnd single-def
+; V00 arg0 [V00,T00] ( 19, 6.29) ref -> rsi class-hnd single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T23] ( 3, 0.55) ref -> rax "guarded devirt return temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp"
; V04 tmp3 [V04,T33] ( 4, 0.00) int -> rbx "guarded devirt return temp"
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp"
-; V06 tmp5 [V06,T05] ( 2, 2 ) int -> rax "guarded devirt return temp"
+; V06 tmp5 [V06,T12] ( 3, 1.31) int -> rax "guarded devirt return temp"
; V07 tmp6 [V07,T14] ( 2, 1.38) ref -> rcx class-hnd exact single-def "guarded devirt this exact temp"
;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp"
;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp"
-; V10 tmp9 [V10,T06] ( 3, 2.50) ref -> rcx class-hnd "Inline stloc first use temp"
+; V10 tmp9 [V10,T05] ( 3, 2.50) ref -> rcx class-hnd "Inline stloc first use temp"
; V11 tmp10 [V11,T31] ( 5, 0.00) ref -> rcx class-hnd single-def "spilling ret_expr"
; V12 tmp11 [V12,T36] ( 4, 0.00) int -> rax "guarded devirt return temp"
;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp"
-; V14 tmp13 [V14,T07] ( 2, 1.67) int -> rax "guarded devirt return temp"
+; V14 tmp13 [V14,T06] ( 2, 1.67) int -> rax "guarded devirt return temp"
;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp"
-; V16 tmp15 [V16,T11] ( 6, 2.07) ref -> rbx "guarded devirt return temp"
-; V17 tmp16 [V17,T03] ( 5, 4.14) ref -> rcx single-def "guarded devirt arg temp"
+; V16 tmp15 [V16,T10] ( 6, 2.07) ref -> rbx "guarded devirt return temp"
+; V17 tmp16 [V17,T02] ( 5, 4.14) ref -> rcx single-def "guarded devirt arg temp"
;* V18 tmp17 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp"
;* V19 tmp18 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp"
;* V20 tmp19 [V20 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp"
-; V21 tmp20 [V21,T12] ( 4, 2.07) ref -> rbx class-hnd exact single-def "guarded devirt this exact temp"
+; V21 tmp20 [V21,T11] ( 4, 2.07) ref -> rbx class-hnd exact single-def "guarded devirt this exact temp"
;* V22 tmp21 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp"
;* V23 tmp22 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V24 tmp23 [V24,T37] ( 3, 0.00) ref -> rcx "guarded devirt return temp"
@@ -38,7 +38,7 @@
;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp"
;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
;* V28 tmp27 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
-;* V29 tmp28 [V29,T10] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
+;* V29 tmp28 [V29,T09] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
;* V30 tmp29 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp"
;* V31 tmp30 [V31 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp"
; V32 tmp31 [V32,T19] ( 2, 0.94) ref -> rcx class-hnd exact single-def "guarded devirt this exact temp"
@@ -58,7 +58,7 @@
; V46 tmp45 [V46,T30] ( 3, 0.00) int -> rdx single-def "Inline stloc first use temp"
;* V47 tmp46 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V48 tmp47 [V48,T15] ( 2, 1.38) ref -> rbx single-def V08._genericParameters(offs=0x00) P-INDEP "field V08._genericParameters (fldOffset=0x0)"
-; V49 tmp48 [V49,T09] ( 3, 2.21) ref -> rbx single-def V09._collection(offs=0x00) P-INDEP "field V09._collection (fldOffset=0x0)"
+; V49 tmp48 [V49,T08] ( 3, 2.21) ref -> rbx single-def V09._collection(offs=0x00) P-INDEP "field V09._collection (fldOffset=0x0)"
; V50 tmp49 [V50,T01] ( 6, 6.83) int -> rbp V09._currentIndex(offs=0x08) P-INDEP "field V09._currentIndex (fldOffset=0x8)"
;* V51 tmp50 [V51 ] ( 0, 0 ) ref -> zero-ref single-def V19._genericParameters(offs=0x00) P-INDEP "field V19._genericParameters (fldOffset=0x0)"
; V52 tmp51 [V52,T13] ( 3, 1.38) ref -> rax single-def V20._genericParameters(offs=0x00) P-INDEP "field V20._genericParameters (fldOffset=0x0)"
@@ -69,8 +69,8 @@
; V57 tmp56 [V57,T18] ( 3, 0.94) ref -> rax single-def V31._genericParameters(offs=0x00) P-INDEP "field V31._genericParameters (fldOffset=0x0)"
; V58 tmp57 [V58,T20] ( 2, 0.94) ref -> rax single-def V33._genericParameters(offs=0x00) P-INDEP "field V33._genericParameters (fldOffset=0x0)"
; V59 cse0 [V59,T04] ( 3, 3.02) int -> r14 "CSE - aggressive"
-; V60 cse1 [V60,T02] ( 14, 4.14) long -> rdi "CSE - aggressive"
-; V61 cse2 [V61,T08] ( 3, 2.50) long -> rax "CSE - moderate"
+; V60 cse1 [V60,T03] ( 13, 3.45) long -> rdi "CSE - aggressive"
+; V61 cse2 [V61,T07] ( 3, 2.50) long -> rax "CSE - moderate"
;
; Lcl frame size = 32
@@ -153,7 +153,7 @@ G_M9921_IG10: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
; gcrRegs -[rbx rsi]
jmp SHORT G_M9921_IG21
;; size=2 bbWeight=0.68 PerfScore 1.35
-G_M9921_IG11: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M9921_IG11: ; bbWeight=0.31, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
mov rcx, rsi
; gcrRegs +[rcx]
@@ -162,20 +162,20 @@ G_M9921_IG11: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byre
call [rax+28H]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
+ ;; size=15 bbWeight=0.31 PerfScore 1.70
+G_M9921_IG12: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test eax, eax
je SHORT G_M9921_IG21
- ;; size=19 bbWeight=1 PerfScore 6.75
-G_M9921_IG12: ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M9921_IG13: ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp rdi, rcx
jne G_M9921_IG47
- ;; size=19 bbWeight=0.47 PerfScore 0.71
-G_M9921_IG13: ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
cmp gword ptr [rcx+28H], 0
je SHORT G_M9921_IG20
- ;; size=10 bbWeight=0.47 PerfScore 2.00
+ ;; size=29 bbWeight=0.47 PerfScore 2.70
G_M9921_IG14: ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rax, gword ptr [rsi+28H]
@@ -421,10 +421,9 @@ G_M9921_IG45: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {},
je G_M9921_IG07
;; size=23 bbWeight=0 PerfScore 0.00
G_M9921_IG46: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
- cmp rdi, rcx
- je G_M9921_IG13
- ;; size=19 bbWeight=0 PerfScore 0.00
+ mov eax, 1
+ jmp G_M9921_IG12
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M9921_IG47: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
@@ -480,7 +479,7 @@ G_M9921_IG52: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 788, prolog size 13, PerfScore 145.30, instruction count 208, allocated bytes for code 788 (MethodHash=896bd93e) for method ILCompiler.TypeExtensions:AcquiresInstMethodTableFromThis(Internal.TypeSystem.MethodDesc):bool
+; Total bytes of code 779, prolog size 13, PerfScore 140.61, instruction count 207, allocated bytes for code 779 (MethodHash=896bd93e) for method ILCompiler.TypeExtensions:AcquiresInstMethodTableFromThis(Internal.TypeSystem.MethodDesc):bool
; ============================================================
Unwind Info:
+22 (+11.17%) : 414395.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int)
@@ -16,7 +16,7 @@
; V04 arg3 [V04,T11] ( 3, 3 ) int -> rbx single-def
; V05 loc0 [V05,T14] ( 2, 1.33) ref -> rdi class-hnd single-def
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T13] ( 3, 2 ) int -> rax "guarded devirt return temp"
+; V07 tmp1 [V07,T13] ( 6, 2 ) int -> rax "guarded devirt return temp"
; V08 tmp2 [V08,T00] ( 6, 10 ) ref -> rdx single-def "guarded devirt arg temp"
; V09 tmp3 [V09,T01] ( 6, 10 ) ref -> r14 single-def "guarded devirt arg temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp"
@@ -63,24 +63,24 @@ G_M47099_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0004 {rdx},
;; size=30 bbWeight=1 PerfScore 8.75
G_M47099_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
cmp esi, r14d
- jae G_M47099_IG09
+ jae G_M47099_IG12
mov esi, esi
mov rdx, gword ptr [rbp+8*rsi]
; gcrRegs +[rdx]
cmp ebx, r14d
- jae SHORT G_M47099_IG09
+ jae G_M47099_IG12
mov ebx, ebx
mov r14, gword ptr [rbp+8*rbx]
; gcrRegs +[r14]
mov r8, 0xD1FFAB1E ; code for System.OrdinalIgnoreCaseComparer:Compare(System.String,System.String):int:this
cmp qword ptr [rdi+18H], r8
- jne SHORT G_M47099_IG08
+ jne SHORT G_M47099_IG11
cmp rdx, r14
- je SHORT G_M47099_IG06
+ je SHORT G_M47099_IG08
test rdx, rdx
- je SHORT G_M47099_IG06
+ je SHORT G_M47099_IG09
test r14, r14
- je SHORT G_M47099_IG05
+ je SHORT G_M47099_IG10
lea rcx, bword ptr [rdx+0CH]
; byrRegs +[rcx]
mov edx, dword ptr [rdx+08H]
@@ -92,7 +92,7 @@ G_M47099_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp},
; gcrRegs -[rdi r14]
; byrRegs -[rcx r8]
; gcr arg pop 0
- ;; size=80 bbWeight=1 PerfScore 23.00
+ ;; size=84 bbWeight=1 PerfScore 23.00
G_M47099_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
test eax, eax
jle SHORT G_M47099_IG06
@@ -127,9 +127,21 @@ G_M47099_IG07: ; bbWeight=1, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M47099_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4084 {rdx rdi r14}, byrefRegs=0020 {rbp}, gcvars, byref, isz
- ; gcrRegs +[rdx rdi r14]
+G_M47099_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; byrRegs +[rbp]
+ xor eax, eax
+ jmp SHORT G_M47099_IG04
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M47099_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ mov eax, -1
+ jmp SHORT G_M47099_IG04
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M47099_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ mov eax, 1
+ jmp SHORT G_M47099_IG04
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M47099_IG11: ; bbWeight=0, gcrefRegs=4084 {rdx rdi r14}, byrefRegs=0020 {rbp}, byref, isz
+ ; gcrRegs +[rdx rdi r14]
mov rcx, gword ptr [rdi+08H]
; gcrRegs +[rcx]
mov r8, r14
@@ -139,14 +151,14 @@ G_M47099_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4084 {
; gcr arg pop 0
jmp SHORT G_M47099_IG04
;; size=12 bbWeight=0 PerfScore 0.00
-G_M47099_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47099_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbp]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 197, prolog size 10, PerfScore 70.28, instruction count 61, allocated bytes for code 197 (MethodHash=50934804) for method System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int)
+; Total bytes of code 219, prolog size 10, PerfScore 72.48, instruction count 67, allocated bytes for code 219 (MethodHash=50934804) for method System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int)
; ============================================================
Unwind Info:
+22 (+11.17%) : 484079.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int)
@@ -16,7 +16,7 @@
; V04 arg3 [V04,T11] ( 3, 3 ) int -> rbx single-def
; V05 loc0 [V05,T14] ( 2, 1.25) ref -> rdi class-hnd single-def
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T13] ( 3, 2 ) int -> rax "guarded devirt return temp"
+; V07 tmp1 [V07,T13] ( 6, 2 ) int -> rax "guarded devirt return temp"
; V08 tmp2 [V08,T00] ( 6, 10 ) ref -> rdx single-def "guarded devirt arg temp"
; V09 tmp3 [V09,T01] ( 6, 10 ) ref -> r14 single-def "guarded devirt arg temp"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp"
@@ -63,24 +63,24 @@ G_M47099_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0004 {rdx},
;; size=30 bbWeight=1 PerfScore 8.75
G_M47099_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz
cmp esi, r14d
- jae G_M47099_IG09
+ jae G_M47099_IG12
mov esi, esi
mov rdx, gword ptr [rbp+8*rsi]
; gcrRegs +[rdx]
cmp ebx, r14d
- jae SHORT G_M47099_IG09
+ jae G_M47099_IG12
mov ebx, ebx
mov r14, gword ptr [rbp+8*rbx]
; gcrRegs +[r14]
mov r8, 0xD1FFAB1E ; code for System.OrdinalIgnoreCaseComparer:Compare(System.String,System.String):int:this
cmp qword ptr [rdi+18H], r8
- jne SHORT G_M47099_IG08
+ jne SHORT G_M47099_IG11
cmp rdx, r14
- je SHORT G_M47099_IG06
+ je SHORT G_M47099_IG08
test rdx, rdx
- je SHORT G_M47099_IG06
+ je SHORT G_M47099_IG09
test r14, r14
- je SHORT G_M47099_IG05
+ je SHORT G_M47099_IG10
lea rcx, bword ptr [rdx+0CH]
; byrRegs +[rcx]
mov edx, dword ptr [rdx+08H]
@@ -92,7 +92,7 @@ G_M47099_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp},
; gcrRegs -[rdi r14]
; byrRegs -[rcx r8]
; gcr arg pop 0
- ;; size=80 bbWeight=1 PerfScore 23.00
+ ;; size=84 bbWeight=1 PerfScore 23.00
G_M47099_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
test eax, eax
jle SHORT G_M47099_IG06
@@ -127,9 +127,21 @@ G_M47099_IG07: ; bbWeight=1, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M47099_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4084 {rdx rdi r14}, byrefRegs=0020 {rbp}, gcvars, byref, isz
- ; gcrRegs +[rdx rdi r14]
+G_M47099_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; byrRegs +[rbp]
+ xor eax, eax
+ jmp SHORT G_M47099_IG04
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M47099_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ mov eax, -1
+ jmp SHORT G_M47099_IG04
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M47099_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ mov eax, 1
+ jmp SHORT G_M47099_IG04
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M47099_IG11: ; bbWeight=0, gcrefRegs=4084 {rdx rdi r14}, byrefRegs=0020 {rbp}, byref, isz
+ ; gcrRegs +[rdx rdi r14]
mov rcx, gword ptr [rdi+08H]
; gcrRegs +[rcx]
mov r8, r14
@@ -139,14 +151,14 @@ G_M47099_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=4084 {
; gcr arg pop 0
jmp SHORT G_M47099_IG04
;; size=12 bbWeight=0 PerfScore 0.00
-G_M47099_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47099_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbp]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 197, prolog size 10, PerfScore 69.86, instruction count 61, allocated bytes for code 197 (MethodHash=50934804) for method System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int)
+; Total bytes of code 219, prolog size 10, PerfScore 72.06, instruction count 67, allocated bytes for code 219 (MethodHash=50934804) for method System.Collections.Generic.ArraySortHelper`1[System.__Canon]:SwapIfGreater(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon],int,int)
; ============================================================
Unwind Info:
+39 (+12.38%) : 225595.dasm - Test_static_none:Main(System.String[]):int
@@ -7,43 +7,44 @@
; 1 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 5, 7.50) ref -> rsi class-hnd single-def
-; V01 loc0 [V01,T12] ( 3, 3.50) bool -> rdi
-; V02 loc1 [V02,T11] ( 4, 6.50) ref -> rbx class-hnd single-def
+; V00 arg0 [V00,T07] ( 5, 7.50) ref -> rsi class-hnd single-def
+; V01 loc0 [V01,T11] ( 3, 3.50) bool -> rdi
+; V02 loc1 [V02,T09] ( 4, 6.50) ref -> rbx class-hnd single-def
; V03 loc2 [V03,T03] ( 5, 16.50) int -> r15
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd
-; V05 loc4 [V05,T13] ( 3, 2 ) int -> rax
+; V05 loc4 [V05,T12] ( 3, 2 ) int -> rax
;* V06 loc5 [V06 ] ( 0, 0 ) bool -> zero-ref
-; V07 loc6 [V07,T10] ( 4, 9 ) ref -> rsi class-hnd
-; V08 loc7 [V08,T02] ( 10, 33 ) int -> rdi
+; V07 loc6 [V07,T08] ( 4, 9 ) ref -> rsi class-hnd
+; V08 loc7 [V08,T01] ( 10, 33 ) int -> r12
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T09] ( 2, 8 ) bool -> rax "Inline return value spill temp"
-; V11 tmp2 [V11,T00] ( 6, 51.58) ref -> r8 class-hnd "Inlining Arg"
-; V12 tmp3 [V12,T01] ( 5, 37.02) ref -> rdx class-hnd "Inlining Arg"
-; V13 tmp4 [V13,T05] ( 2, 16 ) byref -> rcx "impAppendStmt"
+; V10 tmp1 [V10,T10] ( 4, 5.68) bool -> r12 "Inline return value spill temp"
+; V11 tmp2 [V11,T00] ( 6, 37.19) ref -> r8 class-hnd "Inlining Arg"
+; V12 tmp3 [V12,T02] ( 5, 29.83) ref -> rdx class-hnd "Inlining Arg"
+; V13 tmp4 [V13,T13] ( 2, 1.61) byref -> rcx "impAppendStmt"
;* V14 tmp5 [V14 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V15 tmp6 [V15 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V16 tmp7 [V16 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
-; V19 cse0 [V19,T06] ( 6, 11 ) int -> r14 "CSE - aggressive"
-; V20 cse1 [V20,T07] ( 5, 10.50) int -> rbp "CSE - aggressive"
+; V19 cse0 [V19,T05] ( 6, 11 ) int -> r14 "CSE - aggressive"
+; V20 cse1 [V20,T06] ( 5, 10.50) int -> rbp "CSE - aggressive"
; V21 cse2 [V21,T04] ( 4, 16 ) int -> r15 "CSE - aggressive"
;* V22 cse3 [V22 ] ( 0, 0 ) ref -> zero-ref "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M5183_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
push r14
+ push r12
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rsi, rcx
; gcrRegs +[rsi]
- ;; size=15 bbWeight=1 PerfScore 6.50
+ ;; size=17 bbWeight=1 PerfScore 7.50
G_M5183_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov edi, 1
mov rax, 0xD1FFAB1E ; code for <unknown method>
@@ -56,13 +57,13 @@ G_M5183_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byre
lea r8d, [rbp-01H]
mov r14d, dword ptr [rsi+08H]
cmp r8d, r14d
- jne SHORT G_M5183_IG11
+ jne SHORT G_M5183_IG13
;; size=36 bbWeight=1 PerfScore 9.50
G_M5183_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
xor r15d, r15d
test r14d, r14d
- jle SHORT G_M5183_IG13
+ jle SHORT G_M5183_IG14
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M5183_IG04: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov r8d, r15d
@@ -70,24 +71,30 @@ G_M5183_IG04: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs +[r8]
inc r15d
cmp r15d, ebp
- jae G_M5183_IG20
+ jae G_M5183_IG22
mov edx, r15d
mov rdx, gword ptr [rbx+8*rdx+10H]
; gcrRegs +[rdx]
cmp byte ptr [r8], r8b
cmp r8, rdx
- je SHORT G_M5183_IG09
+ jne SHORT G_M5183_IG06
;; size=36 bbWeight=4 PerfScore 41.00
-G_M5183_IG05: ; bbWeight=0.72, gcrefRegs=014C {rdx rbx rsi r8}, byrefRegs=0000 {}, byref, isz
+G_M5183_IG05: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx r8]
+ mov r12d, 1
+ jmp SHORT G_M5183_IG09
+ ;; size=8 bbWeight=1.28 PerfScore 2.87
+G_M5183_IG06: ; bbWeight=0.72, gcrefRegs=014C {rdx rbx rsi r8}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdx r8]
test rdx, rdx
- je SHORT G_M5183_IG08
- ;; size=5 bbWeight=0.72 PerfScore 0.90
-G_M5183_IG06: ; bbWeight=5.79, gcrefRegs=014C {rdx rbx rsi r8}, byrefRegs=0000 {}, byref, isz
+ je G_M5183_IG21
+ ;; size=9 bbWeight=0.72 PerfScore 0.90
+G_M5183_IG07: ; bbWeight=5.79, gcrefRegs=014C {rdx rbx rsi r8}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [r8+08H]
cmp ecx, dword ptr [rdx+08H]
- jne SHORT G_M5183_IG08
- ;; size=9 bbWeight=5.79 PerfScore 34.73
-G_M5183_IG07: ; bbWeight=4, gcrefRegs=014C {rdx rbx rsi r8}, byrefRegs=0000 {}, byref, isz
+ jne G_M5183_IG21
+ ;; size=13 bbWeight=5.79 PerfScore 34.73
+G_M5183_IG08: ; bbWeight=0.40, gcrefRegs=014C {rdx rbx rsi r8}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [r8+0CH]
; byrRegs +[rcx]
mov r8d, dword ptr [r8+08H]
@@ -99,42 +106,42 @@ G_M5183_IG07: ; bbWeight=4, gcrefRegs=014C {rdx rbx rsi r8}, byrefRegs=00
call [<unknown method>]
; byrRegs -[rcx rdx]
; gcr arg pop 0
- test eax, eax
- jne SHORT G_M5183_IG09
- ;; size=25 bbWeight=4 PerfScore 29.00
-G_M5183_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov r12d, eax
+ ;; size=24 bbWeight=0.40 PerfScore 2.52
+G_M5183_IG09: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ test r12d, r12d
+ jne SHORT G_M5183_IG11
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M5183_IG10: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
xor edi, edi
;; size=2 bbWeight=2 PerfScore 0.50
-G_M5183_IG09: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M5183_IG11: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp r14d, r15d
jg SHORT G_M5183_IG04
;; size=5 bbWeight=4 PerfScore 5.00
-G_M5183_IG10: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M5183_IG12
+G_M5183_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M5183_IG14
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M5183_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M5183_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- jmp SHORT G_M5183_IG14
+ jmp SHORT G_M5183_IG15
;; size=18 bbWeight=0.50 PerfScore 2.62
-G_M5183_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M5183_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test edi, edi
- je SHORT G_M5183_IG14
- ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M5183_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rsi]
+ je SHORT G_M5183_IG15
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
call [<unknown method>]
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rcx rbx rsi]
; gcr arg pop 0
mov eax, 100
- jmp SHORT G_M5183_IG19
- ;; size=23 bbWeight=0.50 PerfScore 2.75
-G_M5183_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M5183_IG20
+ ;; size=27 bbWeight=0.50 PerfScore 3.38
+G_M5183_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi]
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
@@ -146,22 +153,22 @@ G_M5183_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- xor edi, edi
+ xor r12d, r12d
test r14d, r14d
- jle SHORT G_M5183_IG16
- ;; size=39 bbWeight=0.50 PerfScore 4.00
-G_M5183_IG15: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov ecx, edi
+ jle SHORT G_M5183_IG17
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M5183_IG16: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov ecx, r12d
mov rcx, gword ptr [rsi+8*rcx+10H]
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- inc edi
- cmp r14d, edi
- jg SHORT G_M5183_IG15
- ;; size=20 bbWeight=4 PerfScore 27.00
-G_M5183_IG16: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ inc r12d
+ cmp r14d, r12d
+ jg SHORT G_M5183_IG16
+ ;; size=22 bbWeight=4 PerfScore 27.00
+G_M5183_IG17: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
@@ -170,43 +177,50 @@ G_M5183_IG16: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov rsi, rbx
; gcrRegs +[rsi]
- xor edi, edi
+ xor r12d, r12d
test ebp, ebp
- jle SHORT G_M5183_IG18
- ;; size=25 bbWeight=0.50 PerfScore 2.50
-G_M5183_IG17: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M5183_IG19
+ ;; size=26 bbWeight=0.50 PerfScore 2.50
+G_M5183_IG18: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- mov ecx, edi
+ mov ecx, r12d
mov rcx, gword ptr [rsi+8*rcx+10H]
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- inc edi
- cmp ebp, edi
- jg SHORT G_M5183_IG17
- ;; size=19 bbWeight=4 PerfScore 27.00
-G_M5183_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ inc r12d
+ cmp ebp, r12d
+ jg SHORT G_M5183_IG18
+ ;; size=22 bbWeight=4 PerfScore 27.00
+G_M5183_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M5183_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 40
+G_M5183_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add rsp, 32
pop rbx
pop rbp
...
libraries.crossgen2.windows.x64.checked.mch
-2 (-0.55%) : 34250.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
@@ -78,7 +78,7 @@ G_M56290_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=15 bbWeight=0.50 PerfScore 2.38
-G_M56290_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M56290_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx rdi]
mov rcx, rsi
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
@@ -109,8 +109,8 @@ G_M56290_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
call [<unknown method>]
; gcr arg pop 0
test eax, eax
- je G_M56290_IG11
- ;; size=91 bbWeight=0.50 PerfScore 11.38
+ je SHORT G_M56290_IG09
+ ;; size=87 bbWeight=0.50 PerfScore 11.38
G_M56290_IG06: ; bbWeight=4, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref, isz
mov rdx, rbp
lea rcx, [rsp+28H]
@@ -168,11 +168,12 @@ G_M56290_IG09: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
mov rcx, r14
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
+ cmp dword ptr [rcx], ecx
call [r11]<unknown method>
; gcrRegs -[rcx r14] +[rax]
; gcr arg pop 0
nop
- ;; size=19 bbWeight=0.50 PerfScore 2.62
+ ;; size=21 bbWeight=0.50 PerfScore 4.12
G_M56290_IG10: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 64
pop rbx
@@ -208,7 +209,7 @@ G_M56290_IG12: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=15 bbWeight=0.50 PerfScore 2.38
-; Total bytes of code 365, prolog size 31, PerfScore 169.75, instruction count 110, allocated bytes for code 365 (MethodHash=8c52241d) for method 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
+; Total bytes of code 363, prolog size 31, PerfScore 171.05, instruction count 111, allocated bytes for code 363 (MethodHash=8c52241d) for method 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
; ============================================================
Unwind Info:
-17 (-0.51%) : 10507.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:VisitMethod(Microsoft.CodeAnalysis.IMethodSymbol):this
@@ -19,7 +19,7 @@
;* V08 loc6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def
; V09 loc7 [V09,T80] ( 2, 1 ) int -> r8 single-def
; V10 loc8 [V10,T70] ( 3, 1.50) int -> rbx single-def
-; V11 loc9 [V11,T62] ( 3, 1.50) ref -> rbp class-hnd single-def
+; V11 loc9 [V11,T62] ( 3, 1.50) ref -> r14 class-hnd single-def
; V12 loc10 [V12,T03] ( 8, 4 ) ref -> rbx class-hnd
; V13 loc11 [V13,T71] ( 3, 1.50) int -> rdx single-def
; V14 loc12 [V14,T72] ( 3, 1.50) ushort -> rbx single-def
@@ -29,19 +29,19 @@
; V18 tmp1 [V18,T11] ( 2, 2 ) ref -> rax class-hnd single-def "dup spill"
; V19 tmp2 [V19,T63] ( 3, 1.50) ref -> rax single-def
; V20 tmp3 [V20,T64] ( 3, 1.50) ref -> rcx
-; V21 tmp4 [V21,T12] ( 2, 2 ) ref -> rbp class-hnd "non-inline candidate call"
-; V22 tmp5 [V22 ] ( 2, 2 ) struct (24) [rsp+160H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V21 tmp4 [V21,T12] ( 2, 2 ) ref -> rbx class-hnd "non-inline candidate call"
+; V22 tmp5 [V22 ] ( 2, 2 ) struct (24) [rsp+168H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
;* V23 tmp6 [V23,T82] ( 0, 0 ) ref -> zero-ref
;* V24 tmp7 [V24,T65] ( 0, 0 ) ref -> zero-ref
; V25 tmp8 [V25,T10] ( 4, 2 ) int -> rcx
;* V26 tmp9 [V26,T83] ( 0, 0 ) ref -> zero-ref
; V27 tmp10 [V27,T13] ( 2, 2 ) ref -> rbx class-hnd single-def "non-inline candidate call"
-; V28 tmp11 [V28 ] ( 2, 2 ) struct (24) [rsp+148H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
-; V29 tmp12 [V29,T14] ( 2, 2 ) ref -> rbp class-hnd single-def "non-inline candidate call"
-; V30 tmp13 [V30 ] ( 2, 2 ) struct (24) [rsp+130H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V28 tmp11 [V28 ] ( 2, 2 ) struct (24) [rsp+150H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V29 tmp12 [V29,T14] ( 2, 2 ) ref -> r14 class-hnd single-def "non-inline candidate call"
+; V30 tmp13 [V30 ] ( 2, 2 ) struct (24) [rsp+138H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
;* V31 tmp14 [V31 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument"
; V32 tmp15 [V32,T15] ( 2, 2 ) ref -> rbx class-hnd single-def "non-inline candidate call"
-; V33 tmp16 [V33 ] ( 2, 2 ) struct (24) [rsp+118H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V33 tmp16 [V33 ] ( 2, 2 ) struct (24) [rsp+120H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
; V34 tmp17 [V34,T16] ( 2, 2 ) ref -> rcx class-hnd single-def "dup spill"
; V35 tmp18 [V35,T66] ( 3, 1.50) ref -> rcx single-def
; V36 tmp19 [V36,T67] ( 3, 1.50) ref -> rcx
@@ -49,34 +49,34 @@
;* V38 tmp21 [V38,T84] ( 0, 0 ) ref -> zero-ref single-def
;* V39 tmp22 [V39,T75] ( 0, 0 ) ref -> zero-ref
; V40 tmp23 [V40,T74] ( 3, 1.50) int -> rdx
-; V41 tmp24 [V41,T17] ( 2, 2 ) ref -> rbp class-hnd single-def "non-inline candidate call"
-; V42 tmp25 [V42 ] ( 2, 2 ) struct (24) [rsp+100H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
-; V43 tmp26 [V43,T18] ( 2, 2 ) ref -> rbp class-hnd single-def "non-inline candidate call"
-; V44 tmp27 [V44 ] ( 2, 2 ) struct (24) [rsp+E8H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V41 tmp24 [V41,T17] ( 2, 2 ) ref -> r14 class-hnd single-def "non-inline candidate call"
+; V42 tmp25 [V42 ] ( 2, 2 ) struct (24) [rsp+108H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V43 tmp26 [V43,T18] ( 2, 2 ) ref -> r14 class-hnd single-def "non-inline candidate call"
+; V44 tmp27 [V44 ] ( 2, 2 ) struct (24) [rsp+F0H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
; V45 tmp28 [V45,T19] ( 2, 2 ) ref -> rbx class-hnd "non-inline candidate call"
-; V46 tmp29 [V46 ] ( 2, 2 ) struct (24) [rsp+D0H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V46 tmp29 [V46 ] ( 2, 2 ) struct (24) [rsp+D8H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
; V47 tmp30 [V47,T20] ( 2, 2 ) ref -> rbx class-hnd single-def "non-inline candidate call"
-; V48 tmp31 [V48 ] ( 2, 2 ) struct (24) [rsp+B8H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V48 tmp31 [V48 ] ( 2, 2 ) struct (24) [rsp+C0H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
; V49 tmp32 [V49,T21] ( 2, 2 ) ref -> rbx class-hnd single-def "non-inline candidate call"
-; V50 tmp33 [V50 ] ( 2, 2 ) struct (24) [rsp+A0H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V50 tmp33 [V50 ] ( 2, 2 ) struct (24) [rsp+A8H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
; V51 tmp34 [V51,T68] ( 3, 1.50) ref -> rbx
-; V52 tmp35 [V52,T22] ( 2, 2 ) ref -> rbp class-hnd single-def "impAppendStmt"
-; V53 tmp36 [V53 ] ( 2, 2 ) struct (24) [rsp+88H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V52 tmp35 [V52,T22] ( 2, 2 ) ref -> r14 class-hnd single-def "impAppendStmt"
+; V53 tmp36 [V53 ] ( 2, 2 ) struct (24) [rsp+90H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
;* V54 tmp37 [V54 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument"
;* V55 tmp38 [V55 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument"
;* V56 tmp39 [V56 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument"
; V57 tmp40 [V57,T23] ( 2, 2 ) ref -> rax class-hnd single-def "dup spill"
; V58 tmp41 [V58,T07] ( 5, 2.50) ref -> rax
; V59 tmp42 [V59,T24] ( 2, 2 ) ref -> rbx class-hnd single-def "non-inline candidate call"
-; V60 tmp43 [V60 ] ( 2, 2 ) struct (24) [rsp+70H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V60 tmp43 [V60 ] ( 2, 2 ) struct (24) [rsp+78H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
; V61 tmp44 [V61,T25] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt"
-; V62 tmp45 [V62 ] ( 2, 2 ) struct (24) [rsp+58H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
-; V63 tmp46 [V63,T26] ( 2, 2 ) ref -> rbp class-hnd "non-inline candidate call"
-; V64 tmp47 [V64 ] ( 2, 2 ) struct (24) [rsp+40H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V62 tmp45 [V62 ] ( 2, 2 ) struct (24) [rsp+60H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V63 tmp46 [V63,T26] ( 2, 2 ) ref -> rbx class-hnd "non-inline candidate call"
+; V64 tmp47 [V64 ] ( 2, 2 ) struct (24) [rsp+48H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
; V65 tmp48 [V65,T81] ( 2, 1 ) bool -> rax "Inline return value spill temp"
;* V66 tmp49 [V66 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V67 tmp50 [V67,T27] ( 2, 2 ) ref -> rsi class-hnd "non-inline candidate call"
-; V68 tmp51 [V68 ] ( 2, 2 ) struct (24) [rsp+28H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V67 tmp50 [V67,T27] ( 2, 2 ) ref -> rbx class-hnd "non-inline candidate call"
+; V68 tmp51 [V68 ] ( 2, 2 ) struct (24) [rsp+30H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
;* V69 tmp52 [V69,T85] ( 0, 0 ) ref -> zero-ref single-def V16.array(offs=0x00) P-INDEP "field V16.array (fldOffset=0x0)"
; V70 tmp53 [V70,T76] ( 2, 1 ) ref -> r8 V31.array(offs=0x00) P-INDEP "field V31.array (fldOffset=0x0)"
; V71 tmp54 [V71,T77] ( 2, 1 ) ref -> rdx V54.array(offs=0x00) P-INDEP "field V54.array (fldOffset=0x0)"
@@ -118,31 +118,27 @@
; V107 rat0 [V107,T05] ( 3, 3 ) int -> rbp "ReplaceWithLclVar is creating a new local variable"
; V108 rat1 [V108,T06] ( 3, 3 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 376
+; Lcl frame size = 384
G_M32006_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 376
- xor eax, eax
- mov qword ptr [rsp+28H], rax
+ sub rsp, 384
xorps xmm4, xmm4
- movaps xmmword ptr [rsp+30H], xmm4
- movaps xmmword ptr [rsp+40H], xmm4
- mov rax, -288
- movaps xmmword ptr [rsp+rax+170H], xmm4
+ mov rax, -336
movaps xmmword ptr [rsp+rax+180H], xmm4
movaps xmmword ptr [rsp+rax+190H], xmm4
+ movaps xmmword ptr [rsp+rax+1A0H], xmm4
add rax, 48
jne SHORT -5 instr
- mov qword ptr [rsp+170H], rax
mov rdi, rcx
; gcrRegs +[rdi]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=85 bbWeight=1 PerfScore 18.83
+ ;; size=62 bbWeight=1 PerfScore 13.58
G_M32006_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
@@ -162,7 +158,7 @@ G_M32006_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
; gcrRegs +[rdx]
mov gword ptr [rsp+20H], rdx
; gcr arg write
- lea rdx, [rsp+58H]
+ lea rdx, [rsp+60H]
; gcrRegs -[rdx]
mov rcx, rdi
; gcrRegs +[rcx]
@@ -172,7 +168,7 @@ G_M32006_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
call [Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:CreatePart(int,Microsoft.CodeAnalysis.ISymbol,System.String):Microsoft.CodeAnalysis.SymbolDisplayPart:this]
; gcrRegs -[rcx rsi rdi r9]
; gcr arg pop 0
- lea rdx, [rsp+58H]
+ lea rdx, [rsp+60H]
mov rcx, rbx
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
@@ -183,13 +179,14 @@ G_M32006_IG03: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
nop
;; size=70 bbWeight=0.50 PerfScore 10.38
G_M32006_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 376
+ add rsp, 384
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=12 bbWeight=0.50 PerfScore 1.62
+ ;; size=14 bbWeight=0.50 PerfScore 1.88
G_M32006_IG05: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rsi rdi]
mov rcx, rsi
@@ -226,7 +223,7 @@ G_M32006_IG07: ; bbWeight=0.50, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0
; gcr arg pop 0
mov gword ptr [rsp+20H], rax
; gcr arg write
- lea rdx, [rsp+70H]
+ lea rdx, [rsp+78H]
mov rcx, rdi
; gcrRegs +[rcx]
mov r9, rsi
@@ -235,7 +232,7 @@ G_M32006_IG07: ; bbWeight=0.50, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0
call [Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:CreatePart(int,Microsoft.CodeAnalysis.ISymbol,System.String):Microsoft.CodeAnalysis.SymbolDisplayPart:this]
; gcrRegs -[rax rcx rsi rdi r9]
; gcr arg pop 0
- lea rdx, [rsp+70H]
+ lea rdx, [rsp+78H]
mov rcx, rbx
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
@@ -246,13 +243,14 @@ G_M32006_IG07: ; bbWeight=0.50, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0
nop
;; size=84 bbWeight=0.50 PerfScore 12.38
G_M32006_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 376
+ add rsp, 384
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=12 bbWeight=0.50 PerfScore 1.62
+ ;; size=14 bbWeight=0.50 PerfScore 1.88
G_M32006_IG09: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rsi rdi]
mov rcx, rsi
@@ -273,13 +271,14 @@ G_M32006_IG09: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
nop
;; size=31 bbWeight=0.50 PerfScore 4.38
G_M32006_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 376
+ add rsp, 384
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=12 bbWeight=0.50 PerfScore 1.62
+ ;; size=14 bbWeight=0.50 PerfScore 1.88
G_M32006_IG11: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rsi rdi]
mov rcx, rsi
@@ -734,7 +733,7 @@ G_M32006_IG29: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
; gcr arg pop 0
dec eax
cmp eax, 16
- ja G_M32006_IG61
+ ja G_M32006_IG60
mov ecx, eax
lea r11, [reloc @RWD16]
mov r11d, dword ptr [r11+4*rcx]
@@ -754,7 +753,7 @@ G_M32006_IG30: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
; gcr arg pop 0
mov gword ptr [rsp+20H], rax
; gcr arg write
- lea rdx, [rsp+D0H]
+ lea rdx, [rsp+D8H]
mov rcx, rdi
; gcrRegs +[rcx]
mov r9, rsi
@@ -763,7 +762,7 @@ G_M32006_IG30: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
call [Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:CreatePart(int,Microsoft.CodeAnalysis.ISymbol,System.String):Microsoft.CodeAnalysis.SymbolDisplayPart:this]
; gcrRegs -[rax rcx r9]
; gcr arg pop 0
- lea rdx, [rsp+D0H]
+ lea rdx, [rsp+D8H]
mov rcx, rbx
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
@@ -771,12 +770,12 @@ G_M32006_IG30: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rcx rbx]
; gcr arg pop 0
- jmp G_M32006_IG60
+ jmp G_M32006_IG57
;; size=83 bbWeight=0.50 PerfScore 11.12
G_M32006_IG31: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [(reloc)] ; const ptr
- mov rbp, gword ptr [rdi+rcx]
- ; gcrRegs +[rbp]
+ mov rbx, gword ptr [rdi+rcx]
+ ; gcrRegs +[rbx]
...
-2 (-0.34%) : 28148.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInFunctionPointer(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):bool
@@ -121,7 +121,7 @@ G_M20499_IG04: ; bbWeight=1, extend
cmp dword ptr [rax+08H], 0
jle G_M20499_IG12
;; size=59 bbWeight=1 PerfScore 24.00
-G_M20499_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
+G_M20499_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rax rbp]
mov rdx, gword ptr [rdi]
; gcrRegs +[rdx]
@@ -158,8 +158,8 @@ G_M20499_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi
call [<unknown method>]
; gcr arg pop 0
test eax, eax
- je G_M20499_IG10
- ;; size=119 bbWeight=0.50 PerfScore 20.75
+ je SHORT G_M20499_IG09
+ ;; size=115 bbWeight=0.50 PerfScore 20.75
G_M20499_IG06: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0080 {rdi}, byref
lea rcx, [rsp+60H]
mov rdx, r15
@@ -212,13 +212,14 @@ G_M20499_IG09: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi
mov rcx, r14
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
+ cmp dword ptr [rcx], ecx
call [r11]<unknown method>
; gcrRegs -[rcx r14] +[rax]
; gcr arg pop 0
mov rbp, rax
; gcrRegs +[rbp]
jmp SHORT G_M20499_IG13
- ;; size=22 bbWeight=0.50 PerfScore 3.62
+ ;; size=24 bbWeight=0.50 PerfScore 5.12
G_M20499_IG10: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rax rbp] +[r14]
mov rdx, gword ptr [rdi]
@@ -323,7 +324,7 @@ G_M20499_IG16: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=16 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 597, prolog size 45, PerfScore 303.03, instruction count 152, allocated bytes for code 597 (MethodHash=f8ddafec) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInFunctionPointer(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):bool
+; Total bytes of code 595, prolog size 45, PerfScore 304.33, instruction count 153, allocated bytes for code 595 (MethodHash=f8ddafec) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInFunctionPointer(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):bool
; ============================================================
Unwind Info:
+7 (+3.14%) : 6260.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedAddBoundTreeForStandaloneSyntax(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager,System.Collections.Immutable.ImmutableDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol]):this
@@ -7,20 +7,20 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 10, 6.50) ref -> rsi this class-hnd single-def
+; V00 this [V00,T00] ( 10, 6 ) ref -> rsi this class-hnd single-def
; V01 arg1 [V01,T02] ( 5, 3.50) ref -> rbx class-hnd single-def
-; V02 arg2 [V02,T01] ( 6, 5 ) ref -> rdi class-hnd single-def
-; V03 arg3 [V03,T04] ( 4, 3 ) ref -> rbp class-hnd single-def
+; V02 arg2 [V02,T01] ( 6, 4.50) ref -> rdi class-hnd single-def
+; V03 arg3 [V03,T03] ( 4, 3 ) ref -> rbp class-hnd single-def
; V04 arg4 [V04,T10] ( 1, 0.50) ref -> [rsp+80H] class-hnd single-def
-; V05 loc0 [V05,T05] ( 2, 2 ) bool -> rax
+; V05 loc0 [V05,T05] ( 3, 2.50) bool -> r14
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call"
; V09 tmp3 [V09,T06] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
; V10 tmp4 [V10,T07] ( 2, 2 ) ref -> rbx single-def "argument with side effect"
; V11 tmp5 [V11,T08] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V12 tmp6 [V12,T09] ( 2, 2 ) ref -> r15 single-def "argument with side effect"
-; V13 cse0 [V13,T03] ( 8, 5 ) long -> r14 "CSE - aggressive"
+; V12 tmp6 [V12,T09] ( 2, 2 ) ref -> r14 single-def "argument with side effect"
+; V13 cse0 [V13,T04] ( 8, 4 ) long -> r15 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -42,10 +42,13 @@ G_M60993_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbp]
;; size=24 bbWeight=1 PerfScore 7.25
G_M60993_IG02: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ xor r14d, r14d
test rdi, rdi
- je SHORT G_M60993_IG03
- mov r14, qword ptr [(reloc)] ; const ptr
- mov rcx, gword ptr [rsi+r14+18H]
+ je SHORT G_M60993_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M60993_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ mov r15, qword ptr [(reloc)] ; const ptr
+ mov rcx, gword ptr [rsi+r15+18H]
; gcrRegs +[rcx]
mov rdx, gword ptr [rdi+08H]
; gcrRegs +[rdx]
@@ -54,24 +57,27 @@ G_M60993_IG02: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=
call [r11]<unknown method>
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- test eax, eax
- jne G_M60993_IG07
- ;; size=41 bbWeight=1 PerfScore 15.00
-G_M60993_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov r14, qword ptr [(reloc)] ; const ptr
- cmp gword ptr [rsi+r14+08H], rbx
- je SHORT G_M60993_IG04
+ mov r14d, eax
+ ;; size=31 bbWeight=0.50 PerfScore 6.38
+G_M60993_IG04: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ test r14d, r14d
+ jne G_M60993_IG09
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M60993_IG05: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov r15, qword ptr [(reloc)] ; const ptr
+ cmp gword ptr [rsi+r15+08H], rbx
+ je SHORT G_M60993_IG06
mov rcx, rbx
; gcrRegs +[rcx]
call [CORINFO_HELP_READYTORUN_ISINSTANCEOF]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M60993_IG05
+ je SHORT G_M60993_IG07
;; size=28 bbWeight=0.50 PerfScore 5.25
-G_M60993_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M60993_IG06: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rbx]
- mov rbx, gword ptr [rsi+r14+18H]
+ mov rbx, gword ptr [rsi+r15+18H]
; gcrRegs +[rbx]
mov rcx, rsi
; gcrRegs +[rcx]
@@ -91,12 +97,12 @@ G_M60993_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rax rcx rdx rbx rdi r8-r9]
; gcr arg pop 0
- jmp SHORT G_M60993_IG06
+ jmp SHORT G_M60993_IG08
;; size=40 bbWeight=0.50 PerfScore 7.38
-G_M60993_IG05: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+G_M60993_IG07: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rdi]
- mov r15, gword ptr [rsi+r14+18H]
- ; gcrRegs +[r15]
+ mov r14, gword ptr [rsi+r15+18H]
+ ; gcrRegs +[r14]
mov rcx, rsi
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
@@ -106,27 +112,27 @@ G_M60993_IG05: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe
; gcr arg pop 0
mov r8, rax
; gcrRegs +[r8]
- mov rdx, r15
+ mov rdx, r14
; gcrRegs +[rdx]
mov rcx, rdi
; gcrRegs +[rcx]
mov r9, rbx
; gcrRegs +[r9]
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx rbx rdi r8-r9 r15]
+ ; gcrRegs -[rax rcx rdx rbx rdi r8-r9 r14]
; gcr arg pop 0
;; size=38 bbWeight=0.50 PerfScore 6.38
-G_M60993_IG06: ; bbWeight=0.50, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M60993_IG08: ; bbWeight=0.50, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
test rbp, rbp
- je SHORT G_M60993_IG07
- lea rcx, bword ptr [rsi+r14+30H]
+ je SHORT G_M60993_IG09
+ lea rcx, bword ptr [rsi+r15+30H]
; byrRegs +[rcx]
mov rdx, rbp
; gcrRegs +[rdx]
call [CORINFO_HELP_ASSIGN_REF]
; gcrRegs -[rdx rbp]
; byrRegs -[rcx]
- lea rcx, bword ptr [rsi+r14+38H]
+ lea rcx, bword ptr [rsi+r15+38H]
; byrRegs +[rcx]
mov rdx, gword ptr [rsp+80H]
; gcrRegs +[rdx]
@@ -134,10 +140,10 @@ G_M60993_IG06: ; bbWeight=0.50, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000
; gcrRegs -[rdx rsi]
; byrRegs -[rcx]
;; size=38 bbWeight=0.50 PerfScore 5.25
-G_M60993_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60993_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M60993_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M60993_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -148,7 +154,7 @@ G_M60993_IG08: ; bbWeight=1, epilog, nogc, extend
ret
;; size=13 bbWeight=1 PerfScore 4.25
-; Total bytes of code 223, prolog size 12, PerfScore 73.30, instruction count 66, allocated bytes for code 223 (MethodHash=25e511be) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedAddBoundTreeForStandaloneSyntax(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager,System.Collections.Immutable.ImmutableDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol]):this
+; Total bytes of code 230, prolog size 12, PerfScore 68.13, instruction count 68, allocated bytes for code 230 (MethodHash=25e511be) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedAddBoundTreeForStandaloneSyntax(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager,System.Collections.Immutable.ImmutableDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol]):this
; ============================================================
Unwind Info:
+8 (+3.59%) : 6258.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedAddBoundTreeAndGetBoundNodeFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this
@@ -7,31 +7,29 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 6, 5 ) ref -> rsi this class-hnd single-def
-; V01 RetBuf [V01,T02] ( 6, 4 ) byref -> rbx single-def
+; V00 this [V00,T00] ( 6, 4.50) ref -> rsi this class-hnd single-def
+; V01 RetBuf [V01,T01] ( 6, 4 ) byref -> rbx single-def
; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rbp class-hnd single-def
-; V03 arg2 [V03,T01] ( 5, 4.50) ref -> rdi class-hnd single-def
-; V04 loc0 [V04,T05] ( 2, 2 ) bool -> rax
-; V05 loc1 [V05 ] ( 2, 1.50) struct (16) [rsp+28H] do-not-enreg[XS] must-init addr-exposed ld-addr-op
+; V03 arg2 [V03,T02] ( 5, 4 ) ref -> rdi class-hnd single-def
+; V04 loc0 [V04,T04] ( 3, 2.50) bool -> r14
+; V05 loc1 [V05 ] ( 2, 1.50) struct (16) [rsp+20H] do-not-enreg[XS] must-init addr-exposed ld-addr-op
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call"
-; V08 tmp2 [V08,T06] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V09 tmp3 [V09,T07] ( 2, 2 ) ref -> r15 single-def "argument with side effect"
-; V10 cse0 [V10,T04] ( 5, 4 ) long -> r14 "CSE - aggressive"
+; V08 tmp2 [V08,T05] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
+; V09 tmp3 [V09,T06] ( 2, 2 ) ref -> r14 single-def "argument with side effect"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M51358_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 56
+ sub rsp, 48
xor eax, eax
+ mov qword ptr [rsp+20H], rax
mov qword ptr [rsp+28H], rax
- mov qword ptr [rsp+30H], rax
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
@@ -40,12 +38,15 @@ G_M51358_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[rbp]
mov rdi, r9
; gcrRegs +[rdi]
- ;; size=36 bbWeight=1 PerfScore 9.50
+ ;; size=34 bbWeight=1 PerfScore 8.50
G_M51358_IG02: ; bbWeight=1, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ xor r14d, r14d
test rdi, rdi
- je SHORT G_M51358_IG03
- mov r14, qword ptr [(reloc)] ; const ptr
- mov rcx, gword ptr [rsi+r14+18H]
+ je SHORT G_M51358_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M51358_IG03: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0008 {rbx}, byref
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ mov rcx, gword ptr [rsi+rcx+18H]
; gcrRegs +[rcx]
mov rdx, gword ptr [rdi+08H]
; gcrRegs +[rdx]
@@ -54,13 +55,16 @@ G_M51358_IG02: ; bbWeight=1, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0008
call [r11]<unknown method>
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- test eax, eax
- jne SHORT G_M51358_IG04
- ;; size=37 bbWeight=1 PerfScore 15.00
-G_M51358_IG03: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0008 {rbx}, byref
- mov r14, qword ptr [(reloc)] ; const ptr
- mov r15, gword ptr [rsi+r14+18H]
- ; gcrRegs +[r15]
+ mov r14d, eax
+ ;; size=31 bbWeight=0.50 PerfScore 6.38
+G_M51358_IG04: ; bbWeight=1, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ test r14d, r14d
+ jne SHORT G_M51358_IG06
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M51358_IG05: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0008 {rbx}, byref
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ mov r14, gword ptr [rsi+rcx+18H]
+ ; gcrRegs +[r14]
mov rcx, rsi
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
@@ -70,20 +74,21 @@ G_M51358_IG03: ; bbWeight=0.50, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0
; gcr arg pop 0
mov r8, rax
; gcrRegs +[r8]
- mov rdx, r15
+ mov rdx, r14
; gcrRegs +[rdx]
mov rcx, rdi
; gcrRegs +[rcx]
xor r9, r9
; gcrRegs +[r9]
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx rdi r8-r9 r15]
+ ; gcrRegs -[rax rcx rdx rdi r8-r9 r14]
; gcr arg pop 0
;; size=45 bbWeight=0.50 PerfScore 7.38
-G_M51358_IG04: ; bbWeight=1, gcrefRegs=0060 {rbp rsi}, byrefRegs=0008 {rbx}, byref, isz
- mov rcx, gword ptr [rsi+r14+18H]
+G_M51358_IG06: ; bbWeight=1, gcrefRegs=0060 {rbp rsi}, byrefRegs=0008 {rbx}, byref, isz
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ mov rcx, gword ptr [rsi+rcx+18H]
; gcrRegs +[rcx]
- lea r8, [rsp+28H]
+ lea r8, [rsp+20H]
mov rdx, rbp
; gcrRegs +[rdx]
lea r11, [(reloc)] ; function address
@@ -92,9 +97,9 @@ G_M51358_IG04: ; bbWeight=1, gcrefRegs=0060 {rbp rsi}, byrefRegs=0008 {rb
; gcrRegs -[rcx rdx rbp rsi]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M51358_IG07
- ;; size=29 bbWeight=1 PerfScore 10.50
-G_M51358_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ jne SHORT G_M51358_IG09
+ ;; size=36 bbWeight=1 PerfScore 12.50
+G_M51358_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
; byrRegs +[rax]
; gcr arg pop 0
@@ -108,39 +113,37 @@ G_M51358_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
mov rax, rbx
; byrRegs +[rax]
;; size=27 bbWeight=0.50 PerfScore 4.88
-G_M51358_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 56
+G_M51358_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M51358_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M51358_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rax rsi rdi]
mov rdi, rbx
; byrRegs +[rdi]
- lea rsi, bword ptr [rsp+28H]
+ lea rsi, bword ptr [rsp+20H]
; byrRegs +[rsi]
call [CORINFO_HELP_ASSIGN_BYREF]
call [CORINFO_HELP_ASSIGN_BYREF]
mov rax, rbx
; byrRegs +[rax]
;; size=23 bbWeight=0.50 PerfScore 3.50
-G_M51358_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 56
+G_M51358_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 48
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
- pop r15
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
-; Total bytes of code 223, prolog size 24, PerfScore 77.30, instruction count 70, allocated bytes for code 223 (MethodHash=c27d3761) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedAddBoundTreeAndGetBoundNodeFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this
+; Total bytes of code 231, prolog size 22, PerfScore 72.73, instruction count 70, allocated bytes for code 231 (MethodHash=c27d3761) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedAddBoundTreeAndGetBoundNodeFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this
; ============================================================
Unwind Info:
@@ -148,15 +151,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: 6 * 8 + 8 = 56 = 0x38
- 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: 5 * 8 + 8 = 48 = 0x30
+ 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)
+25 (+7.25%) : 7566.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this
@@ -12,35 +12,38 @@
; V01 arg1 [V01,T03] ( 5, 3.50) ref -> rbp class-hnd single-def
; V02 arg2 [V02,T00] ( 7, 4.50) ref -> rsi class-hnd single-def
; V03 arg3 [V03,T01] ( 7, 4.50) ref -> rdi class-hnd single-def
-; V04 loc0 [V04,T11] ( 2, 1 ) bool -> rax
-; V05 loc1 [V05,T08] ( 3, 1.50) ref -> r15 class-hnd single-def
-; V06 loc2 [V06,T09] ( 3, 1.50) ref -> r12 class-hnd single-def
+; V04 loc0 [V04,T11] ( 3, 1.50) bool -> r15
+; V05 loc1 [V05,T08] ( 3, 1.50) ref -> r12 class-hnd single-def
+; V06 loc2 [V06,T09] ( 3, 1.50) ref -> r13 class-hnd single-def
; V07 loc3 [V07,T10] ( 3, 1.50) ref -> rax class-hnd single-def
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T12] ( 2, 1 ) bool -> rax "Inline return value spill temp"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V11 tmp3 [V11,T05] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt"
-; V12 tmp4 [V12 ] ( 2, 2 ) struct (16) [rsp+30H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V12 tmp4 [V12 ] ( 2, 2 ) struct (16) [rsp+38H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
; V14 tmp6 [V14,T06] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt"
-; V15 tmp7 [V15 ] ( 2, 2 ) struct (16) [rsp+20H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
+; V15 tmp7 [V15 ] ( 2, 2 ) struct (16) [rsp+28H] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument"
; V16 tmp8 [V16,T07] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
; V17 cse0 [V17,T04] ( 4, 3 ) long -> r14 "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M21353_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push r15
push r14
+ push r13
push r12
push rdi
push rsi
push rbp
push rbx
- sub rsp, 64
+ sub rsp, 72
+ xor eax, eax
+ mov qword ptr [rsp+28H], rax
xorps xmm4, xmm4
- movaps xmmword ptr [rsp+20H], xmm4
movaps xmmword ptr [rsp+30H], xmm4
+ mov qword ptr [rsp+40H], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rbp, rdx
@@ -49,7 +52,7 @@ G_M21353_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[rsi]
mov rdi, r9
; gcrRegs +[rdi]
- ;; size=39 bbWeight=1 PerfScore 12.58
+ ;; size=48 bbWeight=1 PerfScore 13.83
G_M21353_IG02: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r14, qword ptr [(reloc)] ; const ptr
cmp gword ptr [rbx+r14+30H], 0
@@ -57,35 +60,37 @@ G_M21353_IG02: ; bbWeight=1, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=
;; size=15 bbWeight=1 PerfScore 6.00
G_M21353_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rbp rsi rdi]
- add rsp, 64
+ add rsp, 72
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
+ pop r13
pop r14
pop r15
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
G_M21353_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rbp rsi rdi]
+ xor r15d, r15d
mov rcx, rbp
; gcrRegs +[rcx]
call [CORINFO_HELP_READYTORUN_ISINSTANCEOF]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- test r15, r15
+ mov r12, rax
+ ; gcrRegs +[r12]
+ test r12, r12
je SHORT G_M21353_IG07
mov rcx, rsi
; gcrRegs +[rcx]
call [CORINFO_HELP_READYTORUN_ISINSTANCEOF]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- test r12, r12
+ mov r13, rax
+ ; gcrRegs +[r13]
+ test r13, r13
je SHORT G_M21353_IG07
mov rcx, rdi
; gcrRegs +[rcx]
@@ -94,32 +99,33 @@ G_M21353_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E
; gcr arg pop 0
test rax, rax
je SHORT G_M21353_IG07
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call [Microsoft.CodeAnalysis.CSharp.NullableWalker:AreLambdaAndNewDelegateSimilar(Microsoft.CodeAnalysis.CSharp.Symbols.LambdaSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):bool]
- ; gcrRegs -[rax rcx rdx r12]
+ ; gcrRegs -[rax rcx rdx r13]
; gcr arg pop 0
test eax, eax
jne SHORT G_M21353_IG06
- ;; size=64 bbWeight=0.50 PerfScore 9.38
+ ;; size=67 bbWeight=0.50 PerfScore 9.50
G_M21353_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 64
+ add rsp, 72
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
+ pop r13
pop r14
pop r15
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.38
-G_M21353_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rcx, gword ptr [r15+18H]
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
+G_M21353_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=10E8 {rbx rbp rsi rdi r12}, byrefRegs=0000 {}, gcvars, byref
+ mov rcx, gword ptr [r12+18H]
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:GetDelegateType(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]
- ; gcrRegs -[rcx r15] +[rax]
+ ; gcrRegs -[rcx r12] +[rax]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
@@ -131,16 +137,17 @@ G_M21353_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80E
call [r11]<unknown method>
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- test eax, eax
- jne SHORT G_M21353_IG09
- ;; size=35 bbWeight=0.50 PerfScore 6.75
+ mov r15d, eax
+ ;; size=35 bbWeight=0.50 PerfScore 6.25
G_M21353_IG07: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ test r15d, r15d
+ jne SHORT G_M21353_IG09
test rsi, rsi
jne SHORT G_M21353_IG08
test rdi, rdi
jne SHORT G_M21353_IG11
jmp SHORT G_M21353_IG09
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=17 bbWeight=0.50 PerfScore 2.88
G_M21353_IG08: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
@@ -159,7 +166,7 @@ G_M21353_IG09: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
mov rcx, gword ptr [rbx+r14+30H]
; gcrRegs +[rcx]
mov rbx, gword ptr [rcx+08H]
- lea rcx, [rsp+30H]
+ lea rcx, [rsp+38H]
; gcrRegs -[rcx]
mov rdx, rbp
; gcrRegs +[rdx]
@@ -168,7 +175,7 @@ G_M21353_IG09: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
call [Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder:GetKey(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol]]
; gcrRegs -[rdx rbp rsi r8]
; gcr arg pop 0
- lea rdx, [rsp+30H]
+ lea rdx, [rsp+38H]
mov rcx, rbx
; gcrRegs +[rcx]
lea r11, [(reloc)] ; function address
@@ -179,22 +186,23 @@ G_M21353_IG09: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
nop
;; size=47 bbWeight=0.50 PerfScore 7.75
G_M21353_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 64
+ add rsp, 72
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
+ pop r13
pop r14
pop r15
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
G_M21353_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rbp rsi rdi]
mov rcx, gword ptr [rbx+r14+30H]
; gcrRegs +[rcx]
mov rbx, gword ptr [rcx+08H]
- lea rcx, [rsp+20H]
+ lea rcx, [rsp+28H]
; gcrRegs -[rcx]
mov rdx, rbp
; gcrRegs +[rdx]
@@ -203,7 +211,7 @@ G_M21353_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E
call [Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager+Builder:GetKey(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol]]
; gcrRegs -[rdx rbp rsi r8]
; gcr arg pop 0
- lea rdx, [rsp+20H]
+ lea rdx, [rsp+28H]
mov rcx, rbx
; gcrRegs +[rcx]
mov r8, rdi
@@ -216,18 +224,19 @@ G_M21353_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E
nop
;; size=50 bbWeight=0.50 PerfScore 7.88
G_M21353_IG12: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 64
+ add rsp, 72
pop rbx
pop rbp
pop rsi
pop rdi
pop r12
+ pop r13
pop r14
pop r15
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.38
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
-; Total bytes of code 345, prolog size 27, PerfScore 99.33, instruction count 120, allocated bytes for code 345 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this
+; Total bytes of code 370, prolog size 36, PerfScore 104.33, instruction count 129, allocated bytes for code 370 (MethodHash=7b46ac96) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this
; ============================================================
Unwind Info:
@@ -235,16 +244,17 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0E
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x10
...
libraries.pmi.windows.x64.checked.mch
-12 (-4.07%) : 122582.dasm - System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this
@@ -6,19 +6,18 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 7, 14.50) ref -> rdi this class-hnd single-def
+; V00 this [V00,T03] ( 9, 17 ) ref -> rdi this class-hnd single-def
; V01 arg1 [V01,T00] ( 12, 21.50) ref -> rsi class-hnd single-def
-; V02 loc0 [V02,T11] ( 2, 1.50) ref -> rbx class-hnd single-def
-; V03 loc1 [V03,T10] ( 3, 4 ) bool -> rbp
+; V02 loc0 [V02,T10] ( 2, 1.50) ref -> rbx class-hnd single-def
+; V03 loc1 [V03,T09] ( 3, 4 ) bool -> rbp
; V04 loc2 [V04,T01] ( 7, 23 ) int -> r14
; V05 loc3 [V05,T02] ( 7, 20 ) ref -> r12 class-hnd
-; V06 loc4 [V06,T04] ( 7, 16 ) ref -> [rsp+20H] class-hnd
-; V07 loc5 [V07,T09] ( 2, 6 ) ref -> r13 class-hnd
+; V06 loc4 [V06,T04] ( 7, 16 ) ref -> [rsp+28H] class-hnd
+; V07 loc5 [V07,T08] ( 2, 6 ) ref -> r13 class-hnd
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T08] ( 3, 8 ) ref -> r13
+; V09 tmp1 [V09,T07] ( 3, 8 ) ref -> r13
; V10 cse0 [V10,T05] ( 5, 12 ) long -> r15 "CSE - aggressive"
-; V11 cse1 [V11,T07] ( 3, 10 ) long -> [rsp+30H] spill-single-def "CSE - aggressive"
-; V12 cse2 [V12,T06] ( 4, 10.50) long -> [rsp+28H] "CSE - aggressive"
+; V11 cse1 [V11,T06] ( 3, 10 ) long -> [rsp+30H] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 56
@@ -58,7 +57,7 @@ G_M46494_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jle G_M46494_IG15
+ jle G_M46494_IG13
;; size=42 bbWeight=1 PerfScore 16.50
G_M46494_IG03: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
@@ -98,38 +97,37 @@ G_M46494_IG06: ; bbWeight=4, gcrefRegs=30C8 {rbx rsi rdi r12 r13}, byrefR
; gcrRegs +[rdx]
mov r8d, r14d
mov rax, qword ptr [rdi]
- mov qword ptr [rsp+28H], rax
- mov r9, qword ptr [rax+48H]
- mov qword ptr [rsp+30H], r9
- call [r9+30H]<unknown method>
+ mov rax, qword ptr [rax+48H]
+ mov qword ptr [rsp+30H], rax
+ call [rax+30H]<unknown method>
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
je SHORT G_M46494_IG08
- ;; size=34 bbWeight=4 PerfScore 44.00
+ ;; size=28 bbWeight=4 PerfScore 40.00
G_M46494_IG07: ; bbWeight=2, gcrefRegs=30C8 {rbx rsi rdi r12 r13}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, r12
; gcrRegs +[rdx]
- mov rax, qword ptr [rsp+28H]
- mov r8, qword ptr [rax+50H]
- call [r8]<unknown method>
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+50H]
+ call [rax]<unknown method>
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
jmp SHORT G_M46494_IG09
- ;; size=20 bbWeight=2 PerfScore 17.00
+ ;; size=17 bbWeight=2 PerfScore 19.00
G_M46494_IG08: ; bbWeight=2, gcrefRegs=30C8 {rbx rsi rdi r12 r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, r12
; gcrRegs +[rdx]
- mov r9, qword ptr [rsp+30H]
- call [r9+38H]<unknown method>
+ mov rax, qword ptr [rsp+30H]
+ call [rax+38H]<unknown method>
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
- ;; size=15 bbWeight=2 PerfScore 9.00
+ ;; size=14 bbWeight=2 PerfScore 9.00
G_M46494_IG09: ; bbWeight=4, gcrefRegs=30C9 {rax rbx rsi rdi r12 r13}, byrefRegs=0000 {}, byref, isz
cmp r12, rax
jne SHORT G_M46494_IG11
@@ -140,7 +138,7 @@ G_M46494_IG10: ; bbWeight=2, gcrefRegs=20C9 {rax rbx rsi rdi r13}, byrefR
je SHORT G_M46494_IG12
mov rcx, rax
; gcrRegs +[rcx]
- mov gword ptr [rsp+20H], rax
+ mov gword ptr [rsp+28H], rax
; GC ptr vars +{V06}
mov rdx, qword ptr [rax]
mov rdx, qword ptr [rdx+48H]
@@ -148,7 +146,7 @@ G_M46494_IG10: ; bbWeight=2, gcrefRegs=20C9 {rax rbx rsi rdi r13}, byrefR
; gcrRegs -[rcx]
; gcr arg pop 0
cmp rax, r13
- mov rax, gword ptr [rsp+20H]
+ mov rax, gword ptr [rsp+28H]
je SHORT G_M46494_IG12
;; size=33 bbWeight=2 PerfScore 23.50
G_M46494_IG11: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
@@ -175,10 +173,9 @@ G_M46494_IG12: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
jg G_M46494_IG03
;; size=18 bbWeight=4 PerfScore 19.00
G_M46494_IG13: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov r14, qword ptr [rsp+28H]
test ebp, ebp
je SHORT G_M46494_IG15
- ;; size=9 bbWeight=1 PerfScore 2.25
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M46494_IG14: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rdi
; gcrRegs +[rcx]
@@ -186,11 +183,12 @@ G_M46494_IG14: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs +[rdx]
mov r8, rbx
; gcrRegs +[r8]
- mov rax, qword ptr [r14+C0H]
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+C0H]
call [rax+08H]<unknown method>
; gcrRegs -[rcx rdx rbx rdi r8]
; gcr arg pop 0
- ;; size=19 bbWeight=0.50 PerfScore 2.88
+ ;; size=22 bbWeight=0.50 PerfScore 3.88
G_M46494_IG15: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, rsi
; gcrRegs +[rax]
@@ -208,7 +206,7 @@ G_M46494_IG16: ; bbWeight=1, epilog, nogc, extend
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 295, prolog size 16, PerfScore 230.38, instruction count 98, allocated bytes for code 295 (MethodHash=b0604a61) for method System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this
+; Total bytes of code 283, prolog size 16, PerfScore 227.18, instruction count 97, allocated bytes for code 283 (MethodHash=b0604a61) for method System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this
; ============================================================
Unwind Info:
-19 (-2.14%) : 72520.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:EarlyDecodeWellKnownAttribute(byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:this
@@ -10,15 +10,15 @@
; V00 this [V00,T01] ( 12, 7 ) ref -> rdi this class-hnd single-def
; V01 arg1 [V01,T00] ( 17, 10 ) byref -> rsi single-def
; V02 loc0 [V02,T04] ( 5, 3 ) ref -> rax class-hnd
-; V03 loc1 [V03 ] ( 4, 2 ) bool -> [rsp+60H] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V04 loc2 [V04,T23] ( 2, 1 ) bool -> rax
-; V05 loc3 [V05,T09] ( 4, 2 ) ref -> rbx class-hnd single-def
+; V03 loc1 [V03 ] ( 4, 2 ) bool -> [rsp+58H] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V04 loc2 [V04,T23] ( 3, 1.50) bool -> rbx
+; V05 loc3 [V05,T09] ( 4, 2 ) ref -> rbp class-hnd single-def
;* V06 loc4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def
; V07 loc5 [V07,T16] ( 3, 1.50) ref -> rbx class-hnd single-def
; V08 loc6 [V08,T08] ( 5, 2.50) ref -> rdi class-hnd single-def
; V09 loc7 [V09,T17] ( 3, 1.50) ref -> rbx class-hnd single-def
-; V10 loc8 [V10 ] ( 3, 1.50) ref -> [rsp+58H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
-; V11 loc9 [V11 ] ( 4, 2 ) ref -> [rsp+50H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
+; V10 loc8 [V10 ] ( 3, 1.50) ref -> [rsp+50H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
+; V11 loc9 [V11 ] ( 4, 2 ) ref -> [rsp+48H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt"
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt"
@@ -40,7 +40,7 @@
; V30 tmp18 [V30,T05] ( 3, 3 ) ref -> rsi class-hnd single-def "Inlining Arg"
;* V31 tmp19 [V31 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp"
;* V32 tmp20 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V33 tmp21 [V33 ] ( 4, 2 ) struct ( 8) [rsp+48H] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp"
+; V33 tmp21 [V33 ] ( 4, 2 ) struct ( 8) [rsp+40H] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp"
;* V34 tmp22 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp"
; V35 tmp23 [V35,T06] ( 3, 3 ) ref -> rbp class-hnd exact single-def "dup spill"
;* V36 tmp24 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp"
@@ -53,10 +53,10 @@
; V43 tmp31 [V43,T27] ( 3, 1 ) ref -> rbp single-def V23._value(offs=0x08) P-INDEP "field V23._value (fldOffset=0x8)"
; V44 tmp32 [V44,T32] ( 2, 1 ) int -> rcx single-def V23._kind(offs=0x10) P-INDEP "field V23._kind (fldOffset=0x10)"
; V45 tmp33 [V45,T22] ( 3, 1.50) ref -> rdx single-def V31.array(offs=0x00) P-INDEP "field V31.array (fldOffset=0x0)"
-; V46 tmp34 [V46 ] ( 4, 2 ) ref -> [rsp+48H] do-not-enreg[X] addr-exposed V33.array(offs=0x00) P-DEP "field V33.array (fldOffset=0x0)"
+; V46 tmp34 [V46 ] ( 4, 2 ) ref -> [rsp+40H] do-not-enreg[X] addr-exposed V33.array(offs=0x00) P-DEP "field V33.array (fldOffset=0x0)"
;* V47 tmp35 [V47 ] ( 0, 0 ) ref -> zero-ref V34.array(offs=0x00) P-INDEP "field V34.array (fldOffset=0x0)"
; V48 tmp36 [V48,T31] ( 2, 1 ) ref -> rdx single-def V37.array(offs=0x00) P-INDEP "field V37.array (fldOffset=0x0)"
-; V49 tmp37 [V49 ] ( 4, 4 ) struct (32) [rsp+28H] do-not-enreg[XS] must-init addr-exposed "by-value struct argument"
+; V49 tmp37 [V49 ] ( 4, 4 ) struct (32) [rsp+20H] do-not-enreg[XS] must-init addr-exposed "by-value struct argument"
; V50 tmp38 [V50,T12] ( 2, 2 ) ref -> rbp single-def "argument with side effect"
; V51 tmp39 [V51,T13] ( 2, 2 ) ref -> rbx single-def "argument with side effect"
; V52 tmp40 [V52,T07] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
@@ -64,31 +64,30 @@
; V54 tmp42 [V54,T15] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
; V55 tmp43 [V55,T02] ( 4, 4 ) byref -> rax single-def "BlockOp address local"
;* V56 cse0 [V56,T33] ( 0, 0 ) long -> zero-ref "CSE - moderate"
-; V57 cse1 [V57,T24] ( 3, 1.50) long -> rbp "CSE - moderate"
-; V58 cse2 [V58,T25] ( 3, 1.50) long -> rbx "CSE - moderate"
+; V57 cse1 [V57,T24] ( 3, 1.50) long -> r14 "CSE - moderate"
+; V58 cse2 [V58,T25] ( 3, 1.50) long -> rbp "CSE - moderate"
; V59 cse3 [V59,T26] ( 3, 1.50) long -> rbp "CSE - moderate"
;
-; Lcl frame size = 104
+; Lcl frame size = 96
G_M41689_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 104
+ sub rsp, 96
vzeroupper
- xor eax, eax
- mov qword ptr [rsp+28H], rax
vxorps xmm4, xmm4, xmm4
+ vmovdqa xmmword ptr [rsp+20H], xmm4
vmovdqa xmmword ptr [rsp+30H], xmm4
vmovdqa xmmword ptr [rsp+40H], xmm4
vmovdqa xmmword ptr [rsp+50H], xmm4
- mov qword ptr [rsp+60H], rax
mov rdi, rcx
; gcrRegs +[rdi]
mov rsi, rdx
; byrRegs +[rsi]
- ;; size=51 bbWeight=1 PerfScore 14.33
+ ;; size=47 bbWeight=1 PerfScore 15.08
G_M41689_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
cmp dword ptr [rsi+20H], 256
je G_M41689_IG22
@@ -108,10 +107,10 @@ G_M41689_IG04: ; bbWeight=0.50, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0
;; size=13 bbWeight=0.50 PerfScore 1.12
G_M41689_IG05: ; bbWeight=0.50, nogc, extend
vmovdqu ymm0, ymmword ptr [r8+08H]
- vmovdqu ymmword ptr [rsp+28H], ymm0
+ vmovdqu ymmword ptr [rsp+20H], ymm0
;; size=12 bbWeight=0.50 PerfScore 3.00
G_M41689_IG06: ; bbWeight=0.50, isz, extend
- lea r8, [rsp+28H]
+ lea r8, [rsp+20H]
; gcrRegs -[r8]
mov rdx, rbp
; gcrRegs +[rdx]
@@ -122,31 +121,32 @@ G_M41689_IG06: ; bbWeight=0.50, isz, extend
; gcr arg pop 0
test eax, eax
je G_M41689_IG09
+ xor ebx, ebx
mov rcx, rdi
; gcrRegs +[rcx]
mov rax, qword ptr [rdi]
- mov rbx, qword ptr [rax+D8H]
- call [rbx+20H]<unknown method>
+ mov rbp, qword ptr [rax+D8H]
+ call [rbp+20H]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 10
je SHORT G_M41689_IG07
mov rcx, rdi
; gcrRegs +[rcx]
- call [rbx+20H]<unknown method>
+ call [rbp+20H]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 16
- jne G_M41689_IG22
- ;; size=61 bbWeight=0.50 PerfScore 9.12
-G_M41689_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+ jne SHORT G_M41689_IG08
+ ;; size=59 bbWeight=0.50 PerfScore 9.25
+G_M41689_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
mov rcx, gword ptr [rdi+08H]
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbolExtensions:AllowsExtensionMethods(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol):bool]
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M41689_IG22
+ je SHORT G_M41689_IG08
mov rcx, rdi
; gcrRegs +[rcx]
mov rax, qword ptr [rdi]
@@ -155,7 +155,7 @@ G_M41689_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M41689_IG22
+ je SHORT G_M41689_IG08
mov rcx, rdi
; gcrRegs +[rcx]
call [rbp+20H]<unknown method>
@@ -163,32 +163,32 @@ G_M41689_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi
; gcr arg pop 0
cmp dword ptr [rax+08H], 0
jbe G_M41689_IG26
- mov rbx, gword ptr [rax+10H]
- ; gcrRegs +[rbx]
- mov rcx, rbx
+ mov rbp, gword ptr [rax+10H]
+ ; gcrRegs +[rbp]
+ mov rcx, rbp
; gcrRegs +[rcx]
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rbp]
; gcrRegs -[rax]
- mov rbp, qword ptr [rax+C0H]
- call [rbp+20H]<unknown method>
+ mov r14, qword ptr [rax+C0H]
+ call [r14+20H]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne G_M41689_IG22
- mov rcx, rbx
+ jne SHORT G_M41689_IG08
+ mov rcx, rbp
; gcrRegs +[rcx]
- call [rbp+18H]<unknown method>
- ; gcrRegs -[rcx rbx]
+ call [r14+18H]<unknown method>
+ ; gcrRegs -[rcx rbp]
; gcr arg pop 0
test eax, eax
- jne G_M41689_IG22
+ jne SHORT G_M41689_IG08
mov rcx, rdi
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M41689_IG22
+ je SHORT G_M41689_IG08
mov rcx, gword ptr [rdi+08H]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -196,7 +196,10 @@ G_M41689_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi
call [rax+08H]<unknown method>
; gcrRegs -[rcx rdi]
; gcr arg pop 0
- test eax, eax
+ mov ebx, eax
+ ;; size=119 bbWeight=0.50 PerfScore 25.38
+G_M41689_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ test ebx, ebx
je G_M41689_IG22
mov rcx, gword ptr [rsi+08H]
; gcrRegs +[rcx]
@@ -204,10 +207,8 @@ G_M41689_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi
; gcrRegs +[rdx]
mov r8, gword ptr [rsi+10H]
; gcrRegs +[r8]
- lea r9, [rsp+60H]
+ lea r9, [rsp+58H]
cmp dword ptr [rcx], ecx
- ;; size=161 bbWeight=0.50 PerfScore 30.62
-G_M41689_IG08: ; bbWeight=0.50, extend
call [Microsoft.CodeAnalysis.VisualBasic.EarlyWellKnownAttributeBinder:GetAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAttributeData:this]
; gcrRegs -[rcx rdx r8] +[rax]
; gcr arg pop 0
@@ -224,11 +225,11 @@ G_M41689_IG08: ; bbWeight=0.50, extend
mov byte ptr [rax+20H], 1
xor r8, r8
; gcrRegs +[r8]
- cmp byte ptr [rsp+60H], 0
+ cmp byte ptr [rsp+58H], 0
cmovne rbx, r8
mov rax, rbx
jmp G_M41689_IG23
- ;; size=62 bbWeight=0.50 PerfScore 8.25
+ ;; size=89 bbWeight=0.50 PerfScore 13.62
G_M41689_IG09: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax rbx r8] +[rdi]
; byrRegs +[rsi]
@@ -242,10 +243,10 @@ G_M41689_IG09: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi
;; size=21 bbWeight=0.50 PerfScore 3.12
G_M41689_IG10: ; bbWeight=0.50, nogc, extend
vmovdqu ymm0, ymmword ptr [r8+08H]
- vmovdqu ymmword ptr [rsp+28H], ymm0
+ vmovdqu ymmword ptr [rsp+20H], ymm0
;; size=12 bbWeight=0.50 PerfScore 3.00
G_M41689_IG11: ; bbWeight=0.50, isz, extend
- lea r8, [rsp+28H]
+ lea r8, [rsp+20H]
; gcrRegs -[r8]
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:IsTargetEarlyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.AttributeDescription):bool]
; gcrRegs -[rcx rdx]
@@ -258,7 +259,7 @@ G_M41689_IG11: ; bbWeight=0.50, isz, extend
; gcrRegs +[rdx]
mov r8, gword ptr [rsi+10H]
; gcrRegs +[r8]
- lea r9, [rsp+60H]
+ lea r9, [rsp+58H]
cmp dword ptr [rcx], ecx
call [Microsoft.CodeAnalysis.VisualBasic.EarlyWellKnownAttributeBinder:GetAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAttributeData:this]
; gcrRegs -[rcx rdx rdi r8] +[rax]
@@ -339,8 +340,8 @@ G_M41689_IG16: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040
...
-4 (-1.82%) : 241658.dasm - Microsoft.Win32.RegistryKey:FixupPath(System.Text.StringBuilder)
@@ -29,15 +29,15 @@ G_M4277_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
mov rsi, rcx
; gcrRegs +[rsi]
;; size=13 bbWeight=1 PerfScore 5.50
-G_M4277_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M4277_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rsi+1CH]
add edi, dword ptr [rsi+18H]
xor ebx, ebx
mov ebp, 1
lea r14d, [rdi-01H]
cmp r14d, 1
- jle G_M4277_IG16
- ;; size=27 bbWeight=1 PerfScore 7.25
+ jle SHORT G_M4277_IG08
+ ;; size=23 bbWeight=1 PerfScore 7.25
G_M4277_IG03: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
@@ -155,7 +155,7 @@ G_M4277_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
ret
;; size=11 bbWeight=0.50 PerfScore 1.88
-; Total bytes of code 220, prolog size 13, PerfScore 247.63, instruction count 81, allocated bytes for code 220 (MethodHash=acd9ef4a) for method Microsoft.Win32.RegistryKey:FixupPath(System.Text.StringBuilder)
+; Total bytes of code 216, prolog size 13, PerfScore 247.23, instruction count 81, allocated bytes for code 216 (MethodHash=acd9ef4a) for method Microsoft.Win32.RegistryKey:FixupPath(System.Text.StringBuilder)
; ============================================================
Unwind Info:
+19 (+11.66%) : 280591.dasm - System.Reflection.TypeLoading.RoEvent:GetRoRemoveMethod():System.Reflection.TypeLoading.RoMethod:this
@@ -15,19 +15,20 @@
; V05 tmp3 [V05,T05] ( 3, 1.50) ref -> rcx single-def
;* V06 tmp4 [V06,T06] ( 0, 0 ) ref -> zero-ref
; V07 tmp5 [V07,T03] ( 4, 2 ) ref -> rdi
-; V08 tmp6 [V08,T08] ( 2, 0 ) bool -> rax "Inline return value spill temp"
+; V08 tmp6 [V08,T08] ( 4, 0 ) bool -> rbx "Inline return value spill temp"
; V09 tmp7 [V09,T01] ( 4, 4 ) ref -> rdx class-hnd single-def "Inlining Arg"
; V10 tmp8 [V10,T02] ( 6, 3 ) ref -> rdi class-hnd single-def "Inlining Arg"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M5222_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
- sub rsp, 40
+ push rbx
+ sub rsp, 32
mov rsi, rcx
; gcrRegs +[rsi]
- ;; size=9 bbWeight=1 PerfScore 2.50
+ ;; size=10 bbWeight=1 PerfScore 3.50
G_M5222_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rsi+30H]
; gcrRegs +[rdi]
@@ -52,11 +53,12 @@ G_M5222_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, b
; gcrRegs +[rax]
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M5222_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
+ pop rbx
pop rsi
pop rdi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.38
G_M5222_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
mov rcx, rsi
@@ -95,11 +97,12 @@ G_M5222_IG09: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {
; gcrRegs +[rax]
;; size=15 bbWeight=0.50 PerfScore 1.00
G_M5222_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
+ pop rbx
pop rsi
pop rdi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.38
G_M5222_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rsi]
mov rcx, 0xD1FFAB1E
@@ -111,9 +114,13 @@ G_M5222_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {r
G_M5222_IG12: ; bbWeight=0, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
cmp rdi, rdx
- je SHORT G_M5222_IG07
+ jne SHORT G_M5222_IG13
+ mov ebx, 1
+ jmp SHORT G_M5222_IG15
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M5222_IG13: ; bbWeight=0, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je SHORT G_M5222_IG05
+ je SHORT G_M5222_IG14
mov rcx, rdi
; gcrRegs +[rcx]
mov rax, qword ptr [rdi]
@@ -121,12 +128,19 @@ G_M5222_IG12: ; bbWeight=0, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000
call [rax+10H]<unknown method>
; gcrRegs -[rcx rdx rdi]
; gcr arg pop 0
- test eax, eax
+ mov ebx, eax
+ jmp SHORT G_M5222_IG15
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M5222_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ xor ebx, ebx
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M5222_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ test ebx, ebx
jne SHORT G_M5222_IG07
- jmp SHORT G_M5222_IG05
- ;; size=29 bbWeight=0 PerfScore 0.00
+ jmp G_M5222_IG05
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 163, prolog size 6, PerfScore 40.30, instruction count 52, allocated bytes for code 163 (MethodHash=f1c8eb99) for method System.Reflection.TypeLoading.RoEvent:GetRoRemoveMethod():System.Reflection.TypeLoading.RoMethod:this
+; Total bytes of code 182, prolog size 7, PerfScore 43.70, instruction count 60, allocated bytes for code 182 (MethodHash=f1c8eb99) for method System.Reflection.TypeLoading.RoEvent:GetRoRemoveMethod():System.Reflection.TypeLoading.RoMethod:this
; ============================================================
Unwind Info:
@@ -134,11 +148,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+19 (+11.66%) : 280592.dasm - System.Reflection.TypeLoading.RoEvent:GetRoRaiseMethod():System.Reflection.TypeLoading.RoMethod:this
@@ -15,19 +15,20 @@
; V05 tmp3 [V05,T05] ( 3, 1.50) ref -> rcx single-def
;* V06 tmp4 [V06,T06] ( 0, 0 ) ref -> zero-ref
; V07 tmp5 [V07,T03] ( 4, 2 ) ref -> rdi
-; V08 tmp6 [V08,T08] ( 2, 0 ) bool -> rax "Inline return value spill temp"
+; V08 tmp6 [V08,T08] ( 4, 0 ) bool -> rbx "Inline return value spill temp"
; V09 tmp7 [V09,T01] ( 4, 4 ) ref -> rdx class-hnd single-def "Inlining Arg"
; V10 tmp8 [V10,T02] ( 6, 3 ) ref -> rdi class-hnd single-def "Inlining Arg"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M53644_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
- sub rsp, 40
+ push rbx
+ sub rsp, 32
mov rsi, rcx
; gcrRegs +[rsi]
- ;; size=9 bbWeight=1 PerfScore 2.50
+ ;; size=10 bbWeight=1 PerfScore 3.50
G_M53644_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rsi+38H]
; gcrRegs +[rdi]
@@ -52,11 +53,12 @@ G_M53644_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
; gcrRegs +[rax]
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M53644_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
+ pop rbx
pop rsi
pop rdi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.38
G_M53644_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
mov rcx, rsi
@@ -95,11 +97,12 @@ G_M53644_IG09: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
; gcrRegs +[rax]
;; size=15 bbWeight=0.50 PerfScore 1.00
G_M53644_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
+ pop rbx
pop rsi
pop rdi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.38
G_M53644_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rsi]
mov rcx, 0xD1FFAB1E
@@ -111,9 +114,13 @@ G_M53644_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C0 {
G_M53644_IG12: ; bbWeight=0, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
cmp rdi, rdx
- je SHORT G_M53644_IG07
+ jne SHORT G_M53644_IG13
+ mov ebx, 1
+ jmp SHORT G_M53644_IG15
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M53644_IG13: ; bbWeight=0, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je SHORT G_M53644_IG05
+ je SHORT G_M53644_IG14
mov rcx, rdi
; gcrRegs +[rcx]
mov rax, qword ptr [rdi]
@@ -121,12 +128,19 @@ G_M53644_IG12: ; bbWeight=0, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000
call [rax+10H]<unknown method>
; gcrRegs -[rcx rdx rdi]
; gcr arg pop 0
- test eax, eax
+ mov ebx, eax
+ jmp SHORT G_M53644_IG15
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M53644_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ xor ebx, ebx
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M53644_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ test ebx, ebx
jne SHORT G_M53644_IG07
- jmp SHORT G_M53644_IG05
- ;; size=29 bbWeight=0 PerfScore 0.00
+ jmp G_M53644_IG05
+ ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 163, prolog size 6, PerfScore 40.30, instruction count 52, allocated bytes for code 163 (MethodHash=0d002e73) for method System.Reflection.TypeLoading.RoEvent:GetRoRaiseMethod():System.Reflection.TypeLoading.RoMethod:this
+; Total bytes of code 182, prolog size 7, PerfScore 43.70, instruction count 60, allocated bytes for code 182 (MethodHash=0d002e73) for method System.Reflection.TypeLoading.RoEvent:GetRoRaiseMethod():System.Reflection.TypeLoading.RoMethod:this
; ============================================================
Unwind Info:
@@ -134,11 +148,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+40 (+11.73%) : 53.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex
@@ -9,24 +9,24 @@
;
; V00 arg0 [V00,T00] ( 7, 9 ) byref -> rsi ld-addr-op single-def
; V01 loc0 [V01,T06] ( 3, 2 ) long -> rdi
-; V02 loc1 [V02,T03] ( 8, 5 ) ref -> rbx class-hnd single-def
-; V03 loc2 [V03 ] ( 4, 2 ) ref -> [rsp+28H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
+; V02 loc1 [V02,T01] ( 8, 5 ) ref -> rbx class-hnd single-def
+; V03 loc2 [V03 ] ( 4, 2 ) ref -> [rsp+20H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T18] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
+;* V05 tmp1 [V05,T16] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (32) zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T10] ( 2, 1 ) bool -> rax "Inline return value spill temp"
-; V08 tmp4 [V08,T01] ( 6, 5.36) ref -> r8 class-hnd single-def "Inlining Arg"
-; V09 tmp5 [V09,T04] ( 5, 3.72) ref -> rdx class-hnd single-def "Inlining Arg"
-; V10 tmp6 [V10,T07] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
+; V07 tmp3 [V07,T14] ( 3, 0.60) bool -> rax "Inline return value spill temp"
+; V08 tmp4 [V08,T02] ( 6, 3.76) ref -> r8 class-hnd single-def "Inlining Arg"
+; V09 tmp5 [V09,T04] ( 5, 2.92) ref -> rdx class-hnd single-def "Inlining Arg"
+; V10 tmp6 [V10,T17] ( 2, 0.40) byref -> rcx single-def "impAppendStmt"
;* V11 tmp7 [V11 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V14 tmp10 [V14 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
-; V16 tmp12 [V16,T11] ( 2, 1 ) bool -> rax "Inline return value spill temp"
-; V17 tmp13 [V17,T02] ( 6, 5.36) ref -> r8 class-hnd single-def "Inlining Arg"
-; V18 tmp14 [V18,T05] ( 5, 3.72) ref -> rdx class-hnd single-def "Inlining Arg"
-; V19 tmp15 [V19,T08] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
+; V16 tmp12 [V16,T15] ( 3, 0.60) bool -> rax "Inline return value spill temp"
+; V17 tmp13 [V17,T03] ( 6, 3.76) ref -> r8 class-hnd single-def "Inlining Arg"
+; V18 tmp14 [V18,T05] ( 5, 2.92) ref -> rdx class-hnd single-def "Inlining Arg"
+; V19 tmp15 [V19,T18] ( 2, 0.40) byref -> rcx single-def "impAppendStmt"
;* V20 tmp16 [V20 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
@@ -41,64 +41,65 @@
;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref V40._culture(offs=0x08) P-INDEP "field V00._culture (fldOffset=0x8)"
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref V40._options(offs=0x10) P-INDEP "field V00._options (fldOffset=0x10)"
;* V33 tmp29 [V33 ] ( 0, 0 ) long -> zero-ref V40._matchTimeout(offs=0x18) P-INDEP "field V00._matchTimeout (fldOffset=0x18)"
-; V34 tmp30 [V34,T12] ( 2, 1 ) ref -> rdx single-def V06._pattern(offs=0x00) P-INDEP "field V06._pattern (fldOffset=0x0)"
-; V35 tmp31 [V35,T13] ( 2, 1 ) ref -> rdi single-def V06._culture(offs=0x08) P-INDEP "field V06._culture (fldOffset=0x8)"
-; V36 tmp32 [V36,T14] ( 2, 1 ) int -> rbp V06._options(offs=0x10) P-INDEP "field V06._options (fldOffset=0x10)"
-; V37 tmp33 [V37,T15] ( 2, 1 ) long -> r14 V06._matchTimeout(offs=0x18) P-INDEP "field V06._matchTimeout (fldOffset=0x18)"
-; V38 tmp34 [V38,T16] ( 2, 1 ) long -> rax V25._ticks(offs=0x00) P-INDEP "field V25._ticks (fldOffset=0x0)"
+; V34 tmp30 [V34,T08] ( 2, 1 ) ref -> rdx single-def V06._pattern(offs=0x00) P-INDEP "field V06._pattern (fldOffset=0x0)"
+; V35 tmp31 [V35,T09] ( 2, 1 ) ref -> rbp single-def V06._culture(offs=0x08) P-INDEP "field V06._culture (fldOffset=0x8)"
+; V36 tmp32 [V36,T10] ( 2, 1 ) int -> r14 V06._options(offs=0x10) P-INDEP "field V06._options (fldOffset=0x10)"
+; V37 tmp33 [V37,T11] ( 2, 1 ) long -> r15 V06._matchTimeout(offs=0x18) P-INDEP "field V06._matchTimeout (fldOffset=0x18)"
+; V38 tmp34 [V38,T12] ( 2, 1 ) long -> rax V25._ticks(offs=0x00) P-INDEP "field V25._ticks (fldOffset=0x0)"
;* V39 tmp35 [V39 ] ( 0, 0 ) long -> zero-ref V26._ticks(offs=0x00) P-INDEP "field V26._ticks (fldOffset=0x0)"
;* V40 tmp36 [V40 ] ( 0, 0 ) struct (32) zero-ref "Promoted implicit byref"
-; V41 tmp37 [V41,T09] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-;* V42 cse0 [V42,T17] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+; V41 tmp37 [V41,T07] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+;* V42 cse0 [V42,T13] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
;* V43 cse1 [V43 ] ( 0, 0 ) ref -> zero-ref "CSE - conservative"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M3825_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, 48
+ sub rsp, 40
xor eax, eax
- mov qword ptr [rsp+28H], rax
+ mov qword ptr [rsp+20H], rax
mov rsi, rcx
; byrRegs +[rsi]
- ;; size=20 bbWeight=1 PerfScore 6.75
+ ;; size=22 bbWeight=1 PerfScore 7.75
G_M3825_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
xor edi, edi
test byte ptr [(reloc)], 1 ; global ptr
- je G_M3825_IG18
+ je G_M3825_IG20
;; size=15 bbWeight=1 PerfScore 4.25
G_M3825_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
mov r8, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rbx, gword ptr [r8]
; gcrRegs +[rbx]
test rbx, rbx
- je G_M3825_IG12
+ je G_M3825_IG14
;; size=22 bbWeight=1 PerfScore 3.50
G_M3825_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
mov rdx, gword ptr [rbx+18H]
; gcrRegs +[rdx]
- mov rdi, gword ptr [rbx+20H]
- ; gcrRegs +[rdi]
- mov ebp, dword ptr [rbx+28H]
- mov r14, qword ptr [rbx+30H]
+ mov rbp, gword ptr [rbx+20H]
+ ; gcrRegs +[rbp]
+ mov r14d, dword ptr [rbx+28H]
+ mov r15, qword ptr [rbx+30H]
mov r8, gword ptr [rsi]
; gcrRegs +[r8]
cmp byte ptr [r8], r8b
cmp r8, rdx
- je SHORT G_M3825_IG07
- ;; size=26 bbWeight=0.50 PerfScore 7.12
-G_M3825_IG05: ; bbWeight=0.18, gcrefRegs=018C {rdx rbx rdi r8}, byrefRegs=0040 {rsi}, byref, isz
+ je SHORT G_M3825_IG08
+ ;; size=27 bbWeight=0.50 PerfScore 7.12
+G_M3825_IG05: ; bbWeight=0.18, gcrefRegs=012C {rdx rbx rbp r8}, byrefRegs=0040 {rsi}, byref
test rdx, rdx
- je SHORT G_M3825_IG11
+ je G_M3825_IG21
mov ecx, dword ptr [r8+08H]
cmp ecx, dword ptr [rdx+08H]
- jne SHORT G_M3825_IG11
- ;; size=14 bbWeight=0.18 PerfScore 1.31
-G_M3825_IG06: ; bbWeight=0.50, gcrefRegs=018C {rdx rbx rdi r8}, byrefRegs=0040 {rsi}, byref, isz
+ jne G_M3825_IG21
+ ;; size=22 bbWeight=0.18 PerfScore 1.31
+G_M3825_IG06: ; bbWeight=0.10, gcrefRegs=012C {rdx rbx rbp r8}, byrefRegs=0040 {rsi}, byref
lea rcx, bword ptr [r8+0CH]
; byrRegs +[rcx]
mov r8d, dword ptr [r8+08H]
@@ -110,27 +111,29 @@ G_M3825_IG06: ; bbWeight=0.50, gcrefRegs=018C {rdx rbx rdi r8}, byrefRegs
call [<unknown method>]
; byrRegs -[rcx rdx]
; gcr arg pop 0
+ ;; size=21 bbWeight=0.10 PerfScore 0.60
+G_M3825_IG07: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, byref, isz
test eax, eax
- je SHORT G_M3825_IG11
- ;; size=25 bbWeight=0.50 PerfScore 3.62
-G_M3825_IG07: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+ je SHORT G_M3825_IG13
+ ;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M3825_IG08: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, byref, isz
mov r8, gword ptr [rsi+08H]
; gcrRegs +[r8]
- mov rdx, rdi
+ mov rdx, rbp
; gcrRegs +[rdx]
cmp byte ptr [r8], r8b
cmp r8, rdx
- je SHORT G_M3825_IG10
+ je SHORT G_M3825_IG12
;; size=15 bbWeight=0.50 PerfScore 3.25
-G_M3825_IG08: ; bbWeight=0.18, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs -[rdi]
+G_M3825_IG09: ; bbWeight=0.18, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[rbp]
test rdx, rdx
- je SHORT G_M3825_IG11
+ je G_M3825_IG22
mov ecx, dword ptr [r8+08H]
cmp ecx, dword ptr [rdx+08H]
- jne SHORT G_M3825_IG11
- ;; size=14 bbWeight=0.18 PerfScore 1.31
-G_M3825_IG09: ; bbWeight=0.50, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0040 {rsi}, byref, isz
+ jne G_M3825_IG22
+ ;; size=22 bbWeight=0.18 PerfScore 1.31
+G_M3825_IG10: ; bbWeight=0.10, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0040 {rsi}, byref
lea rcx, bword ptr [r8+0CH]
; byrRegs +[rcx]
mov r8d, dword ptr [r8+08H]
@@ -142,27 +145,29 @@ G_M3825_IG09: ; bbWeight=0.50, gcrefRegs=010C {rdx rbx r8}, byrefRegs=004
call [<unknown method>]
; byrRegs -[rcx rdx]
; gcr arg pop 0
+ ;; size=21 bbWeight=0.10 PerfScore 0.60
+G_M3825_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
test eax, eax
- je SHORT G_M3825_IG11
- ;; size=25 bbWeight=0.50 PerfScore 3.62
-G_M3825_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
- cmp dword ptr [rsi+10H], ebp
- jne SHORT G_M3825_IG11
+ je SHORT G_M3825_IG13
+ ;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M3825_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ cmp dword ptr [rsi+10H], r14d
+ jne SHORT G_M3825_IG13
mov rax, qword ptr [rsi+18H]
- cmp rax, r14
- je SHORT G_M3825_IG14
- ;; size=14 bbWeight=0.50 PerfScore 3.62
-G_M3825_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ cmp rax, r15
+ je SHORT G_M3825_IG16
+ ;; size=15 bbWeight=0.50 PerfScore 3.62
+G_M3825_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
mov rdi, qword ptr [rbx+10H]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M3825_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M3825_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[rbx]
cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
- je SHORT G_M3825_IG16
+ je SHORT G_M3825_IG18
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- lea r8, [rsp+28H]
+ lea r8, [rsp+20H]
mov rdx, rsi
; byrRegs +[rdx]
cmp dword ptr [rcx], ecx
@@ -171,57 +176,60 @@ G_M3825_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, b
; byrRegs -[rdx rsi]
; gcr arg pop 0
test eax, eax
- je SHORT G_M3825_IG16
- mov rdx, gword ptr [rsp+28H]
+ je SHORT G_M3825_IG18
+ mov rdx, gword ptr [rsp+20H]
; gcrRegs +[rdx]
inc rdi
mov qword ptr [rdx+10H], rdi
- mov rdx, gword ptr [rsp+28H]
+ mov rdx, gword ptr [rsp+20H]
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx]
- mov rax, gword ptr [rsp+28H]
+ mov rax, gword ptr [rsp+20H]
; gcrRegs +[rax]
mov rax, gword ptr [rax+08H]
;; size=83 bbWeight=0.50 PerfScore 10.88
-G_M3825_IG13: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
+G_M3825_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
+ pop r15
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M3825_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M3825_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rbx]
mov rax, gword ptr [rbx+08H]
; gcrRegs +[rax]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M3825_IG15: ; bbWeight=0.50, epilog, nogc, extend
...
libraries_tests.pmi.windows.x64.checked.mch
-12 (-1.06%) : 111526.dasm - System.Xml.XmlConvertTests.VerifyNameTests1:v2():int:this
@@ -8,25 +8,25 @@
; Final local variable assignments
;
; V00 this [V00,T26] ( 3, 3 ) ref -> rcx this class-hnd single-def
-; V01 loc0 [V01,T16] ( 3, 12 ) int -> [rbp-0CH] EH-live spill-single-def
-; V02 loc1 [V02,T04] ( 6, 33 ) int -> [rbp-10H] do-not-enreg[Z] EH-live
-; V03 loc2 [V03,T00] ( 14, 56 ) ushort -> [rbp-14H] do-not-enreg[Z] EH-live
-; V04 loc3 [V04,T03] ( 13, 42.01) ref -> [rbp-40H] do-not-enreg[Z] class-hnd EH-live
-; V05 loc4 [V05,T05] ( 8, 32 ) ref -> [rbp-48H] do-not-enreg[Z] class-hnd EH-live
-; V06 loc5 [V06,T19] ( 3, 8 ) bool -> [rbp-18H] do-not-enreg[Z] EH-live
-; V07 loc6 [V07,T01] ( 10, 40 ) bool -> rdx
+; V01 loc0 [V01,T16] ( 3, 12 ) int -> [rbp-14H] EH-live spill-single-def
+; V02 loc1 [V02,T04] ( 6, 33 ) int -> [rbp-18H] do-not-enreg[Z] EH-live
+; V03 loc2 [V03,T00] ( 14, 56 ) ushort -> [rbp-1CH] do-not-enreg[Z] EH-live
+; V04 loc3 [V04,T03] ( 13, 42.01) ref -> [rbp-48H] do-not-enreg[Z] class-hnd EH-live
+; V05 loc4 [V05,T05] ( 8, 32 ) ref -> [rbp-50H] do-not-enreg[Z] class-hnd EH-live
+; V06 loc5 [V06,T19] ( 3, 8 ) bool -> [rbp-20H] do-not-enreg[Z] EH-live
+; V07 loc6 [V07,T01] ( 11, 48 ) bool -> rsi
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09,T23] ( 4, 7 ) ref -> rsi single-def "inline UNBOX clone1"
; V10 tmp2 [V10,T06] ( 3, 24 ) ref -> rax class-hnd exact "Single-def Box Helper"
; V11 tmp3 [V11,T07] ( 3, 24 ) ref -> rax class-hnd exact "Single-def Box Helper"
-; V12 tmp4 [V12,T17] ( 3, 12 ) int -> rdx
+; V12 tmp4 [V12,T17] ( 3, 12 ) int -> rax
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff"
;* V14 tmp6 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
-; V15 tmp7 [V15 ] ( 2, 16 ) ref -> [rbp-20H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg"
+; V15 tmp7 [V15 ] ( 2, 16 ) ref -> [rbp-28H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg"
;* V16 tmp8 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
; V17 tmp9 [V17,T20] ( 3, 8 ) int -> rax "Inline stloc first use temp"
;* V18 tmp10 [V18,T27] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
-; V19 tmp11 [V19 ] ( 2, 16 ) ref -> [rbp-28H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg"
+; V19 tmp11 [V19 ] ( 2, 16 ) ref -> [rbp-30H] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg"
;* V20 tmp12 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
; V21 tmp13 [V21,T21] ( 2, 8 ) byref -> r8 V16._reference(offs=0x00) P-INDEP "field V16._reference (fldOffset=0x0)"
;* V22 tmp14 [V22,T28] ( 0, 0 ) int -> zero-ref V16._length(offs=0x08) P-INDEP "field V16._length (fldOffset=0x8)"
@@ -34,34 +34,33 @@
;* V24 tmp16 [V24,T29] ( 0, 0 ) int -> zero-ref V20._length(offs=0x08) P-INDEP "field V20._length (fldOffset=0x8)"
; V25 tmp17 [V25,T24] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
; V26 tmp18 [V26,T25] ( 3, 6 ) ref -> rax single-def "argument with side effect"
-; V27 tmp19 [V27 ] ( 6, 48 ) struct (16) [rbp-38H] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument"
+; V27 tmp19 [V27 ] ( 6, 48 ) struct (16) [rbp-40H] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument"
; V28 tmp20 [V28,T31] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V29 tmp21 [V29,T08] ( 3, 24 ) ref -> rdx "arr expr"
-; V30 tmp22 [V30,T09] ( 3, 24 ) ref -> rdx "arr expr"
-; V31 tmp23 [V31,T10] ( 3, 24 ) ref -> rdx "arr expr"
-; V32 tmp24 [V32,T11] ( 3, 24 ) ref -> rdx "arr expr"
-; V33 tmp25 [V33,T12] ( 3, 24 ) ref -> rdx "arr expr"
+; V29 tmp21 [V29,T08] ( 3, 24 ) ref -> rax "arr expr"
+; V30 tmp22 [V30,T09] ( 3, 24 ) ref -> rax "arr expr"
+; V31 tmp23 [V31,T10] ( 3, 24 ) ref -> rax "arr expr"
+; V32 tmp24 [V32,T11] ( 3, 24 ) ref -> rax "arr expr"
+; V33 tmp25 [V33,T12] ( 3, 24 ) ref -> rax "arr expr"
; V34 tmp26 [V34,T14] ( 2, 16 ) ref -> rdx "argument with side effect"
; V35 tmp27 [V35,T15] ( 2, 16 ) int -> rsi "argument with side effect"
-; V36 PSPSym [V36,T30] ( 1, 1 ) long -> [rbp-50H] do-not-enreg[V] "PSPSym"
+; V36 PSPSym [V36,T30] ( 1, 1 ) long -> [rbp-60H] do-not-enreg[V] "PSPSym"
; V37 cse0 [V37,T18] ( 3, 8.02) int -> rsi "CSE - moderate"
; V38 rat0 [V38,T13] ( 3, 24 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
-; V39 rat1 [V39,T02] ( 3, 48 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
+; V39 rat1 [V39,T02] ( 3, 48 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 104
+; Lcl frame size = 112
G_M19725_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
+ push rdi
push rsi
- sub rsp, 104
- lea rbp, [rsp+70H]
- xor eax, eax
- mov qword ptr [rbp-38H], rax
+ sub rsp, 112
+ lea rbp, [rsp+80H]
vxorps xmm4, xmm4, xmm4
+ vmovdqa xmmword ptr [rbp-40H], xmm4
vmovdqa xmmword ptr [rbp-30H], xmm4
- mov qword ptr [rbp-20H], rax
- mov qword ptr [rbp-50H], rsp
- ;; size=34 bbWeight=1 PerfScore 8.33
+ mov qword ptr [rbp-60H], rsp
+ ;; size=33 bbWeight=1 PerfScore 9.08
G_M19725_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+20H]
@@ -95,28 +94,28 @@ G_M19725_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
;; size=19 bbWeight=0.50 PerfScore 1.75
G_M19725_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rsi+08H]
- mov dword ptr [rbp-0CH], ecx
+ mov dword ptr [rbp-14H], ecx
xor eax, eax
- mov dword ptr [rbp-10H], eax
+ mov dword ptr [rbp-18H], eax
;; size=11 bbWeight=1 PerfScore 4.25
G_M19725_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- cmp dword ptr [rbp-10H], 0xFFFF
+ cmp dword ptr [rbp-18H], 0xFFFF
ja G_M19725_IG37
- movzx rax, word ptr [rbp-10H]
- mov dword ptr [rbp-14H], eax
+ movzx rax, word ptr [rbp-18H]
+ mov dword ptr [rbp-1CH], eax
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov r8d, dword ptr [rbp-14H]
+ mov r8d, dword ptr [rbp-1CH]
mov word ptr [rax+08H], r8w
- mov gword ptr [rbp-20H], rax
- lea r8, bword ptr [rbp-20H]
+ mov gword ptr [rbp-28H], rax
+ lea r8, bword ptr [rbp-28H]
; byrRegs +[r8]
- mov bword ptr [rbp-38H], r8
- mov dword ptr [rbp-30H], 1
- lea r8, [rbp-38H]
+ mov bword ptr [rbp-40H], r8
+ mov dword ptr [rbp-38H], 1
+ lea r8, [rbp-40H]
; byrRegs -[r8]
xor rcx, rcx
; gcrRegs +[rcx]
@@ -125,19 +124,19 @@ G_M19725_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- mov gword ptr [rbp-40H], rax
+ mov gword ptr [rbp-48H], rax
; GC ptr vars +{V04}
xor rcx, rcx
; gcrRegs +[rcx]
- mov gword ptr [rbp-48H], rcx
+ mov gword ptr [rbp-50H], rcx
; GC ptr vars +{V05}
;; size=95 bbWeight=4 PerfScore 72.00
G_M19725_IG06: ; bbWeight=4, gcVars=0000000000000028 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rcx]
- mov dword ptr [rbp-18H], ecx
+ mov dword ptr [rbp-20H], ecx
;; size=3 bbWeight=4 PerfScore 4.00
G_M19725_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov ecx, dword ptr [rbp-0CH]
+ mov ecx, dword ptr [rbp-14H]
lea edx, [rcx-01H]
cmp edx, 6
ja G_M19725_IG18
@@ -148,32 +147,32 @@ G_M19725_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
jmp rax
;; size=37 bbWeight=4 PerfScore 34.00
G_M19725_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, gword ptr [rbp-40H]
+ mov rcx, gword ptr [rbp-48H]
; gcrRegs +[rcx]
mov edx, 1
call [System.Xml.XmlConvert:VerifyNMTOKEN(System.String,int):System.String]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-48H], rax
+ mov gword ptr [rbp-50H], rax
jmp G_M19725_IG18
;; size=24 bbWeight=4 PerfScore 29.00
G_M19725_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rcx, gword ptr [rbp-40H]
+ mov rcx, gword ptr [rbp-48H]
; gcrRegs +[rcx]
call [System.Xml.XmlConvert:VerifyName(System.String):System.String]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-48H], rax
+ mov gword ptr [rbp-50H], rax
jmp G_M19725_IG18
;; size=19 bbWeight=4 PerfScore 28.00
G_M19725_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp gword ptr [rbp-40H], 0
+ cmp gword ptr [rbp-48H], 0
je SHORT G_M19725_IG15
;; size=7 bbWeight=4 PerfScore 12.00
G_M19725_IG11: ; bbWeight=2.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdx, gword ptr [rbp-40H]
+ mov rdx, gword ptr [rbp-48H]
; gcrRegs +[rdx]
mov esi, dword ptr [rdx+08H]
test esi, esi
@@ -181,7 +180,7 @@ G_M19725_IG11: ; bbWeight=2.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
;; size=11 bbWeight=2.01 PerfScore 8.54
G_M19725_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- mov rcx, gword ptr [rbp-40H]
+ mov rcx, gword ptr [rbp-48H]
; gcrRegs +[rcx]
xor edx, edx
call [System.Xml.ValidateNames:ParseNCName(System.String,int):int]
@@ -189,29 +188,29 @@ G_M19725_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
cmp esi, eax
jne SHORT G_M19725_IG16
- mov rcx, gword ptr [rbp-40H]
+ mov rcx, gword ptr [rbp-48H]
; gcrRegs +[rcx]
- mov gword ptr [rbp-48H], rcx
+ mov gword ptr [rbp-50H], rcx
jmp SHORT G_M19725_IG18
;; size=26 bbWeight=4 PerfScore 38.00
G_M19725_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
- mov rcx, gword ptr [rbp-40H]
+ mov rcx, gword ptr [rbp-48H]
; gcrRegs +[rcx]
call [System.Xml.XmlConvert:VerifyXmlChars(System.String):System.String]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-48H], rax
+ mov gword ptr [rbp-50H], rax
jmp SHORT G_M19725_IG18
;; size=16 bbWeight=4 PerfScore 28.00
G_M19725_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov rcx, gword ptr [rbp-40H]
+ mov rcx, gword ptr [rbp-48H]
; gcrRegs +[rcx]
call [System.Xml.XmlConvert:VerifyPublicId(System.String):System.String]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-48H], rax
+ mov gword ptr [rbp-50H], rax
jmp SHORT G_M19725_IG18
;; size=16 bbWeight=4 PerfScore 28.00
G_M19725_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -223,7 +222,7 @@ G_M19725_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, gword ptr [rbp-40H]
+ mov rcx, gword ptr [rbp-48H]
; gcrRegs +[rcx]
call [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
; gcrRegs -[rax rcx rdx]
@@ -231,7 +230,7 @@ G_M19725_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=34 bbWeight=0 PerfScore 0.00
G_M19725_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, gword ptr [rbp-40H]
+ mov rcx, gword ptr [rbp-48H]
; gcrRegs +[rcx]
...
-17 (-1.01%) : 115.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Text.RegularExpressions.RegexCache+Key,System.__Canon],System.Text.RegularExpressions.RegexCache+Key,System.Nullable`1[int],System.__Canon,bool,bool,byref):bool:this
@@ -7,34 +7,34 @@
; 3 inlinees with PGO data; 28 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T25] ( 8, 17 ) ref -> [rbp+10H] this class-hnd EH-live single-def
-; V01 arg1 [V01,T23] ( 11, 29 ) ref -> [rbp+18H] do-not-enreg[Z] class-hnd EH-live
-; V02 arg2 [V02,T35] ( 6, 12 ) byref -> r8 single-def
+; V00 this [V00,T23] ( 8, 17 ) ref -> [rbp+10H] this class-hnd EH-live single-def
+; V01 arg1 [V01,T19] ( 11, 29 ) ref -> [rbp+18H] do-not-enreg[Z] class-hnd EH-live
+; V02 arg2 [V02,T33] ( 6, 12 ) byref -> r8 single-def
; V03 arg3 [V03,T47] ( 4, 4 ) struct ( 8) [rbp+28H] do-not-enreg[SF] single-def
; V04 arg4 [V04,T42] ( 4, 10 ) ref -> [rbp+30H] class-hnd EH-live single-def
; V05 arg5 [V05,T61] ( 1, 4 ) bool -> [rbp+38H] do-not-enreg[H] EH-live single-def
; V06 arg6 [V06,T62] ( 1, 4 ) bool -> [rbp+40H] do-not-enreg[H] EH-live single-def
; V07 arg7 [V07,T44] ( 3, 9 ) byref -> [rbp+48H] EH-live single-def
-; V08 loc0 [V08,T10] ( 9, 51 ) ref -> [rbp-B8H] do-not-enreg[Z] must-init class-hnd EH-live
-; V09 loc1 [V09,T15] ( 5, 42 ) int -> [rbp-44H] do-not-enreg[Z] EH-live
+; V08 loc0 [V08,T08] ( 9, 51 ) ref -> [rbp-B8H] do-not-enreg[Z] must-init class-hnd EH-live
+; V09 loc1 [V09,T11] ( 5, 42 ) int -> [rbp-44H] do-not-enreg[Z] EH-live
;* V10 loc2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op
-; V11 loc3 [V11,T29] ( 7, 16 ) ref -> [rbp-C0H] do-not-enreg[Z] class-hnd EH-live
+; V11 loc3 [V11,T27] ( 7, 16 ) ref -> [rbp-C0H] do-not-enreg[Z] class-hnd EH-live
; V12 loc4 [V12,T43] ( 4, 10 ) byref -> rsi
-; V13 loc5 [V13,T26] ( 10, 19 ) int -> [rbp-48H] do-not-enreg[Z] ld-addr-op EH-live
+; V13 loc5 [V13,T24] ( 10, 19 ) int -> [rbp-48H] do-not-enreg[Z] ld-addr-op EH-live
; V14 loc6 [V14,T45] ( 5, 8 ) bool -> rdi
;* V15 loc7 [V15,T63] ( 0, 0 ) bool -> zero-ref
; V16 loc8 [V16 ] ( 6, 18 ) bool -> [rbp-50H] do-not-enreg[X] addr-exposed ld-addr-op
;* V17 loc9 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 loc10 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd
;* V19 loc11 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def
-; V20 loc12 [V20,T02] ( 13,224 ) ref -> r14 class-hnd
+; V20 loc12 [V20,T00] ( 13,224 ) ref -> r14 class-hnd
;* V21 loc13 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd
; V22 loc14 [V22,T52] ( 2, 5 ) bool -> [rbp-54H] do-not-enreg[Z] EH-live
; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V24 tmp1 [V24,T66] ( 3, 3 ) int -> registers
;* V25 tmp2 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V26 tmp3 [V26 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V27 tmp4 [V27,T27] ( 9, 18 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp"
+; V27 tmp4 [V27,T25] ( 9, 18 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp"
;* V28 tmp5 [V28 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V29 tmp6 [V29 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V30 tmp7 [V30,T48] ( 3, 6 ) byref -> rcx single-def "dup spill"
@@ -47,30 +47,30 @@
;* V37 tmp14 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V38 tmp15 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V39 tmp16 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V40 tmp17 [V40,T30] ( 4, 16 ) int -> r10 "Inline stloc first use temp"
-; V41 tmp18 [V41,T32] ( 2, 16 ) ref -> rcx class-hnd "Inlining Arg"
-; V42 tmp19 [V42,T34] ( 2, 16 ) bool -> rcx "Inlining Arg"
+; V40 tmp17 [V40,T28] ( 4, 16 ) int -> r10 "Inline stloc first use temp"
+; V41 tmp18 [V41,T30] ( 2, 16 ) ref -> rcx class-hnd "Inlining Arg"
+; V42 tmp19 [V42,T32] ( 2, 16 ) bool -> rcx "Inlining Arg"
; V43 tmp20 [V43,T39] ( 3, 12 ) int -> rax "Inline return value spill temp"
;* V44 tmp21 [V44 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "Inlining Arg"
;* V45 tmp22 [V45 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V46 tmp23 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
-; V47 tmp24 [V47,T11] ( 3, 48 ) bool -> rax "Inline return value spill temp"
+; V47 tmp24 [V47,T09] ( 3, 48 ) bool -> rax "Inline return value spill temp"
;* V48 tmp25 [V48 ] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
;* V49 tmp26 [V49 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "Inlining Arg"
-; V50 tmp27 [V50,T12] ( 3, 48 ) bool -> rax "Inline return value spill temp"
-; V51 tmp28 [V51,T13] ( 2, 32 ) bool -> rax "Inline return value spill temp"
-; V52 tmp29 [V52,T00] ( 7,259.04) ref -> r12 class-hnd "Inlining Arg"
+; V50 tmp27 [V50,T10] ( 3, 48 ) bool -> rax "Inline return value spill temp"
+; V51 tmp28 [V51,T20] ( 3, 19.22) bool -> rax "Inline return value spill temp"
+; V52 tmp29 [V52,T01] ( 7,207.92) ref -> r12 class-hnd "Inlining Arg"
; V53 tmp30 [V53,T05] ( 2, 64 ) ref -> rax class-hnd "Inlining Arg"
-; V54 tmp31 [V54,T06] ( 2, 64 ) byref -> rcx "impAppendStmt"
+; V54 tmp31 [V54,T34] ( 2, 12.88) byref -> rcx "impAppendStmt"
;* V55 tmp32 [V55 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V56 tmp33 [V56 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V57 tmp34 [V57 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V58 tmp35 [V58 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V59 tmp36 [V59 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
-; V60 tmp37 [V60,T14] ( 2, 32 ) bool -> rax "Inline return value spill temp"
-; V61 tmp38 [V61,T01] ( 7,259.04) ref -> r13 class-hnd "Inlining Arg"
-; V62 tmp39 [V62,T07] ( 2, 64 ) ref -> rcx class-hnd "Inlining Arg"
-; V63 tmp40 [V63,T08] ( 2, 64 ) byref -> rcx "impAppendStmt"
+; V60 tmp37 [V60,T21] ( 3, 19.22) bool -> rax "Inline return value spill temp"
+; V61 tmp38 [V61,T02] ( 7,207.92) ref -> r13 class-hnd "Inlining Arg"
+; V62 tmp39 [V62,T06] ( 2, 64 ) ref -> rcx class-hnd "Inlining Arg"
+; V63 tmp40 [V63,T35] ( 2, 12.88) byref -> rcx "impAppendStmt"
;* V64 tmp41 [V64 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V65 tmp42 [V65 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
;* V66 tmp43 [V66 ] ( 0, 0 ) bool -> zero-ref "Inlining Arg"
@@ -79,10 +79,10 @@
;* V69 tmp46 [V69 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg"
;* V70 tmp47 [V70 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg"
; V71 tmp48 [V71,T56] ( 2, 4 ) ref -> r12 class-hnd single-def "Inlining Arg"
-; V72 tmp49 [V72,T03] ( 14,119.31) ref -> [rbp-C8H] must-init EH-live single-def V92._pattern(offs=0x00) P-INDEP "field V02._pattern (fldOffset=0x0)"
-; V73 tmp50 [V73,T04] ( 10,109.31) ref -> [rbp-D0H] must-init EH-live single-def V92._culture(offs=0x08) P-INDEP "field V02._culture (fldOffset=0x8)"
-; V74 tmp51 [V74,T16] ( 6, 39 ) int -> [rbp-58H] do-not-enreg[Z] EH-live V92._options(offs=0x10) P-INDEP "field V02._options (fldOffset=0x10)"
-; V75 tmp52 [V75,T17] ( 6, 39 ) long -> [rbp-60H] do-not-enreg[Z] EH-live V92._matchTimeout(offs=0x18) P-INDEP "field V02._matchTimeout (fldOffset=0x18)"
+; V72 tmp49 [V72,T03] ( 14,106.53) ref -> [rbp-C8H] must-init EH-live single-def V92._pattern(offs=0x00) P-INDEP "field V02._pattern (fldOffset=0x0)"
+; V73 tmp50 [V73,T04] ( 10, 96.53) ref -> [rbp-D0H] must-init EH-live single-def V92._culture(offs=0x08) P-INDEP "field V02._culture (fldOffset=0x8)"
+; V74 tmp51 [V74,T12] ( 6, 39 ) int -> [rbp-58H] do-not-enreg[Z] EH-live V92._options(offs=0x10) P-INDEP "field V02._options (fldOffset=0x10)"
+; V75 tmp52 [V75,T13] ( 6, 39 ) long -> [rbp-60H] do-not-enreg[Z] EH-live V92._matchTimeout(offs=0x18) P-INDEP "field V02._matchTimeout (fldOffset=0x18)"
; V76 tmp53 [V76,T70] ( 2, 2 ) bool -> rdx V10.hasValue(offs=0x00) P-INDEP "field V10.hasValue (fldOffset=0x0)"
; V77 tmp54 [V77,T71] ( 2, 2 ) int -> r14 V10.value(offs=0x04) P-INDEP "field V10.value (fldOffset=0x4)"
;* V78 tmp55 [V78,T74] ( 0, 0 ) ref -> zero-ref single-def V32._pattern(offs=0x00) P-INDEP "field V32._pattern (fldOffset=0x0)"
@@ -93,18 +93,18 @@
;* V83 tmp60 [V83,T60] ( 0, 0 ) ref -> zero-ref V44._culture(offs=0x08) P-INDEP "field V44._culture (fldOffset=0x8)"
; V84 tmp61 [V84,T40] ( 3, 12 ) int -> rsi V44._options(offs=0x10) P-INDEP "field V44._options (fldOffset=0x10)"
; V85 tmp62 [V85,T46] ( 2, 8 ) long -> rcx V44._matchTimeout(offs=0x18) P-INDEP "field V44._matchTimeout (fldOffset=0x18)"
-; V86 tmp63 [V86,T18] ( 2, 32 ) ref -> r12 V49._pattern(offs=0x00) P-INDEP "field V49._pattern (fldOffset=0x0)"
-; V87 tmp64 [V87,T19] ( 2, 32 ) ref -> r13 V49._culture(offs=0x08) P-INDEP "field V49._culture (fldOffset=0x8)"
-; V88 tmp65 [V88,T20] ( 2, 32 ) int -> [rbp-64H] V49._options(offs=0x10) P-INDEP "field V49._options (fldOffset=0x10)"
-; V89 tmp66 [V89,T21] ( 2, 32 ) long -> [rbp-70H] spill-single-def V49._matchTimeout(offs=0x18) P-INDEP "field V49._matchTimeout (fldOffset=0x18)"
+; V86 tmp63 [V86,T14] ( 2, 32 ) ref -> r12 V49._pattern(offs=0x00) P-INDEP "field V49._pattern (fldOffset=0x0)"
+; V87 tmp64 [V87,T15] ( 2, 32 ) ref -> r13 V49._culture(offs=0x08) P-INDEP "field V49._culture (fldOffset=0x8)"
+; V88 tmp65 [V88,T16] ( 2, 32 ) int -> [rbp-64H] spill-single-def V49._options(offs=0x10) P-INDEP "field V49._options (fldOffset=0x10)"
+; V89 tmp66 [V89,T17] ( 2, 32 ) long -> [rbp-70H] spill-single-def V49._matchTimeout(offs=0x18) P-INDEP "field V49._matchTimeout (fldOffset=0x18)"
;* V90 tmp67 [V90 ] ( 0, 0 ) long -> zero-ref V69._ticks(offs=0x00) P-INDEP "field V69._ticks (fldOffset=0x0)"
;* V91 tmp68 [V91 ] ( 0, 0 ) long -> zero-ref V70._ticks(offs=0x00) P-INDEP "field V70._ticks (fldOffset=0x0)"
;* V92 tmp69 [V92 ] ( 0, 0 ) struct (32) zero-ref "Promoted implicit byref"
; V93 tmp70 [V93 ] ( 12,114 ) struct (32) [rbp-90H] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument"
; V94 tmp71 [V94,T57] ( 2, 4 ) ref -> r11 single-def "argument with side effect"
-; V95 tmp72 [V95,T33] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V95 tmp72 [V95,T31] ( 2, 16 ) ref -> rdx "argument with side effect"
; V96 tmp73 [V96 ] ( 5,160 ) struct (32) [rbp-B0H] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument"
-; V97 tmp74 [V97,T09] ( 2, 64 ) ref -> rcx "argument with side effect"
+; V97 tmp74 [V97,T07] ( 2, 64 ) ref -> rcx "argument with side effect"
; V98 tmp75 [V98,T49] ( 3, 6 ) ref -> rcx single-def "arr expr"
; V99 tmp76 [V99,T58] ( 2, 4 ) ref -> rdx single-def "arr expr"
; V100 PSPSym [V100,T76] ( 1, 1 ) long -> [rbp-E0H] do-not-enreg[V] "PSPSym"
@@ -113,11 +113,11 @@
; V103 cse2 [V103,T37] ( 3, 12 ) ref -> rcx "CSE - moderate"
; V104 cse3 [V104,T38] ( 3, 12 ) ref -> rcx "CSE - moderate"
; V105 cse4 [V105,T65] ( 3, 3 ) ref -> rdx "CSE - conservative"
-; V106 cse5 [V106,T22] ( 9, 31.32) ref -> rdx "CSE - aggressive"
+; V106 cse5 [V106,T18] ( 9, 31.32) ref -> rdx "CSE - aggressive"
; V107 cse6 [V107,T41] ( 3, 12 ) int -> r11 "CSE - moderate"
-;* V108 rat0 [V108,T28] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V109 rat1 [V109,T31] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V110 rat2 [V110,T24] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V108 rat0 [V108,T26] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V109 rat1 [V109,T29] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V110 rat2 [V110,T22] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
; V111 rat3 [V111,T53] ( 3, 4.40) long -> rcx "Spilling to split statement for tree"
; V112 rat4 [V112,T55] ( 3, 4 ) long -> rdx "runtime lookup"
; V113 rat5 [V113,T50] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
@@ -156,7 +156,7 @@ G_M58068_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, gword ptr [rbp+30H]
; gcrRegs +[rsi]
;; size=95 bbWeight=1 PerfScore 23.58
-G_M58068_IG02: ; bbWeight=1, gcVars=00000000000000000000000002800000 {V00 V01}, gcrefRegs=0040 {rsi}, byrefRegs=0100 {r8}, gcvars, byref, isz
+G_M58068_IG02: ; bbWeight=1, gcVars=00000000000000000000000000880000 {V00 V01}, gcrefRegs=0040 {rsi}, byrefRegs=0100 {r8}, gcvars, byref, isz
; byrRegs +[r8]
mov rdi, gword ptr [r8]
; gcrRegs +[rdi]
@@ -251,7 +251,7 @@ G_M58068_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
div edx:eax, dword ptr [rcx+08H]
mov dword ptr [rbp-48H], edx
cmp r10d, r11d
- jae G_M58068_IG50
+ jae G_M58068_IG56
mov edx, r10d
lea rsi, bword ptr [r9+8*rdx+10H]
; byrRegs +[rsi]
@@ -259,7 +259,7 @@ G_M58068_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor edx, edx
mov dword ptr [rbp-50H], edx
;; size=100 bbWeight=4 PerfScore 216.00
-G_M58068_IG08: ; bbWeight=4, gcVars=00000000000000000000000022800418 {V00 V01 V08 V11 V72 V73}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+G_M58068_IG08: ; bbWeight=4, gcVars=00000000000000000000000008880118 {V00 V01 V08 V11 V72 V73}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; gcrRegs -[rcx r8-r9]
cmp byte ptr [rbp+40H], 0
je SHORT G_M58068_IG09
@@ -275,7 +275,7 @@ G_M58068_IG08: ; bbWeight=4, gcVars=00000000000000000000000022800418 {V00
mov rcx, gword ptr [rdx+8*rcx+10H]
; gcrRegs +[rcx]
cmp byte ptr [rbp-50H], 0
- jne G_M58068_IG36
+ jne G_M58068_IG42
lea rdx, [rbp-50H]
; gcrRegs -[rdx]
call <unknown method>
@@ -304,7 +304,7 @@ G_M58068_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
mov rcx, gword ptr [rbp+18H]
mov rcx, gword ptr [rcx+08H]
cmp gword ptr [rbp-B8H], rcx
- je G_M58068_IG41
+ je G_M58068_IG47
mov gword ptr [rbp-B8H], rcx
mov esi, dword ptr [rbp-58H]
; byrRegs -[rsi]
@@ -333,7 +333,7 @@ G_M58068_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
;; size=136 bbWeight=4 PerfScore 128.00
G_M58068_IG10: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov dword ptr [rbp-44H], eax
- jmp G_M58068_IG41
+ jmp G_M58068_IG47
;; size=8 bbWeight=4 PerfScore 12.00
G_M58068_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
@@ -363,12 +363,12 @@ G_M58068_IG13: ; bbWeight=4, gcrefRegs=0100 {r8}, byrefRegs=0040 {rsi}, b
mov r14, gword ptr [rsi]
; gcrRegs +[r14]
test r14, r14
- je G_M58068_IG31
+ je G_M58068_IG36
;; size=12 bbWeight=4 PerfScore 13.00
G_M58068_IG14: ; bbWeight=32, gcrefRegs=4100 {r8 r14}, byrefRegs=0040 {rsi}, byref
mov ecx, dword ptr [rbp-44H]
cmp ecx, dword ptr [r14+18H]
- jne G_M58068_IG30
+ jne G_M58068_IG35
;; size=13 bbWeight=32 PerfScore 160.00
G_M58068_IG15: ; bbWeight=16, gcrefRegs=4100 {r8 r14}, byrefRegs=0040 {rsi}, byref, isz
cmp gword ptr [rbp-B8H], 0
@@ -398,7 +398,7 @@ G_M58068_IG17: ; bbWeight=16, extend
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- jmp G_M58068_IG29
+ jmp G_M58068_IG34
;; size=80 bbWeight=16 PerfScore 228.00
G_M58068_IG18: ; bbWeight=16, gcrefRegs=4100 {r8 r14}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[rbx r15] +[r8]
@@ -407,6 +407,7 @@ G_M58068_IG18: ; bbWeight=16, gcrefRegs=4100 {r8 r14}, byrefRegs=0040 {rs
mov r13, gword ptr [r14+28H]
; gcrRegs +[r13]
mov r9d, dword ptr [r14+30H]
+ mov dword ptr [rbp-64H], r9d
mov r10, qword ptr [r14+38H]
mov qword ptr [rbp-70H], r10
mov r15, gword ptr [rbp-C8H]
@@ -415,23 +416,19 @@ G_M58068_IG18: ; bbWeight=16, gcrefRegs=4100 {r8 r14}, byrefRegs=0040 {rs
; gcrRegs +[rax]
cmp byte ptr [r12], r12b
cmp r12, rax
- je SHORT G_M58068_IG23
- ;; size=39 bbWeight=16 PerfScore 232.00
-G_M58068_IG19: ; bbWeight=5.79, gcrefRegs=F100 {r8 r12 r13 r14 r15}, byrefRegs=0040 {rsi}, byref
+ je SHORT G_M58068_IG24
+ ;; size=43 bbWeight=16 PerfScore 248.00
+G_M58068_IG19: ; bbWeight=5.79, gcrefRegs=F100 {r8 r12 r13 r14 r15}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[rax]
test r15, r15
- mov rbx, gword ptr [rbp-D0H]
- ; gcrRegs +[rbx]
- je G_M58068_IG33
- ;; size=16 bbWeight=5.79 PerfScore 13.02
-G_M58068_IG20: ; bbWeight=46.30, gcrefRegs=F108 {rbx r8 r12 r13 r14 r15}, byrefRegs=0040 {rsi}, byref
- mov eax, r9d
+ je SHORT G_M58068_IG27
+ ;; size=5 bbWeight=5.79 PerfScore 7.23
+G_M58068_IG20: ; bbWeight=46.30, gcrefRegs=F100 {r8 r12 r13 r14 r15}, byrefRegs=0040 {rsi}, byref, isz
...
-4 (-0.98%) : 109239.dasm - System.Xml.XslCompiledTransformApiTests.CTransformStrStrTest:TransformStrStr11(int,int):this
@@ -40,7 +40,7 @@ G_M46549_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov edi, edx
mov ebx, r8d
;; size=29 bbWeight=1 PerfScore 7.50
-G_M46549_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M46549_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
xor ecx, ecx
mov dword ptr [rbp-1CH], ecx
mov rcx, 0xD1FFAB1E ; System.Xml.XmlUrlResolver
@@ -59,11 +59,11 @@ G_M46549_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=004
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
cmp eax, 1
- jne G_M46549_IG10
+ jne SHORT G_M46549_IG08
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov gword ptr [rsi+90H], rcx
- ;; size=76 bbWeight=1 PerfScore 10.00
+ ;; size=72 bbWeight=1 PerfScore 10.00
G_M46549_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rcx, gword ptr [rsi+60H]
@@ -119,10 +119,8 @@ G_M46549_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M46549_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
cmp dword ptr [rbp-1CH], 3
- mov rsi, gword ptr [rbp+10H]
- ; gcrRegs +[rsi]
jne SHORT G_M46549_IG10
- ;; size=10 bbWeight=1 PerfScore 4.00
+ ;; size=6 bbWeight=1 PerfScore 3.00
G_M46549_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 72
pop rbx
@@ -131,7 +129,9 @@ G_M46549_IG09: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M46549_IG10: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M46549_IG10: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov rsi, gword ptr [rbp+10H]
+ ; gcrRegs +[rsi]
mov rcx, gword ptr [rsi+98H]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -150,7 +150,7 @@ G_M46549_IG10: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=004
; gcrRegs -[rdx]
; gcr arg pop 0
nop
- ;; size=51 bbWeight=1 PerfScore 12.00
+ ;; size=55 bbWeight=1 PerfScore 13.00
G_M46549_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 72
pop rbx
@@ -231,7 +231,7 @@ G_M46549_IG20: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 409, prolog size 29, PerfScore 114.90, instruction count 124, allocated bytes for code 409 (MethodHash=e6884a2a) for method System.Xml.XslCompiledTransformApiTests.CTransformStrStrTest:TransformStrStr11(int,int):this
+; Total bytes of code 405, prolog size 29, PerfScore 114.50, instruction count 124, allocated bytes for code 405 (MethodHash=e6884a2a) for method System.Xml.XslCompiledTransformApiTests.CTransformStrStrTest:TransformStrStr11(int,int):this
; ============================================================
Unwind Info:
+46 (+27.54%) : 309200.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass6_0:b__3():this
@@ -9,11 +9,11 @@
;
; V00 this [V00,T02] ( 3, 3 ) ref -> rcx this class-hnd single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 2, 4 ) ref -> rcx class-hnd single-def "dup spill"
+; V02 tmp1 [V02,T03] ( 2, 4 ) ref -> rax class-hnd single-def "dup spill"
;* V03 tmp2 [V03 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V04 tmp3 [V04 ] ( 0, 0 ) byref -> zero-ref single-def
-; V05 tmp4 [V05,T04] ( 2, 2 ) ref -> rcx
-; V06 tmp5 [V06,T00] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp"
+; V05 tmp4 [V05,T04] ( 4, 3 ) ref -> rax
+; V06 tmp5 [V06,T00] ( 5, 10 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp"
; V07 tmp6 [V07,T01] ( 3, 6 ) ref -> rdx class-hnd single-def "Inlining Arg"
;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
@@ -29,23 +29,21 @@ G_M15440_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
sub rsp, 40
;; size=6 bbWeight=1 PerfScore 2.25
-G_M15440_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M15440_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
test byte ptr [(reloc)], 1 ; global ptr
- je SHORT G_M15440_IG05
- ;; size=11 bbWeight=1 PerfScore 7.00
+ je G_M15440_IG06
+ ;; size=15 bbWeight=1 PerfScore 7.00
G_M15440_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rcx, gword ptr [rsi]
- ; gcrRegs +[rcx]
- test rcx, rcx
+ mov rax, gword ptr [rsi]
+ ; gcrRegs +[rax]
+ test rax, rax
jne SHORT G_M15440_IG04
mov rcx, 0xD1FFAB1E ; System.Action`1[System.Reflection.Metadata.Ecma335.FixedArgumentsEncoder]
- ; gcrRegs -[rcx]
call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
@@ -53,7 +51,7 @@ G_M15440_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M15440_IG06
+ je G_M15440_IG07
lea rcx, bword ptr [rdi+08H]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
@@ -65,9 +63,26 @@ G_M15440_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdx, rdi
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rdi]
- ;; size=88 bbWeight=1 PerfScore 12.75
-G_M15440_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx]
+ mov rax, rdi
+ ; gcrRegs +[rax]
+ ;; size=95 bbWeight=1 PerfScore 13.00
+G_M15440_IG04: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
+ test rax, rax
+ jne SHORT G_M15440_IG05
+ mov ecx, 0x2EBB
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ call [System.Reflection.Throw:ArgumentNull(System.String)]
+ ; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ int3
+ ;; size=35 bbWeight=0 PerfScore 0.00
+G_M15440_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x2ED9
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -80,20 +95,20 @@ G_M15440_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M15440_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15440_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
mov edx, 204
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcr arg pop 0
jmp G_M15440_IG03
;; size=25 bbWeight=0 PerfScore 0.00
-G_M15440_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15440_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.MulticastDelegate:ThrowNullThisInDelegateToInstance()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 167, prolog size 6, PerfScore 38.70, instruction count 36, allocated bytes for code 167 (MethodHash=ebf9c3af) for method System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass6_0:<BlobEncoder_CustomAttributeSignature>b__3():this
+; Total bytes of code 213, prolog size 6, PerfScore 43.55, instruction count 45, allocated bytes for code 213 (MethodHash=ebf9c3af) for method System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass6_0:<BlobEncoder_CustomAttributeSignature>b__3():this
; ============================================================
Unwind Info:
+46 (+27.54%) : 309129.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass11_0:b__5():this
@@ -9,12 +9,12 @@
;
; V00 this [V00,T02] ( 3, 3 ) ref -> rcx this class-hnd single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 2, 4 ) ref -> rcx class-hnd single-def "dup spill"
+; V02 tmp1 [V02,T03] ( 2, 4 ) ref -> rax class-hnd single-def "dup spill"
;* V03 tmp2 [V03 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V04 tmp3 [V04 ] ( 0, 0 ) byref -> zero-ref single-def
;* V05 tmp4 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 tmp5 [V06,T04] ( 2, 2 ) ref -> rcx
-; V07 tmp6 [V07,T00] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp"
+; V06 tmp5 [V06,T04] ( 4, 3 ) ref -> rax
+; V07 tmp6 [V07,T00] ( 5, 10 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp"
; V08 tmp7 [V08,T01] ( 3, 6 ) ref -> rdx class-hnd single-def "Inlining Arg"
;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
@@ -31,23 +31,21 @@ G_M49001_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
sub rsp, 40
;; size=6 bbWeight=1 PerfScore 2.25
-G_M49001_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M49001_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
test byte ptr [(reloc)], 1 ; global ptr
- je SHORT G_M49001_IG05
- ;; size=11 bbWeight=1 PerfScore 7.00
+ je G_M49001_IG06
+ ;; size=15 bbWeight=1 PerfScore 7.00
G_M49001_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rcx, gword ptr [rsi]
- ; gcrRegs +[rcx]
- test rcx, rcx
+ mov rax, gword ptr [rsi]
+ ; gcrRegs +[rax]
+ test rax, rax
jne SHORT G_M49001_IG04
mov rcx, 0xD1FFAB1E ; System.Action`1[System.Reflection.Metadata.Ecma335.ReturnTypeEncoder]
- ; gcrRegs -[rcx]
call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
@@ -55,7 +53,7 @@ G_M49001_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M49001_IG06
+ je G_M49001_IG07
lea rcx, bword ptr [rdi+08H]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
@@ -67,9 +65,26 @@ G_M49001_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdx, rdi
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rdi]
- ;; size=88 bbWeight=1 PerfScore 12.75
-G_M49001_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx]
+ mov rax, rdi
+ ; gcrRegs +[rax]
+ ;; size=95 bbWeight=1 PerfScore 13.00
+G_M49001_IG04: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
+ test rax, rax
+ jne SHORT G_M49001_IG05
+ mov ecx, 0x2F6B
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ call [System.Reflection.Throw:ArgumentNull(System.String)]
+ ; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ int3
+ ;; size=35 bbWeight=0 PerfScore 0.00
+G_M49001_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x2F81
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -82,20 +97,20 @@ G_M49001_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M49001_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M49001_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
mov edx, 204
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcr arg pop 0
jmp G_M49001_IG03
;; size=25 bbWeight=0 PerfScore 0.00
-G_M49001_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M49001_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.MulticastDelegate:ThrowNullThisInDelegateToInstance()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 167, prolog size 6, PerfScore 38.70, instruction count 36, allocated bytes for code 167 (MethodHash=dcac4096) for method System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass11_0:<MethodSignatureEncoder_Parameters>b__5():this
+; Total bytes of code 213, prolog size 6, PerfScore 43.55, instruction count 45, allocated bytes for code 213 (MethodHash=dcac4096) for method System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass11_0:<MethodSignatureEncoder_Parameters>b__5():this
; ============================================================
Unwind Info:
+46 (+27.54%) : 309141.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass25_0:b__3():this
@@ -9,11 +9,11 @@
;
; V00 this [V00,T02] ( 3, 3 ) ref -> rcx this class-hnd single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 2, 4 ) ref -> rcx class-hnd single-def "dup spill"
+; V02 tmp1 [V02,T03] ( 2, 4 ) ref -> rax class-hnd single-def "dup spill"
;* V03 tmp2 [V03 ] ( 0, 0 ) byref -> zero-ref single-def "impAppendStmt"
;* V04 tmp3 [V04 ] ( 0, 0 ) byref -> zero-ref single-def
-; V05 tmp4 [V05,T04] ( 2, 2 ) ref -> rcx
-; V06 tmp5 [V06,T00] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp"
+; V05 tmp4 [V05,T04] ( 4, 3 ) ref -> rax
+; V06 tmp5 [V06,T00] ( 5, 10 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp"
; V07 tmp6 [V07,T01] ( 3, 6 ) ref -> rdx class-hnd single-def "Inlining Arg"
;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V09 tmp8 [V09 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
@@ -29,23 +29,21 @@ G_M53016_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
sub rsp, 40
;; size=6 bbWeight=1 PerfScore 2.25
-G_M53016_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M53016_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
test byte ptr [(reloc)], 1 ; global ptr
- je SHORT G_M53016_IG05
- ;; size=11 bbWeight=1 PerfScore 7.00
+ je G_M53016_IG06
+ ;; size=15 bbWeight=1 PerfScore 7.00
G_M53016_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rcx, gword ptr [rsi]
- ; gcrRegs +[rcx]
- test rcx, rcx
+ mov rax, gword ptr [rsi]
+ ; gcrRegs +[rax]
+ test rax, rax
jne SHORT G_M53016_IG04
mov rcx, 0xD1FFAB1E ; System.Action`1[System.Reflection.Metadata.Ecma335.CustomAttributeElementTypeEncoder]
- ; gcrRegs -[rcx]
call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
@@ -53,7 +51,7 @@ G_M53016_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M53016_IG06
+ je G_M53016_IG07
lea rcx, bword ptr [rdi+08H]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
@@ -65,9 +63,26 @@ G_M53016_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rdx, rdi
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rdi]
- ;; size=88 bbWeight=1 PerfScore 12.75
-G_M53016_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx]
+ mov rax, rdi
+ ; gcrRegs +[rax]
+ ;; size=95 bbWeight=1 PerfScore 13.00
+G_M53016_IG04: ; bbWeight=0, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
+ test rax, rax
+ jne SHORT G_M53016_IG05
+ mov ecx, 0x2FED
+ mov rdx, 0xD1FFAB1E
+ call CORINFO_HELP_STRCNS
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ call [System.Reflection.Throw:ArgumentNull(System.String)]
+ ; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ int3
+ ;; size=35 bbWeight=0 PerfScore 0.00
+G_M53016_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 0x2FF7
mov rdx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
@@ -80,20 +95,20 @@ G_M53016_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
int3
;; size=30 bbWeight=0 PerfScore 0.00
-G_M53016_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53016_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
mov edx, 204
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcr arg pop 0
jmp G_M53016_IG03
;; size=25 bbWeight=0 PerfScore 0.00
-G_M53016_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53016_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.MulticastDelegate:ThrowNullThisInDelegateToInstance()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 167, prolog size 6, PerfScore 38.70, instruction count 36, allocated bytes for code 167 (MethodHash=7b0630e7) for method System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass25_0:<LiteralEncoder_TaggedScalar>b__3():this
+; Total bytes of code 213, prolog size 6, PerfScore 43.55, instruction count 45, allocated bytes for code 213 (MethodHash=7b0630e7) for method System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass25_0:<LiteralEncoder_TaggedScalar>b__3():this
; ============================================================
Unwind Info:
realworld.run.windows.x64.checked.mch
-4 (-1.81%) : 1994.dasm - MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
@@ -31,13 +31,13 @@ G_M45147_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov rdi, rdx
; gcrRegs +[rdi]
;; size=14 bbWeight=1 PerfScore 4.75
-G_M45147_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+G_M45147_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
xor ebx, ebx
cmp dword ptr [rsi+34H], 45
- jne G_M45147_IG07
+ jne SHORT G_M45147_IG04
lea rbp, bword ptr [rsi+08H]
; byrRegs +[rbp]
- ;; size=16 bbWeight=1 PerfScore 4.75
+ ;; size=12 bbWeight=1 PerfScore 4.75
G_M45147_IG03: ; bbWeight=4, gcrefRegs=0080 {rdi}, byrefRegs=0060 {rbp rsi}, byref, isz
mov rcx, rbp
; byrRegs +[rcx]
@@ -136,7 +136,7 @@ G_M45147_IG08: ; bbWeight=0.50, epilog, nogc, extend
; gcr arg pop 0
;; size=14 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 221, prolog size 14, PerfScore 80.35, instruction count 61, allocated bytes for code 221 (MethodHash=6aa94fa4) for method MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
+; Total bytes of code 217, prolog size 14, PerfScore 79.95, instruction count 61, allocated bytes for code 217 (MethodHash=6aa94fa4) for method MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
; ============================================================
Unwind Info:
-4 (-0.27%) : 461.dasm - System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
@@ -197,7 +197,7 @@ G_M24617_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
je G_M24617_IG31
jmp G_M24617_IG17
;; size=94 bbWeight=0.50 PerfScore 12.25
-G_M24617_IG08: ; bbWeight=0.50, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0000 {}, byref
+G_M24617_IG08: ; bbWeight=0.50, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
call <unknown method>
; gcrRegs +[rax]
@@ -222,8 +222,8 @@ G_M24617_IG08: ; bbWeight=0.50, gcrefRegs=C080 {rdi r14 r15}, byrefRegs=0
; gcrRegs -[rax]
mov dword ptr [rbp-44H], eax
test eax, eax
- jle G_M24617_IG41
- ;; size=74 bbWeight=0.50 PerfScore 6.88
+ jle SHORT G_M24617_IG12
+ ;; size=70 bbWeight=0.50 PerfScore 6.88
G_M24617_IG09: ; bbWeight=4, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
mov edx, r13d
mov rdx, gword ptr [rbx+8*rdx+10H]
@@ -774,7 +774,7 @@ G_M24617_IG45: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {},
int3
;; size=106 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1483, prolog size 33, PerfScore 430.11, instruction count 378, allocated bytes for code 1483 (MethodHash=a0569fd6) for method System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
+; Total bytes of code 1479, prolog size 33, PerfScore 429.71, instruction count 378, allocated bytes for code 1479 (MethodHash=a0569fd6) for method System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
; ============================================================
Unwind Info:
-1 (-0.08%) : 23998.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this
@@ -28,8 +28,8 @@
;* V18 tmp4 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt"
; V19 tmp5 [V19,T25] ( 3, 32 ) int -> rax
; V20 tmp6 [V20,T67] ( 3, 1.50) int -> rdx
-; V21 tmp7 [V21,T39] ( 4, 16 ) ref -> r15 class-hnd exact "NewObj constructor temp"
-; V22 tmp8 [V22,T50] ( 2, 8 ) int -> r14 "impAppendStmt"
+; V21 tmp7 [V21,T39] ( 4, 16 ) ref -> r12 class-hnd exact "NewObj constructor temp"
+; V22 tmp8 [V22,T50] ( 2, 8 ) int -> r15 "impAppendStmt"
; V23 tmp9 [V23,T60] ( 1, 4 ) struct (24) [rsp+68H] do-not-enreg[HS] hidden-struct-arg "location for address-of(RValue)"
; V24 tmp10 [V24,T20] ( 4, 36 ) byref -> rcx "Inlining Arg"
;* V25 tmp11 [V25,T62] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
@@ -59,17 +59,17 @@
; V49 tmp35 [V49,T22] ( 2, 32 ) int -> r13 "Inline stloc first use temp"
;* V50 tmp36 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
;* V51 tmp37 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
-; V52 tmp38 [V52,T46] ( 2, 8 ) byref -> r14 "Inlining Arg"
+; V52 tmp38 [V52,T46] ( 2, 8 ) byref -> r15 "Inlining Arg"
;* V53 tmp39 [V53 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V54 tmp40 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp"
;* V55 tmp41 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
;* V56 tmp42 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
-; V57 tmp43 [V57,T23] ( 2, 32 ) int -> r15 "Inline stloc first use temp"
+; V57 tmp43 [V57,T23] ( 2, 32 ) int -> r12 "Inline stloc first use temp"
;* V58 tmp44 [V58 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V59 tmp45 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp"
;* V60 tmp46 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
;* V61 tmp47 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg"
-; V62 tmp48 [V62,T24] ( 2, 32 ) int -> r15 "Inline stloc first use temp"
+; V62 tmp48 [V62,T24] ( 2, 32 ) int -> r12 "Inline stloc first use temp"
;* V63 tmp49 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V64 tmp50 [V64 ] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
; V65 tmp51 [V65,T08] ( 3, 68 ) byref -> rcx "Inlining Arg"
@@ -92,8 +92,8 @@
; V82 tmp68 [V82,T38] ( 2, 18 ) ref -> r15 V09._array(offs=0x00) P-INDEP "field V09._array (fldOffset=0x0)"
; V83 tmp69 [V83,T07] ( 5, 66 ) int -> r13 V09._index(offs=0x08) P-INDEP "field V09._index (fldOffset=0x8)"
;* V84 tmp70 [V84 ] ( 0, 0 ) ref -> zero-ref V10.array(offs=0x00) P-INDEP "field V10.array (fldOffset=0x0)"
-; V85 tmp71 [V85,T21] ( 4, 36 ) ref -> registers V12._array(offs=0x00) P-INDEP "field V12._array (fldOffset=0x0)"
-; V86 tmp72 [V86,T00] ( 10,132 ) int -> r15 V12._index(offs=0x08) P-INDEP "field V12._index (fldOffset=0x8)"
+; V85 tmp71 [V85,T21] ( 4, 36 ) ref -> r15 V12._array(offs=0x00) P-INDEP "field V12._array (fldOffset=0x0)"
+; V86 tmp72 [V86,T00] ( 10,132 ) int -> r12 V12._index(offs=0x08) P-INDEP "field V12._index (fldOffset=0x8)"
; V87 tmp73 [V87,T51] ( 3, 6 ) ref -> r15 V30.array(offs=0x00) P-INDEP "field V30.array (fldOffset=0x0)"
; V88 tmp74 [V88,T57] ( 2, 4 ) ref -> r15 V31._array(offs=0x00) P-INDEP "field V31._array (fldOffset=0x0)"
;* V89 tmp75 [V89,T64] ( 0, 0 ) int -> zero-ref V31._index(offs=0x08) P-INDEP "field V31._index (fldOffset=0x8)"
@@ -103,11 +103,11 @@
;* V93 tmp79 [V93 ] ( 0, 0 ) int -> zero-ref V38.<Length>k__BackingField(offs=0x04) P-INDEP "field V38.<Length>k__BackingField (fldOffset=0x4)"
; V94 tmp80 [V94,T43] ( 2, 16 ) int -> rdx V40.<Start>k__BackingField(offs=0x00) P-INDEP "field V40.<Start>k__BackingField (fldOffset=0x0)"
; V95 tmp81 [V95,T44] ( 2, 16 ) int -> r8 V40.<Length>k__BackingField(offs=0x04) P-INDEP "field V40.<Length>k__BackingField (fldOffset=0x4)"
-; V96 tmp82 [V96,T52] ( 3, 6 ) ref -> r14 V54.array(offs=0x00) P-INDEP "field V54.array (fldOffset=0x0)"
-; V97 tmp83 [V97,T58] ( 2, 4 ) ref -> r14 V55._array(offs=0x00) P-INDEP "field V55._array (fldOffset=0x0)"
+; V96 tmp82 [V96,T52] ( 3, 6 ) ref -> r15 V54.array(offs=0x00) P-INDEP "field V54.array (fldOffset=0x0)"
+; V97 tmp83 [V97,T58] ( 2, 4 ) ref -> r15 V55._array(offs=0x00) P-INDEP "field V55._array (fldOffset=0x0)"
;* V98 tmp84 [V98,T65] ( 0, 0 ) int -> zero-ref V55._index(offs=0x08) P-INDEP "field V55._index (fldOffset=0x8)"
-; V99 tmp85 [V99,T53] ( 3, 6 ) ref -> rcx V59.array(offs=0x00) P-INDEP "field V59.array (fldOffset=0x0)"
-; V100 tmp86 [V100,T59] ( 2, 4 ) ref -> rcx V60._array(offs=0x00) P-INDEP "field V60._array (fldOffset=0x0)"
+; V99 tmp85 [V99,T53] ( 3, 6 ) ref -> r15 V59.array(offs=0x00) P-INDEP "field V59.array (fldOffset=0x0)"
+; V100 tmp86 [V100,T59] ( 2, 4 ) ref -> r15 V60._array(offs=0x00) P-INDEP "field V60._array (fldOffset=0x0)"
;* V101 tmp87 [V101,T66] ( 0, 0 ) int -> zero-ref V60._index(offs=0x08) P-INDEP "field V60._index (fldOffset=0x8)"
; V102 tmp88 [V102 ] ( 3, 8.50) int -> [rsp+58H] do-not-enreg[X] addr-exposed V74._count(offs=0x00) P-DEP "field V74._count (fldOffset=0x0)"
; V103 tmp89 [V103 ] ( 4, 10 ) ref -> [rsp+50H] do-not-enreg[X] addr-exposed V75._source(offs=0x00) P-DEP "field V75._source (fldOffset=0x0)"
@@ -121,7 +121,7 @@
; V111 cse2 [V111,T54] ( 3, 6 ) ref -> r8 "CSE - conservative"
; V112 cse3 [V112,T34] ( 3, 20 ) int -> rbx "CSE - moderate"
; V113 cse4 [V113,T35] ( 3, 20 ) int -> r12 "CSE - moderate"
-; V114 cse5 [V114,T36] ( 3, 20 ) int -> r12 "CSE - moderate"
+; V114 cse5 [V114,T36] ( 3, 20 ) int -> r13 "CSE - moderate"
; TEMP_01 ref -> [rsp+0x80]
;
; Lcl frame size = 136
@@ -181,7 +181,7 @@ G_M12180_IG04: ; bbWeight=2, gcrefRegs=0060 {rbp rsi}, byrefRegs=0002 {rc
mov rax, gword ptr [rcx]
; gcrRegs +[rax]
cmp dword ptr [rax+20H], 0
- jne G_M12180_IG47
+ jne G_M12180_IG46
;; size=13 bbWeight=2 PerfScore 12.00
G_M12180_IG05: ; bbWeight=8, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
@@ -191,7 +191,7 @@ G_M12180_IG05: ; bbWeight=8, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {},
andn ecx, ecx, eax
lea eax, [rcx-01H]
andn edi, eax, ecx
- je G_M12180_IG42
+ je G_M12180_IG41
;; size=27 bbWeight=8 PerfScore 38.00
G_M12180_IG06: ; bbWeight=4, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
cmp edi, 0x800
@@ -246,7 +246,7 @@ G_M12180_IG12: ; bbWeight=2, gcrefRegs=0060 {rbp rsi}, byrefRegs=0008 {rb
mov rcx, gword ptr [rsp+50H]
; gcrRegs +[rcx]
cmp dword ptr [rcx+20H], 0
- jne G_M12180_IG49
+ jne G_M12180_IG48
;; size=15 bbWeight=2 PerfScore 10.00
G_M12180_IG13: ; bbWeight=4, gcrefRegs=0060 {rbp rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rcx]
@@ -428,7 +428,7 @@ G_M12180_IG25: ; bbWeight=8, gcrefRegs=8068 {rbx rbp rsi r15}, byrefRegs=
; gcr arg pop 0
mov r9, rax
test r9, r9
- je G_M12180_IG48
+ je G_M12180_IG47
mov rcx, gword ptr [rax]
; gcrRegs +[rcx]
mov r9, gword ptr [rbx+08H]
@@ -512,30 +512,30 @@ G_M12180_IG29: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
; gcrRegs +[rcx]
cmp byte ptr [rcx+8AH], 0
je G_M12180_IG33
- lea r14, bword ptr [rbx+10H]
- ; byrRegs +[r14]
+ lea r15, bword ptr [rbx+10H]
+ ; byrRegs +[r15]
mov rcx, 0xD1FFAB1E ; System.Action`1[int]
; gcrRegs -[rcx]
call CORINFO_HELP_NEWSFAST
; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- mov rdx, gword ptr [r14]
+ mov r12, rax
+ ; gcrRegs +[r12]
+ mov rdx, gword ptr [r15]
; gcrRegs +[rdx]
- mov r14d, dword ptr [rdx+08H]
- ; byrRegs -[r14]
- lea rcx, bword ptr [r15+08H]
+ mov r15d, dword ptr [rdx+08H]
+ ; byrRegs -[r15]
+ lea rcx, bword ptr [r12+08H]
; byrRegs +[rcx]
mov rdx, rbx
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
mov rcx, 0xD1FFAB1E ; code for <unknown method>
- mov qword ptr [r15+18H], rcx
- mov rcx, r15
+ mov qword ptr [r12+18H], rcx
+ mov rcx, r12
; gcrRegs +[rcx]
call [Roslyn.Utilities.UICultureUtilities:WithCurrentUICulture[int](System.Action`1[int]):System.Action`1[int]]
- ; gcrRegs -[rcx r15] +[rax]
+ ; gcrRegs -[rcx r12] +[rax]
; gcr arg pop 0
mov r9, rax
; gcrRegs +[r9]
@@ -546,22 +546,22 @@ G_M12180_IG29: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
; gcr arg write
lea rcx, [rsp+68H]
; gcrRegs -[rcx]
- mov r8d, r14d
+ mov r8d, r15d
xor edx, edx
call [Roslyn.Utilities.RoslynParallel:For(int,int,System.Action`1[int],System.Threading.CancellationToken):System.Threading.Tasks.ParallelLoopResult]
; gcrRegs -[rax r9]
; gcr arg pop 0
- mov r14, gword ptr [rbx+10H]
- ; gcrRegs +[r14]
- mov ebx, dword ptr [r14+08H]
+ mov r15, gword ptr [rbx+10H]
+ ; gcrRegs +[r15]
+ mov ebx, dword ptr [r15+08H]
; gcrRegs -[rbx]
- xor r15d, r15d
+ xor r12d, r12d
test ebx, ebx
- jle G_M12180_IG39
- ;; size=168 bbWeight=2 PerfScore 83.00
-G_M12180_IG30: ; bbWeight=16, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref, isz
- mov ecx, r15d
- mov rcx, gword ptr [r14+8*rcx+10H]
+ jle G_M12180_IG38
+ ;; size=170 bbWeight=2 PerfScore 83.00
+G_M12180_IG30: ; bbWeight=16, gcrefRegs=8060 {rbp rsi r15}, byrefRegs=0000 {}, byref, isz
+ mov ecx, r12d
+ mov rcx, gword ptr [r15+8*rcx+10H]
; gcrRegs +[rcx]
mov edx, 0x3FFFF
mov rax, qword ptr [rcx]
@@ -570,14 +570,14 @@ G_M12180_IG30: ; bbWeight=16, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=000
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M12180_IG43
- inc r15d
- cmp ebx, r15d
+ je G_M12180_IG42
+ inc r12d
+ cmp ebx, r12d
jg SHORT G_M12180_IG30
;; size=39 bbWeight=16 PerfScore 196.00
G_M12180_IG31: ; bbWeight=2, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
- jmp SHORT G_M12180_IG39
+ ; gcrRegs -[r15]
+ jmp SHORT G_M12180_IG38
;; size=2 bbWeight=2 PerfScore 4.00
G_M12180_IG32: ; bbWeight=4, gcVars=00000000000000000000000000000020 {V11}, gcrefRegs=C068 {rbx rbp rsi r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx r14-r15]
@@ -589,19 +589,16 @@ G_M12180_IG32: ; bbWeight=4, gcVars=00000000000000000000000000000020 {V11
G_M12180_IG33: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax r14-r15]
; GC ptr vars -{V05 V11}
- mov rcx, gword ptr [rbx+10H]
- ; gcrRegs +[rcx]
- mov r12d, dword ptr [rcx+08H]
- mov r13, rcx
- ; gcrRegs +[r13]
- xor r15d, r15d
- test r12d, r12d
- jle SHORT G_M12180_IG39
- ;; size=19 bbWeight=2 PerfScore 11.50
-G_M12180_IG34: ; bbWeight=16, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov ecx, r15d
- mov rax, gword ptr [r13+8*rcx+10H]
+ mov r15, gword ptr [rbx+10H]
+ ; gcrRegs +[r15]
+ mov r13d, dword ptr [r15+08H]
+ xor r12d, r12d
+ test r13d, r13d
+ jle SHORT G_M12180_IG38
+ ;; size=16 bbWeight=2 PerfScore 11.00
+G_M12180_IG34: ; bbWeight=16, gcrefRegs=8068 {rbx rbp rsi r15}, byrefRegs=0000 {}, byref, isz
+ mov ecx, r12d
+ mov rax, gword ptr [r15+8*rcx+10H]
; gcrRegs +[rax]
mov gword ptr [rsp+30H], rax
; GC ptr vars +{V13}
@@ -618,7 +615,7 @@ G_M12180_IG34: ; bbWeight=16, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs
test r14d, r14d
je SHORT G_M12180_IG36
;; size=39 bbWeight=16 PerfScore 220.00
-G_M12180_IG35: ; bbWeight=8, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref, isz
+G_M12180_IG35: ; bbWeight=8, gcrefRegs=8068 {rbx rbp rsi r15}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rsp+30H]
; gcrRegs +[rcx]
mov edx, 0x3FFFF
@@ -630,25 +627,23 @@ G_M12180_IG35: ; bbWeight=8, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=
; gcr arg pop 0
jmp SHORT G_M12180_IG37
;; size=22 bbWeight=8 PerfScore 82.00
-G_M12180_IG36: ; bbWeight=8, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref
+G_M12180_IG36: ; bbWeight=8, gcrefRegs=8068 {rbx rbp rsi r15}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=8 PerfScore 2.00
-G_M12180_IG37: ; bbWeight=16, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref, isz
+G_M12180_IG37: ; bbWeight=16, gcrefRegs=8068 {rbx rbp rsi r15}, byrefRegs=0000 {}, byref, isz
movzx r14, al
- inc r15d
...
+32 (+4.83%) : 25207.dasm - System.Guid:TryParseExact(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref):bool
@@ -11,7 +11,7 @@
; V01 arg1 [V01,T01] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 arg2 [V02,T02] ( 5, 3.50) byref -> rsi single-def
; V03 loc0 [V03 ] ( 10, 5 ) struct (24) [rsp+48H] do-not-enreg[XSF] addr-exposed ld-addr-op
-; V04 loc1 [V04,T07] ( 6, 3 ) bool -> rax
+; V04 loc1 [V04,T07] ( 7, 3.50) bool -> r14
; V05 loc2 [V05,T08] ( 7, 3.50) ushort -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07 ] ( 5, 2.50) struct (16) [rsp+38H] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp"
@@ -33,16 +33,16 @@
;* V23 tmp17 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp"
;* V24 tmp18 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
-; V26 tmp20 [V26,T17] ( 3, 1.50) bool -> rax "Inline return value spill temp"
+; V26 tmp20 [V26,T17] ( 3, 1.50) bool -> r14 "Inline return value spill temp"
;* V27 tmp21 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V28 tmp22 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument"
;* V29 tmp23 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
-; V30 tmp24 [V30,T13] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
-; V31 tmp25 [V31,T18] ( 3, 1.50) bool -> rax "Inline return value spill temp"
+; V30 tmp24 [V30,T13] ( 2, 2 ) byref -> r14 single-def "Inlining Arg"
+; V31 tmp25 [V31,T18] ( 3, 1.50) bool -> r14 "Inline return value spill temp"
;* V32 tmp26 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp27 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument"
;* V34 tmp28 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
-; V35 tmp29 [V35,T14] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V35 tmp29 [V35,T14] ( 2, 2 ) byref -> r14 single-def "Inlining Arg"
; V36 tmp30 [V36,T06] ( 8, 4.50) byref -> rbx V80._reference(offs=0x00) P-INDEP "field V00._reference (fldOffset=0x0)"
; V37 tmp31 [V37,T03] ( 9, 5 ) int -> rbp V80._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)"
; V38 tmp32 [V38,T20] ( 2, 1.50) byref -> rdi single-def V81._reference(offs=0x00) P-INDEP "field V01._reference (fldOffset=0x0)"
@@ -75,17 +75,17 @@
;* V65 tmp59 [V65 ] ( 0, 0 ) int -> zero-ref V24._length(offs=0x08) P-INDEP "field V24._length (fldOffset=0x8)"
;* V66 tmp60 [V66 ] ( 0, 0 ) byref -> zero-ref single-def V25._reference(offs=0x00) P-INDEP "field V25._reference (fldOffset=0x0)"
;* V67 tmp61 [V67 ] ( 0, 0 ) int -> zero-ref V25._length(offs=0x08) P-INDEP "field V25._length (fldOffset=0x8)"
-; V68 tmp62 [V68,T11] ( 4, 2 ) byref -> rbx single-def V27._reference(offs=0x00) P-INDEP "field V27._reference (fldOffset=0x0)"
+; V68 tmp62 [V68,T11] ( 4, 2 ) byref -> r14 single-def V27._reference(offs=0x00) P-INDEP "field V27._reference (fldOffset=0x0)"
; V69 tmp63 [V69,T25] ( 2, 1 ) int -> rcx V27._length(offs=0x08) P-INDEP "field V27._length (fldOffset=0x8)"
;* V70 tmp64 [V70 ] ( 0, 0 ) byref -> zero-ref V28._reference(offs=0x00) P-INDEP "field V28._reference (fldOffset=0x0)"
;* V71 tmp65 [V71 ] ( 0, 0 ) int -> zero-ref V28._length(offs=0x08) P-INDEP "field V28._length (fldOffset=0x8)"
-; V72 tmp66 [V72,T21] ( 2, 1 ) byref -> rbx single-def V29._reference(offs=0x00) P-INDEP "field V29._reference (fldOffset=0x0)"
+; V72 tmp66 [V72,T21] ( 2, 1 ) byref -> r14 single-def V29._reference(offs=0x00) P-INDEP "field V29._reference (fldOffset=0x0)"
;* V73 tmp67 [V73,T26] ( 0, 0 ) int -> zero-ref V29._length(offs=0x08) P-INDEP "field V29._length (fldOffset=0x8)"
-; V74 tmp68 [V74,T12] ( 4, 2 ) byref -> rdi single-def V32._reference(offs=0x00) P-INDEP "field V32._reference (fldOffset=0x0)"
+; V74 tmp68 [V74,T12] ( 4, 2 ) byref -> r14 single-def V32._reference(offs=0x00) P-INDEP "field V32._reference (fldOffset=0x0)"
; V75 tmp69 [V75,T19] ( 3, 1.50) int -> rax V32._length(offs=0x08) P-INDEP "field V32._length (fldOffset=0x8)"
;* V76 tmp70 [V76 ] ( 0, 0 ) byref -> zero-ref V33._reference(offs=0x00) P-INDEP "field V33._reference (fldOffset=0x0)"
;* V77 tmp71 [V77 ] ( 0, 0 ) int -> zero-ref V33._length(offs=0x08) P-INDEP "field V33._length (fldOffset=0x8)"
-; V78 tmp72 [V78,T22] ( 2, 1 ) byref -> rdi single-def V34._reference(offs=0x00) P-INDEP "field V34._reference (fldOffset=0x0)"
+; V78 tmp72 [V78,T22] ( 2, 1 ) byref -> r14 single-def V34._reference(offs=0x00) P-INDEP "field V34._reference (fldOffset=0x0)"
;* V79 tmp73 [V79,T27] ( 0, 0 ) int -> zero-ref V34._length(offs=0x08) P-INDEP "field V34._length (fldOffset=0x8)"
;* V80 tmp74 [V80 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
;* V81 tmp75 [V81 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref"
@@ -210,14 +210,15 @@ G_M56778_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {rsi rd
vmovdqu xmmword ptr [rsp+48H], xmm0
vmovdqu xmmword ptr [rsp+4CH], xmm0
mov byte ptr [rsp+58H], 0
+ xor r14d, r14d
movzx rax, word ptr [rdi]
or eax, 32
cmp eax, 100
ja SHORT G_M56778_IG13
cmp eax, 98
- je SHORT G_M56778_IG15
+ je G_M56778_IG15
cmp eax, 100
- jne G_M56778_IG24
+ jne G_M56778_IG22
mov bword ptr [rsp+28H], rbx
mov dword ptr [rsp+30H], ebp
lea rcx, [rsp+28H]
@@ -225,8 +226,9 @@ G_M56778_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {rsi rd
call [<unknown method>]
; byrRegs -[rbx rdi]
; gcr arg pop 0
+ mov r14d, eax
jmp G_M56778_IG22
- ;; size=85 bbWeight=0.50 PerfScore 9.67
+ ;; size=95 bbWeight=0.50 PerfScore 9.92
G_M56778_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
; byrRegs +[rbx]
cmp eax, 110
@@ -234,7 +236,7 @@ G_M56778_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
cmp eax, 112
je G_M56778_IG19
cmp eax, 120
- jne G_M56778_IG24
+ jne G_M56778_IG22
mov bword ptr [rsp+28H], rbx
mov dword ptr [rsp+30H], ebp
lea rcx, [rsp+28H]
@@ -242,8 +244,9 @@ G_M56778_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
call [<unknown method>]
; byrRegs -[rbx]
; gcr arg pop 0
+ mov r14d, eax
jmp G_M56778_IG22
- ;; size=53 bbWeight=0.50 PerfScore 5.88
+ ;; size=56 bbWeight=0.50 PerfScore 6.00
G_M56778_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
; byrRegs +[rbx]
mov bword ptr [rsp+28H], rbx
@@ -253,88 +256,93 @@ G_M56778_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
call [<unknown method>]
; byrRegs -[rbx]
; gcr arg pop 0
+ mov r14d, eax
jmp G_M56778_IG22
- ;; size=30 bbWeight=0.50 PerfScore 4.00
+ ;; size=33 bbWeight=0.50 PerfScore 4.12
G_M56778_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
; byrRegs +[rbx]
+ mov r14, rbx
+ ; byrRegs +[r14]
mov ecx, ebp
cmp ecx, 38
jne SHORT G_M56778_IG16
- cmp word ptr [rbx], 123
+ cmp word ptr [r14], 123
jne SHORT G_M56778_IG16
- cmp word ptr [rbx+4AH], 125
+ cmp word ptr [r14+4AH], 125
je SHORT G_M56778_IG17
- ;; size=20 bbWeight=0.50 PerfScore 4.75
+ ;; size=25 bbWeight=0.50 PerfScore 4.88
G_M56778_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
- ; byrRegs -[rbx]
+ ; byrRegs -[rbx r14]
lea rcx, [rsp+48H]
mov edx, 8
call [<unknown method>]
; gcr arg pop 0
- xor eax, eax
+ xor r14d, r14d
jmp SHORT G_M56778_IG18
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M56778_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
- ; byrRegs +[rbx]
- add rbx, 2
+ ;; size=21 bbWeight=0.50 PerfScore 3.00
+G_M56778_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4040 {rsi r14}, byref
+ ; byrRegs +[r14]
+ add r14, 2
mov ecx, 1
call [<unknown method>]
; gcr arg pop 0
- mov bword ptr [rsp+28H], rbx
+ mov bword ptr [rsp+28H], r14
mov dword ptr [rsp+30H], 36
lea rcx, [rsp+28H]
lea rdx, [rsp+48H]
call [<unknown method>]
- ; byrRegs -[rbx]
+ ; byrRegs -[r14]
; gcr arg pop 0
- ;; size=44 bbWeight=0.50 PerfScore 4.75
+ mov r14d, eax
+ ;; size=47 bbWeight=0.50 PerfScore 4.88
G_M56778_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
jmp SHORT G_M56778_IG22
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M56778_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
; byrRegs +[rbx]
- mov rdi, rbx
- ; byrRegs +[rdi]
+ mov r14, rbx
+ ; byrRegs +[r14]
mov eax, ebp
cmp eax, 38
jne SHORT G_M56778_IG20
- cmp word ptr [rdi], 40
+ cmp word ptr [r14], 40
jne SHORT G_M56778_IG20
- cmp word ptr [rdi+4AH], 41
+ cmp word ptr [r14+4AH], 41
je SHORT G_M56778_IG21
- ;; size=23 bbWeight=0.50 PerfScore 4.88
+ ;; size=25 bbWeight=0.50 PerfScore 4.88
G_M56778_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
- ; byrRegs -[rbx rdi]
+ ; byrRegs -[rbx r14]
lea rcx, [rsp+48H]
mov edx, 8
call [<unknown method>]
; gcr arg pop 0
- xor eax, eax
+ xor r14d, r14d
jmp SHORT G_M56778_IG22
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M56778_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {rsi rdi}, byref, isz
- ; byrRegs +[rdi]
+ ;; size=21 bbWeight=0.50 PerfScore 3.00
+G_M56778_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4040 {rsi r14}, byref, isz
+ ; byrRegs +[r14]
cmp eax, 37
jb SHORT G_M56778_IG26
- add rdi, 2
+ add r14, 2
mov ecx, 1
call [<unknown method>]
; gcr arg pop 0
- mov bword ptr [rsp+28H], rdi
+ mov bword ptr [rsp+28H], r14
mov dword ptr [rsp+30H], 36
lea rcx, [rsp+28H]
lea rdx, [rsp+48H]
call [<unknown method>]
- ; byrRegs -[rdi]
+ ; byrRegs -[r14]
; gcr arg pop 0
- ;; size=49 bbWeight=0.50 PerfScore 5.38
+ mov r14d, eax
+ ;; size=52 bbWeight=0.50 PerfScore 5.50
G_M56778_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
- test eax, eax
+ test r14d, r14d
je SHORT G_M56778_IG24
vmovups xmm0, xmmword ptr [rsp+48H]
vmovups xmmword ptr [rsi], xmm0
mov eax, 1
- ;; size=19 bbWeight=0.50 PerfScore 3.25
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
G_M56778_IG23: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 96
pop rbx
@@ -365,7 +373,7 @@ G_M56778_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 663, prolog size 35, PerfScore 169.63, instruction count 180, allocated bytes for code 663 (MethodHash=ca302235) for method System.Guid:TryParseExact(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref):bool
+; Total bytes of code 695, prolog size 35, PerfScore 173.71, instruction count 187, allocated bytes for code 695 (MethodHash=ca302235) for method System.Guid:TryParseExact(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref):bool
; ============================================================
Unwind Info:
+13 (+4.98%) : 15513.dasm - FSharp.Compiler.CodeAnalysis.ParseAndCheckFile:getLightSyntaxStatus(System.String,FSharp.Compiler.CodeAnalysis.FSharpParsingOptions):FSharp.Compiler.Lexhelp+LightSyntaxStatus
@@ -8,25 +8,25 @@
; Final local variable assignments
;
; V00 arg0 [V00,T05] ( 4, 4 ) ref -> rax class-hnd single-def
-; V01 arg1 [V01,T08] ( 4, 3.50) ref -> rsi class-hnd single-def
-; V02 loc0 [V02,T12] ( 2, 2 ) ref -> rdi class-hnd single-def
+; V01 arg1 [V01,T07] ( 4, 3 ) ref -> rsi class-hnd single-def
+; V02 loc0 [V02,T13] ( 2, 2 ) ref -> rdi class-hnd single-def
;* V03 loc1 [V03 ] ( 0, 0 ) bool -> zero-ref single-def
; V04 loc2 [V04,T15] ( 2, 2 ) bool -> rsi single-def
-; V05 loc3 [V05,T13] ( 2, 2 ) ref -> rsi class-hnd single-def
+; V05 loc3 [V05,T16] ( 2, 1 ) ref -> rsi class-hnd single-def
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+00H] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T06] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp"
; V09 tmp2 [V09,T14] ( 2, 2 ) ref -> rsi class-hnd single-def "impAppendStmt"
-; V10 tmp3 [V10,T11] ( 3, 2.50) int -> rsi
+; V10 tmp3 [V10,T11] ( 3, 2 ) int -> rsi
; V11 tmp4 [V11,T02] ( 5, 10 ) ref -> rax class-hnd exact single-def "NewObj constructor temp"
-; V12 tmp5 [V12,T09] ( 2, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg"
-;* V13 tmp6 [V13,T16] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
+; V12 tmp5 [V12,T08] ( 2, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg"
+; V13 tmp6 [V13,T12] ( 3, 2 ) bool -> rcx "Inline return value spill temp"
; V14 tmp7 [V14,T00] ( 4, 34 ) ref -> rax class-hnd "Inlining Arg"
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp"
; V16 tmp9 [V16,T04] ( 2, 8 ) ref -> rdi class-hnd "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp"
; V18 tmp11 [V18,T03] ( 2, 10 ) ref -> rbx class-hnd single-def "Inlining Arg"
-; V19 tmp12 [V19,T07] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp"
+; V19 tmp12 [V19,T09] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp"
; V20 tmp13 [V20,T10] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp"
; V21 cse0 [V21,T01] ( 3, 20 ) ref -> rdi "CSE - aggressive"
;
@@ -74,7 +74,7 @@ G_M15017_IG03: ; bbWeight=8, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000
mov rdi, gword ptr [rax+10H]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M15017_IG06
+ je SHORT G_M15017_IG05
;; size=9 bbWeight=8 PerfScore 26.00
G_M15017_IG04: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rax+08H]
@@ -87,13 +87,24 @@ G_M15017_IG04: ; bbWeight=4, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M15017_IG05
+ jne SHORT G_M15017_IG06
mov rax, rdi
; gcrRegs +[rax]
jmp SHORT G_M15017_IG03
;; size=26 bbWeight=4 PerfScore 43.00
-G_M15017_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M15017_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rbx rdi]
+ xor ecx, ecx
+ jmp SHORT G_M15017_IG07
+ ;; size=4 bbWeight=0.50 PerfScore 1.12
+G_M15017_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ mov ecx, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M15017_IG07: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ test ecx, ecx
+ je SHORT G_M15017_IG09
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M15017_IG08: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rsi+28H]
mov rcx, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[bool]
call CORINFO_HELP_NEWSFAST
@@ -111,9 +122,9 @@ G_M15017_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
xor esi, esi
test eax, eax
sete sil
- jmp SHORT G_M15017_IG07
- ;; size=55 bbWeight=1 PerfScore 11.50
-G_M15017_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M15017_IG10
+ ;; size=55 bbWeight=0.50 PerfScore 5.75
+G_M15017_IG09: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
mov rsi, gword ptr [rsi+28H]
mov rcx, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[bool]
@@ -131,7 +142,7 @@ G_M15017_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
; gcr arg pop 0
mov esi, eax
;; size=47 bbWeight=0.50 PerfScore 4.12
-G_M15017_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15017_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rsi, sil
mov rcx, 0xD1FFAB1E ; FSharp.Compiler.Lexhelp+LightSyntaxStatus
call CORINFO_HELP_NEWSFAST
@@ -143,7 +154,7 @@ G_M15017_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
mov gword ptr [rax+08H], rdx
;; size=33 bbWeight=1 PerfScore 4.75
-G_M15017_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M15017_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
@@ -151,7 +162,7 @@ G_M15017_IG08: ; bbWeight=1, epilog, nogc, extend
ret
;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 261, prolog size 7, PerfScore 136.23, instruction count 64, allocated bytes for code 261 (MethodHash=5d76c556) for method FSharp.Compiler.CodeAnalysis.ParseAndCheckFile:getLightSyntaxStatus(System.String,FSharp.Compiler.CodeAnalysis.FSharpParsingOptions):FSharp.Compiler.Lexhelp+LightSyntaxStatus
+; Total bytes of code 274, prolog size 7, PerfScore 134.28, instruction count 69, allocated bytes for code 274 (MethodHash=5d76c556) for method FSharp.Compiler.CodeAnalysis.ParseAndCheckFile:getLightSyntaxStatus(System.String,FSharp.Compiler.CodeAnalysis.FSharpParsingOptions):FSharp.Compiler.Lexhelp+LightSyntaxStatus
; ============================================================
Unwind Info:
+33 (+5.46%) : 1078.dasm - BepuPhysics.CollisionDetection.NarrowPhase:RegisterContactConstraintAccessor(BepuPhysics.CollisionDetection.ContactConstraintAccessor):this
@@ -17,51 +17,51 @@
; V07 tmp3 [V07,T06] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
; V09 tmp5 [V09,T11] ( 3, 0 ) int -> rbp "Inlining Arg"
-; V10 tmp6 [V10,T14] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
-;* V11 tmp7 [V11,T28] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V10 tmp6 [V10,T17] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
+; V11 tmp7 [V11,T12] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V14 tmp10 [V14,T15] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V14 tmp10 [V14,T18] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument"
; V16 tmp12 [V16,T07] ( 4, 0 ) int -> rcx "Inlining Arg"
;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
-; V18 tmp14 [V18,T12] ( 3, 0 ) int -> rbp "Inlining Arg"
-; V19 tmp15 [V19,T16] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
-;* V20 tmp16 [V20,T29] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V18 tmp14 [V18,T13] ( 3, 0 ) int -> rbp "Inlining Arg"
+; V19 tmp15 [V19,T19] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
+; V20 tmp16 [V20,T14] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V23 tmp19 [V23,T17] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V23 tmp19 [V23,T20] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V24 tmp20 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument"
; V25 tmp21 [V25,T08] ( 4, 0 ) int -> rsi "Inlining Arg"
;* V26 tmp22 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp"
-; V27 tmp23 [V27,T13] ( 3, 0 ) int -> rbx "Inlining Arg"
-; V28 tmp24 [V28,T18] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
-;* V29 tmp25 [V29,T30] ( 0, 0 ) bool -> zero-ref "Inline stloc first use temp"
+; V27 tmp23 [V27,T15] ( 3, 0 ) int -> rbx "Inlining Arg"
+; V28 tmp24 [V28,T21] ( 2, 0 ) byref -> rdi single-def "Inlining Arg"
+; V29 tmp25 [V29,T16] ( 3, 0 ) bool -> rcx "Inline stloc first use temp"
;* V30 tmp26 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg"
;* V31 tmp27 [V31 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V32 tmp28 [V32,T19] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
+; V32 tmp28 [V32,T22] ( 2, 0 ) byref -> rcx single-def "Inlining Arg"
;* V33 tmp29 [V33 ] ( 0, 0 ) byref -> zero-ref V06._reference(offs=0x00) P-INDEP "field V06._reference (fldOffset=0x0)"
;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref V06._length(offs=0x08) P-INDEP "field V06._length (fldOffset=0x8)"
-; V35 tmp31 [V35,T20] ( 2, 0 ) byref -> rdi single-def V08._reference(offs=0x00) P-INDEP "field V08._reference (fldOffset=0x0)"
+; V35 tmp31 [V35,T23] ( 2, 0 ) byref -> rdi single-def V08._reference(offs=0x00) P-INDEP "field V08._reference (fldOffset=0x0)"
;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref V08._length(offs=0x08) P-INDEP "field V08._length (fldOffset=0x8)"
-; V37 tmp33 [V37,T21] ( 2, 0 ) byref -> rdi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
+; V37 tmp33 [V37,T24] ( 2, 0 ) byref -> rdi single-def V12._reference(offs=0x00) P-INDEP "field V12._reference (fldOffset=0x0)"
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref V12._length(offs=0x08) P-INDEP "field V12._length (fldOffset=0x8)"
;* V39 tmp35 [V39 ] ( 0, 0 ) byref -> zero-ref V15._reference(offs=0x00) P-INDEP "field V15._reference (fldOffset=0x0)"
;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref V15._length(offs=0x08) P-INDEP "field V15._length (fldOffset=0x8)"
-; V41 tmp37 [V41,T22] ( 2, 0 ) byref -> rdi single-def V17._reference(offs=0x00) P-INDEP "field V17._reference (fldOffset=0x0)"
+; V41 tmp37 [V41,T25] ( 2, 0 ) byref -> rdi single-def V17._reference(offs=0x00) P-INDEP "field V17._reference (fldOffset=0x0)"
;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref V17._length(offs=0x08) P-INDEP "field V17._length (fldOffset=0x8)"
-; V43 tmp39 [V43,T23] ( 2, 0 ) byref -> rdi single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
+; V43 tmp39 [V43,T26] ( 2, 0 ) byref -> rdi single-def V21._reference(offs=0x00) P-INDEP "field V21._reference (fldOffset=0x0)"
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref V21._length(offs=0x08) P-INDEP "field V21._length (fldOffset=0x8)"
;* V45 tmp41 [V45 ] ( 0, 0 ) byref -> zero-ref V24._reference(offs=0x00) P-INDEP "field V24._reference (fldOffset=0x0)"
;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref V24._length(offs=0x08) P-INDEP "field V24._length (fldOffset=0x8)"
-; V47 tmp43 [V47,T24] ( 2, 0 ) byref -> rdi single-def V26._reference(offs=0x00) P-INDEP "field V26._reference (fldOffset=0x0)"
+; V47 tmp43 [V47,T27] ( 2, 0 ) byref -> rdi single-def V26._reference(offs=0x00) P-INDEP "field V26._reference (fldOffset=0x0)"
;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref V26._length(offs=0x08) P-INDEP "field V26._length (fldOffset=0x8)"
-; V49 tmp45 [V49,T25] ( 2, 0 ) byref -> rdi single-def V30._reference(offs=0x00) P-INDEP "field V30._reference (fldOffset=0x0)"
+; V49 tmp45 [V49,T28] ( 2, 0 ) byref -> rdi single-def V30._reference(offs=0x00) P-INDEP "field V30._reference (fldOffset=0x0)"
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref V30._length(offs=0x08) P-INDEP "field V30._length (fldOffset=0x8)"
; V51 tmp47 [V51,T02] ( 3, 6 ) ref -> rdx single-def "arr expr"
; V52 tmp48 [V52,T10] ( 3, 0 ) ref -> r8 single-def "arr expr"
-; V53 tmp49 [V53,T26] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V54 tmp50 [V54,T27] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V53 tmp49 [V53,T29] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
+; V54 tmp50 [V54,T30] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V55 cse0 [V55,T04] ( 3, 3 ) ref -> rcx "CSE - aggressive"
; V56 cse1 [V56,T05] ( 3, 2.50) ref -> rdx "CSE - aggressive"
;
@@ -117,7 +117,7 @@ G_M57740_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
mov rdx, rcx
; gcrRegs +[rdx]
cmp ebx, dword ptr [rdx+08H]
- jae G_M57740_IG16
+ jae G_M57740_IG19
mov r8d, ebx
cmp gword ptr [rdx+8*r8+10H], 0
jne SHORT G_M57740_IG07
@@ -147,7 +147,7 @@ G_M57740_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
; gcr arg pop 0
mov ecx, dword ptr [rsp+30H]
cmp ecx, dword ptr [rsp+40H]
- ja G_M57740_IG12
+ ja G_M57740_IG14
mov rax, bword ptr [rsp+38H]
; byrRegs +[rax]
mov edx, ecx
@@ -161,6 +161,7 @@ G_M57740_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
call [System.Diagnostics.Debug:Assert(bool)]
; byrRegs -[rax]
; gcr arg pop 0
+ xor ecx, ecx
cmp ebp, 37
jb SHORT G_M57740_IG08
mov rcx, 0xD1FFAB1E
@@ -171,14 +172,19 @@ G_M57740_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
vmovdqu ymmword ptr [rdi], ymm0
vmovdqu ymmword ptr [rdi+20H], ymm1
vmovdqu xmmword ptr [rdi+3AH], xmm2
- mov ecx, dword ptr [rsp+30H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=116 bbWeight=0 PerfScore 0.00
+G_M57740_IG08: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rdi]
+ test ecx, ecx
+ je SHORT G_M57740_IG09
+ mov ecx, dword ptr [rsp+30H]
add ecx, 37
mov dword ptr [rsp+30H], ecx
- jmp SHORT G_M57740_IG09
- ;; size=122 bbWeight=0 PerfScore 0.00
-G_M57740_IG08: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ jmp SHORT G_M57740_IG10
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M57740_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
lea rcx, [rsp+20H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -186,14 +192,14 @@ G_M57740_IG08: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=21 bbWeight=0 PerfScore 0.00
-G_M57740_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M57740_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
lea rcx, [rsp+20H]
mov edx, ebx
call [<unknown method>]
; gcr arg pop 0
mov ecx, dword ptr [rsp+30H]
cmp ecx, dword ptr [rsp+40H]
- ja G_M57740_IG12
+ ja G_M57740_IG14
mov rax, bword ptr [rsp+38H]
; byrRegs +[rax]
mov edx, ecx
@@ -207,22 +213,28 @@ G_M57740_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
call [System.Diagnostics.Debug:Assert(bool)]
; byrRegs -[rax]
; gcr arg pop 0
+ xor ecx, ecx
cmp ebp, 30
- jb SHORT G_M57740_IG10
+ jb SHORT G_M57740_IG11
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
vmovdqu ymm0, ymmword ptr [rcx]
vmovdqu ymm1, ymmword ptr [rcx+1CH]
vmovdqu ymmword ptr [rdi], ymm0
vmovdqu ymmword ptr [rdi+1CH], ymm1
- mov ecx, dword ptr [rsp+30H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=97 bbWeight=0 PerfScore 0.00
+G_M57740_IG11: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rdi]
+ test ecx, ecx
+ je SHORT G_M57740_IG12
+ mov ecx, dword ptr [rsp+30H]
add ecx, 30
mov dword ptr [rsp+30H], ecx
- jmp SHORT G_M57740_IG11
- ;; size=103 bbWeight=0 PerfScore 0.00
-G_M57740_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ jmp SHORT G_M57740_IG13
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M57740_IG12: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
lea rcx, [rsp+20H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -230,11 +242,11 @@ G_M57740_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=21 bbWeight=0 PerfScore 0.00
-G_M57740_IG11: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M57740_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov r8, gword ptr [rsi+60H]
; gcrRegs +[r8]
cmp ebx, dword ptr [r8+08H]
- jae G_M57740_IG16
+ jae G_M57740_IG19
mov ecx, ebx
mov r8, gword ptr [r8+8*rcx+10H]
lea rcx, [rsp+20H]
@@ -244,14 +256,14 @@ G_M57740_IG11: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov esi, dword ptr [rsp+30H]
cmp esi, dword ptr [rsp+40H]
- jbe SHORT G_M57740_IG13
+ jbe SHORT G_M57740_IG15
;; size=52 bbWeight=0 PerfScore 0.00
-G_M57740_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57740_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M57740_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57740_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, bword ptr [rsp+38H]
; byrRegs +[rcx]
mov eax, esi
@@ -265,20 +277,26 @@ G_M57740_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
shr ecx, 31
call [System.Diagnostics.Debug:Assert(bool)]
; gcr arg pop 0
+ xor ecx, ecx
cmp ebx, 1
- jb SHORT G_M57740_IG14
+ jb SHORT G_M57740_IG16
mov rcx, 0xD1FFAB1E
; byrRegs +[rcx]
movzx rdx, word ptr [rcx]
mov word ptr [rdi], dx
- mov ecx, dword ptr [rsp+30H]
+ mov ecx, 1
; byrRegs -[rcx]
+ ;; size=58 bbWeight=0 PerfScore 0.00
+G_M57740_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rdi]
+ test ecx, ecx
+ je SHORT G_M57740_IG17
+ mov ecx, dword ptr [rsp+30H]
inc ecx
mov dword ptr [rsp+30H], ecx
- jmp SHORT G_M57740_IG15
- ;; size=63 bbWeight=0 PerfScore 0.00
-G_M57740_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ jmp SHORT G_M57740_IG18
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M57740_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+20H]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -286,7 +304,7 @@ G_M57740_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=21 bbWeight=0 PerfScore 0.00
-G_M57740_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57740_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -310,13 +328,13 @@ G_M57740_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
...
Details
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 1,979 | 116 | 1,819 | 44 | -1,683 | +31,943 |
benchmarks.run.windows.x64.checked.mch | 218 | 4 | 203 | 11 | -16 | +3,268 |
benchmarks.run_pgo.windows.x64.checked.mch | 1,623 | 50 | 1,562 | 11 | -1,134 | +25,412 |
benchmarks.run_tiered.windows.x64.checked.mch | 126 | 1 | 123 | 2 | -4 | +2,425 |
coreclr_tests.run.windows.x64.checked.mch | 1,044 | 31 | 969 | 44 | -265 | +26,280 |
libraries.crossgen2.windows.x64.checked.mch | 34 | 3 | 22 | 9 | -21 | +238 |
libraries.pmi.windows.x64.checked.mch | 781 | 34 | 670 | 77 | -267 | +10,670 |
libraries_tests.pmi.windows.x64.checked.mch | 1,181 | 24 | 1,135 | 22 | -102 | +19,824 |
realworld.run.windows.x64.checked.mch | 84 | 3 | 66 | 15 | -9 | +1,127 |
7,070 | 266 | 6,569 | 235 | -3,501 | +121,187 |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 113,918 | 47,775 | 66,143 | 6,056 (5.32%) | 6,056 (5.32%) |
benchmarks.run.windows.x64.checked.mch | 24,333 | 1,115 | 23,218 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.windows.x64.checked.mch | 79,218 | 36,123 | 43,095 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_tiered.windows.x64.checked.mch | 42,543 | 30,136 | 12,407 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.windows.x64.checked.mch | 537,267 | 326,978 | 210,289 | 6,347 (1.18%) | 6,347 (1.18%) |
libraries.crossgen2.windows.x64.checked.mch | 35,164 | 0 | 35,164 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.windows.x64.checked.mch | 295,189 | 5,593 | 289,596 | 0 (0.00%) | 0 (0.00%) |
libraries_tests.pmi.windows.x64.checked.mch | 348,057 | 7,468 | 340,589 | 0 (0.00%) | 1 (0.00%) |
realworld.run.windows.x64.checked.mch | 38,740 | 4,484 | 34,256 | 0 (0.00%) | 0 (0.00%) |
1,514,429 | 459,672 | 1,054,757 | 12,403 (0.82%) | 12,404 (0.82%) |
aspnet.run.windows.x64.checked.mch
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: 38046237 (overridden on cmd)
Total bytes of diff: 38076497 (overridden on cmd)
Total bytes of delta: 30260 (0.08 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
123 : 31175.dasm (1.82% of base)
123 : 24004.dasm (1.82% of base)
121 : 65703.dasm (10.34% of base)
121 : 68000.dasm (2.51% of base)
117 : 31894.dasm (1.74% of base)
111 : 100982.dasm (5.57% of base)
109 : 30490.dasm (1.65% of base)
104 : 28367.dasm (1.58% of base)
103 : 29400.dasm (1.55% of base)
102 : 56546.dasm (4.19% of base)
102 : 65939.dasm (4.19% of base)
100 : 109253.dasm (5.66% of base)
99 : 56042.dasm (2.46% of base)
99 : 111445.dasm (5.41% of base)
98 : 18209.dasm (4.86% of base)
98 : 30937.dasm (4.86% of base)
98 : 15297.dasm (4.86% of base)
98 : 19787.dasm (4.86% of base)
98 : 28981.dasm (4.86% of base)
94 : 102816.dasm (4.67% of base)
Top file improvements (bytes):
-126 : 65977.dasm (-2.32% of base)
-126 : 57561.dasm (-2.32% of base)
-112 : 58928.dasm (-1.78% of base)
-112 : 61784.dasm (-1.80% of base)
-108 : 66024.dasm (-1.72% of base)
-34 : 104444.dasm (-3.09% of base)
-34 : 111530.dasm (-3.09% of base)
-34 : 115459.dasm (-3.09% of base)
-34 : 19784.dasm (-3.09% of base)
-28 : 80479.dasm (-0.40% of base)
-24 : 87592.dasm (-3.34% of base)
-24 : 102848.dasm (-3.34% of base)
-22 : 80385.dasm (-1.88% of base)
-22 : 63505.dasm (-1.99% of base)
-22 : 66989.dasm (-1.99% of base)
-21 : 65847.dasm (-0.90% of base)
-21 : 54370.dasm (-0.90% of base)
-18 : 65966.dasm (-1.10% of base)
-18 : 113445.dasm (-2.49% of base)
-18 : 57224.dasm (-1.10% of base)
92 total files with Code Size differences (35 improved, 57 regressed), 20 unchanged.
Top method regressions (bytes):
123 ( 1.82% of base) : 31175.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__86:MoveNext():this
123 ( 1.82% of base) : 24004.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__86:MoveNext():this
121 ( 2.51% of base) : 68000.dasm - OrchardCore.ContentManagement.Display.ContentDisplay.ContentPartDisplayDriver`1+<>c__DisplayClass3_0[System.__Canon]:<Factory>b__0(OrchardCore.DisplayManagement.Implementation.ShapeDisplayContext):this
121 (10.34% of base) : 65703.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
117 ( 1.74% of base) : 31894.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__86:MoveNext():this
111 ( 5.57% of base) : 100982.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol+<ProcessRequestsAsync>d__237`1[System.__Canon]:MoveNext():this
109 ( 1.65% of base) : 30490.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__86:MoveNext():this
104 ( 1.58% of base) : 28367.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__86:MoveNext():this
103 ( 1.55% of base) : 29400.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__86:MoveNext():this
102 ( 4.19% of base) : 56546.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddEndpoints(System.Collections.Generic.List`1[Microsoft.AspNetCore.Http.Endpoint],System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.Collections.Generic.IReadOnlyList`1[Microsoft.AspNetCore.Mvc.Routing.ConventionalRouteEntry],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],bool,Microsoft.AspNetCore.Routing.Patterns.RoutePattern):this
102 ( 4.19% of base) : 65939.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddEndpoints(System.Collections.Generic.List`1[Microsoft.AspNetCore.Http.Endpoint],System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.Collections.Generic.IReadOnlyList`1[Microsoft.AspNetCore.Mvc.Routing.ConventionalRouteEntry],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],bool,Microsoft.AspNetCore.Routing.Patterns.RoutePattern):this
100 ( 5.66% of base) : 109253.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
99 ( 2.46% of base) : 56042.dasm - OrchardCore.Indexing.Services.IndexingTaskManager+<FlushAsync>d__8:MoveNext():this
99 ( 5.41% of base) : 111445.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
98 ( 4.86% of base) : 18209.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol+<ProcessRequestsAsync>d__237`1[System.__Canon]:MoveNext():this
98 ( 4.86% of base) : 30937.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol+<ProcessRequestsAsync>d__237`1[System.__Canon]:MoveNext():this
98 ( 4.86% of base) : 15297.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol+<ProcessRequestsAsync>d__237`1[System.__Canon]:MoveNext():this
98 ( 4.86% of base) : 19787.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol+<ProcessRequestsAsync>d__237`1[System.__Canon]:MoveNext():this
98 ( 4.86% of base) : 28981.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol+<ProcessRequestsAsync>d__237`1[System.__Canon]:MoveNext():this
94 ( 4.67% of base) : 102816.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol+<ProcessRequestsAsync>d__237`1[System.__Canon]:MoveNext():this
Top method improvements (bytes):
-126 (-2.32% of base) : 65977.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayCoordinator+<BuildDisplayAsync>d__7:MoveNext():this
-126 (-2.32% of base) : 57561.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayCoordinator+<BuildDisplayAsync>d__7:MoveNext():this
-112 (-1.78% of base) : 58928.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayCoordinator+<BuildDisplayAsync>d__7:MoveNext():this
-112 (-1.80% of base) : 61784.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayCoordinator+<BuildDisplayAsync>d__7:MoveNext():this
-108 (-1.72% of base) : 66024.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayCoordinator+<BuildDisplayAsync>d__7:MoveNext():this
-34 (-3.09% of base) : 104444.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-34 (-3.09% of base) : 111530.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-34 (-3.09% of base) : 115459.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-34 (-3.09% of base) : 19784.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-28 (-0.40% of base) : 80479.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayManager+<BuildDisplayAsync>d__7:MoveNext():this
-24 (-3.34% of base) : 87592.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateLiteralFields(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,byref):this
-24 (-3.34% of base) : 102848.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateLiteralFields(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,byref):this
-22 (-1.88% of base) : 80385.dasm - Microsoft.Extensions.Caching.Memory.CacheExtensions:GetOrCreate[System.__Canon](Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,System.Func`2[System.__Canon,System.__Canon]):System.__Canon
-22 (-1.99% of base) : 63505.dasm - OrchardCore.ContentManagement.ContentDefinitionManager:CheckDocumentIdentifier(OrchardCore.ContentManagement.Metadata.Records.ContentDefinitionRecord):this
-22 (-1.99% of base) : 66989.dasm - OrchardCore.ContentManagement.ContentDefinitionManager:CheckDocumentIdentifier(OrchardCore.ContentManagement.Metadata.Records.ContentDefinitionRecord):this
-21 (-0.90% of base) : 65847.dasm - OrchardCore.Environment.Shell.ShellDescriptorFeaturesManager+<>c__DisplayClass5_0+<<UpdateFeaturesAsync>b__12>d:MoveNext():this
-21 (-0.90% of base) : 54370.dasm - OrchardCore.Environment.Shell.ShellDescriptorFeaturesManager+<>c__DisplayClass5_0+<<UpdateFeaturesAsync>b__12>d:MoveNext():this
-18 (-2.49% of base) : 113445.dasm - Microsoft.AspNetCore.Mvc.Razor.ViewLocationCacheKey:Equals(Microsoft.AspNetCore.Mvc.Razor.ViewLocationCacheKey):bool:this
-18 (-1.92% of base) : 66811.dasm - Microsoft.Extensions.Caching.Memory.CacheExtensions:TryGetValue[System.__Canon](Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,byref):bool
-18 (-1.10% of base) : 65966.dasm - OrchardCore.DisplayManagement.Descriptors.DefaultShapeTableManager:BuildDescriptors(OrchardCore.DisplayManagement.Descriptors.IShapeTableProvider,System.Collections.Generic.IEnumerable`1[OrchardCore.DisplayManagement.Descriptors.ShapeAlteration],System.Collections.Generic.Dictionary`2[System.String,OrchardCore.DisplayManagement.Descriptors.FeatureShapeDescriptor]):this
Top method regressions (percentages):
66 (16.18% of base) : 48526.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])
62 (15.42% of base) : 81213.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])
62 (15.42% of base) : 78321.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])
30 (11.76% of base) : 84669.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 32301.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 96872.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 29501.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 30746.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 24576.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 28866.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 31591.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 28610.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 29855.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 30876.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 32249.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 89422.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 31537.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.76% of base) : 24480.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[int]:SetExistingTaskResult(System.Threading.Tasks.Task`1[int],int)
30 (11.72% of base) : 96792.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:SetExistingTaskResult(System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult],System.Threading.Tasks.VoidTaskResult)
30 (11.72% of base) : 117047.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Threading.Tasks.VoidTaskResult]:SetExistingTaskResult(System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult],System.Threading.Tasks.VoidTaskResult)
Top method improvements (percentages):
-15 (-5.12% of base) : 63414.dasm - Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
-15 (-5.12% of base) : 79619.dasm - Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
-15 (-5.12% of base) : 67028.dasm - Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
-24 (-3.34% of base) : 87592.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateLiteralFields(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,byref):this
-24 (-3.34% of base) : 102848.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateLiteralFields(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,byref):this
-34 (-3.09% of base) : 104444.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-34 (-3.09% of base) : 111530.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-34 (-3.09% of base) : 115459.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-34 (-3.09% of base) : 19784.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-5 (-2.75% of base) : 17423.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object
-5 (-2.75% of base) : 18379.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object
-5 (-2.75% of base) : 7960.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object
-5 (-2.75% of base) : 16055.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object
-5 (-2.75% of base) : 16790.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object
-5 (-2.75% of base) : 13708.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object
-5 (-2.75% of base) : 18988.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object
-7 (-2.65% of base) : 81370.dasm - Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
-7 (-2.65% of base) : 48985.dasm - Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
-7 (-2.65% of base) : 78480.dasm - Newtonsoft.Json.Serialization.JsonPropertyCollection:GetProperty(System.String,int):Newtonsoft.Json.Serialization.JsonProperty:this
-18 (-2.49% of base) : 113445.dasm - Microsoft.AspNetCore.Mvc.Razor.ViewLocationCacheKey:Equals(Microsoft.AspNetCore.Mvc.Razor.ViewLocationCacheKey):bool:this
benchmarks.run.windows.x64.checked.mch
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: 7293703 (overridden on cmd)
Total bytes of diff: 7296955 (overridden on cmd)
Total bytes of delta: 3252 (0.04 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
66 : 13135.dasm (0.88% of base)
55 : 24181.dasm (5.64% of base)
55 : 21851.dasm (5.72% of base)
55 : 12749.dasm (5.64% of base)
55 : 22076.dasm (5.64% of base)
48 : 10385.dasm (4.21% of base)
27 : 6940.dasm (2.01% of base)
22 : 17334.dasm (4.27% of base)
22 : 20148.dasm (4.54% of base)
22 : 23399.dasm (4.24% of base)
22 : 15255.dasm (4.54% of base)
22 : 19775.dasm (4.20% of base)
22 : 15332.dasm (4.54% of base)
22 : 9252.dasm (4.24% of base)
22 : 15722.dasm (5.02% of base)
22 : 21028.dasm (4.54% of base)
22 : 22272.dasm (4.06% of base)
22 : 21143.dasm (4.14% of base)
22 : 22629.dasm (4.27% of base)
22 : 16821.dasm (4.66% of base)
Top file improvements (bytes):
-4 : 10557.dasm (-0.70% of base)
-4 : 20972.dasm (-1.81% of base)
-4 : 7979.dasm (-0.67% of base)
-4 : 468.dasm (-0.27% of base)
49 total files with Code Size differences (4 improved, 45 regressed), 11 unchanged.
Top method regressions (bytes):
66 ( 0.88% of base) : 13135.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__86:MoveNext():this
55 ( 5.64% of base) : 12749.dasm - System.MathBenchmarks.Double:SinCosPiTest()
55 ( 5.64% of base) : 24181.dasm - System.MathBenchmarks.Double:SinCosTest()
55 ( 5.64% of base) : 22076.dasm - System.MathBenchmarks.Single:SinCosPiTest()
55 ( 5.72% of base) : 21851.dasm - System.MathBenchmarks.Single:SinCosTest()
48 ( 4.21% of base) : 10385.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this
27 ( 2.01% of base) : 6940.dasm - System.Text.Json.Serialization.ReadBufferState+<ReadFromStreamAsync>d__11:MoveNext():this
22 ( 4.52% of base) : 4488.dasm - System.MathBenchmarks.Double:AbsTest()
22 ( 4.24% of base) : 9252.dasm - System.MathBenchmarks.Double:AcosTest()
22 ( 4.54% of base) : 15332.dasm - System.MathBenchmarks.Double:CeilingTest()
22 ( 5.02% of base) : 15722.dasm - System.MathBenchmarks.Double:CopySignTest()
22 ( 4.54% of base) : 20148.dasm - System.MathBenchmarks.Double:FloorTest()
22 ( 4.66% of base) : 21169.dasm - System.MathBenchmarks.Double:ILogBTest()
22 ( 4.06% of base) : 22272.dasm - System.MathBenchmarks.Double:Log10P1Test()
22 ( 4.14% of base) : 22476.dasm - System.MathBenchmarks.Double:MaxTest()
22 ( 4.54% of base) : 23433.dasm - System.MathBenchmarks.Double:RoundTest()
22 ( 4.59% of base) : 15654.dasm - System.MathBenchmarks.Double:SqrtTest()
22 ( 4.23% of base) : 17076.dasm - System.MathBenchmarks.Double:TanPiTest()
22 ( 4.52% of base) : 18332.dasm - System.MathBenchmarks.Single:AbsTest()
22 ( 4.19% of base) : 19607.dasm - System.MathBenchmarks.Single:AcoshTest()
Top method improvements (bytes):
-4 (-0.70% of base) : 10557.dasm - Jil.Common.ExtensionMethods:GetMethod(System.Type,System.String,int,System.Type[]):System.Reflection.MethodInfo
-4 (-1.81% of base) : 20972.dasm - MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
-4 (-0.67% of base) : 7979.dasm - System.Diagnostics.TraceUtils:VerifyAttributes(System.Collections.Specialized.StringDictionary,System.String[],System.Object)
-4 (-0.27% of base) : 468.dasm - System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
Top method regressions (percentages):
55 ( 5.72% of base) : 21851.dasm - System.MathBenchmarks.Single:SinCosTest()
14 ( 5.69% of base) : 8590.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:TryCreateParameterMap(System.Reflection.ParameterInfo[],System.Type[],byref):bool
55 ( 5.64% of base) : 24181.dasm - System.MathBenchmarks.Double:SinCosTest()
55 ( 5.64% of base) : 12749.dasm - System.MathBenchmarks.Double:SinCosPiTest()
55 ( 5.64% of base) : 22076.dasm - System.MathBenchmarks.Single:SinCosPiTest()
22 ( 5.02% of base) : 15722.dasm - System.MathBenchmarks.Double:CopySignTest()
22 ( 5.02% of base) : 18725.dasm - System.MathBenchmarks.Single:CopySignTest()
22 ( 4.66% of base) : 21169.dasm - System.MathBenchmarks.Double:ILogBTest()
22 ( 4.66% of base) : 16821.dasm - System.MathBenchmarks.Single:ILogBTest()
13 ( 4.64% of base) : 11276.dasm - System.Threading.Channels.ChannelUtilities:Complete(System.Threading.Tasks.TaskCompletionSource,System.Exception)
22 ( 4.59% of base) : 15654.dasm - System.MathBenchmarks.Double:SqrtTest()
22 ( 4.59% of base) : 18659.dasm - System.MathBenchmarks.Single:SqrtTest()
22 ( 4.54% of base) : 15332.dasm - System.MathBenchmarks.Double:CeilingTest()
22 ( 4.54% of base) : 20148.dasm - System.MathBenchmarks.Double:FloorTest()
22 ( 4.54% of base) : 23433.dasm - System.MathBenchmarks.Double:RoundTest()
22 ( 4.54% of base) : 9257.dasm - System.MathBenchmarks.Single:CeilingTest()
22 ( 4.54% of base) : 15255.dasm - System.MathBenchmarks.Single:FloorTest()
22 ( 4.54% of base) : 21028.dasm - System.MathBenchmarks.Single:RoundTest()
22 ( 4.52% of base) : 4488.dasm - System.MathBenchmarks.Double:AbsTest()
22 ( 4.52% of base) : 18332.dasm - System.MathBenchmarks.Single:AbsTest()
Top method improvements (percentages):
-4 (-1.81% of base) : 20972.dasm - MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
-4 (-0.70% of base) : 10557.dasm - Jil.Common.ExtensionMethods:GetMethod(System.Type,System.String,int,System.Type[]):System.Reflection.MethodInfo
-4 (-0.67% of base) : 7979.dasm - System.Diagnostics.TraceUtils:VerifyAttributes(System.Collections.Specialized.StringDictionary,System.String[],System.Object)
-4 (-0.27% of base) : 468.dasm - System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
benchmarks.run_pgo.windows.x64.checked.mch
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: 27312724 (overridden on cmd)
Total bytes of diff: 27337002 (overridden on cmd)
Total bytes of delta: 24278 (0.09 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
424 : 50418.dasm (14.57% of base)
296 : 78100.dasm (11.35% of base)
263 : 63592.dasm (8.39% of base)
237 : 20456.dasm (7.21% of base)
235 : 78089.dasm (21.62% of base)
229 : 8954.dasm (6.99% of base)
229 : 69375.dasm (6.99% of base)
189 : 50254.dasm (5.84% of base)
179 : 45020.dasm (5.82% of base)
157 : 78088.dasm (19.43% of base)
155 : 26646.dasm (4.79% of base)
152 : 74276.dasm (5.00% of base)
150 : 64562.dasm (4.39% of base)
135 : 47249.dasm (4.66% of base)
131 : 38316.dasm (7.20% of base)
127 : 62886.dasm (4.55% of base)
126 : 65275.dasm (3.09% of base)
124 : 50998.dasm (3.60% of base)
114 : 38777.dasm (6.25% of base)
112 : 44839.dasm (2.93% of base)
Top file improvements (bytes):
-119 : 45545.dasm (-3.94% of base)
-101 : 42548.dasm (-3.30% of base)
-49 : 39687.dasm (-10.72% of base)
-49 : 59304.dasm (-10.72% of base)
-49 : 67500.dasm (-10.72% of base)
-49 : 78818.dasm (-10.72% of base)
-49 : 26496.dasm (-10.72% of base)
-49 : 61405.dasm (-10.72% of base)
-49 : 48639.dasm (-10.72% of base)
-49 : 48906.dasm (-10.72% of base)
-44 : 52878.dasm (-2.85% of base)
-41 : 72613.dasm (-2.67% of base)
-40 : 52951.dasm (-2.50% of base)
-28 : 78099.dasm (-0.78% of base)
-24 : 52029.dasm (-3.12% of base)
-23 : 70720.dasm (-0.80% of base)
-22 : 52883.dasm (-1.42% of base)
-20 : 21635.dasm (-2.17% of base)
-20 : 21634.dasm (-2.07% of base)
-20 : 66038.dasm (-0.69% of base)
78 total files with Code Size differences (25 improved, 53 regressed), 11 unchanged.
Top method regressions (bytes):
424 (14.57% of base) : 50418.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
296 (11.35% of base) : 78100.dasm - StringSort:DoStringSortIteration(System.String[][],int,int):int
263 ( 8.39% of base) : 63592.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
237 ( 7.21% of base) : 20456.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
235 (21.62% of base) : 78089.dasm - StringSort:StrHeapSort(System.String[],int,int)
229 ( 6.99% of base) : 8954.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
229 ( 6.99% of base) : 69375.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
189 ( 5.84% of base) : 50254.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
179 ( 5.82% of base) : 45020.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
157 (19.43% of base) : 78088.dasm - StringSort:StrHeapSort(System.String[],int,int)
155 ( 4.79% of base) : 26646.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
152 ( 5.00% of base) : 74276.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
150 ( 4.39% of base) : 64562.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
135 ( 4.66% of base) : 47249.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
131 ( 7.20% of base) : 38316.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
127 ( 4.55% of base) : 62886.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
126 ( 3.09% of base) : 65275.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object
124 ( 3.60% of base) : 50998.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
114 ( 6.25% of base) : 38777.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
112 ( 2.93% of base) : 44839.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object
Top method improvements (bytes):
-119 (-3.94% of base) : 45545.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
-101 (-3.30% of base) : 42548.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
-49 (-10.72% of base) : 39687.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 59304.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 67500.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 78818.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 26496.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 61405.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 48639.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 48906.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-44 (-2.85% of base) : 52878.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Create(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],int,System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],int,int,ulong,System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]
-41 (-2.67% of base) : 72613.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Create(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],int,System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],int,int,ulong,System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]
-40 (-2.50% of base) : 52951.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateLoop(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],int,int,bool):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]
-28 (-0.78% of base) : 78099.dasm - StringSort:Run():double:this
-24 (-3.12% of base) : 52029.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter+ObjectMapInfo:IsCompatible(int,System.String[],System.Type[]):bool:this
-23 (-0.80% of base) : 70720.dasm - System.Text.RegularExpressions.RegexCache:Add(System.Text.RegularExpressions.RegexCache+Key,System.Text.RegularExpressions.Regex)
-22 (-1.42% of base) : 52883.dasm - System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong],System.__Canon]:TryInsert(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong],System.__Canon,ubyte):bool:this
-20 (-2.17% of base) : 21635.dasm - System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong],System.__Canon]:FindValue(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]):byref:this
-20 (-2.07% of base) : 21634.dasm - System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong],System.__Canon]:TryGetValue(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong],byref):bool:this
-20 (-0.69% of base) : 66038.dasm - System.Text.RegularExpressions.RegexCache:Add(System.Text.RegularExpressions.RegexCache+Key,System.Text.RegularExpressions.Regex)
Top method regressions (percentages):
87 (30.63% of base) : 78085.dasm - StringSort:strsift(System.String[],int,int)
235 (21.62% of base) : 78089.dasm - StringSort:StrHeapSort(System.String[],int,int)
157 (19.43% of base) : 78088.dasm - StringSort:StrHeapSort(System.String[],int,int)
51 (15.60% of base) : 5832.dasm - System.Reflection.RuntimeMethodInfo:get_Invoker():System.Reflection.MethodInvoker:this
51 (15.60% of base) : 58561.dasm - System.Reflection.RuntimeMethodInfo:get_Invoker():System.Reflection.MethodInvoker:this
424 (14.57% of base) : 50418.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
34 (12.06% of base) : 75649.dasm - System.Net.Sockets.Socket:SetToConnected():this
43 (11.68% of base) : 5896.dasm - System.Reflection.RuntimeMethodInfo:get_InvocationFlags():uint:this
296 (11.35% of base) : 78100.dasm - StringSort:DoStringSortIteration(System.String[][],int,int):int
34 (10.79% of base) : 10622.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
34 (10.79% of base) : 48797.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
34 (10.79% of base) : 39187.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
34 (10.79% of base) : 53061.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
34 (10.79% of base) : 21941.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
34 (10.79% of base) : 28765.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
34 (10.79% of base) : 65796.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
34 (10.79% of base) : 70545.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
34 (10.79% of base) : 66267.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
32 (10.09% of base) : 68064.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
32 (10.09% of base) : 76676.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this
Top method improvements (percentages):
-49 (-10.72% of base) : 39687.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 59304.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 67500.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 78818.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 26496.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 61405.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 48639.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-49 (-10.72% of base) : 48906.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,bool]):int
-119 (-3.94% of base) : 45545.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
-101 (-3.30% of base) : 42548.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart()
-24 (-3.12% of base) : 52029.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter+ObjectMapInfo:IsCompatible(int,System.String[],System.Type[]):bool:this
-44 (-2.85% of base) : 52878.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Create(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],int,System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],int,int,ulong,System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]
-41 (-2.67% of base) : 72613.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Create(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],int,System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],int,int,ulong,System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]
-40 (-2.50% of base) : 52951.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateLoop(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],int,int,bool):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]
-20 (-2.17% of base) : 21635.dasm - System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong],System.__Canon]:FindValue(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]):byref:this
-11 (-2.14% of base) : 42465.dasm - System.Linq.Enumerable+EnumerablePartition`1[ushort]:ToArray():ushort[]:this
-11 (-2.14% of base) : 43798.dasm - System.Linq.Enumerable+EnumerablePartition`1[ushort]:ToArray():ushort[]:this
-11 (-2.14% of base) : 49252.dasm - System.Linq.Enumerable+EnumerablePartition`1[ushort]:ToArray():ushort[]:this
-11 (-2.14% of base) : 47679.dasm - System.Linq.Enumerable+EnumerablePartition`1[ushort]:ToArray():ushort[]:this
-11 (-2.14% of base) : 46481.dasm - System.Linq.Enumerable+EnumerablePartition`1[ushort]:ToArray():ushort[]:this
benchmarks.run_tiered.windows.x64.checked.mch
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: 10236085 (overridden on cmd)
Total bytes of diff: 10238506 (overridden on cmd)
Total bytes of delta: 2421 (0.02 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
55 : 39351.dasm (4.95% of base)
55 : 23218.dasm (4.95% of base)
55 : 42226.dasm (4.93% of base)
55 : 39045.dasm (4.94% of base)
22 : 33599.dasm (4.29% of base)
22 : 36086.dasm (3.74% of base)
22 : 28696.dasm (3.94% of base)
22 : 33288.dasm (3.94% of base)
22 : 16609.dasm (3.91% of base)
22 : 28154.dasm (3.93% of base)
22 : 38134.dasm (3.74% of base)
22 : 30671.dasm (3.74% of base)
22 : 33611.dasm (3.70% of base)
22 : 39886.dasm (3.74% of base)
22 : 27743.dasm (3.93% of base)
22 : 31884.dasm (3.74% of base)
22 : 37163.dasm (3.93% of base)
22 : 16542.dasm (3.74% of base)
22 : 33131.dasm (3.70% of base)
22 : 34758.dasm (3.74% of base)
Top file improvements (bytes):
-4 : 7818.dasm (-0.27% of base)
62 total files with Code Size differences (1 improved, 61 regressed), 2 unchanged.
Top method regressions (bytes):
55 ( 4.95% of base) : 23218.dasm - System.MathBenchmarks.Double:SinCosPiTest()
55 ( 4.93% of base) : 42226.dasm - System.MathBenchmarks.Double:SinCosTest()
55 ( 4.95% of base) : 39351.dasm - System.MathBenchmarks.Single:SinCosPiTest()
55 ( 4.94% of base) : 39045.dasm - System.MathBenchmarks.Single:SinCosTest()
22 ( 3.91% of base) : 16609.dasm - System.MathBenchmarks.Double:AbsTest()
22 ( 3.70% of base) : 33611.dasm - System.MathBenchmarks.Double:AcoshTest()
22 ( 3.93% of base) : 28154.dasm - System.MathBenchmarks.Double:CeilingTest()
22 ( 4.29% of base) : 28594.dasm - System.MathBenchmarks.Double:CopySignTest()
22 ( 3.74% of base) : 29604.dasm - System.MathBenchmarks.Double:CosDoubleTest()
22 ( 3.74% of base) : 30671.dasm - System.MathBenchmarks.Double:CosPiDoubleTest()
22 ( 3.93% of base) : 36174.dasm - System.MathBenchmarks.Double:FloorTest()
22 ( 3.41% of base) : 36983.dasm - System.MathBenchmarks.Double:HypotTest()
22 ( 4.04% of base) : 37768.dasm - System.MathBenchmarks.Double:ILogBTest()
22 ( 3.70% of base) : 16536.dasm - System.MathBenchmarks.Double:Log2Test()
22 ( 3.67% of base) : 40211.dasm - System.MathBenchmarks.Double:MinTest()
22 ( 3.93% of base) : 40944.dasm - System.MathBenchmarks.Double:RoundTest()
22 ( 3.94% of base) : 28696.dasm - System.MathBenchmarks.Double:SqrtTest()
22 ( 3.91% of base) : 33069.dasm - System.MathBenchmarks.Single:AbsTest()
22 ( 3.74% of base) : 34758.dasm - System.MathBenchmarks.Single:AcosTest()
22 ( 3.74% of base) : 36086.dasm - System.MathBenchmarks.Single:AsinTest()
Top method improvements (bytes):
-4 (-0.27% of base) : 7818.dasm - System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
Top method regressions (percentages):
55 ( 4.95% of base) : 23218.dasm - System.MathBenchmarks.Double:SinCosPiTest()
55 ( 4.95% of base) : 39351.dasm - System.MathBenchmarks.Single:SinCosPiTest()
55 ( 4.94% of base) : 39045.dasm - System.MathBenchmarks.Single:SinCosTest()
55 ( 4.93% of base) : 42226.dasm - System.MathBenchmarks.Double:SinCosTest()
22 ( 4.29% of base) : 28594.dasm - System.MathBenchmarks.Double:CopySignTest()
22 ( 4.29% of base) : 33599.dasm - System.MathBenchmarks.Single:CopySignTest()
22 ( 4.04% of base) : 37768.dasm - System.MathBenchmarks.Double:ILogBTest()
22 ( 4.04% of base) : 29869.dasm - System.MathBenchmarks.Single:ILogBTest()
22 ( 3.94% of base) : 28696.dasm - System.MathBenchmarks.Double:SqrtTest()
22 ( 3.94% of base) : 33288.dasm - System.MathBenchmarks.Single:SqrtTest()
22 ( 3.93% of base) : 28154.dasm - System.MathBenchmarks.Double:CeilingTest()
22 ( 3.93% of base) : 36174.dasm - System.MathBenchmarks.Double:FloorTest()
22 ( 3.93% of base) : 40944.dasm - System.MathBenchmarks.Double:RoundTest()
22 ( 3.93% of base) : 20172.dasm - System.MathBenchmarks.Single:CeilingTest()
22 ( 3.93% of base) : 27743.dasm - System.MathBenchmarks.Single:FloorTest()
22 ( 3.93% of base) : 37163.dasm - System.MathBenchmarks.Single:RoundTest()
22 ( 3.91% of base) : 16609.dasm - System.MathBenchmarks.Double:AbsTest()
22 ( 3.91% of base) : 33069.dasm - System.MathBenchmarks.Single:AbsTest()
22 ( 3.74% of base) : 29604.dasm - System.MathBenchmarks.Double:CosDoubleTest()
22 ( 3.74% of base) : 34758.dasm - System.MathBenchmarks.Single:AcosTest()
Top method improvements (percentages):
-4 (-0.27% of base) : 7818.dasm - System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
coreclr_tests.run.windows.x64.checked.mch
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: 369434284 (overridden on cmd)
Total bytes of diff: 369460299 (overridden on cmd)
Total bytes of delta: 26015 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
354 : 424266.dasm (11.93% of base)
327 : 401797.dasm (10.99% of base)
277 : 530402.dasm (21.83% of base)
277 : 412867.dasm (21.83% of base)
277 : 484078.dasm (21.83% of base)
277 : 542572.dasm (21.83% of base)
277 : 443468.dasm (21.83% of base)
277 : 485905.dasm (21.83% of base)
277 : 482798.dasm (21.91% of base)
277 : 539697.dasm (21.83% of base)
277 : 429453.dasm (21.83% of base)
277 : 414394.dasm (21.83% of base)
277 : 438674.dasm (21.83% of base)
277 : 530935.dasm (21.83% of base)
277 : 441296.dasm (21.83% of base)
277 : 475745.dasm (21.83% of base)
277 : 537817.dasm (21.83% of base)
277 : 437740.dasm (21.91% of base)
268 : 155025.dasm (9.29% of base)
265 : 423765.dasm (20.34% of base)
Top file improvements (bytes):
-22 : 438673.dasm (-2.27% of base)
-12 : 231367.dasm (-4.07% of base)
-11 : 413264.dasm (-0.92% of base)
-11 : 166717.dasm (-0.91% of base)
-11 : 470233.dasm (-0.92% of base)
-11 : 415762.dasm (-0.92% of base)
-11 : 475806.dasm (-0.92% of base)
-11 : 166691.dasm (-0.92% of base)
-11 : 166800.dasm (-0.92% of base)
-11 : 413205.dasm (-0.92% of base)
-11 : 472884.dasm (-0.92% of base)
-11 : 472939.dasm (-0.91% of base)
-11 : 166588.dasm (-0.92% of base)
-11 : 413184.dasm (-0.92% of base)
-11 : 184737.dasm (-0.91% of base)
-11 : 541853.dasm (-0.92% of base)
-11 : 414480.dasm (-0.92% of base)
-11 : 227574.dasm (-0.92% of base)
-11 : 413233.dasm (-0.91% of base)
-9 : 462325.dasm (-0.74% of base)
58 total files with Code Size differences (22 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
354 (11.93% of base) : 424266.dasm - StringSort:DoStringSortIteration(System.String[][],int,int):int
327 (10.99% of base) : 401797.dasm - StringSort:DoStringSortIteration(System.String[][],int,int):int
277 (21.83% of base) : 530402.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 412867.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 484078.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 542572.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 443468.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 485905.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.91% of base) : 482798.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 539697.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 429453.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 414394.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 438674.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 530935.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 441296.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 475745.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 537817.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.91% of base) : 437740.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
268 ( 9.29% of base) : 155025.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
265 (20.34% of base) : 423765.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
Top method improvements (bytes):
-22 (-2.27% of base) : 438673.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon])
-12 (-4.07% of base) : 231367.dasm - System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this
-11 (-0.92% of base) : 413264.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.91% of base) : 166717.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 470233.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 415762.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 475806.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 166691.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 166800.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 413205.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 472884.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.91% of base) : 472939.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 166588.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 413184.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.91% of base) : 184737.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 541853.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 414480.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 227574.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.91% of base) : 413233.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-9 (-1.14% of base) : 460997.dasm - ILCompiler.TypeExtensions:AcquiresInstMethodTableFromThis(Internal.TypeSystem.MethodDesc):bool
Top method regressions (percentages):
87 (30.63% of base) : 424257.dasm - StringSort:strsift(System.String[],int,int)
76 (26.76% of base) : 401785.dasm - StringSort:strsift(System.String[],int,int)
277 (21.91% of base) : 482798.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.91% of base) : 437740.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 530402.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 412867.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 484078.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 542572.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 443468.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 485905.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 539697.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 429453.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 414394.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 438674.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 530935.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 441296.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 475745.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
277 (21.83% of base) : 537817.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int
239 (21.75% of base) : 401790.dasm - StringSort:StrHeapSort(System.String[],int,int)
235 (21.56% of base) : 424260.dasm - StringSort:StrHeapSort(System.String[],int,int)
Top method improvements (percentages):
-12 (-4.07% of base) : 231367.dasm - System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this
-22 (-2.27% of base) : 438673.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon])
-9 (-1.14% of base) : 460997.dasm - ILCompiler.TypeExtensions:AcquiresInstMethodTableFromThis(Internal.TypeSystem.MethodDesc):bool
-9 (-1.00% of base) : 460905.dasm - ILCompiler.TypeExtensions:RequiresInstArg(Internal.TypeSystem.MethodDesc):bool
-11 (-0.92% of base) : 413264.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 470233.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 415762.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 475806.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 166691.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 166800.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 413205.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 472884.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 166588.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 413184.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 541853.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 414480.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.92% of base) : 227574.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.91% of base) : 166717.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.91% of base) : 472939.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
-11 (-0.91% of base) : 184737.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
libraries.crossgen2.windows.x64.checked.mch
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: 6295320 (overridden on cmd)
Total bytes of diff: 6295537 (overridden on cmd)
Total bytes of delta: 217 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
42 : 26548.dasm (1.03% of base)
37 : 7771.dasm (2.36% of base)
25 : 7566.dasm (7.25% of base)
20 : 26899.dasm (1.82% of base)
17 : 1830.dasm (1.11% of base)
17 : 29106.dasm (1.50% of base)
16 : 29890.dasm (1.24% of base)
15 : 1453.dasm (1.26% of base)
8 : 6258.dasm (3.59% of base)
7 : 6260.dasm (3.14% of base)
4 : 29640.dasm (3.08% of base)
4 : 29641.dasm (2.23% of base)
4 : 1868.dasm (0.43% of base)
4 : 33213.dasm (0.38% of base)
3 : 26494.dasm (1.06% of base)
3 : 6457.dasm (0.44% of base)
2 : 29072.dasm (0.40% of base)
2 : 25282.dasm (0.31% of base)
2 : 33234.dasm (0.33% of base)
2 : 24898.dasm (0.26% of base)
Top file improvements (bytes):
-17 : 10507.dasm (-0.51% of base)
-2 : 34250.dasm (-0.55% of base)
-2 : 28148.dasm (-0.34% of base)
25 total files with Code Size differences (3 improved, 22 regressed), 9 unchanged.
Top method regressions (bytes):
42 ( 1.03% of base) : 26548.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this
37 ( 2.36% of base) : 7771.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitIncrementOperator(Microsoft.CodeAnalysis.CSharp.BoundIncrementOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this
25 ( 7.25% of base) : 7566.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this
20 ( 1.82% of base) : 26899.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this
17 ( 1.11% of base) : 1830.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalAccessExpression(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundConditionalAccess:this
17 ( 1.50% of base) : 29106.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,bool,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol
16 ( 1.24% of base) : 29890.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo])
15 ( 1.26% of base) : 1453.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValue(Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
8 ( 3.59% of base) : 6258.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedAddBoundTreeAndGetBoundNodeFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this
7 ( 3.14% of base) : 6260.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedAddBoundTreeForStandaloneSyntax(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager,System.Collections.Immutable.ImmutableDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol]):this
4 ( 0.43% of base) : 1868.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgListOperator(Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
4 ( 3.08% of base) : 29640.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitSequencePointStatement(Microsoft.CodeAnalysis.CSharp.BoundSequencePoint):this
4 ( 2.23% of base) : 29641.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitSequencePointStatement(Microsoft.CodeAnalysis.CSharp.BoundSequencePointWithSpan):this
4 ( 0.38% of base) : 33213.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Retargeting.RetargetingModuleSymbol+RetargetingSymbolTranslator:Retarget(Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol:this
3 ( 1.06% of base) : 26494.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckForUnmatchedOperator(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],System.String,System.Action`3[Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.String,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol])
3 ( 0.44% of base) : 6457.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:GetMemberModel(int):Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:this
2 ( 0.26% of base) : 34235.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEffectiveParametersInExpandedForm[System.__Canon](System.__Canon,int,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],bool,bool,Microsoft.CodeAnalysis.CSharp.Binder,byref):Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters
2 ( 0.26% of base) : 24898.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteFunctionPointerType(Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol:this
2 ( 0.31% of base) : 25282.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerMethodSymbol:ApplyNullableTransforms(ubyte,System.Collections.Immutable.ImmutableArray`1[ubyte],byref):Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerMethodSymbol:this
2 ( 0.40% of base) : 29072.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.DynamicTypeDecoder:TransformTypeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this
Top method improvements (bytes):
-17 (-0.51% of base) : 10507.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:VisitMethod(Microsoft.CodeAnalysis.IMethodSymbol):this
-2 (-0.55% of base) : 34250.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
-2 (-0.34% of base) : 28148.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInFunctionPointer(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):bool
Top method regressions (percentages):
25 ( 7.25% of base) : 7566.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this
8 ( 3.59% of base) : 6258.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedAddBoundTreeAndGetBoundNodeFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this
7 ( 3.14% of base) : 6260.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedAddBoundTreeForStandaloneSyntax(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+SnapshotManager,System.Collections.Immutable.ImmutableDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol]):this
4 ( 3.08% of base) : 29640.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitSequencePointStatement(Microsoft.CodeAnalysis.CSharp.BoundSequencePoint):this
37 ( 2.36% of base) : 7771.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitIncrementOperator(Microsoft.CodeAnalysis.CSharp.BoundIncrementOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this
4 ( 2.23% of base) : 29641.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitSequencePointStatement(Microsoft.CodeAnalysis.CSharp.BoundSequencePointWithSpan):this
20 ( 1.82% of base) : 26899.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this
17 ( 1.50% of base) : 29106.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,bool,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol
15 ( 1.26% of base) : 1453.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValue(Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
16 ( 1.24% of base) : 29890.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo])
17 ( 1.11% of base) : 1830.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalAccessExpression(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundConditionalAccess:this
3 ( 1.06% of base) : 26494.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckForUnmatchedOperator(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],System.String,System.Action`3[Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.String,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol])
42 ( 1.03% of base) : 26548.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this
3 ( 0.44% of base) : 6457.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:GetMemberModel(int):Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:this
4 ( 0.43% of base) : 1868.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgListOperator(Microsoft.CodeAnalysis.CSharp.Syntax.InvocationExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
2 ( 0.40% of base) : 29072.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.DynamicTypeDecoder:TransformTypeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this
4 ( 0.38% of base) : 33213.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Retargeting.RetargetingModuleSymbol+RetargetingSymbolTranslator:Retarget(Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol:this
2 ( 0.33% of base) : 33234.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Retargeting.RetargetingModuleSymbol+RetargetingSymbolTranslator:RetargetAttributeNamedArguments(System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,Microsoft.CodeAnalysis.TypedConstant]]):System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,Microsoft.CodeAnalysis.TypedConstant]]:this
2 ( 0.31% of base) : 25282.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerMethodSymbol:ApplyNullableTransforms(ubyte,System.Collections.Immutable.ImmutableArray`1[ubyte],byref):Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerMethodSymbol:this
2 ( 0.27% of base) : 29624.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.TupleTypeDecoder:DecodeTypeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this
Top method improvements (percentages):
-2 (-0.55% of base) : 34250.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
-17 (-0.51% of base) : 10507.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:VisitMethod(Microsoft.CodeAnalysis.IMethodSymbol):this
-2 (-0.34% of base) : 28148.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInFunctionPointer(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):bool
25 total methods with Code Size differences (3 improved, 22 regressed).
libraries.pmi.windows.x64.checked.mch
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: 59196125 (overridden on cmd)
Total bytes of diff: 59206528 (overridden on cmd)
Total bytes of delta: 10403 (0.02 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
268 : 127627.dasm (9.24% of base)
226 : 133758.dasm (11.78% of base)
226 : 179018.dasm (11.78% of base)
117 : 93729.dasm (4.42% of base)
88 : 233333.dasm (3.49% of base)
82 : 39931.dasm (1.43% of base)
70 : 176059.dasm (3.62% of base)
66 : 206537.dasm (0.85% of base)
66 : 231950.dasm (1.44% of base)
59 : 291854.dasm (0.89% of base)
54 : 176212.dasm (3.33% of base)
54 : 130841.dasm (3.33% of base)
48 : 176052.dasm (4.28% of base)
48 : 231951.dasm (2.38% of base)
47 : 287765.dasm (5.75% of base)
47 : 287779.dasm (5.75% of base)
45 : 284991.dasm (2.27% of base)
44 : 225596.dasm (4.59% of base)
44 : 106736.dasm (3.29% of base)
44 : 230229.dasm (6.40% of base)
Top file improvements (bytes):
-88 : 62782.dasm (-4.71% of base)
-21 : 57901.dasm (-1.75% of base)
-19 : 72520.dasm (-2.14% of base)
-17 : 115.dasm (-1.01% of base)
-12 : 122582.dasm (-4.07% of base)
-9 : 124562.dasm (-0.58% of base)
-8 : 153257.dasm (-0.15% of base)
-8 : 259871.dasm (-1.40% of base)
-7 : 204546.dasm (-0.04% of base)
-6 : 192284.dasm (-0.13% of base)
-5 : 286329.dasm (-0.66% of base)
-4 : 110572.dasm (-1.81% of base)
-4 : 120691.dasm (-0.92% of base)
-4 : 104713.dasm (-0.17% of base)
-4 : 109901.dasm (-0.16% of base)
-4 : 109804.dasm (-0.14% of base)
-4 : 241658.dasm (-1.82% of base)
-4 : 106467.dasm (-1.62% of base)
-4 : 196073.dasm (-0.22% of base)
-4 : 91084.dasm (-1.02% of base)
76 total files with Code Size differences (26 improved, 50 regressed), 20 unchanged.
Top method regressions (bytes):
268 ( 9.24% of base) : 127627.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
226 (11.78% of base) : 133758.dasm - Microsoft.CodeAnalysis.VersionHelper:TryParse(System.String,bool,ushort,bool,byref):bool
226 (11.78% of base) : 179018.dasm - Microsoft.CodeAnalysis.VersionHelper:TryParse(System.String,bool,ushort,bool,byref):bool
117 ( 4.42% of base) : 93729.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+ImportsBinder:BindMembersImportsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.ImportData,Microsoft.CodeAnalysis.DiagnosticBag)
88 ( 3.49% of base) : 233333.dasm - ILCompiler.ReadyToRunCodegenCompilation+<>c__DisplayClass50_0:<ComputeDependencyNodeDependencies>g__CompileOneMethod|5(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[ILCompiler.DependencyAnalysis.NodeFactory],int):this
82 ( 1.43% of base) : 39931.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:VisitMethod(Microsoft.CodeAnalysis.IMethodSymbol):this
70 ( 3.62% of base) : 176059.dasm - Microsoft.CodeAnalysis.Compilation:CreateAnonymousTypeSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[bool],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.INamedTypeSymbol:this
66 ( 1.44% of base) : 231950.dasm - ILCompiler.IBC.IBCProfileParser:LookupIbcTypeToken(byref,uint,System.Collections.Generic.Dictionary`2[ILCompiler.IBC.IBCProfileParser+IBCBlobKey,ILCompiler.IBC.BlobEntry]):uint:this
66 ( 0.85% of base) : 206537.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__86:MoveNext():this
59 ( 0.89% of base) : 291854.dasm - Program:Main(System.String[]):int
54 ( 3.33% of base) : 176212.dasm - Microsoft.CodeAnalysis.CompilationOptions:EqualsHelper(Microsoft.CodeAnalysis.CompilationOptions):bool:this
54 ( 3.33% of base) : 130841.dasm - Microsoft.CodeAnalysis.CompilationOptions:EqualsHelper(Microsoft.CodeAnalysis.CompilationOptions):bool:this
48 ( 2.38% of base) : 231951.dasm - ILCompiler.IBC.IBCProfileParser:LookupIbcMethodToken(Internal.TypeSystem.MetadataType,uint,System.Collections.Generic.Dictionary`2[ILCompiler.IBC.IBCProfileParser+IBCBlobKey,ILCompiler.IBC.BlobEntry]):uint:this
48 ( 4.28% of base) : 176052.dasm - Microsoft.CodeAnalysis.Compilation:CreateTupleTypeSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.INamedTypeSymbol:this
47 ( 5.75% of base) : 287765.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2[System.__Canon,System.Nullable`1[int]]:Dispose(bool):this
47 ( 5.75% of base) : 287779.dasm - System.Threading.RateLimiting.DefaultPartitionedRateLimiter`2[ubyte,System.Nullable`1[int]]:Dispose(bool):this
45 ( 2.27% of base) : 284991.dasm - System.Security.Cryptography.Xml.EncryptedXml:DecryptEncryptedKey(System.Security.Cryptography.Xml.EncryptedKey):ubyte[]:this
44 ( 6.40% of base) : 230229.dasm - ILLink.Shared.TypeSystemProxy.MethodProxy:GetParameter(ILLink.Shared.TypeSystemProxy.ParameterIndex):ILLink.Shared.TypeSystemProxy.ParameterProxy:this
44 ( 3.29% of base) : 106736.dasm - System.Data.Merger:MergeRows(System.Data.DataRow[]):this
44 ( 4.59% of base) : 225596.dasm - System.Text.Json.ThrowHelper:ThrowNotSupportedException(byref,byref,System.NotSupportedException)
Top method improvements (bytes):
-88 (-4.71% of base) : 62782.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,bool,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol
-21 (-1.75% of base) : 57901.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteFunctionPointerType(Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol:this
-19 (-2.14% of base) : 72520.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:EarlyDecodeWellKnownAttribute(byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:this
-17 (-1.01% of base) : 115.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Text.RegularExpressions.RegexCache+Key,System.__Canon],System.Text.RegularExpressions.RegexCache+Key,System.Nullable`1[int],System.__Canon,bool,bool,byref):bool:this
-12 (-4.07% of base) : 122582.dasm - System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this
-9 (-0.58% of base) : 124562.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportMembersMapping(System.Xml.Serialization.XmlReflectionMember[],System.String,bool,bool,bool,System.Xml.Serialization.RecursionLimiter):System.Xml.Serialization.MembersMapping:this
-8 (-0.15% of base) : 153257.dasm - Microsoft.Diagnostics.Tracing.Parsers.WppTraceEventParser:CreateTemplatesForTMFFile(System.Guid,System.String):System.Collections.Generic.List`1[Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData]:this
-8 (-1.40% of base) : 259871.dasm - System.Diagnostics.TraceUtils:VerifyAttributes(System.Collections.Specialized.StringDictionary,System.String[],System.Object)
-7 (-0.04% of base) : 204546.dasm - System.Management.ManagementClassGenerator:GenerateMethods():this
-6 (-0.13% of base) : 192284.dasm - System.Configuration.ConfigurationElementCollection:Unmerge(System.Configuration.ConfigurationElement,System.Configuration.ConfigurationElement,int):this
-5 (-0.66% of base) : 286329.dasm - System.ServiceModel.Syndication.SyndicationFeed:TryReadSkipHoursFromExtension(System.ServiceModel.Syndication.SyndicationElementExtensionCollection,System.Collections.ObjectModel.Collection`1[int])
-4 (-1.02% of base) : 91084.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeInferenceCollection:AddType(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,int,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):this
-4 (-1.82% of base) : 241658.dasm - Microsoft.Win32.RegistryKey:FixupPath(System.Text.StringBuilder)
-4 (-1.81% of base) : 110572.dasm - MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
-4 (-0.16% of base) : 109901.dasm - System.Data.Common.SqlByteStorage:Aggregate(int[],int):System.Object:this
-4 (-0.16% of base) : 109790.dasm - System.Data.Common.SqlInt32Storage:Aggregate(int[],int):System.Object:this
-4 (-0.14% of base) : 109804.dasm - System.Data.Common.SqlInt64Storage:Aggregate(int[],int):System.Object:this
-4 (-1.62% of base) : 106467.dasm - System.Data.DataView:RowExist(System.Collections.Generic.List`1[System.Object[]],System.Object[]):bool
-4 (-0.22% of base) : 196073.dasm - System.Data.OleDb.OleDbDataReader:CreateBindingsFromMetaData(bool):System.Data.OleDb.Bindings[]:this
-4 (-0.17% of base) : 104713.dasm - System.Data.XSDSchema:HandleParticle(System.Xml.Schema.XmlSchemaParticle,System.Data.DataTable,System.Collections.ArrayList,bool):this
Top method regressions (percentages):
226 (11.78% of base) : 133758.dasm - Microsoft.CodeAnalysis.VersionHelper:TryParse(System.String,bool,ushort,bool,byref):bool
226 (11.78% of base) : 179018.dasm - Microsoft.CodeAnalysis.VersionHelper:TryParse(System.String,bool,ushort,bool,byref):bool
40 (11.73% of base) : 53.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex
19 (11.66% of base) : 280590.dasm - System.Reflection.TypeLoading.RoEvent:GetRoAddMethod():System.Reflection.TypeLoading.RoMethod:this
19 (11.66% of base) : 280592.dasm - System.Reflection.TypeLoading.RoEvent:GetRoRaiseMethod():System.Reflection.TypeLoading.RoMethod:this
19 (11.66% of base) : 280591.dasm - System.Reflection.TypeLoading.RoEvent:GetRoRemoveMethod():System.Reflection.TypeLoading.RoMethod:this
37 (10.08% of base) : 117548.dasm - System.Xml.Schema.StringFacetsChecker:MatchEnumeration(System.String,System.Collections.ArrayList,System.Xml.Schema.XmlSchemaDatatype):bool
34 ( 9.94% of base) : 283430.dasm - System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo:Position(System.String):int:this
23 ( 9.91% of base) : 290468.dasm - System.Threading.Tasks.Parallel+ForEachAsyncState`1[System.__Canon]:Complete():this
23 ( 9.91% of base) : 290476.dasm - System.Threading.Tasks.Parallel+ForEachAsyncState`1[ubyte]:Complete():this
30 ( 9.29% of base) : 71241.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:HasConflict(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint,byref):bool
268 ( 9.24% of base) : 127627.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
40 ( 8.97% of base) : 190664.dasm - System.ComponentModel.TypeDescriptor+AttributeProvider+AttributeTypeDescriptor:GetAttributes():System.ComponentModel.AttributeCollection:this
16 ( 8.84% of base) : 280796.dasm - System.Reflection.TypeLoading.RoConstructedGenericMethod:Equals(System.Object):bool:this
34 ( 8.74% of base) : 121699.dasm - System.Xml.Xsl.Runtime.XmlAttributeCache:WriteStartAttribute(System.String,System.String,System.String):this
15 ( 8.67% of base) : 263769.dasm - System.IO.Packaging.ZipPackage+ContentTypeHelper:AddContentType(System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.ContentType,int):this
16 ( 8.51% of base) : 90756.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:HasFriendAccessTo(Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol):bool
30 ( 8.50% of base) : 115964.dasm - System.Xml.DomNameTable:GetName(System.String,System.String,System.String,System.Xml.Schema.IXmlSchemaInfo):System.Xml.XmlName:this
21 ( 8.14% of base) : 203493.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):bool:this
12 ( 7.95% of base) : 32450.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:HasInternalAccessTo(Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol):bool
Top method improvements (percentages):
-88 (-4.71% of base) : 62782.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder:SubstituteNoPiaLocalType(byref,bool,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,System.String,System.String,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol
-12 (-4.07% of base) : 122582.dasm - System.Xml.Xsl.Qil.QilReplaceVisitor:VisitChildren(System.Xml.Xsl.Qil.QilNode):System.Xml.Xsl.Qil.QilNode:this
-19 (-2.14% of base) : 72520.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:EarlyDecodeWellKnownAttribute(byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:this
-4 (-1.82% of base) : 241658.dasm - Microsoft.Win32.RegistryKey:FixupPath(System.Text.StringBuilder)
-4 (-1.81% of base) : 110572.dasm - MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
-21 (-1.75% of base) : 57901.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteFunctionPointerType(Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol:this
-4 (-1.62% of base) : 106467.dasm - System.Data.DataView:RowExist(System.Collections.Generic.List`1[System.Object[]],System.Object[]):bool
-8 (-1.40% of base) : 259871.dasm - System.Diagnostics.TraceUtils:VerifyAttributes(System.Collections.Specialized.StringDictionary,System.String[],System.Object)
-4 (-1.02% of base) : 91084.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeInferenceCollection:AddType(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,int,Microsoft.CodeAnalysis.VisualBasic.BoundExpression):this
-17 (-1.01% of base) : 115.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Text.RegularExpressions.RegexCache+Key,System.__Canon],System.Text.RegularExpressions.RegexCache+Key,System.Nullable`1[int],System.__Canon,bool,bool,byref):bool:this
-4 (-0.92% of base) : 120691.dasm - System.Xml.Xsl.XsltOld.ContainerAction:CompileSingleTemplate(System.Xml.Xsl.XsltOld.Compiler)
-5 (-0.66% of base) : 286329.dasm - System.ServiceModel.Syndication.SyndicationFeed:TryReadSkipHoursFromExtension(System.ServiceModel.Syndication.SyndicationElementExtensionCollection,System.Collections.ObjectModel.Collection`1[int])
-9 (-0.58% of base) : 124562.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportMembersMapping(System.Xml.Serialization.XmlReflectionMember[],System.String,bool,bool,bool,System.Xml.Serialization.RecursionLimiter):System.Xml.Serialization.MembersMapping:this
-2 (-0.42% of base) : 229488.dasm - System.Transactions.TransactionScope:PopScope():this
-3 (-0.39% of base) : 143124.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisState+PerAnalyzerState:OnCompilationEventGenerated(Microsoft.CodeAnalysis.Diagnostics.CompilationEvent,Microsoft.CodeAnalysis.Diagnostics.Telemetry.AnalyzerActionCounts):this
-4 (-0.33% of base) : 217949.dasm - System.Security.Cryptography.Pkcs.Rfc3161TimestampToken:CheckCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2,System.Security.Cryptography.Pkcs.SignerInfo,byref,byref,System.Security.Cryptography.Pkcs.Rfc3161TimestampTokenInfo):bool
-1 (-0.24% of base) : 206191.dasm - System.Net.Http.Http2Connection+Http2Stream+<>c:<WaitFor100ContinueAsync>b__46_1(System.Object):this
-4 (-0.22% of base) : 196073.dasm - System.Data.OleDb.OleDbDataReader:CreateBindingsFromMetaData(bool):System.Data.OleDb.Bindings[]:this
-2 (-0.21% of base) : 199142.dasm - System.DirectoryServices.ActiveDirectory.DomainController:GetRoles():System.Collections.ArrayList:this
-4 (-0.17% of base) : 104713.dasm - System.Data.XSDSchema:HandleParticle(System.Xml.Schema.XmlSchemaParticle,System.Data.DataTable,System.Collections.ArrayList,bool):this
libraries_tests.pmi.windows.x64.checked.mch
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: 115763833 (overridden on cmd)
Total bytes of diff: 115783555 (overridden on cmd)
Total bytes of delta: 19722 (0.02 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
284 : 188204.dasm (14.06% of base)
252 : 78380.dasm (14.63% of base)
187 : 226265.dasm (6.46% of base)
187 : 226264.dasm (5.81% of base)
168 : 224745.dasm (5.63% of base)
136 : 324411.dasm (6.01% of base)
128 : 170941.dasm (16.78% of base)
121 : 226076.dasm (2.94% of base)
121 : 226077.dasm (3.72% of base)
116 : 188530.dasm (16.84% of base)
113 : 187151.dasm (22.92% of base)
111 : 68059.dasm (5.78% of base)
99 : 219202.dasm (4.30% of base)
99 : 115809.dasm (4.30% of base)
99 : 139318.dasm (4.30% of base)
99 : 277629.dasm (4.30% of base)
99 : 316196.dasm (4.30% of base)
99 : 246347.dasm (4.30% of base)
99 : 279798.dasm (8.28% of base)
99 : 325684.dasm (4.30% of base)
Top file improvements (bytes):
-17 : 115.dasm (-1.01% of base)
-12 : 111526.dasm (-1.06% of base)
-11 : 133272.dasm (-0.88% of base)
-10 : 54123.dasm (-0.59% of base)
-5 : 262289.dasm (-0.63% of base)
-4 : 109239.dasm (-0.98% of base)
-4 : 336555.dasm (-0.32% of base)
-4 : 135017.dasm (-0.62% of base)
-4 : 189514.dasm (-0.30% of base)
-3 : 250089.dasm (-0.37% of base)
-3 : 74609.dasm (-0.14% of base)
-2 : 69281.dasm (-0.11% of base)
-2 : 130353.dasm (-0.25% of base)
-2 : 277969.dasm (-0.08% of base)
-2 : 69298.dasm (-0.09% of base)
-2 : 74176.dasm (-0.16% of base)
-2 : 115988.dasm (-0.08% of base)
-2 : 134739.dasm (-0.22% of base)
-2 : 927.dasm (-0.06% of base)
-2 : 136785.dasm (-0.26% of base)
77 total files with Code Size differences (22 improved, 55 regressed), 20 unchanged.
Top method regressions (bytes):
284 (14.06% of base) : 188204.dasm - Microsoft.CodeAnalysis.CSharp.CodeStyle.CSharpIdeCodeStyleOptions:Equals(Microsoft.CodeAnalysis.CSharp.CodeStyle.CSharpIdeCodeStyleOptions):bool:this
252 (14.63% of base) : 78380.dasm - Microsoft.CodeAnalysis.CodeStyle.IdeCodeStyleOptions:Equals(Microsoft.CodeAnalysis.CodeStyle.IdeCodeStyleOptions):bool:this
187 ( 5.81% of base) : 226264.dasm - System.Buffers.Text.Tests.ParserTests:ValidateParserHelper[System.__Canon](System.Buffers.Text.Tests.ParserTestData`1[System.__Canon])
187 ( 6.46% of base) : 226265.dasm - System.Buffers.Text.Tests.ParserTests:ValidateParserHelper[ubyte](System.Buffers.Text.Tests.ParserTestData`1[ubyte])
168 ( 5.63% of base) : 224745.dasm - System.SpanTests.ReadOnlySpanTests:TestMatchMany_Char()
136 ( 6.01% of base) : 324411.dasm - System.Text.RegularExpressions.Tests.RegexTreeAnalyzerTests:AssertNode(System.Text.RegularExpressions.AnalysisResults,System.Text.RegularExpressions.RegexNode,ubyte,bool,bool,bool,bool):System.Text.RegularExpressions.RegexNode
128 (16.78% of base) : 170941.dasm - System.Runtime.Serialization.Formatters.Tests.ObjectWithIntStringUShortUIntULongAndCustomObjectFields:Equals(System.Object):bool:this
121 ( 2.94% of base) : 226076.dasm - System.Buffers.Text.Tests.FormatterTests:ValidateFormatterHelper[System.__Canon](System.Buffers.Text.Tests.FormatterTestData`1[System.__Canon])
121 ( 3.72% of base) : 226077.dasm - System.Buffers.Text.Tests.FormatterTests:ValidateFormatterHelper[ubyte](System.Buffers.Text.Tests.FormatterTestData`1[ubyte])
116 (16.84% of base) : 188530.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpCodeGenerationOptions:Equals(Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpCodeGenerationOptions):bool:this
113 (22.92% of base) : 187151.dasm - Microsoft.CodeAnalysis.CSharp.Simplification.CSharpSimplifierOptions:Equals(Microsoft.CodeAnalysis.CSharp.Simplification.CSharpSimplifierOptions):bool:this
111 ( 5.78% of base) : 68059.dasm - Microsoft.CodeAnalysis.SolutionState:GetOriginatingProjectId(Microsoft.CodeAnalysis.ISymbol):Microsoft.CodeAnalysis.ProjectId:this
99 ( 8.28% of base) : 279798.dasm - System.Collections.Concurrent.Tests.ProducerConsumerCollectionTests+LargeStruct:get_Value():long:this
99 ( 4.30% of base) : 219202.dasm - System.Diagnostics.DebuggerAttributes:ValidateDebuggerDisplayReferences(System.Object):System.String
99 ( 4.30% of base) : 115809.dasm - System.Diagnostics.DebuggerAttributes:ValidateDebuggerDisplayReferences(System.Object):System.String
99 ( 4.30% of base) : 139318.dasm - System.Diagnostics.DebuggerAttributes:ValidateDebuggerDisplayReferences(System.Object):System.String
99 ( 4.30% of base) : 277629.dasm - System.Diagnostics.DebuggerAttributes:ValidateDebuggerDisplayReferences(System.Object):System.String
99 ( 4.30% of base) : 316196.dasm - System.Diagnostics.DebuggerAttributes:ValidateDebuggerDisplayReferences(System.Object):System.String
99 ( 4.30% of base) : 246347.dasm - System.Diagnostics.DebuggerAttributes:ValidateDebuggerDisplayReferences(System.Object):System.String
99 ( 4.30% of base) : 325684.dasm - System.Diagnostics.DebuggerAttributes:ValidateDebuggerDisplayReferences(System.Object):System.String
Top method improvements (bytes):
-17 (-1.01% of base) : 115.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Text.RegularExpressions.RegexCache+Key,System.__Canon],System.Text.RegularExpressions.RegexCache+Key,System.Nullable`1[int],System.__Canon,bool,bool,byref):bool:this
-12 (-1.06% of base) : 111526.dasm - System.Xml.XmlConvertTests.VerifyNameTests1:v2():int:this
-11 (-0.88% of base) : 133272.dasm - Microsoft.NetCore.Analyzers.Runtime.DoNotPassLiteralsAsLocalizedParameters:ShouldBeLocalized(Microsoft.CodeAnalysis.IParameterSymbol,Microsoft.CodeAnalysis.IPropertySymbol,Microsoft.CodeAnalysis.INamedTypeSymbol,Microsoft.CodeAnalysis.INamedTypeSymbol,Microsoft.CodeAnalysis.INamedTypeSymbol,System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.INamedTypeSymbol],bool):bool
-10 (-0.59% of base) : 54123.dasm - System.Text.Json.Serialization.Samples.JsonSerializerExtensions+JsonDynamicNumber:TryConvert(System.Type,byref):bool:this
-5 (-0.63% of base) : 262289.dasm - Humanizer.Inflections.Vocabulary:ApplyRules(System.Collections.Generic.IList`1[Humanizer.Inflections.Vocabulary+Rule],System.String,bool):System.String:this
-4 (-0.32% of base) : 336555.dasm - Castle.Components.DictionaryAdapter.DictionaryAdapterBase:CancelEdit():this
-4 (-0.30% of base) : 189514.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.ITypeSymbolExtensions+<FindApplicableAliasAsync>d__9:MoveNext():this
-4 (-0.62% of base) : 135017.dasm - Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.InterfaceMethodsShouldBeCallableByChildTypesAnalyzer:AnalyzeOperationBlock(Microsoft.CodeAnalysis.Diagnostics.OperationBlockAnalysisContext,Microsoft.CodeAnalysis.INamedTypeSymbol)
-4 (-0.98% of base) : 109239.dasm - System.Xml.XslCompiledTransformApiTests.CTransformStrStrTest:TransformStrStr11(int,int):this
-3 (-0.37% of base) : 250089.dasm - Autofac.Util.TypeExtensions:ParameterCompatibleWithTypeConstraint(System.Type,System.Type):bool
-3 (-0.14% of base) : 74609.dasm - Microsoft.CodeAnalysis.Options.GlobalOptionService:SetGlobalOptions(Roslyn.Utilities.OneOrMany`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.Options.OptionKey2,System.Object]]):bool:this
-2 (-0.25% of base) : 130353.dasm - Analyzer.Utilities.BoundedCacheWithFactory`2[System.__Canon,System.Nullable`1[int]]:GetOrCreateValue(System.__Canon,System.Func`2[System.__Canon,System.Nullable`1[int]]):System.Nullable`1[int]:this
-2 (-0.11% of base) : 69281.dasm - Microsoft.CodeAnalysis.FlowAnalysis.CustomDataFlowAnalysis`1[System.Numerics.Vector`1[float]]:RunCore(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.FlowAnalysis.BasicBlock],Microsoft.CodeAnalysis.FlowAnalysis.DataFlowAnalyzer`1[System.Numerics.Vector`1[float]],int,int,System.Numerics.Vector`1[float],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FlowAnalysis.BasicBlock],System.Collections.Generic.SortedSet`1[int],Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowRegion,bool],Microsoft.CodeAnalysis.PooledObjects.PooledHashSet`1[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowRegion],System.Threading.CancellationToken):System.Numerics.Vector`1[float]
-2 (-0.09% of base) : 69298.dasm - Microsoft.CodeAnalysis.FlowAnalysis.SymbolUsageAnalysis.SymbolUsageResult:IsInitialParameterValueUsed(Microsoft.CodeAnalysis.IParameterSymbol):bool:this
-2 (-0.16% of base) : 74176.dasm - Microsoft.CodeAnalysis.Rename.ConflictEngine.DeclarationConflictHelpers:GetConflictLocations(Microsoft.CodeAnalysis.ISymbol,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.ISymbol],bool,System.Func`2[Microsoft.CodeAnalysis.ISymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol]]]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location]
-2 (-0.22% of base) : 134739.dasm - Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.DefineAccessorsForAttributeArgumentsAnalyzer:AnalyzeParameters(Microsoft.CodeAnalysis.Compilation,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.IParameterSymbol],System.Collections.Generic.IDictionary`2[System.String,Microsoft.CodeAnalysis.IPropertySymbol],Microsoft.CodeAnalysis.INamedTypeSymbol,System.Action`1[Microsoft.CodeAnalysis.Diagnostic])
-2 (-0.26% of base) : 136785.dasm - Microsoft.NetCore.Analyzers.Security.DoNotCallDangerousMethodsInDeserialization+<>c__DisplayClass6_0:<Initialize>g__FindCalledDangerousMethod|3(Microsoft.CodeAnalysis.ISymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.ISymbol],System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.ISymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.ISymbol]]):this
-2 (-0.08% of base) : 277969.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[System.__Canon]:VerifyEnumerator(System.Collections.Generic.IEnumerator`1[System.__Canon],System.__Canon[],int,int,bool,bool):this
-2 (-0.08% of base) : 115988.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[System.__Canon]:VerifyEnumerator(System.Collections.Generic.IEnumerator`1[System.__Canon],System.__Canon[],int,int,bool,bool):this
-2 (-0.13% of base) : 292885.dasm - System.IO.Pipelines.Tests.StreamPipeReaderTests+<>c__DisplayClass3_0+<<CanReadMultipleTimes>g__DoAsyncRead|0>d:MoveNext():this
Top method regressions (percentages):
46 (27.54% of base) : 309129.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass11_0:<MethodSignatureEncoder_Parameters>b__5():this
46 (27.54% of base) : 309137.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass23_0:<LiteralEncoder_TaggedVector>b__3():this
46 (27.54% of base) : 309141.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass25_0:<LiteralEncoder_TaggedScalar>b__3():this
46 (27.54% of base) : 309164.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass45_0:<SignatureTypeEncoder_Array>b__3():this
46 (27.54% of base) : 309200.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass6_0:<BlobEncoder_CustomAttributeSignature>b__3():this
113 (22.92% of base) : 187151.dasm - Microsoft.CodeAnalysis.CSharp.Simplification.CSharpSimplifierOptions:Equals(Microsoft.CodeAnalysis.CSharp.Simplification.CSharpSimplifierOptions):bool:this
89 (21.14% of base) : 72901.dasm - Microsoft.CodeAnalysis.Simplification.SimplifierOptions:Equals(Microsoft.CodeAnalysis.Simplification.SimplifierOptions):bool:this
74 (21.02% of base) : 75532.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeStyle.VisualBasicIdeCodeStyleOptions:Equals(Microsoft.CodeAnalysis.VisualBasic.CodeStyle.VisualBasicIdeCodeStyleOptions):bool:this
57 (20.50% of base) : 69251.dasm - Microsoft.CodeAnalysis.NamingStyles.NamingStyle:Equals(Microsoft.CodeAnalysis.NamingStyles.NamingStyle):bool:this
45 (20.27% of base) : 68120.dasm - Microsoft.CodeAnalysis.SourceGeneratorIdentity:op_Inequality(Microsoft.CodeAnalysis.SourceGeneratorIdentity,Microsoft.CodeAnalysis.SourceGeneratorIdentity):bool
44 (17.81% of base) : 323535.dasm - System.Text.RegularExpressions.Generator.RegexGenerator+RegexType:Equals(System.Text.RegularExpressions.Generator.RegexGenerator+RegexType):bool:this
37 (17.79% of base) : 68124.dasm - Microsoft.CodeAnalysis.SourceGeneratorIdentity:Equals(Microsoft.CodeAnalysis.SourceGeneratorIdentity):bool:this
34 (17.17% of base) : 68121.dasm - Microsoft.CodeAnalysis.SourceGeneratorIdentity:op_Equality(Microsoft.CodeAnalysis.SourceGeneratorIdentity,Microsoft.CodeAnalysis.SourceGeneratorIdentity):bool
116 (16.84% of base) : 188530.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpCodeGenerationOptions:Equals(Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpCodeGenerationOptions):bool:this
128 (16.78% of base) : 170941.dasm - System.Runtime.Serialization.Formatters.Tests.ObjectWithIntStringUShortUIntULongAndCustomObjectFields:Equals(System.Object):bool:this
41 (15.13% of base) : 68123.dasm - Microsoft.CodeAnalysis.SourceGeneratorIdentity:Equals(System.Object):bool:this
95 (14.87% of base) : 323520.dasm - System.Text.RegularExpressions.Generator.RegexGenerator+RegexMethod:Equals(System.Text.RegularExpressions.Generator.RegexGenerator+RegexMethod):bool:this
252 (14.63% of base) : 78380.dasm - Microsoft.CodeAnalysis.CodeStyle.IdeCodeStyleOptions:Equals(Microsoft.CodeAnalysis.CodeStyle.IdeCodeStyleOptions):bool:this
64 (14.13% of base) : 345344.dasm - Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec:Equals(Microsoft.Extensions.Configuration.Binder.SourceGeneration.TypeSpec):bool:this
284 (14.06% of base) : 188204.dasm - Microsoft.CodeAnalysis.CSharp.CodeStyle.CSharpIdeCodeStyleOptions:Equals(Microsoft.CodeAnalysis.CSharp.CodeStyle.CSharpIdeCodeStyleOptions):bool:this
Top method improvements (percentages):
-12 (-1.06% of base) : 111526.dasm - System.Xml.XmlConvertTests.VerifyNameTests1:v2():int:this
-17 (-1.01% of base) : 115.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Text.RegularExpressions.RegexCache+Key,System.__Canon],System.Text.RegularExpressions.RegexCache+Key,System.Nullable`1[int],System.__Canon,bool,bool,byref):bool:this
-4 (-0.98% of base) : 109239.dasm - System.Xml.XslCompiledTransformApiTests.CTransformStrStrTest:TransformStrStr11(int,int):this
-11 (-0.88% of base) : 133272.dasm - Microsoft.NetCore.Analyzers.Runtime.DoNotPassLiteralsAsLocalizedParameters:ShouldBeLocalized(Microsoft.CodeAnalysis.IParameterSymbol,Microsoft.CodeAnalysis.IPropertySymbol,Microsoft.CodeAnalysis.INamedTypeSymbol,Microsoft.CodeAnalysis.INamedTypeSymbol,Microsoft.CodeAnalysis.INamedTypeSymbol,System.Collections.Immutable.ImmutableHashSet`1[Microsoft.CodeAnalysis.INamedTypeSymbol],bool):bool
-5 (-0.63% of base) : 262289.dasm - Humanizer.Inflections.Vocabulary:ApplyRules(System.Collections.Generic.IList`1[Humanizer.Inflections.Vocabulary+Rule],System.String,bool):System.String:this
-4 (-0.62% of base) : 135017.dasm - Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.InterfaceMethodsShouldBeCallableByChildTypesAnalyzer:AnalyzeOperationBlock(Microsoft.CodeAnalysis.Diagnostics.OperationBlockAnalysisContext,Microsoft.CodeAnalysis.INamedTypeSymbol)
-10 (-0.59% of base) : 54123.dasm - System.Text.Json.Serialization.Samples.JsonSerializerExtensions+JsonDynamicNumber:TryConvert(System.Type,byref):bool:this
-1 (-0.58% of base) : 336393.dasm - Castle.Core.Configuration.ConfigurationCollection:get_Item(System.String):Castle.Core.Configuration.IConfiguration:this
-3 (-0.37% of base) : 250089.dasm - Autofac.Util.TypeExtensions:ParameterCompatibleWithTypeConstraint(System.Type,System.Type):bool
-4 (-0.32% of base) : 336555.dasm - Castle.Components.DictionaryAdapter.DictionaryAdapterBase:CancelEdit():this
-4 (-0.30% of base) : 189514.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.ITypeSymbolExtensions+<FindApplicableAliasAsync>d__9:MoveNext():this
-2 (-0.26% of base) : 136785.dasm - Microsoft.NetCore.Analyzers.Security.DoNotCallDangerousMethodsInDeserialization+<>c__DisplayClass6_0:<Initialize>g__FindCalledDangerousMethod|3(Microsoft.CodeAnalysis.ISymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.ISymbol],System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.ISymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.ISymbol]]):this
-2 (-0.25% of base) : 130353.dasm - Analyzer.Utilities.BoundedCacheWithFactory`2[System.__Canon,System.Nullable`1[int]]:GetOrCreateValue(System.__Canon,System.Func`2[System.__Canon,System.Nullable`1[int]]):System.Nullable`1[int]:this
-2 (-0.22% of base) : 134739.dasm - Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.DefineAccessorsForAttributeArgumentsAnalyzer:AnalyzeParameters(Microsoft.CodeAnalysis.Compilation,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.IParameterSymbol],System.Collections.Generic.IDictionary`2[System.String,Microsoft.CodeAnalysis.IPropertySymbol],Microsoft.CodeAnalysis.INamedTypeSymbol,System.Action`1[Microsoft.CodeAnalysis.Diagnostic])
-2 (-0.16% of base) : 74176.dasm - Microsoft.CodeAnalysis.Rename.ConflictEngine.DeclarationConflictHelpers:GetConflictLocations(Microsoft.CodeAnalysis.ISymbol,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.ISymbol],bool,System.Func`2[Microsoft.CodeAnalysis.ISymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol]]]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location]
-3 (-0.14% of base) : 74609.dasm - Microsoft.CodeAnalysis.Options.GlobalOptionService:SetGlobalOptions(Roslyn.Utilities.OneOrMany`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.Options.OptionKey2,System.Object]]):bool:this
-2 (-0.13% of base) : 292885.dasm - System.IO.Pipelines.Tests.StreamPipeReaderTests+<>c__DisplayClass3_0+<<CanReadMultipleTimes>g__DoAsyncRead|0>d:MoveNext():this
-2 (-0.11% of base) : 69281.dasm - Microsoft.CodeAnalysis.FlowAnalysis.CustomDataFlowAnalysis`1[System.Numerics.Vector`1[float]]:RunCore(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.FlowAnalysis.BasicBlock],Microsoft.CodeAnalysis.FlowAnalysis.DataFlowAnalyzer`1[System.Numerics.Vector`1[float]],int,int,System.Numerics.Vector`1[float],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FlowAnalysis.BasicBlock],System.Collections.Generic.SortedSet`1[int],Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowRegion,bool],Microsoft.CodeAnalysis.PooledObjects.PooledHashSet`1[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowRegion],System.Threading.CancellationToken):System.Numerics.Vector`1[float]
-2 (-0.09% of base) : 69298.dasm - Microsoft.CodeAnalysis.FlowAnalysis.SymbolUsageAnalysis.SymbolUsageResult:IsInitialParameterValueUsed(Microsoft.CodeAnalysis.IParameterSymbol):bool:this
-2 (-0.08% of base) : 277969.dasm - System.Collections.Tests.IEnumerable_Generic_Tests`1[System.__Canon]:VerifyEnumerator(System.Collections.Generic.IEnumerator`1[System.__Canon],System.__Canon[],int,int,bool,bool):this
realworld.run.windows.x64.checked.mch
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: 13758228 (overridden on cmd)
Total bytes of diff: 13759346 (overridden on cmd)
Total bytes of delta: 1118 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
166 : 23790.dasm (8.01% of base)
82 : 37131.dasm (1.43% of base)
66 : 1028.dasm (6.08% of base)
66 : 19371.dasm (0.88% of base)
46 : 34164.dasm (2.22% of base)
45 : 24989.dasm (0.75% of base)
33 : 1078.dasm (5.46% of base)
32 : 25207.dasm (4.83% of base)
28 : 29226.dasm (1.37% of base)
23 : 37799.dasm (2.60% of base)
22 : 36214.dasm (1.23% of base)
21 : 27489.dasm (1.13% of base)
20 : 16265.dasm (3.85% of base)
18 : 32655.dasm (3.59% of base)
17 : 25445.dasm (1.72% of base)
13 : 13328.dasm (0.76% of base)
13 : 16103.dasm (1.82% of base)
13 : 5167.dasm (2.57% of base)
13 : 13680.dasm (0.81% of base)
13 : 15513.dasm (4.98% of base)
Top file improvements (bytes):
-4 : 1994.dasm (-1.81% of base)
-4 : 461.dasm (-0.27% of base)
-1 : 23998.dasm (-0.08% of base)
35 total files with Code Size differences (3 improved, 32 regressed), 15 unchanged.
Top method regressions (bytes):
166 ( 8.01% of base) : 23790.dasm - Microsoft.CodeAnalysis.VersionHelper:TryParse(System.String,bool,ushort,bool,byref):bool
82 ( 1.43% of base) : 37131.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:VisitMethod(Microsoft.CodeAnalysis.IMethodSymbol):this
66 ( 6.08% of base) : 1028.dasm - BepuPhysics.Solver:Register[BepuPhysics.Constraints.BallSocket]():this
66 ( 0.88% of base) : 19371.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__86:MoveNext():this
46 ( 2.22% of base) : 34164.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerManager+<GetAnalyzerActionsAsync>d__12:MoveNext():this
45 ( 0.75% of base) : 24989.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this
33 ( 5.46% of base) : 1078.dasm - BepuPhysics.CollisionDetection.NarrowPhase:RegisterContactConstraintAccessor(BepuPhysics.CollisionDetection.ContactConstraintAccessor):this
32 ( 4.83% of base) : 25207.dasm - System.Guid:TryParseExact(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref):bool
28 ( 1.37% of base) : 29226.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitIncrementOperator(Microsoft.CodeAnalysis.CSharp.BoundIncrementOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this
23 ( 2.60% of base) : 37799.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[System.__Canon]:CompleteCore():bool:this
22 ( 1.23% of base) : 36214.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver+<<GetPerSymbolAnalyzerActionsAsync>g__getSymbolActionsCoreAsync|153_2>d:MoveNext():this
21 ( 1.13% of base) : 27489.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckFieldValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundFieldAccess,ushort,bool,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):bool:this
20 ( 3.85% of base) : 16265.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.OrderedDitherFactory:CreateDitherMatrix(uint):SixLabors.ImageSharp.DenseMatrix`1[uint]
18 ( 3.59% of base) : 32655.dasm - Microsoft.Cci.Extensions:ShouldInclude(Microsoft.Cci.ITypeDefinitionMember,Microsoft.CodeAnalysis.Emit.EmitContext):bool
17 ( 1.72% of base) : 25445.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckForStructBadInitializers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this
13 ( 0.76% of base) : 13328.dasm - FSharp.Compiler.CheckExpressions:TcLookupThen$cont@9141(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.AccessibilityLogic+AccessorDomain,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.Text.Range,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Infos+PropInfo],System.String,FSharp.Compiler.Infos+PropInfo,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem],FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynExpr,Microsoft.FSharp.Core.Unit):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv]
13 ( 0.81% of base) : 13680.dasm - FSharp.Compiler.CheckExpressions+TcAndPublishValSpec@12003:Invoke(FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.CheckExpressions+ValSpecResult):System.Tuple`2[FSharp.Compiler.TypedTree+Val,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv]:this
13 ( 4.98% of base) : 15513.dasm - FSharp.Compiler.CodeAnalysis.ParseAndCheckFile:getLightSyntaxStatus(System.String,FSharp.Compiler.CodeAnalysis.FSharpParsingOptions):FSharp.Compiler.Lexhelp+LightSyntaxStatus
13 ( 0.46% of base) : 23469.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValue(Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
13 ( 1.82% of base) : 16103.dasm - System.Reflection.Metadata.MetadataReader:ReadStreamHeaders(byref):System.Reflection.Metadata.Ecma335.StreamHeader[]
Top method improvements (bytes):
-4 (-1.81% of base) : 1994.dasm - MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
-4 (-0.27% of base) : 461.dasm - System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
-1 (-0.08% of base) : 23998.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this
Top method regressions (percentages):
166 ( 8.01% of base) : 23790.dasm - Microsoft.CodeAnalysis.VersionHelper:TryParse(System.String,bool,ushort,bool,byref):bool
66 ( 6.08% of base) : 1028.dasm - BepuPhysics.Solver:Register[BepuPhysics.Constraints.BallSocket]():this
33 ( 5.46% of base) : 1078.dasm - BepuPhysics.CollisionDetection.NarrowPhase:RegisterContactConstraintAccessor(BepuPhysics.CollisionDetection.ContactConstraintAccessor):this
13 ( 4.98% of base) : 15513.dasm - FSharp.Compiler.CodeAnalysis.ParseAndCheckFile:getLightSyntaxStatus(System.String,FSharp.Compiler.CodeAnalysis.FSharpParsingOptions):FSharp.Compiler.Lexhelp+LightSyntaxStatus
32 ( 4.83% of base) : 25207.dasm - System.Guid:TryParseExact(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],byref):bool
20 ( 3.85% of base) : 16265.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.OrderedDitherFactory:CreateDitherMatrix(uint):SixLabors.ImageSharp.DenseMatrix`1[uint]
18 ( 3.59% of base) : 32655.dasm - Microsoft.Cci.Extensions:ShouldInclude(Microsoft.Cci.ITypeDefinitionMember,Microsoft.CodeAnalysis.Emit.EmitContext):bool
5 ( 3.07% of base) : 25032.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckForUnmatchedOperator(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],System.String,System.Action`3[Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.String,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol])
23 ( 2.60% of base) : 37799.dasm - Microsoft.CodeAnalysis.Diagnostics.AsyncQueue`1[System.__Canon]:CompleteCore():bool:this
13 ( 2.57% of base) : 5167.dasm - System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this
8 ( 2.35% of base) : 19771.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetResult():this
46 ( 2.22% of base) : 34164.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerManager+<GetAnalyzerActionsAsync>d__12:MoveNext():this
4 ( 2.12% of base) : 36462.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:UnwrapAliases(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]
6 ( 1.90% of base) : 16933.dasm - SixLabors.ImageSharp.Metadata.Profiles.Icc.IccProfile:CheckIsValid():bool:this
13 ( 1.82% of base) : 16103.dasm - System.Reflection.Metadata.MetadataReader:ReadStreamHeaders(byref):System.Reflection.Metadata.Ecma335.StreamHeader[]
17 ( 1.72% of base) : 25445.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckForStructBadInitializers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this
10 ( 1.68% of base) : 23905.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetUpdatedSymbol(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):this
82 ( 1.43% of base) : 37131.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:VisitMethod(Microsoft.CodeAnalysis.IMethodSymbol):this
28 ( 1.37% of base) : 29226.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitIncrementOperator(Microsoft.CodeAnalysis.CSharp.BoundIncrementOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this
11 ( 1.35% of base) : 34113.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<GetAllDiagnosticsAsync>d__42:MoveNext():this
Top method improvements (percentages):
-4 (-1.81% of base) : 1994.dasm - MS.Internal.Xml.XPath.XPathParser:ParseUnaryExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this
-4 (-0.27% of base) : 461.dasm - System.RuntimeType:GetMethodBase(System.RuntimeType,long):System.Reflection.MethodBase
-1 (-0.08% of base) : 23998.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this