Diffs are based on 2,564,417 contexts (1,007,474 MinOpts, 1,556,943 FullOpts).
MISSED contexts: base: 447 (0.02%), diff: 476 (0.02%)
Overall (-180,912 bytes)
Collection | Base size (bytes) | Diff size (bytes) | PerfScore in Diffs |
---|---|---|---|
aspnet.run.windows.x64.checked.mch | 52,204,894 | -32,024 | -8.65% |
benchmarks.run.windows.x64.checked.mch | 8,796,073 | -3,776 | -3.62% |
benchmarks.run_pgo.windows.x64.checked.mch | 33,511,827 | -5,887 | -9.58% |
benchmarks.run_tiered.windows.x64.checked.mch | 12,469,177 | -1,927 | -4.88% |
coreclr_tests.run.windows.x64.checked.mch | 402,635,518 | -14,352 | -2.27% |
libraries.crossgen2.windows.x64.checked.mch | 45,117,703 | -6,130 | -1.44% |
libraries.pmi.windows.x64.checked.mch | 62,176,676 | -17,666 | -3.37% |
libraries_tests.run.windows.x64.Release.mch | 283,466,158 | -60,411 | -6.18% |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 137,234,766 | -26,389 | -0.85% |
realworld.run.windows.x64.checked.mch | 13,455,455 | -7,866 | -2.16% |
smoke_tests.nativeaot.windows.x64.checked.mch | 5,099,711 | -4,484 | -2.60% |
FullOpts (-180,912 bytes)
Collection | Base size (bytes) | Diff size (bytes) | PerfScore in Diffs |
---|---|---|---|
aspnet.run.windows.x64.checked.mch | 32,289,777 | -32,024 | -8.65% |
benchmarks.run.windows.x64.checked.mch | 8,795,713 | -3,776 | -3.62% |
benchmarks.run_pgo.windows.x64.checked.mch | 19,962,751 | -5,887 | -9.58% |
benchmarks.run_tiered.windows.x64.checked.mch | 3,217,764 | -1,927 | -4.88% |
coreclr_tests.run.windows.x64.checked.mch | 122,150,331 | -14,352 | -2.27% |
libraries.crossgen2.windows.x64.checked.mch | 45,116,516 | -6,130 | -1.44% |
libraries.pmi.windows.x64.checked.mch | 62,063,182 | -17,666 | -3.37% |
libraries_tests.run.windows.x64.Release.mch | 107,372,992 | -60,411 | -6.18% |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 126,394,892 | -26,389 | -0.85% |
realworld.run.windows.x64.checked.mch | 13,049,814 | -7,866 | -2.16% |
smoke_tests.nativeaot.windows.x64.checked.mch | 5,098,764 | -4,484 | -2.60% |
Example diffs
aspnet.run.windows.x64.checked.mch
-5 (-20.00%) : 45859.dasm - System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
@@ -17,17 +17,17 @@ G_M54891_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M54891_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
nop
- ;; size=16 bbWeight=1 PerfScore 1.50
+ ;; size=11 bbWeight=1 PerfScore 1.50
G_M54891_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 25, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 25 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
+; Total bytes of code 20, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 20 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
; ============================================================
Unwind Info:
-30 (-18.40%) : 8862.dasm - System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this (Instrumented Tier1)
@@ -31,22 +31,22 @@ G_M22329_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rsi]
test rsi, rsi
je SHORT G_M22329_IG06
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov rsi, gword ptr [rsi+0x30]
- ;; size=28 bbWeight=1 PerfScore 6.50
+ ;; size=23 bbWeight=1 PerfScore 6.50
G_M22329_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
jne SHORT G_M22329_IG09
;; size=5 bbWeight=1 PerfScore 1.25
G_M22329_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
nop
- ;; size=16 bbWeight=1 PerfScore 1.50
+ ;; size=11 bbWeight=1 PerfScore 1.50
G_M22329_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -61,34 +61,34 @@ G_M22329_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {
;; size=4 bbWeight=0 PerfScore 0.00
G_M22329_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
jmp SHORT G_M22329_IG04
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M22329_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
jmp SHORT G_M22329_IG04
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M22329_IG09: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi]
test byte ptr [rsi+0x34], 8
jne SHORT G_M22329_IG07
test byte ptr [rbx+0x34], 4
je SHORT G_M22329_IG08
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
- ;; size=48 bbWeight=0 PerfScore 0.00
+ ;; size=38 bbWeight=0 PerfScore 0.00
G_M22329_IG10: ; bbWeight=0, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -97,7 +97,7 @@ G_M22329_IG10: ; bbWeight=0, epilog, nogc, extend
; gcr arg pop 0
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 163, prolog size 9, PerfScore 14.00, instruction count 41, allocated bytes for code 163 (MethodHash=059da8c6) for method System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this (Instrumented Tier1)
+; Total bytes of code 133, prolog size 9, PerfScore 14.00, instruction count 41, allocated bytes for code 133 (MethodHash=059da8c6) for method System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this (Instrumented Tier1)
; ============================================================
Unwind Info:
-30 (-17.86%) : 83838.dasm - System.Threading.ExecutionContext:RestoreChangedContextToThread(System.Threading.Thread,System.Threading.ExecutionContext,System.Threading.ExecutionContext) (Instrumented Tier1)
@@ -43,21 +43,21 @@ G_M450_IG03: ; bbWeight=0.92, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}
jne SHORT G_M450_IG08
;; size=7 bbWeight=0.92 PerfScore 3.68
G_M450_IG04: ; bbWeight=0.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=15 bbWeight=0.46 PerfScore 0.57
+ ;; size=10 bbWeight=0.46 PerfScore 0.57
G_M450_IG05: ; bbWeight=0.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
jne SHORT G_M450_IG09
;; size=5 bbWeight=0.97 PerfScore 1.22
G_M450_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
nop
- ;; size=16 bbWeight=1 PerfScore 1.50
+ ;; size=11 bbWeight=1 PerfScore 1.50
G_M450_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -66,35 +66,35 @@ G_M450_IG07: ; bbWeight=1, epilog, nogc, extend
;; size=7 bbWeight=1 PerfScore 2.25
G_M450_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
jmp SHORT G_M450_IG11
- ;; size=17 bbWeight=0.46 PerfScore 1.49
+ ;; size=12 bbWeight=0.46 PerfScore 1.49
G_M450_IG09: ; bbWeight=0.23, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x10], 0
jne SHORT G_M450_IG11
;; size=7 bbWeight=0.23 PerfScore 0.94
G_M450_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
jmp SHORT G_M450_IG06
- ;; size=17 bbWeight=0.12 PerfScore 0.38
+ ;; size=12 bbWeight=0.12 PerfScore 0.38
G_M450_IG11: ; bbWeight=0.05, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rsi]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
- ;; size=36 bbWeight=0.05 PerfScore 0.14
+ ;; size=26 bbWeight=0.05 PerfScore 0.14
G_M450_IG12: ; bbWeight=0.05, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -103,7 +103,7 @@ G_M450_IG12: ; bbWeight=0.05, epilog, nogc, extend
; gcr arg pop 0
;; size=12 bbWeight=0.05 PerfScore 0.15
-; Total bytes of code 168, prolog size 12, PerfScore 18.07, instruction count 41, allocated bytes for code 168 (MethodHash=8cedfe3d) for method System.Threading.ExecutionContext:RestoreChangedContextToThread(System.Threading.Thread,System.Threading.ExecutionContext,System.Threading.ExecutionContext) (Instrumented Tier1)
+; Total bytes of code 138, prolog size 12, PerfScore 18.07, instruction count 41, allocated bytes for code 138 (MethodHash=8cedfe3d) for method System.Threading.ExecutionContext:RestoreChangedContextToThread(System.Threading.Thread,System.Threading.ExecutionContext,System.Threading.ExecutionContext) (Instrumented Tier1)
; ============================================================
Unwind Info:
+5 (+16.13%) : 108609.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 136928
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 136928
; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-; V05 cse0 [V05,T03] ( 3, 3 ) ref -> rax "CSE #01: aggressive"
+;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;
; Lcl frame size = 0
@@ -24,34 +23,41 @@ G_M57887_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
mov rax, gword ptr [rcx+0x18]
; gcrRegs +[rax]
- mov rcx, rax
- test rcx, rcx
- je SHORT G_M57887_IG05
- test dl, dl
+ test rax, rax
je SHORT G_M57887_IG04
- ;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rcx]
- mov ecx, dword ptr [rcx+0x5C]
- ; gcrRegs -[rcx]
- and ecx, 7
- cmp ecx, 6
- je SHORT G_M57887_IG03
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ test dl, dl
+ je SHORT G_M57887_IG08
+ ;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ jmp SHORT G_M57887_IG06
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06: ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05: ; bbWeight=0, epilog, nogc, extend
ret
;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rcx]
+ mov rax, gword ptr [rcx+0x18]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07: ; bbWeight=0, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov eax, dword ptr [rax+0x5C]
+ ; gcrRegs -[rax]
+ and eax, 7
+ cmp eax, 6
+ jne SHORT G_M57887_IG04
+ jmp SHORT G_M57887_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
+5 (+16.13%) : 114658.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 129856
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 129856
; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-; V05 cse0 [V05,T03] ( 3, 3 ) ref -> rax "CSE #01: aggressive"
+;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;
; Lcl frame size = 0
@@ -24,34 +23,41 @@ G_M57887_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
mov rax, gword ptr [rcx+0x18]
; gcrRegs +[rax]
- mov rcx, rax
- test rcx, rcx
- je SHORT G_M57887_IG05
- test dl, dl
+ test rax, rax
je SHORT G_M57887_IG04
- ;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rcx]
- mov ecx, dword ptr [rcx+0x5C]
- ; gcrRegs -[rcx]
- and ecx, 7
- cmp ecx, 6
- je SHORT G_M57887_IG03
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ test dl, dl
+ je SHORT G_M57887_IG08
+ ;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ jmp SHORT G_M57887_IG06
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06: ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05: ; bbWeight=0, epilog, nogc, extend
ret
;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rcx]
+ mov rax, gword ptr [rcx+0x18]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07: ; bbWeight=0, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov eax, dword ptr [rax+0x5C]
+ ; gcrRegs -[rax]
+ and eax, 7
+ cmp eax, 6
+ jne SHORT G_M57887_IG04
+ jmp SHORT G_M57887_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
+5 (+16.13%) : 119749.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 137632
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 137632
; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-; V05 cse0 [V05,T03] ( 3, 3 ) ref -> rax "CSE #01: aggressive"
+;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;
; Lcl frame size = 0
@@ -24,34 +23,41 @@ G_M57887_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
mov rax, gword ptr [rcx+0x18]
; gcrRegs +[rax]
- mov rcx, rax
- test rcx, rcx
- je SHORT G_M57887_IG05
- test dl, dl
+ test rax, rax
je SHORT G_M57887_IG04
- ;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rcx]
- mov ecx, dword ptr [rcx+0x5C]
- ; gcrRegs -[rcx]
- and ecx, 7
- cmp ecx, 6
- je SHORT G_M57887_IG03
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ test dl, dl
+ je SHORT G_M57887_IG08
+ ;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ jmp SHORT G_M57887_IG06
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06: ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05: ; bbWeight=0, epilog, nogc, extend
ret
;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rcx]
+ mov rax, gword ptr [rcx+0x18]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07: ; bbWeight=0, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov eax, dword ptr [rax+0x5C]
+ ; gcrRegs -[rax]
+ and eax, 7
+ cmp eax, 6
+ jne SHORT G_M57887_IG04
+ jmp SHORT G_M57887_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
benchmarks.run.windows.x64.checked.mch
-9 (-6.98%) : 7635.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
@@ -53,28 +53,28 @@ G_M18424_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r
xor r11d, r11d
xor ebx, ebx
test ecx, ecx
- jle SHORT G_M18424_IG12
+ jle SHORT G_M18424_IG10
;; size=28 bbWeight=1 PerfScore 13.75
G_M18424_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
cmp r11d, r8d
- jae SHORT G_M18424_IG07
+ jae SHORT G_M18424_IG09
lea esi, [r11+0x01]
mov r11d, r11d
movzx rdi, byte ptr [r9+rbx]
mov byte ptr [rax+r11], dil
inc ebx
cmp ebx, ecx
- jl SHORT G_M18424_IG11
+ jl SHORT G_M18424_IG08
;; size=27 bbWeight=4 PerfScore 26.00
G_M18424_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
; byrRegs -[r9]
xor ecx, ecx
test edx, edx
- jle SHORT G_M18424_IG10
+ jle SHORT G_M18424_IG06
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
cmp esi, r8d
- jae SHORT G_M18424_IG09
+ jae SHORT G_M18424_IG06
mov r9d, esi
lea esi, [r9+0x01]
movzx r11, byte ptr [r10+rcx]
@@ -83,40 +83,34 @@ G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10},
cmp ecx, edx
jl SHORT G_M18424_IG05
;; size=27 bbWeight=4 PerfScore 26.00
-G_M18424_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18424_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax r10]
- mov r11d, esi
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M18424_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, r11d
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M18424_IG08: ; bbWeight=1, epilog, nogc, extend
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M18424_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M18424_IG09: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov r11d, esi
- jmp SHORT G_M18424_IG07
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r11d, esi
- jmp SHORT G_M18424_IG07
- ;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M18424_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
+G_M18424_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, gcvars, byref, isz
; byrRegs +[rax r9-r10]
mov r11d, esi
jmp SHORT G_M18424_IG03
;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
- ; byrRegs -[r9]
+G_M18424_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax r9-r10]
+ mov esi, r11d
+ jmp SHORT G_M18424_IG06
+ ;; size=5 bbWeight=2 PerfScore 4.50
+G_M18424_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
+ ; byrRegs +[rax r10]
mov esi, r11d
jmp SHORT G_M18424_IG04
;; size=5 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 129, prolog size 7, PerfScore 83.94, instruction count 50, allocated bytes for code 129 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 120, prolog size 7, PerfScore 82.88, instruction count 47, allocated bytes for code 120 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
-29 (-5.56%) : 18344.dasm - Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (FullOpts)
@@ -44,10 +44,10 @@
;* V33 tmp26 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.MethodDefinitionHandle>
;* V35 tmp28 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.MethodDefinitionHandle>
-; V36 tmp29 [V36,T21] ( 2, 2 ) int -> r8 single-def "Inline stloc first use temp"
+; V36 tmp29 [V36,T21] ( 2, 2 ) int -> rax single-def "Inline stloc first use temp"
;* V37 tmp30 [V37 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V38 tmp31 [V38,T07] ( 3, 6 ) byref -> r10 single-def "Inlining Arg"
-; V39 tmp32 [V39,T09] ( 3, 6 ) int -> r8 "Inlining Arg"
+; V38 tmp31 [V38,T07] ( 3, 6 ) byref -> r8 single-def "Inlining Arg"
+; V39 tmp32 [V39,T09] ( 3, 6 ) int -> rax "Inlining Arg"
;* V40 tmp33 [V40 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
; V41 tmp34 [V41,T17] ( 2, 2 ) int -> rsi single-def "field V01._rowId (fldOffset=0x0)" P-INDEP
; V42 tmp35 [V42,T04] ( 5, 5 ) int -> [rbp+0x20] EH-live single-def "field V02._rowId (fldOffset=0x0)" P-INDEP
@@ -61,7 +61,7 @@
; V50 tmp43 [V50,T22] ( 2, 2 ) int -> r14 single-def "field V22._rowId (fldOffset=0x0)" P-INDEP
;* V51 tmp44 [V51 ] ( 0, 0 ) int -> zero-ref single-def "field V23._rowId (fldOffset=0x0)" P-INDEP
;* V52 tmp45 [V52 ] ( 0, 0 ) int -> zero-ref "field V30._rowId (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T23] ( 2, 2 ) int -> r8 single-def "field V34._rowId (fldOffset=0x0)" P-INDEP
+; V53 tmp46 [V53,T23] ( 2, 2 ) int -> rax single-def "field V34._rowId (fldOffset=0x0)" P-INDEP
;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref single-def "field V35._rowId (fldOffset=0x0)" P-INDEP
; V55 PSPSym [V55,T24] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
; V56 cse0 [V56,T19] ( 3, 3 ) int -> rcx "CSE #17: moderate"
@@ -114,8 +114,7 @@ G_M29476_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx]
; gcr arg pop 0
mov r14d, eax
- mov eax, dword ptr [rbp+0x20]
- ;; size=20 bbWeight=1 PerfScore 5.75
+ ;; size=17 bbWeight=1 PerfScore 4.75
G_M29476_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, r14d
shr ecx, 24
@@ -133,57 +132,57 @@ G_M29476_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
add r14d, dword ptr [rdi+0x10]
mov edx, r14d
add rdx, 2
- movsxd r8, dword ptr [rcx+0x08]
- cmp rdx, r8
+ movsxd rax, dword ptr [rcx+0x08]
+ cmp rdx, rax
ja G_M29476_IG09
mov rcx, qword ptr [rcx]
; byrRegs -[rcx]
movsxd rdx, r14d
movzx rdi, word ptr [rcx+rdx]
; byrRegs -[rdi]
- jmp G_M29476_IG07
- ;; size=78 bbWeight=1 PerfScore 23.50
-G_M29476_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M29476_IG07
+ ;; size=75 bbWeight=1 PerfScore 23.50
+G_M29476_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
lea rdx, bword ptr [rdi+0x1B8]
; byrRegs +[rdx]
- mov r8d, r14d
- and r8d, 0xD1FFAB1E
- dec r8d
- imul r8d, dword ptr [rdx+0x20]
- lea r10, bword ptr [rdx+0x28]
- ; byrRegs +[r10]
- add r8d, dword ptr [rdx+0x10]
- mov edx, r8d
+ mov eax, r14d
+ and eax, 0xD1FFAB1E
+ dec eax
+ imul eax, dword ptr [rdx+0x20]
+ lea r8, bword ptr [rdx+0x28]
+ ; byrRegs +[r8]
+ add eax, dword ptr [rdx+0x10]
+ mov edx, eax
; byrRegs -[rdx]
add rdx, 2
- movsxd r9, dword ptr [r10+0x08]
- cmp rdx, r9
- ja G_M29476_IG09
- mov rdx, qword ptr [r10]
- movsxd r8, r8d
- movzx rdx, word ptr [rdx+r8]
- mov r8d, ecx
- and r8d, 15
- mov r10d, edx
- ; byrRegs -[r10]
- and r10d, -8
- or r10d, 1
- cmp r8d, 6
- cmove edx, r10d
- mov r8d, edx
- or r8d, 0x400
- test cl, 16
- cmovne edx, r8d
+ movsxd r10, dword ptr [r8+0x08]
+ cmp rdx, r10
+ ja SHORT G_M29476_IG09
+ mov rdx, qword ptr [r8]
+ cdqe
+ movzx rdx, word ptr [rdx+rax]
+ mov eax, ecx
+ and eax, 15
mov r8d, edx
+ ; byrRegs -[r8]
and r8d, -8
- or r8d, 6
+ or r8d, 1
+ cmp eax, 6
+ cmove edx, r8d
+ mov eax, edx
+ or eax, 0x400
+ test cl, 16
+ cmovne edx, eax
+ mov eax, edx
+ and eax, -8
+ or eax, 6
test cl, 32
- cmovne edx, r8d
+ cmovne edx, eax
mov edi, edx
; gcrRegs -[rdi]
or edi, 128
- ;; size=133 bbWeight=1 PerfScore 24.25
+ ;; size=110 bbWeight=1 PerfScore 24.25
G_M29476_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test dil, 64
jne SHORT G_M29476_IG10
@@ -307,7 +306,7 @@ G_M29476_IG22: ; bbWeight=0, funclet epilog, nogc, extend
RWD00 dq 006200740056005Fh, 007000610047006Ch
-; Total bytes of code 522, prolog size 34, PerfScore 120.75, instruction count 163, allocated bytes for code 522 (MethodHash=7a9e8cdb) for method Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (FullOpts)
+; Total bytes of code 493, prolog size 34, PerfScore 119.75, instruction count 162, allocated bytes for code 493 (MethodHash=7a9e8cdb) for method Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (FullOpts)
; ============================================================
Unwind Info:
-22 (-5.25%) : 3161.dasm - System.Random:AssertInRange(double) (FullOpts)
@@ -64,12 +64,12 @@ G_M126_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor ecx, ecx
vucomisd xmm1, xmm0
seta cl
- vmovsd xmm0, qword ptr [rsp+0x60]
jmp SHORT G_M126_IG05
- ;; size=31 bbWeight=0.50 PerfScore 6.12
+ ;; size=25 bbWeight=0.50 PerfScore 4.62
G_M126_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor ecx, ecx
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ vmovsd qword ptr [rsp+0x60], xmm0
+ ;; size=8 bbWeight=0.50 PerfScore 0.62
G_M126_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rbx, cl
test ebx, ebx
@@ -83,7 +83,6 @@ G_M126_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=6 bbWeight=0.50 PerfScore 1.25
G_M126_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- vmovsd qword ptr [rsp+0x60], xmm0
mov rcx, 0xD1FFAB1E ; System.Text.StringBuilder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -103,8 +102,7 @@ G_M126_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
mov edi, 1
- vmovsd xmm0, qword ptr [rsp+0x60]
- ;; size=74 bbWeight=0.50 PerfScore 5.00
+ ;; size=62 bbWeight=0.50 PerfScore 3.00
G_M126_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov gword ptr [rsp+0x28], rsi
xor rcx, rcx
@@ -130,24 +128,22 @@ G_M126_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea r8, bword ptr [r8+2*rax+0x10]
; gcrRegs -[r8]
; byrRegs +[r8]
- vmovdqu ymm1, ymmword ptr [rdx]
- vmovdqu ymmword ptr [r8], ymm1
+ vmovdqu ymm0, ymmword ptr [rdx]
+ vmovdqu ymmword ptr [r8], ymm0
mov dword ptr [rcx+0x18], r10d
jmp SHORT G_M126_IG11
;; size=54 bbWeight=0.50 PerfScore 10.50
G_M126_IG10: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
; byrRegs -[r8]
- vmovsd qword ptr [rsp+0x60], xmm0
mov r8d, 16
call [<unknown method>]
; gcrRegs -[rcx]
; byrRegs -[rdx]
; gcr arg pop 0
- vmovsd xmm0, qword ptr [rsp+0x60]
- ;; size=24 bbWeight=0.50 PerfScore 3.62
+ ;; size=12 bbWeight=0.50 PerfScore 1.62
G_M126_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rcx, [rsp+0x28]
- vmovaps xmm1, xmm0
+ vmovsd xmm1, qword ptr [rsp+0x60]
call [<unknown method>]
; gcr arg pop 0
mov rcx, gword ptr [rsp+0x28]
@@ -170,7 +166,7 @@ G_M126_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov qword ptr [r8+0x04], r9
mov dword ptr [rcx+0x18], r10d
jmp SHORT G_M126_IG13
- ;; size=74 bbWeight=0.50 PerfScore 11.88
+ ;; size=76 bbWeight=0.50 PerfScore 13.25
G_M126_IG12: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
; byrRegs -[r8]
mov r8d, 6
@@ -226,7 +222,7 @@ G_M126_IG19: ; bbWeight=1, epilog, nogc, extend
RWD00 dq 3FF0000000000000h ; 1
-; Total bytes of code 419, prolog size 24, PerfScore 69.50, instruction count 101, allocated bytes for code 419 (MethodHash=81e8ff81) for method System.Random:AssertInRange(double) (FullOpts)
+; Total bytes of code 397, prolog size 24, PerfScore 65.88, instruction count 97, allocated bytes for code 397 (MethodHash=81e8ff81) for method System.Random:AssertInRange(double) (FullOpts)
; ============================================================
Unwind Info:
+3 (+12.50%) : 21648.dasm - System.Memory.MemoryMarshal`1[ubyte]:GetReference():byref:this (FullOpts)
@@ -33,24 +33,27 @@ G_M50325_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[rax rcx]
xor rax, rax
; byrRegs +[rax]
+ mov rcx, rax
+ ; byrRegs +[rcx]
jmp SHORT G_M50325_IG05
- ;; size=4 bbWeight=0.50 PerfScore 1.12
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
G_M50325_IG04: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs +[rax]
- ; byrRegs -[rax]
+ ; byrRegs -[rax rcx]
lea rcx, bword ptr [rax+0x10]
; byrRegs +[rcx]
mov eax, dword ptr [rax+0x08]
; gcrRegs -[rax]
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M50325_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
mov rax, rcx
; byrRegs +[rax]
- ;; size=10 bbWeight=0.50 PerfScore 1.38
-G_M50325_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, epilog, nogc
- ; byrRegs -[rcx]
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M50325_IG06: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 24, prolog size 0, PerfScore 6.75, instruction count 9, allocated bytes for code 24 (MethodHash=31d03b6a) for method System.Memory.MemoryMarshal`1[ubyte]:GetReference():byref:this (FullOpts)
+; Total bytes of code 27, prolog size 0, PerfScore 7.00, instruction count 10, allocated bytes for code 27 (MethodHash=31d03b6a) for method System.Memory.MemoryMarshal`1[ubyte]:GetReference():byref:this (FullOpts)
; ============================================================
Unwind Info:
+9 (+16.36%) : 3252.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:AreAllBucketsEmpty():ubyte:this (FullOpts)
@@ -16,8 +16,8 @@
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
-; V08 tmp7 [V08,T03] ( 2, 4 ) int -> r8 "Inlining Arg"
-; V09 tmp8 [V09,T02] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+; V08 tmp7 [V08,T03] ( 2, 4 ) int -> rdx "Inlining Arg"
+; V09 tmp8 [V09,T02] ( 2, 4 ) byref -> r8 single-def "Inlining Arg"
;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -64,34 +64,40 @@ G_M12223_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
xor rcx, rcx
; byrRegs +[rcx]
xor r8d, r8d
+ mov rax, rcx
+ ; byrRegs +[rax]
+ mov ecx, r8d
+ ; byrRegs -[rcx]
+ mov r8, rax
+ ; byrRegs +[r8]
jmp SHORT G_M12223_IG05
- ;; size=7 bbWeight=0.50 PerfScore 1.25
+ ;; size=16 bbWeight=0.50 PerfScore 1.62
G_M12223_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ ; byrRegs -[rax r8]
lea r8, bword ptr [rcx+0x10]
; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08]
; gcrRegs -[rcx]
- mov eax, ecx
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M12223_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+ mov edx, ecx
mov rcx, r8
; byrRegs +[rcx]
- mov r8d, eax
+ mov r8d, edx
; byrRegs -[r8]
- ;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M12223_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
xor edx, edx
call [<unknown method>]
; byrRegs -[rcx]
; gcr arg pop 0
shr eax, 31
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=19 bbWeight=1 PerfScore 4.50
G_M12223_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 55, prolog size 4, PerfScore 13.38, instruction count 18, allocated bytes for code 55 (MethodHash=bc02d040) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:AreAllBucketsEmpty():ubyte:this (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 14.12, instruction count 21, allocated bytes for code 64 (MethodHash=bc02d040) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:AreAllBucketsEmpty():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+9 (+16.36%) : 10728.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:AreAllBucketsEmpty():ubyte:this (FullOpts)
@@ -16,8 +16,8 @@
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
-; V08 tmp7 [V08,T03] ( 2, 4 ) int -> r8 "Inlining Arg"
-; V09 tmp8 [V09,T02] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+; V08 tmp7 [V08,T03] ( 2, 4 ) int -> rdx "Inlining Arg"
+; V09 tmp8 [V09,T02] ( 2, 4 ) byref -> r8 single-def "Inlining Arg"
;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -64,34 +64,40 @@ G_M38377_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
xor rcx, rcx
; byrRegs +[rcx]
xor r8d, r8d
+ mov rax, rcx
+ ; byrRegs +[rax]
+ mov ecx, r8d
+ ; byrRegs -[rcx]
+ mov r8, rax
+ ; byrRegs +[r8]
jmp SHORT G_M38377_IG05
- ;; size=7 bbWeight=0.50 PerfScore 1.25
+ ;; size=16 bbWeight=0.50 PerfScore 1.62
G_M38377_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ ; byrRegs -[rax r8]
lea r8, bword ptr [rcx+0x10]
; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08]
; gcrRegs -[rcx]
- mov eax, ecx
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M38377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+ mov edx, ecx
mov rcx, r8
; byrRegs +[rcx]
- mov r8d, eax
+ mov r8d, edx
; byrRegs -[r8]
- ;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M38377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
xor edx, edx
call [<unknown method>]
; byrRegs -[rcx]
; gcr arg pop 0
shr eax, 31
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=19 bbWeight=1 PerfScore 4.50
G_M38377_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 55, prolog size 4, PerfScore 13.38, instruction count 18, allocated bytes for code 55 (MethodHash=9a9e6a16) for method System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:AreAllBucketsEmpty():ubyte:this (FullOpts)
+; Total bytes of code 64, prolog size 4, PerfScore 14.12, instruction count 21, allocated bytes for code 64 (MethodHash=9a9e6a16) for method System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:AreAllBucketsEmpty():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-21 (-8.61%) : 84154.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
@@ -9,29 +9,30 @@
; 4 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) byref -> rcx this single-def
-; V01 TypeCtx [V01,T02] ( 4, 3.31) long -> rdx single-def
-; V02 arg1 [V02,T00] ( 9, 11.97) ref -> rbx class-hnd single-def <System.__Canon>
-; V03 loc0 [V03,T04] ( 4, 2.55) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V00 this [V00,T02] ( 3, 3 ) byref -> rcx this single-def
+; V01 TypeCtx [V01,T01] ( 4, 3.31) long -> rdx single-def
+; V02 arg1 [V02,T00] ( 9, 5.21) ref -> rbx class-hnd single-def <System.__Canon>
+; V03 loc0 [V03,T03] ( 4, 2.55) ref -> rsi class-hnd exact single-def <<unknown class>>
; V04 loc1 [V04,T05] ( 6, 1.86) int -> rax
-; V05 loc2 [V05,T14] ( 3, 0.93) ref -> rdi class-hnd single-def <<unknown class>>
-; V06 loc3 [V06,T08] ( 10, 1.41) int -> r14
+; V05 loc2 [V05,T15] ( 3, 0.93) ref -> rdi class-hnd single-def <<unknown class>>
+; V06 loc3 [V06,T09] ( 10, 1.41) int -> r14
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
-; V08 loc5 [V08,T09] ( 6, 1.10) ref -> rcx class-hnd <System.__Canon>
+; V08 loc5 [V08,T10] ( 6, 1.10) ref -> rcx class-hnd <System.__Canon>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T06] ( 4, 0.48) int -> rax "guarded devirt return temp"
-; V11 tmp2 [V11,T01] ( 5, 8.69) ref -> rcx class-hnd exact "guarded devirt this exact temp" <System.String>
+; V10 tmp1 [V10,T07] ( 4, 0.48) int -> rax "guarded devirt return temp"
+; V11 tmp2 [V11,T06] ( 4, 1.69) ref -> rcx class-hnd exact "guarded devirt this exact temp" <System.String>
;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.String>
-;* V13 tmp4 [V13,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
-; V14 tmp5 [V14,T12] ( 2, 0.97) byref -> rax "impAppendStmt"
+;* V13 tmp4 [V13,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
+; V14 tmp5 [V14,T13] ( 2, 0.97) byref -> rcx "impAppendStmt"
;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp11 [V20,T07] ( 3, 1.45) ref -> rax single-def "arr expr"
-; V21 cse0 [V21,T13] ( 5, 0.93) int -> rbp "CSE #01: conservative"
-; V22 cse1 [V22,T11] ( 3, 0.97) long -> r8 "CSE #02: conservative"
+; V20 tmp11 [V20,T08] ( 3, 1.45) ref -> rax single-def "arr expr"
+; V21 cse0 [V21,T14] ( 5, 0.93) int -> rbp "CSE #01: conservative"
+; V22 cse1 [V22,T04] ( 3, 2.17) int -> r8 "CSE #04: aggressive"
+; V23 cse2 [V23,T12] ( 3, 0.97) long -> r8 "CSE #02: conservative"
;
; Lcl frame size = 48
@@ -51,7 +52,7 @@ G_M33817_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx},
mov rsi, gword ptr [rcx]
; gcrRegs +[rsi]
test rsi, rsi
- jne SHORT G_M33817_IG09
+ jne SHORT G_M33817_IG05
;; size=8 bbWeight=1 PerfScore 3.25
G_M33817_IG03: ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi]
@@ -68,48 +69,8 @@ G_M33817_IG04: ; bbWeight=0.69, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=0.69 PerfScore 2.59
-G_M33817_IG05: ; bbWeight=7.72, gcVars=0000000000000000 {}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rcx rbx rsi rdi]
- mov r8d, dword ptr [rcx+0x08]
- cmp r8d, dword ptr [rbx+0x08]
- jne G_M33817_IG18
- ;; size=14 bbWeight=7.72 PerfScore 46.34
-G_M33817_IG06: ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
- lea rax, bword ptr [rcx+0x0C]
- ; byrRegs +[rax]
- mov r8d, dword ptr [rcx+0x08]
- add r8d, r8d
- lea rdx, bword ptr [rbx+0x0C]
- ; byrRegs +[rdx]
- mov rcx, rax
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- call [<unknown method>]
- ; byrRegs -[rax rcx rdx]
- ; gcr arg pop 0
- test eax, eax
- je G_M33817_IG18
- ;; size=32 bbWeight=0.24 PerfScore 1.87
-G_M33817_IG07: ; bbWeight=0.24, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rdi]
- mov rax, gword ptr [rsi+0x10]
- ; gcrRegs +[rax]
- cmp r14d, dword ptr [rax+0x08]
- jae SHORT G_M33817_IG16
- mov ecx, r14d
- mov rax, gword ptr [rax+8*rcx+0x10]
- ;; size=18 bbWeight=0.24 PerfScore 1.99
-G_M33817_IG08: ; bbWeight=0.24, epilog, nogc, extend
- add rsp, 48
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=0.24 PerfScore 0.91
-G_M33817_IG09: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rbx]
+G_M33817_IG05: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rbx rsi]
mov rcx, rdx
mov rdx, rbx
; gcrRegs +[rdx]
@@ -127,41 +88,74 @@ G_M33817_IG09: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=004
idiv edx:eax, ebp
mov r14d, edx
;; size=34 bbWeight=0.31 PerfScore 10.63
-G_M33817_IG10: ; bbWeight=0.31, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M33817_IG06: ; bbWeight=0.31, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp r14d, ebp
- jae SHORT G_M33817_IG16
+ jae SHORT G_M33817_IG15
mov r8d, r14d
mov rcx, gword ptr [rdi+8*r8+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M33817_IG03
- ;; size=22 bbWeight=0.31 PerfScore 1.47
-G_M33817_IG11: ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M33817_IG03
+ ;; size=18 bbWeight=0.31 PerfScore 1.47
+G_M33817_IG07: ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r8, 0xD1FFAB1E ; System.String
cmp qword ptr [rcx], r8
- jne SHORT G_M33817_IG17
+ jne SHORT G_M33817_IG16
;; size=15 bbWeight=0.24 PerfScore 1.03
-G_M33817_IG12: ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M33817_IG08: ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp rcx, rbx
- je SHORT G_M33817_IG07
+ je SHORT G_M33817_IG13
;; size=5 bbWeight=0.24 PerfScore 0.30
-G_M33817_IG13: ; bbWeight=0.97, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M33817_IG09: ; bbWeight=0.97, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je SHORT G_M33817_IG18
+ je SHORT G_M33817_IG17
;; size=5 bbWeight=0.97 PerfScore 1.21
-G_M33817_IG14: ; bbWeight=0.48, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M33817_IG10: ; bbWeight=0.48, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp qword ptr [rbx], r8
- jne SHORT G_M33817_IG18
+ jne SHORT G_M33817_IG17
;; size=5 bbWeight=0.48 PerfScore 1.93
-G_M33817_IG15: ; bbWeight=0.97, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
- jmp G_M33817_IG05
- ;; size=5 bbWeight=0.97 PerfScore 1.93
-G_M33817_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx rbx rsi rdi]
+G_M33817_IG11: ; bbWeight=0.97, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov r8d, dword ptr [rcx+0x08]
+ cmp r8d, dword ptr [rbx+0x08]
+ jne SHORT G_M33817_IG17
+ ;; size=10 bbWeight=0.97 PerfScore 5.79
+G_M33817_IG12: ; bbWeight=0.24, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ add rcx, 12
+ ; gcrRegs -[rcx]
+ ; byrRegs +[rcx]
+ add r8d, r8d
+ lea rdx, bword ptr [rbx+0x0C]
+ ; byrRegs +[rdx]
+ call [<unknown method>]
+ ; byrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ test eax, eax
+ je SHORT G_M33817_IG17
+ ;; size=21 bbWeight=0.24 PerfScore 1.27
+G_M33817_IG13: ; bbWeight=0.24, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx rdi]
+ mov rax, gword ptr [rsi+0x10]
+ ; gcrRegs +[rax]
+ cmp r14d, dword ptr [rax+0x08]
+ jae SHORT G_M33817_IG15
+ mov ecx, r14d
+ mov rax, gword ptr [rax+8*rcx+0x10]
+ ;; size=18 bbWeight=0.24 PerfScore 1.99
+G_M33817_IG14: ; bbWeight=0.24, epilog, nogc, extend
+ add rsp, 48
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=0.24 PerfScore 0.91
+G_M33817_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rsi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M33817_IG17: ; bbWeight=0, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M33817_IG16: ; bbWeight=0, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rbx rsi rdi]
mov rdx, rbx
; gcrRegs +[rdx]
@@ -171,17 +165,17 @@ G_M33817_IG17: ; bbWeight=0, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne G_M33817_IG07
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M33817_IG18: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M33817_IG13
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M33817_IG17: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
inc r14d
cmp ebp, r14d
- jg SHORT G_M33817_IG10
+ jg G_M33817_IG06
sub r14d, ebp
- jmp SHORT G_M33817_IG10
- ;; size=13 bbWeight=0 PerfScore 0.00
+ jmp G_M33817_IG06
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 18, PerfScore 82.12, instruction count 82, allocated bytes for code 244 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
+; Total bytes of code 223, prolog size 18, PerfScore 39.03, instruction count 79, allocated bytes for code 223 (MethodHash=f7327be6) for method System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
-42 (-6.48%) : 50385.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
@@ -10,15 +10,15 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T06] ( 12, 249.72) ref -> rsi class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T06] ( 12, 249.79) ref -> rsi class-hnd single-def <System.__Canon[]>
; V02 arg2 [V02,T02] ( 15, 599.90) ref -> rbx class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T10] ( 5, 4 ) int -> r9 single-def
-; V04 arg4 [V04,T11] ( 1, 1 ) int -> [rsp+0x80] single-def
-; V05 loc0 [V05,T07] ( 11, 247.56) int -> rdi
-; V06 loc1 [V06,T08] ( 13, 12.41) int -> rax
+; V03 arg3 [V03,T11] ( 5, 4 ) int -> r9 single-def
+; V04 arg4 [V04,T12] ( 1, 1 ) int -> [rsp+0x80] single-def
+; V05 loc0 [V05,T07] ( 11, 247.63) int -> rdi
+; V06 loc1 [V06,T09] ( 13, 12.45) int -> rax
; V07 loc2 [V07,T01] ( 13, 967.85) int -> rbp
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T12] ( 6, 0 ) int -> r15 "guarded devirt return temp"
+; V09 tmp1 [V09,T08] ( 6, 0 ) int -> r15 "guarded devirt return temp"
; V10 tmp2 [V10,T00] ( 18,1910.06) ref -> r14 "guarded devirt arg temp"
;* V11 tmp3 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.String>
@@ -27,7 +27,7 @@
; V15 tmp7 [V15,T14] ( 6, 0 ) byref -> rdx "spilling arg"
; V16 tmp8 [V16,T15] ( 6, 0 ) long -> r8 "spilling arg"
; V17 tmp9 [V17,T16] ( 6, 0 ) int -> r15 "Grabbing temp for Qmark"
-; V18 cse0 [V18,T09] ( 3, 7.21) ref -> r14 "CSE #10: aggressive"
+; V18 cse0 [V18,T10] ( 3, 7.21) ref -> r14 "CSE #10: aggressive"
; V19 cse1 [V19,T03] ( 3, 713.55) ref -> r14 "CSE #03: aggressive"
; V20 cse2 [V20,T04] ( 6, 596.90) long -> rax multi-def "CSE #04: aggressive"
; V21 rat0 [V21,T17] ( 3, 0 ) byref -> rcx "ReplaceWithLclVar is creating a new local variable"
@@ -56,52 +56,54 @@ G_M28111_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
mov edi, r9d
add edi, dword ptr [rsp+0x80]
test rbx, rbx
- jne SHORT G_M28111_IG11
+ jne SHORT G_M28111_IG12
;; size=15 bbWeight=1 PerfScore 3.50
G_M28111_IG03: ; bbWeight=0.52, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
mov eax, r9d
cmp eax, edi
- jge G_M28111_IG36
+ jge G_M28111_IG27
;; size=11 bbWeight=0.52 PerfScore 0.78
-G_M28111_IG04: ; bbWeight=0.43, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG04: ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
- je SHORT G_M28111_IG08
+ je SHORT G_M28111_IG09
+ ;; size=5 bbWeight=0.47 PerfScore 0.59
+G_M28111_IG05: ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov r9d, eax
or r9d, edi
- jl SHORT G_M28111_IG08
+ jl SHORT G_M28111_IG09
cmp dword ptr [rsi+0x08], edi
- jl SHORT G_M28111_IG08
- ;; size=18 bbWeight=0.43 PerfScore 2.90
-G_M28111_IG05: ; bbWeight=2.44, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M28111_IG09
+ ;; size=13 bbWeight=0.47 PerfScore 2.57
+G_M28111_IG06: ; bbWeight=2.44, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, eax
cmp gword ptr [rsi+8*rcx+0x10], 0
- je SHORT G_M28111_IG10
+ je SHORT G_M28111_IG11
;; size=10 bbWeight=2.44 PerfScore 10.36
-G_M28111_IG06: ; bbWeight=2.71, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG07: ; bbWeight=2.71, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
inc eax
cmp eax, edi
- jl SHORT G_M28111_IG05
+ jl SHORT G_M28111_IG06
;; size=6 bbWeight=2.71 PerfScore 4.06
-G_M28111_IG07: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG08: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- jmp G_M28111_IG36
- ;; size=5 bbWeight=0.27 PerfScore 0.55
-G_M28111_IG08: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jmp G_M28111_IG27
+ ;; size=5 bbWeight=0.27 PerfScore 0.54
+G_M28111_IG09: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
cmp eax, dword ptr [rsi+0x08]
- jae G_M28111_IG40
+ jae G_M28111_IG31
mov ecx, eax
cmp gword ptr [rsi+8*rcx+0x10], 0
- je SHORT G_M28111_IG10
+ je SHORT G_M28111_IG11
;; size=19 bbWeight=0.02 PerfScore 0.20
-G_M28111_IG09: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG10: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
inc eax
cmp eax, edi
- jl SHORT G_M28111_IG08
- jmp G_M28111_IG36
+ jl SHORT G_M28111_IG09
+ jmp G_M28111_IG27
;; size=11 bbWeight=0.03 PerfScore 0.10
-G_M28111_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M28111_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rsi]
add rsp, 40
pop rbx
@@ -112,209 +114,95 @@ G_M28111_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop r15
ret
;; size=13 bbWeight=0.25 PerfScore 1.05
-G_M28111_IG11: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M28111_IG12: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rsi]
mov ebp, r9d
cmp ebp, edi
- jge G_M28111_IG36
+ jge G_M28111_IG27
;; size=11 bbWeight=0.48 PerfScore 0.72
-G_M28111_IG12: ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M28111_IG13: ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
- je G_M28111_IG25
+ je SHORT G_M28111_IG21
mov eax, ebp
or eax, edi
- jl G_M28111_IG25
+ jl SHORT G_M28111_IG21
cmp dword ptr [rsi+0x08], edi
- jl G_M28111_IG25
- ;; size=28 bbWeight=0.48 PerfScore 3.23
-G_M28111_IG13: ; bbWeight=238.59, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jl SHORT G_M28111_IG21
+ ;; size=16 bbWeight=0.48 PerfScore 3.24
+G_M28111_IG14: ; bbWeight=238.59, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov eax, ebp
mov r14, gword ptr [rsi+8*rax+0x10]
; gcrRegs +[r14]
test r14, r14
- je G_M28111_IG23
- ;; size=16 bbWeight=238.59 PerfScore 835.07
-G_M28111_IG14: ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ je SHORT G_M28111_IG19
+ ;; size=12 bbWeight=238.59 PerfScore 835.07
+G_M28111_IG15: ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; System.String
cmp qword ptr [r14], rax
- jne G_M28111_IG21
+ jne G_M28111_IG35
;; size=19 bbWeight=236.37 PerfScore 1004.57
-G_M28111_IG15: ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+G_M28111_IG16: ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
cmp r14, rbx
- je G_M28111_IG38
- ;; size=9 bbWeight=236.37 PerfScore 295.46
-G_M28111_IG16: ; bbWeight=118.19, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ je SHORT G_M28111_IG29
+ ;; size=5 bbWeight=236.37 PerfScore 295.46
+G_M28111_IG17: ; bbWeight=118.19, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
cmp qword ptr [rbx], rax
- jne G_M28111_IG23
- ;; size=9 bbWeight=118.19 PerfScore 472.74
-G_M28111_IG17: ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ jne SHORT G_M28111_IG19
+ ;; size=5 bbWeight=118.19 PerfScore 472.74
+G_M28111_IG18: ; bbWeight=236.37, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [r14+0x08]
cmp eax, dword ptr [rbx+0x08]
- jne G_M28111_IG23
- ;; size=13 bbWeight=236.37 PerfScore 1418.22
-G_M28111_IG18: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
- mov ecx, 1
- call [System.Diagnostics.Debug:Assert(ubyte)]
- ; gcr arg pop 0
- mov ecx, 1
- call [System.Diagnostics.Debug:Assert(ubyte)]
- ; gcr arg pop 0
- mov ecx, dword ptr [r14+0x08]
- cmp ecx, dword ptr [rbx+0x08]
- sete cl
- movzx rcx, cl
- call [System.Diagnostics.Debug:Assert(ubyte)]
- ; gcr arg pop 0
- lea rcx, bword ptr [r14+0x0C]
- ; byrRegs +[rcx]
- lea rdx, bword ptr [rbx+0x0C]
- ; byrRegs +[rdx]
- mov r8d, dword ptr [r14+0x08]
- add r8d, r8d
- cmp r8, 28
- jne SHORT G_M28111_IG19
- vmovups xmm0, xmmword ptr [rcx]
- vmovups xmm1, xmmword ptr [rcx+0x0C]
- vmovups xmm2, xmmword ptr [rdx]
- vpxor xmm1, xmm1, xmmword ptr [rdx+0x0C]
- vpternlogq xmm0, xmm2, xmm1, -66
- vptest xmm0, xmm0
- sete r15b
- movzx r15, r15b
- jmp SHORT G_M28111_IG20
- ;; size=102 bbWeight=0 PerfScore 0.00
-G_M28111_IG19: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0006 {rcx rdx}, byref
+ je SHORT G_M28111_IG32
+ ;; size=9 bbWeight=236.37 PerfScore 1418.22
+G_M28111_IG19: ; bbWeight=238.59, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
- call [<unknown method>]
- ; byrRegs -[rcx rdx]
- ; gcr arg pop 0
- mov r15d, eax
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M28111_IG20: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M28111_IG22
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M28111_IG21: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r14]
- mov rcx, r14
- ; gcrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rax, qword ptr [r14]
- mov rax, qword ptr [rax+0x48]
- call [rax+0x10]<unknown method>
- ; gcrRegs -[rcx rdx r14]
- ; gcr arg pop 0
- mov r15d, eax
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M28111_IG22: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- test r15d, r15d
- jne G_M28111_IG38
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M28111_IG23: ; bbWeight=238.59, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc ebp
cmp ebp, edi
- jl G_M28111_IG13
- ;; size=10 bbWeight=238.59 PerfScore 357.89
-G_M28111_IG24: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jl SHORT G_M28111_IG14
+ ;; size=6 bbWeight=238.59 PerfScore 357.89
+G_M28111_IG20: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
- jmp G_M28111_IG36
- ;; size=5 bbWeight=0.51 PerfScore 1.03
-G_M28111_IG25: ; bbWeight=2.41, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M28111_IG27
+ ;; size=2 bbWeight=0.51 PerfScore 1.03
+G_M28111_IG21: ; bbWeight=2.41, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi]
cmp ebp, dword ptr [rsi+0x08]
- jae G_M28111_IG40
...
-42 (-6.48%) : 94785.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
@@ -10,15 +10,15 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T06] ( 12, 250.12) ref -> rsi class-hnd single-def <System.__Canon[]>
+; V01 arg1 [V01,T06] ( 12, 250.20) ref -> rsi class-hnd single-def <System.__Canon[]>
; V02 arg2 [V02,T02] ( 15, 598.89) ref -> rbx class-hnd single-def <System.__Canon>
-; V03 arg3 [V03,T10] ( 5, 4 ) int -> r9 single-def
-; V04 arg4 [V04,T11] ( 1, 1 ) int -> [rsp+0x80] single-def
-; V05 loc0 [V05,T07] ( 11, 247.96) int -> rdi
-; V06 loc1 [V06,T08] ( 13, 12.41) int -> rax
+; V03 arg3 [V03,T11] ( 5, 4 ) int -> r9 single-def
+; V04 arg4 [V04,T12] ( 1, 1 ) int -> [rsp+0x80] single-def
+; V05 loc0 [V05,T07] ( 11, 248.04) int -> rdi
+; V06 loc1 [V06,T09] ( 13, 12.45) int -> rax
; V07 loc2 [V07,T01] ( 13, 969.47) int -> rbp
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T12] ( 6, 0 ) int -> r15 "guarded devirt return temp"
+; V09 tmp1 [V09,T08] ( 6, 0 ) int -> r15 "guarded devirt return temp"
; V10 tmp2 [V10,T00] ( 18,1906.83) ref -> r14 "guarded devirt arg temp"
;* V11 tmp3 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.String>
@@ -27,7 +27,7 @@
; V15 tmp7 [V15,T14] ( 6, 0 ) byref -> rdx "spilling arg"
; V16 tmp8 [V16,T15] ( 6, 0 ) long -> r8 "spilling arg"
; V17 tmp9 [V17,T16] ( 6, 0 ) int -> r15 "Grabbing temp for Qmark"
-; V18 cse0 [V18,T09] ( 3, 7.21) ref -> r14 "CSE #10: aggressive"
+; V18 cse0 [V18,T10] ( 3, 7.21) ref -> r14 "CSE #10: aggressive"
; V19 cse1 [V19,T03] ( 3, 713.95) ref -> r14 "CSE #03: aggressive"
; V20 cse2 [V20,T04] ( 6, 595.89) long -> rax multi-def "CSE #04: aggressive"
; V21 rat0 [V21,T17] ( 3, 0 ) byref -> rcx "ReplaceWithLclVar is creating a new local variable"
@@ -56,52 +56,54 @@ G_M28111_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
mov edi, r9d
add edi, dword ptr [rsp+0x80]
test rbx, rbx
- jne SHORT G_M28111_IG11
+ jne SHORT G_M28111_IG12
;; size=15 bbWeight=1 PerfScore 3.50
G_M28111_IG03: ; bbWeight=0.52, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
mov eax, r9d
cmp eax, edi
- jge G_M28111_IG34
+ jge G_M28111_IG25
;; size=11 bbWeight=0.52 PerfScore 0.78
-G_M28111_IG04: ; bbWeight=0.43, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG04: ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
- je SHORT G_M28111_IG08
+ je SHORT G_M28111_IG09
+ ;; size=5 bbWeight=0.47 PerfScore 0.59
+G_M28111_IG05: ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov r9d, eax
or r9d, edi
- jl SHORT G_M28111_IG08
+ jl SHORT G_M28111_IG09
cmp dword ptr [rsi+0x08], edi
- jl SHORT G_M28111_IG08
- ;; size=18 bbWeight=0.43 PerfScore 2.90
-G_M28111_IG05: ; bbWeight=2.44, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M28111_IG09
+ ;; size=13 bbWeight=0.47 PerfScore 2.57
+G_M28111_IG06: ; bbWeight=2.44, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, eax
cmp gword ptr [rsi+8*rcx+0x10], 0
- je SHORT G_M28111_IG10
+ je SHORT G_M28111_IG11
;; size=10 bbWeight=2.44 PerfScore 10.36
-G_M28111_IG06: ; bbWeight=2.71, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG07: ; bbWeight=2.71, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
inc eax
cmp eax, edi
- jl SHORT G_M28111_IG05
+ jl SHORT G_M28111_IG06
;; size=6 bbWeight=2.71 PerfScore 4.06
-G_M28111_IG07: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG08: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- jmp G_M28111_IG34
- ;; size=5 bbWeight=0.27 PerfScore 0.55
-G_M28111_IG08: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jmp G_M28111_IG25
+ ;; size=5 bbWeight=0.27 PerfScore 0.54
+G_M28111_IG09: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
cmp eax, dword ptr [rsi+0x08]
- jae G_M28111_IG38
+ jae G_M28111_IG29
mov ecx, eax
cmp gword ptr [rsi+8*rcx+0x10], 0
- je SHORT G_M28111_IG10
+ je SHORT G_M28111_IG11
;; size=19 bbWeight=0.02 PerfScore 0.20
-G_M28111_IG09: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG10: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
inc eax
cmp eax, edi
- jl SHORT G_M28111_IG08
- jmp G_M28111_IG34
+ jl SHORT G_M28111_IG09
+ jmp G_M28111_IG25
;; size=11 bbWeight=0.03 PerfScore 0.10
-G_M28111_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M28111_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rsi]
add rsp, 40
pop rbx
@@ -112,205 +114,91 @@ G_M28111_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop r15
ret
;; size=13 bbWeight=0.25 PerfScore 1.05
-G_M28111_IG11: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M28111_IG12: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rsi]
mov ebp, r9d
cmp ebp, edi
- jge G_M28111_IG34
+ jge G_M28111_IG25
;; size=11 bbWeight=0.48 PerfScore 0.72
-G_M28111_IG12: ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M28111_IG13: ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
- je G_M28111_IG24
+ je SHORT G_M28111_IG20
mov eax, ebp
or eax, edi
- jl G_M28111_IG24
+ jl SHORT G_M28111_IG20
cmp dword ptr [rsi+0x08], edi
- jl G_M28111_IG24
- ;; size=28 bbWeight=0.48 PerfScore 3.23
-G_M28111_IG13: ; bbWeight=238.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jl SHORT G_M28111_IG20
+ ;; size=16 bbWeight=0.48 PerfScore 3.24
+G_M28111_IG14: ; bbWeight=238.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov eax, ebp
mov r14, gword ptr [rsi+8*rax+0x10]
; gcrRegs +[r14]
test r14, r14
- je G_M28111_IG22
- ;; size=16 bbWeight=238.99 PerfScore 836.47
-G_M28111_IG14: ; bbWeight=235.97, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ je SHORT G_M28111_IG18
+ ;; size=12 bbWeight=238.99 PerfScore 836.47
+G_M28111_IG15: ; bbWeight=235.97, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; System.String
cmp qword ptr [r14], rax
- jne G_M28111_IG20
+ jne G_M28111_IG33
cmp r14, rbx
- je G_M28111_IG36
- ;; size=28 bbWeight=235.97 PerfScore 1297.84
-G_M28111_IG15: ; bbWeight=117.99, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ je SHORT G_M28111_IG27
+ ;; size=24 bbWeight=235.97 PerfScore 1297.84
+G_M28111_IG16: ; bbWeight=117.99, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
cmp qword ptr [rbx], rax
- jne G_M28111_IG22
- ;; size=9 bbWeight=117.99 PerfScore 471.94
-G_M28111_IG16: ; bbWeight=235.97, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+ jne SHORT G_M28111_IG18
+ ;; size=5 bbWeight=117.99 PerfScore 471.94
+G_M28111_IG17: ; bbWeight=235.97, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [r14+0x08]
cmp eax, dword ptr [rbx+0x08]
- jne G_M28111_IG22
- ;; size=13 bbWeight=235.97 PerfScore 1415.82
-G_M28111_IG17: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
- mov ecx, 1
- call [System.Diagnostics.Debug:Assert(ubyte)]
- ; gcr arg pop 0
- mov ecx, 1
- call [System.Diagnostics.Debug:Assert(ubyte)]
- ; gcr arg pop 0
- mov ecx, dword ptr [r14+0x08]
- cmp ecx, dword ptr [rbx+0x08]
- sete cl
- movzx rcx, cl
- call [System.Diagnostics.Debug:Assert(ubyte)]
- ; gcr arg pop 0
- lea rcx, bword ptr [r14+0x0C]
- ; byrRegs +[rcx]
- lea rdx, bword ptr [rbx+0x0C]
- ; byrRegs +[rdx]
- mov r8d, dword ptr [r14+0x08]
- add r8d, r8d
- cmp r8, 28
- jne SHORT G_M28111_IG18
- vmovups xmm0, xmmword ptr [rcx]
- vmovups xmm1, xmmword ptr [rcx+0x0C]
- vmovups xmm2, xmmword ptr [rdx]
- vpxor xmm1, xmm1, xmmword ptr [rdx+0x0C]
- vpternlogq xmm0, xmm2, xmm1, -66
- vptest xmm0, xmm0
- sete r15b
- movzx r15, r15b
- jmp SHORT G_M28111_IG19
- ;; size=102 bbWeight=0 PerfScore 0.00
-G_M28111_IG18: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0006 {rcx rdx}, byref
+ je SHORT G_M28111_IG30
+ ;; size=9 bbWeight=235.97 PerfScore 1415.82
+G_M28111_IG18: ; bbWeight=238.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
- call [<unknown method>]
- ; byrRegs -[rcx rdx]
- ; gcr arg pop 0
- mov r15d, eax
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M28111_IG19: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M28111_IG21
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M28111_IG20: ; bbWeight=0, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r14]
- mov rcx, r14
- ; gcrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rax, qword ptr [r14]
- mov rax, qword ptr [rax+0x48]
- call [rax+0x10]<unknown method>
- ; gcrRegs -[rcx rdx r14]
- ; gcr arg pop 0
- mov r15d, eax
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M28111_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- test r15d, r15d
- jne G_M28111_IG36
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M28111_IG22: ; bbWeight=238.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc ebp
cmp ebp, edi
- jl G_M28111_IG13
- ;; size=10 bbWeight=238.99 PerfScore 358.49
-G_M28111_IG23: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jl SHORT G_M28111_IG14
+ ;; size=6 bbWeight=238.99 PerfScore 358.49
+G_M28111_IG19: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
- jmp G_M28111_IG34
- ;; size=5 bbWeight=0.52 PerfScore 1.03
-G_M28111_IG24: ; bbWeight=2.41, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M28111_IG25
+ ;; size=2 bbWeight=0.52 PerfScore 1.03
+G_M28111_IG20: ; bbWeight=2.41, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi]
cmp ebp, dword ptr [rsi+0x08]
- jae G_M28111_IG38
+ jae SHORT G_M28111_IG29
mov eax, ebp
mov r14, gword ptr [rsi+8*rax+0x10]
...
+19 (+5.96%) : 62442.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte:this (Tier1)
@@ -9,27 +9,27 @@
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 8, 3.25) ref -> rsi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
+; V00 this [V00,T01] ( 8, 3.50) ref -> rsi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
; V01 arg1 [V01,T00] ( 12, 5.50) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V02 arg2 [V02,T02] ( 7, 2.25) int -> rdi single-def
-; V03 loc0 [V03,T05] ( 2, 0.25) ref -> rcx class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
+; V02 arg2 [V02,T02] ( 7, 2.50) int -> rdi single-def
+; V03 loc0 [V03,T04] ( 2, 0.50) ref -> rcx class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
-; V06 tmp2 [V06,T03] ( 3, 1.75) ubyte -> rax "Inline return value spill temp"
-; V07 tmp3 [V07,T04] ( 8, 1.37) ref -> rbp class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V06 tmp2 [V06,T09] ( 3, 0 ) ubyte -> rax "Inline return value spill temp"
+; V07 tmp3 [V07,T03] ( 8, 1.37) ref -> rbp class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V11 tmp7 [V11,T07] ( 3, 0.50) ubyte -> r14 single-def "Inline stloc first use temp"
-; V12 tmp8 [V12,T08] ( 4, 0.25) int -> rax "guarded devirt return temp"
+;* V10 tmp6 [V10,T08] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V11 tmp7 [V11,T06] ( 3, 0.50) ubyte -> r14 single-def "Inline stloc first use temp"
+; V12 tmp8 [V12,T07] ( 4, 0.25) int -> rax "guarded devirt return temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V14 tmp10 [V14,T06] ( 4, 0.50) ref -> rdx "guarded devirt return temp"
+; V14 tmp10 [V14,T05] ( 4, 0.50) ref -> rdx "guarded devirt return temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
; Lcl frame size = 32
-G_M42150_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M42150_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r14
push rdi
push rsi
@@ -42,58 +42,33 @@ G_M42150_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[rbx]
mov edi, r8d
;; size=19 bbWeight=1 PerfScore 6.00
-G_M42150_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M42150_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test rbx, rbx
- jne SHORT G_M42150_IG06
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M42150_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jne G_M42150_IG12
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M42150_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp rbx, rsi
- jne SHORT G_M42150_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M42150_IG04: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- mov eax, 1
- ;; size=5 bbWeight=0.75 PerfScore 0.19
-G_M42150_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=1 PerfScore 3.75
-G_M42150_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rsi]
- mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol
- cmp qword ptr [rbx], rcx
- jne SHORT G_M42150_IG03
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M42150_IG07: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov rcx, rbx
- ; gcrRegs +[rcx]
- jmp G_M42150_IG20
- ;; size=8 bbWeight=0.25 PerfScore 0.56
-G_M42150_IG08: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
+ je G_M42150_IG17
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M42150_IG04: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je SHORT G_M42150_IG14
+ je G_M42150_IG10
test dil, 2
- je SHORT G_M42150_IG10
- ;; size=11 bbWeight=0.25 PerfScore 0.62
-G_M42150_IG09: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M42150_IG06
+ ;; size=15 bbWeight=0.25 PerfScore 0.62
+G_M42150_IG05: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric
cmp qword ptr [rbx], rcx
- jne SHORT G_M42150_IG15
+ jne G_M42150_IG15
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_TypeKind():ubyte:this]
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 4
- je SHORT G_M42150_IG16
- ;; size=29 bbWeight=0.12 PerfScore 1.09
-G_M42150_IG10: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M42150_IG16
+ ;; size=37 bbWeight=0.12 PerfScore 1.09
+G_M42150_IG06: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol
@@ -103,19 +78,19 @@ G_M42150_IG10: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov rbp, rax
; gcrRegs +[rbp]
test rbp, rbp
- je SHORT G_M42150_IG14
+ je SHORT G_M42150_IG10
cmp byte ptr [rsi], sil
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol
cmp qword ptr [rbp], rcx
- jne SHORT G_M42150_IG12
+ jne SHORT G_M42150_IG08
;; size=45 bbWeight=0.25 PerfScore 2.56
-G_M42150_IG11: ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M42150_IG07: ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rdx, rbp
; gcrRegs +[rdx]
- jmp SHORT G_M42150_IG13
+ jmp SHORT G_M42150_IG09
;; size=5 bbWeight=0.12 PerfScore 0.28
-G_M42150_IG12: ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
+G_M42150_IG08: ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
mov rcx, rbp
; gcrRegs +[rcx]
@@ -127,21 +102,52 @@ G_M42150_IG12: ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000
mov rdx, rax
; gcrRegs +[rdx]
;; size=19 bbWeight=0.12 PerfScore 0.94
-G_M42150_IG13: ; bbWeight=0.25, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M42150_IG09: ; bbWeight=0.25, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
xor r14d, r14d
cmp rbp, rdx
sete r14b
test r14b, 1
- je SHORT G_M42150_IG17
+ je SHORT G_M42150_IG18
;; size=16 bbWeight=0.25 PerfScore 0.69
-G_M42150_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42150_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx rbp rsi]
xor eax, eax
- jmp G_M42150_IG05
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M42150_IG15: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M42150_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M42150_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rsi]
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol
+ cmp qword ptr [rbx], rcx
+ jne G_M42150_IG03
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M42150_IG13: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ mov r8d, edi
+ ;; size=9 bbWeight=0.25 PerfScore 0.19
+G_M42150_IG14: ; bbWeight=0.25, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ tail.jmp [Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte:this]
+ ; gcr arg pop 0
+ ;; size=16 bbWeight=0.25 PerfScore 1.19
+G_M42150_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx rdx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -150,23 +156,27 @@ G_M42150_IG15: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 4
- jne SHORT G_M42150_IG10
- ;; size=21 bbWeight=0 PerfScore 0.00
+ jne G_M42150_IG06
+ ;; size=25 bbWeight=0 PerfScore 0.00
G_M42150_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rsi+0x88]
and ecx, 63
cmp ecx, 1
- je G_M42150_IG04
- jmp G_M42150_IG10
- ;; size=23 bbWeight=0 PerfScore 0.00
-G_M42150_IG17: ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx] +[rdx rbp]
- or r14d, 1
- je SHORT G_M42150_IG18
- test dil, 29
- je SHORT G_M42150_IG14
- ;; size=12 bbWeight=0 PerfScore 0.00
+ jne G_M42150_IG06
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M42150_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx rsi]
+ mov eax, 1
+ jmp SHORT G_M42150_IG11
+ ;; size=7 bbWeight=0 PerfScore 0.00
G_M42150_IG18: ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdx rbp rsi]
+ or r14d, 1
+ je SHORT G_M42150_IG19
+ test dil, 29
+ je SHORT G_M42150_IG10
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M42150_IG19: ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
mov r8d, edi
@@ -174,14 +184,14 @@ G_M42150_IG18: ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M42150_IG14
+ je G_M42150_IG10
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, rbp
; gcrRegs +[rdx]
mov r8d, edi
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M42150_IG19: ; bbWeight=0, epilog, nogc, extend
+ ;; size=29 bbWeight=0 PerfScore 0.00
...
+9 (+6.62%) : 43013.dasm - Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
@@ -60,16 +60,22 @@ G_M3175_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
jmp SHORT G_M3175_IG04
;; size=45 bbWeight=1 PerfScore 9.00
G_M3175_IG03: ; bbWeight=99.99, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref
- add eax, edx
- ;; size=2 bbWeight=99.99 PerfScore 25.00
+ add eax, r8d
+ mov ebx, edx
+ mov edx, r8d
+ mov r8d, ebx
+ ;; size=11 bbWeight=99.99 PerfScore 99.99
G_M3175_IG04: ; bbWeight=100, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
cmp r11d, r8d
jg SHORT G_M3175_IG06
;; size=5 bbWeight=100 PerfScore 125.00
G_M3175_IG05: ; bbWeight=400, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
xor ebx, ebx
+ mov ebp, edx
+ mov edx, r8d
+ mov r8d, ebp
jmp SHORT G_M3175_IG07
- ;; size=4 bbWeight=400 PerfScore 900.00
+ ;; size=12 bbWeight=400 PerfScore 1200.00
G_M3175_IG06: ; bbWeight=400, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
lea edx, [r8+0x01]
cmp r8d, r11d
@@ -80,10 +86,7 @@ G_M3175_IG06: ; bbWeight=400, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10},
jae SHORT G_M3175_IG09
mov r8d, dword ptr [r10+4*r8]
mov ebx, 1
- mov ebp, edx
- mov edx, r8d
- mov r8d, ebp
- ;; size=39 bbWeight=400 PerfScore 3300.00
+ ;; size=31 bbWeight=400 PerfScore 3000.00
G_M3175_IG07: ; bbWeight=100, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
test ebx, ebx
je SHORT G_M3175_IG10
@@ -107,7 +110,7 @@ G_M3175_IG11: ; bbWeight=0, epilog, nogc, extend
ret
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 19, PerfScore 4687.23, instruction count 36, allocated bytes for code 136 (MethodHash=3b2cf398) for method Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
+; Total bytes of code 145, prolog size 19, PerfScore 4762.22, instruction count 39, allocated bytes for code 145 (MethodHash=3b2cf398) for method Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
+22 (+7.07%) : 59224.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric:Equals(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte:this (Tier1)
@@ -9,26 +9,26 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 8, 3.25) ref -> rsi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
+; V00 this [V00,T01] ( 8, 3.50) ref -> rsi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
; V01 arg1 [V01,T00] ( 12, 5.50) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V02 arg2 [V02,T02] ( 7, 2.25) int -> rdi single-def
-; V03 loc0 [V03,T05] ( 2, 0.25) ref -> rcx class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
+; V02 arg2 [V02,T02] ( 7, 2.50) int -> rdi single-def
+; V03 loc0 [V03,T04] ( 2, 0.50) ref -> rcx class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol>
-; V06 tmp2 [V06,T03] ( 3, 1.75) ubyte -> rax "Inline return value spill temp"
-; V07 tmp3 [V07,T04] ( 8, 1.37) ref -> rbp class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V06 tmp2 [V06,T09] ( 3, 0 ) ubyte -> rax "Inline return value spill temp"
+; V07 tmp3 [V07,T03] ( 8, 1.37) ref -> rbp class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V11 tmp7 [V11,T07] ( 3, 0.50) ubyte -> r14 single-def "Inline stloc first use temp"
-; V12 tmp8 [V12,T08] ( 4, 0.25) int -> rax "guarded devirt return temp"
+;* V10 tmp6 [V10,T08] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V11 tmp7 [V11,T06] ( 3, 0.50) ubyte -> r14 single-def "Inline stloc first use temp"
+; V12 tmp8 [V12,T07] ( 4, 0.25) int -> rax "guarded devirt return temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V14 tmp10 [V14,T06] ( 4, 0.50) ref -> rdx "guarded devirt return temp"
+; V14 tmp10 [V14,T05] ( 4, 0.50) ref -> rdx "guarded devirt return temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol>
;
; Lcl frame size = 32
-G_M30635_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M30635_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r14
push rdi
push rsi
@@ -41,58 +41,33 @@ G_M30635_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs +[rbx]
mov edi, r8d
;; size=19 bbWeight=1 PerfScore 6.00
-G_M30635_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M30635_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test rbx, rbx
- jne SHORT G_M30635_IG06
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M30635_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jne G_M30635_IG12
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M30635_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp rbx, rsi
- jne SHORT G_M30635_IG08
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M30635_IG04: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- mov eax, 1
- ;; size=5 bbWeight=0.75 PerfScore 0.19
-G_M30635_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=1 PerfScore 3.75
-G_M30635_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rsi]
- mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol
- cmp qword ptr [rbx], rcx
- jne SHORT G_M30635_IG03
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M30635_IG07: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov rcx, rbx
- ; gcrRegs +[rcx]
- jmp G_M30635_IG20
- ;; size=8 bbWeight=0.25 PerfScore 0.56
-G_M30635_IG08: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
+ je G_M30635_IG17
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M30635_IG04: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je SHORT G_M30635_IG14
+ je G_M30635_IG10
test dil, 2
- je SHORT G_M30635_IG10
- ;; size=11 bbWeight=0.25 PerfScore 0.62
-G_M30635_IG09: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M30635_IG06
+ ;; size=15 bbWeight=0.25 PerfScore 0.62
+G_M30635_IG05: ; bbWeight=0.12, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric
cmp qword ptr [rbx], rcx
- jne SHORT G_M30635_IG15
+ jne G_M30635_IG15
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_TypeKind():ubyte:this]
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 4
- je SHORT G_M30635_IG16
- ;; size=29 bbWeight=0.12 PerfScore 1.09
-G_M30635_IG10: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M30635_IG16
+ ;; size=37 bbWeight=0.12 PerfScore 1.09
+G_M30635_IG06: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol
@@ -102,19 +77,19 @@ G_M30635_IG10: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov rbp, rax
; gcrRegs +[rbp]
test rbp, rbp
- je SHORT G_M30635_IG14
+ je SHORT G_M30635_IG10
cmp byte ptr [rsi], sil
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol
cmp qword ptr [rbp], rcx
- jne SHORT G_M30635_IG12
+ jne SHORT G_M30635_IG08
;; size=45 bbWeight=0.25 PerfScore 2.56
-G_M30635_IG11: ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M30635_IG07: ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rdx, rbp
; gcrRegs +[rdx]
- jmp SHORT G_M30635_IG13
+ jmp SHORT G_M30635_IG09
;; size=5 bbWeight=0.12 PerfScore 0.28
-G_M30635_IG12: ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
+G_M30635_IG08: ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
mov rcx, rbp
; gcrRegs +[rcx]
@@ -126,21 +101,52 @@ G_M30635_IG12: ; bbWeight=0.12, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000
mov rdx, rax
; gcrRegs +[rdx]
;; size=19 bbWeight=0.12 PerfScore 0.94
-G_M30635_IG13: ; bbWeight=0.25, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M30635_IG09: ; bbWeight=0.25, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
xor r14d, r14d
cmp rbp, rdx
sete r14b
test r14b, 1
- je SHORT G_M30635_IG17
+ je SHORT G_M30635_IG18
;; size=16 bbWeight=0.25 PerfScore 0.69
-G_M30635_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30635_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx rbp rsi]
xor eax, eax
- jmp G_M30635_IG05
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M30635_IG15: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M30635_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=0 PerfScore 0.00
+G_M30635_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rsi]
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol
+ cmp qword ptr [rbx], rcx
+ jne G_M30635_IG03
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M30635_IG13: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ mov r8d, edi
+ ;; size=9 bbWeight=0.25 PerfScore 0.19
+G_M30635_IG14: ; bbWeight=0.25, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ tail.jmp [Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerTypeSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int):ubyte:this]
+ ; gcr arg pop 0
+ ;; size=16 bbWeight=0.25 PerfScore 1.19
+G_M30635_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx rdx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -149,21 +155,25 @@ G_M30635_IG15: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 4
- jne SHORT G_M30635_IG10
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M30635_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jne G_M30635_IG06
+ ;; size=25 bbWeight=0 PerfScore 0.00
+G_M30635_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp byte ptr [rsi+0x84], 1
- je G_M30635_IG04
- jmp SHORT G_M30635_IG10
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M30635_IG17: ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx] +[rdx rbp]
- or r14d, 1
- je SHORT G_M30635_IG18
- test dil, 29
- je SHORT G_M30635_IG14
- ;; size=12 bbWeight=0 PerfScore 0.00
+ jne G_M30635_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M30635_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx rsi]
+ mov eax, 1
+ jmp SHORT G_M30635_IG11
+ ;; size=7 bbWeight=0 PerfScore 0.00
G_M30635_IG18: ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdx rbp rsi]
+ or r14d, 1
+ je SHORT G_M30635_IG19
+ test dil, 29
+ je SHORT G_M30635_IG10
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M30635_IG19: ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
mov r8d, edi
@@ -171,14 +181,14 @@ G_M30635_IG18: ; bbWeight=0, gcrefRegs=0064 {rdx rbp rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M30635_IG14
+ je G_M30635_IG10
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, rbp
; gcrRegs +[rdx]
mov r8d, edi
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M30635_IG19: ; bbWeight=0, epilog, nogc, extend
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M30635_IG20: ; bbWeight=0, epilog, nogc, extend
add rsp, 32
...
benchmarks.run_tiered.windows.x64.checked.mch
-29 (-5.56%) : 38173.dasm - Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (Tier1)
@@ -44,10 +44,10 @@
;* V33 tmp26 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V34 tmp27 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.MethodDefinitionHandle>
;* V35 tmp28 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.MethodDefinitionHandle>
-; V36 tmp29 [V36,T21] ( 2, 2 ) int -> r8 single-def "Inline stloc first use temp"
+; V36 tmp29 [V36,T21] ( 2, 2 ) int -> rax single-def "Inline stloc first use temp"
;* V37 tmp30 [V37 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp"
-; V38 tmp31 [V38,T07] ( 3, 6 ) byref -> r10 single-def "Inlining Arg"
-; V39 tmp32 [V39,T09] ( 3, 6 ) int -> r8 "Inlining Arg"
+; V38 tmp31 [V38,T07] ( 3, 6 ) byref -> r8 single-def "Inlining Arg"
+; V39 tmp32 [V39,T09] ( 3, 6 ) int -> rax "Inlining Arg"
;* V40 tmp33 [V40 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
; V41 tmp34 [V41,T17] ( 2, 2 ) int -> rsi single-def "field V01._rowId (fldOffset=0x0)" P-INDEP
; V42 tmp35 [V42,T04] ( 5, 5 ) int -> [rbp+0x20] EH-live single-def "field V02._rowId (fldOffset=0x0)" P-INDEP
@@ -61,7 +61,7 @@
; V50 tmp43 [V50,T22] ( 2, 2 ) int -> r14 single-def "field V22._rowId (fldOffset=0x0)" P-INDEP
;* V51 tmp44 [V51 ] ( 0, 0 ) int -> zero-ref single-def "field V23._rowId (fldOffset=0x0)" P-INDEP
;* V52 tmp45 [V52 ] ( 0, 0 ) int -> zero-ref "field V30._rowId (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T23] ( 2, 2 ) int -> r8 single-def "field V34._rowId (fldOffset=0x0)" P-INDEP
+; V53 tmp46 [V53,T23] ( 2, 2 ) int -> rax single-def "field V34._rowId (fldOffset=0x0)" P-INDEP
;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref single-def "field V35._rowId (fldOffset=0x0)" P-INDEP
; V55 PSPSym [V55,T24] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
; V56 cse0 [V56,T19] ( 3, 3 ) int -> rcx "CSE #17: moderate"
@@ -114,8 +114,7 @@ G_M29476_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx]
; gcr arg pop 0
mov r14d, eax
- mov eax, dword ptr [rbp+0x20]
- ;; size=20 bbWeight=1 PerfScore 5.75
+ ;; size=17 bbWeight=1 PerfScore 4.75
G_M29476_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, r14d
shr ecx, 24
@@ -133,57 +132,57 @@ G_M29476_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
add r14d, dword ptr [rdi+0x10]
mov edx, r14d
add rdx, 2
- movsxd r8, dword ptr [rcx+0x08]
- cmp rdx, r8
+ movsxd rax, dword ptr [rcx+0x08]
+ cmp rdx, rax
ja G_M29476_IG09
mov rcx, qword ptr [rcx]
; byrRegs -[rcx]
movsxd rdx, r14d
movzx rdi, word ptr [rcx+rdx]
; byrRegs -[rdi]
- jmp G_M29476_IG07
- ;; size=78 bbWeight=1 PerfScore 23.50
-G_M29476_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M29476_IG07
+ ;; size=75 bbWeight=1 PerfScore 23.50
+G_M29476_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
lea rdx, bword ptr [rdi+0x1B8]
; byrRegs +[rdx]
- mov r8d, r14d
- and r8d, 0xD1FFAB1E
- dec r8d
- imul r8d, dword ptr [rdx+0x20]
- lea r10, bword ptr [rdx+0x28]
- ; byrRegs +[r10]
- add r8d, dword ptr [rdx+0x10]
- mov edx, r8d
+ mov eax, r14d
+ and eax, 0xD1FFAB1E
+ dec eax
+ imul eax, dword ptr [rdx+0x20]
+ lea r8, bword ptr [rdx+0x28]
+ ; byrRegs +[r8]
+ add eax, dword ptr [rdx+0x10]
+ mov edx, eax
; byrRegs -[rdx]
add rdx, 2
- movsxd r9, dword ptr [r10+0x08]
- cmp rdx, r9
- ja G_M29476_IG09
- mov rdx, qword ptr [r10]
- movsxd r8, r8d
- movzx rdx, word ptr [rdx+r8]
- mov r8d, ecx
- and r8d, 15
- mov r10d, edx
- ; byrRegs -[r10]
- and r10d, -8
- or r10d, 1
- cmp r8d, 6
- cmove edx, r10d
- mov r8d, edx
- or r8d, 0x400
- test cl, 16
- cmovne edx, r8d
+ movsxd r10, dword ptr [r8+0x08]
+ cmp rdx, r10
+ ja SHORT G_M29476_IG09
+ mov rdx, qword ptr [r8]
+ cdqe
+ movzx rdx, word ptr [rdx+rax]
+ mov eax, ecx
+ and eax, 15
mov r8d, edx
+ ; byrRegs -[r8]
and r8d, -8
- or r8d, 6
+ or r8d, 1
+ cmp eax, 6
+ cmove edx, r8d
+ mov eax, edx
+ or eax, 0x400
+ test cl, 16
+ cmovne edx, eax
+ mov eax, edx
+ and eax, -8
+ or eax, 6
test cl, 32
- cmovne edx, r8d
+ cmovne edx, eax
mov edi, edx
; gcrRegs -[rdi]
or edi, 128
- ;; size=133 bbWeight=1 PerfScore 24.25
+ ;; size=110 bbWeight=1 PerfScore 24.25
G_M29476_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test dil, 64
jne SHORT G_M29476_IG10
@@ -307,7 +306,7 @@ G_M29476_IG22: ; bbWeight=0, funclet epilog, nogc, extend
RWD00 dq 006200740056005Fh, 007000610047006Ch
-; Total bytes of code 522, prolog size 34, PerfScore 120.75, instruction count 163, allocated bytes for code 522 (MethodHash=7a9e8cdb) for method Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (Tier1)
+; Total bytes of code 493, prolog size 34, PerfScore 119.75, instruction count 162, allocated bytes for code 493 (MethodHash=7a9e8cdb) for method Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (Tier1)
; ============================================================
Unwind Info:
-22 (-5.25%) : 52075.dasm - System.Random:AssertInRange(double) (Tier1)
@@ -64,12 +64,12 @@ G_M126_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor ecx, ecx
vucomisd xmm1, xmm0
seta cl
- vmovsd xmm0, qword ptr [rsp+0x60]
jmp SHORT G_M126_IG05
- ;; size=31 bbWeight=0.50 PerfScore 6.12
+ ;; size=25 bbWeight=0.50 PerfScore 4.62
G_M126_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor ecx, ecx
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ vmovsd qword ptr [rsp+0x60], xmm0
+ ;; size=8 bbWeight=0.50 PerfScore 0.62
G_M126_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rbx, cl
test ebx, ebx
@@ -83,7 +83,6 @@ G_M126_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
;; size=6 bbWeight=0.50 PerfScore 1.25
G_M126_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- vmovsd qword ptr [rsp+0x60], xmm0
mov rcx, 0xD1FFAB1E ; System.Text.StringBuilder
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -103,8 +102,7 @@ G_M126_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
mov edi, 1
- vmovsd xmm0, qword ptr [rsp+0x60]
- ;; size=74 bbWeight=0.50 PerfScore 5.00
+ ;; size=62 bbWeight=0.50 PerfScore 3.00
G_M126_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov gword ptr [rsp+0x28], rsi
xor rcx, rcx
@@ -130,24 +128,22 @@ G_M126_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea r8, bword ptr [r8+2*rax+0x10]
; gcrRegs -[r8]
; byrRegs +[r8]
- vmovdqu ymm1, ymmword ptr [rdx]
- vmovdqu ymmword ptr [r8], ymm1
+ vmovdqu ymm0, ymmword ptr [rdx]
+ vmovdqu ymmword ptr [r8], ymm0
mov dword ptr [rcx+0x18], r10d
jmp SHORT G_M126_IG11
;; size=54 bbWeight=0.50 PerfScore 10.50
G_M126_IG10: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
; byrRegs -[r8]
- vmovsd qword ptr [rsp+0x60], xmm0
mov r8d, 16
call [<unknown method>]
; gcrRegs -[rcx]
; byrRegs -[rdx]
; gcr arg pop 0
- vmovsd xmm0, qword ptr [rsp+0x60]
- ;; size=24 bbWeight=0.50 PerfScore 3.62
+ ;; size=12 bbWeight=0.50 PerfScore 1.62
G_M126_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rcx, [rsp+0x28]
- vmovaps xmm1, xmm0
+ vmovsd xmm1, qword ptr [rsp+0x60]
call [<unknown method>]
; gcr arg pop 0
mov rcx, gword ptr [rsp+0x28]
@@ -170,7 +166,7 @@ G_M126_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov qword ptr [r8+0x04], r9
mov dword ptr [rcx+0x18], r10d
jmp SHORT G_M126_IG13
- ;; size=74 bbWeight=0.50 PerfScore 11.88
+ ;; size=76 bbWeight=0.50 PerfScore 13.25
G_M126_IG12: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
; byrRegs -[r8]
mov r8d, 6
@@ -226,7 +222,7 @@ G_M126_IG19: ; bbWeight=1, epilog, nogc, extend
RWD00 dq 3FF0000000000000h ; 1
-; Total bytes of code 419, prolog size 24, PerfScore 69.50, instruction count 101, allocated bytes for code 419 (MethodHash=81e8ff81) for method System.Random:AssertInRange(double) (Tier1)
+; Total bytes of code 397, prolog size 24, PerfScore 65.88, instruction count 97, allocated bytes for code 397 (MethodHash=81e8ff81) for method System.Random:AssertInRange(double) (Tier1)
; ============================================================
Unwind Info:
-15 (-5.15%) : 42057.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier1)
@@ -89,10 +89,13 @@ G_M11176_IG03: ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r
; byrRegs -[rcx]
xor r8, r8
; gcrRegs +[r8]
+ mov gword ptr [rsp+0x28], r8
+ ; GC ptr vars +{V09}
jmp SHORT G_M11176_IG05
- ;; size=5 bbWeight=0.50 PerfScore 1.12
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M11176_IG04: ; bbWeight=0.50, gcrefRegs=E0ED {rax rdx rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r8] +[rax rdx]
+ ; GC ptr vars -{V09}
mov rcx, rax
; gcrRegs +[rcx]
mov rax, qword ptr [rax]
@@ -103,27 +106,19 @@ G_M11176_IG04: ; bbWeight=0.50, gcrefRegs=E0ED {rax rdx rbx rbp rsi rdi r
; gcr arg pop 0
mov gword ptr [rsp+0x28], rax
; GC ptr vars +{V09}
- mov r8, gword ptr [rsp+0x28]
- ; gcrRegs +[r8]
- ;; size=23 bbWeight=0.50 PerfScore 4.62
-G_M11176_IG05: ; bbWeight=1, gcrefRegs=E1E8 {rbx rbp rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=18 bbWeight=0.50 PerfScore 4.12
+G_M11176_IG05: ; bbWeight=1, gcVars=0000000000000100 {V09}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- ; GC ptr vars -{V09}
cmp byte ptr [rsp+0xB0], 0
- jne SHORT G_M11176_IG10
+ jne SHORT G_M11176_IG08
;; size=10 bbWeight=1 PerfScore 3.00
-G_M11176_IG06: ; bbWeight=0.50, gcrefRegs=E1E8 {rbx rbp rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M11176_IG06: ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
- je SHORT G_M11176_IG09
+ je SHORT G_M11176_IG07
test byte ptr [rsi+0x10], 1
- jne SHORT G_M11176_IG10
+ jne SHORT G_M11176_IG08
;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M11176_IG07: ; bbWeight=0.25, gcrefRegs=E1E8 {rbx rbp rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref
- mov gword ptr [rsp+0x28], r8
- ; GC ptr vars +{V09}
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M11176_IG08: ; bbWeight=0.50, gcVars=0000000000000100 {V09}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r8]
+G_M11176_IG07: ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdx, r14
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown method>
@@ -131,24 +126,13 @@ G_M11176_IG08: ; bbWeight=0.50, gcVars=0000000000000100 {V09}, gcrefRegs=
; gcrRegs -[rdx]
; gcr arg pop 0
mov dword ptr [rsp+0x34], eax
- jmp SHORT G_M11176_IG11
+ jmp SHORT G_M11176_IG09
;; size=25 bbWeight=0.50 PerfScore 3.25
-G_M11176_IG09: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=E1E8 {rbx rbp rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r8]
- ; GC ptr vars -{V09}
- mov gword ptr [rsp+0x28], r8
- ; GC ptr vars +{V09}
- jmp SHORT G_M11176_IG08
- ;; size=7 bbWeight=0.25 PerfScore 0.75
-G_M11176_IG10: ; bbWeight=0.50, gcrefRegs=E1E8 {rbx rbp rsi rdi r8 r13 r14 r15}, byrefRegs=0000 {}, byref
- ; GC ptr vars -{V09}
- mov eax, 1
- mov gword ptr [rsp+0x28], r8
- ; GC ptr vars +{V09}
- mov dword ptr [rsp+0x34], eax
- ;; size=14 bbWeight=0.50 PerfScore 1.12
-G_M11176_IG11: ; bbWeight=1, gcVars=0000000000000100 {V09}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r8]
+G_M11176_IG08: ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
+ mov r8d, 1
+ mov dword ptr [rsp+0x34], r8d
+ ;; size=11 bbWeight=0.50 PerfScore 0.62
+G_M11176_IG09: ; bbWeight=1, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov byte ptr [rbx+0x12], 22
lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
@@ -158,12 +142,12 @@ G_M11176_IG11: ; bbWeight=1, gcVars=0000000000000100 {V09}, gcrefRegs=E0E
; gcrRegs -[rdx rdi]
; byrRegs -[rcx]
cmp byte ptr [rsp+0x34], 0
- je SHORT G_M11176_IG13
+ je SHORT G_M11176_IG11
;; size=23 bbWeight=1 PerfScore 5.75
-G_M11176_IG12: ; bbWeight=0.50, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M11176_IG10: ; bbWeight=0.50, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
mov word ptr [rbx+0x10], 1
;; size=6 bbWeight=0.50 PerfScore 0.50
-G_M11176_IG13: ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M11176_IG11: ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
mov rdx, gword ptr [rsp+0x28]
@@ -209,7 +193,7 @@ G_M11176_IG13: ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, by
; byrRegs -[rcx]
mov byte ptr [rbx+0x48], r12b
;; size=78 bbWeight=1 PerfScore 12.25
-G_M11176_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M11176_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
@@ -222,7 +206,7 @@ G_M11176_IG14: ; bbWeight=1, epilog, nogc, extend
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 291, prolog size 16, PerfScore 59.50, instruction count 83, allocated bytes for code 291 (MethodHash=5d24d457) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier1)
+; Total bytes of code 276, prolog size 16, PerfScore 58.00, instruction count 79, allocated bytes for code 276 (MethodHash=5d24d457) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier1)
; ============================================================
Unwind Info:
+9 (+6.72%) : 29668.dasm - Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
@@ -59,16 +59,22 @@ G_M3175_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
jmp SHORT G_M3175_IG04
;; size=45 bbWeight=0.01 PerfScore 0.09
G_M3175_IG03: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref
- add eax, edx
- ;; size=2 bbWeight=2 PerfScore 0.50
+ add eax, r8d
+ mov ebx, edx
+ mov edx, r8d
+ mov r8d, ebx
+ ;; size=11 bbWeight=2 PerfScore 2.00
G_M3175_IG04: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
cmp r11d, r8d
jg SHORT G_M3175_IG06
;; size=5 bbWeight=8 PerfScore 10.00
G_M3175_IG05: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
xor ebx, ebx
+ mov ebp, edx
+ mov edx, r8d
+ mov r8d, ebp
jmp SHORT G_M3175_IG07
- ;; size=4 bbWeight=2 PerfScore 4.50
+ ;; size=12 bbWeight=2 PerfScore 6.00
G_M3175_IG06: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
lea edx, [r8+0x01]
cmp r8d, r11d
@@ -79,10 +85,7 @@ G_M3175_IG06: ; bbWeight=2, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, b
jae SHORT G_M3175_IG09
mov r8d, dword ptr [r10+4*r8]
mov ebx, 1
- mov ebp, edx
- mov edx, r8d
- mov r8d, ebp
- ;; size=39 bbWeight=2 PerfScore 16.50
+ ;; size=31 bbWeight=2 PerfScore 15.00
G_M3175_IG07: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0400 {r10}, byref, isz
test ebx, ebx
jne SHORT G_M3175_IG03
@@ -101,7 +104,7 @@ G_M3175_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 134, prolog size 19, PerfScore 43.87, instruction count 35, allocated bytes for code 134 (MethodHash=3b2cf398) for method Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
+; Total bytes of code 143, prolog size 19, PerfScore 45.37, instruction count 38, allocated bytes for code 143 (MethodHash=3b2cf398) for method Struct.FilteredSpanEnumerator:Sum():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
+3 (+7.14%) : 17382.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:Clear(ubyte[]) (Tier1)
@@ -32,35 +32,36 @@ G_M32531_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
xor rcx, rcx
; byrRegs +[rcx]
xor edx, edx
+ mov rax, rcx
+ ; byrRegs +[rax]
jmp SHORT G_M32531_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
+ ;; size=9 bbWeight=0.50 PerfScore 1.38
G_M32531_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ ; byrRegs -[rax rcx]
lea rdx, bword ptr [rcx+0x10]
; byrRegs +[rdx]
mov rax, rdx
; byrRegs +[rax]
mov edx, dword ptr [rcx+0x08]
; byrRegs -[rdx]
- mov rcx, rax
+ ;; size=10 bbWeight=0.50 PerfScore 1.38
+G_M32531_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref
; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- ;; size=13 bbWeight=0.50 PerfScore 1.50
-G_M32531_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
- ; byrRegs -[rax]
mov edx, edx
+ mov rcx, rax
+ ; byrRegs +[rcx]
call [<unknown method>]
- ; byrRegs -[rcx]
+ ; byrRegs -[rax rcx]
; gcr arg pop 0
nop
- ;; size=9 bbWeight=1 PerfScore 3.50
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M32531_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 42, prolog size 4, PerfScore 9.00, instruction count 15, allocated bytes for code 42 (MethodHash=f17780ec) for method System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:Clear(ubyte[]) (Tier1)
+; Total bytes of code 45, prolog size 4, PerfScore 9.25, instruction count 16, allocated bytes for code 45 (MethodHash=f17780ec) for method System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]:Clear(ubyte[]) (Tier1)
; ============================================================
Unwind Info:
+9 (+16.36%) : 45694.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:AreAllBucketsEmpty():ubyte:this (Tier1)
@@ -16,8 +16,8 @@
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]>
;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
-; V08 tmp7 [V08,T03] ( 2, 4 ) int -> r8 "Inlining Arg"
-; V09 tmp8 [V09,T02] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
+; V08 tmp7 [V08,T03] ( 2, 4 ) int -> rdx "Inlining Arg"
+; V09 tmp8 [V09,T02] ( 2, 4 ) byref -> r8 single-def "Inlining Arg"
;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -64,34 +64,40 @@ G_M10944_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
xor rcx, rcx
; byrRegs +[rcx]
xor r8d, r8d
+ mov rax, rcx
+ ; byrRegs +[rax]
+ mov ecx, r8d
+ ; byrRegs -[rcx]
+ mov r8, rax
+ ; byrRegs +[r8]
jmp SHORT G_M10944_IG05
- ;; size=7 bbWeight=0.50 PerfScore 1.25
+ ;; size=16 bbWeight=0.50 PerfScore 1.62
G_M10944_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ ; byrRegs -[rax r8]
lea r8, bword ptr [rcx+0x10]
; byrRegs +[r8]
mov ecx, dword ptr [rcx+0x08]
; gcrRegs -[rcx]
- mov eax, ecx
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M10944_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0100 {r8}, byref
+ mov edx, ecx
mov rcx, r8
; byrRegs +[rcx]
- mov r8d, eax
+ mov r8d, edx
; byrRegs -[r8]
- ;; size=15 bbWeight=0.50 PerfScore 1.62
-G_M10944_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
xor edx, edx
call [<unknown method>]
; byrRegs -[rcx]
; gcr arg pop 0
shr eax, 31
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=19 bbWeight=1 PerfScore 4.50
G_M10944_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 55, prolog size 4, PerfScore 13.38, instruction count 18, allocated bytes for code 55 (MethodHash=c0f6d53f) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:AreAllBucketsEmpty():ubyte:this (Tier1)
+; Total bytes of code 64, prolog size 4, PerfScore 14.12, instruction count 21, allocated bytes for code 64 (MethodHash=c0f6d53f) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:AreAllBucketsEmpty():ubyte:this (Tier1)
; ============================================================
Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-5 (-20.00%) : 311880.dasm - System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
@@ -17,17 +17,17 @@ G_M54891_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M54891_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
nop
- ;; size=16 bbWeight=1 PerfScore 1.50
+ ;; size=11 bbWeight=1 PerfScore 1.50
G_M54891_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 25, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 25 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
+; Total bytes of code 20, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 20 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
; ============================================================
Unwind Info:
-25 (-19.08%) : 313003.dasm - System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
@@ -28,27 +28,27 @@ G_M29451_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=4 bbWeight=1 PerfScore 1.25
G_M29451_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
nop
- ;; size=16 bbWeight=1 PerfScore 1.50
+ ;; size=11 bbWeight=1 PerfScore 1.50
G_M29451_IG04: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
G_M29451_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
jmp SHORT G_M29451_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M29451_IG06: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
+ mov edx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rcx]
; gcr arg pop 0
@@ -61,15 +61,15 @@ G_M29451_IG06: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
test eax, eax
je SHORT G_M29451_IG05
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov rcx, gword ptr [rbx+0x18]
; gcrRegs +[rcx]
- ;; size=69 bbWeight=0 PerfScore 0.00
+ ;; size=54 bbWeight=0 PerfScore 0.00
G_M29451_IG07: ; bbWeight=0, epilog, nogc, extend
add rsp, 32
pop rbx
@@ -77,7 +77,7 @@ G_M29451_IG07: ; bbWeight=0, epilog, nogc, extend
; gcr arg pop 0
;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 131, prolog size 5, PerfScore 6.00, instruction count 31, allocated bytes for code 131 (MethodHash=263b8cf4) for method System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
+; Total bytes of code 106, prolog size 5, PerfScore 6.00, instruction count 31, allocated bytes for code 106 (MethodHash=263b8cf4) for method System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
; ============================================================
Unwind Info:
-33 (-19.08%) : 313007.dasm - System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
@@ -50,16 +50,16 @@ G_M54328_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
;; size=13 bbWeight=1.00 PerfScore 5.23
G_M54328_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rsi]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov rcx, gword ptr [rbx+0x18]
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
- ;; size=36 bbWeight=1.00 PerfScore 7.47
+ ;; size=26 bbWeight=1.00 PerfScore 7.47
G_M54328_IG06: ; bbWeight=1.00, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -69,31 +69,31 @@ G_M54328_IG06: ; bbWeight=1.00, epilog, nogc, extend
;; size=12 bbWeight=1.00 PerfScore 3.24
G_M54328_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rbx]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
jmp SHORT G_M54328_IG09
- ;; size=17 bbWeight=0.50 PerfScore 1.62
+ ;; size=12 bbWeight=0.50 PerfScore 1.62
G_M54328_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=15 bbWeight=0.50 PerfScore 0.62
+ ;; size=10 bbWeight=0.50 PerfScore 0.62
G_M54328_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
nop
- ;; size=16 bbWeight=1 PerfScore 1.50
+ ;; size=11 bbWeight=1 PerfScore 1.50
G_M54328_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M54328_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M54328_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov rcx, rsi
@@ -101,10 +101,10 @@ G_M54328_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {
call [System.Threading.ThreadPoolBoundHandle:Dispose():this]
; gcrRegs -[rcx rsi]
; gcr arg pop 0
- jmp G_M54328_IG05
- ;; size=29 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M54328_IG05
+ ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 173, prolog size 9, PerfScore 32.92, instruction count 42, allocated bytes for code 173 (MethodHash=7b742bc7) for method System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
+; Total bytes of code 140, prolog size 9, PerfScore 32.92, instruction count 42, allocated bytes for code 140 (MethodHash=7b742bc7) for method System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
; ============================================================
Unwind Info:
+15 (+6.33%) : 246551.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
@@ -9,24 +9,24 @@
; Final local variable assignments
;
; V00 this [V00,T04] ( 5, 3.50) ref -> rsi this class-hnd single-def <System.Xml.NameTable>
-; V01 arg1 [V01,T01] ( 10, 20.64) ref -> rbx class-hnd single-def <System.String>
+; V01 arg1 [V01,T02] ( 7, 7 ) ref -> rbx class-hnd single-def <System.String>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T05] ( 4, 5.50) int -> rdi
-; V04 loc2 [V04,T02] ( 8, 19.61) ref -> rbp class-hnd <<unknown class>>
+; V03 loc1 [V03,T05] ( 4, 5.50) int -> r14
+; V04 loc2 [V04,T00] ( 8, 19.61) ref -> r15 class-hnd <<unknown class>>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp5 [V10,T10] ( 2, 2 ) int -> rdx "Inlining Arg"
-; V11 tmp6 [V11,T09] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
+; V10 tmp5 [V10,T13] ( 2, 2 ) int -> rdx "Inlining Arg"
+; V11 tmp6 [V11,T12] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V17 tmp12 [V17,T06] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
-; V18 tmp13 [V18,T00] ( 6, 42.28) ref -> r8 class-hnd exact "Inlining Arg" <System.String>
+; V18 tmp13 [V18,T01] ( 5, 18.78) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
; V19 tmp14 [V19,T03] ( 2, 8 ) byref -> rcx "impAppendStmt"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -35,23 +35,28 @@
;* V24 tmp19 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp20 [V25 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V27 tmp22 [V27,T11] ( 2, 1 ) byref -> rcx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp23 [V28,T14] ( 2, 1 ) int -> rdx "field V07._length (fldOffset=0x8)" P-INDEP
-; V29 tmp24 [V29,T12] ( 2, 1 ) byref -> rcx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T15] ( 2, 1 ) int -> rdx "field V08._length (fldOffset=0x8)" P-INDEP
+; V27 tmp22 [V27,T14] ( 2, 1 ) byref -> rcx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp23 [V28,T17] ( 2, 1 ) int -> rdx "field V07._length (fldOffset=0x8)" P-INDEP
+; V29 tmp24 [V29,T15] ( 2, 1 ) byref -> rcx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V30 tmp25 [V30,T18] ( 2, 1 ) int -> rdx "field V08._length (fldOffset=0x8)" P-INDEP
;* V31 tmp26 [V31 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp27 [V32 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V35 tmp30 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V37 tmp32 [V37,T07] ( 3, 3 ) ref -> rax single-def "arr expr"
-; V38 tmp33 [V38,T08] ( 3, 3 ) int -> r8 "index expr"
-; V39 cse0 [V39,T13] ( 2, 1 ) ref -> rax "CSE #02: aggressive"
+; V37 tmp32 [V37,T09] ( 3, 3 ) ref -> rax single-def "arr expr"
+; V38 tmp33 [V38,T11] ( 3, 3 ) int -> r8 "index expr"
+; V39 cse0 [V39,T16] ( 2, 1 ) ref -> rax "CSE #02: aggressive"
+; V40 cse1 [V40,T10] ( 3, 3 ) byref -> rbp "CSE #04: aggressive"
+; V41 cse2 [V41,T07] ( 3, 4.78) int -> r8 "CSE #03: aggressive"
+; V42 cse3 [V42,T08] ( 4, 3.89) int -> rdi "CSE #01: aggressive"
;
; Lcl frame size = 40
G_M51747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
push rdi
push rsi
push rbp
@@ -61,13 +66,14 @@ G_M51747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=14 bbWeight=1 PerfScore 4.75
+ ;; size=18 bbWeight=1 PerfScore 6.75
G_M51747_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
je G_M51747_IG16
- cmp dword ptr [rbx+0x08], 0
+ mov edi, dword ptr [rbx+0x08]
+ test edi, edi
jne SHORT G_M51747_IG05
- ;; size=15 bbWeight=1 PerfScore 5.25
+ ;; size=16 bbWeight=1 PerfScore 4.50
G_M51747_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi]
mov rax, 0xD1FFAB1E
@@ -79,74 +85,78 @@ G_M51747_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M51747_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx rsi]
- lea rcx, bword ptr [rbx+0x0C]
+ lea rbp, bword ptr [rbx+0x0C]
+ ; byrRegs +[rbp]
+ mov rcx, rbp
; byrRegs +[rcx]
- mov edx, dword ptr [rbx+0x08]
+ mov edx, edi
add edx, edx
mov r8d, 0xD1FFAB1E
mov r9d, 0xD1FFAB1E
call [<unknown method>]
; byrRegs -[rcx]
; gcr arg pop 0
- mov edi, eax
+ mov r14d, eax
mov rax, gword ptr [rsi+0x08]
; gcrRegs +[rax]
- mov r8d, edi
+ mov r8d, r14d
and r8d, dword ptr [rsi+0x14]
cmp r8d, dword ptr [rax+0x08]
jae SHORT G_M51747_IG15
- mov rbp, gword ptr [rax+8*r8+0x10]
- ; gcrRegs +[rbp]
- test rbp, rbp
+ mov r15, gword ptr [rax+8*r8+0x10]
+ ; gcrRegs +[r15]
+ test r15, r15
je SHORT G_M51747_IG11
- ;; size=56 bbWeight=0.50 PerfScore 9.50
-G_M51747_IG06: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=59 bbWeight=0.50 PerfScore 8.75
+G_M51747_IG06: ; bbWeight=4, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax]
- cmp dword ptr [rbp+0x18], edi
+ cmp dword ptr [r15+0x18], r14d
jne SHORT G_M51747_IG10
- ;; size=5 bbWeight=4 PerfScore 16.00
-G_M51747_IG07: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- mov r8, gword ptr [rbp+0x08]
- ; gcrRegs +[r8]
- cmp byte ptr [r8], r8b
- cmp r8, rbx
+ ;; size=6 bbWeight=4 PerfScore 16.00
+G_M51747_IG07: ; bbWeight=2, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
+ mov rcx, gword ptr [r15+0x08]
+ ; gcrRegs +[rcx]
+ cmp byte ptr [rcx], cl
+ cmp rcx, rbx
je SHORT G_M51747_IG13
- ;; size=12 bbWeight=2 PerfScore 12.50
-G_M51747_IG08: ; bbWeight=11.14, gcrefRegs=0168 {rbx rbp rsi r8}, byrefRegs=0000 {}, byref, isz
- mov edx, dword ptr [r8+0x08]
- cmp edx, dword ptr [rbx+0x08]
+ ;; size=11 bbWeight=2 PerfScore 12.50
+G_M51747_IG08: ; bbWeight=1.39, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
+ mov r8d, dword ptr [rcx+0x08]
+ cmp r8d, edi
jne SHORT G_M51747_IG10
- ;; size=9 bbWeight=11.14 PerfScore 66.83
-G_M51747_IG09: ; bbWeight=2, gcrefRegs=0168 {rbx rbp rsi r8}, byrefRegs=0000 {}, byref, isz
- lea rcx, bword ptr [r8+0x0C]
+ ;; size=9 bbWeight=1.39 PerfScore 4.52
+G_M51747_IG09: ; bbWeight=2, gcrefRegs=804A {rcx rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
+ add rcx, 12
+ ; gcrRegs -[rcx]
; byrRegs +[rcx]
- mov r8d, dword ptr [r8+0x08]
- ; gcrRegs -[r8]
add r8d, r8d
- lea rdx, bword ptr [rbx+0x0C]
+ mov rdx, rbp
; byrRegs +[rdx]
call [<unknown method>]
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
jne SHORT G_M51747_IG13
- ;; size=25 bbWeight=2 PerfScore 15.00
-G_M51747_IG10: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- mov rbp, gword ptr [rbp+0x10]
- test rbp, rbp
+ ;; size=20 bbWeight=2 PerfScore 10.00
+G_M51747_IG10: ; bbWeight=4, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0020 {rbp}, byref, isz
+ mov r15, gword ptr [r15+0x10]
+ test r15, r15
jne SHORT G_M51747_IG06
;; size=9 bbWeight=4 PerfScore 13.00
G_M51747_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbp]
+ ; gcrRegs -[r15]
+ ; byrRegs -[rbp]
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
- mov r8d, edi
+ mov r8d, r14d
call [System.Xml.NameTable:AddEntry(System.String,int):System.String:this]
; gcrRegs -[rcx rdx rbx rsi] +[rax]
; gcr arg pop 0
@@ -158,11 +168,13 @@ G_M51747_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M51747_IG13: ; bbWeight=0.61, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rbp]
- mov rax, gword ptr [rbp+0x08]
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M51747_IG13: ; bbWeight=0.61, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[r15]
+ mov rax, gword ptr [r15+0x08]
; gcrRegs +[rax]
;; size=4 bbWeight=0.61 PerfScore 1.22
G_M51747_IG14: ; bbWeight=0.61, epilog, nogc, extend
@@ -171,10 +183,12 @@ G_M51747_IG14: ; bbWeight=0.61, epilog, nogc, extend
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=0.61 PerfScore 1.98
+ ;; size=13 bbWeight=0.61 PerfScore 2.58
G_M51747_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rbp]
+ ; gcrRegs -[rax r15]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
@@ -192,7 +206,7 @@ G_M51747_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 14, PerfScore 151.39, instruction count 77, allocated bytes for code 237 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
+; Total bytes of code 252, prolog size 18, PerfScore 86.20, instruction count 86, allocated bytes for code 252 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -200,13 +214,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
...
+14 (+8.00%) : 448605.dasm - System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
@@ -10,32 +10,33 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 9, 6.95) ref -> rbx class-hnd single-def <System.Object>
-; V01 arg1 [V01,T01] ( 7, 5.47) ref -> rsi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 7, 5.96) ref -> rsi class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 3, 1.98) int -> rax "guarded devirt return temp"
+; V03 tmp1 [V03,T06] ( 3, 2.88) int -> rbp "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.String>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <System.String>
-; V06 tmp4 [V06,T03] ( 4, 3.45) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String>
-; V07 tmp5 [V07,T02] ( 2, 3.96) byref -> rcx single-def "impAppendStmt"
+; V06 tmp4 [V06,T02] ( 4, 3.94) ref -> rsi class-hnd exact "Inline stloc first use temp" <System.String>
+; V07 tmp5 [V07,T03] ( 2, 3.96) byref -> rcx single-def "impAppendStmt"
; V08 cse0 [V08,T04] ( 4, 3.94) int -> rdi "CSE #02: aggressive"
; V09 cse1 [V09,T05] ( 3, 2.97) long -> rcx "CSE #01: moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
-G_M12969_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M12969_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=13 bbWeight=1 PerfScore 3.75
-G_M12969_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=1 PerfScore 4.75
+G_M12969_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp rbx, rsi
- je SHORT G_M12969_IG12
- ;; size=5 bbWeight=1 PerfScore 1.25
+ je G_M12969_IG12
+ ;; size=9 bbWeight=1 PerfScore 1.25
G_M12969_IG03: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
je SHORT G_M12969_IG06
@@ -45,31 +46,45 @@ G_M12969_IG04: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
je SHORT G_M12969_IG06
mov rcx, 0xD1FFAB1E ; System.String
cmp qword ptr [rbx], rcx
- jne SHORT G_M12969_IG15
- cmp qword ptr [rsi], rcx
jne SHORT G_M12969_IG14
+ cmp qword ptr [rsi], rcx
+ jne SHORT G_M12969_IG10
;; size=25 bbWeight=0.99 PerfScore 9.39
-G_M12969_IG05: ; bbWeight=0.49, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M12969_IG08
- ;; size=2 bbWeight=0.49 PerfScore 0.98
+G_M12969_IG05: ; bbWeight=0.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov edi, dword ptr [rbx+0x08]
+ cmp edi, dword ptr [rsi+0x08]
+ je SHORT G_M12969_IG11
+ jmp SHORT G_M12969_IG10
+ ;; size=10 bbWeight=0.98 PerfScore 7.87
G_M12969_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi]
xor eax, eax
;; size=2 bbWeight=0.00 PerfScore 0.00
G_M12969_IG07: ; bbWeight=0.00, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=0.00 PerfScore 0.01
-G_M12969_IG08: ; bbWeight=0.98, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=9 bbWeight=0.00 PerfScore 0.01
+G_M12969_IG08: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movzx rax, bpl
+ ;; size=4 bbWeight=0.99 PerfScore 0.25
+G_M12969_IG09: ; bbWeight=0.99, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0.99 PerfScore 3.21
+G_M12969_IG10: ; bbWeight=0.90, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ xor ebp, ebp
+ jmp SHORT G_M12969_IG08
+ ;; size=4 bbWeight=0.90 PerfScore 2.03
+G_M12969_IG11: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi]
- mov edi, dword ptr [rbx+0x08]
- cmp edi, dword ptr [rsi+0x08]
- jne SHORT G_M12969_IG14
- ;; size=8 bbWeight=0.98 PerfScore 5.90
-G_M12969_IG09: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov ecx, 1
call [System.Diagnostics.Debug:Assert(ubyte)]
; gcr arg pop 0
@@ -91,32 +106,21 @@ G_M12969_IG09: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rbx rsi]
; byrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=55 bbWeight=0.99 PerfScore 18.05
-G_M12969_IG10: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rax, al
- ;; size=3 bbWeight=0.99 PerfScore 0.25
-G_M12969_IG11: ; bbWeight=0.99, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
- ret
- ;; size=8 bbWeight=0.99 PerfScore 2.72
-G_M12969_IG12: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov ebp, eax
+ jmp SHORT G_M12969_IG08
+ ;; size=59 bbWeight=0.99 PerfScore 20.27
+G_M12969_IG12: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
;; size=5 bbWeight=0.01 PerfScore 0.00
G_M12969_IG13: ; bbWeight=0.01, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
+ pop rbp
pop rsi
pop rdi
ret
- ;; size=8 bbWeight=0.01 PerfScore 0.02
-G_M12969_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- xor eax, eax
- jmp SHORT G_M12969_IG10
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M12969_IG15: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ;; size=9 bbWeight=0.01 PerfScore 0.03
+G_M12969_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rsi]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -125,15 +129,16 @@ G_M12969_IG15: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x48]
;; size=13 bbWeight=0 PerfScore 0.00
-G_M12969_IG16: ; bbWeight=0, epilog, nogc, extend
- add rsp, 32
+G_M12969_IG15: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 40
pop rbx
+ pop rbp
pop rsi
pop rdi
tail.jmp [rax+0x10]<unknown method>
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 175, prolog size 13, PerfScore 43.57, instruction count 63, allocated bytes for code 175 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
+; Total bytes of code 189, prolog size 14, PerfScore 50.31, instruction count 70, allocated bytes for code 189 (MethodHash=7bf6cd56) for method System.Object:Equals(System.Object,System.Object):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -141,12 +146,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+5 (+16.13%) : 338480.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 40
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 40
; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-; V05 cse0 [V05,T03] ( 3, 3 ) ref -> rax "CSE #01: aggressive"
+;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;
; Lcl frame size = 0
@@ -24,34 +23,41 @@ G_M57887_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
mov rax, gword ptr [rcx+0x18]
; gcrRegs +[rax]
- mov rcx, rax
- test rcx, rcx
- je SHORT G_M57887_IG05
- test dl, dl
+ test rax, rax
je SHORT G_M57887_IG04
- ;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rcx]
- mov ecx, dword ptr [rcx+0x5C]
- ; gcrRegs -[rcx]
- and ecx, 7
- cmp ecx, 6
- je SHORT G_M57887_IG03
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ test dl, dl
+ je SHORT G_M57887_IG08
+ ;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ jmp SHORT G_M57887_IG06
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06: ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05: ; bbWeight=0, epilog, nogc, extend
ret
;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rcx]
+ mov rax, gword ptr [rcx+0x18]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07: ; bbWeight=0, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov eax, dword ptr [rax+0x5C]
+ ; gcrRegs -[rax]
+ and eax, 7
+ cmp eax, 6
+ jne SHORT G_M57887_IG04
+ jmp SHORT G_M57887_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
libraries.crossgen2.windows.x64.checked.mch
-9 (-6.98%) : 22491.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
@@ -54,28 +54,28 @@ G_M18424_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r
xor r11d, r11d
xor ebx, ebx
test ecx, ecx
- jle SHORT G_M18424_IG12
+ jle SHORT G_M18424_IG10
;; size=28 bbWeight=1 PerfScore 13.75
G_M18424_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
cmp r11d, r8d
- jae SHORT G_M18424_IG07
+ jae SHORT G_M18424_IG09
lea esi, [r11+0x01]
mov r11d, r11d
movzx rdi, byte ptr [r9+rbx]
mov byte ptr [rax+r11], dil
inc ebx
cmp ebx, ecx
- jl SHORT G_M18424_IG11
+ jl SHORT G_M18424_IG08
;; size=27 bbWeight=4 PerfScore 26.00
G_M18424_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
; byrRegs -[r9]
xor ecx, ecx
test edx, edx
- jle SHORT G_M18424_IG10
+ jle SHORT G_M18424_IG06
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
cmp esi, r8d
- jae SHORT G_M18424_IG09
+ jae SHORT G_M18424_IG06
mov r9d, esi
lea esi, [r9+0x01]
movzx r11, byte ptr [r10+rcx]
@@ -84,40 +84,34 @@ G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10},
cmp ecx, edx
jl SHORT G_M18424_IG05
;; size=27 bbWeight=4 PerfScore 26.00
-G_M18424_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18424_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax r10]
- mov r11d, esi
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M18424_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, r11d
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M18424_IG08: ; bbWeight=1, epilog, nogc, extend
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M18424_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M18424_IG09: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov r11d, esi
- jmp SHORT G_M18424_IG07
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r11d, esi
- jmp SHORT G_M18424_IG07
- ;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M18424_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
+G_M18424_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, gcvars, byref, isz
; byrRegs +[rax r9-r10]
mov r11d, esi
jmp SHORT G_M18424_IG03
;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
- ; byrRegs -[r9]
+G_M18424_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax r9-r10]
+ mov esi, r11d
+ jmp SHORT G_M18424_IG06
+ ;; size=5 bbWeight=2 PerfScore 4.50
+G_M18424_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
+ ; byrRegs +[rax r10]
mov esi, r11d
jmp SHORT G_M18424_IG04
;; size=5 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 129, prolog size 7, PerfScore 83.94, instruction count 50, allocated bytes for code 129 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 120, prolog size 7, PerfScore 82.88, instruction count 47, allocated bytes for code 120 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
-31 (-6.31%) : 148669.dasm - System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
@@ -75,8 +75,10 @@ G_M61432_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=6001 {ra
;; size=23 bbWeight=1 PerfScore 7.25
G_M61432_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=6001 {rax r13 r14}, byref
xor r9d, r9d
+ mov dword ptr [rsp+0x44], r9d
+ mov bword ptr [rsp+0xD8], rax
jmp G_M61432_IG10
- ;; size=8 bbWeight=0.50 PerfScore 1.12
+ ;; size=21 bbWeight=0.50 PerfScore 2.12
G_M61432_IG05: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=6001 {rax r13 r14}, byref
mov rcx, gword ptr [rdi+r10]
; gcrRegs +[rcx]
@@ -146,28 +148,20 @@ G_M61432_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
xor ecx, ecx
mov r10, qword ptr [rsp+0x38]
mov dword ptr [rdi+r10+0x08], ecx
- mov rax, bword ptr [rsp+0xD8]
- ; byrRegs +[rax]
- mov r9d, dword ptr [rsp+0x44]
- mov r10, qword ptr [rsp+0x38]
- ;; size=94 bbWeight=0.50 PerfScore 10.00
-G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=6001 {rax r13 r14}, byref, isz
+ ;; size=76 bbWeight=0.50 PerfScore 8.50
+G_M61432_IG10: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=6000 {r13 r14}, byref, isz
lea ecx, [4*r12]
cmp ecx, esi
jge SHORT G_M61432_IG11
mov esi, ecx
mov byte ptr [r13], 0
- mov dword ptr [rsp+0x44], r9d
- mov bword ptr [rsp+0xD8], rax
jmp SHORT G_M61432_IG12
- ;; size=34 bbWeight=0.50 PerfScore 3.50
-G_M61432_IG11: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=6001 {rax r13 r14}, byref
+ ;; size=21 bbWeight=0.50 PerfScore 2.50
+G_M61432_IG11: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=6000 {r13 r14}, byref
mov byte ptr [r13], 1
- mov dword ptr [rsp+0x44], r9d
- mov bword ptr [rsp+0xD8], rax
- ;; size=18 bbWeight=0.50 PerfScore 1.50
+ ;; size=5 bbWeight=0.50 PerfScore 0.50
G_M61432_IG12: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz
- ; byrRegs -[rax r13]
+ ; byrRegs -[r13]
add dword ptr [r14], esi
mov r14, gword ptr [rsp+0xB0]
; gcrRegs +[r14]
@@ -250,7 +244,7 @@ G_M61432_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 491, prolog size 68, PerfScore 169.31, instruction count 138, allocated bytes for code 491 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
+; Total bytes of code 460, prolog size 68, PerfScore 166.81, instruction count 133, allocated bytes for code 460 (MethodHash=b6eb1007) for method System.Xml.Ucs4Decoder:Convert(ubyte[],int,int,ushort[],int,int,ubyte,byref,byref,byref):this (FullOpts)
; ============================================================
Unwind Info:
-17 (-5.78%) : 92967.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
@@ -91,10 +91,13 @@ G_M39738_IG03: ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r
; byrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
+ mov gword ptr [rsp+0x28], rax
+ ; GC ptr vars +{V10}
jmp SHORT G_M39738_IG05
- ;; size=4 bbWeight=0.50 PerfScore 1.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M39738_IG04: ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ ; GC ptr vars -{V10}
mov rcx, r12
; gcrRegs +[rcx]
mov rdx, r13
@@ -105,25 +108,19 @@ G_M39738_IG04: ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r
; gcr arg pop 0
mov gword ptr [rsp+0x28], rax
; GC ptr vars +{V10}
- mov rax, gword ptr [rsp+0x28]
- ;; size=26 bbWeight=0.50 PerfScore 3.00
-G_M39738_IG05: ; bbWeight=1, gcrefRegs=F069 {rax rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; GC ptr vars -{V10}
- cmp byte ptr [rsp+0xA8], 0
- jne SHORT G_M39738_IG10
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M39738_IG06: ; bbWeight=0.50, gcrefRegs=F069 {rax rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- test rsi, rsi
- je SHORT G_M39738_IG09
- test byte ptr [rsi+0x10], 1
- jne SHORT G_M39738_IG10
- ;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M39738_IG07: ; bbWeight=0.25, gcrefRegs=F069 {rax rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
- mov gword ptr [rsp+0x28], rax
- ; GC ptr vars +{V10}
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M39738_IG08: ; bbWeight=0.50, gcVars=0000000000000100 {V10}, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=21 bbWeight=0.50 PerfScore 2.50
+G_M39738_IG05: ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
+ cmp byte ptr [rsp+0xA8], 0
+ jne SHORT G_M39738_IG08
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M39738_IG06: ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ test rsi, rsi
+ je SHORT G_M39738_IG07
+ test byte ptr [rsi+0x10], 1
+ jne SHORT G_M39738_IG08
+ ;; size=11 bbWeight=0.50 PerfScore 2.62
+G_M39738_IG07: ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [(reloc)] ; <unknown method>
mov rdx, r15
; gcrRegs +[rdx]
@@ -131,24 +128,13 @@ G_M39738_IG08: ; bbWeight=0.50, gcVars=0000000000000100 {V10}, gcrefRegs=
; gcrRegs -[rdx]
; gcr arg pop 0
mov dword ptr [rsp+0x34], eax
- jmp SHORT G_M39738_IG11
+ jmp SHORT G_M39738_IG09
;; size=22 bbWeight=0.50 PerfScore 4.12
-G_M39738_IG09: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=F069 {rax rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax]
- ; GC ptr vars -{V10}
- mov gword ptr [rsp+0x28], rax
- ; GC ptr vars +{V10}
- jmp SHORT G_M39738_IG08
- ;; size=7 bbWeight=0.25 PerfScore 0.75
-G_M39738_IG10: ; bbWeight=0.50, gcrefRegs=F069 {rax rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
- ; GC ptr vars -{V10}
+G_M39738_IG08: ; bbWeight=0.50, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov r8d, 1
- mov gword ptr [rsp+0x28], rax
- ; GC ptr vars +{V10}
mov dword ptr [rsp+0x34], r8d
- ;; size=16 bbWeight=0.50 PerfScore 1.12
-G_M39738_IG11: ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
+ ;; size=11 bbWeight=0.50 PerfScore 0.62
+G_M39738_IG09: ; bbWeight=1, gcrefRegs=F068 {rbx rbp rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov byte ptr [rbx+0x12], 22
lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
@@ -158,12 +144,12 @@ G_M39738_IG11: ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=F06
; gcrRegs -[rdx rbp]
; byrRegs -[rcx]
cmp byte ptr [rsp+0x34], 0
- je SHORT G_M39738_IG13
+ je SHORT G_M39738_IG11
;; size=24 bbWeight=1 PerfScore 7.75
-G_M39738_IG12: ; bbWeight=0.50, gcrefRegs=F048 {rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M39738_IG10: ; bbWeight=0.50, gcrefRegs=F048 {rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov word ptr [rbx+0x10], 1
;; size=6 bbWeight=0.50 PerfScore 0.50
-G_M39738_IG13: ; bbWeight=1, gcrefRegs=F048 {rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M39738_IG11: ; bbWeight=1, gcrefRegs=F048 {rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
mov rdx, gword ptr [rsp+0x28]
@@ -209,7 +195,7 @@ G_M39738_IG13: ; bbWeight=1, gcrefRegs=F048 {rbx rsi r12 r13 r14 r15}, by
; byrRegs -[rcx]
mov byte ptr [rbx+0x48], dil
;; size=84 bbWeight=1 PerfScore 24.25
-G_M39738_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M39738_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
@@ -222,7 +208,7 @@ G_M39738_IG14: ; bbWeight=1, epilog, nogc, extend
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 294, prolog size 16, PerfScore 76.25, instruction count 82, allocated bytes for code 294 (MethodHash=357464c5) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
+; Total bytes of code 277, prolog size 16, PerfScore 74.75, instruction count 78, allocated bytes for code 277 (MethodHash=357464c5) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
+12 (+12.77%) : 17957.dasm - System.Memory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
@@ -19,18 +19,18 @@
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref "field V01._array (fldOffset=0x0)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref "field V01._offset (fldOffset=0x8)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V01._count (fldOffset=0xc)" P-INDEP
-; V10 tmp8 [V10,T05] ( 3, 2 ) ref -> registers "field V05._object (fldOffset=0x0)" P-INDEP
+; V10 tmp8 [V10,T05] ( 3, 2 ) ref -> [rsp+0x28] "field V05._object (fldOffset=0x0)" P-INDEP
; V11 tmp9 [V11,T06] ( 3, 2 ) int -> rsi "field V05._index (fldOffset=0x8)" P-INDEP
; V12 tmp10 [V12,T07] ( 3, 2 ) int -> rdi "field V05._length (fldOffset=0xc)" P-INDEP
;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ArraySegment`1[ubyte]>
;
-; Lcl frame size = 32
+; Lcl frame size = 48
G_M30733_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 32
+ sub rsp, 48
mov rbx, rcx
; byrRegs +[rbx]
;; size=10 bbWeight=1 PerfScore 3.50
@@ -52,25 +52,31 @@ G_M30733_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
; gcrRegs +[rdx]
xor esi, esi
xor edi, edi
+ mov gword ptr [rsp+0x28], rdx
+ ; GC ptr vars +{V10}
jmp SHORT G_M30733_IG05
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=17 bbWeight=0.50 PerfScore 2.50
G_M30733_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rdx] +[rcx]
+ ; GC ptr vars -{V10}
mov r8d, eax
mov r10d, edx
add r8, r10
mov r10d, dword ptr [rcx+0x08]
cmp r8, r10
ja SHORT G_M30733_IG07
+ mov gword ptr [rsp+0x28], rcx
+ ; GC ptr vars +{V10}
mov esi, eax
mov edi, edx
- mov rdx, rcx
- ; gcrRegs +[rdx]
- ;; size=25 bbWeight=0.50 PerfScore 2.38
-G_M30733_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
+ ;; size=27 bbWeight=0.50 PerfScore 2.75
+G_M30733_IG05: ; bbWeight=1, gcVars=0000000000000020 {V10}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rcx]
+ mov rdx, gword ptr [rsp+0x28]
+ ; gcrRegs +[rdx]
mov rcx, rbx
; byrRegs +[rcx]
+ ; GC ptr vars -{V10}
call [CORINFO_HELP_CHECKED_ASSIGN_REF]
; gcrRegs -[rdx]
; byrRegs -[rcx]
@@ -78,9 +84,9 @@ G_M30733_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx},
mov dword ptr [rbx+0x0C], edi
mov rax, rbx
; byrRegs +[rax]
- ;; size=18 bbWeight=1 PerfScore 5.50
+ ;; size=23 bbWeight=1 PerfScore 6.50
G_M30733_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 48
pop rbx
pop rsi
pop rdi
@@ -93,7 +99,7 @@ G_M30733_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 7, PerfScore 23.38, instruction count 37, allocated bytes for code 94 (MethodHash=7a5b87f2) for method System.Memory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 25.25, instruction count 39, allocated bytes for code 106 (MethodHash=7a5b87f2) for method System.Memory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
; ============================================================
Unwind Info:
@@ -106,7 +112,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
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)
+12 (+12.77%) : 19893.dasm - System.MemoryExtensions:AsMemory[ubyte](System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
@@ -19,18 +19,18 @@
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref "field V01._array (fldOffset=0x0)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref "field V01._offset (fldOffset=0x8)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V01._count (fldOffset=0xc)" P-INDEP
-; V10 tmp8 [V10,T05] ( 3, 2 ) ref -> registers "field V05._object (fldOffset=0x0)" P-INDEP
+; V10 tmp8 [V10,T05] ( 3, 2 ) ref -> [rsp+0x28] "field V05._object (fldOffset=0x0)" P-INDEP
; V11 tmp9 [V11,T06] ( 3, 2 ) int -> rsi "field V05._index (fldOffset=0x8)" P-INDEP
; V12 tmp10 [V12,T07] ( 3, 2 ) int -> rdi "field V05._length (fldOffset=0xc)" P-INDEP
;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ArraySegment`1[ubyte]>
;
-; Lcl frame size = 32
+; Lcl frame size = 48
G_M52618_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 32
+ sub rsp, 48
mov rbx, rcx
; byrRegs +[rbx]
;; size=10 bbWeight=1 PerfScore 3.50
@@ -52,25 +52,31 @@ G_M52618_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
; gcrRegs +[rdx]
xor esi, esi
xor edi, edi
+ mov gword ptr [rsp+0x28], rdx
+ ; GC ptr vars +{V10}
jmp SHORT G_M52618_IG05
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=17 bbWeight=0.50 PerfScore 2.50
G_M52618_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rdx] +[rcx]
+ ; GC ptr vars -{V10}
mov r8d, eax
mov r10d, edx
add r8, r10
mov r10d, dword ptr [rcx+0x08]
cmp r8, r10
ja SHORT G_M52618_IG07
+ mov gword ptr [rsp+0x28], rcx
+ ; GC ptr vars +{V10}
mov esi, eax
mov edi, edx
- mov rdx, rcx
- ; gcrRegs +[rdx]
- ;; size=25 bbWeight=0.50 PerfScore 2.38
-G_M52618_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
+ ;; size=27 bbWeight=0.50 PerfScore 2.75
+G_M52618_IG05: ; bbWeight=1, gcVars=0000000000000020 {V10}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rcx]
+ mov rdx, gword ptr [rsp+0x28]
+ ; gcrRegs +[rdx]
mov rcx, rbx
; byrRegs +[rcx]
+ ; GC ptr vars -{V10}
call [CORINFO_HELP_CHECKED_ASSIGN_REF]
; gcrRegs -[rdx]
; byrRegs -[rcx]
@@ -78,9 +84,9 @@ G_M52618_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx},
mov dword ptr [rbx+0x0C], edi
mov rax, rbx
; byrRegs +[rax]
- ;; size=18 bbWeight=1 PerfScore 5.50
+ ;; size=23 bbWeight=1 PerfScore 6.50
G_M52618_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 48
pop rbx
pop rsi
pop rdi
@@ -93,7 +99,7 @@ G_M52618_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 7, PerfScore 23.38, instruction count 37, allocated bytes for code 94 (MethodHash=3cd73275) for method System.MemoryExtensions:AsMemory[ubyte](System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 25.25, instruction count 39, allocated bytes for code 106 (MethodHash=3cd73275) for method System.MemoryExtensions:AsMemory[ubyte](System.ArraySegment`1[ubyte]):System.Memory`1[ubyte] (FullOpts)
; ============================================================
Unwind Info:
@@ -106,7 +112,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
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)
+12 (+12.77%) : 17977.dasm - System.ReadOnlyMemory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.ReadOnlyMemory`1[ubyte] (FullOpts)
@@ -19,18 +19,18 @@
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref "field V01._array (fldOffset=0x0)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref "field V01._offset (fldOffset=0x8)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V01._count (fldOffset=0xc)" P-INDEP
-; V10 tmp8 [V10,T05] ( 3, 2 ) ref -> registers "field V05._object (fldOffset=0x0)" P-INDEP
+; V10 tmp8 [V10,T05] ( 3, 2 ) ref -> [rsp+0x28] "field V05._object (fldOffset=0x0)" P-INDEP
; V11 tmp9 [V11,T06] ( 3, 2 ) int -> rsi "field V05._index (fldOffset=0x8)" P-INDEP
; V12 tmp10 [V12,T07] ( 3, 2 ) int -> rdi "field V05._length (fldOffset=0xc)" P-INDEP
;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ArraySegment`1[ubyte]>
;
-; Lcl frame size = 32
+; Lcl frame size = 48
G_M50509_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 32
+ sub rsp, 48
mov rbx, rcx
; byrRegs +[rbx]
;; size=10 bbWeight=1 PerfScore 3.50
@@ -52,25 +52,31 @@ G_M50509_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
; gcrRegs +[rdx]
xor esi, esi
xor edi, edi
+ mov gword ptr [rsp+0x28], rdx
+ ; GC ptr vars +{V10}
jmp SHORT G_M50509_IG05
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=17 bbWeight=0.50 PerfScore 2.50
G_M50509_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rdx] +[rcx]
+ ; GC ptr vars -{V10}
mov r8d, eax
mov r10d, edx
add r8, r10
mov r10d, dword ptr [rcx+0x08]
cmp r8, r10
ja SHORT G_M50509_IG07
+ mov gword ptr [rsp+0x28], rcx
+ ; GC ptr vars +{V10}
mov esi, eax
mov edi, edx
- mov rdx, rcx
- ; gcrRegs +[rdx]
- ;; size=25 bbWeight=0.50 PerfScore 2.38
-G_M50509_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
+ ;; size=27 bbWeight=0.50 PerfScore 2.75
+G_M50509_IG05: ; bbWeight=1, gcVars=0000000000000020 {V10}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rcx]
+ mov rdx, gword ptr [rsp+0x28]
+ ; gcrRegs +[rdx]
mov rcx, rbx
; byrRegs +[rcx]
+ ; GC ptr vars -{V10}
call [CORINFO_HELP_CHECKED_ASSIGN_REF]
; gcrRegs -[rdx]
; byrRegs -[rcx]
@@ -78,9 +84,9 @@ G_M50509_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx},
mov dword ptr [rbx+0x0C], edi
mov rax, rbx
; byrRegs +[rax]
- ;; size=18 bbWeight=1 PerfScore 5.50
+ ;; size=23 bbWeight=1 PerfScore 6.50
G_M50509_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 48
pop rbx
pop rsi
pop rdi
@@ -93,7 +99,7 @@ G_M50509_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 7, PerfScore 23.38, instruction count 37, allocated bytes for code 94 (MethodHash=d7323ab2) for method System.ReadOnlyMemory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.ReadOnlyMemory`1[ubyte] (FullOpts)
+; Total bytes of code 106, prolog size 7, PerfScore 25.25, instruction count 39, allocated bytes for code 106 (MethodHash=d7323ab2) for method System.ReadOnlyMemory`1[ubyte]:op_Implicit(System.ArraySegment`1[ubyte]):System.ReadOnlyMemory`1[ubyte] (FullOpts)
; ============================================================
Unwind Info:
@@ -106,7 +112,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
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)
libraries.pmi.windows.x64.checked.mch
-43 (-15.93%) : 297660.dasm - System.Reflection.Emit.MethodBuilderImpl:get_IsConstructor():ubyte:this (FullOpts)
@@ -19,8 +19,8 @@
;* V08 tmp7 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp8 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp10 [V11,T07] ( 4, 0.86) ubyte -> rax "Inline return value spill temp"
-; V12 tmp11 [V12,T02] ( 6, 4.53) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.String>
+; V11 tmp10 [V11,T07] ( 4, 1 ) ubyte -> rax "Inline return value spill temp"
+; V12 tmp11 [V12,T02] ( 6, 4.53) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
; V13 tmp12 [V13,T04] ( 5, 3.81) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
; V14 tmp13 [V14,T08] ( 2, 0.83) byref -> rcx single-def "impAppendStmt"
;* V15 tmp14 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -28,17 +28,17 @@
;* V17 tmp16 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp18 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V20 cse0 [V20,T09] ( 0, 0 ) long -> zero-ref "CSE #03: moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M34460_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
push rsi
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=10 bbWeight=1 PerfScore 3.50
+ ;; size=9 bbWeight=1 PerfScore 2.50
G_M34460_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rbx+0x7C]
and eax, 0x1800
@@ -50,12 +50,11 @@ G_M34460_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M34460_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.38
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M34460_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
mov rsi, gword ptr [rbx+0x20]
@@ -63,14 +62,14 @@ G_M34460_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
test byte ptr [(reloc)], 1 ; global ptr
je G_M34460_IG18
;; size=17 bbWeight=0.50 PerfScore 3.00
-G_M34460_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M34460_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rdx, gword ptr [rax]
; gcrRegs +[rdx]
cmp byte ptr [rsi], sil
cmp rsi, rdx
- je G_M34460_IG16
- ;; size=25 bbWeight=0.50 PerfScore 3.25
+ je SHORT G_M34460_IG16
+ ;; size=21 bbWeight=0.50 PerfScore 3.25
G_M34460_IG07: ; bbWeight=0.35, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
test rdx, rdx
je SHORT G_M34460_IG09
@@ -94,37 +93,39 @@ G_M34460_IG08: ; bbWeight=0.50, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0
jne SHORT G_M34460_IG16
;; size=25 bbWeight=0.50 PerfScore 3.62
G_M34460_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbx+0x20]
- ; gcrRegs +[rdi]
- test byte ptr [(reloc)], 1 ; global ptr
- je SHORT G_M34460_IG19
- ;; size=13 bbWeight=0.50 PerfScore 3.00
-G_M34460_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- mov r8, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rdx, gword ptr [r8]
+ mov r8, gword ptr [rbx+0x20]
+ ; gcrRegs +[r8]
+ mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov rdx, gword ptr [rdx]
; gcrRegs +[rdx]
- cmp byte ptr [rdi], dil
- cmp rdi, rdx
+ cmp byte ptr [r8], r8b
+ cmp r8, rdx
je SHORT G_M34460_IG15
- ;; size=21 bbWeight=0.50 PerfScore 3.25
-G_M34460_IG11: ; bbWeight=0.35, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=25 bbWeight=0.50 PerfScore 4.25
+G_M34460_IG10: ; bbWeight=0.35, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx]
test rdx, rdx
- je SHORT G_M34460_IG20
- mov r8d, dword ptr [rdi+0x08]
- cmp r8d, dword ptr [rdx+0x08]
- jne SHORT G_M34460_IG20
- ;; size=15 bbWeight=0.35 PerfScore 2.52
-G_M34460_IG12: ; bbWeight=0.21, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
- lea rcx, bword ptr [rdi+0x0C]
+ je SHORT G_M34460_IG11
+ mov eax, dword ptr [r8+0x08]
+ cmp eax, dword ptr [rdx+0x08]
+ je SHORT G_M34460_IG12
+ ;; size=14 bbWeight=0.35 PerfScore 2.52
+G_M34460_IG11: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx r8]
+ xor eax, eax
+ jmp SHORT G_M34460_IG13
+ ;; size=4 bbWeight=0.14 PerfScore 0.31
+G_M34460_IG12: ; bbWeight=0.21, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdx r8]
+ lea rcx, bword ptr [r8+0x0C]
; byrRegs +[rcx]
- mov r8d, dword ptr [rdi+0x08]
+ mov r8d, dword ptr [r8+0x08]
+ ; gcrRegs -[r8]
add r8d, r8d
add rdx, 12
; gcrRegs -[rdx]
; byrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rdi]
; byrRegs -[rcx rdx]
; gcr arg pop 0
;; size=21 bbWeight=0.21 PerfScore 1.25
@@ -132,12 +133,11 @@ G_M34460_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
nop
;; size=1 bbWeight=0.50 PerfScore 0.12
G_M34460_IG14: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.38
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M34460_IG15: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov eax, 1
jmp SHORT G_M34460_IG13
@@ -146,12 +146,11 @@ G_M34460_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M34460_IG17: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx
pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.38
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M34460_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rsi]
mov rcx, 0xD1FFAB1E
@@ -160,21 +159,8 @@ G_M34460_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {
; gcr arg pop 0
jmp G_M34460_IG06
;; size=25 bbWeight=0 PerfScore 0.00
-G_M34460_IG19: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi] +[rdi]
- mov rcx, 0xD1FFAB1E
- mov edx, 0x720
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- jmp G_M34460_IG10
- ;; size=25 bbWeight=0 PerfScore 0.00
-G_M34460_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- xor eax, eax
- jmp SHORT G_M34460_IG13
- ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 270, prolog size 7, PerfScore 34.26, instruction count 77, allocated bytes for code 270 (MethodHash=03217963) for method System.Reflection.Emit.MethodBuilderImpl:get_IsConstructor():ubyte:this (FullOpts)
+; Total bytes of code 227, prolog size 6, PerfScore 30.83, instruction count 67, allocated bytes for code 227 (MethodHash=03217963) for method System.Reflection.Emit.MethodBuilderImpl:get_IsConstructor():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -182,12 +168,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x06
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- 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)
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
-38 (-10.03%) : 38.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
@@ -15,7 +15,7 @@
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (32) zero-ref "Inlining Arg" <System.Text.RegularExpressions.RegexCache+Key>
-; V07 tmp3 [V07,T11] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V07 tmp3 [V07,T10] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V08 tmp4 [V08,T01] ( 6, 5.70) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
; V09 tmp5 [V09,T04] ( 5, 4.39) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
; V10 tmp6 [V10,T07] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
@@ -24,7 +24,7 @@
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp10 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp12 [V16,T12] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V16 tmp12 [V16,T11] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V17 tmp13 [V17,T02] ( 6, 5.70) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
; V18 tmp14 [V18,T05] ( 5, 4.39) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
; V19 tmp15 [V19,T08] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
@@ -39,15 +39,15 @@
;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref "field V00._culture (fldOffset=0x8)" P-INDEP
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V00._options (fldOffset=0x10)" P-INDEP
;* V30 tmp26 [V30 ] ( 0, 0 ) long -> zero-ref "field V00._matchTimeout (fldOffset=0x18)" P-INDEP
-; V31 tmp27 [V31,T13] ( 2, 1 ) ref -> rdx single-def "field V06._pattern (fldOffset=0x0)" P-INDEP
-; V32 tmp28 [V32,T14] ( 2, 1 ) ref -> rsi single-def "field V06._culture (fldOffset=0x8)" P-INDEP
-; V33 tmp29 [V33,T15] ( 2, 1 ) int -> rbp "field V06._options (fldOffset=0x10)" P-INDEP
-; V34 tmp30 [V34,T16] ( 2, 1 ) long -> r14 "field V06._matchTimeout (fldOffset=0x18)" P-INDEP
-; V35 tmp31 [V35,T17] ( 2, 1 ) long -> rcx "field V25._ticks (fldOffset=0x0)" P-INDEP
+; V31 tmp27 [V31,T12] ( 2, 1 ) ref -> rdx single-def "field V06._pattern (fldOffset=0x0)" P-INDEP
+; V32 tmp28 [V32,T13] ( 2, 1 ) ref -> rsi single-def "field V06._culture (fldOffset=0x8)" P-INDEP
+; V33 tmp29 [V33,T14] ( 2, 1 ) int -> rbp "field V06._options (fldOffset=0x10)" P-INDEP
+; V34 tmp30 [V34,T15] ( 2, 1 ) long -> r14 "field V06._matchTimeout (fldOffset=0x18)" P-INDEP
+; V35 tmp31 [V35,T16] ( 2, 1 ) long -> rax "field V25._ticks (fldOffset=0x0)" P-INDEP
;* V36 tmp32 [V36 ] ( 0, 0 ) long -> zero-ref "field V26._ticks (fldOffset=0x0)" P-INDEP
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (32) zero-ref "Promoted implicit byref" <System.Text.RegularExpressions.RegexCache+Key>
; V38 tmp34 [V38,T09] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-;* V39 cse0 [V39,T10] ( 0, 0 ) long -> zero-ref multi-def "CSE #04: aggressive"
+;* V39 cse0 [V39,T17] ( 0, 0 ) long -> zero-ref "CSE #04: aggressive"
;
; Lcl frame size = 48
@@ -73,7 +73,7 @@ G_M3825_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byre
mov rdi, gword ptr [r8]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M3825_IG13
+ je G_M3825_IG12
;; size=22 bbWeight=1 PerfScore 3.50
G_M3825_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
mov rdx, gword ptr [rdi+0x18]
@@ -90,10 +90,10 @@ G_M3825_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}
;; size=26 bbWeight=0.50 PerfScore 7.12
G_M3825_IG05: ; bbWeight=0.35, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
test rdx, rdx
- je SHORT G_M3825_IG12
+ je SHORT G_M3825_IG11
mov ecx, dword ptr [r8+0x08]
cmp ecx, dword ptr [rdx+0x08]
- jne SHORT G_M3825_IG12
+ jne SHORT G_M3825_IG11
;; size=14 bbWeight=0.35 PerfScore 2.52
G_M3825_IG06: ; bbWeight=0.50, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
lea rcx, bword ptr [r8+0x0C]
@@ -108,7 +108,7 @@ G_M3825_IG06: ; bbWeight=0.50, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M3825_IG12
+ je SHORT G_M3825_IG11
;; size=25 bbWeight=0.50 PerfScore 3.62
G_M3825_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov r8, gword ptr [rbx+0x08]
@@ -122,10 +122,10 @@ G_M3825_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {
G_M3825_IG08: ; bbWeight=0.35, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rsi]
test rdx, rdx
- je SHORT G_M3825_IG12
+ je SHORT G_M3825_IG11
mov ecx, dword ptr [r8+0x08]
cmp ecx, dword ptr [rdx+0x08]
- jne SHORT G_M3825_IG12
+ jne SHORT G_M3825_IG11
;; size=14 bbWeight=0.35 PerfScore 2.52
G_M3825_IG09: ; bbWeight=0.50, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=0008 {rbx}, byref, isz
lea rcx, bword ptr [r8+0x0C]
@@ -140,36 +140,20 @@ G_M3825_IG09: ; bbWeight=0.50, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=000
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M3825_IG12
+ je SHORT G_M3825_IG11
;; size=25 bbWeight=0.50 PerfScore 3.62
G_M3825_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [rbx+0x10], ebp
- jne SHORT G_M3825_IG12
- mov rcx, qword ptr [rbx+0x18]
- cmp rcx, r14
- jne SHORT G_M3825_IG12
- mov rax, gword ptr [rdi+0x08]
- ; gcrRegs +[rax]
- ;; size=18 bbWeight=0.50 PerfScore 4.62
-G_M3825_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M3825_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs -[rax]
+ jne SHORT G_M3825_IG11
+ mov rax, qword ptr [rbx+0x18]
+ cmp rax, r14
+ je SHORT G_M3825_IG14
+ ;; size=14 bbWeight=0.50 PerfScore 3.62
+G_M3825_IG11: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
mov rsi, qword ptr [rdi+0x10]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M3825_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M3825_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rdi]
- test byte ptr [(reloc)], 1 ; global ptr
- je G_M3825_IG19
- ;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M3825_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
je SHORT G_M3825_IG16
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
@@ -199,6 +183,20 @@ G_M3825_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, b
; gcrRegs +[rax]
mov rax, gword ptr [rax+0x08]
;; size=83 bbWeight=0.50 PerfScore 10.88
+G_M3825_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 48
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M3825_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rdi]
+ mov rax, gword ptr [rdi+0x08]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M3825_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 48
pop rbx
@@ -209,7 +207,7 @@ G_M3825_IG15: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=11 bbWeight=0.50 PerfScore 1.88
G_M3825_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
+ ; gcrRegs -[rax rdi]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
@@ -231,15 +229,8 @@ G_M3825_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcr arg pop 0
jmp G_M3825_IG03
;; size=25 bbWeight=0 PerfScore 0.00
-G_M3825_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- mov rcx, 0xD1FFAB1E
- mov edx, 40
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- jmp G_M3825_IG14
- ;; size=25 bbWeight=0 PerfScore 0.00
-; Total bytes of code 379, prolog size 17, PerfScore 61.42, instruction count 110, allocated bytes for code 379 (MethodHash=588bf10e) for method System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
+; Total bytes of code 341, prolog size 17, PerfScore 59.42, instruction count 104, allocated bytes for code 341 (MethodHash=588bf10e) for method System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
; ============================================================
Unwind Info:
-42 (-7.81%) : 301081.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
@@ -10,13 +10,13 @@
;
; V00 this [V00,T00] ( 14, 8.50) ref -> rbx this class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.ObjectWriter>
; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rsi class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo>
-; V02 loc0 [V02,T05] ( 6, 3.50) long -> r14 ld-addr-op
+; V02 loc0 [V02,T07] ( 6, 3.50) long -> r14 ld-addr-op
; V03 loc1 [V03,T08] ( 5, 3.85) ref -> rdi class-hnd exact single-def <System.String>
; V04 loc2 [V04,T02] ( 11, 5.85) ref -> rbp class-hnd exact single-def <System.String>
; V05 loc3 [V05 ] ( 4, 2 ) ubyte -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T10] ( 3, 3 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V08 tmp2 [V08,T07] ( 2, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <System.String>
+; V08 tmp2 [V08,T06] ( 2, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <System.String>
; V09 tmp3 [V09,T09] ( 4, 3.50) ref -> rdi
; V10 tmp4 [V10,T22] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V11 tmp5 [V11,T03] ( 5, 4.39) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
@@ -36,17 +36,18 @@
;* V25 tmp19 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp20 [V26,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V27 tmp21 [V27,T11] ( 3, 3 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
-; V28 tmp22 [V28,T16] ( 3, 1.50) byref -> rax single-def "Inline stloc first use temp"
-; V29 tmp23 [V29,T19] ( 3, 1.50) long -> r14 "Inline return value spill temp"
-; V30 tmp24 [V30,T06] ( 4, 4 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.String>
-; V31 tmp25 [V31,T20] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
+; V28 tmp22 [V28,T21] ( 3, 1.50) byref -> rax single-def "Inline stloc first use temp"
+; V29 tmp23 [V29,T18] ( 3, 1.50) long -> r14 "Inline return value spill temp"
+; V30 tmp24 [V30,T05] ( 4, 4 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.String>
+; V31 tmp25 [V31,T19] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
; V32 tmp26 [V32,T12] ( 3, 3 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V33 tmp27 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V35 tmp29 [V35,T13] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
-; V36 cse0 [V36,T21] ( 3, 1.50) int -> r8 "CSE #07: moderate"
-; V37 cse1 [V37,T17] ( 3, 1.50) ref -> rcx "CSE #08: moderate"
-; V38 cse2 [V38,T18] ( 3, 1.50) ref -> rdx multi-def "CSE #02: moderate"
+;* V36 cse0 [V36,T25] ( 0, 0 ) long -> zero-ref "CSE #03: moderate"
+; V37 cse1 [V37,T20] ( 3, 1.50) int -> r8 "CSE #07: moderate"
+; V38 cse2 [V38,T16] ( 3, 1.50) ref -> rcx "CSE #08: moderate"
+; V39 cse3 [V39,T17] ( 3, 1.50) ref -> rdx multi-def "CSE #02: moderate"
;
; Lcl frame size = 48
@@ -112,12 +113,12 @@ G_M17396_IG06: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
G_M17396_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rbp rsi rdi]
xor r14d, r14d
- jmp G_M17396_IG18
+ jmp G_M17396_IG20
;; size=8 bbWeight=0.50 PerfScore 1.12
G_M17396_IG08: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rbp rsi rdi]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M17396_IG23
+ je G_M17396_IG22
;; size=13 bbWeight=0.50 PerfScore 2.00
G_M17396_IG09: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r8, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
@@ -148,25 +149,21 @@ G_M17396_IG11: ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRe
test eax, eax
jne SHORT G_M17396_IG07
;; size=25 bbWeight=0.50 PerfScore 3.62
-G_M17396_IG12: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
- test byte ptr [(reloc)], 1 ; global ptr
- je G_M17396_IG24
- ;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M17396_IG13: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG12: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov r8, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rdx, gword ptr [r8]
; gcrRegs +[rdx]
cmp rbp, rdx
je SHORT G_M17396_IG07
;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M17396_IG14: ; bbWeight=0.35, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG13: ; bbWeight=0.35, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
test rdx, rdx
- je SHORT G_M17396_IG16
+ je SHORT G_M17396_IG15
mov r8d, dword ptr [rbp+0x08]
cmp r8d, dword ptr [rdx+0x08]
- jne SHORT G_M17396_IG16
+ jne SHORT G_M17396_IG15
;; size=15 bbWeight=0.35 PerfScore 2.52
-G_M17396_IG15: ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M17396_IG14: ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [rbp+0x0C]
; byrRegs +[rcx]
mov r8d, dword ptr [rbp+0x08]
@@ -180,7 +177,7 @@ G_M17396_IG15: ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRe
test eax, eax
jne G_M17396_IG07
;; size=29 bbWeight=0.50 PerfScore 3.62
-G_M17396_IG16: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG15: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x68]
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
@@ -191,41 +188,14 @@ G_M17396_IG16: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
; byrRegs +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M17396_IG20
+ je SHORT G_M17396_IG16
mov r14, qword ptr [rax]
xor edx, edx
mov dword ptr [rsp+0x28], edx
- ;; size=29 bbWeight=0.50 PerfScore 6.38
-G_M17396_IG17: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+ jmp G_M17396_IG19
+ ;; size=34 bbWeight=0.50 PerfScore 7.38
+G_M17396_IG16: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- movzx rcx, byte ptr [rsp+0x28]
- mov dword ptr [rsp+0x20], ecx
- mov rcx, gword ptr [rbx+0x20]
- ; gcrRegs +[rcx]
- mov rdx, gword ptr [rsi+0x10]
- ; gcrRegs +[rdx]
- mov r8, rbp
- ; gcrRegs +[r8]
- mov r9d, r14d
- cmp dword ptr [rcx], ecx
- call [System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteAssembly(System.Type,System.String,int,ubyte):this]
- ; gcrRegs -[rcx rdx rbx rbp rsi r8]
- ; gcr arg pop 0
- ;; size=31 bbWeight=0.50 PerfScore 6.25
-G_M17396_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rax, r14
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M17396_IG19: ; bbWeight=1, epilog, nogc, extend
- add rsp, 48
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=1 PerfScore 3.75
-G_M17396_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rbp rsi]
mov rdx, rbp
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E
@@ -236,14 +206,14 @@ G_M17396_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=006
mov r14, rax
; gcrRegs +[r14]
cmp r14, gword ptr [rbx+0x58]
- jne SHORT G_M17396_IG21
+ jne SHORT G_M17396_IG17
xor ecx, ecx
mov dword ptr [rsp+0x28], ecx
mov r14, qword ptr [rbx+0x80]
; gcrRegs -[r14]
- jmp SHORT G_M17396_IG22
+ jmp SHORT G_M17396_IG18
;; size=43 bbWeight=0.50 PerfScore 6.50
-G_M17396_IG21: ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M17396_IG17: ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] +[r14]
mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
@@ -270,7 +240,7 @@ G_M17396_IG21: ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRe
mov qword ptr [rbx+0x80], rdi
mov r14, rdi
;; size=68 bbWeight=0.50 PerfScore 8.62
-G_M17396_IG22: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M17396_IG18: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x68]
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
@@ -282,7 +252,7 @@ G_M17396_IG22: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne G_M17396_IG17
+ jne SHORT G_M17396_IG19
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -290,26 +260,44 @@ G_M17396_IG22: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp G_M17396_IG17
- ;; size=56 bbWeight=0.50 PerfScore 7.75
-G_M17396_IG23: ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rdi]
+ ;; size=47 bbWeight=0.50 PerfScore 6.75
+G_M17396_IG19: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+ movzx rcx, byte ptr [rsp+0x28]
+ mov dword ptr [rsp+0x20], ecx
+ mov rcx, gword ptr [rbx+0x20]
+ ; gcrRegs +[rcx]
+ mov rdx, gword ptr [rsi+0x10]
+ ; gcrRegs +[rdx]
+ mov r8, rbp
+ ; gcrRegs +[r8]
+ mov r9d, r14d
+ cmp dword ptr [rcx], ecx
+ call [System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteAssembly(System.Type,System.String,int,ubyte):this]
+ ; gcrRegs -[rcx rdx rbx rbp rsi r8]
+ ; gcr arg pop 0
+ ;; size=31 bbWeight=0.50 PerfScore 6.25
+G_M17396_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rax, r14
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M17396_IG21: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 48
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M17396_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx rbp rsi rdi]
mov rcx, 0xD1FFAB1E
mov edx, 60
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcr arg pop 0
jmp G_M17396_IG09
;; size=25 bbWeight=0 PerfScore 0.00
-G_M17396_IG24: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rcx, 0xD1FFAB1E
- mov edx, 60
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- jmp G_M17396_IG13
- ;; size=25 bbWeight=0 PerfScore 0.00
-; Total bytes of code 538, prolog size 10, PerfScore 83.17, instruction count 137, allocated bytes for code 538 (MethodHash=e0f3bc0b) for method System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
+; Total bytes of code 496, prolog size 10, PerfScore 81.17, instruction count 131, allocated bytes for code 496 (MethodHash=e0f3bc0b) for method System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
; ============================================================
Unwind Info:
+15 (+13.76%) : 34842.dasm - Microsoft.Diagnostics.Tracing.TraceEventRawReaders:ReadUTF8String(long,int,int):System.String (FullOpts)
@@ -39,28 +39,28 @@ G_M23522_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
xor r9d, r9d
mov edx, dword ptr [rax+0x08]
test edx, edx
- jle SHORT G_M23522_IG04
+ jle SHORT G_M23522_IG08
;; size=34 bbWeight=1 PerfScore 5.50
G_M23522_IG03: ; bbWeight=4, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
movsxd r8, r9d
movzx r8, byte ptr [rcx+r8]
test r8d, r8d
- je SHORT G_M23522_IG04
+ je SHORT G_M23522_IG07
lea r10d, [r9+0x01]
mov r9d, r9d
mov byte ptr [rax+r9+0x10], r8b
cmp edx, r10d
- mov r9d, r10d
- jg SHORT G_M23522_IG03
- ;; size=33 bbWeight=4 PerfScore 27.00
+ jg SHORT G_M23522_IG06
+ ;; size=30 bbWeight=4 PerfScore 26.00
G_M23522_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
+ mov r9d, r10d
xor r8d, r8d
- ;; size=19 bbWeight=1 PerfScore 2.75
+ ;; size=22 bbWeight=1 PerfScore 3.00
G_M23522_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -68,8 +68,21 @@ G_M23522_IG05: ; bbWeight=1, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 3.25
+G_M23522_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx rdx]
+ mov r9d, r10d
+ jmp SHORT G_M23522_IG03
+ ;; size=5 bbWeight=2 PerfScore 4.50
+G_M23522_IG07: ; bbWeight=2, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ mov r10d, r9d
+ jmp SHORT G_M23522_IG04
+ ;; size=5 bbWeight=2 PerfScore 4.50
+G_M23522_IG08: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ mov r10d, r9d
+ jmp SHORT G_M23522_IG04
+ ;; size=5 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 109, prolog size 11, PerfScore 41.25, instruction count 32, allocated bytes for code 109 (MethodHash=ab49a41d) for method Microsoft.Diagnostics.Tracing.TraceEventRawReaders:ReadUTF8String(long,int,int):System.String (FullOpts)
+; Total bytes of code 124, prolog size 11, PerfScore 50.62, instruction count 38, allocated bytes for code 124 (MethodHash=ab49a41d) for method Microsoft.Diagnostics.Tracing.TraceEventRawReaders:ReadUTF8String(long,int,int):System.String (FullOpts)
; ============================================================
Unwind Info:
+9 (+14.29%) : 151473.dasm - Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
@@ -41,7 +41,7 @@
;* V30 tmp29 [V30 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V31 tmp30 [V31 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V33 tmp32 [V33,T04] ( 2, 2 ) byref -> r8 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp32 [V33,T04] ( 2, 2 ) byref -> r9 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp33 [V34 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;* V35 tmp34 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp35 [V36 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
@@ -67,37 +67,43 @@ G_M56823_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
xor rcx, rcx
; byrRegs +[rcx]
xor edx, edx
+ mov r8d, edx
+ mov rdx, rcx
+ ; byrRegs +[rdx]
jmp SHORT G_M56823_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M56823_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ ; byrRegs -[rcx rdx]
lea rdx, bword ptr [rcx+0x0C]
; byrRegs +[rdx]
mov ecx, dword ptr [rcx+0x08]
; gcrRegs -[rcx]
mov r8d, ecx
+ ;; size=10 bbWeight=0.50 PerfScore 1.38
+G_M56823_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
+ mov r9, 0xD1FFAB1E
+ ; byrRegs +[r9]
mov rcx, rdx
; byrRegs +[rcx]
mov edx, r8d
; byrRegs -[rdx]
- ;; size=16 bbWeight=0.50 PerfScore 1.62
-G_M56823_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
- mov r8, 0xD1FFAB1E
+ mov r8, r9
; byrRegs +[r8]
mov r9d, 2
+ ; byrRegs -[r9]
call [<unknown method>]
; byrRegs -[rcx r8]
; gcr arg pop 0
not eax
shr eax, 31
- ;; size=27 bbWeight=1 PerfScore 4.25
+ ;; size=36 bbWeight=1 PerfScore 5.00
G_M56823_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 63, prolog size 4, PerfScore 9.88, instruction count 18, allocated bytes for code 63 (MethodHash=57412208) for method Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
+; Total bytes of code 72, prolog size 4, PerfScore 10.62, instruction count 21, allocated bytes for code 72 (MethodHash=57412208) for method Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
; ============================================================
Unwind Info:
+9 (+14.29%) : 192170.dasm - Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
@@ -41,7 +41,7 @@
;* V30 tmp29 [V30 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V31 tmp30 [V31 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V33 tmp32 [V33,T04] ( 2, 2 ) byref -> r8 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp32 [V33,T04] ( 2, 2 ) byref -> r9 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp33 [V34 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;* V35 tmp34 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V36 tmp35 [V36 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
@@ -67,37 +67,43 @@ G_M56823_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
xor rcx, rcx
; byrRegs +[rcx]
xor edx, edx
+ mov r8d, edx
+ mov rdx, rcx
+ ; byrRegs +[rdx]
jmp SHORT G_M56823_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M56823_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ ; byrRegs -[rcx rdx]
lea rdx, bword ptr [rcx+0x0C]
; byrRegs +[rdx]
mov ecx, dword ptr [rcx+0x08]
; gcrRegs -[rcx]
mov r8d, ecx
+ ;; size=10 bbWeight=0.50 PerfScore 1.38
+G_M56823_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
+ mov r9, 0xD1FFAB1E
+ ; byrRegs +[r9]
mov rcx, rdx
; byrRegs +[rcx]
mov edx, r8d
; byrRegs -[rdx]
- ;; size=16 bbWeight=0.50 PerfScore 1.62
-G_M56823_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
- mov r8, 0xD1FFAB1E
+ mov r8, r9
; byrRegs +[r8]
mov r9d, 2
+ ; byrRegs -[r9]
call [<unknown method>]
; byrRegs -[rcx r8]
; gcr arg pop 0
not eax
shr eax, 31
- ;; size=27 bbWeight=1 PerfScore 4.25
+ ;; size=36 bbWeight=1 PerfScore 5.00
G_M56823_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 63, prolog size 4, PerfScore 9.88, instruction count 18, allocated bytes for code 63 (MethodHash=57412208) for method Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
+; Total bytes of code 72, prolog size 4, PerfScore 10.62, instruction count 21, allocated bytes for code 72 (MethodHash=57412208) for method Microsoft.CodeAnalysis.Text.SourceText:IsBinary(System.String):ubyte (FullOpts)
; ============================================================
Unwind Info:
libraries_tests.run.windows.x64.Release.mch
-5 (-20.00%) : 22417.dasm - System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
@@ -17,17 +17,17 @@ G_M54891_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M54891_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
nop
- ;; size=16 bbWeight=1 PerfScore 1.50
+ ;; size=11 bbWeight=1 PerfScore 1.50
G_M54891_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 25, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 25 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
+; Total bytes of code 20, prolog size 4, PerfScore 3.00, instruction count 6, allocated bytes for code 20 (MethodHash=2bdc2994) for method System.Reflection.Emit.AssemblyBuilder:EnsureDynamicCodeSupported() (Instrumented Tier1)
; ============================================================
Unwind Info:
-25 (-19.08%) : 3870.dasm - System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
@@ -28,27 +28,27 @@ G_M29451_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
;; size=4 bbWeight=1 PerfScore 1.25
G_M29451_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
nop
- ;; size=16 bbWeight=1 PerfScore 1.50
+ ;; size=11 bbWeight=1 PerfScore 1.50
G_M29451_IG04: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
G_M29451_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
jmp SHORT G_M29451_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M29451_IG06: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
+ mov edx, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rcx]
; gcr arg pop 0
@@ -61,15 +61,15 @@ G_M29451_IG06: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
test eax, eax
je SHORT G_M29451_IG05
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov rcx, gword ptr [rbx+0x18]
; gcrRegs +[rcx]
- ;; size=69 bbWeight=0 PerfScore 0.00
+ ;; size=54 bbWeight=0 PerfScore 0.00
G_M29451_IG07: ; bbWeight=0, epilog, nogc, extend
add rsp, 32
pop rbx
@@ -77,7 +77,7 @@ G_M29451_IG07: ; bbWeight=0, epilog, nogc, extend
; gcr arg pop 0
;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 131, prolog size 5, PerfScore 6.00, instruction count 31, allocated bytes for code 131 (MethodHash=263b8cf4) for method System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
+; Total bytes of code 106, prolog size 5, PerfScore 6.00, instruction count 31, allocated bytes for code 106 (MethodHash=263b8cf4) for method System.IO.Strategies.OSFileStreamStrategy:Flush(ubyte):this (Instrumented Tier1)
; ============================================================
Unwind Info:
-33 (-19.08%) : 3871.dasm - System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
@@ -50,16 +50,16 @@ G_M54328_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
;; size=13 bbWeight=1.00 PerfScore 5.23
G_M54328_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rsi]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov rcx, gword ptr [rbx+0x18]
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
- ;; size=36 bbWeight=1.00 PerfScore 7.47
+ ;; size=26 bbWeight=1.00 PerfScore 7.47
G_M54328_IG06: ; bbWeight=1.00, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -69,31 +69,31 @@ G_M54328_IG06: ; bbWeight=1.00, epilog, nogc, extend
;; size=12 bbWeight=1.00 PerfScore 3.24
G_M54328_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rbx]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
jmp SHORT G_M54328_IG09
- ;; size=17 bbWeight=0.50 PerfScore 1.62
+ ;; size=12 bbWeight=0.50 PerfScore 1.62
G_M54328_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- ;; size=15 bbWeight=0.50 PerfScore 0.62
+ ;; size=10 bbWeight=0.50 PerfScore 0.62
G_M54328_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
nop
- ;; size=16 bbWeight=1 PerfScore 1.50
+ ;; size=11 bbWeight=1 PerfScore 1.50
G_M54328_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M54328_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M54328_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi]
- mov rcx, 0xD1FFAB1E
+ mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
mov rcx, rsi
@@ -101,10 +101,10 @@ G_M54328_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {
call [System.Threading.ThreadPoolBoundHandle:Dispose():this]
; gcrRegs -[rcx rsi]
; gcr arg pop 0
- jmp G_M54328_IG05
- ;; size=29 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M54328_IG05
+ ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 173, prolog size 9, PerfScore 32.92, instruction count 42, allocated bytes for code 173 (MethodHash=7b742bc7) for method System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
+; Total bytes of code 140, prolog size 9, PerfScore 32.92, instruction count 42, allocated bytes for code 140 (MethodHash=7b742bc7) for method System.IO.Strategies.OSFileStreamStrategy:Dispose(ubyte):this (Instrumented Tier1)
; ============================================================
Unwind Info:
+5 (+16.13%) : 318510.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 12
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 12
; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-; V05 cse0 [V05,T03] ( 3, 3 ) ref -> rax "CSE #01: aggressive"
+;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;
; Lcl frame size = 0
@@ -24,34 +23,41 @@ G_M57887_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
mov rax, gword ptr [rcx+0x18]
; gcrRegs +[rax]
- mov rcx, rax
- test rcx, rcx
- je SHORT G_M57887_IG05
- test dl, dl
+ test rax, rax
je SHORT G_M57887_IG04
- ;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rcx]
- mov ecx, dword ptr [rcx+0x5C]
- ; gcrRegs -[rcx]
- and ecx, 7
- cmp ecx, 6
- je SHORT G_M57887_IG03
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ test dl, dl
+ je SHORT G_M57887_IG08
+ ;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ jmp SHORT G_M57887_IG06
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06: ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05: ; bbWeight=0, epilog, nogc, extend
ret
;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rcx]
+ mov rax, gword ptr [rcx+0x18]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07: ; bbWeight=0, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov eax, dword ptr [rax+0x5C]
+ ; gcrRegs -[rax]
+ and eax, 7
+ cmp eax, 6
+ jne SHORT G_M57887_IG04
+ jmp SHORT G_M57887_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
+5 (+16.13%) : 509630.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 654
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 654
; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-; V05 cse0 [V05,T03] ( 3, 3 ) ref -> rax "CSE #01: aggressive"
+;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;
; Lcl frame size = 0
@@ -24,34 +23,41 @@ G_M57887_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
mov rax, gword ptr [rcx+0x18]
; gcrRegs +[rax]
- mov rcx, rax
- test rcx, rcx
- je SHORT G_M57887_IG05
- test dl, dl
+ test rax, rax
je SHORT G_M57887_IG04
- ;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rcx]
- mov ecx, dword ptr [rcx+0x5C]
- ; gcrRegs -[rcx]
- and ecx, 7
- cmp ecx, 6
- je SHORT G_M57887_IG03
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ test dl, dl
+ je SHORT G_M57887_IG08
+ ;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ jmp SHORT G_M57887_IG06
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06: ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05: ; bbWeight=0, epilog, nogc, extend
ret
;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rcx]
+ mov rax, gword ptr [rcx+0x18]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07: ; bbWeight=0, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov eax, dword ptr [rax+0x5C]
+ ; gcrRegs -[rax]
+ and eax, 7
+ cmp eax, 6
+ jne SHORT G_M57887_IG04
+ jmp SHORT G_M57887_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
+5 (+16.13%) : 327311.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
@@ -5,16 +5,15 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 68
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 68
; 2 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+; V00 this [V00,T00] ( 4, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
-; V05 cse0 [V05,T03] ( 3, 3 ) ref -> rax "CSE #01: aggressive"
+;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp2 [V04,T02] ( 3, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;
; Lcl frame size = 0
@@ -24,34 +23,41 @@ G_M57887_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
mov rax, gword ptr [rcx+0x18]
; gcrRegs +[rax]
- mov rcx, rax
- test rcx, rcx
- je SHORT G_M57887_IG05
- test dl, dl
+ test rax, rax
je SHORT G_M57887_IG04
- ;; size=16 bbWeight=1 PerfScore 4.75
-G_M57887_IG03: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M57887_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rcx]
- mov ecx, dword ptr [rcx+0x5C]
- ; gcrRegs -[rcx]
- and ecx, 7
- cmp ecx, 6
- je SHORT G_M57887_IG03
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M57887_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ test dl, dl
+ je SHORT G_M57887_IG08
+ ;; size=13 bbWeight=1 PerfScore 4.50
+G_M57887_IG03: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ jmp SHORT G_M57887_IG06
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57887_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG06: ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG05: ; bbWeight=0, epilog, nogc, extend
ret
;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rcx]
+ mov rax, gword ptr [rcx+0x18]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M57887_IG07: ; bbWeight=0, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M57887_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov eax, dword ptr [rax+0x5C]
+ ; gcrRegs -[rax]
+ and eax, 7
+ cmp eax, 6
+ jne SHORT G_M57887_IG04
+ jmp SHORT G_M57887_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 31, prolog size 0, PerfScore 5.75, instruction count 13, allocated bytes for code 31 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 36, prolog size 0, PerfScore 4.50, instruction count 15, allocated bytes for code 36 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
; ============================================================
Unwind Info:
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch
-14 (-11.02%) : 23742.dasm - Analyzer.Utilities.WellKnownTypeProvider:IsIdentifierPartCharacter(ushort):ubyte (FullOpts)
@@ -25,13 +25,13 @@ G_M51452_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M51452_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rcx, cx
cmp ecx, 97
- jge SHORT G_M51452_IG08
+ jge SHORT G_M51452_IG07
;; size=8 bbWeight=1 PerfScore 1.50
G_M51452_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp ecx, 65
jge SHORT G_M51452_IG04
cmp ecx, 48
- jl SHORT G_M51452_IG11
+ jl SHORT G_M51452_IG10
xor ebx, ebx
cmp ecx, 57
setle bl
@@ -39,54 +39,51 @@ G_M51452_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
;; size=20 bbWeight=0.50 PerfScore 3.00
G_M51452_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp ecx, 90
- jle SHORT G_M51452_IG05
+ jle SHORT G_M51452_IG13
cmp ecx, 95
- jne SHORT G_M51452_IG06
+ je SHORT G_M51452_IG13
;; size=10 bbWeight=0.50 PerfScore 1.25
-G_M51452_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov ebx, 1
- jmp SHORT G_M51452_IG07
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M51452_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51452_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor ebx, ebx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M51452_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M51452_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M51452_IG14
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M51452_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M51452_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp ecx, 122
- jg SHORT G_M51452_IG10
+ jg SHORT G_M51452_IG09
mov eax, 1
;; size=10 bbWeight=0.50 PerfScore 0.75
-G_M51452_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M51452_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M51452_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51452_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp ecx, 127
- jg SHORT G_M51452_IG13
+ jg SHORT G_M51452_IG12
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M51452_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51452_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M51452_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M51452_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M51452_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51452_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int]
; gcr arg pop 0
cmp eax, 18
- ja SHORT G_M51452_IG06
- mov eax, eax
- lea rcx, [reloc @RWD00]
- mov ecx, dword ptr [rcx+4*rax]
- lea rdx, G_M51452_IG02
- add rcx, rdx
- jmp rcx
- ;; size=35 bbWeight=0.50 PerfScore 5.12
+ ja SHORT G_M51452_IG05
+ mov ecx, 0xD1FFAB1E
+ bt ecx, eax
+ jae SHORT G_M51452_IG05
+ ;; size=21 bbWeight=0.50 PerfScore 3.00
+G_M51452_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov ebx, 1
+ jmp SHORT G_M51452_IG06
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
G_M51452_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, bl
;; size=3 bbWeight=0.50 PerfScore 0.12
@@ -95,28 +92,8 @@ G_M51452_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-RWD00 dd G_M51452_IG05 - G_M51452_IG02
- dd G_M51452_IG05 - G_M51452_IG02
- dd G_M51452_IG05 - G_M51452_IG02
- dd G_M51452_IG05 - G_M51452_IG02
- dd G_M51452_IG05 - G_M51452_IG02
- dd G_M51452_IG05 - G_M51452_IG02
- dd G_M51452_IG05 - G_M51452_IG02
- dd G_M51452_IG06 - G_M51452_IG02
- dd G_M51452_IG05 - G_M51452_IG02
- dd G_M51452_IG05 - G_M51452_IG02
- dd G_M51452_IG06 - G_M51452_IG02
- dd G_M51452_IG06 - G_M51452_IG02
- dd G_M51452_IG06 - G_M51452_IG02
- dd G_M51452_IG06 - G_M51452_IG02
- dd G_M51452_IG06 - G_M51452_IG02
- dd G_M51452_IG05 - G_M51452_IG02
- dd G_M51452_IG06 - G_M51452_IG02
- dd G_M51452_IG06 - G_M51452_IG02
- dd G_M51452_IG05 - G_M51452_IG02
-
-; Total bytes of code 127, prolog size 5, PerfScore 18.62, instruction count 46, allocated bytes for code 127 (MethodHash=d5933703) for method Analyzer.Utilities.WellKnownTypeProvider:IsIdentifierPartCharacter(ushort):ubyte (FullOpts)
+; Total bytes of code 113, prolog size 5, PerfScore 16.50, instruction count 43, allocated bytes for code 113 (MethodHash=d5933703) for method Analyzer.Utilities.WellKnownTypeProvider:IsIdentifierPartCharacter(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
-38 (-10.03%) : 34918.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
@@ -15,7 +15,7 @@
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (32) zero-ref "Inlining Arg" <System.Text.RegularExpressions.RegexCache+Key>
-; V07 tmp3 [V07,T11] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V07 tmp3 [V07,T10] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V08 tmp4 [V08,T01] ( 6, 5.70) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
; V09 tmp5 [V09,T04] ( 5, 4.39) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
; V10 tmp6 [V10,T07] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
@@ -24,7 +24,7 @@
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp10 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp12 [V16,T12] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V16 tmp12 [V16,T11] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V17 tmp13 [V17,T02] ( 6, 5.70) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.String>
; V18 tmp14 [V18,T05] ( 5, 4.39) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
; V19 tmp15 [V19,T08] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
@@ -39,15 +39,15 @@
;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref "field V00._culture (fldOffset=0x8)" P-INDEP
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V00._options (fldOffset=0x10)" P-INDEP
;* V30 tmp26 [V30 ] ( 0, 0 ) long -> zero-ref "field V00._matchTimeout (fldOffset=0x18)" P-INDEP
-; V31 tmp27 [V31,T13] ( 2, 1 ) ref -> rdx single-def "field V06._pattern (fldOffset=0x0)" P-INDEP
-; V32 tmp28 [V32,T14] ( 2, 1 ) ref -> rsi single-def "field V06._culture (fldOffset=0x8)" P-INDEP
-; V33 tmp29 [V33,T15] ( 2, 1 ) int -> rbp "field V06._options (fldOffset=0x10)" P-INDEP
-; V34 tmp30 [V34,T16] ( 2, 1 ) long -> r14 "field V06._matchTimeout (fldOffset=0x18)" P-INDEP
-; V35 tmp31 [V35,T17] ( 2, 1 ) long -> rcx "field V25._ticks (fldOffset=0x0)" P-INDEP
+; V31 tmp27 [V31,T12] ( 2, 1 ) ref -> rdx single-def "field V06._pattern (fldOffset=0x0)" P-INDEP
+; V32 tmp28 [V32,T13] ( 2, 1 ) ref -> rsi single-def "field V06._culture (fldOffset=0x8)" P-INDEP
+; V33 tmp29 [V33,T14] ( 2, 1 ) int -> rbp "field V06._options (fldOffset=0x10)" P-INDEP
+; V34 tmp30 [V34,T15] ( 2, 1 ) long -> r14 "field V06._matchTimeout (fldOffset=0x18)" P-INDEP
+; V35 tmp31 [V35,T16] ( 2, 1 ) long -> rax "field V25._ticks (fldOffset=0x0)" P-INDEP
;* V36 tmp32 [V36 ] ( 0, 0 ) long -> zero-ref "field V26._ticks (fldOffset=0x0)" P-INDEP
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (32) zero-ref "Promoted implicit byref" <System.Text.RegularExpressions.RegexCache+Key>
; V38 tmp34 [V38,T09] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-;* V39 cse0 [V39,T10] ( 0, 0 ) long -> zero-ref multi-def "CSE #04: aggressive"
+;* V39 cse0 [V39,T17] ( 0, 0 ) long -> zero-ref "CSE #04: aggressive"
;
; Lcl frame size = 48
@@ -73,7 +73,7 @@ G_M3825_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byre
mov rdi, gword ptr [r8]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M3825_IG13
+ je G_M3825_IG12
;; size=22 bbWeight=1 PerfScore 3.50
G_M3825_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
mov rdx, gword ptr [rdi+0x18]
@@ -90,10 +90,10 @@ G_M3825_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}
;; size=26 bbWeight=0.50 PerfScore 7.12
G_M3825_IG05: ; bbWeight=0.35, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
test rdx, rdx
- je SHORT G_M3825_IG12
+ je SHORT G_M3825_IG11
mov ecx, dword ptr [r8+0x08]
cmp ecx, dword ptr [rdx+0x08]
- jne SHORT G_M3825_IG12
+ jne SHORT G_M3825_IG11
;; size=14 bbWeight=0.35 PerfScore 2.52
G_M3825_IG06: ; bbWeight=0.50, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs=0008 {rbx}, byref, isz
lea rcx, bword ptr [r8+0x0C]
@@ -108,7 +108,7 @@ G_M3825_IG06: ; bbWeight=0.50, gcrefRegs=01C4 {rdx rsi rdi r8}, byrefRegs
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M3825_IG12
+ je SHORT G_M3825_IG11
;; size=25 bbWeight=0.50 PerfScore 3.62
G_M3825_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
mov r8, gword ptr [rbx+0x08]
@@ -122,10 +122,10 @@ G_M3825_IG07: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {
G_M3825_IG08: ; bbWeight=0.35, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rsi]
test rdx, rdx
- je SHORT G_M3825_IG12
+ je SHORT G_M3825_IG11
mov ecx, dword ptr [r8+0x08]
cmp ecx, dword ptr [rdx+0x08]
- jne SHORT G_M3825_IG12
+ jne SHORT G_M3825_IG11
;; size=14 bbWeight=0.35 PerfScore 2.52
G_M3825_IG09: ; bbWeight=0.50, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=0008 {rbx}, byref, isz
lea rcx, bword ptr [r8+0x0C]
@@ -140,36 +140,20 @@ G_M3825_IG09: ; bbWeight=0.50, gcrefRegs=0184 {rdx rdi r8}, byrefRegs=000
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M3825_IG12
+ je SHORT G_M3825_IG11
;; size=25 bbWeight=0.50 PerfScore 3.62
G_M3825_IG10: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [rbx+0x10], ebp
- jne SHORT G_M3825_IG12
- mov rcx, qword ptr [rbx+0x18]
- cmp rcx, r14
- jne SHORT G_M3825_IG12
- mov rax, gword ptr [rdi+0x08]
- ; gcrRegs +[rax]
- ;; size=18 bbWeight=0.50 PerfScore 4.62
-G_M3825_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 48
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M3825_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, gcvars, byref
- ; gcrRegs -[rax]
+ jne SHORT G_M3825_IG11
+ mov rax, qword ptr [rbx+0x18]
+ cmp rax, r14
+ je SHORT G_M3825_IG14
+ ;; size=14 bbWeight=0.50 PerfScore 3.62
+G_M3825_IG11: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
mov rsi, qword ptr [rdi+0x10]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M3825_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M3825_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rdi]
- test byte ptr [(reloc)], 1 ; global ptr
- je G_M3825_IG19
- ;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M3825_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
je SHORT G_M3825_IG16
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
@@ -199,6 +183,20 @@ G_M3825_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, b
; gcrRegs +[rax]
mov rax, gword ptr [rax+0x08]
;; size=83 bbWeight=0.50 PerfScore 10.88
+G_M3825_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 48
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=0.50 PerfScore 1.88
+G_M3825_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rdi]
+ mov rax, gword ptr [rdi+0x08]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M3825_IG15: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 48
pop rbx
@@ -209,7 +207,7 @@ G_M3825_IG15: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=11 bbWeight=0.50 PerfScore 1.88
G_M3825_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
+ ; gcrRegs -[rax rdi]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.50 PerfScore 0.12
@@ -231,15 +229,8 @@ G_M3825_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcr arg pop 0
jmp G_M3825_IG03
;; size=25 bbWeight=0 PerfScore 0.00
-G_M3825_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- mov rcx, 0xD1FFAB1E
- mov edx, 40
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- jmp G_M3825_IG14
- ;; size=25 bbWeight=0 PerfScore 0.00
-; Total bytes of code 379, prolog size 17, PerfScore 61.42, instruction count 110, allocated bytes for code 379 (MethodHash=588bf10e) for method System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
+; Total bytes of code 341, prolog size 17, PerfScore 59.42, instruction count 104, allocated bytes for code 341 (MethodHash=588bf10e) for method System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (FullOpts)
; ============================================================
Unwind Info:
-42 (-7.81%) : 40049.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
@@ -10,13 +10,13 @@
;
; V00 this [V00,T00] ( 14, 8.50) ref -> rbx this class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.ObjectWriter>
; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rsi class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo>
-; V02 loc0 [V02,T05] ( 6, 3.50) long -> r14 ld-addr-op
+; V02 loc0 [V02,T07] ( 6, 3.50) long -> r14 ld-addr-op
; V03 loc1 [V03,T08] ( 5, 3.85) ref -> rdi class-hnd exact single-def <System.String>
; V04 loc2 [V04,T02] ( 11, 5.85) ref -> rbp class-hnd exact single-def <System.String>
; V05 loc3 [V05 ] ( 4, 2 ) ubyte -> [rsp+0x28] do-not-enreg[X] addr-exposed ld-addr-op
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T10] ( 3, 3 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V08 tmp2 [V08,T07] ( 2, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <System.String>
+; V08 tmp2 [V08,T06] ( 2, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <System.String>
; V09 tmp3 [V09,T09] ( 4, 3.50) ref -> rdi
; V10 tmp4 [V10,T22] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
; V11 tmp5 [V11,T03] ( 5, 4.39) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
@@ -36,17 +36,18 @@
;* V25 tmp19 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp20 [V26,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V27 tmp21 [V27,T11] ( 3, 3 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
-; V28 tmp22 [V28,T16] ( 3, 1.50) byref -> rax single-def "Inline stloc first use temp"
-; V29 tmp23 [V29,T19] ( 3, 1.50) long -> r14 "Inline return value spill temp"
-; V30 tmp24 [V30,T06] ( 4, 4 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.String>
-; V31 tmp25 [V31,T20] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
+; V28 tmp22 [V28,T21] ( 3, 1.50) byref -> rax single-def "Inline stloc first use temp"
+; V29 tmp23 [V29,T18] ( 3, 1.50) long -> r14 "Inline return value spill temp"
+; V30 tmp24 [V30,T05] ( 4, 4 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <System.String>
+; V31 tmp25 [V31,T19] ( 3, 1.50) long -> rdi "Inline stloc first use temp"
; V32 tmp26 [V32,T12] ( 3, 3 ) ref -> rcx class-hnd single-def "Inlining Arg" <<unknown class>>
;* V33 tmp27 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V35 tmp29 [V35,T13] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
-; V36 cse0 [V36,T21] ( 3, 1.50) int -> r8 "CSE #07: moderate"
-; V37 cse1 [V37,T17] ( 3, 1.50) ref -> rcx "CSE #08: moderate"
-; V38 cse2 [V38,T18] ( 3, 1.50) ref -> rdx multi-def "CSE #02: moderate"
+;* V36 cse0 [V36,T25] ( 0, 0 ) long -> zero-ref "CSE #03: moderate"
+; V37 cse1 [V37,T20] ( 3, 1.50) int -> r8 "CSE #07: moderate"
+; V38 cse2 [V38,T16] ( 3, 1.50) ref -> rcx "CSE #08: moderate"
+; V39 cse3 [V39,T17] ( 3, 1.50) ref -> rdx multi-def "CSE #02: moderate"
;
; Lcl frame size = 48
@@ -112,12 +113,12 @@ G_M17396_IG06: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
G_M17396_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rbp rsi rdi]
xor r14d, r14d
- jmp G_M17396_IG18
+ jmp G_M17396_IG20
;; size=8 bbWeight=0.50 PerfScore 1.12
G_M17396_IG08: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rbp rsi rdi]
test byte ptr [(reloc)], 1 ; global ptr
- je G_M17396_IG23
+ je G_M17396_IG22
;; size=13 bbWeight=0.50 PerfScore 2.00
G_M17396_IG09: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r8, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
@@ -148,25 +149,21 @@ G_M17396_IG11: ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRe
test eax, eax
jne SHORT G_M17396_IG07
;; size=25 bbWeight=0.50 PerfScore 3.62
-G_M17396_IG12: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
- test byte ptr [(reloc)], 1 ; global ptr
- je G_M17396_IG24
- ;; size=13 bbWeight=0.50 PerfScore 2.00
-G_M17396_IG13: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG12: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov r8, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rdx, gword ptr [r8]
; gcrRegs +[rdx]
cmp rbp, rdx
je SHORT G_M17396_IG07
;; size=18 bbWeight=0.50 PerfScore 1.75
-G_M17396_IG14: ; bbWeight=0.35, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG13: ; bbWeight=0.35, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
test rdx, rdx
- je SHORT G_M17396_IG16
+ je SHORT G_M17396_IG15
mov r8d, dword ptr [rbp+0x08]
cmp r8d, dword ptr [rdx+0x08]
- jne SHORT G_M17396_IG16
+ jne SHORT G_M17396_IG15
;; size=15 bbWeight=0.35 PerfScore 2.52
-G_M17396_IG15: ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M17396_IG14: ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [rbp+0x0C]
; byrRegs +[rcx]
mov r8d, dword ptr [rbp+0x08]
@@ -180,7 +177,7 @@ G_M17396_IG15: ; bbWeight=0.50, gcrefRegs=006C {rdx rbx rbp rsi}, byrefRe
test eax, eax
jne G_M17396_IG07
;; size=29 bbWeight=0.50 PerfScore 3.62
-G_M17396_IG16: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG15: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x68]
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
@@ -191,41 +188,14 @@ G_M17396_IG16: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
; byrRegs +[rax]
; gcr arg pop 0
test rax, rax
- je SHORT G_M17396_IG20
+ je SHORT G_M17396_IG16
mov r14, qword ptr [rax]
xor edx, edx
mov dword ptr [rsp+0x28], edx
- ;; size=29 bbWeight=0.50 PerfScore 6.38
-G_M17396_IG17: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+ jmp G_M17396_IG19
+ ;; size=34 bbWeight=0.50 PerfScore 7.38
+G_M17396_IG16: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
- movzx rcx, byte ptr [rsp+0x28]
- mov dword ptr [rsp+0x20], ecx
- mov rcx, gword ptr [rbx+0x20]
- ; gcrRegs +[rcx]
- mov rdx, gword ptr [rsi+0x10]
- ; gcrRegs +[rdx]
- mov r8, rbp
- ; gcrRegs +[r8]
- mov r9d, r14d
- cmp dword ptr [rcx], ecx
- call [System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteAssembly(System.Type,System.String,int,ubyte):this]
- ; gcrRegs -[rcx rdx rbx rbp rsi r8]
- ; gcr arg pop 0
- ;; size=31 bbWeight=0.50 PerfScore 6.25
-G_M17396_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rax, r14
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M17396_IG19: ; bbWeight=1, epilog, nogc, extend
- add rsp, 48
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=1 PerfScore 3.75
-G_M17396_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rbp rsi]
mov rdx, rbp
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E
@@ -236,14 +206,14 @@ G_M17396_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=006
mov r14, rax
; gcrRegs +[r14]
cmp r14, gword ptr [rbx+0x58]
- jne SHORT G_M17396_IG21
+ jne SHORT G_M17396_IG17
xor ecx, ecx
mov dword ptr [rsp+0x28], ecx
mov r14, qword ptr [rbx+0x80]
; gcrRegs -[r14]
- jmp SHORT G_M17396_IG22
+ jmp SHORT G_M17396_IG18
;; size=43 bbWeight=0.50 PerfScore 6.50
-G_M17396_IG21: ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M17396_IG17: ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] +[r14]
mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
@@ -270,7 +240,7 @@ G_M17396_IG21: ; bbWeight=0.50, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRe
mov qword ptr [rbx+0x80], rdi
mov r14, rdi
;; size=68 bbWeight=0.50 PerfScore 8.62
-G_M17396_IG22: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M17396_IG18: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x68]
; gcrRegs +[rcx]
cmp byte ptr [rcx], cl
@@ -282,7 +252,7 @@ G_M17396_IG22: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne G_M17396_IG17
+ jne SHORT G_M17396_IG19
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -290,26 +260,44 @@ G_M17396_IG22: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp G_M17396_IG17
- ;; size=56 bbWeight=0.50 PerfScore 7.75
-G_M17396_IG23: ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rdi]
+ ;; size=47 bbWeight=0.50 PerfScore 6.75
+G_M17396_IG19: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+ movzx rcx, byte ptr [rsp+0x28]
+ mov dword ptr [rsp+0x20], ecx
+ mov rcx, gword ptr [rbx+0x20]
+ ; gcrRegs +[rcx]
+ mov rdx, gword ptr [rsi+0x10]
+ ; gcrRegs +[rdx]
+ mov r8, rbp
+ ; gcrRegs +[r8]
+ mov r9d, r14d
+ cmp dword ptr [rcx], ecx
+ call [System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteAssembly(System.Type,System.String,int,ubyte):this]
+ ; gcrRegs -[rcx rdx rbx rbp rsi r8]
+ ; gcr arg pop 0
+ ;; size=31 bbWeight=0.50 PerfScore 6.25
+G_M17396_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rax, r14
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M17396_IG21: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 48
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M17396_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx rbp rsi rdi]
mov rcx, 0xD1FFAB1E
mov edx, 60
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcr arg pop 0
jmp G_M17396_IG09
;; size=25 bbWeight=0 PerfScore 0.00
-G_M17396_IG24: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rcx, 0xD1FFAB1E
- mov edx, 60
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- jmp G_M17396_IG13
- ;; size=25 bbWeight=0 PerfScore 0.00
-; Total bytes of code 538, prolog size 10, PerfScore 83.17, instruction count 137, allocated bytes for code 538 (MethodHash=e0f3bc0b) for method System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
+; Total bytes of code 496, prolog size 10, PerfScore 81.17, instruction count 131, allocated bytes for code 496 (MethodHash=e0f3bc0b) for method System.Runtime.Serialization.Formatters.Binary.ObjectWriter:GetAssemblyId(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):long:this (FullOpts)
; ============================================================
Unwind Info:
+24 (+12.44%) : 281591.dasm - System.Text.RegularExpressions.GroupCollection:System.Collections.Generic.IList.IndexOf(System.Text.RegularExpressions.Group):int:this (FullOpts)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 5, 11 ) ref -> rbx this class-hnd single-def <System.Text.RegularExpressions.GroupCollection>
-; V01 arg1 [V01,T04] ( 6, 6.03) ref -> rsi class-hnd single-def <System.Text.RegularExpressions.Group>
+; V01 arg1 [V01,T04] ( 6, 6.00) ref -> rsi class-hnd single-def <System.Text.RegularExpressions.Group>
; V02 loc0 [V02,T01] ( 6, 17.50) int -> rdi
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 2, 16 ) ref -> rbp class-hnd exact "impAppendStmt" <<unknown class>>
@@ -18,8 +18,7 @@
; V07 tmp4 [V07,T07] ( 3, 3.99) int -> rbp "guarded devirt return temp"
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-;* V10 cse0 [V10,T08] ( 0, 0 ) long -> zero-ref hoist "CSE #01: aggressive"
-; V11 cse1 [V11,T05] ( 3, 5.27) long -> r8 "CSE #02: aggressive"
+; V10 cse0 [V10,T05] ( 3, 5.27) long -> r8 "CSE #02: aggressive"
;
; Lcl frame size = 40
@@ -40,7 +39,7 @@ G_M29311_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x50]
cmp dword ptr [rcx+0x08], 0
- jle G_M29311_IG14
+ jle G_M29311_IG13
;; size=20 bbWeight=1 PerfScore 8.25
G_M29311_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
@@ -50,6 +49,10 @@ G_M29311_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcr arg pop 0
;; size=20 bbWeight=0.25 PerfScore 0.38
G_M29311_IG04: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ mov edx, 299
+ call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+ ; gcr arg pop 0
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rbp, gword ptr [rcx]
; gcrRegs +[rbp]
@@ -62,11 +65,11 @@ G_M29311_IG04: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
cmp byte ptr [rbp], bpl
test rax, rax
je SHORT G_M29311_IG10
- ;; size=33 bbWeight=4 PerfScore 40.00
+ ;; size=53 bbWeight=4 PerfScore 46.00
G_M29311_IG05: ; bbWeight=2.00, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
test rsi, rsi
- je SHORT G_M29311_IG13
+ je SHORT G_M29311_IG12
;; size=5 bbWeight=2.00 PerfScore 2.49
G_M29311_IG06: ; bbWeight=2.00, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov r8, qword ptr [rax]
@@ -94,34 +97,30 @@ G_M29311_IG08: ; bbWeight=1.28, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0
;; size=15 bbWeight=1.28 PerfScore 7.34
G_M29311_IG09: ; bbWeight=2.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
movzx rax, bpl
- jmp SHORT G_M29311_IG12
+ jmp SHORT G_M29311_IG11
;; size=6 bbWeight=2.00 PerfScore 4.49
-G_M29311_IG10: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M29311_IG10: ; bbWeight=0.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
- jne SHORT G_M29311_IG13
- ;; size=5 bbWeight=0.04 PerfScore 0.05
-G_M29311_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rsi]
- jmp SHORT G_M29311_IG16
- ;; size=2 bbWeight=0.00 PerfScore 0.01
-G_M29311_IG12: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi]
+ jne SHORT G_M29311_IG12
+ jmp SHORT G_M29311_IG15
+ ;; size=7 bbWeight=0.00 PerfScore 0.02
+G_M29311_IG11: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne SHORT G_M29311_IG16
+ jne SHORT G_M29311_IG15
;; size=4 bbWeight=2 PerfScore 2.50
-G_M29311_IG13: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M29311_IG12: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc edi
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
mov rax, gword ptr [rax+0x50]
cmp dword ptr [rax+0x08], edi
- jg SHORT G_M29311_IG04
- ;; size=15 bbWeight=4 PerfScore 33.00
-G_M29311_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jg G_M29311_IG04
+ ;; size=19 bbWeight=4 PerfScore 33.00
+G_M29311_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx rsi]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M29311_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M29311_IG14: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -129,10 +128,10 @@ G_M29311_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M29311_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M29311_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, edi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M29311_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M29311_IG16: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -141,7 +140,7 @@ G_M29311_IG17: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 193, prolog size 8, PerfScore 116.25, instruction count 64, allocated bytes for code 193 (MethodHash=9ff88d80) for method System.Text.RegularExpressions.GroupCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Group>.IndexOf(System.Text.RegularExpressions.Group):int:this (FullOpts)
+; Total bytes of code 217, prolog size 8, PerfScore 122.21, instruction count 67, allocated bytes for code 217 (MethodHash=9ff88d80) for method System.Text.RegularExpressions.GroupCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Group>.IndexOf(System.Text.RegularExpressions.Group):int:this (FullOpts)
; ============================================================
Unwind Info:
+12 (+12.90%) : 153026.dasm - System.Memory`1[long]:op_Implicit(System.ArraySegment`1[long]):System.Memory`1[long] (FullOpts)
@@ -18,18 +18,18 @@
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref "field V01._array (fldOffset=0x0)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref "field V01._offset (fldOffset=0x8)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V01._count (fldOffset=0xc)" P-INDEP
-; V10 tmp8 [V10,T05] ( 3, 2 ) ref -> registers "field V05._object (fldOffset=0x0)" P-INDEP
+; V10 tmp8 [V10,T05] ( 3, 2 ) ref -> [rsp+0x28] "field V05._object (fldOffset=0x0)" P-INDEP
; V11 tmp9 [V11,T06] ( 3, 2 ) int -> rsi "field V05._index (fldOffset=0x8)" P-INDEP
; V12 tmp10 [V12,T07] ( 3, 2 ) int -> rdi "field V05._length (fldOffset=0xc)" P-INDEP
;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ArraySegment`1[long]>
;
-; Lcl frame size = 32
+; Lcl frame size = 48
G_M28568_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 32
+ sub rsp, 48
mov rbx, rcx
; byrRegs +[rbx]
;; size=10 bbWeight=1 PerfScore 3.50
@@ -51,25 +51,31 @@ G_M28568_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
; gcrRegs +[rdx]
xor esi, esi
xor edi, edi
+ mov gword ptr [rsp+0x28], rdx
+ ; GC ptr vars +{V10}
jmp SHORT G_M28568_IG05
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=17 bbWeight=0.50 PerfScore 2.50
G_M28568_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rdx] +[rcx]
+ ; GC ptr vars -{V10}
mov r8d, eax
mov r10d, edx
add r8, r10
mov r10d, dword ptr [rcx+0x08]
cmp r8, r10
ja SHORT G_M28568_IG07
+ mov gword ptr [rsp+0x28], rcx
+ ; GC ptr vars +{V10}
mov esi, eax
mov edi, edx
- mov rdx, rcx
- ; gcrRegs +[rdx]
- ;; size=25 bbWeight=0.50 PerfScore 2.38
-G_M28568_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
+ ;; size=27 bbWeight=0.50 PerfScore 2.75
+G_M28568_IG05: ; bbWeight=1, gcVars=0000000000000020 {V10}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rcx]
+ mov rdx, gword ptr [rsp+0x28]
+ ; gcrRegs +[rdx]
mov rcx, rbx
; byrRegs +[rcx]
+ ; GC ptr vars -{V10}
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
@@ -77,9 +83,9 @@ G_M28568_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx},
mov dword ptr [rbx+0x0C], edi
mov rax, rbx
; byrRegs +[rax]
- ;; size=17 bbWeight=1 PerfScore 3.50
+ ;; size=22 bbWeight=1 PerfScore 4.50
G_M28568_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 48
pop rbx
pop rsi
pop rdi
@@ -92,7 +98,7 @@ G_M28568_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 93, prolog size 7, PerfScore 21.38, instruction count 37, allocated bytes for code 93 (MethodHash=69379067) for method System.Memory`1[long]:op_Implicit(System.ArraySegment`1[long]):System.Memory`1[long] (FullOpts)
+; Total bytes of code 105, prolog size 7, PerfScore 23.25, instruction count 39, allocated bytes for code 105 (MethodHash=69379067) for method System.Memory`1[long]:op_Implicit(System.ArraySegment`1[long]):System.Memory`1[long] (FullOpts)
; ============================================================
Unwind Info:
@@ -105,7 +111,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
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)
+24 (+13.11%) : 288290.dasm - System.Text.RegularExpressions.CaptureCollection:System.Collections.Generic.IList.IndexOf(System.Text.RegularExpressions.Capture):int:this (FullOpts)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 5, 11 ) ref -> rbx this class-hnd single-def <System.Text.RegularExpressions.CaptureCollection>
-; V01 arg1 [V01,T04] ( 6, 6.03) ref -> rsi class-hnd single-def <System.Text.RegularExpressions.Capture>
+; V01 arg1 [V01,T04] ( 6, 6.00) ref -> rsi class-hnd single-def <System.Text.RegularExpressions.Capture>
; V02 loc0 [V02,T01] ( 6, 17.50) int -> rdi
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T02] ( 2, 16 ) ref -> rbp class-hnd exact "impAppendStmt" <<unknown class>>
@@ -18,8 +18,7 @@
; V07 tmp4 [V07,T07] ( 3, 3.99) int -> rbp "guarded devirt return temp"
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-;* V10 cse0 [V10,T08] ( 0, 0 ) long -> zero-ref hoist "CSE #01: aggressive"
-; V11 cse1 [V11,T05] ( 3, 5.27) long -> r8 "CSE #02: aggressive"
+; V10 cse0 [V10,T05] ( 3, 5.27) long -> r8 "CSE #02: aggressive"
;
; Lcl frame size = 40
@@ -37,7 +36,7 @@ G_M6948_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
G_M6948_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
xor edi, edi
cmp dword ptr [rbx+0x18], 0
- jle G_M6948_IG14
+ jle G_M6948_IG13
;; size=12 bbWeight=1 PerfScore 4.25
G_M6948_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
@@ -46,6 +45,10 @@ G_M6948_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {
; gcr arg pop 0
;; size=20 bbWeight=0.25 PerfScore 0.38
G_M6948_IG04: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ mov edx, 856
+ call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+ ; gcr arg pop 0
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rbp, gword ptr [rcx]
; gcrRegs +[rbp]
@@ -59,11 +62,11 @@ G_M6948_IG04: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
cmp byte ptr [rbp], bpl
test rax, rax
je SHORT G_M6948_IG10
- ;; size=39 bbWeight=4 PerfScore 41.00
+ ;; size=59 bbWeight=4 PerfScore 47.00
G_M6948_IG05: ; bbWeight=2.00, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
test rsi, rsi
- je SHORT G_M6948_IG13
+ je SHORT G_M6948_IG12
;; size=5 bbWeight=2.00 PerfScore 2.49
G_M6948_IG06: ; bbWeight=2.00, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov r8, qword ptr [rax]
@@ -91,31 +94,27 @@ G_M6948_IG08: ; bbWeight=1.28, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=00
;; size=15 bbWeight=1.28 PerfScore 7.34
G_M6948_IG09: ; bbWeight=2.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
movzx rax, bpl
- jmp SHORT G_M6948_IG12
+ jmp SHORT G_M6948_IG11
;; size=6 bbWeight=2.00 PerfScore 4.49
-G_M6948_IG10: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M6948_IG10: ; bbWeight=0.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
- jne SHORT G_M6948_IG13
- ;; size=5 bbWeight=0.04 PerfScore 0.05
-G_M6948_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rsi]
- jmp SHORT G_M6948_IG16
- ;; size=2 bbWeight=0.00 PerfScore 0.01
-G_M6948_IG12: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rsi]
+ jne SHORT G_M6948_IG12
+ jmp SHORT G_M6948_IG15
+ ;; size=7 bbWeight=0.00 PerfScore 0.02
+G_M6948_IG11: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne SHORT G_M6948_IG16
+ jne SHORT G_M6948_IG15
;; size=4 bbWeight=2 PerfScore 2.50
-G_M6948_IG13: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M6948_IG12: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc edi
cmp edi, dword ptr [rbx+0x18]
- jl SHORT G_M6948_IG04
- ;; size=7 bbWeight=4 PerfScore 17.00
-G_M6948_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jl G_M6948_IG04
+ ;; size=11 bbWeight=4 PerfScore 17.00
+G_M6948_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M6948_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M6948_IG14: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -123,10 +122,10 @@ G_M6948_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M6948_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M6948_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, edi
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M6948_IG17: ; bbWeight=0.50, epilog, nogc, extend
+G_M6948_IG16: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -135,7 +134,7 @@ G_M6948_IG17: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 183, prolog size 8, PerfScore 97.25, instruction count 61, allocated bytes for code 183 (MethodHash=b502e4db) for method System.Text.RegularExpressions.CaptureCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Capture>.IndexOf(System.Text.RegularExpressions.Capture):int:this (FullOpts)
+; Total bytes of code 207, prolog size 8, PerfScore 103.21, instruction count 64, allocated bytes for code 207 (MethodHash=b502e4db) for method System.Text.RegularExpressions.CaptureCollection:System.Collections.Generic.IList<System.Text.RegularExpressions.Capture>.IndexOf(System.Text.RegularExpressions.Capture):int:this (FullOpts)
; ============================================================
Unwind Info:
realworld.run.windows.x64.checked.mch
-9 (-6.98%) : 16025.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
@@ -53,28 +53,28 @@ G_M18424_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r
xor r11d, r11d
xor ebx, ebx
test ecx, ecx
- jle SHORT G_M18424_IG12
+ jle SHORT G_M18424_IG10
;; size=28 bbWeight=1 PerfScore 13.75
G_M18424_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
cmp r11d, r8d
- jae SHORT G_M18424_IG07
+ jae SHORT G_M18424_IG09
lea esi, [r11+0x01]
mov r11d, r11d
movzx rdi, byte ptr [r9+rbx]
mov byte ptr [rax+r11], dil
inc ebx
cmp ebx, ecx
- jl SHORT G_M18424_IG11
+ jl SHORT G_M18424_IG08
;; size=27 bbWeight=4 PerfScore 26.00
G_M18424_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
; byrRegs -[r9]
xor ecx, ecx
test edx, edx
- jle SHORT G_M18424_IG10
+ jle SHORT G_M18424_IG06
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
cmp esi, r8d
- jae SHORT G_M18424_IG09
+ jae SHORT G_M18424_IG06
mov r9d, esi
lea esi, [r9+0x01]
movzx r11, byte ptr [r10+rcx]
@@ -83,40 +83,34 @@ G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10},
cmp ecx, edx
jl SHORT G_M18424_IG05
;; size=27 bbWeight=4 PerfScore 26.00
-G_M18424_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18424_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax r10]
- mov r11d, esi
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M18424_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, r11d
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M18424_IG08: ; bbWeight=1, epilog, nogc, extend
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M18424_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M18424_IG09: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov r11d, esi
- jmp SHORT G_M18424_IG07
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r11d, esi
- jmp SHORT G_M18424_IG07
- ;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M18424_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
+G_M18424_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, gcvars, byref, isz
; byrRegs +[rax r9-r10]
mov r11d, esi
jmp SHORT G_M18424_IG03
;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
- ; byrRegs -[r9]
+G_M18424_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax r9-r10]
+ mov esi, r11d
+ jmp SHORT G_M18424_IG06
+ ;; size=5 bbWeight=2 PerfScore 4.50
+G_M18424_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
+ ; byrRegs +[rax r10]
mov esi, r11d
jmp SHORT G_M18424_IG04
;; size=5 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 129, prolog size 7, PerfScore 83.94, instruction count 50, allocated bytes for code 129 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 120, prolog size 7, PerfScore 82.88, instruction count 47, allocated bytes for code 120 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
-27 (-6.21%) : 25746.dasm - Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:VisitRecursivePattern(Microsoft.CodeAnalysis.CSharp.BoundRecursivePattern):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -144,10 +144,13 @@ G_M64745_IG08: ; bbWeight=0.50, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r
; gcrRegs -[r8]
xor rax, rax
; gcrRegs +[rax]
+ mov gword ptr [rbp-0x40], rax
+ ; GC ptr vars +{V25}
jmp SHORT G_M64745_IG10
- ;; size=4 bbWeight=0.50 PerfScore 1.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.62
G_M64745_IG09: ; bbWeight=0.50, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] +[r8]
+ ; GC ptr vars -{V25}
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; <unknown method>
@@ -155,74 +158,60 @@ G_M64745_IG09: ; bbWeight=0.50, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r1
; gcrRegs -[rcx r8] +[rax]
mov gword ptr [rbp-0x40], rax
; GC ptr vars +{V25}
- mov rax, gword ptr [rbp-0x40]
- ;; size=27 bbWeight=0.50 PerfScore 2.75
-G_M64745_IG10: ; bbWeight=1, gcrefRegs=F0C9 {rax rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; GC ptr vars -{V25}
+ ;; size=23 bbWeight=0.50 PerfScore 2.25
+G_M64745_IG10: ; bbWeight=1, gcVars=0000000000000200 {V25}, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
mov r8, gword ptr [rbx+0x58]
; gcrRegs +[r8]
test r8, r8
jne SHORT G_M64745_IG12
;; size=9 bbWeight=1 PerfScore 3.25
-G_M64745_IG11: ; bbWeight=0.50, gcrefRegs=F0C9 {rax rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M64745_IG11: ; bbWeight=0.50, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
xor r10, r10
; gcrRegs +[r10]
+ mov gword ptr [rbp-0x48], r10
+ ; GC ptr vars +{V27}
jmp SHORT G_M64745_IG13
- ;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M64745_IG12: ; bbWeight=0.50, gcrefRegs=F1C9 {rax rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M64745_IG12: ; bbWeight=0.50, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r10] +[r8]
- mov gword ptr [rbp-0x40], rax
- ; GC ptr vars +{V25}
+ ; GC ptr vars -{V27}
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; <unknown method>
call [Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter:DoVisitList[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this]
- ; gcrRegs -[rcx r8]
+ ; gcrRegs -[rcx r8] +[rax]
mov gword ptr [rbp-0x48], rax
; GC ptr vars +{V27}
- mov rax, gword ptr [rbp-0x40]
- mov r10, gword ptr [rbp-0x48]
- ; gcrRegs +[r10]
- ;; size=35 bbWeight=0.50 PerfScore 3.75
-G_M64745_IG13: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=F4C9 {rax rbx rsi rdi r10 r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V25 V27}
+ ;; size=23 bbWeight=0.50 PerfScore 2.25
+G_M64745_IG13: ; bbWeight=1, gcVars=0000000000000600 {V25 V27}, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
mov rcx, gword ptr [rbx+0x30]
; gcrRegs +[rcx]
test rcx, rcx
je SHORT G_M64745_IG15
;; size=9 bbWeight=1 PerfScore 3.25
-G_M64745_IG14: ; bbWeight=0.50, gcrefRegs=F4CB {rax rcx rbx rsi rdi r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov gword ptr [rbp-0x40], rax
- ; GC ptr vars +{V25}
- mov gword ptr [rbp-0x48], r10
- ; GC ptr vars +{V27}
+G_M64745_IG14: ; bbWeight=0.50, gcrefRegs=F0CA {rcx rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi
; gcrRegs +[rdx]
mov r8, qword ptr [rcx]
mov r8, qword ptr [r8+0x48]
call [r8+0x28]<unknown method>
- ; gcrRegs -[rcx rdx rsi r10]
- jmp SHORT G_M64745_IG16
- ;; size=24 bbWeight=0.50 PerfScore 5.62
-G_M64745_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=F489 {rax rbx rdi r10 r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r10]
- ; GC ptr vars -{V25 V27}
- xor rdx, rdx
- ; gcrRegs +[rdx]
- mov gword ptr [rbp-0x40], rax
- ; GC ptr vars +{V25}
- mov gword ptr [rbp-0x48], r10
- ; GC ptr vars +{V27}
- mov rax, rdx
- ;; size=13 bbWeight=0.50 PerfScore 1.25
-G_M64745_IG16: ; bbWeight=1, gcVars=0000000000000600 {V25 V27}, gcrefRegs=F089 {rax rbx rdi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdx r10]
+ ; gcrRegs -[rcx rdx rsi] +[rax]
mov rdx, rax
; gcrRegs +[rdx]
+ jmp SHORT G_M64745_IG16
+ ;; size=19 bbWeight=0.50 PerfScore 4.75
+G_M64745_IG15: ; bbWeight=0.50, gcrefRegs=F088 {rbx rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdx]
+ xor rdx, rdx
+ ; gcrRegs +[rdx]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M64745_IG16: ; bbWeight=1, gcrefRegs=F08C {rdx rbx rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundExpression
call CORINFO_HELP_CHKCASTCLASS
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rdx] +[rax]
mov rsi, gword ptr [rbp-0x48]
; gcrRegs +[rsi]
mov gword ptr [rsp+0x20], rsi
@@ -244,7 +233,7 @@ G_M64745_IG16: ; bbWeight=1, gcVars=0000000000000600 {V25 V27}, gcrefRegs
call [<unknown method>]
; gcrRegs -[rcx rdx rbx rsi rdi r8-r9 r12-r15]
nop
- ;; size=75 bbWeight=1 PerfScore 15.50
+ ;; size=72 bbWeight=1 PerfScore 15.25
G_M64745_IG17: ; bbWeight=1, epilog, nogc, extend
add rsp, 104
pop rbx
@@ -265,7 +254,7 @@ G_M64745_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {
int3
;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 435, prolog size 24, PerfScore 92.00, instruction count 116, allocated bytes for code 435 (MethodHash=d60b0316) for method Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:VisitRecursivePattern(Microsoft.CodeAnalysis.CSharp.BoundRecursivePattern):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
+; Total bytes of code 408, prolog size 24, PerfScore 88.75, instruction count 109, allocated bytes for code 408 (MethodHash=d60b0316) for method Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:VisitRecursivePattern(Microsoft.CodeAnalysis.CSharp.BoundRecursivePattern):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
; ============================================================
Unwind Info:
-17 (-5.69%) : 20650.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
@@ -90,10 +90,13 @@ G_M39738_IG03: ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r
; byrRegs -[rcx]
xor rax, rax
; gcrRegs +[rax]
+ mov gword ptr [rsp+0x28], rax
+ ; GC ptr vars +{V10}
jmp SHORT G_M39738_IG05
- ;; size=4 bbWeight=0.50 PerfScore 1.12
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M39738_IG04: ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ ; GC ptr vars -{V10}
mov rcx, r13
; gcrRegs +[rcx]
mov rdx, r15
@@ -105,25 +108,19 @@ G_M39738_IG04: ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r
; gcr arg pop 0
mov gword ptr [rsp+0x28], rax
; GC ptr vars +{V10}
- mov rax, gword ptr [rsp+0x28]
- ;; size=27 bbWeight=0.50 PerfScore 4.75
-G_M39738_IG05: ; bbWeight=1, gcrefRegs=E0E9 {rax rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; GC ptr vars -{V10}
- cmp byte ptr [rsp+0xA8], 0
- jne SHORT G_M39738_IG10
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M39738_IG06: ; bbWeight=0.50, gcrefRegs=E0E9 {rax rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- test rsi, rsi
- je SHORT G_M39738_IG09
- test byte ptr [rsi+0x10], 1
- jne SHORT G_M39738_IG10
- ;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M39738_IG07: ; bbWeight=0.25, gcrefRegs=E0E9 {rax rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
- mov gword ptr [rsp+0x28], rax
- ; GC ptr vars +{V10}
- ;; size=5 bbWeight=0.25 PerfScore 0.25
-G_M39738_IG08: ; bbWeight=0.50, gcVars=0000000000000100 {V10}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=22 bbWeight=0.50 PerfScore 4.25
+G_M39738_IG05: ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
+ cmp byte ptr [rsp+0xA8], 0
+ jne SHORT G_M39738_IG08
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M39738_IG06: ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ test rsi, rsi
+ je SHORT G_M39738_IG07
+ test byte ptr [rsi+0x10], 1
+ jne SHORT G_M39738_IG08
+ ;; size=11 bbWeight=0.50 PerfScore 2.62
+G_M39738_IG07: ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdx, r14
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown method>
@@ -131,24 +128,13 @@ G_M39738_IG08: ; bbWeight=0.50, gcVars=0000000000000100 {V10}, gcrefRegs=
; gcrRegs -[rdx]
; gcr arg pop 0
mov dword ptr [rsp+0x34], eax
- jmp SHORT G_M39738_IG11
+ jmp SHORT G_M39738_IG09
;; size=25 bbWeight=0.50 PerfScore 3.25
-G_M39738_IG09: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=E0E9 {rax rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax]
- ; GC ptr vars -{V10}
- mov gword ptr [rsp+0x28], rax
- ; GC ptr vars +{V10}
- jmp SHORT G_M39738_IG08
- ;; size=7 bbWeight=0.25 PerfScore 0.75
-G_M39738_IG10: ; bbWeight=0.50, gcrefRegs=E0E9 {rax rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
- ; GC ptr vars -{V10}
+G_M39738_IG08: ; bbWeight=0.50, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
mov r8d, 1
- mov gword ptr [rsp+0x28], rax
- ; GC ptr vars +{V10}
mov dword ptr [rsp+0x34], r8d
- ;; size=16 bbWeight=0.50 PerfScore 1.12
-G_M39738_IG11: ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
+ ;; size=11 bbWeight=0.50 PerfScore 0.62
+G_M39738_IG09: ; bbWeight=1, gcrefRegs=E0E8 {rbx rbp rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov byte ptr [rbx+0x12], 22
lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
@@ -158,12 +144,12 @@ G_M39738_IG11: ; bbWeight=1, gcVars=0000000000000100 {V10}, gcrefRegs=E0E
; gcrRegs -[rdx rdi]
; byrRegs -[rcx]
cmp byte ptr [rsp+0x34], 0
- je SHORT G_M39738_IG13
+ je SHORT G_M39738_IG11
;; size=23 bbWeight=1 PerfScore 5.75
-G_M39738_IG12: ; bbWeight=0.50, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M39738_IG10: ; bbWeight=0.50, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
mov word ptr [rbx+0x10], 1
;; size=6 bbWeight=0.50 PerfScore 0.50
-G_M39738_IG13: ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M39738_IG11: ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
mov rdx, gword ptr [rsp+0x28]
@@ -209,7 +195,7 @@ G_M39738_IG13: ; bbWeight=1, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, by
; byrRegs -[rcx]
mov byte ptr [rbx+0x48], r12b
;; size=78 bbWeight=1 PerfScore 12.25
-G_M39738_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M39738_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
@@ -222,7 +208,7 @@ G_M39738_IG14: ; bbWeight=1, epilog, nogc, extend
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 299, prolog size 16, PerfScore 62.38, instruction count 84, allocated bytes for code 299 (MethodHash=357464c5) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
+; Total bytes of code 282, prolog size 16, PerfScore 60.88, instruction count 80, allocated bytes for code 282 (MethodHash=357464c5) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
+4 (+3.12%) : 7313.dasm - System.Numerics.BigInteger:Equals(System.Object):ubyte:this (FullOpts)
@@ -90,22 +90,23 @@ G_M64142_IG04: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0002 {rcx
; gcrRegs -[rcx]
; byrRegs +[rcx]
xor edx, edx
+ mov rax, rcx
+ ; byrRegs +[rax]
+ mov ecx, edx
+ ; byrRegs -[rcx]
+ mov rdx, rax
+ ; byrRegs +[rdx]
jmp SHORT G_M64142_IG06
- ;; size=26 bbWeight=0.50 PerfScore 6.88
+ ;; size=34 bbWeight=0.50 PerfScore 7.25
G_M64142_IG05: ; bbWeight=0.50, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ ; byrRegs -[rax rdx]
lea rdx, bword ptr [rcx+0x10]
; byrRegs +[rdx]
mov ecx, dword ptr [rcx+0x08]
; gcrRegs -[rcx]
- mov eax, ecx
- mov rcx, rdx
- ; byrRegs +[rcx]
- mov edx, eax
- ; byrRegs -[rdx]
- ;; size=14 bbWeight=0.50 PerfScore 1.62
-G_M64142_IG06: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=7 bbWeight=0.50 PerfScore 1.25
+G_M64142_IG06: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0004 {rdx}, byref, isz
test r8, r8
jne SHORT G_M64142_IG07
xor rax, rax
@@ -113,25 +114,26 @@ G_M64142_IG06: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0002 {rcx}
xor r10d, r10d
jmp SHORT G_M64142_IG08
;; size=12 bbWeight=0.50 PerfScore 1.88
-G_M64142_IG07: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0002 {rcx}, byref
+G_M64142_IG07: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0004 {rdx}, byref
; byrRegs -[rax]
lea rax, bword ptr [r8+0x10]
; byrRegs +[rax]
mov r10d, dword ptr [r8+0x08]
;; size=8 bbWeight=0.50 PerfScore 1.25
-G_M64142_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, isz
+G_M64142_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0005 {rax rdx}, byref, isz
; gcrRegs -[r8]
- cmp edx, r10d
+ cmp ecx, r10d
jne SHORT G_M64142_IG09
mov r8d, r10d
shl r8, 2
+ mov rcx, rdx
+ ; byrRegs +[rcx]
mov rdx, rax
- ; byrRegs +[rdx]
call [<unknown method>]
; byrRegs -[rax rcx rdx]
; gcr arg pop 0
jmp SHORT G_M64142_IG10
- ;; size=23 bbWeight=0.50 PerfScore 3.62
+ ;; size=26 bbWeight=0.50 PerfScore 3.75
G_M64142_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
@@ -153,7 +155,7 @@ G_M64142_IG14: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=5 bbWeight=0.50 PerfScore 0.62
-; Total bytes of code 128, prolog size 4, PerfScore 20.25, instruction count 44, allocated bytes for code 128 (MethodHash=de180571) for method System.Numerics.BigInteger:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 132, prolog size 4, PerfScore 20.38, instruction count 45, allocated bytes for code 132 (MethodHash=de180571) for method System.Numerics.BigInteger:Equals(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+24 (+3.14%) : 9398.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryGetValue(System.Text.RegularExpressions.RegexCache+Key,byref):ubyte:this (FullOpts)
@@ -8,79 +8,81 @@
; 0 inlinees with PGO data; 18 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T11] ( 3, 3 ) ref -> rsi this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
+; V00 this [V00,T13] ( 3, 3 ) ref -> rsi this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
; V01 arg1 [V01,T00] ( 13, 30 ) byref -> rbx ld-addr-op single-def
-; V02 arg2 [V02,T12] ( 5, 3.50) byref -> rdi single-def
-; V03 loc0 [V03,T16] ( 6, 4 ) ref -> rbp class-hnd exact single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
-; V04 loc1 [V04,T15] ( 4, 4.50) ref -> r14 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Text.RegularExpressions.RegexCache+Key]>
-; V05 loc2 [V05,T13] ( 3, 5 ) int -> r14
-; V06 loc3 [V06,T05] ( 11, 25.50) ref -> rbp class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
-; V07 loc4 [V07,T14] ( 3, 5 ) int -> r15
-; V08 loc5 [V08,T06] ( 8, 19.50) ref -> rbp class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
+; V02 arg2 [V02,T14] ( 5, 3.50) byref -> rdi single-def
+; V03 loc0 [V03,T18] ( 6, 4 ) ref -> rbp class-hnd exact single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
+; V04 loc1 [V04,T17] ( 4, 4.50) ref -> r14 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Text.RegularExpressions.RegexCache+Key]>
+; V05 loc2 [V05,T15] ( 3, 5 ) int -> r14
+; V06 loc3 [V06,T01] ( 11, 25.50) ref -> rbp class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
+; V07 loc4 [V07,T16] ( 3, 5 ) int -> r15
+; V08 loc5 [V08,T02] ( 8, 19.50) ref -> rbp class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] 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 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V13 tmp4 [V13,T21] ( 3, 3 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.String>
+; V13 tmp4 [V13,T23] ( 3, 3 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.String>
;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
-; V15 tmp6 [V15,T27] ( 3, 1.50) ref -> rcx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V15 tmp6 [V15,T29] ( 3, 1.50) ref -> rcx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V16 tmp7 [V16 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V18 tmp9 [V18,T29] ( 3, 1.50) int -> rax "Inline stloc first use temp"
+; V18 tmp9 [V18,T31] ( 3, 1.50) int -> rax "Inline stloc first use temp"
;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp11 [V20 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.RegexCache+Key>
;* V21 tmp12 [V21 ] ( 0, 0 ) struct (32) zero-ref "Inlining Arg" <System.Text.RegularExpressions.RegexCache+Key>
-;* V22 tmp13 [V22,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V22 tmp13 [V22,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V23 tmp14 [V23,T07] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V26 tmp17 [V26,T09] ( 2, 8 ) byref -> rcx "impAppendStmt"
+; V26 tmp17 [V26,T11] ( 2, 8 ) byref -> rcx "impAppendStmt"
; V27 tmp18 [V27,T08] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
;* V28 tmp19 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V29 tmp20 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V30 tmp21 [V30,T10] ( 2, 8 ) byref -> rcx "impAppendStmt"
+; V30 tmp21 [V30,T12] ( 2, 8 ) byref -> rcx "impAppendStmt"
;* V31 tmp22 [V31 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.TimeSpan>
;* V32 tmp23 [V32 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.TimeSpan>
-; V33 tmp24 [V33,T35] ( 2, 1 ) int -> r15 "Inline return value spill temp"
+; V33 tmp24 [V33,T37] ( 2, 1 ) int -> r15 "Inline return value spill temp"
;* V34 tmp25 [V34 ] ( 0, 0 ) struct (32) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.RegexCache+Key>
;* V35 tmp26 [V35 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]>
-; V38 tmp29 [V38,T28] ( 3, 1.50) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V38 tmp29 [V38,T30] ( 3, 1.50) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V39 tmp30 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V41 tmp32 [V41,T30] ( 3, 1.50) int -> rdx "Inline stloc first use temp"
+; V41 tmp32 [V41,T32] ( 3, 1.50) int -> rdx "Inline stloc first use temp"
;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref "field V01._pattern (fldOffset=0x0)" P-INDEP
;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref "field V01._culture (fldOffset=0x8)" P-INDEP
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "field V01._options (fldOffset=0x10)" P-INDEP
;* V45 tmp36 [V45 ] ( 0, 0 ) long -> zero-ref "field V01._matchTimeout (fldOffset=0x18)" P-INDEP
-; V46 tmp37 [V46,T01] ( 7, 28 ) ref -> r15 "field V20._pattern (fldOffset=0x0)" P-INDEP
-; V47 tmp38 [V47,T02] ( 7, 28 ) ref -> r13 "field V20._culture (fldOffset=0x8)" P-INDEP
-; V48 tmp39 [V48,T17] ( 2, 4 ) int -> r12 "field V20._options (fldOffset=0x10)" P-INDEP
-; V49 tmp40 [V49,T18] ( 2, 4 ) long -> [rsp+0x80] spill-single-def "field V20._matchTimeout (fldOffset=0x18)" P-INDEP
-; V50 tmp41 [V50,T03] ( 6, 26 ) ref -> [rsp+0x28] spill-single-def "field V21._pattern (fldOffset=0x0)" P-INDEP
-; V51 tmp42 [V51,T04] ( 6, 26 ) ref -> [rsp+0x20] spill-single-def "field V21._culture (fldOffset=0x8)" P-INDEP
-; V52 tmp43 [V52,T19] ( 2, 4 ) int -> [rsp+0x7C] spill-single-def "field V21._options (fldOffset=0x10)" P-INDEP
-; V53 tmp44 [V53,T20] ( 2, 4 ) long -> [rsp+0x70] spill-single-def "field V21._matchTimeout (fldOffset=0x18)" P-INDEP
+; V46 tmp37 [V46,T05] ( 5, 10 ) ref -> r15 "field V20._pattern (fldOffset=0x0)" P-INDEP
+; V47 tmp38 [V47,T06] ( 5, 10 ) ref -> r13 "field V20._culture (fldOffset=0x8)" P-INDEP
+; V48 tmp39 [V48,T19] ( 2, 4 ) int -> r12 "field V20._options (fldOffset=0x10)" P-INDEP
+; V49 tmp40 [V49,T20] ( 2, 4 ) long -> [rsp+0x90] spill-single-def "field V20._matchTimeout (fldOffset=0x18)" P-INDEP
+; V50 tmp41 [V50,T03] ( 6, 12 ) ref -> [rsp+0x30] spill-single-def "field V21._pattern (fldOffset=0x0)" P-INDEP
+; V51 tmp42 [V51,T04] ( 6, 12 ) ref -> [rsp+0x28] spill-single-def "field V21._culture (fldOffset=0x8)" P-INDEP
+; V52 tmp43 [V52,T21] ( 2, 4 ) int -> [rsp+0x8C] spill-single-def "field V21._options (fldOffset=0x10)" P-INDEP
+; V53 tmp44 [V53,T22] ( 2, 4 ) long -> [rsp+0x80] spill-single-def "field V21._matchTimeout (fldOffset=0x18)" P-INDEP
;* V54 tmp45 [V54 ] ( 0, 0 ) long -> zero-ref "field V31._ticks (fldOffset=0x0)" P-INDEP
;* V55 tmp46 [V55 ] ( 0, 0 ) long -> zero-ref "field V32._ticks (fldOffset=0x0)" P-INDEP
-; V56 tmp47 [V56,T33] ( 2, 1 ) ref -> rdx single-def "field V34._pattern (fldOffset=0x0)" P-INDEP
-; V57 tmp48 [V57,T34] ( 2, 1 ) ref -> rcx single-def "field V34._culture (fldOffset=0x8)" P-INDEP
-; V58 tmp49 [V58,T36] ( 2, 1 ) int -> r11 "field V34._options (fldOffset=0x10)" P-INDEP
-; V59 tmp50 [V59,T37] ( 2, 1 ) long -> rax "field V34._matchTimeout (fldOffset=0x18)" P-INDEP
+; V56 tmp47 [V56,T35] ( 2, 1 ) ref -> rdx single-def "field V34._pattern (fldOffset=0x0)" P-INDEP
+; V57 tmp48 [V57,T36] ( 2, 1 ) ref -> rcx single-def "field V34._culture (fldOffset=0x8)" P-INDEP
+; V58 tmp49 [V58,T38] ( 2, 1 ) int -> r11 "field V34._options (fldOffset=0x10)" P-INDEP
+; V59 tmp50 [V59,T39] ( 2, 1 ) long -> rax "field V34._matchTimeout (fldOffset=0x18)" P-INDEP
;* V60 tmp51 [V60 ] ( 0, 0 ) struct (32) zero-ref "Promoted implicit byref" <System.Text.RegularExpressions.RegexCache+Key>
-; V61 tmp52 [V61 ] ( 7, 13 ) struct (32) [rsp+0x50] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
-; V62 tmp53 [V62 ] ( 2, 8 ) struct (32) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
-; V63 cse0 [V63,T31] ( 3, 1.50) int -> rdx "CSE #01: moderate"
-; V64 cse1 [V64,T32] ( 3, 1.50) int -> rcx "CSE #09: moderate"
-;* V65 rat0 [V65,T24] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V66 rat1 [V66,T38] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V67 rat2 [V67,T22] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-;* V68 rat3 [V68,T25] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V69 rat4 [V69,T39] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V70 rat5 [V70,T23] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V61 tmp52 [V61 ] ( 7, 13 ) struct (32) [rsp+0x60] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
+; V62 tmp53 [V62 ] ( 2, 8 ) struct (32) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
+; V63 cse0 [V63,T33] ( 3, 1.50) int -> rdx "CSE #01: moderate"
+; V64 cse1 [V64,T34] ( 3, 1.50) int -> rcx "CSE #09: moderate"
+; V65 cse2 [V65,T09] ( 4, 8 ) int -> [rsp+0x3C] spill-single-def "CSE #02: aggressive"
+; V66 cse3 [V66,T10] ( 4, 8 ) int -> r15 "CSE #04: aggressive"
+;* V67 rat0 [V67,T26] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V68 rat1 [V68,T40] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V69 rat2 [V69,T24] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V70 rat3 [V70,T27] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V71 rat4 [V71,T41] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V72 rat5 [V72,T25] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 136
+; Lcl frame size = 152
G_M36212_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -91,10 +93,10 @@ G_M36212_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 136
+ sub rsp, 152
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x30], ymm4
- vmovdqu ymmword ptr [rsp+0x50], ymm4
+ vmovdqu ymmword ptr [rsp+0x40], ymm4
+ vmovdqu ymmword ptr [rsp+0x60], ymm4
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
@@ -108,7 +110,7 @@ G_M36212_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rd
mov r14, gword ptr [rbp+0x08]
; gcrRegs +[r14]
test r14, r14
- jne G_M36212_IG16
+ jne G_M36212_IG12
;; size=17 bbWeight=1 PerfScore 5.25
G_M36212_IG03: ; bbWeight=0.50, gcrefRegs=0060 {rbp rsi}, byrefRegs=0088 {rbx rdi}, byref
; gcrRegs -[r14]
@@ -137,16 +139,16 @@ G_M36212_IG03: ; bbWeight=0.50, gcrefRegs=0060 {rbp rsi}, byrefRegs=0088
imul rax, r8
shr rax, 32
cmp eax, edx
- jae G_M36212_IG26
+ jae G_M36212_IG22
mov eax, eax
mov rbp, gword ptr [rcx+8*rax+0x10]
test rbp, rbp
- je G_M36212_IG22
+ je G_M36212_IG18
;; size=94 bbWeight=0.50 PerfScore 14.38
G_M36212_IG04: ; bbWeight=4, gcrefRegs=0060 {rbp rsi}, byrefRegs=0088 {rbx rdi}, byref
; gcrRegs -[rcx]
cmp r14d, dword ptr [rbp+0x18]
- jne G_M36212_IG12
+ jne G_M36212_IG08
;; size=10 bbWeight=4 PerfScore 16.00
G_M36212_IG05: ; bbWeight=2, gcrefRegs=0060 {rbp rsi}, byrefRegs=0088 {rbx rdi}, byref, isz
mov r15, gword ptr [rbp+0x20]
@@ -155,127 +157,119 @@ G_M36212_IG05: ; bbWeight=2, gcrefRegs=0060 {rbp rsi}, byrefRegs=0088 {rb
; gcrRegs +[r13]
mov r12d, dword ptr [rbp+0x30]
mov rax, qword ptr [rbp+0x38]
- mov qword ptr [rsp+0x80], rax
+ mov qword ptr [rsp+0x90], rax
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
- mov gword ptr [rsp+0x28], rdx
+ mov gword ptr [rsp+0x30], rdx
; GC ptr vars +{V50}
mov r8, gword ptr [rbx+0x08]
; gcrRegs +[r8]
- mov gword ptr [rsp+0x20], r8
+ mov gword ptr [rsp+0x28], r8
; GC ptr vars +{V51}
mov r10d, dword ptr [rbx+0x10]
- mov dword ptr [rsp+0x7C], r10d
+ mov dword ptr [rsp+0x8C], r10d
mov r9, qword ptr [rbx+0x18]
- mov qword ptr [rsp+0x70], r9
+ mov qword ptr [rsp+0x80], r9
cmp byte ptr [r15], r15b
cmp r15, rdx
- je SHORT G_M36212_IG08
+ je SHORT G_M36212_IG06
test rdx, rdx
- je G_M36212_IG12
- ;; size=76 bbWeight=2 PerfScore 53.00
-G_M36212_IG06: ; bbWeight=16, gcVars=0000000000000018 {V50 V51}, gcrefRegs=A064 {rdx rbp rsi r13 r15}, byrefRegs=0088 {rbx rdi}, gcvars, byref
- ; gcrRegs -[r8]
- mov ecx, dword ptr [r15+0x08]
- cmp ecx, dword ptr [rdx+0x08]
- jne G_M36212_IG12
- ;; size=13 bbWeight=16 PerfScore 96.00
-G_M36212_IG07: ; bbWeight=2, gcrefRegs=A060 {rbp rsi r13 r15}, byrefRegs=0088 {rbx rdi}, byref, isz
- ; gcrRegs -[rdx]
+ je G_M36212_IG08
+ mov r11d, dword ptr [r15+0x08]
+ mov dword ptr [rsp+0x3C], r11d
+ cmp r11d, dword ptr [rdx+0x08]
+ jne G_M36212_IG08
mov ecx, 1
call [<unknown method>]
+ ; gcrRegs -[rdx r8]
; gcr arg pop 0
mov ecx, 1
call [<unknown method>]
; gcr arg pop 0
- mov ecx, dword ptr [r15+0x08]
- mov rdx, gword ptr [rsp+0x28]
+ mov rdx, gword ptr [rsp+0x30]
; gcrRegs +[rdx]
- cmp ecx, dword ptr [rdx+0x08]
+ mov eax, dword ptr [rsp+0x3C]
+ xor ecx, ecx
+ cmp dword ptr [rdx+0x08], eax
sete cl
- movzx rcx, cl
call [<unknown method>]
; gcrRegs -[rdx]
; gcr arg pop 0
lea rcx, bword ptr [r15+0x0C]
; byrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x28]
- ; gcrRegs +[rdx]
- add rdx, 12
- ; gcrRegs -[rdx]
+ mov r15, gword ptr [rsp+0x30]
+ lea rdx, bword ptr [r15+0x0C]
; byrRegs +[rdx]
- mov r8d, dword ptr [r15+0x08]
- add r8d, r8d
+ mov r15d, dword ptr [rsp+0x3C]
+ ; gcrRegs -[r15]
+ add r15d, r15d
+ mov r8d, r15d
; GC ptr vars -{V50}
call [<unknown method>]
- ; gcrRegs -[r15]
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M36212_IG12
- ;; size=76 bbWeight=2 PerfScore 50.00
...
+23 (+3.20%) : 15001.dasm - Microsoft.ML.Internal.Utilities.ResourceManagerUtils:GetFilePath(Microsoft.ML.Runtime.IChannel,System.String,System.String,byref):System.String (FullOpts)
@@ -13,21 +13,21 @@
; V02 arg2 [V02,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T01] ( 5, 3 ) byref -> [rbp+0x28] EH-live single-def
; V04 loc0 [V04,T04] ( 4, 4 ) ref -> rdi class-hnd exact single-def <System.String>
-; V05 loc1 [V05,T00] ( 9, 7 ) ref -> [rbp-0x48] class-hnd exact EH-live spill-single-def <System.String>
+; V05 loc1 [V05,T00] ( 8, 6 ) ref -> [rbp-0x50] class-hnd exact EH-live spill-single-def <System.String>
;* V06 loc2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
-; V07 loc3 [V07,T07] ( 5, 3 ) ref -> [rbp-0x50] class-hnd exact EH-live spill-single-def <System.String>
-; V08 loc4 [V08,T17] ( 2, 1 ) ref -> [rbp-0x58] class-hnd exact EH-live spill-single-def <System.String>
+; V07 loc3 [V07,T07] ( 5, 3 ) ref -> [rbp-0x58] class-hnd exact EH-live spill-single-def <System.String>
+; V08 loc4 [V08,T18] ( 2, 1 ) ref -> [rbp-0x60] class-hnd exact EH-live spill-single-def <System.String>
;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
;* V10 loc6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V11 loc7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 tmp1 [V13,T08] ( 3, 3 ) ref -> rcx
-; V14 tmp2 [V14,T24] ( 3, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V15 tmp3 [V15,T22] ( 7, 0 ) ref -> rsi class-hnd exact single-def "dup spill" <<unknown class>>
-; V16 tmp4 [V16,T26] ( 2, 0 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
-; V17 tmp5 [V17,T25] ( 3, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V18 tmp6 [V18,T23] ( 7, 0 ) ref -> rsi class-hnd exact single-def "dup spill" <<unknown class>>
-; V19 tmp7 [V19,T27] ( 2, 0 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
+; V14 tmp2 [V14,T25] ( 3, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V15 tmp3 [V15,T23] ( 7, 0 ) ref -> rsi class-hnd exact single-def "dup spill" <<unknown class>>
+; V16 tmp4 [V16,T27] ( 2, 0 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
+; V17 tmp5 [V17,T26] ( 3, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V18 tmp6 [V18,T24] ( 7, 0 ) ref -> rsi class-hnd exact single-def "dup spill" <<unknown class>>
+; V19 tmp7 [V19,T28] ( 2, 0 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
; V20 tmp8 [V20,T09] ( 3, 3 ) ref -> rcx class-hnd "Inline return value spill temp" <System.String>
;* V21 tmp9 [V21 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp10 [V22 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
@@ -39,59 +39,64 @@
;* V28 tmp16 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp17 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V30 tmp18 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V31 tmp19 [V31,T06] ( 2, 4 ) int -> rax "Inlining Arg"
+; V31 tmp19 [V31,T06] ( 2, 4 ) int -> r14 "Inlining Arg"
; V32 tmp20 [V32,T05] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp22 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp23 [V35 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V36 tmp24 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp25 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V38 tmp26 [V38,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V38 tmp26 [V38,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V39 tmp27 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.OperatingSystem>
;* V40 tmp28 [V40 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp29 [V41 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V42 tmp30 [V42,T11] ( 2, 2 ) byref -> rcx "field V22._reference (fldOffset=0x0)" P-INDEP
-; V43 tmp31 [V43,T15] ( 2, 2 ) int -> rax "field V22._length (fldOffset=0x8)" P-INDEP
+; V42 tmp30 [V42,T12] ( 2, 2 ) byref -> rcx "field V22._reference (fldOffset=0x0)" P-INDEP
+; V43 tmp31 [V43,T16] ( 2, 2 ) int -> r14 "field V22._length (fldOffset=0x8)" P-INDEP
;* V44 tmp32 [V44 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp33 [V45 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP
;* V46 tmp34 [V46 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp35 [V47 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
-; V48 tmp36 [V48,T12] ( 2, 2 ) byref -> rcx single-def "field V27._reference (fldOffset=0x0)" P-INDEP
-;* V49 tmp37 [V49,T19] ( 0, 0 ) int -> zero-ref single-def "field V27._length (fldOffset=0x8)" P-INDEP
-; V50 tmp38 [V50,T13] ( 2, 2 ) byref -> rcx single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp39 [V51,T16] ( 2, 2 ) int -> rax single-def "field V29._length (fldOffset=0x8)" P-INDEP
+; V48 tmp36 [V48,T13] ( 2, 2 ) byref -> rcx single-def "field V27._reference (fldOffset=0x0)" P-INDEP
+;* V49 tmp37 [V49,T20] ( 0, 0 ) int -> zero-ref single-def "field V27._length (fldOffset=0x8)" P-INDEP
+; V50 tmp38 [V50,T14] ( 2, 2 ) byref -> rcx single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp39 [V51,T17] ( 2, 2 ) int -> r14 single-def "field V29._length (fldOffset=0x8)" P-INDEP
;* V52 tmp40 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp41 [V53 ] ( 0, 0 ) int -> zero-ref single-def "field V30._length (fldOffset=0x8)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
-; V56 tmp44 [V56,T14] ( 2, 2 ) byref -> r14 single-def "field V36._reference (fldOffset=0x0)" P-INDEP
-;* V57 tmp45 [V57,T20] ( 0, 0 ) int -> zero-ref single-def "field V36._length (fldOffset=0x8)" P-INDEP
-; V58 tmp46 [V58 ] ( 6, 12 ) struct (16) [rbp-0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V59 tmp47 [V59 ] ( 3, 6 ) struct (16) [rbp-0x40] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V60 PSPSym [V60,T21] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-; V61 cse0 [V61,T10] ( 3, 3 ) byref -> r14 "CSE #04: moderate"
+; V56 tmp44 [V56,T15] ( 2, 2 ) byref -> r15 single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V57 tmp45 [V57,T21] ( 0, 0 ) int -> zero-ref single-def "field V36._length (fldOffset=0x8)" P-INDEP
+; V58 tmp46 [V58 ] ( 6, 12 ) struct (16) [rbp-0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V59 tmp47 [V59 ] ( 3, 6 ) struct (16) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V60 PSPSym [V60,T22] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
+; V61 cse0 [V61,T10] ( 3, 3 ) byref -> r15 "CSE #04: moderate"
+; V62 cse1 [V62,T11] ( 3, 3 ) int -> r14 "CSE #02: moderate"
;
-; Lcl frame size = 96
+; Lcl frame size = 104
G_M21577_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
+ push r15
push r14
push rdi
push rsi
push rbx
- sub rsp, 96
+ sub rsp, 104
vzeroupper
- lea rbp, [rsp+0x80]
+ lea rbp, [rsp+0x90]
+ xor eax, eax
+ mov qword ptr [rbp-0x48], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x40], ymm4
- mov qword ptr [rbp-0x60], rsp
+ vmovdqa xmmword ptr [rbp-0x40], xmm4
+ mov qword ptr [rbp-0x30], rax
+ mov qword ptr [rbp-0x70], rsp
mov bword ptr [rbp+0x28], r9
; GC ptr vars +{V03}
mov rbx, rdx
; gcrRegs +[rbx]
mov rsi, r8
; gcrRegs +[rsi]
- ;; size=44 bbWeight=1 PerfScore 11.58
+ ;; size=56 bbWeight=1 PerfScore 14.83
G_M21577_IG02: ; bbWeight=1, gcVars=0000000000000002 {V03}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
@@ -106,53 +111,55 @@ G_M21577_IG02: ; bbWeight=1, gcVars=0000000000000002 {V03}, gcrefRegs=004
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov gword ptr [rbp-0x48], rdx
+ mov gword ptr [rbp-0x50], rdx
; GC ptr vars +{V05}
test rdx, rdx
je G_M21577_IG12
- cmp dword ptr [rdx+0x08], 0
- jne SHORT G_M21577_IG04
- ;; size=54 bbWeight=1 PerfScore 13.50
-G_M21577_IG03: ; bbWeight=1, gcVars=0000000000000003 {V03 V05}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov r14d, dword ptr [rdx+0x08]
+ test r14d, r14d
+ je SHORT G_M21577_IG03
+ mov r15, 0xD1FFAB1E
+ ; byrRegs +[r15]
+ mov rcx, r15
+ ; byrRegs +[rcx]
+ mov bword ptr [rbp-0x38], rcx
+ mov dword ptr [rbp-0x30], 15
+ lea rcx, [rbp-0x38]
+ ; byrRegs -[rcx]
+ call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte]
; gcrRegs -[rax rdx]
+ ; gcr arg pop 0
+ test eax, eax
+ je SHORT G_M21577_IG04
+ ;; size=95 bbWeight=1 PerfScore 20.00
+G_M21577_IG03: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r15]
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
jmp SHORT G_M21577_IG05
;; size=12 bbWeight=1 PerfScore 2.25
-G_M21577_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M21577_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=8000 {r15}, byref
; gcrRegs -[rcx]
- mov r14, 0xD1FFAB1E
- ; byrRegs +[r14]
- mov rcx, r14
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x30], rcx
- mov dword ptr [rbp-0x28], 15
- lea rcx, [rbp-0x30]
- ; byrRegs -[rcx]
- call [System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M21577_IG03
- mov rdx, gword ptr [rbp-0x48]
+ ; byrRegs +[r15]
+ mov rdx, gword ptr [rbp-0x50]
; gcrRegs +[rdx]
lea rcx, bword ptr [rdx+0x0C]
; byrRegs +[rcx]
- mov eax, dword ptr [rdx+0x08]
- mov bword ptr [rbp-0x30], rcx
- mov dword ptr [rbp-0x28], eax
- mov bword ptr [rbp-0x40], r14
- mov dword ptr [rbp-0x38], 15
- lea rcx, [rbp-0x30]
+ mov bword ptr [rbp-0x38], rcx
+ mov dword ptr [rbp-0x30], r14d
+ mov bword ptr [rbp-0x48], r15
+ mov dword ptr [rbp-0x40], 15
+ lea rcx, [rbp-0x38]
; byrRegs -[rcx]
- lea rdx, [rbp-0x40]
+ lea rdx, [rbp-0x48]
; gcrRegs -[rdx]
call [<unknown method>]
; gcrRegs +[rax]
- ; byrRegs -[r14]
+ ; byrRegs -[r15]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- ;; size=84 bbWeight=1 PerfScore 19.00
+ ;; size=44 bbWeight=1 PerfScore 9.75
G_M21577_IG05: ; bbWeight=1, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test rdi, rdi
@@ -170,7 +177,7 @@ G_M21577_IG06: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov gword ptr [rbp-0x50], rdx
+ mov gword ptr [rbp-0x58], rdx
; GC ptr vars +{V07}
mov rcx, rdx
; gcrRegs +[rcx]
@@ -178,14 +185,14 @@ G_M21577_IG06: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
call [System.IO.Path:Combine(System.String,System.String):System.String]
; gcrRegs -[rcx rdx rbx]
; gcr arg pop 0
- mov gword ptr [rbp-0x58], rax
+ mov gword ptr [rbp-0x60], rax
; GC ptr vars +{V08}
xor rcx, rcx
; gcrRegs +[rcx]
mov rdx, bword ptr [rbp+0x28]
; byrRegs +[rdx]
mov gword ptr [rdx], rcx
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
call [<unknown method>]
; gcrRegs -[rax rcx]
; byrRegs -[rdx]
@@ -194,7 +201,7 @@ G_M21577_IG06: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
jne SHORT G_M21577_IG08
;; size=55 bbWeight=1 PerfScore 16.50
G_M21577_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx]
call [System.IO.Directory:CreateDirectory(System.String):System.IO.DirectoryInfo]
; gcrRegs -[rcx] +[rax]
@@ -203,7 +210,7 @@ G_M21577_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
cmp dword ptr [rax+0x20], 4
jne SHORT G_M21577_IG08
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx]
mov edx, 448
call <unknown method>
@@ -211,9 +218,9 @@ G_M21577_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
nop
;; size=37 bbWeight=1 PerfScore 13.50
-G_M21577_IG08: ; bbWeight=1, gcVars=0000000000020082 {V03 V07 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M21577_IG08: ; bbWeight=1, gcVars=0000000000040082 {V03 V07 V08}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
...
smoke_tests.nativeaot.windows.x64.checked.mch
-9 (-6.98%) : 25863.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
@@ -53,28 +53,28 @@ G_M18424_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r
xor r11d, r11d
xor ebx, ebx
test ecx, ecx
- jle SHORT G_M18424_IG12
+ jle SHORT G_M18424_IG10
;; size=28 bbWeight=1 PerfScore 13.75
G_M18424_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
cmp r11d, r8d
- jae SHORT G_M18424_IG07
+ jae SHORT G_M18424_IG09
lea esi, [r11+0x01]
mov r11d, r11d
movzx rdi, byte ptr [r9+rbx]
mov byte ptr [rax+r11], dil
inc ebx
cmp ebx, ecx
- jl SHORT G_M18424_IG11
+ jl SHORT G_M18424_IG08
;; size=27 bbWeight=4 PerfScore 26.00
G_M18424_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
; byrRegs -[r9]
xor ecx, ecx
test edx, edx
- jle SHORT G_M18424_IG10
+ jle SHORT G_M18424_IG06
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
cmp esi, r8d
- jae SHORT G_M18424_IG09
+ jae SHORT G_M18424_IG06
mov r9d, esi
lea esi, [r9+0x01]
movzx r11, byte ptr [r10+rcx]
@@ -83,40 +83,34 @@ G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10},
cmp ecx, edx
jl SHORT G_M18424_IG05
;; size=27 bbWeight=4 PerfScore 26.00
-G_M18424_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18424_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax r10]
- mov r11d, esi
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M18424_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, r11d
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M18424_IG08: ; bbWeight=1, epilog, nogc, extend
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M18424_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M18424_IG09: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov r11d, esi
- jmp SHORT G_M18424_IG07
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r11d, esi
- jmp SHORT G_M18424_IG07
- ;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M18424_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
+G_M18424_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, gcvars, byref, isz
; byrRegs +[rax r9-r10]
mov r11d, esi
jmp SHORT G_M18424_IG03
;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
- ; byrRegs -[r9]
+G_M18424_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax r9-r10]
+ mov esi, r11d
+ jmp SHORT G_M18424_IG06
+ ;; size=5 bbWeight=2 PerfScore 4.50
+G_M18424_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
+ ; byrRegs +[rax r10]
mov esi, r11d
jmp SHORT G_M18424_IG04
;; size=5 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 129, prolog size 7, PerfScore 83.94, instruction count 50, allocated bytes for code 129 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 120, prolog size 7, PerfScore 82.88, instruction count 47, allocated bytes for code 120 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
-9 (-6.98%) : 5739.dasm - System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
@@ -54,28 +54,28 @@ G_M18424_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0106 {rcx rdx r
xor r11d, r11d
xor ebx, ebx
test ecx, ecx
- jle SHORT G_M18424_IG12
+ jle SHORT G_M18424_IG10
;; size=28 bbWeight=1 PerfScore 13.75
G_M18424_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
cmp r11d, r8d
- jae SHORT G_M18424_IG07
+ jae SHORT G_M18424_IG09
lea esi, [r11+0x01]
mov r11d, r11d
movzx rdi, byte ptr [r9+rbx]
mov byte ptr [rax+r11], dil
inc ebx
cmp ebx, ecx
- jl SHORT G_M18424_IG11
+ jl SHORT G_M18424_IG08
;; size=27 bbWeight=4 PerfScore 26.00
G_M18424_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
; byrRegs -[r9]
xor ecx, ecx
test edx, edx
- jle SHORT G_M18424_IG10
+ jle SHORT G_M18424_IG06
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
cmp esi, r8d
- jae SHORT G_M18424_IG09
+ jae SHORT G_M18424_IG06
mov r9d, esi
lea esi, [r9+0x01]
movzx r11, byte ptr [r10+rcx]
@@ -84,40 +84,34 @@ G_M18424_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10},
cmp ecx, edx
jl SHORT G_M18424_IG05
;; size=27 bbWeight=4 PerfScore 26.00
-G_M18424_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M18424_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax r10]
- mov r11d, esi
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M18424_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, r11d
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M18424_IG08: ; bbWeight=1, epilog, nogc, extend
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M18424_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 32
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M18424_IG09: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov r11d, esi
- jmp SHORT G_M18424_IG07
- ;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r11d, esi
- jmp SHORT G_M18424_IG07
- ;; size=5 bbWeight=0.25 PerfScore 0.56
-G_M18424_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, byref, isz
+G_M18424_IG08: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0601 {rax r9 r10}, gcvars, byref, isz
; byrRegs +[rax r9-r10]
mov r11d, esi
jmp SHORT G_M18424_IG03
;; size=5 bbWeight=2 PerfScore 4.50
-G_M18424_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
- ; byrRegs -[r9]
+G_M18424_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax r9-r10]
+ mov esi, r11d
+ jmp SHORT G_M18424_IG06
+ ;; size=5 bbWeight=2 PerfScore 4.50
+G_M18424_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
+ ; byrRegs +[rax r10]
mov esi, r11d
jmp SHORT G_M18424_IG04
;; size=5 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 129, prolog size 7, PerfScore 83.94, instruction count 50, allocated bytes for code 129 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
+; Total bytes of code 120, prolog size 7, PerfScore 82.88, instruction count 47, allocated bytes for code 120 (MethodHash=8d9eb807) for method System.Text.DecoderNLS:ConcatInto(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
; ============================================================
Unwind Info:
-24 (-5.15%) : 6743.dasm - System.Threading.Tasks.Task:SpinThenBlockingWait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
@@ -72,7 +72,7 @@ G_M5159_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov r14d, eax
test r14d, r14d
- jne G_M5159_IG20
+ jne G_M5159_IG17
;; size=23 bbWeight=1 PerfScore 3.75
G_M5159_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [(reloc)] ; System.Threading.Tasks.Task+SetOnInvokeMres
@@ -113,7 +113,7 @@ G_M5159_IG07: ; bbWeight=0.50, gcVars=0000000000000415 {V00 V06 V12 V14},
;; size=32 bbWeight=0.50 PerfScore 2.62
G_M5159_IG08: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
test edi, edi
- je SHORT G_M5159_IG14
+ je SHORT G_M5159_IG11
call System.Threading.ThreadPool:NotifyThreadBlocked():ubyte
; gcr arg pop 0
mov dword ptr [rbp-0x2C], eax
@@ -132,56 +132,34 @@ G_M5159_IG09: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, b
;; size=20 bbWeight=0.50 PerfScore 1.38
G_M5159_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbp-0x2C], 0
- je SHORT G_M5159_IG11
+ je SHORT G_M5159_IG16
call System.Threading.ThreadPool:NotifyThreadUnblocked()
; gcr arg pop 0
- mov r15, gword ptr [rbp-0x40]
- ; gcrRegs +[r15]
- jmp SHORT G_M5159_IG19
- ;; size=17 bbWeight=0.50 PerfScore 3.50
-G_M5159_IG11: ; bbWeight=0.25, gcVars=0000000000000005 {V00 V12}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r15]
- ; GC ptr vars -{V06}
- mov r15, gword ptr [rbp-0x40]
- ; gcrRegs +[r15]
- jmp SHORT G_M5159_IG19
- ;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M5159_IG12: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- mov r15, gword ptr [rbp-0x40]
- ; gcrRegs +[r15]
- jmp SHORT G_M5159_IG19
- ;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M5159_IG13: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- mov r15, gword ptr [rbp-0x40]
- ; gcrRegs +[r15]
- jmp SHORT G_M5159_IG19
- ;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M5159_IG14: ; bbWeight=0.50, gcVars=0000000000000415 {V00 V06 V12 V14}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r15]
- ; GC ptr vars +{V06 V14}
+ jmp SHORT G_M5159_IG16
+ ;; size=13 bbWeight=0.50 PerfScore 3.00
+G_M5159_IG11: ; bbWeight=0.50, gcVars=0000000000000415 {V00 V06 V12 V14}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V14}
call <unknown method>
; gcr arg pop 0
mov edi, eax
sub edi, esi
cmp dword ptr [(reloc)], 0
- je SHORT G_M5159_IG16
+ je SHORT G_M5159_IG13
;; size=18 bbWeight=0.50 PerfScore 2.75
-G_M5159_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5159_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_POLL_GC
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M5159_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M5159_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, edi
movsxd rcx, ebx
cmp rax, rcx
- jge SHORT G_M5159_IG12
+ jge SHORT G_M5159_IG16
call System.Threading.ThreadPool:NotifyThreadBlocked():ubyte
; gcr arg pop 0
mov dword ptr [rbp-0x30], eax
;; size=18 bbWeight=0.50 PerfScore 1.88
-G_M5159_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5159_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edx, edi
sub ebx, edx
mov edx, ebx
@@ -195,31 +173,30 @@ G_M5159_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
; gcr arg pop 0
mov r14d, eax
;; size=22 bbWeight=0.50 PerfScore 2.00
-G_M5159_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M5159_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbp-0x30], 0
- je SHORT G_M5159_IG13
+ je SHORT G_M5159_IG16
call System.Threading.ThreadPool:NotifyThreadUnblocked()
; gcr arg pop 0
- mov r15, gword ptr [rbp-0x40]
- ; gcrRegs +[r15]
- ;; size=15 bbWeight=0.50 PerfScore 2.50
-G_M5159_IG19: ; bbWeight=0.50, gcVars=0000000000000005 {V00 V12}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ nop
+ ;; size=12 bbWeight=0.50 PerfScore 2.12
+G_M5159_IG16: ; bbWeight=0.50, gcVars=0000000000000005 {V00 V12}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V06}
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
test dword ptr [rcx+0x34], 0xD1FFAB1E
- jne SHORT G_M5159_IG20
- mov rdx, r15
+ jne SHORT G_M5159_IG17
+ mov rdx, gword ptr [rbp-0x40]
; gcrRegs +[rdx]
; GC ptr vars -{V00 V12}
call <unknown method>
- ; gcrRegs -[rcx rdx r15]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=21 bbWeight=0.50 PerfScore 3.12
-G_M5159_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=22 bbWeight=0.50 PerfScore 3.50
+G_M5159_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, r14d
;; size=3 bbWeight=1 PerfScore 0.25
-G_M5159_IG21: ; bbWeight=1, epilog, nogc, extend
+G_M5159_IG18: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
pop rsi
@@ -229,7 +206,7 @@ G_M5159_IG21: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 4.25
-G_M5159_IG22: ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M5159_IG19: ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V06}
push rbp
push r15
@@ -239,16 +216,16 @@ G_M5159_IG22: ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=
push rbx
sub rsp, 40
;; size=12 bbWeight=0 PerfScore 0.00
-G_M5159_IG23: ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5159_IG20: ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp dword ptr [rbp-0x2C], 0
- je SHORT G_M5159_IG24
+ je SHORT G_M5159_IG21
call System.Threading.ThreadPool:NotifyThreadUnblocked()
; gcr arg pop 0
;; size=11 bbWeight=0 PerfScore 0.00
-G_M5159_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5159_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M5159_IG25: ; bbWeight=0, funclet epilog, nogc, extend
+G_M5159_IG22: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
@@ -258,7 +235,7 @@ G_M5159_IG25: ; bbWeight=0, funclet epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-G_M5159_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M5159_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
push r15
push r14
@@ -267,16 +244,16 @@ G_M5159_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 40
;; size=12 bbWeight=0 PerfScore 0.00
-G_M5159_IG27: ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5159_IG24: ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp dword ptr [rbp-0x30], 0
- je SHORT G_M5159_IG28
+ je SHORT G_M5159_IG25
call System.Threading.ThreadPool:NotifyThreadUnblocked()
; gcr arg pop 0
;; size=11 bbWeight=0 PerfScore 0.00
-G_M5159_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5159_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M5159_IG29: ; bbWeight=0, funclet epilog, nogc, extend
+G_M5159_IG26: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
@@ -286,7 +263,7 @@ G_M5159_IG29: ; bbWeight=0, funclet epilog, nogc, extend
pop rbp
ret
;; size=13 bbWeight=0 PerfScore 0.00
-G_M5159_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M5159_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push rbp
push r15
push r14
@@ -295,11 +272,11 @@ G_M5159_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 40
;; size=12 bbWeight=0 PerfScore 0.00
-G_M5159_IG31: ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M5159_IG28: ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
test dword ptr [rcx+0x34], 0xD1FFAB1E
- jne SHORT G_M5159_IG32
+ jne SHORT G_M5159_IG29
mov rdx, gword ptr [rbp-0x38]
; gcrRegs +[rdx]
; GC ptr vars -{V00 V06}
@@ -307,10 +284,10 @@ G_M5159_IG31: ; bbWeight=0, gcVars=0000000000000404 {V00 V06}, gcrefRegs=
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=22 bbWeight=0 PerfScore 0.00
-G_M5159_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5159_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M5159_IG33: ; bbWeight=0, funclet epilog, nogc, extend
+G_M5159_IG30: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
@@ -321,7 +298,7 @@ G_M5159_IG33: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 466, prolog size 27, PerfScore 50.88, instruction count 165, allocated bytes for code 466 (MethodHash=c531ebd8) for method System.Threading.Tasks.Task:SpinThenBlockingWait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
+; Total bytes of code 442, prolog size 27, PerfScore 48.12, instruction count 158, allocated bytes for code 442 (MethodHash=c531ebd8) for method System.Threading.Tasks.Task:SpinThenBlockingWait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -394,6 +371,6 @@ Unwind Info:
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
*************** EH table for System.Threading.Tasks.Task:SpinThenBlockingWait(int,System.Threading.CancellationToken):ubyte:this
3 EH table entries, 0 duplicate clauses, 0 cloned finallys, 3 total EH entries reported to VM
-EH#0: try [G_M5159_IG09..G_M5159_IG10) handled by [G_M5159_IG22..G_M5159_IG26) (fault)
-EH#1: try [G_M5159_IG17..G_M5159_IG18) handled by [G_M5159_IG26..G_M5159_IG30) (fault)
-EH#2: try [G_M5159_IG07..G_M5159_IG19) handled by [G_M5159_IG30..END) (fault)
+EH#0: try [G_M5159_IG09..G_M5159_IG10) handled by [G_M5159_IG19..G_M5159_IG23) (fault)
+EH#1: try [G_M5159_IG14..G_M5159_IG15) handled by [G_M5159_IG23..G_M5159_IG27) (fault)
+EH#2: try [G_M5159_IG07..G_M5159_IG16) handled by [G_M5159_IG27..END) (fault)
+29 (+2.03%) : 496.dasm - System.Text.UTF32Encoding:GetChars(ulong,int,ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
@@ -10,7 +10,7 @@
; V00 this [V00,T15] ( 7, 8 ) ref -> rdi this class-hnd exact single-def <System.Text.UTF32Encoding>
; V01 arg1 [V01,T05] ( 19, 22.50) long -> registers
; V02 arg2 [V02,T22] ( 4, 4 ) int -> rbp single-def
-; V03 arg3 [V03,T02] ( 20, 76.50) long -> registers
+; V03 arg3 [V03,T02] ( 20, 76.50) long -> [rsp+0xB8]
; V04 arg4 [V04,T33] ( 2, 2 ) int -> r15 single-def
; V05 arg5 [V05,T29] ( 5, 3 ) ref -> r14 class-hnd exact single-def <System.Text.DecoderNLS>
; V06 loc0 [V06,T20] ( 10, 6 ) ref -> r13 class-hnd exact single-def <<unknown class>>
@@ -156,7 +156,7 @@ G_M1603_IG10: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {},
mov r13, r14
; gcrRegs +[r13]
test r13, r13
- jne G_M1603_IG56
+ jne G_M1603_IG57
mov r12, rbx
movsxd rcx, r15d
lea r15, [r12+2*rcx]
@@ -168,7 +168,7 @@ G_M1603_IG10: ; bbWeight=1, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {},
xor r8d, r8d
xor r10d, r10d
test r14, r14
- je SHORT G_M1603_IG14
+ je SHORT G_M1603_IG13
;; size=52 bbWeight=1 PerfScore 7.00
G_M1603_IG11: ; bbWeight=0.50, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [r14+0x34]
@@ -182,14 +182,14 @@ G_M1603_IG11: ; bbWeight=0.50, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=00
; gcr arg pop 0
lea rcx, [(reloc)]
cmp qword ptr [rax], rcx
- je G_M1603_IG18
+ je SHORT G_M1603_IG12
mov gword ptr [rsp+0x30], rax
; GC ptr vars +{V13}
mov ecx, dword ptr [rax+0x2C]
test ecx, ecx
- jl SHORT G_M1603_IG13
+ jl G_M1603_IG17
test ecx, ecx
- je SHORT G_M1603_IG12
+ je G_M1603_IG17
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
lea rdx, gword ptr [(reloc)]
@@ -197,32 +197,25 @@ G_M1603_IG11: ; bbWeight=0.50, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=00
call <unknown method>
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- mov rax, gword ptr [rsp+0x30]
+ jmp SHORT G_M1603_IG17
+ ;; size=83 bbWeight=0.50 PerfScore 10.62
+G_M1603_IG12: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=2081 {rax rdi r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax]
- jmp SHORT G_M1603_IG18
- ;; size=84 bbWeight=0.50 PerfScore 11.12
-G_M1603_IG12: ; bbWeight=0.25, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rax, gword ptr [rsp+0x30]
- ; gcrRegs +[rax]
- jmp SHORT G_M1603_IG18
+ ; GC ptr vars -{V13}
+ mov gword ptr [rsp+0x30], rax
+ ; GC ptr vars +{V13}
+ jmp SHORT G_M1603_IG17
;; size=7 bbWeight=0.25 PerfScore 0.75
-G_M1603_IG13: ; bbWeight=0.25, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rax, gword ptr [rsp+0x30]
- ; gcrRegs +[rax]
- jmp SHORT G_M1603_IG18
- ;; size=7 bbWeight=0.25 PerfScore 0.75
-G_M1603_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M1603_IG13: ; bbWeight=0.50, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
; GC ptr vars -{V13}
mov r14, gword ptr [rdi+0x18]
; gcrRegs +[r14]
lea rcx, [(reloc)]
cmp qword ptr [r14], rcx
- jne SHORT G_M1603_IG16
+ jne SHORT G_M1603_IG15
;; size=16 bbWeight=0.50 PerfScore 3.25
-G_M1603_IG15: ; bbWeight=0.25, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG14: ; bbWeight=0.25, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rsp+0x40], r10d
mov dword ptr [rsp+0x44], r8d
lea rcx, [(reloc)] ; System.Text.DecoderReplacementFallbackBuffer
@@ -242,9 +235,9 @@ G_M1603_IG15: ; bbWeight=0.25, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=00
; byrRegs -[rcx]
mov r14, gword ptr [rsp+0x28]
; gcrRegs +[r14]
- jmp SHORT G_M1603_IG17
+ jmp SHORT G_M1603_IG16
;; size=61 bbWeight=0.25 PerfScore 3.25
-G_M1603_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, gcvars, byref
+G_M1603_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14]
; GC ptr vars -{V53}
mov dword ptr [rsp+0x40], r10d
@@ -256,37 +249,38 @@ G_M1603_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2080
mov r14, rax
; gcrRegs +[r14]
;; size=25 bbWeight=0.50 PerfScore 1.88
-G_M1603_IG17: ; bbWeight=0.50, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, byref
+G_M1603_IG16: ; bbWeight=0.50, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rax, r14
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M1603_IG18: ; bbWeight=1, gcrefRegs=2081 {rax rdi r13}, byrefRegs=0000 {}, byref
+ mov gword ptr [rsp+0x30], r14
+ ; GC ptr vars +{V13}
+ ;; size=5 bbWeight=0.50 PerfScore 0.50
+G_M1603_IG17: ; bbWeight=1, gcVars=0000000000004000 {V13}, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14]
+ mov rax, gword ptr [rsp+0x30]
+ ; gcrRegs +[rax]
mov r8, qword ptr [rsp+0x48]
mov qword ptr [rax+0x18], r8
mov gword ptr [rsp+0x30], rax
- ; GC ptr vars +{V13}
mov qword ptr [rax+0x20], r15
cmp r8, rbp
- jae G_M1603_IG40
- ;; size=27 bbWeight=1 PerfScore 5.25
-G_M1603_IG19: ; bbWeight=4, gcVars=0000000000004000 {V13}, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, gcvars, byref, isz
+ jae G_M1603_IG41
+ ;; size=32 bbWeight=1 PerfScore 6.25
+G_M1603_IG18: ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
movzx rcx, byte ptr [rdi+0x27]
test ecx, ecx
- je SHORT G_M1603_IG21
+ je SHORT G_M1603_IG20
;; size=8 bbWeight=4 PerfScore 13.00
-G_M1603_IG20: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG19: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [rsp+0x40]
shl r14d, 8
lea rdx, [rsi+0x01]
mov r15, rdx
movzx rdx, byte ptr [rsi]
add r14d, edx
- jmp SHORT G_M1603_IG22
+ jmp SHORT G_M1603_IG21
;; size=24 bbWeight=2 PerfScore 13.00
-G_M1603_IG21: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
+G_M1603_IG20: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rsp+0x40]
shr r14d, 8
mov rdx, rsi
@@ -296,24 +290,24 @@ G_M1603_IG21: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {},
add r14d, edx
mov r15, rsi
;; size=28 bbWeight=2 PerfScore 10.50
-G_M1603_IG22: ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
+G_M1603_IG21: ; bbWeight=4, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
mov esi, dword ptr [rsp+0x44]
inc esi
cmp esi, 4
- jl G_M1603_IG32
+ jl G_M1603_IG31
;; size=15 bbWeight=4 PerfScore 10.00
-G_M1603_IG23: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG22: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
xor esi, esi
cmp r14d, 0xD1FFAB1E
- ja SHORT G_M1603_IG24
+ ja SHORT G_M1603_IG23
cmp r14d, 0xD800
- jb G_M1603_IG28
+ jb G_M1603_IG27
cmp r14d, 0xDFFF
- ja G_M1603_IG28
+ ja G_M1603_IG27
;; size=37 bbWeight=2 PerfScore 8.00
-G_M1603_IG24: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG23: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
test ecx, ecx
- je SHORT G_M1603_IG25
+ je SHORT G_M1603_IG24
lea rcx, [(reloc)] ; <unknown class>
mov edx, 4
call CORINFO_HELP_NEWARR_1_VC
@@ -331,9 +325,9 @@ G_M1603_IG24: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {},
shr ecx, 8
mov byte ptr [rdx+0x12], cl
mov byte ptr [rdx+0x13], r14b
- jmp SHORT G_M1603_IG26
+ jmp SHORT G_M1603_IG25
;; size=57 bbWeight=2 PerfScore 23.00
-G_M1603_IG25: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
+G_M1603_IG24: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdx]
lea rcx, [(reloc)] ; <unknown class>
mov edx, 4
@@ -353,7 +347,7 @@ G_M1603_IG25: ; bbWeight=2, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {},
shr r9d, 24
mov byte ptr [rdx+0x13], r9b
;; size=57 bbWeight=2 PerfScore 16.50
-G_M1603_IG26: ; bbWeight=2, gcrefRegs=2084 {rdx rdi r13}, byrefRegs=0000 {}, byref
+G_M1603_IG25: ; bbWeight=2, gcrefRegs=2084 {rdx rdi r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov qword ptr [rsp+0x38], rbx
lea r9, [rsp+0x38]
@@ -365,21 +359,21 @@ G_M1603_IG26: ; bbWeight=2, gcrefRegs=2084 {rdx rdi r13}, byrefRegs=0000
; gcr arg pop 0
mov rbx, qword ptr [rsp+0x38]
test eax, eax
- je G_M1603_IG34
+ je G_M1603_IG33
;; size=36 bbWeight=2 PerfScore 12.00
-G_M1603_IG27: ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG26: ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
xor r14d, r14d
- jmp SHORT G_M1603_IG32
+ jmp SHORT G_M1603_IG31
;; size=5 bbWeight=8 PerfScore 18.00
-G_M1603_IG28: ; bbWeight=16, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG27: ; bbWeight=16, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
cmp r14d, 0x10000
- jb SHORT G_M1603_IG30
+ jb SHORT G_M1603_IG29
;; size=9 bbWeight=16 PerfScore 20.00
-G_M1603_IG29: ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M1603_IG28: ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rsp+0x50]
lea rdx, [rcx-0x02]
cmp rbx, rdx
- jae G_M1603_IG37
+ jae G_M1603_IG36
lea rdx, [rbx+0x02]
lea r10d, [r14-0x00010000]
mov r9d, r10d
@@ -389,41 +383,41 @@ G_M1603_IG29: ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {},
and r10d, 0x3FF
add r10d, 0xDC00
movzx r14, r10w
- jmp SHORT G_M1603_IG31
+ jmp SHORT G_M1603_IG30
;; size=67 bbWeight=8 PerfScore 68.00
-G_M1603_IG30: ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
+G_M1603_IG29: ; bbWeight=8, gcrefRegs=2080 {rdi r13}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rsp+0x50]
cmp rbx, rcx
mov rdx, rbx
- jae G_M1603_IG39
+ jae G_M1603_IG40
;; size=17 bbWeight=8 PerfScore 20.00
...
+25 (+7.08%) : 5357.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
@@ -50,7 +50,7 @@ G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=29 bbWeight=1 PerfScore 10.00
G_M8664_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je G_M8664_IG17
+ je G_M8664_IG20
mov edi, dword ptr [rsi+0x08]
mov edx, edi
lea rcx, [(reloc)] ; System.Reflection.MethodBase[]
@@ -77,17 +77,18 @@ G_M8664_IG03: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
cmp dword ptr [rsp+0x30], 0
je G_M8664_IG08
;; size=34 bbWeight=4 PerfScore 50.00
-G_M8664_IG04: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M8664_IG04: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
xor r13d, r13d
xor r12d, r12d
mov edx, dword ptr [rbx+0x08]
mov dword ptr [rsp+0x24], edx
test edx, edx
- jle SHORT G_M8664_IG07
- ;; size=17 bbWeight=2 PerfScore 9.50
+ mov ecx, r13d
+ jle G_M8664_IG14
+ ;; size=24 bbWeight=2 PerfScore 10.00
G_M8664_IG05: ; bbWeight=16, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
cmp r12d, dword ptr [rsp+0x30]
- jae G_M8664_IG16
+ jae G_M8664_IG19
mov rcx, bword ptr [rsp+0x28]
; byrRegs +[rcx]
mov rcx, gword ptr [rcx+8*r12]
@@ -109,23 +110,22 @@ G_M8664_IG05: ; bbWeight=16, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M8664_IG06
+ je SHORT G_M8664_IG13
inc r12d
mov r13d, dword ptr [rsp+0x24]
cmp r13d, r12d
- jg SHORT G_M8664_IG05
+ jg SHORT G_M8664_IG12
;; size=74 bbWeight=16 PerfScore 416.00
G_M8664_IG06: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
mov ecx, r12d
- mov r13d, ecx
- ;; size=6 bbWeight=2 PerfScore 1.00
+ ;; size=3 bbWeight=2 PerfScore 0.50
G_M8664_IG07: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rsp+0x24], r13d
+ cmp r13d, ecx
jg SHORT G_M8664_IG08
mov rdx, gword ptr [rsi+8*r15+0x10]
; gcrRegs +[rdx]
cmp r14d, dword ptr [rbp+0x08]
- jae SHORT G_M8664_IG16
+ jae G_M8664_IG19
mov ecx, r14d
lea rcx, bword ptr [rbp+8*rcx+0x10]
; byrRegs +[rcx]
@@ -133,7 +133,7 @@ G_M8664_IG07: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
; gcrRegs -[rdx]
; byrRegs -[rcx]
inc r14d
- ;; size=34 bbWeight=2 PerfScore 25.00
+ ;; size=36 bbWeight=2 PerfScore 21.50
G_M8664_IG08: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
inc r15d
cmp edi, r15d
@@ -142,7 +142,7 @@ G_M8664_IG08: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
G_M8664_IG09: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
test r14d, r14d
- jne SHORT G_M8664_IG12
+ jne SHORT G_M8664_IG15
;; size=5 bbWeight=1 PerfScore 1.25
G_M8664_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
@@ -161,16 +161,28 @@ G_M8664_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[rbp]
+G_M8664_IG12: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rbx rbp rsi]
+ jmp G_M8664_IG05
+ ;; size=5 bbWeight=8 PerfScore 16.00
+G_M8664_IG13: ; bbWeight=8, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ mov r13d, dword ptr [rsp+0x24]
+ jmp SHORT G_M8664_IG06
+ ;; size=7 bbWeight=8 PerfScore 24.00
+G_M8664_IG14: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ mov r13d, dword ptr [rsp+0x24]
+ jmp SHORT G_M8664_IG07
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M8664_IG15: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx rsi]
cmp r14d, 1
- jne SHORT G_M8664_IG14
+ jne SHORT G_M8664_IG17
cmp dword ptr [rbp+0x08], 0
- jbe SHORT G_M8664_IG16
+ jbe SHORT G_M8664_IG19
mov rax, gword ptr [rbp+0x10]
; gcrRegs +[rax]
;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M8664_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M8664_IG16: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
@@ -182,7 +194,7 @@ G_M8664_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref
+G_M8664_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rcx, rbp
; gcrRegs +[rcx]
@@ -192,7 +204,7 @@ G_M8664_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020
; gcr arg pop 0
nop
;; size=12 bbWeight=0.50 PerfScore 0.88
-G_M8664_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M8664_IG18: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
@@ -204,12 +216,12 @@ G_M8664_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8664_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M8664_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8664_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
call System.ArgumentNullException:Throw(System.String)
@@ -218,7 +230,7 @@ G_M8664_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 353, prolog size 23, PerfScore 538.25, instruction count 115, allocated bytes for code 353 (MethodHash=4892de27) for method System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
+; Total bytes of code 378, prolog size 23, PerfScore 577.75, instruction count 120, allocated bytes for code 378 (MethodHash=4892de27) for method System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
; ============================================================
Unwind Info:
+25 (+7.62%) : 10120.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
@@ -48,7 +48,7 @@ G_M8664_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=29 bbWeight=1 PerfScore 10.00
G_M8664_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je G_M8664_IG17
+ je G_M8664_IG20
mov edi, dword ptr [rsi+0x08]
mov edx, edi
lea rcx, [(reloc)] ; System.Reflection.MethodBase[]
@@ -74,17 +74,18 @@ G_M8664_IG03: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
cmp dword ptr [rsp+0x30], 0
je SHORT G_M8664_IG08
;; size=23 bbWeight=4 PerfScore 42.00
-G_M8664_IG04: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M8664_IG04: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
xor r13d, r13d
xor r12d, r12d
mov eax, dword ptr [rbx+0x08]
mov dword ptr [rsp+0x24], eax
test eax, eax
- jle SHORT G_M8664_IG07
- ;; size=17 bbWeight=2 PerfScore 9.50
+ mov ecx, r13d
+ jle G_M8664_IG14
+ ;; size=24 bbWeight=2 PerfScore 10.00
G_M8664_IG05: ; bbWeight=16, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
cmp r12d, dword ptr [rsp+0x30]
- jae G_M8664_IG16
+ jae G_M8664_IG19
mov rcx, bword ptr [rsp+0x28]
; byrRegs +[rcx]
mov rcx, gword ptr [rcx+8*r12]
@@ -104,23 +105,22 @@ G_M8664_IG05: ; bbWeight=16, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M8664_IG06
+ je SHORT G_M8664_IG13
inc r12d
mov r13d, dword ptr [rsp+0x24]
cmp r13d, r12d
- jg SHORT G_M8664_IG05
+ jg SHORT G_M8664_IG12
;; size=60 bbWeight=16 PerfScore 352.00
G_M8664_IG06: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
mov ecx, r12d
- mov r13d, ecx
- ;; size=6 bbWeight=2 PerfScore 1.00
+ ;; size=3 bbWeight=2 PerfScore 0.50
G_M8664_IG07: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rsp+0x24], r13d
+ cmp r13d, ecx
jg SHORT G_M8664_IG08
mov rdx, gword ptr [rsi+8*r15+0x10]
; gcrRegs +[rdx]
cmp r14d, dword ptr [rbp+0x08]
- jae SHORT G_M8664_IG16
+ jae G_M8664_IG19
mov ecx, r14d
lea rcx, bword ptr [rbp+8*rcx+0x10]
; byrRegs +[rcx]
@@ -128,7 +128,7 @@ G_M8664_IG07: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
; gcrRegs -[rdx]
; byrRegs -[rcx]
inc r14d
- ;; size=34 bbWeight=2 PerfScore 25.00
+ ;; size=36 bbWeight=2 PerfScore 21.50
G_M8664_IG08: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
inc r15d
cmp edi, r15d
@@ -137,7 +137,7 @@ G_M8664_IG08: ; bbWeight=4, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
G_M8664_IG09: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
test r14d, r14d
- jne SHORT G_M8664_IG12
+ jne SHORT G_M8664_IG15
;; size=5 bbWeight=1 PerfScore 1.25
G_M8664_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
@@ -156,16 +156,28 @@ G_M8664_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[rbp]
+G_M8664_IG12: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rbx rbp rsi]
+ jmp G_M8664_IG05
+ ;; size=5 bbWeight=8 PerfScore 16.00
+G_M8664_IG13: ; bbWeight=8, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ mov r13d, dword ptr [rsp+0x24]
+ jmp SHORT G_M8664_IG06
+ ;; size=7 bbWeight=8 PerfScore 24.00
+G_M8664_IG14: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ mov r13d, dword ptr [rsp+0x24]
+ jmp SHORT G_M8664_IG07
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M8664_IG15: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx rsi]
cmp r14d, 1
- jne SHORT G_M8664_IG14
+ jne SHORT G_M8664_IG17
cmp dword ptr [rbp+0x08], 0
- jbe SHORT G_M8664_IG16
+ jbe SHORT G_M8664_IG19
mov rax, gword ptr [rbp+0x10]
; gcrRegs +[rax]
;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M8664_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M8664_IG16: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
@@ -177,7 +189,7 @@ G_M8664_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref
+G_M8664_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rcx, rbp
; gcrRegs +[rcx]
@@ -187,7 +199,7 @@ G_M8664_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020
; gcr arg pop 0
nop
;; size=12 bbWeight=0.50 PerfScore 0.88
-G_M8664_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M8664_IG18: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 56
pop rbx
pop rbp
@@ -199,12 +211,12 @@ G_M8664_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M8664_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8664_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M8664_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8664_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, gword ptr [(reloc)]
; gcrRegs +[rcx]
call System.ArgumentNullException:Throw(System.String)
@@ -213,7 +225,7 @@ G_M8664_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 23, PerfScore 466.25, instruction count 112, allocated bytes for code 328 (MethodHash=4892de27) for method System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
+; Total bytes of code 353, prolog size 23, PerfScore 505.75, instruction count 117, allocated bytes for code 353 (MethodHash=4892de27) for method System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
; ============================================================
Unwind Info:
Details
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 4,157 | 1,928 | 1,201 | 1,028 | -51,207 | +19,183 |
benchmarks.run.windows.x64.checked.mch | 540 | 241 | 142 | 157 | -5,884 | +2,108 |
benchmarks.run_pgo.windows.x64.checked.mch | 1,591 | 674 | 769 | 148 | -13,672 | +7,785 |
benchmarks.run_tiered.windows.x64.checked.mch | 154 | 70 | 37 | 47 | -2,295 | +368 |
coreclr_tests.run.windows.x64.checked.mch | 1,833 | 878 | 543 | 412 | -22,187 | +7,835 |
libraries.crossgen2.windows.x64.checked.mch | 1,145 | 472 | 274 | 399 | -9,045 | +2,915 |
libraries.pmi.windows.x64.checked.mch | 3,288 | 1,743 | 742 | 803 | -26,039 | +8,373 |
libraries_tests.run.windows.x64.Release.mch | 9,902 | 4,906 | 3,411 | 1,585 | -123,876 | +63,465 |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 10,492 | 5,800 | 1,187 | 3,505 | -45,596 | +19,207 |
realworld.run.windows.x64.checked.mch | 947 | 446 | 330 | 171 | -11,071 | +3,205 |
smoke_tests.nativeaot.windows.x64.checked.mch | 241 | 110 | 58 | 73 | -5,106 | +622 |
34,290 | 17,268 | 8,694 | 8,328 | -315,978 | +135,066 |
Collection | Contexts with diffs | Improvements | Regressions | Same PerfScore | Improvements (PerfScore) | Regressions (PerfScore) | PerfScore Overall in FullOpts |
---|---|---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 4,157 | 1,589 | 991 | 1,577 | -21.12% | +3.02% | -0.5051% |
benchmarks.run.windows.x64.checked.mch | 540 | 209 | 134 | 197 | -7.31% | +0.94% | -0.0704% |
benchmarks.run_pgo.windows.x64.checked.mch | 1,591 | 696 | 262 | 633 | -10.23% | +2.08% | -0.3393% |
benchmarks.run_tiered.windows.x64.checked.mch | 154 | 68 | 31 | 55 | -7.72% | +0.95% | -0.0480% |
coreclr_tests.run.windows.x64.checked.mch | 1,833 | 527 | 325 | 981 | -8.55% | +3.89% | -0.0178% |
libraries.crossgen2.windows.x64.checked.mch | 1,145 | 405 | 247 | 493 | -3.12% | +3.17% | -0.0060% |
libraries.pmi.windows.x64.checked.mch | 3,288 | 1,241 | 705 | 1,342 | -7.78% | +0.82% | -0.0358% |
libraries_tests.run.windows.x64.Release.mch | 9,902 | 3,937 | 2,651 | 3,314 | -16.23% | +2.91% | -0.3166% |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 10,492 | 1,602 | 910 | 7,980 | -5.36% | +0.97% | -0.0301% |
realworld.run.windows.x64.checked.mch | 947 | 407 | 296 | 244 | -4.25% | +0.53% | -0.0605% |
smoke_tests.nativeaot.windows.x64.checked.mch | 241 | 93 | 47 | 101 | -1.45% | +0.97% | -0.0195% |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 141,784 | 67,486 | 74,298 | 65 (0.05%) | 74 (0.05%) |
benchmarks.run.windows.x64.checked.mch | 28,236 | 4 | 28,232 | 1 (0.00%) | 1 (0.00%) |
benchmarks.run_pgo.windows.x64.checked.mch | 95,568 | 48,436 | 47,132 | 53 (0.06%) | 53 (0.06%) |
benchmarks.run_tiered.windows.x64.checked.mch | 53,431 | 37,375 | 16,056 | 1 (0.00%) | 1 (0.00%) |
coreclr_tests.run.windows.x64.checked.mch | 584,277 | 348,136 | 236,141 | 33 (0.01%) | 38 (0.01%) |
libraries.crossgen2.windows.x64.checked.mch | 275,812 | 15 | 275,797 | 0 (0.00%) | 0 (0.00%) |
libraries.pmi.windows.x64.checked.mch | 314,370 | 6 | 314,364 | 0 (0.00%) | 0 (0.00%) |
libraries_tests.run.windows.x64.Release.mch | 683,189 | 484,056 | 199,133 | 292 (0.04%) | 296 (0.04%) |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 320,969 | 21,946 | 299,023 | 1 (0.00%) | 1 (0.00%) |
realworld.run.windows.x64.checked.mch | 34,225 | 3 | 34,222 | 1 (0.00%) | 1 (0.00%) |
smoke_tests.nativeaot.windows.x64.checked.mch | 32,556 | 11 | 32,545 | 0 (0.00%) | 11 (0.03%) |
2,564,417 | 1,007,474 | 1,556,943 | 447 (0.02%) | 476 (0.02%) |