Diffs are based on 2,219,596 contexts (807,447 MinOpts, 1,412,149 FullOpts).
MISSED contexts: base: 4,468 (0.20%), diff: 589 (0.03%)
Base JIT options: JitObjectStackAllocation=0
Overall (-18,212 bytes)
Collection | Base size (bytes) | Diff size (bytes) | PerfScore in Diffs |
---|---|---|---|
aspnet.run.windows.x64.checked.mch | 65,934,970 | -145 | -0.08% |
benchmarks.run.windows.x64.checked.mch | 8,749,298 | -208 | -2.16% |
libraries.pmi.windows.x64.checked.mch | 63,723,297 | -4,302 | -4.88% |
libraries_tests.run.windows.x64.Release.mch | 349,428,109 | -690 | -4.33% |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 154,364,655 | -11,824 | -3.70% |
realworld.run.windows.x64.checked.mch | 13,613,198 | -1,043 | +0.33% |
FullOpts (-18,212 bytes)
Collection | Base size (bytes) | Diff size (bytes) | PerfScore in Diffs |
---|---|---|---|
aspnet.run.windows.x64.checked.mch | 36,349,908 | -145 | -0.08% |
benchmarks.run.windows.x64.checked.mch | 8,748,876 | -208 | -2.16% |
libraries.pmi.windows.x64.checked.mch | 63,610,336 | -4,302 | -4.88% |
libraries_tests.run.windows.x64.Release.mch | 136,392,846 | -690 | -4.33% |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 143,495,391 | -11,824 | -3.70% |
realworld.run.windows.x64.checked.mch | 13,200,230 | -1,043 | +0.33% |
Example diffs
aspnet.run.windows.x64.checked.mch
-25 (-4.89%) : 60921.dasm - System.Management.ManagementObjectCollection:GetEnumerator():System.Management.ManagementObjectCollection+ManagementObjectEnumerator:this (FullOpts)
@@ -13,43 +13,47 @@
; V02 loc1 [V02,T01] ( 9, 8 ) int -> [rbp-0x24] do-not-enreg[M] EH-live
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T04] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Management.ManagementObjectCollection+ManagementObjectEnumerator>
-; V06 tmp2 [V06,T09] ( 2, 4 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <System.Management.IEnumWbemClassObject>
-; V07 tmp3 [V07,T05] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Management.ManagementObjectCollection+ManagementObjectEnumerator>
-; V08 tmp4 [V08,T10] ( 2, 4 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <System.Management.IEnumWbemClassObject>
+; V05 tmp1 [V05,T03] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Management.ManagementObjectCollection+ManagementObjectEnumerator>
+; V06 tmp2 [V06,T08] ( 2, 4 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <System.Management.IEnumWbemClassObject>
+; V07 tmp3 [V07,T04] ( 3, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Management.ManagementObjectCollection+ManagementObjectEnumerator>
+; V08 tmp4 [V08,T09] ( 2, 4 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <System.Management.IEnumWbemClassObject>
; V09 tmp5 [V09,T18] ( 2, 0 ) ref -> rcx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
; V10 tmp6 [V10,T17] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V11 tmp7 [V11,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp8 [V12,T11] ( 2, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Management.EnumerationOptions>
-; V13 tmp9 [V13,T06] ( 3, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Management.ManagementScope>
-; V14 tmp10 [V14,T12] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Management.IEnumWbemClassObject>
+; V12 tmp8 [V12,T10] ( 2, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Management.EnumerationOptions>
+; V13 tmp9 [V13,T05] ( 3, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Management.ManagementScope>
+; V14 tmp10 [V14,T11] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Management.IEnumWbemClassObject>
; V15 tmp11 [V15,T02] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Management.SecuredIEnumWbemClassObjectHandler>
-; V16 tmp12 [V16,T07] ( 3, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Management.ManagementScope>
-; V17 tmp13 [V17,T13] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Management.IEnumWbemClassObject>
-; V18 tmp14 [V18,T03] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Management.SecuredIEnumWbemClassObjectHandler>
+; V16 tmp12 [V16,T06] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Management.ManagementScope>
+; V17 tmp13 [V17,T12] ( 2, 4 ) ref -> r11 class-hnd single-def "Inlining Arg" <System.Management.IEnumWbemClassObject>
+;* V18 tmp14 [V18 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Management.SecuredIEnumWbemClassObjectHandler>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V20 tmp16 [V20,T15] ( 2, 2 ) long -> rax "Inlining Arg"
-; V21 tmp17 [V21,T19] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V22 PSPSym [V22,T16] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
-; V23 rat0 [V23,T08] ( 3, 6 ) ref -> rax "delegate invoke call"
+; V21 tmp17 [V21,T13] ( 3, 3 ) struct (24) [rbp-0x40] do-not-enreg[SF] must-init "stack allocated ref class temp" <System.Management.SecuredIEnumWbemClassObjectHandler>
+;* V22 tmp18 [V22 ] ( 0, 0 ) long -> zero-ref single-def "V21.[000..008)"
+; V23 tmp19 [V23,T19] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V24 PSPSym [V24,T16] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
+; V25 rat0 [V25,T07] ( 3, 6 ) ref -> rax "delegate invoke call"
;
-; Lcl frame size = 56
+; Lcl frame size = 88
G_M64124_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push rdi
push rsi
push rbx
- sub rsp, 56
- lea rbp, [rsp+0x50]
+ sub rsp, 88
+ lea rbp, [rsp+0x70]
+ vxorps xmm4, xmm4, xmm4
+ vmovdqu ymmword ptr [rbp-0x40], ymm4
xor eax, eax
mov qword ptr [rbp-0x20], rax
- mov qword ptr [rbp-0x30], rsp
+ mov qword ptr [rbp-0x50], rsp
mov gword ptr [rbp+0x10], rcx
; GC ptr vars +{V00}
mov rdx, rcx
; gcrRegs +[rdx]
- ;; size=30 bbWeight=1 PerfScore 8.25
+ ;; size=39 bbWeight=1 PerfScore 10.58
G_M64124_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rdx+0x20], 0
jne G_M64124_IG12
@@ -88,7 +92,7 @@ G_M64124_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
;; size=41 bbWeight=1 PerfScore 8.25
G_M64124_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
+ add rsp, 88
pop rbx
pop rsi
pop rdi
@@ -134,39 +138,21 @@ G_M64124_IG06: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=000
jne SHORT G_M64124_IG07
mov rdx, gword ptr [rbp+0x10]
; gcrRegs +[rdx]
- mov rbx, gword ptr [rdx+0x08]
- ; gcrRegs +[rbx]
- mov rsi, gword ptr [rbp-0x20]
- ; gcrRegs +[rsi]
- cmp byte ptr [rbx], bl
- mov rcx, 0xD1FFAB1E ; System.Management.SecuredIEnumWbemClassObjectHandler
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- lea rcx, bword ptr [rdi+0x10]
- ; byrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rbx]
- ; byrRegs -[rcx]
- lea rcx, bword ptr [rdi+0x08]
- ; byrRegs +[rcx]
- mov rdx, rsi
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rsi]
- ; byrRegs -[rcx]
- mov rcx, gword ptr [rdi+0x08]
+ mov rcx, gword ptr [rdx+0x08]
; gcrRegs +[rcx]
+ mov r11, gword ptr [rbp-0x20]
+ ; gcrRegs +[r11]
+ cmp byte ptr [rcx], cl
+ mov gword ptr [rbp-0x30], rcx
+ mov gword ptr [rbp-0x38], r11
+ mov rcx, gword ptr [rbp-0x38]
mov r11, 0xD1FFAB1E ; code for <unknown method>
+ ; gcrRegs -[r11]
call [r11]<unknown method>
- ; gcrRegs -[rcx rdi]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
mov dword ptr [rbp-0x24], eax
- ;; size=153 bbWeight=1 PerfScore 38.00
+ ;; size=119 bbWeight=1 PerfScore 34.00
G_M64124_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movsxd rcx, dword ptr [rbp-0x24]
mov eax, 0xD1FFAB1E
@@ -201,7 +187,7 @@ G_M64124_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[rax]
;; size=41 bbWeight=1 PerfScore 7.25
G_M64124_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
+ add rsp, 88
pop rbx
pop rsi
pop rdi
@@ -274,7 +260,7 @@ G_M64124_IG13: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=000
sub rsp, 40
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x50]
+ lea rbp, [rbp+0x70]
;; size=21 bbWeight=0 PerfScore 0.00
G_M64124_IG14: ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
mov rcx, rdx
@@ -293,7 +279,7 @@ G_M64124_IG15: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 511, prolog size 30, PerfScore 104.75, instruction count 136, allocated bytes for code 511 (MethodHash=73e10583) for method System.Management.ManagementObjectCollection:GetEnumerator():System.Management.ManagementObjectCollection+ManagementObjectEnumerator:this (FullOpts)
+; Total bytes of code 486, prolog size 39, PerfScore 103.08, instruction count 131, allocated bytes for code 486 (MethodHash=73e10583) for method System.Management.ManagementObjectCollection:GetEnumerator():System.Management.ManagementObjectCollection+ManagementObjectEnumerator:this (FullOpts)
; ============================================================
Unwind Info:
@@ -306,7 +292,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
-16 (-1.19%) : 58694.dasm - Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor:VisitMethodCall(System.Linq.Expressions.MethodCallExpression):System.Linq.Expressions.Expression:this (FullOpts)
@@ -10,27 +10,27 @@
;
; V00 this [V00,T00] ( 18, 8 ) ref -> rbx this class-hnd single-def <Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor>
; V01 arg1 [V01,T01] ( 12, 6.50) ref -> rsi class-hnd single-def <System.Linq.Expressions.MethodCallExpression>
-; V02 loc0 [V02,T03] ( 8, 5.50) ref -> rdi class-hnd single-def <System.Reflection.MethodInfo>
+; V02 loc0 [V02,T02] ( 8, 5.50) ref -> rdi class-hnd single-def <System.Reflection.MethodInfo>
; V03 loc1 [V03,T39] ( 3, 1.50) ref -> r14 class-hnd single-def <System.Linq.Expressions.Expression>
-; V04 loc2 [V04,T23] ( 4, 2 ) ref -> rdi class-hnd single-def <<unknown class>>
+; V04 loc2 [V04,T22] ( 4, 2 ) ref -> rdi class-hnd single-def <<unknown class>>
; V05 loc3 [V05,T40] ( 3, 1.50) ref -> rsi class-hnd single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SqlExpression>
; V06 loc4 [V06,T42] ( 2, 1 ) ref -> rdi class-hnd exact <<unknown class>>
-; V07 loc5 [V07,T24] ( 4, 2 ) ref -> r13 class-hnd single-def <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
+; V07 loc5 [V07,T23] ( 4, 2 ) ref -> r13 class-hnd single-def <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
;* V08 loc6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.MethodInfo>
-; V09 loc7 [V09,T10] ( 8, 3.50) ref -> rax class-hnd exact single-def <System.String>
+; V09 loc7 [V09,T09] ( 8, 3.50) ref -> rax class-hnd exact single-def <System.String>
;* V10 loc8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
-; V11 loc9 [V11,T46] ( 2, 1 ) ref -> rbx class-hnd exact single-def <System.Linq.Expressions.UnaryExpression>
+; V11 loc9 [V11,T46] ( 2, 1 ) ref -> rax class-hnd exact single-def <System.Linq.Expressions.UnaryExpression>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T07] ( 5, 4.01) ref -> rax class-hnd single-def "impAppendStmt" <System.Reflection.MethodInfo>
+; V13 tmp1 [V13,T06] ( 5, 4.01) ref -> rax class-hnd single-def "impAppendStmt" <System.Reflection.MethodInfo>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor>
-; V15 tmp3 [V15,T11] ( 4, 3.50) ref -> rdi single-def "ISINST eval op1"
+; V15 tmp3 [V15,T10] ( 4, 3.50) ref -> rdi single-def "ISINST eval op1"
;* V16 tmp4 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling qmarkNull" <<unknown class>>
-; V17 tmp5 [V17,T09] ( 4, 4 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
-; V18 tmp6 [V18,T15] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ProjectionMember>
-; V19 tmp7 [V19,T04] ( 5, 5 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ProjectionBindingExpression>
-; V20 tmp8 [V20,T02] ( 6, 6 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
-; V21 tmp9 [V21,T06] ( 10, 4.01) ref -> r12
-; V22 tmp10 [V22,T16] ( 3, 3 ) ref -> rax class-hnd single-def "dup spill" <<unknown class>>
+; V17 tmp5 [V17,T08] ( 4, 4 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
+; V18 tmp6 [V18,T14] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ProjectionMember>
+; V19 tmp7 [V19,T03] ( 5, 5 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ProjectionBindingExpression>
+;* V20 tmp8 [V20 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
+; V21 tmp9 [V21,T05] ( 10, 4.01) ref -> r12
+; V22 tmp10 [V22,T15] ( 3, 3 ) ref -> rax class-hnd single-def "dup spill" <<unknown class>>
;* V23 tmp11 [V23 ] ( 0, 0 ) ref -> zero-ref single-def
; V24 tmp12 [V24,T52] ( 2, 0 ) ref -> rsi class-hnd exact single-def "non-inline candidate call" <System.String>
; V25 tmp13 [V25,T50] ( 3, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -40,48 +40,51 @@
; V29 tmp17 [V29,T51] ( 3, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V30 tmp18 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
;* V31 tmp19 [V31 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-; V32 tmp20 [V32,T13] ( 2, 2 ) int -> rcx "spilling unroll qmark"
+; V32 tmp20 [V32,T12] ( 2, 2 ) int -> rcx "spilling unroll qmark"
;* V33 tmp21 [V33 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-; V34 tmp22 [V34,T14] ( 2, 2 ) int -> rcx "spilling unroll qmark"
+; V34 tmp22 [V34,T13] ( 2, 2 ) int -> rcx "spilling unroll qmark"
; V35 tmp23 [V35,T43] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
-; V36 tmp24 [V36,T17] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
+; V36 tmp24 [V36,T16] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
; V37 tmp25 [V37,T44] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
-; V38 tmp26 [V38,T18] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
+; V38 tmp26 [V38,T17] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;* V39 tmp27 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
; V40 tmp28 [V40,T45] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
-; V41 tmp29 [V41,T19] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
+; V41 tmp29 [V41,T18] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;* V42 tmp30 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
;* V43 tmp31 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
-; V44 tmp32 [V44,T20] ( 3, 3 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V44 tmp32 [V44,T19] ( 3, 3 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V45 tmp33 [V45,T26] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Linq.Expressions.Expression>
-; V46 tmp34 [V46,T05] ( 5, 5 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
-; V47 tmp35 [V47,T27] ( 2, 2 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
-;* V48 tmp36 [V48,T58] ( 0, 0 ) ubyte -> zero-ref "field V10.hasValue (fldOffset=0x0)" P-INDEP
-;* V49 tmp37 [V49,T59] ( 0, 0 ) int -> zero-ref "field V10.value (fldOffset=0x4)" P-INDEP
-; V50 tmp38 [V50,T28] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V51 tmp39 [V51,T29] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V52 tmp40 [V52,T30] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V53 tmp41 [V53,T49] ( 6, 0 ) struct ( 8) [rsp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V54 tmp42 [V54,T54] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V55 tmp43 [V55,T55] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V56 tmp44 [V56,T31] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V57 tmp45 [V57,T32] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V58 tmp46 [V58,T33] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V59 tmp47 [V59,T34] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V60 tmp48 [V60,T35] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V61 tmp49 [V61,T21] ( 3, 3 ) ref -> rbp single-def "argument with side effect"
-; V62 tmp50 [V62,T36] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V63 tmp51 [V63,T37] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V64 tmp52 [V64,T38] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V65 tmp53 [V65,T56] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V66 tmp54 [V66,T57] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V67 cse0 [V67,T12] ( 6, 3 ) long -> r15 multi-def "CSE #11: moderate"
-; V68 cse1 [V68,T22] ( 3, 2.50) long -> r14 "CSE #02: moderate"
-; V69 cse2 [V69,T08] ( 6, 4 ) long -> rbp "CSE #01: aggressive"
-; V70 rat0 [V70,T47] ( 3, 3 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V71 rat1 [V71,T48] ( 3, 3 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V46 tmp34 [V46,T04] ( 5, 5 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
+; V47 tmp35 [V47,T27] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
+; V48 tmp36 [V48,T24] ( 4, 2 ) struct (32) [rsp+0x28] do-not-enreg[SF] must-init "stack allocated ref class temp" <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
+;* V49 tmp37 [V49,T58] ( 0, 0 ) ubyte -> zero-ref "field V10.hasValue (fldOffset=0x0)" P-INDEP
+;* V50 tmp38 [V50,T59] ( 0, 0 ) int -> zero-ref "field V10.value (fldOffset=0x4)" P-INDEP
+;* V51 tmp39 [V51 ] ( 0, 0 ) long -> zero-ref single-def "V48.[000..008)"
+;* V52 tmp40 [V52 ] ( 0, 0 ) int -> zero-ref single-def "V48.[024..028)"
+; V53 tmp41 [V53,T28] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V54 tmp42 [V54,T29] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V55 tmp43 [V55,T30] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V56 tmp44 [V56,T49] ( 6, 0 ) struct ( 8) [rsp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+; V57 tmp45 [V57,T54] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V58 tmp46 [V58,T55] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V59 tmp47 [V59,T31] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V60 tmp48 [V60,T32] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V61 tmp49 [V61,T33] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V62 tmp50 [V62,T34] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V63 tmp51 [V63,T35] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V64 tmp52 [V64,T20] ( 3, 3 ) ref -> rbp single-def "argument with side effect"
+; V65 tmp53 [V65,T36] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V66 tmp54 [V66,T37] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V67 tmp55 [V67,T38] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
+; V68 tmp56 [V68,T56] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V69 tmp57 [V69,T57] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V70 cse0 [V70,T11] ( 6, 3 ) long -> r15 multi-def "CSE #11: moderate"
+; V71 cse1 [V71,T21] ( 3, 2.50) long -> r14 "CSE #02: moderate"
+; V72 cse2 [V72,T07] ( 6, 4 ) long -> rbp "CSE #01: aggressive"
+; V73 rat0 [V73,T47] ( 3, 3 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V74 rat1 [V74,T48] ( 3, 3 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 72
G_M21715_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -92,12 +95,17 @@ G_M21715_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 72
+ xor eax, eax
+ mov qword ptr [rsp+0x28], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqa xmmword ptr [rsp+0x30], xmm4
+ mov qword ptr [rsp+0x40], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=22 bbWeight=1 PerfScore 8.75
+ ;; size=44 bbWeight=1 PerfScore 13.33
G_M21715_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rsi+0x08]
; gcrRegs +[rdi]
@@ -298,10 +306,10 @@ G_M21715_IG16: ; bbWeight=0.50, gcrefRegs=2048 {rbx rsi r13}, byrefRegs=0
; gcrRegs -[rcx rdx r13] +[rax]
; gcr arg pop 0
test rax, rax
- je G_M21715_IG29
+ je G_M21715_IG28
;; size=27 bbWeight=0.50 PerfScore 4.38
G_M21715_IG17: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 72
pop rbx
pop rbp
pop rsi
@@ -356,10 +364,10 @@ G_M21715_IG19: ; bbWeight=0.50, gcrefRegs=2048 {rbx rsi r13}, byrefRegs=0
; gcrRegs -[rcx rdx r8 r13] +[rax]
; gcr arg pop 0
test rax, rax
- je G_M21715_IG30
+ je G_M21715_IG29
;; size=69 bbWeight=0.50 PerfScore 10.50
G_M21715_IG20: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 72
pop rbx
pop rbp
pop rsi
@@ -466,7 +474,7 @@ G_M21715_IG23: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M21715_IG24: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 72
pop rbx
pop rbp
pop rsi
@@ -567,60 +575,38 @@ G_M21715_IG26: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
call [System.Linq.Expressions.Expression:Convert(System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression]
; gcrRegs -[rcx rdx rsi r8] +[rax]
; gcr arg pop 0
- mov rbx, rax
+ mov gword ptr [rsp+0x30], rbp
+ mov gword ptr [rsp+0x38], rax
+ mov rbx, gword ptr [rsp+0x30]
; gcrRegs +[rbx]
mov rcx, 0xD1FFAB1E ; Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression
call CORINFO_HELP_NEWSFAST
+ ; gcrRegs -[rbp]
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
- lea rcx, bword ptr [rsi+0x08]
- ; byrRegs +[rcx]
- mov rdx, rbp
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rbp]
- ; byrRegs -[rcx]
- lea rcx, bword ptr [rsi+0x10]
- ; byrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rbx]
- ; byrRegs -[rcx]
- xor ecx, ecx
- mov dword ptr [rsi+0x18], ecx
- mov rbx, gword ptr [rsi+0x08]
- ; gcrRegs +[rbx]
- mov rcx, 0xD1FFAB1E ; Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdi, rax
+ mov rdi, gword ptr [rsp+0x38]
; gcrRegs +[rdi]
- mov rsi, gword ptr [rsi+0x10]
- lea rcx, bword ptr [rdi+0x08]
+ lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx rbx]
; byrRegs -[rcx]
- lea rcx, bword ptr [rdi+0x10]
+ lea rcx, bword ptr [rsi+0x10]
; byrRegs +[rcx]
- mov rdx, rsi
+ mov rdx, rdi
; gcrRegs +[rdx]
- ;; size=300 bbWeight=0.50 PerfScore 22.88
-G_M21715_IG27: ; bbWeight=0.50, extend
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rsi]
+ ; gcrRegs -[rdx rdi]
; byrRegs -[rcx]
- mov dword ptr [rdi+0x18], 1
- mov rax, rdi
+ mov dword ptr [rsi+0x18], 1
+ mov rax, rsi
; gcrRegs +[rax]
- ;; size=15 bbWeight=0.50 PerfScore 1.12
-G_M21715_IG28: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
...
+3 (+0.50%) : 110807.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
@@ -15,39 +15,40 @@
;* V04 arg4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation>
;* V05 arg5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]>
; V06 loc0 [V06,T04] ( 6, 3.50) ref -> r14 class-hnd single-def <<unknown class>>
-; V07 loc1 [V07 ] ( 2, 1 ) ref -> [rsp+0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.MemberInfo>
-; V08 loc2 [V08 ] ( 1, 0.50) ref -> [rsp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
+; V07 loc1 [V07 ] ( 2, 1 ) ref -> [rsp+0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.MemberInfo>
+; V08 loc2 [V08 ] ( 1, 0.50) ref -> [rsp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T14] ( 3, 1.50) ref -> rax
-; V11 tmp2 [V11 ] ( 2, 2 ) struct ( 8) [rsp+0x40] do-not-enreg[SB] "spilled call-like call argument" <System.Nullable`1[int]>
-; V12 tmp3 [V12,T08] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
+; V10 tmp1 [V10,T12] ( 3, 1.50) ref -> rax
+; V11 tmp2 [V11 ] ( 2, 2 ) struct ( 8) [rsp+0x50] do-not-enreg[SB] "spilled call-like call argument" <System.Nullable`1[int]>
+;* V12 tmp3 [V12 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Boolean>
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
-; V14 tmp5 [V14,T09] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
+; V14 tmp5 [V14,T08] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref
-; V16 tmp7 [V16,T15] ( 3, 1.50) ref -> rdx
+; V16 tmp7 [V16,T13] ( 3, 1.50) ref -> rdx
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
; V18 tmp9 [V18,T05] ( 2, 2 ) int -> rdx "spilling unroll qmark"
;* V19 tmp10 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
; V20 tmp11 [V20,T06] ( 2, 2 ) int -> rdx "spilling unroll qmark"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
; V22 tmp13 [V22,T07] ( 2, 2 ) int -> rax "spilling unroll qmark"
-; V23 tmp14 [V23,T17] ( 5, 1.45) ref -> rdx class-hnd single-def "Inline return value spill temp" <System.Object>
-; V24 tmp15 [V24 ] ( 3, 1.50) ref -> [rsp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
-; V25 tmp16 [V25,T16] ( 2, 1 ) ubyte -> rbx "Inline return value spill temp"
-; V26 tmp17 [V26,T10] ( 3, 2.01) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Boolean>
-; V27 tmp18 [V27,T20] ( 3, 0.51) ubyte -> rbx "Inline return value spill temp"
-;* V28 tmp19 [V28,T22] ( 0, 0 ) int -> zero-ref "spilling qmarkNull"
-; V29 tmp20 [V29,T21] ( 2, 0.02) byref -> r15 single-def "Inlining Arg"
-; V30 tmp21 [V30,T11] ( 2, 2 ) ubyte -> [rsp+0x40] do-not-enreg[] "field V11.hasValue (fldOffset=0x0)" P-DEP
-; V31 tmp22 [V31,T12] ( 2, 2 ) int -> [rsp+0x44] do-not-enreg[] "field V11.value (fldOffset=0x4)" P-DEP
-;* V32 tmp23 [V32,T19] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V33 tmp24 [V33,T13] ( 2, 2 ) struct ( 8) [rsp+0x30] do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-; V34 cse0 [V34,T18] ( 4, 1 ) int -> r15 "CSE #01: moderate"
-; V35 rat0 [V35,T23] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V36 rat1 [V36,T24] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V37 rat2 [V37,T25] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V23 tmp14 [V23,T15] ( 5, 1.45) ref -> rdx class-hnd single-def "Inline return value spill temp" <System.Object>
+; V24 tmp15 [V24 ] ( 3, 1.50) ref -> [rsp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
+; V25 tmp16 [V25,T14] ( 2, 1 ) ubyte -> r15 "Inline return value spill temp"
+;* V26 tmp17 [V26 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inlining Arg" <System.Boolean>
+; V27 tmp18 [V27,T18] ( 3, 0.51) ubyte -> r15 "Inline return value spill temp"
+;* V28 tmp19 [V28,T19] ( 0, 0 ) int -> zero-ref "spilling qmarkNull"
+;* V29 tmp20 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V30 tmp21 [V30 ] ( 4, 1.50) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,ubyte]>
+; V31 tmp22 [V31,T09] ( 2, 2 ) ubyte -> [rsp+0x50] do-not-enreg[] "field V11.hasValue (fldOffset=0x0)" P-DEP
+; V32 tmp23 [V32,T10] ( 2, 2 ) int -> [rsp+0x54] do-not-enreg[] "field V11.value (fldOffset=0x4)" P-DEP
+;* V33 tmp24 [V33,T17] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V34 tmp25 [V34,T11] ( 2, 2 ) struct ( 8) [rsp+0x30] do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+; V35 cse0 [V35,T16] ( 4, 1 ) int -> r15 "CSE #01: moderate"
+; V36 rat0 [V36,T20] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V37 rat1 [V37,T21] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V38 rat2 [V38,T22] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 88
+; Lcl frame size = 104
G_M7184_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -56,12 +57,12 @@ G_M7184_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 88
+ sub rsp, 104
xor eax, eax
mov qword ptr [rsp+0x38], rax
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x40], xmm4
- mov qword ptr [rsp+0x50], rax
+ vmovdqu ymmword ptr [rsp+0x40], ymm4
+ mov qword ptr [rsp+0x60], rax
mov rdi, rcx
; gcrRegs +[rdi]
mov rsi, rdx
@@ -120,7 +121,7 @@ G_M7184_IG06: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefReg
G_M7184_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi rdi r14]
vzeroupper
- add rsp, 88
+ add rsp, 104
pop rbx
pop rbp
pop rsi
@@ -137,11 +138,11 @@ G_M7184_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40E0
call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx]
; gcr arg pop 0
- lea rcx, [rsp+0x48]
+ lea rcx, [rsp+0x58]
mov qword ptr [rsp+0x20], rcx
mov rcx, r14
; gcrRegs +[rcx]
- lea r9, [rsp+0x50]
+ lea r9, [rsp+0x60]
xor edx, edx
xor r8d, r8d
call [<unknown method>]
@@ -159,55 +160,49 @@ G_M7184_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40E0
;; size=69 bbWeight=0.50 PerfScore 7.00
G_M7184_IG09: ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rcx, gword ptr [rsp+0x50]
+ mov rcx, gword ptr [rsp+0x60]
; gcrRegs +[rcx]
call [System.Reflection.EntityFrameworkMemberInfoExtensions:GetMemberType(System.Reflection.MemberInfo):System.Type]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
;; size=11 bbWeight=0.50 PerfScore 2.00
G_M7184_IG10: ; bbWeight=0.50, gcrefRegs=40E1 {rax rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- cmp rax, rcx
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ cmp rax, rdx
jne SHORT G_M7184_IG14
- mov rcx, 0xD1FFAB1E ; System.Boolean
- ; gcrRegs -[rcx]
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- mov byte ptr [r15+0x08], 1
- lea rdx, [rsp+0x38]
+ mov rdx, 0xD1FFAB1E ; System.Boolean
+ ; gcrRegs -[rdx]
+ mov qword ptr [rsp+0x38], rdx
+ mov byte ptr [rsp+0x40], 1
+ lea rdx, [rsp+0x48]
mov rcx, r14
; gcrRegs +[rcx]
call [Microsoft.EntityFrameworkCore.RelationalPropertyExtensions:TryGetDefaultValue(Microsoft.EntityFrameworkCore.Metadata.IReadOnlyProperty,byref):ubyte]
; gcrRegs -[rax rcx]
; gcr arg pop 0
- mov rdx, gword ptr [rsp+0x38]
+ mov rdx, gword ptr [rsp+0x48]
; gcrRegs +[rdx]
xor rcx, rcx
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x38], rcx
- cmp r15, rdx
- je SHORT G_M7184_IG18
- ;; size=69 bbWeight=0.50 PerfScore 5.62
-G_M7184_IG11: ; bbWeight=0.45, gcrefRegs=C0E4 {rdx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov gword ptr [rsp+0x48], rcx
+ lea rcx, [rsp+0x38]
; gcrRegs -[rcx]
+ cmp rcx, rdx
+ je SHORT G_M7184_IG18
+ ;; size=71 bbWeight=0.50 PerfScore 5.75
+G_M7184_IG11: ; bbWeight=0.45, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
test rdx, rdx
je SHORT G_M7184_IG14
;; size=5 bbWeight=0.45 PerfScore 0.56
-G_M7184_IG12: ; bbWeight=0.01, gcrefRegs=C0E4 {rdx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
- add r15, 8
- ; gcrRegs -[r15]
- ; byrRegs +[r15]
+G_M7184_IG12: ; bbWeight=0.01, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Boolean
cmp qword ptr [rdx], rcx
je SHORT G_M7184_IG19
jmp SHORT G_M7184_IG16
- ;; size=21 bbWeight=0.01 PerfScore 0.03
+ ;; size=17 bbWeight=0.01 PerfScore 0.03
G_M7184_IG13: ; bbWeight=0.50, gcrefRegs=40C4 {rdx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
- ; byrRegs -[r15]
mov rcx, rsi
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -226,8 +221,8 @@ G_M7184_IG14: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=00
call [rax+0x10]<unknown method>
; gcrRegs -[rcx rdx rdi r14]
; gcr arg pop 0
- mov qword ptr [rsp+0x40], rax
- mov rdx, qword ptr [rsp+0x40]
+ mov qword ptr [rsp+0x50], rax
+ mov rdx, qword ptr [rsp+0x50]
mov qword ptr [rsp+0x30], rdx
mov rcx, rsi
; gcrRegs +[rcx]
@@ -240,7 +235,7 @@ G_M7184_IG14: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=00
;; size=51 bbWeight=0.50 PerfScore 7.25
G_M7184_IG15: ; bbWeight=0.50, epilog, nogc, extend
vzeroupper
- add rsp, 88
+ add rsp, 104
pop rbx
pop rbp
pop rsi
@@ -251,12 +246,12 @@ G_M7184_IG15: ; bbWeight=0.50, epilog, nogc, extend
;; size=16 bbWeight=0.50 PerfScore 2.62
G_M7184_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbp rsi rdi r14]
- xor ebx, ebx
- ;; size=2 bbWeight=0.01 PerfScore 0.00
+ xor r15d, r15d
+ ;; size=3 bbWeight=0.01 PerfScore 0.00
G_M7184_IG17: ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- test ebx, ebx
+ test r15d, r15d
je SHORT G_M7184_IG14
- ;; size=4 bbWeight=0.50 PerfScore 0.62
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M7184_IG18: ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
test rbp, rbp
jne SHORT G_M7184_IG20
@@ -264,19 +259,18 @@ G_M7184_IG18: ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefReg
; gcrRegs +[rdx]
jmp SHORT G_M7184_IG13
;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M7184_IG19: ; bbWeight=0.00, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=8000 {r15}, byref, isz
- ; byrRegs +[r15]
- movzx rbx, byte ptr [r15]
+G_M7184_IG19: ; bbWeight=0.00, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ movzx rbx, byte ptr [rsp+0x40]
mov rcx, 0xD1FFAB1E ; System.Boolean
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rdx]
- ; byrRegs -[r15] +[rax]
+ ; byrRegs +[rax]
; gcr arg pop 0
cmp bl, byte ptr [rax]
- sete bl
- movzx rbx, bl
+ sete r15b
+ movzx r15, r15b
jmp SHORT G_M7184_IG17
- ;; size=30 bbWeight=0.00 PerfScore 0.03
+ ;; size=33 bbWeight=0.00 PerfScore 0.03
G_M7184_IG20: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
; byrRegs -[rax]
@@ -313,7 +307,7 @@ RWD96 dq 0061006C00650052h, 006E006F00690074h, 0043003A006C0061h, 00750070006D
RWD128 dq 00750070006D006Fh, 0043006400650074h, 006D0075006C006Fh, 006C00710053006Eh
-; Total bytes of code 599, prolog size 34, PerfScore 86.77, instruction count 152, allocated bytes for code 599 (MethodHash=80c9e3ef) for method Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
+; Total bytes of code 602, prolog size 34, PerfScore 86.89, instruction count 151, allocated bytes for code 602 (MethodHash=80c9e3ef) for method Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -326,7 +320,7 @@ Unwind Info:
...
+3 (+0.50%) : 57433.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
@@ -15,39 +15,40 @@
;* V04 arg4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation>
;* V05 arg5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]>
; V06 loc0 [V06,T04] ( 6, 3.50) ref -> r14 class-hnd single-def <<unknown class>>
-; V07 loc1 [V07 ] ( 2, 1 ) ref -> [rsp+0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.MemberInfo>
-; V08 loc2 [V08 ] ( 1, 0.50) ref -> [rsp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
+; V07 loc1 [V07 ] ( 2, 1 ) ref -> [rsp+0x60] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.MemberInfo>
+; V08 loc2 [V08 ] ( 1, 0.50) ref -> [rsp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T14] ( 3, 1.50) ref -> rax
-; V11 tmp2 [V11 ] ( 2, 2 ) struct ( 8) [rsp+0x40] do-not-enreg[SB] "spilled call-like call argument" <System.Nullable`1[int]>
-; V12 tmp3 [V12,T08] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
+; V10 tmp1 [V10,T12] ( 3, 1.50) ref -> rax
+; V11 tmp2 [V11 ] ( 2, 2 ) struct ( 8) [rsp+0x50] do-not-enreg[SB] "spilled call-like call argument" <System.Nullable`1[int]>
+;* V12 tmp3 [V12 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Boolean>
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
-; V14 tmp5 [V14,T09] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
+; V14 tmp5 [V14,T08] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref
-; V16 tmp7 [V16,T15] ( 3, 1.50) ref -> rdx
+; V16 tmp7 [V16,T13] ( 3, 1.50) ref -> rdx
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
; V18 tmp9 [V18,T05] ( 2, 2 ) int -> rdx "spilling unroll qmark"
;* V19 tmp10 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
; V20 tmp11 [V20,T06] ( 2, 2 ) int -> rdx "spilling unroll qmark"
;* V21 tmp12 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
; V22 tmp13 [V22,T07] ( 2, 2 ) int -> rax "spilling unroll qmark"
-; V23 tmp14 [V23,T17] ( 5, 1.45) ref -> rdx class-hnd single-def "Inline return value spill temp" <System.Object>
-; V24 tmp15 [V24 ] ( 3, 1.50) ref -> [rsp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
-; V25 tmp16 [V25,T16] ( 2, 1 ) ubyte -> rbx "Inline return value spill temp"
-; V26 tmp17 [V26,T10] ( 3, 2.01) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Boolean>
-; V27 tmp18 [V27,T20] ( 3, 0.51) ubyte -> rbx "Inline return value spill temp"
-;* V28 tmp19 [V28,T22] ( 0, 0 ) int -> zero-ref "spilling qmarkNull"
-; V29 tmp20 [V29,T21] ( 2, 0.02) byref -> r15 single-def "Inlining Arg"
-; V30 tmp21 [V30,T11] ( 2, 2 ) ubyte -> [rsp+0x40] do-not-enreg[] "field V11.hasValue (fldOffset=0x0)" P-DEP
-; V31 tmp22 [V31,T12] ( 2, 2 ) int -> [rsp+0x44] do-not-enreg[] "field V11.value (fldOffset=0x4)" P-DEP
-;* V32 tmp23 [V32,T19] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V33 tmp24 [V33,T13] ( 2, 2 ) struct ( 8) [rsp+0x30] do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-; V34 cse0 [V34,T18] ( 4, 1 ) int -> r15 "CSE #01: moderate"
-; V35 rat0 [V35,T23] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V36 rat1 [V36,T24] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
-; V37 rat2 [V37,T25] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V23 tmp14 [V23,T15] ( 5, 1.45) ref -> rdx class-hnd single-def "Inline return value spill temp" <System.Object>
+; V24 tmp15 [V24 ] ( 3, 1.50) ref -> [rsp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
+; V25 tmp16 [V25,T14] ( 2, 1 ) ubyte -> r15 "Inline return value spill temp"
+;* V26 tmp17 [V26 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inlining Arg" <System.Boolean>
+; V27 tmp18 [V27,T18] ( 3, 0.51) ubyte -> r15 "Inline return value spill temp"
+;* V28 tmp19 [V28,T19] ( 0, 0 ) int -> zero-ref "spilling qmarkNull"
+;* V29 tmp20 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V30 tmp21 [V30 ] ( 4, 1.50) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,ubyte]>
+; V31 tmp22 [V31,T09] ( 2, 2 ) ubyte -> [rsp+0x50] do-not-enreg[] "field V11.hasValue (fldOffset=0x0)" P-DEP
+; V32 tmp23 [V32,T10] ( 2, 2 ) int -> [rsp+0x54] do-not-enreg[] "field V11.value (fldOffset=0x4)" P-DEP
+;* V33 tmp24 [V33,T17] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V34 tmp25 [V34,T11] ( 2, 2 ) struct ( 8) [rsp+0x30] do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+; V35 cse0 [V35,T16] ( 4, 1 ) int -> r15 "CSE #01: moderate"
+; V36 rat0 [V36,T20] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V37 rat1 [V37,T21] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V38 rat2 [V38,T22] ( 3, 3 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 88
+; Lcl frame size = 104
G_M7184_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -56,12 +57,12 @@ G_M7184_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 88
+ sub rsp, 104
xor eax, eax
mov qword ptr [rsp+0x38], rax
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x40], xmm4
- mov qword ptr [rsp+0x50], rax
+ vmovdqu ymmword ptr [rsp+0x40], ymm4
+ mov qword ptr [rsp+0x60], rax
mov rdi, rcx
; gcrRegs +[rdi]
mov rsi, rdx
@@ -120,7 +121,7 @@ G_M7184_IG06: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefReg
G_M7184_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi rdi r14]
vzeroupper
- add rsp, 88
+ add rsp, 104
pop rbx
pop rbp
pop rsi
@@ -137,11 +138,11 @@ G_M7184_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40E0
call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[rdx]
; gcr arg pop 0
- lea rcx, [rsp+0x48]
+ lea rcx, [rsp+0x58]
mov qword ptr [rsp+0x20], rcx
mov rcx, r14
; gcrRegs +[rcx]
- lea r9, [rsp+0x50]
+ lea r9, [rsp+0x60]
xor edx, edx
xor r8d, r8d
call [<unknown method>]
@@ -159,55 +160,49 @@ G_M7184_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40E0
;; size=69 bbWeight=0.50 PerfScore 7.00
G_M7184_IG09: ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rcx, gword ptr [rsp+0x50]
+ mov rcx, gword ptr [rsp+0x60]
; gcrRegs +[rcx]
call [System.Reflection.EntityFrameworkMemberInfoExtensions:GetMemberType(System.Reflection.MemberInfo):System.Type]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
;; size=11 bbWeight=0.50 PerfScore 2.00
G_M7184_IG10: ; bbWeight=0.50, gcrefRegs=40E1 {rax rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- cmp rax, rcx
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ cmp rax, rdx
jne SHORT G_M7184_IG14
- mov rcx, 0xD1FFAB1E ; System.Boolean
- ; gcrRegs -[rcx]
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- mov byte ptr [r15+0x08], 1
- lea rdx, [rsp+0x38]
+ mov rdx, 0xD1FFAB1E ; System.Boolean
+ ; gcrRegs -[rdx]
+ mov qword ptr [rsp+0x38], rdx
+ mov byte ptr [rsp+0x40], 1
+ lea rdx, [rsp+0x48]
mov rcx, r14
; gcrRegs +[rcx]
call [Microsoft.EntityFrameworkCore.RelationalPropertyExtensions:TryGetDefaultValue(Microsoft.EntityFrameworkCore.Metadata.IReadOnlyProperty,byref):ubyte]
; gcrRegs -[rax rcx]
; gcr arg pop 0
- mov rdx, gword ptr [rsp+0x38]
+ mov rdx, gword ptr [rsp+0x48]
; gcrRegs +[rdx]
xor rcx, rcx
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x38], rcx
- cmp r15, rdx
- je SHORT G_M7184_IG18
- ;; size=69 bbWeight=0.50 PerfScore 5.62
-G_M7184_IG11: ; bbWeight=0.45, gcrefRegs=C0E4 {rdx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov gword ptr [rsp+0x48], rcx
+ lea rcx, [rsp+0x38]
; gcrRegs -[rcx]
+ cmp rcx, rdx
+ je SHORT G_M7184_IG18
+ ;; size=71 bbWeight=0.50 PerfScore 5.75
+G_M7184_IG11: ; bbWeight=0.45, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
test rdx, rdx
je SHORT G_M7184_IG14
;; size=5 bbWeight=0.45 PerfScore 0.56
-G_M7184_IG12: ; bbWeight=0.01, gcrefRegs=C0E4 {rdx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
- add r15, 8
- ; gcrRegs -[r15]
- ; byrRegs +[r15]
+G_M7184_IG12: ; bbWeight=0.01, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Boolean
cmp qword ptr [rdx], rcx
je SHORT G_M7184_IG19
jmp SHORT G_M7184_IG16
- ;; size=21 bbWeight=0.01 PerfScore 0.03
+ ;; size=17 bbWeight=0.01 PerfScore 0.03
G_M7184_IG13: ; bbWeight=0.50, gcrefRegs=40C4 {rdx rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
- ; byrRegs -[r15]
mov rcx, rsi
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -226,8 +221,8 @@ G_M7184_IG14: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=00
call [rax+0x10]<unknown method>
; gcrRegs -[rcx rdx rdi r14]
; gcr arg pop 0
- mov qword ptr [rsp+0x40], rax
- mov rdx, qword ptr [rsp+0x40]
+ mov qword ptr [rsp+0x50], rax
+ mov rdx, qword ptr [rsp+0x50]
mov qword ptr [rsp+0x30], rdx
mov rcx, rsi
; gcrRegs +[rcx]
@@ -240,7 +235,7 @@ G_M7184_IG14: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=00
;; size=51 bbWeight=0.50 PerfScore 7.25
G_M7184_IG15: ; bbWeight=0.50, epilog, nogc, extend
vzeroupper
- add rsp, 88
+ add rsp, 104
pop rbx
pop rbp
pop rsi
@@ -251,12 +246,12 @@ G_M7184_IG15: ; bbWeight=0.50, epilog, nogc, extend
;; size=16 bbWeight=0.50 PerfScore 2.62
G_M7184_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbp rsi rdi r14]
- xor ebx, ebx
- ;; size=2 bbWeight=0.01 PerfScore 0.00
+ xor r15d, r15d
+ ;; size=3 bbWeight=0.01 PerfScore 0.00
G_M7184_IG17: ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- test ebx, ebx
+ test r15d, r15d
je SHORT G_M7184_IG14
- ;; size=4 bbWeight=0.50 PerfScore 0.62
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M7184_IG18: ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
test rbp, rbp
jne SHORT G_M7184_IG20
@@ -264,19 +259,18 @@ G_M7184_IG18: ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefReg
; gcrRegs +[rdx]
jmp SHORT G_M7184_IG13
;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M7184_IG19: ; bbWeight=0.00, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=8000 {r15}, byref, isz
- ; byrRegs +[r15]
- movzx rbx, byte ptr [r15]
+G_M7184_IG19: ; bbWeight=0.00, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ movzx rbx, byte ptr [rsp+0x40]
mov rcx, 0xD1FFAB1E ; System.Boolean
call CORINFO_HELP_UNBOX
; gcrRegs -[rdx]
- ; byrRegs -[r15] +[rax]
+ ; byrRegs +[rax]
; gcr arg pop 0
cmp bl, byte ptr [rax]
- sete bl
- movzx rbx, bl
+ sete r15b
+ movzx r15, r15b
jmp SHORT G_M7184_IG17
- ;; size=29 bbWeight=0.00 PerfScore 0.02
+ ;; size=32 bbWeight=0.00 PerfScore 0.02
G_M7184_IG20: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
; byrRegs -[rax]
@@ -313,7 +307,7 @@ RWD96 dq 0061006C00650052h, 006E006F00690074h, 0043003A006C0061h, 00750070006D
RWD128 dq 00750070006D006Fh, 0043006400650074h, 006D0075006C006Fh, 006C00710053006Eh
-; Total bytes of code 598, prolog size 34, PerfScore 86.76, instruction count 152, allocated bytes for code 598 (MethodHash=80c9e3ef) for method Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
+; Total bytes of code 601, prolog size 34, PerfScore 86.89, instruction count 151, allocated bytes for code 601 (MethodHash=80c9e3ef) for method Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -326,7 +320,7 @@ Unwind Info:
...
+41 (+0.86%) : 68108.dasm - Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator:ValidateNoCycles(Microsoft.EntityFrameworkCore.Metadata.IModel,Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1[Microsoft.EntityFrameworkCore.DbLoggerCategory+Model+Validation]):this (Tier1-OSR)
@@ -126,9 +126,9 @@
; V113 tmp103 [V113,T27] ( 6,209.56) int -> [rbp-0x5C] "impAppendStmt"
; V114 tmp104 [V114,T12] ( 12,314.32) int -> [rbp-0x60] "Inline stloc first use temp"
; V115 tmp105 [V115,T02] ( 34,484.31) int -> [rbp-0x64] "Inline stloc first use temp"
-; V116 tmp106 [V116,T53] ( 6,105.11) ref -> [rbp-0x88] class-hnd exact "impAppendStmt" <System.OrdinalCaseSensitiveComparer>
+; V116 tmp106 [V116,T53] ( 6,105.11) ref -> [rbp-0xA0] class-hnd exact "impAppendStmt" <System.OrdinalCaseSensitiveComparer>
; V117 tmp107 [V117,T17] ( 14,275.80) ref -> rcx class-hnd "spilling ret_expr" <System.__Canon>
-; V118 tmp108 [V118,T03] ( 24,482.12) ref -> [rbp-0x90] class-hnd exact "impAppendStmt" <System.String>
+; V118 tmp108 [V118,T03] ( 24,482.12) ref -> [rbp-0xA8] class-hnd exact "impAppendStmt" <System.String>
;* V119 tmp109 [V119 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling ret_expr" <System.__Canon>
; V120 tmp110 [V120,T04] ( 24,482.12) ref -> r10 class-hnd exact "spilling ret_expr" <System.String>
;* V121 tmp111 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.Internal.Property]>
@@ -154,77 +154,78 @@
; V141 tmp131 [V141,T33] ( 2,162.22) byref -> rcx "Inlining Arg"
;* V142 tmp132 [V142 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V143 tmp133 [V143,T95] ( 2, 0.50) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator+<>c>
-;* V144 tmp134 [V144 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
+;* V144 tmp134 [V144 ] ( 0, 0 ) byref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
; V145 tmp135 [V145,T92] ( 3, 0.60) ref -> r15 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V146 tmp136 [V146,T96] ( 2, 0.50) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.IEntityType]>
-;* V147 tmp137 [V147 ] ( 0, 0 ) ref -> zero-ref "field V77.key (fldOffset=0x0)" P-INDEP
-;* V148 tmp138 [V148 ] ( 0, 0 ) ref -> zero-ref "field V77.value (fldOffset=0x8)" P-INDEP
-;* V149 tmp139 [V149 ] ( 0, 0 ) ref -> zero-ref "field V79.key (fldOffset=0x0)" P-INDEP
-; V150 tmp140 [V150,T64] ( 3, 80.63) ref -> rbx "field V79.value (fldOffset=0x8)" P-INDEP
-;* V151 tmp141 [V151 ] ( 0, 0 ) ref -> zero-ref "field V81.key (fldOffset=0x0)" P-INDEP
-;* V152 tmp142 [V152 ] ( 0, 0 ) ref -> zero-ref "field V81.value (fldOffset=0x8)" P-INDEP
-;* V153 tmp143 [V153 ] ( 0, 0 ) int -> zero-ref "V69.[000..004)"
-; V154 tmp144 [V154,T21] ( 3,241.88) ref -> rdx "BlockOp address local"
-; V155 tmp145 [V155,T59] ( 3, 88.70) ref -> rcx "argument with side effect"
-; V156 tmp146 [V156,T58] ( 3, 96.10) ref -> rcx "argument with side effect"
-; V157 tmp147 [V157,T08] ( 6,369.00) ref -> rax "argument with side effect"
-; V158 tmp148 [V158,T16] ( 6,276.75) ref -> rax "argument with side effect"
-; V159 tmp149 [V159,T20] ( 4,246.00) ref -> rcx "argument with side effect"
-; V160 tmp150 [V160,T19] ( 9,255.43) ref -> rcx "arr expr"
-; V161 tmp151 [V161,T29] ( 9,198.67) ref -> r10 "arr expr"
-; V162 tmp152 [V162,T85] ( 4, 25.37) ref -> rax "argument with side effect"
-; V163 PSPSym [V163,T87] ( 1, 1 ) long -> [rbp-0x98] do-not-enreg[V] "PSPSym"
-; V164 cse0 [V164,T67] ( 5, 76.38) ref -> r12 multi-def "CSE #07: conservative"
-; V165 cse1 [V165,T46] ( 3,120.94) ref -> rdx "CSE #02: conservative"
-; V166 cse2 [V166,T18] ( 14,263.70) long -> [rbp-0x80] multi-def "CSE #18: moderate"
-; V167 cse3 [V167,T11] ( 9,319.12) long -> r13 multi-def "CSE #13: aggressive"
-; V168 cse4 [V168,T45] ( 3,121.43) long -> rsi "CSE #01: moderate"
-; V169 cse5 [V169,T43] ( 2,121.77) long -> rcx "CSE #15: moderate"
-; V170 rat0 [V170,T31] ( 3,181.41) ref -> rdx "Spilling to split statement for tree"
-; V171 rat1 [V171,T14] ( 5,302.36) ref -> rcx "replacement local"
-; V172 rat2 [V172,T55] ( 3,100.79) long -> rax "CSE for expectedClsNode"
-; V173 rat3 [V173,T32] ( 3,173.25) ref -> rdx "Spilling to split statement for tree"
-; V174 rat4 [V174,T15] ( 5,288.75) ref -> rax "replacement local"
-; V175 rat5 [V175,T57] ( 3, 96.25) long -> rcx "CSE for expectedClsNode"
-; V176 rat6 [V176,T68] ( 3, 72.07) ref -> rdx "Spilling to split statement for tree"
-; V177 rat7 [V177,T47] ( 5,120.12) ref -> r12 "replacement local"
-; V178 rat8 [V178,T72] ( 3, 40.04) long -> rcx "CSE for expectedClsNode"
-; V179 rat9 [V179,T69] ( 3, 66.53) ref -> rdx "Spilling to split statement for tree"
-; V180 rat10 [V180,T60] ( 3, 73.92) ref -> rcx "replacement local"
-; V181 rat11 [V181,T74] ( 3, 36.96) long -> rax "CSE for expectedClsNode"
-; V182 rat12 [V182,T05] ( 5,456.64) ref -> rcx "replacement local"
-; V183 rat13 [V183,T40] ( 3,152.21) long -> r8 "CSE for expectedClsNode"
-; V184 rat14 [V184,T79] ( 5, 4.61) ref -> rcx "replacement local"
-; V185 rat15 [V185,T83] ( 3, 1.54) long -> r8 "CSE for expectedClsNode"
+;* V146 tmp136 [V146 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.IEntityType]>
+; V147 tmp137 [V147 ] ( 2, 0.25) struct (24) [rbp-0x90] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.IEntityType]>
+;* V148 tmp138 [V148 ] ( 0, 0 ) ref -> zero-ref "field V77.key (fldOffset=0x0)" P-INDEP
+;* V149 tmp139 [V149 ] ( 0, 0 ) ref -> zero-ref "field V77.value (fldOffset=0x8)" P-INDEP
+;* V150 tmp140 [V150 ] ( 0, 0 ) ref -> zero-ref "field V79.key (fldOffset=0x0)" P-INDEP
+; V151 tmp141 [V151,T64] ( 3, 80.63) ref -> rbx "field V79.value (fldOffset=0x8)" P-INDEP
+;* V152 tmp142 [V152 ] ( 0, 0 ) ref -> zero-ref "field V81.key (fldOffset=0x0)" P-INDEP
+;* V153 tmp143 [V153 ] ( 0, 0 ) ref -> zero-ref "field V81.value (fldOffset=0x8)" P-INDEP
+;* V154 tmp144 [V154 ] ( 0, 0 ) int -> zero-ref "V69.[000..004)"
+; V155 tmp145 [V155,T21] ( 3,241.88) ref -> rdx "BlockOp address local"
+; V156 tmp146 [V156,T59] ( 3, 88.70) ref -> rcx "argument with side effect"
+; V157 tmp147 [V157,T58] ( 3, 96.10) ref -> rcx "argument with side effect"
+; V158 tmp148 [V158,T08] ( 6,369.00) ref -> rax "argument with side effect"
+; V159 tmp149 [V159,T16] ( 6,276.75) ref -> rax "argument with side effect"
+; V160 tmp150 [V160,T20] ( 4,246.00) ref -> rcx "argument with side effect"
+; V161 tmp151 [V161,T19] ( 9,255.43) ref -> rcx "arr expr"
+; V162 tmp152 [V162,T29] ( 9,198.67) ref -> r10 "arr expr"
+; V163 tmp153 [V163,T85] ( 4, 25.37) ref -> rax "argument with side effect"
+; V164 PSPSym [V164,T87] ( 1, 1 ) long -> [rbp-0xB8] do-not-enreg[V] "PSPSym"
+; V165 cse0 [V165,T67] ( 5, 76.38) ref -> r12 multi-def "CSE #07: conservative"
+; V166 cse1 [V166,T46] ( 3,120.94) ref -> rdx "CSE #02: conservative"
+; V167 cse2 [V167,T18] ( 14,263.70) long -> [rbp-0x98] multi-def "CSE #18: moderate"
+; V168 cse3 [V168,T11] ( 9,319.12) long -> r13 multi-def "CSE #13: aggressive"
+; V169 cse4 [V169,T45] ( 3,121.43) long -> rsi "CSE #01: moderate"
+; V170 cse5 [V170,T43] ( 2,121.77) long -> rcx "CSE #15: moderate"
+; V171 cse6 [V171,T96] ( 3, 0.25) long -> rcx "CSE #45: conservative"
+; V172 rat0 [V172,T31] ( 3,181.41) ref -> rdx "Spilling to split statement for tree"
+; V173 rat1 [V173,T14] ( 5,302.36) ref -> rcx "replacement local"
+; V174 rat2 [V174,T55] ( 3,100.79) long -> rax "CSE for expectedClsNode"
+; V175 rat3 [V175,T32] ( 3,173.25) ref -> rdx "Spilling to split statement for tree"
+; V176 rat4 [V176,T15] ( 5,288.75) ref -> rax "replacement local"
+; V177 rat5 [V177,T57] ( 3, 96.25) long -> rcx "CSE for expectedClsNode"
+; V178 rat6 [V178,T68] ( 3, 72.07) ref -> rdx "Spilling to split statement for tree"
+; V179 rat7 [V179,T47] ( 5,120.12) ref -> r12 "replacement local"
+; V180 rat8 [V180,T72] ( 3, 40.04) long -> rcx "CSE for expectedClsNode"
+; V181 rat9 [V181,T69] ( 3, 66.53) ref -> rdx "Spilling to split statement for tree"
+; V182 rat10 [V182,T60] ( 3, 73.92) ref -> rcx "replacement local"
+; V183 rat11 [V183,T74] ( 3, 36.96) long -> rax "CSE for expectedClsNode"
+; V184 rat12 [V184,T05] ( 5,456.64) ref -> rcx "replacement local"
+; V185 rat13 [V185,T40] ( 3,152.21) long -> r8 "CSE for expectedClsNode"
+; V186 rat14 [V186,T79] ( 5, 4.61) ref -> rcx "replacement local"
+; V187 rat15 [V187,T83] ( 3, 1.54) long -> r8 "CSE for expectedClsNode"
;
-; Lcl frame size = 136
+; Lcl frame size = 168
G_M44394_IG01: ; bbWeight=1.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 192
- mov qword ptr [rsp+0x308], r15
- mov qword ptr [rsp+0x300], r14
- mov qword ptr [rsp+0x2F8], r13
- mov qword ptr [rsp+0x2F0], r12
- mov qword ptr [rsp+0x2E8], rdi
- mov qword ptr [rsp+0x2E0], rsi
- mov qword ptr [rsp+0x2D8], rbx
- lea rbp, [rsp+0xC0]
- xor eax, eax
- mov qword ptr [rbp-0x78], rax
+ sub rsp, 224
+ mov qword ptr [rsp+0x328], r15
+ mov qword ptr [rsp+0x320], r14
+ mov qword ptr [rsp+0x318], r13
+ mov qword ptr [rsp+0x310], r12
+ mov qword ptr [rsp+0x308], rdi
+ mov qword ptr [rsp+0x300], rsi
+ mov qword ptr [rsp+0x2F8], rbx
+ lea rbp, [rsp+0xE0]
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x70], ymm4
+ vmovdqu32 zmmword ptr [rbp-0x90], zmm4
vmovdqa xmmword ptr [rbp-0x50], xmm4
+ xor eax, eax
mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0x98], rsp
+ mov qword ptr [rbp-0xB8], rsp
mov r15, gword ptr [rbp+0x210]
; gcrRegs +[r15]
mov rbx, gword ptr [rbp+0x200]
; gcrRegs +[rbx]
mov r14, gword ptr [rbp+0x1F8]
; gcrRegs +[r14]
- ;; size=128 bbWeight=1.24 PerfScore 30.21
+ ;; size=129 bbWeight=1.24 PerfScore 28.96
G_M44394_IG02: ; bbWeight=39.50, gcVars=00000000000000000000100000000080 {V04 V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V04 V07}
cmp gword ptr [rbp+0x1F0], 0
@@ -355,18 +356,18 @@ G_M44394_IG13: ; bbWeight=51.87, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14
test r13, r13
je G_M44394_IG03
mov rax, 0xD1FFAB1E ; System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.Internal.Property]
- mov qword ptr [rbp-0x80], rax
+ mov qword ptr [rbp-0x98], rax
cmp qword ptr [rdi], rax
jne G_M44394_IG24
- ;; size=41 bbWeight=51.87 PerfScore 401.96
+ ;; size=44 bbWeight=51.87 PerfScore 401.96
G_M44394_IG14: ; bbWeight=46.68, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov edx, dword ptr [rdi+0x10]
;; size=3 bbWeight=46.68 PerfScore 93.36
G_M44394_IG15: ; bbWeight=51.87, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
- mov rax, qword ptr [rbp-0x80]
+ mov rax, qword ptr [rbp-0x98]
cmp qword ptr [r13], rax
jne G_M44394_IG25
- ;; size=14 bbWeight=51.87 PerfScore 259.33
+ ;; size=17 bbWeight=51.87 PerfScore 259.33
G_M44394_IG16: ; bbWeight=31.12, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r13+0x10]
;; size=4 bbWeight=31.12 PerfScore 62.24
@@ -377,11 +378,11 @@ G_M44394_IG17: ; bbWeight=51.87, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14
;; size=12 bbWeight=51.87 PerfScore 77.80
G_M44394_IG18: ; bbWeight=51.52, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
xor edx, edx
- mov rax, qword ptr [rbp-0x80]
+ mov rax, qword ptr [rbp-0x98]
cmp qword ptr [rdi], rax
jne G_M44394_IG39
jmp SHORT G_M44394_IG20
- ;; size=17 bbWeight=51.52 PerfScore 373.50
+ ;; size=20 bbWeight=51.52 PerfScore 373.50
G_M44394_IG19: ; bbWeight=51.51, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov r9d, r10d
mov edx, dword ptr [rbp-0x64]
@@ -403,7 +404,7 @@ G_M44394_IG22: ; bbWeight=51.51, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14
mov rcx, 0xD1FFAB1E ; const ptr
mov r11, gword ptr [rcx]
; gcrRegs +[r11]
- mov gword ptr [rbp-0x88], r11
+ mov gword ptr [rbp-0xA0], r11
; GC ptr vars +{V116}
cmp edx, dword ptr [rdi+0x10]
jb SHORT G_M44394_IG26
@@ -457,10 +458,10 @@ G_M44394_IG26: ; bbWeight=41.72, gcVars=00000000000000000020100000000080
;; size=43 bbWeight=41.72 PerfScore 646.72
G_M44394_IG27: ; bbWeight=51.51, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov rax, qword ptr [rbp-0x80]
+ mov rax, qword ptr [rbp-0x98]
cmp qword ptr [r13], rax
jne G_M44394_IG35
- ;; size=14 bbWeight=51.51 PerfScore 257.56
+ ;; size=17 bbWeight=51.51 PerfScore 257.56
G_M44394_IG28: ; bbWeight=32.45, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov edx, dword ptr [rbp-0x64]
cmp edx, dword ptr [r13+0x10]
@@ -473,9 +474,9 @@ G_M44394_IG29: ; bbWeight=9.79, gcrefRegs=F0CA {rcx rbx rsi rdi r12 r13 r
call [r11]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x90], rax
+ mov gword ptr [rbp-0xA8], rax
; GC ptr vars +{V118}
- mov r8, gword ptr [rbp-0x90]
+ mov r8, gword ptr [rbp-0xA8]
; gcrRegs +[r8]
jmp SHORT G_M44394_IG27
;; size=29 bbWeight=9.79 PerfScore 70.96
@@ -528,7 +529,7 @@ G_M44394_IG34: ; bbWeight=51.51, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14
G_M44394_IG35: ; bbWeight=19.06, gcVars=00000000000000000020100000000080 {V04 V07 V116}, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r8]
; GC ptr vars +{V116}
- mov gword ptr [rbp-0x90], r8
+ mov gword ptr [rbp-0xA8], r8
; GC ptr vars +{V118}
mov rcx, r13
; gcrRegs +[rcx]
@@ -540,7 +541,7 @@ G_M44394_IG35: ; bbWeight=19.06, gcVars=00000000000000000020100000000080
mov rcx, rax
; gcrRegs +[rcx]
mov edx, dword ptr [rbp-0x64]
- mov r8, gword ptr [rbp-0x90]
+ mov r8, gword ptr [rbp-0xA8]
; gcrRegs +[r8]
jmp SHORT G_M44394_IG31
;; size=41 bbWeight=19.06 PerfScore 185.83
@@ -573,10 +574,10 @@ G_M44394_IG39: ; bbWeight=1.04, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r
jne SHORT G_M44394_IG43
;; size=9 bbWeight=1.04 PerfScore 2.33
G_M44394_IG40: ; bbWeight=0.70, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rax, qword ptr [rbp-0x80]
+ mov rax, qword ptr [rbp-0x98]
cmp qword ptr [rdi], rax
jne SHORT G_M44394_IG46
- ;; size=9 bbWeight=0.70 PerfScore 3.50
+ ;; size=12 bbWeight=0.70 PerfScore 3.50
G_M44394_IG41: ; bbWeight=0.67, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov r9d, dword ptr [rdi+0x10]
;; size=4 bbWeight=0.67 PerfScore 1.34
@@ -596,12 +597,12 @@ G_M44394_IG44: ; bbWeight=0.52, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r
...
+13 (+13.27%) : 111186.dasm - System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (FullOpts)
@@ -8,42 +8,48 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]>
+; V00 this [V00,T01] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]>
; V01 arg1 [V01,T00] ( 3, 6 ) byref -> rdx single-def
-; V02 arg2 [V02,T01] ( 4, 3 ) byref -> rbx single-def
+; V02 arg2 [V02,T02] ( 4, 3 ) byref -> rsi single-def
; V03 loc0 [V03,T04] ( 3, 2.50) ref -> rax class-hnd exact single-def <System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def <System.__Canon>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.ValueTuple`2[System.__Canon,System.__Canon]>
+;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.ValueTuple`2[System.__Canon,System.__Canon]>
; V08 tmp2 [V08,T03] ( 2, 4 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]]>
; V09 tmp3 [V09 ] ( 3, 6 ) struct (24) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]>
;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.ValueTuple`2[System.__Canon,System.__Canon]>
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
-;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref "field V01.Item1 (fldOffset=0x0)" P-INDEP
-;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref "field V01.Item2 (fldOffset=0x8)" P-INDEP
-; V16 tmp10 [V16,T05] ( 2, 1 ) ref -> rdx single-def "V05.[000..008)"
-;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ValueTuple`2[System.__Canon,System.__Canon]>
+;* V14 tmp8 [V14 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.ValueTuple`2[System.__Canon,System.__Canon]]>
+;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref "field V01.Item1 (fldOffset=0x0)" P-INDEP
+;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref "field V01.Item2 (fldOffset=0x8)" P-INDEP
+; V17 tmp11 [V17,T05] ( 2, 1 ) ref -> rdx single-def "V05.[000..008)"
+;* V18 tmp12 [V18 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ValueTuple`2[System.__Canon,System.__Canon]>
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M60350_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push rsi
push rbx
- sub rsp, 64
+ sub rsp, 72
vxorps xmm4, xmm4, xmm4
vmovdqu xmmword ptr [rsp+0x28], xmm4
xor eax, eax
mov qword ptr [rsp+0x38], rax
- mov rbx, r8
- ; byrRegs +[rbx]
- ;; size=25 bbWeight=1 PerfScore 5.08
-G_M60350_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=000C {rdx rbx}, byref
- ; gcrRegs +[rcx]
+ mov qword ptr [rsp+0x40], rcx
+ mov rbx, rcx
+ ; gcrRegs +[rbx]
+ mov rsi, r8
+ ; byrRegs +[rsi]
+ ;; size=34 bbWeight=1 PerfScore 7.33
+G_M60350_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0044 {rdx rsi}, byref
; byrRegs +[rdx]
- mov rcx, gword ptr [rcx+0x18]
- ;; size=4 bbWeight=1 PerfScore 2.00
+ cmp dword ptr [rbx], ebx
+ mov rcx, gword ptr [rbx+0x18]
+ ; gcrRegs +[rcx]
+ ;; size=6 bbWeight=1 PerfScore 5.00
G_M60350_IG03: ; bbWeight=1, nogc, extend
vmovdqu xmm0, xmmword ptr [rdx]
vmovdqu xmmword ptr [rsp+0x30], xmm0
@@ -62,38 +68,40 @@ G_M60350_IG04: ; bbWeight=1, isz, extend
test rax, rax
jne SHORT G_M60350_IG07
;; size=25 bbWeight=1 PerfScore 9.00
-G_M60350_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M60350_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
- mov gword ptr [rbx], rax
+ mov gword ptr [rsi], rax
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M60350_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M60350_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
- ; byrRegs -[rbx]
- add rsp, 64
+ ; byrRegs -[rsi]
+ add rsp, 72
pop rbx
+ pop rsi
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M60350_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, gcvars, byref
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M60350_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0009 {rax rbx}, byrefRegs=0040 {rsi}, gcvars, byref
; gcrRegs +[rax]
- ; byrRegs +[rbx]
+ ; byrRegs +[rsi]
mov rdx, gword ptr [rax+0x20]
; gcrRegs +[rdx]
- mov rcx, rbx
+ mov rcx, rsi
; byrRegs +[rcx]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rax rdx]
- ; byrRegs -[rcx rbx]
+ ; byrRegs -[rcx rsi]
mov eax, 1
;; size=17 bbWeight=0.50 PerfScore 1.75
G_M60350_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 64
+ add rsp, 72
pop rbx
+ pop rsi
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 98, prolog size 22, PerfScore 25.21, instruction count 29, allocated bytes for code 98 (MethodHash=78e81441) for method System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (FullOpts)
+; Total bytes of code 111, prolog size 28, PerfScore 30.96, instruction count 35, allocated bytes for code 111 (MethodHash=78e81441) for method System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -101,10 +109,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x06
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
benchmarks.run.windows.x64.checked.mch
-14 (-0.71%) : 6664.dasm - Sigil.Impl.ReturnTracer:TraceFrom(int,Sigil.Impl.LinqList`1[Sigil.Label],Sigil.Impl.LinqHashSet`1[Sigil.Label]):Sigil.Impl.ReturnTracerResult:this (FullOpts)
@@ -9,122 +9,123 @@
; Final local variable assignments
;
; V00 this [V00,T05] ( 16, 18.50) ref -> rbx this class-hnd single-def <Sigil.Impl.ReturnTracer>
-; V01 arg1 [V01,T44] ( 3, 3 ) int -> r14 single-def
+; V01 arg1 [V01,T43] ( 3, 3 ) int -> r14 single-def
; V02 arg2 [V02,T13] ( 7, 10.50) ref -> rdi class-hnd single-def <Sigil.Impl.LinqList`1[Sigil.Label]>
; V03 arg3 [V03,T10] ( 7, 14 ) ref -> rsi class-hnd single-def <Sigil.Impl.LinqHashSet`1[Sigil.Label]>
; V04 loc0 [V04,T09] ( 17, 16 ) ref -> r15 class-hnd exact single-def <Sigil.Impl.ReturnTracer+<>c__DisplayClass7_0>
-; V05 loc1 [V05,T89] ( 2, 1 ) ref -> rax ld-addr-op class-hnd <Sigil.Impl.ReturnTracerResult>
-; V06 loc2 [V06,T90] ( 2, 1 ) int -> r14 single-def
-; V07 loc3 [V07,T91] ( 2, 1 ) int -> rax single-def
-; V08 loc4 [V08,T33] ( 5, 7 ) ref -> r14 class-hnd exact single-def <Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]>
-; V09 loc5 [V09,T22] ( 7, 9 ) ref -> [rbp-0x58] class-hnd EH-live spill-single-def <<unknown class>>
-; V10 loc6 [V10,T06] ( 8, 20 ) ref -> r13 class-hnd <Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]>
+; V05 loc1 [V05,T87] ( 2, 1 ) ref -> rax ld-addr-op class-hnd <Sigil.Impl.ReturnTracerResult>
+; V06 loc2 [V06,T88] ( 2, 1 ) int -> r14 single-def
+; V07 loc3 [V07,T89] ( 2, 1 ) int -> rax single-def
+;* V08 loc4 [V08,T92] ( 0, 0 ) long -> zero-ref class-hnd exact single-def <Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]>
+; V09 loc5 [V09,T22] ( 7, 9 ) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <<unknown class>>
+; V10 loc6 [V10,T06] ( 8, 20 ) ref -> r14 class-hnd <Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]>
;* V11 loc7 [V11 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Emit.OpCode>
;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref
-; V13 loc9 [V13,T51] ( 2, 4 ) int -> [rbp-0x3C] spill-single-def
-; V14 loc10 [V14,T21] ( 5, 10 ) ref -> [rbp-0x60] class-hnd spill-single-def <Sigil.Impl.ReturnTracerResult>
-; V15 loc11 [V15,T50] ( 2, 4 ) ref -> r13 class-hnd <Sigil.Impl.ReturnTracerResult>
+; V13 loc9 [V13,T50] ( 2, 4 ) int -> [rbp-0x3C] spill-single-def
+; V14 loc10 [V14,T21] ( 5, 10 ) ref -> [rbp-0x68] class-hnd spill-single-def <Sigil.Impl.ReturnTracerResult>
+; V15 loc11 [V15,T49] ( 2, 4 ) ref -> r14 class-hnd <Sigil.Impl.ReturnTracerResult>
; V16 OutArgs [V16 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V17 tmp1 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Sigil.Impl.ReturnTracer+<>c__DisplayClass7_0>
-; V18 tmp2 [V18,T45] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V19 tmp3 [V19,T56] ( 3, 3 ) ref -> r13 class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]]>
-; V20 tmp4 [V20,T75] ( 2, 2 ) ref -> r13 class-hnd exact single-def "dup spill" <Sigil.Impl.SigilFunc`2[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int],int]>
-; V21 tmp5 [V21,T57] ( 3, 3 ) ref -> r14 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V18 tmp2 [V18,T44] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp3 [V19,T55] ( 3, 3 ) ref -> r13 class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]]>
+; V20 tmp4 [V20,T73] ( 2, 2 ) ref -> r13 class-hnd exact single-def "dup spill" <Sigil.Impl.SigilFunc`2[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int],int]>
+; V21 tmp5 [V21,T56] ( 3, 3 ) ref -> r14 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V22 tmp6 [V22 ] ( 0, 0 ) ref -> zero-ref single-def
;* V23 tmp7 [V23 ] ( 0, 0 ) ref -> zero-ref single-def
-; V24 tmp8 [V24,T73] ( 4, 2 ) ref -> r13
-; V25 tmp9 [V25,T76] ( 2, 2 ) ref -> r13 class-hnd exact single-def "dup spill" <Sigil.Impl.SigilFunc`2[Sigil.Impl.IGrouping`2[int,Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]],int]>
-; V26 tmp10 [V26,T58] ( 3, 3 ) ref -> r14 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V24 tmp8 [V24,T71] ( 4, 2 ) ref -> r13
+; V25 tmp9 [V25,T74] ( 2, 2 ) ref -> r13 class-hnd exact single-def "dup spill" <Sigil.Impl.SigilFunc`2[Sigil.Impl.IGrouping`2[int,Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]],int]>
+; V26 tmp10 [V26,T57] ( 3, 3 ) ref -> r14 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V27 tmp11 [V27 ] ( 0, 0 ) ref -> zero-ref single-def
;* V28 tmp12 [V28 ] ( 0, 0 ) ref -> zero-ref single-def
-; V29 tmp13 [V29,T74] ( 4, 2 ) ref -> r13
-; V30 tmp14 [V30,T46] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[int,ubyte]>
-; V31 tmp15 [V31,T59] ( 3, 3 ) ref -> r13 class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[int]>
-; V32 tmp16 [V32,T47] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[int,ubyte]>
-; V33 tmp17 [V33,T60] ( 3, 3 ) ref -> r12 class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[int]>
-; V34 tmp18 [V34,T61] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]>
+; V29 tmp13 [V29,T72] ( 4, 2 ) ref -> r13
+; V30 tmp14 [V30,T45] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[int,ubyte]>
+; V31 tmp15 [V31,T58] ( 3, 3 ) ref -> r13 class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[int]>
+; V32 tmp16 [V32,T46] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[int,ubyte]>
+; V33 tmp17 [V33,T59] ( 3, 3 ) ref -> r12 class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[int]>
+;* V34 tmp18 [V34 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]>
; V35 tmp19 [V35,T28] ( 2, 8 ) ref -> rcx class-hnd "impAppendStmt" <Sigil.Impl.LinqDictionary`2[Sigil.Label,int]>
-; V36 tmp20 [V36,T11] ( 4, 16 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "dup spill" <<unknown class>>
-; V37 tmp21 [V37,T14] ( 3, 12 ) ref -> r12 class-hnd "impSpillLclRefs" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-; V38 tmp22 [V38,T29] ( 2, 8 ) int -> [rbp-0x40] spill-single-def "impSpillLclRefs"
-; V39 tmp23 [V39,T12] ( 4, 16 ) ref -> r13 class-hnd "dup spill" <Sigil.Impl.ReturnTracerResult>
+; V36 tmp20 [V36,T11] ( 4, 16 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "dup spill" <<unknown class>>
+; V37 tmp21 [V37,T14] ( 3, 12 ) ref -> r13 class-hnd "impSpillLclRefs" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+; V38 tmp22 [V38,T29] ( 2, 8 ) int -> r12 "impSpillLclRefs"
+; V39 tmp23 [V39,T12] ( 4, 16 ) ref -> r14 class-hnd "dup spill" <Sigil.Impl.ReturnTracerResult>
; V40 tmp24 [V40,T15] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
; V41 tmp25 [V41,T30] ( 2, 8 ) int -> rdx "impAppendStmt"
-; V42 tmp26 [V42,T16] ( 3, 12 ) ref -> r13 class-hnd "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-; V43 tmp27 [V43,T31] ( 2, 8 ) int -> r12 "impAppendStmt"
+; V42 tmp26 [V42,T16] ( 3, 12 ) ref -> r14 class-hnd "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+; V43 tmp27 [V43,T31] ( 2, 8 ) int -> r13 "impAppendStmt"
;* V44 tmp28 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <Sigil.Impl.ReturnTracerResult>
-; V45 tmp29 [V45,T62] ( 3, 3 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-; V46 tmp30 [V46,T85] ( 2, 2 ) int -> rsi "impAppendStmt"
-; V47 tmp31 [V47,T63] ( 3, 3 ) ref -> rdi class-hnd single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
-; V48 tmp32 [V48,T64] ( 3, 3 ) ref -> rsi class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-; V49 tmp33 [V49,T86] ( 2, 2 ) int -> r15 "impAppendStmt"
-; V50 tmp34 [V50,T65] ( 3, 3 ) ref -> rbx class-hnd single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
-; V51 tmp35 [V51,T66] ( 3, 3 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-; V52 tmp36 [V52,T87] ( 2, 2 ) int -> r15 "impAppendStmt"
+; V45 tmp29 [V45,T60] ( 3, 3 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+; V46 tmp30 [V46,T83] ( 2, 2 ) int -> rsi "impAppendStmt"
+; V47 tmp31 [V47,T61] ( 3, 3 ) ref -> rdi class-hnd single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
+; V48 tmp32 [V48,T62] ( 3, 3 ) ref -> rsi class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+; V49 tmp33 [V49,T84] ( 2, 2 ) int -> r15 "impAppendStmt"
+; V50 tmp34 [V50,T63] ( 3, 3 ) ref -> rbx class-hnd single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
+; V51 tmp35 [V51,T64] ( 3, 3 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+; V52 tmp36 [V52,T85] ( 2, 2 ) int -> r15 "impAppendStmt"
;* V53 tmp37 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
-; V54 tmp38 [V54,T67] ( 3, 3 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-; V55 tmp39 [V55,T88] ( 2, 2 ) int -> r15 "impAppendStmt"
+; V54 tmp38 [V54,T65] ( 3, 3 ) ref -> rbx class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+; V55 tmp39 [V55,T86] ( 2, 2 ) int -> r15 "impAppendStmt"
;* V56 tmp40 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
-; V57 tmp41 [V57,T42] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[Sigil.Impl.IGrouping`2[int,Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]],int]>
-; V58 tmp42 [V58,T43] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int],int]>
-;* V59 tmp43 [V59,T92] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V60 tmp44 [V60,T34] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-; V61 tmp45 [V61,T52] ( 2, 4 ) int -> rdx "Inlining Arg"
-; V62 tmp46 [V62,T72] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp"
-; V63 tmp47 [V63,T77] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Sigil.Impl.ReturnTracer+<>c>
-; V64 tmp48 [V64,T78] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Sigil.Impl.ReturnTracer+<>c>
-; V65 tmp49 [V65,T68] ( 3, 3 ) ref -> rax class-hnd single-def "Inlining Arg" <Sigil.Impl.LinqRoot`1[System.__Canon]>
+; V57 tmp41 [V57,T41] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[Sigil.Impl.IGrouping`2[int,Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]],int]>
+; V58 tmp42 [V58,T42] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int],int]>
+;* V59 tmp43 [V59,T90] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V60 tmp44 [V60,T33] ( 3, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+; V61 tmp45 [V61,T51] ( 2, 4 ) int -> rdx "Inlining Arg"
+; V62 tmp46 [V62,T70] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp"
+; V63 tmp47 [V63,T75] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Sigil.Impl.ReturnTracer+<>c>
+; V64 tmp48 [V64,T76] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Sigil.Impl.ReturnTracer+<>c>
+; V65 tmp49 [V65,T66] ( 3, 3 ) ref -> rax class-hnd single-def "Inlining Arg" <Sigil.Impl.LinqRoot`1[System.__Canon]>
;* V66 tmp50 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Impl.LinqRoot`1[int]>
;* V67 tmp51 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Impl.LinqRoot`1[int]>
-; V68 tmp52 [V68,T48] ( 4, 4 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
-; V69 tmp53 [V69,T49] ( 4, 4 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
-; V70 tmp54 [V70,T69] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V68 tmp52 [V68,T47] ( 4, 4 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
+; V69 tmp53 [V69,T48] ( 4, 4 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
+; V70 tmp54 [V70,T67] ( 3, 3 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V71 tmp55 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
-; V72 tmp56 [V72,T07] ( 5, 20 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
+; V72 tmp56 [V72,T07] ( 5, 20 ) ref -> r12 class-hnd exact "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
;* V73 tmp57 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V74 tmp58 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Impl.ReturnTracerResult>
; V75 tmp59 [V75,T00] ( 7, 28 ) ref -> rcx class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V76 tmp60 [V76,T35] ( 3, 6 ) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V76 tmp60 [V76,T34] ( 3, 6 ) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
; V77 tmp61 [V77,T23] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
; V78 tmp62 [V78,T27] ( 3, 8 ) ref -> [rbp-0x78] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
-; V79 tmp63 [V79,T53] ( 2, 4 ) int -> [rbp-0x44] spill-single-def "Inline return value spill temp"
+; V79 tmp63 [V79,T52] ( 2, 4 ) int -> [rbp-0x40] spill-single-def "Inline return value spill temp"
; V80 tmp64 [V80,T17] ( 3, 12 ) ref -> rcx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-; V81 tmp65 [V81,T36] ( 3, 6 ) byref -> rax "Inline stloc first use temp"
+; V81 tmp65 [V81,T35] ( 3, 6 ) byref -> rax "Inline stloc first use temp"
;* V82 tmp66 [V82 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V83 tmp67 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
; V84 tmp68 [V84,T18] ( 3, 12 ) ref -> r8 class-hnd "Inlining Arg" <System.__Canon>
; V85 tmp69 [V85,T03] ( 6, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V86 tmp70 [V86,T37] ( 3, 6 ) ref -> r9 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V86 tmp70 [V86,T36] ( 3, 6 ) ref -> r9 class-hnd "Inline stloc first use temp" <<unknown class>>
; V87 tmp71 [V87,T24] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
;* V88 tmp72 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
;* V89 tmp73 [V89 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V90 tmp74 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Impl.ReturnTracerResult>
; V91 tmp75 [V91,T01] ( 7, 28 ) ref -> rcx class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V92 tmp76 [V92,T38] ( 3, 6 ) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V92 tmp76 [V92,T37] ( 3, 6 ) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
; V93 tmp77 [V93,T25] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
;* V94 tmp78 [V94 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V95 tmp79 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Sigil.Impl.ReturnTracerResult>
; V96 tmp80 [V96,T02] ( 7, 28 ) ref -> rcx class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V97 tmp81 [V97,T39] ( 3, 6 ) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V97 tmp81 [V97,T38] ( 3, 6 ) ref -> r8 class-hnd "Inline stloc first use temp" <<unknown class>>
; V98 tmp82 [V98,T26] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
-; V99 tmp83 [V99,T32] ( 6, 7 ) ref -> rax "Single return block return value"
-; V100 tmp84 [V100,T54] ( 2, 4 ) int -> r12 "field V11.m_value (fldOffset=0x0)" P-INDEP
-; V101 tmp85 [V101,T55] ( 2, 4 ) int -> [rbp-0x48] spill-single-def "field V11.m_flags (fldOffset=0x4)" P-INDEP
-; V102 tmp86 [V102,T79] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V103 tmp87 [V103,T80] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V104 tmp88 [V104,T81] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V105 tmp89 [V105,T82] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V106 tmp90 [V106,T83] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V107 tmp91 [V107,T70] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V108 tmp92 [V108,T84] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V109 tmp93 [V109,T71] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V110 tmp94 [V110,T04] ( 3, 24 ) ref -> rcx "argument with side effect"
-; V111 tmp95 [V111,T19] ( 3, 12 ) ref -> rcx "argument with side effect"
-; V112 tmp96 [V112,T20] ( 3, 12 ) struct ( 8) [rbp-0x50] do-not-enreg[SF] "by-value struct argument" <System.Reflection.Emit.OpCode>
-; V113 PSPSym [V113,T93] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
-; V114 cse0 [V114,T41] ( 3, 6 ) int -> rdx "CSE #12: conservative"
-; V115 cse1 [V115,T40] ( 3, 6 ) ref -> rcx "CSE #11: conservative"
-; V116 cse2 [V116,T08] ( 9, 18 ) ref -> [rbp-0x80] multi-def "CSE #10: aggressive"
+; V99 tmp83 [V99 ] ( 6, 7.50) struct (16) [rbp-0x50] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]>
+; V100 tmp84 [V100,T32] ( 6, 7 ) ref -> rax "Single return block return value"
+; V101 tmp85 [V101,T53] ( 2, 4 ) int -> r12 "field V11.m_value (fldOffset=0x0)" P-INDEP
+; V102 tmp86 [V102,T54] ( 2, 4 ) int -> r13 "field V11.m_flags (fldOffset=0x4)" P-INDEP
+; V103 tmp87 [V103,T77] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V104 tmp88 [V104,T78] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V105 tmp89 [V105,T79] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V106 tmp90 [V106,T80] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V107 tmp91 [V107,T81] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V108 tmp92 [V108,T68] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V109 tmp93 [V109,T82] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V110 tmp94 [V110,T69] ( 3, 3 ) ref -> rax single-def "argument with side effect"
+; V111 tmp95 [V111,T04] ( 3, 24 ) ref -> rcx "argument with side effect"
+; V112 tmp96 [V112,T19] ( 3, 12 ) ref -> rcx "argument with side effect"
+; V113 tmp97 [V113,T20] ( 3, 12 ) struct ( 8) [rbp-0x58] do-not-enreg[SF] "by-value struct argument" <System.Reflection.Emit.OpCode>
+; V114 PSPSym [V114,T91] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
+; V115 cse0 [V115,T40] ( 3, 6 ) int -> rdx "CSE #12: conservative"
+; V116 cse1 [V116,T39] ( 3, 6 ) ref -> rcx "CSE #11: conservative"
+; V117 cse2 [V117,T08] ( 9, 18 ) ref -> [rbp-0x80] multi-def "CSE #10: aggressive"
;
; Lcl frame size = 120
@@ -139,6 +140,9 @@ G_M25496_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 120
lea rbp, [rsp+0xB0]
+ xor eax, eax
+ mov qword ptr [rbp-0x50], rax
+ mov qword ptr [rbp-0x48], rax
mov qword ptr [rbp-0x90], rsp
mov rbx, rcx
; gcrRegs +[rbx]
@@ -147,7 +151,7 @@ G_M25496_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rdi]
mov rsi, r9
; gcrRegs +[rsi]
- ;; size=43 bbWeight=1 PerfScore 10.75
+ ;; size=53 bbWeight=1 PerfScore 13.00
G_M25496_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; Sigil.Impl.ReturnTracer+<>c__DisplayClass7_0
call CORINFO_HELP_NEWSFAST
@@ -504,46 +508,37 @@ G_M25496_IG09: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
G_M25496_IG10: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] +[rsi rdi r15]
mov rcx, 0xD1FFAB1E ; Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]
+ mov qword ptr [rbp-0x50], rcx
+ mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
test byte ptr [(reloc)], 1 ; global ptr
je G_M25496_IG29
- ;; size=49 bbWeight=0.50 PerfScore 3.50
-G_M25496_IG11: ; bbWeight=0.50, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=45 bbWeight=0.50 PerfScore 3.38
+G_M25496_IG11: ; bbWeight=0.50, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rdx, gword ptr [rcx]
; gcrRegs +[rdx]
- lea rcx, bword ptr [r13+0x08]
+ lea rcx, bword ptr [r14+0x08]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx]
...
+0 (0.00%) : 11698.dasm - System.Collections.Generic.SortedList`2[int,int]:IndexOfKey(int):int:this (FullOpts)
@@ -12,8 +12,9 @@
; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx single-def
; V02 loc0 [V02,T02] ( 3, 3 ) int -> rax
; V03 OutArgs [V03 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
+;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int32>
+;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,int]>
;
; Lcl frame size = 40
+0 (0.00%) : 22050.dasm - System.Collections.Generic.SortedList`2[int,int]:Add(int,int):this (FullOpts)
@@ -13,13 +13,14 @@
; V02 arg2 [V02,T02] ( 3, 3 ) int -> rdi single-def
; V03 loc0 [V03,T03] ( 3, 3 ) int -> rax
; V04 OutArgs [V04 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
+;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
; V06 tmp2 [V06,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.Int32>
; V07 tmp3 [V07,T06] ( 2, 0 ) ref -> rdi class-hnd exact single-def "impImportAndPushBox" <System.String>
; V08 tmp4 [V08,T05] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int32>
-; V10 tmp6 [V10,T07] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
-; V11 tmp7 [V11,T08] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
+;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,int]>
+; V11 tmp7 [V11,T07] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
+; V12 tmp8 [V12,T08] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
;
; Lcl frame size = 48
+0 (0.00%) : 23141.dasm - System.Collections.Generic.SortedDictionary`2[int,int]:Remove(int):ubyte:this (FullOpts)
@@ -12,17 +12,18 @@
; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ld-addr-op
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
+;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
; V05 tmp2 [V05,T03] ( 2, 4 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[int,int]>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int32>
;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[int,int]>
-; V10 tmp7 [V10,T04] ( 2, 2 ) int -> rdx "field V06.key (fldOffset=0x0)" P-INDEP
-;* V11 tmp8 [V11,T05] ( 0, 0 ) int -> zero-ref "field V06.value (fldOffset=0x4)" P-INDEP
-;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "field V09.key (fldOffset=0x0)" P-INDEP
-;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "field V09.value (fldOffset=0x4)" P-INDEP
-; V14 tmp11 [V14,T00] ( 3, 6 ) struct ( 8) [rsp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
+;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,int]>
+; V11 tmp8 [V11,T04] ( 2, 2 ) int -> rdx "field V06.key (fldOffset=0x0)" P-INDEP
+;* V12 tmp9 [V12,T05] ( 0, 0 ) int -> zero-ref "field V06.value (fldOffset=0x4)" P-INDEP
+;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "field V09.key (fldOffset=0x0)" P-INDEP
+;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "field V09.value (fldOffset=0x4)" P-INDEP
+; V15 tmp12 [V15,T00] ( 3, 6 ) struct ( 8) [rsp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
;
; Lcl frame size = 40
+0 (0.00%) : 9862.dasm - System.Collections.Generic.SortedDictionary`2[int,int]:Add(int,int):this (FullOpts)
@@ -12,16 +12,17 @@
; V01 arg1 [V01,T02] ( 3, 3 ) int -> rdx single-def
; V02 arg2 [V02,T03] ( 3, 3 ) int -> r8 single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
+;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[int,int]>
; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int32>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[int,int]>
-; V09 tmp6 [V09,T05] ( 2, 2 ) int -> rdx "field V05.key (fldOffset=0x0)" P-INDEP
-; V10 tmp7 [V10,T06] ( 2, 2 ) int -> r8 "field V05.value (fldOffset=0x4)" P-INDEP
-;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "field V08.key (fldOffset=0x0)" P-INDEP
-;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "field V08.value (fldOffset=0x4)" P-INDEP
-; V13 tmp10 [V13,T00] ( 3, 6 ) struct ( 8) [rsp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
+;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,int]>
+; V10 tmp7 [V10,T05] ( 2, 2 ) int -> rdx "field V05.key (fldOffset=0x0)" P-INDEP
+; V11 tmp8 [V11,T06] ( 2, 2 ) int -> r8 "field V05.value (fldOffset=0x4)" P-INDEP
+;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "field V08.key (fldOffset=0x0)" P-INDEP
+;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "field V08.value (fldOffset=0x4)" P-INDEP
+; V14 tmp11 [V14,T00] ( 3, 6 ) struct ( 8) [rsp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
;
; Lcl frame size = 40
+0 (0.00%) : 12394.dasm - System.Collections.Generic.SortedDictionary`2[int,int]:TryGetValue(int,byref):ubyte:this (FullOpts)
@@ -15,16 +15,17 @@
;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref ld-addr-op
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,int]>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
+;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int32>
; V08 tmp2 [V08,T04] ( 2, 4 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
;* V09 tmp3 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[int,int]>
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int32>
;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "field V05.key (fldOffset=0x0)" P-INDEP
-; V13 tmp7 [V13,T07] ( 2, 1 ) int -> rax "field V05.value (fldOffset=0x4)" P-INDEP
-; V14 tmp8 [V14,T06] ( 2, 2 ) int -> rdx "field V09.key (fldOffset=0x0)" P-INDEP
-;* V15 tmp9 [V15,T08] ( 0, 0 ) int -> zero-ref "field V09.value (fldOffset=0x4)" P-INDEP
-; V16 tmp10 [V16,T00] ( 3, 6 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
+;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,int]>
+;* V13 tmp7 [V13 ] ( 0, 0 ) int -> zero-ref "field V05.key (fldOffset=0x0)" P-INDEP
+; V14 tmp8 [V14,T07] ( 2, 1 ) int -> rax "field V05.value (fldOffset=0x4)" P-INDEP
+; V15 tmp9 [V15,T06] ( 2, 2 ) int -> rdx "field V09.key (fldOffset=0x0)" P-INDEP
+;* V16 tmp10 [V16,T08] ( 0, 0 ) int -> zero-ref "field V09.value (fldOffset=0x4)" P-INDEP
+; V17 tmp11 [V17,T00] ( 3, 6 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
;
; Lcl frame size = 48
libraries.pmi.windows.x64.checked.mch
-42 (-39.62%) : 15855.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[long]:Equals(long,long):ubyte:this (FullOpts)
@@ -8,40 +8,28 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[long]>
-; V01 arg1 [V01,T00] ( 3, 2 ) long -> rbx single-def
-; V02 arg2 [V02,T01] ( 3, 2 ) long -> rsi single-def
-;* V03 loc0 [V03,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Int64>
-;* V04 loc1 [V04,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Int64>
+;* V01 arg1 [V01 ] ( 0, 0 ) long -> zero-ref single-def
+;* V02 arg2 [V02 ] ( 0, 0 ) long -> zero-ref single-def
+;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Int64>
+;* V04 loc1 [V04 ] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Int64>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T02] ( 2, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int64>
-; V07 tmp2 [V07,T03] ( 2, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int64>
-; V08 tmp3 [V08,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V09 tmp4 [V09,T06] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V10 cse0 [V10,T05] ( 3, 0 ) long -> rdi "CSE #01: aggressive"
+;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int64>
+;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int64>
+; V08 tmp3 [V08,T00] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,long]>
+;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,long]>
+; V11 tmp6 [V11,T01] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 32
G_M39211_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
- push rsi
push rbx
sub rsp, 32
- mov rbx, rdx
- mov rsi, r8
- ;; size=13 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
G_M39211_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E ; System.Int64
- mov rcx, rdi
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov qword ptr [rax+0x08], rbx
- mov rcx, rdi
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
- mov qword ptr [rax+0x08], rsi
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
@@ -62,9 +50,9 @@ G_M39211_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx]
; gcr arg pop 0
int3
- ;; size=93 bbWeight=0 PerfScore 0.00
+ ;; size=59 bbWeight=0 PerfScore 0.00
-; Total bytes of code 106, prolog size 7, PerfScore 0.00, instruction count 25, allocated bytes for code 106 (MethodHash=cd2566d4) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[long]:Equals(long,long):ubyte:this (FullOpts)
+; Total bytes of code 64, prolog size 5, PerfScore 0.00, instruction count 14, allocated bytes for code 64 (MethodHash=cd2566d4) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[long]:Equals(long,long):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -72,12 +60,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
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: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-41 (-39.05%) : 15847.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[short]:Equals(short,short):ubyte:this (FullOpts)
@@ -8,40 +8,28 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[short]>
-; V01 arg1 [V01,T00] ( 3, 2 ) short -> rbx single-def
-; V02 arg2 [V02,T01] ( 3, 2 ) short -> rsi single-def
-;* V03 loc0 [V03,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Int16>
-;* V04 loc1 [V04,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Int16>
+;* V01 arg1 [V01 ] ( 0, 0 ) short -> zero-ref single-def
+;* V02 arg2 [V02 ] ( 0, 0 ) short -> zero-ref single-def
+;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Int16>
+;* V04 loc1 [V04 ] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Int16>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T02] ( 2, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int16>
-; V07 tmp2 [V07,T03] ( 2, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int16>
-; V08 tmp3 [V08,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V09 tmp4 [V09,T06] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V10 cse0 [V10,T05] ( 3, 0 ) long -> rdi "CSE #01: aggressive"
+;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int16>
+;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int16>
+; V08 tmp3 [V08,T00] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,short]>
+;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,short]>
+; V11 tmp6 [V11,T01] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 32
G_M61651_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
- push rsi
push rbx
sub rsp, 32
- mov ebx, edx
- mov esi, r8d
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
G_M61651_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E ; System.Int16
- mov rcx, rdi
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov word ptr [rax+0x08], bx
- mov rcx, rdi
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
- mov word ptr [rax+0x08], si
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
@@ -62,9 +50,9 @@ G_M61651_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx]
; gcr arg pop 0
int3
- ;; size=93 bbWeight=0 PerfScore 0.00
+ ;; size=59 bbWeight=0 PerfScore 0.00
-; Total bytes of code 105, prolog size 7, PerfScore 0.00, instruction count 25, allocated bytes for code 105 (MethodHash=8fb60f2c) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[short]:Equals(short,short):ubyte:this (FullOpts)
+; Total bytes of code 64, prolog size 5, PerfScore 0.00, instruction count 14, allocated bytes for code 64 (MethodHash=8fb60f2c) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[short]:Equals(short,short):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -72,12 +60,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
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: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-40 (-38.46%) : 15844.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[ubyte]:Equals(ubyte,ubyte):ubyte:this (FullOpts)
@@ -8,40 +8,28 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[ubyte]>
-; V01 arg1 [V01,T00] ( 3, 2 ) ubyte -> rbx single-def
-; V02 arg2 [V02,T01] ( 3, 2 ) ubyte -> rsi single-def
-;* V03 loc0 [V03,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Byte>
-;* V04 loc1 [V04,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Byte>
+;* V01 arg1 [V01 ] ( 0, 0 ) ubyte -> zero-ref single-def
+;* V02 arg2 [V02 ] ( 0, 0 ) ubyte -> zero-ref single-def
+;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Byte>
+;* V04 loc1 [V04 ] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Byte>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T02] ( 2, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Byte>
-; V07 tmp2 [V07,T03] ( 2, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Byte>
-; V08 tmp3 [V08,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V09 tmp4 [V09,T06] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V10 cse0 [V10,T05] ( 3, 0 ) long -> rdi "CSE #01: aggressive"
+;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Byte>
+;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Byte>
+; V08 tmp3 [V08,T00] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,ubyte]>
+;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,ubyte]>
+; V11 tmp6 [V11,T01] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 32
G_M58718_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
- push rsi
push rbx
sub rsp, 32
- mov ebx, edx
- mov esi, r8d
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
G_M58718_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E ; System.Byte
- mov rcx, rdi
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov byte ptr [rax+0x08], bl
- mov rcx, rdi
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
- mov byte ptr [rax+0x08], sil
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
@@ -62,9 +50,9 @@ G_M58718_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx]
; gcr arg pop 0
int3
- ;; size=92 bbWeight=0 PerfScore 0.00
+ ;; size=59 bbWeight=0 PerfScore 0.00
-; Total bytes of code 104, prolog size 7, PerfScore 0.00, instruction count 25, allocated bytes for code 104 (MethodHash=4b931aa1) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[ubyte]:Equals(ubyte,ubyte):ubyte:this (FullOpts)
+; Total bytes of code 64, prolog size 5, PerfScore 0.00, instruction count 14, allocated bytes for code 64 (MethodHash=4b931aa1) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[ubyte]:Equals(ubyte,ubyte):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -72,12 +60,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
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: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+45 (+3.81%) : 170263.dasm - Microsoft.Build.BackEnd.TargetEntry+d__51:MoveNext():this (FullOpts)
@@ -9,22 +9,22 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 36, 98 ) byref -> [rbp+0x10] this EH-live single-def
-; V01 loc0 [V01,T15] ( 7, 7 ) int -> [rbp-0x2C] do-not-enreg[Z] EH-live
-; V02 loc1 [V02,T01] ( 11, 52 ) ref -> [rbp-0x48] class-hnd EH-live single-def <Microsoft.Build.BackEnd.TargetEntry>
+; V01 loc0 [V01,T14] ( 7, 7 ) int -> [rbp-0x24] do-not-enreg[Z] EH-live
+; V02 loc1 [V02,T01] ( 11, 52 ) ref -> [rbp-0x58] class-hnd EH-live single-def <Microsoft.Build.BackEnd.TargetEntry>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.Build.BackEnd.WorkUnitResult>
-; V04 loc3 [V04,T09] ( 5, 14 ) ref -> rbx must-init class-hnd <Microsoft.Build.BackEnd.WorkUnitResult>
+; V04 loc3 [V04,T09] ( 5, 14 ) byref -> rbx must-init class-hnd <Microsoft.Build.BackEnd.WorkUnitResult>
; V05 loc4 [V05,T07] ( 2, 16 ) ref -> rax class-hnd <Microsoft.Build.Execution.ProjectTargetInstanceChild>
-; V06 loc5 [V06 ] ( 7, 27 ) struct ( 8) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter`1[Microsoft.Build.BackEnd.WorkUnitResult]>
+; V06 loc5 [V06 ] ( 7, 27 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter`1[Microsoft.Build.BackEnd.WorkUnitResult]>
;* V07 loc6 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (72) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V12 tmp3 [V12,T20] ( 2, 4 ) int -> rsi "impAppendStmt"
-; V13 tmp4 [V13,T21] ( 2, 4 ) int -> r14 "impAppendStmt"
-; V14 tmp5 [V14,T11] ( 6, 10.00) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.BackEnd.WorkUnitResult>
-; V15 tmp6 [V15,T12] ( 4, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.BackEnd.WorkUnitResult>
-; V16 tmp7 [V16,T36] ( 2, 0 ) ref -> r8 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+; V12 tmp3 [V12,T19] ( 2, 4 ) int -> rsi "impAppendStmt"
+; V13 tmp4 [V13,T20] ( 2, 4 ) int -> rdi "impAppendStmt"
+; V14 tmp5 [V14,T11] ( 6, 10.00) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.BackEnd.WorkUnitResult>
+;* V15 tmp6 [V15 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.Build.BackEnd.WorkUnitResult>
+; V16 tmp7 [V16,T35] ( 2, 0 ) ref -> r8 class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Build.Execution.ProjectTargetInstance>
; V18 tmp9 [V18,T02] ( 3, 48 ) ref -> rax class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[Microsoft.Build.BackEnd.WorkUnitResult]>
;* V19 tmp10 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter`1[Microsoft.Build.BackEnd.WorkUnitResult]>
@@ -35,98 +35,95 @@
;* V24 tmp15 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp16 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp17 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V27 tmp18 [V27,T06] ( 3, 16.01) ref -> rcx class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V27 tmp18 [V27,T06] ( 3, 16.01) ref -> rax class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
; V28 tmp19 [V28,T05] ( 3, 24 ) ref -> rbx class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
;* V29 tmp20 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Build.Execution.ProjectTargetInstance>
-;* V31 tmp22 [V31,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V32 tmp23 [V32,T03] ( 3, 37.49) byref -> r14 "Inlining Arg"
+;* V31 tmp22 [V31,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V32 tmp23 [V32,T03] ( 3, 37.49) byref -> rdi "Inlining Arg"
;* V33 tmp24 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-;* V34 tmp25 [V34,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V35 tmp26 [V35,T17] ( 3, 4.69) byref -> r14 single-def "Inlining Arg"
+;* V34 tmp25 [V34,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V35 tmp26 [V35,T16] ( 3, 4.69) byref -> rdi single-def "Inlining Arg"
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-; V37 tmp28 [V37,T18] ( 2, 4 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Exception>
-; V38 tmp29 [V38,T16] ( 4, 6 ) byref -> rdi single-def "Inlining Arg"
-; V39 tmp30 [V39,T22] ( 2, 1.95) ref -> rdx class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[Microsoft.Build.BackEnd.WorkUnitResult]>
+; V37 tmp28 [V37,T17] ( 2, 4 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Exception>
+; V38 tmp29 [V38,T15] ( 4, 6 ) byref -> rbx single-def "Inlining Arg"
+; V39 tmp30 [V39,T21] ( 2, 1.95) ref -> rdx class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[Microsoft.Build.BackEnd.WorkUnitResult]>
;* V40 tmp31 [V40 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <Microsoft.Build.BackEnd.WorkUnitResult>
-; V41 tmp32 [V41,T14] ( 4, 7.82) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[Microsoft.Build.BackEnd.WorkUnitResult]>
+; V41 tmp32 [V41,T13] ( 4, 7.82) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[Microsoft.Build.BackEnd.WorkUnitResult]>
;* V42 tmp33 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V43 tmp34 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.Build.BackEnd.WorkUnitResult>
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V45 tmp36 [V45,T25] ( 10, 0.34) ref -> rbx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
-; V46 tmp37 [V46,T27] ( 6, 0.10) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
+; V45 tmp36 [V45,T24] ( 10, 0.34) ref -> rbx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V46 tmp37 [V46,T26] ( 6, 0.10) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
;* V47 tmp38 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp39 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V49 tmp40 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
-; V50 tmp41 [V50,T31] ( 2, 0.05) int -> rdi "Inlining Arg"
-;* V51 tmp42 [V51,T35] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V50 tmp41 [V50,T30] ( 2, 0.05) int -> rdi "Inlining Arg"
+;* V51 tmp42 [V51,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V52 tmp43 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V53 tmp44 [V53,T32] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V54 tmp45 [V54,T30] ( 3, 0.05) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V55 tmp46 [V55,T34] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
-; V56 tmp47 [V56,T26] ( 5, 0.11) int -> [rbp-0x3C] spill-single-def "Inline stloc first use temp"
-; V57 tmp48 [V57 ] ( 7, 27 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V06.m_task (fldOffset=0x0)" P-DEP
-; V58 tmp49 [V58,T08] ( 2, 16 ) ref -> rax "field V19.m_task (fldOffset=0x0)" P-INDEP
-;* V59 tmp50 [V59 ] ( 0, 0 ) ref -> zero-ref "field V42._source (fldOffset=0x0)" P-INDEP
-; V60 tmp51 [V60,T19] ( 2, 4 ) ref -> r8 "argument with side effect"
-; V61 PSPSym [V61,T24] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[V] "PSPSym"
-; V62 cse0 [V62,T29] ( 3, 0.06) ref -> rsi "CSE #14: conservative"
-; V63 cse1 [V63,T33] ( 3, 0.03) int -> rdx "CSE #15: conservative"
-; V64 cse2 [V64,T28] ( 3, 0.07) byref -> rsi "CSE #16: conservative"
-; V65 cse3 [V65,T10] ( 3, 12 ) int -> r15 "CSE #01: aggressive"
+;* V53 tmp44 [V53,T31] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V54 tmp45 [V54,T29] ( 3, 0.05) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V55 tmp46 [V55,T33] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V56 tmp47 [V56,T25] ( 5, 0.11) int -> [rbp-0x34] spill-single-def "Inline stloc first use temp"
+; V57 tmp48 [V57 ] ( 5, 5 ) struct (24) [rbp-0x50] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <Microsoft.Build.BackEnd.WorkUnitResult>
+; V58 tmp49 [V58 ] ( 7, 27 ) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06.m_task (fldOffset=0x0)" P-DEP
+; V59 tmp50 [V59,T08] ( 2, 16 ) ref -> rax "field V19.m_task (fldOffset=0x0)" P-INDEP
+;* V60 tmp51 [V60 ] ( 0, 0 ) ref -> zero-ref "field V42._source (fldOffset=0x0)" P-INDEP
+; V61 tmp52 [V61,T18] ( 2, 4 ) ref -> r8 "argument with side effect"
+; V62 PSPSym [V62,T23] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[V] "PSPSym"
+; V63 cse0 [V63,T28] ( 3, 0.06) ref -> rsi "CSE #14: conservative"
+; V64 cse1 [V64,T32] ( 3, 0.03) int -> rdx "CSE #15: conservative"
+; V65 cse2 [V65,T27] ( 3, 0.07) byref -> rsi "CSE #16: conservative"
+; V66 cse3 [V66,T10] ( 3, 12 ) int -> r14 "CSE #01: aggressive"
;
-; Lcl frame size = 120
+; Lcl frame size = 144
G_M18954_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, 120
- lea rbp, [rsp+0xA0]
+ sub rsp, 144
+ lea rbp, [rsp+0xB0]
+ vxorps xmm4, xmm4, xmm4
+ vmovdqu ymmword ptr [rbp-0x50], ymm4
xor ebx, ebx
- mov qword ptr [rbp-0x38], rbx
- mov qword ptr [rbp-0x58], rsp
+ mov qword ptr [rbp-0x30], rbx
+ mov qword ptr [rbp-0x68], rsp
mov bword ptr [rbp+0x10], rcx
; GC ptr vars +{V00}
- ;; size=34 bbWeight=1 PerfScore 10.00
-G_M18954_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, gcvars, byref
- ; gcrRegs +[rbx]
- ; byrRegs +[rcx]
- mov eax, dword ptr [rcx+0x28]
- mov dword ptr [rbp-0x2C], eax
+ ;; size=44 bbWeight=1 PerfScore 11.33
+G_M18954_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=000A {rcx rbx}, gcvars, byref
+ ; byrRegs +[rcx rbx]
+ mov edx, dword ptr [rcx+0x28]
+ mov dword ptr [rbp-0x24], edx
mov rsi, gword ptr [rcx]
; gcrRegs +[rsi]
- mov gword ptr [rbp-0x48], rsi
+ mov gword ptr [rbp-0x58], rsi
; GC ptr vars +{V02}
;; size=13 bbWeight=1 PerfScore 6.00
-G_M18954_IG03: ; bbWeight=1, gcVars=0000000000000003 {V00 V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- cmp dword ptr [rbp-0x2C], 0
- je SHORT G_M18954_IG04
+G_M18954_IG03: ; bbWeight=1, gcVars=0000000000000003 {V00 V02}, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, gcvars, byref, isz
+ cmp dword ptr [rbp-0x24], 0
+ je SHORT G_M18954_IG05
mov dword ptr [rcx+0x30], 1
- xor eax, eax
- mov dword ptr [rcx+0x34], eax
- mov rcx, 0xD1FFAB1E ; Microsoft.Build.BackEnd.WorkUnitResult
- ; byrRegs -[rcx]
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[rbx] +[rax]
- ; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- mov qword ptr [rbx+0x10], 1
- xor rcx, rcx
- ; gcrRegs +[rcx]
- mov gword ptr [rbx+0x08], rcx
- mov rcx, bword ptr [rbp+0x10]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- ;; size=54 bbWeight=1 PerfScore 10.00
-G_M18954_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, byref, isz
- ; gcrRegs -[rax]
- cmp dword ptr [rbp-0x2C], 0
- je G_M18954_IG10
+ xor edx, edx
+ mov dword ptr [rcx+0x34], edx
+ mov rdx, 0xD1FFAB1E ; Microsoft.Build.BackEnd.WorkUnitResult
+ mov qword ptr [rbp-0x50], rdx
+ mov dword ptr [rbp-0x40], 1
+ xor edx, edx
+ mov dword ptr [rbp-0x3C], edx
+ ;; size=44 bbWeight=1 PerfScore 8.75
+G_M18954_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx}, byref
+ ; byrRegs -[rbx]
+ mov gword ptr [rbp-0x48], rdx
+ lea rbx, [rbp-0x50]
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M18954_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, byref, isz
+ ; byrRegs +[rbx]
+ cmp dword ptr [rbp-0x24], 0
+ je G_M18954_IG11
mov rdx, gword ptr [rcx+0x08]
; gcrRegs +[rdx]
lea rcx, bword ptr [rsi+0x58]
@@ -134,58 +131,70 @@ G_M18954_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rc
; gcrRegs -[rdx]
; byrRegs -[rcx]
xor ecx, ecx
- mov rdi, bword ptr [rbp+0x10]
- ; byrRegs +[rdi]
- mov dword ptr [rdi+0x38], ecx
- jmp SHORT G_M18954_IG06
+ mov rdx, bword ptr [rbp+0x10]
+ ; byrRegs +[rdx]
+ mov dword ptr [rdx+0x38], ecx
+ jmp SHORT G_M18954_IG07
;; size=34 bbWeight=1 PerfScore 10.75
-G_M18954_IG05: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
- inc dword ptr [rdi+0x38]
- ;; size=3 bbWeight=4 PerfScore 12.00
-G_M18954_IG06: ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
- mov r14d, dword ptr [rdi+0x38]
+G_M18954_IG06: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ ; byrRegs -[rdx]
+ mov rcx, bword ptr [rbp+0x10]
+ ; byrRegs +[rcx]
+ inc dword ptr [rcx+0x38]
+ mov rdx, rcx
+ ; byrRegs +[rdx]
+ ;; size=10 bbWeight=4 PerfScore 17.00
+G_M18954_IG07: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=000C {rdx rbx}, byref
+ ; byrRegs -[rcx]
+ mov edi, dword ptr [rdx+0x38]
mov rcx, gword ptr [rsi+0x18]
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0xA0]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rcx]
+ ; byrRegs -[rdx]
; gcr arg pop 0
- cmp r14d, eax
- jge G_M18954_IG15
- lea r14, bword ptr [rsi+0x70]
- ; byrRegs +[r14]
- cmp gword ptr [r14], 0
- jne G_M18954_IG14
- ;; size=51 bbWeight=8 PerfScore 120.00
-G_M18954_IG07: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
- ; gcrRegs -[rbx]
- ; byrRegs -[r14]
+ cmp edi, eax
+ jge G_M18954_IG16
+ lea rdi, bword ptr [rsi+0x70]
+ ; byrRegs +[rdi]
+ cmp gword ptr [rdi], 0
+ jne G_M18954_IG15
+ ;; size=49 bbWeight=8 PerfScore 120.00
+G_M18954_IG08: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rbx rdi]
mov rcx, gword ptr [rsi+0x18]
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0xA0]
...
+20 (+6.94%) : 321388.dasm - Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0:b__0():this (FullOpts)
@@ -9,20 +9,21 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 11, 8.50) ref -> rbx this class-hnd single-def <Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0>
-; V01 loc0 [V01,T07] ( 6, 2.50) ref -> [rbp-0x18] class-hnd EH-live spill-single-def <Xunit.Sdk.IMessageBus>
-;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder>
+; V01 loc0 [V01,T07] ( 6, 2.50) ref -> [rbp-0x20] class-hnd EH-live spill-single-def <Xunit.Sdk.IMessageBus>
+;* V02 loc1 [V02,T10] ( 0, 0 ) long -> zero-ref class-hnd exact EH-live single-def <Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder>
; V03 loc2 [V03,T03] ( 4, 3 ) ref -> rsi class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T09] ( 2, 1 ) ref -> rdx class-hnd single-def <<unknown class>>
+; V04 loc3 [V04,T08] ( 2, 1 ) ref -> rdx class-hnd single-def <<unknown class>>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T08] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder>
+;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.DiscoveryCompleteMessage>
; V08 tmp3 [V08,T01] ( 2, 4 ) ref -> rdx class-hnd single-def "Inlining Arg" <Xunit.Sdk.TestFrameworkDiscoverer>
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Xunit.Sdk.TestFrameworkDiscoverer>
-; V10 tmp5 [V10,T04] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
-; V11 tmp6 [V11,T05] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
-; V12 tmp7 [V12,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V13 PSPSym [V13,T10] ( 1, 1 ) long -> [rbp-0x28] do-not-enreg[V] "PSPSym"
-; V14 cse0 [V14,T06] ( 3, 3 ) ref -> rcx "CSE #01: aggressive"
+; V10 tmp5 [V10 ] ( 1, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder>
+; V11 tmp6 [V11,T04] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
+; V12 tmp7 [V12,T05] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
+; V13 tmp8 [V13,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V14 PSPSym [V14,T09] ( 1, 1 ) long -> [rbp-0x28] do-not-enreg[V] "PSPSym"
+; V15 cse0 [V15,T06] ( 3, 3 ) ref -> rcx "CSE #01: aggressive"
;
; Lcl frame size = 64
@@ -32,10 +33,12 @@ G_M21023_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 64
lea rbp, [rsp+0x50]
+ xor eax, eax
+ mov qword ptr [rbp-0x18], rax
mov qword ptr [rbp-0x28], rsp
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 5.00
+ ;; size=25 bbWeight=1 PerfScore 6.25
G_M21023_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -44,7 +47,7 @@ G_M21023_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [Xunit.Sdk.TestFrameworkDiscoverer:CreateMessageBus(Xunit.Abstractions.IMessageSink,Xunit.Abstractions.ITestFrameworkDiscoveryOptions):Xunit.Sdk.IMessageBus]
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x18], rax
+ mov gword ptr [rbp-0x20], rax
; GC ptr vars +{V01}
;; size=18 bbWeight=1 PerfScore 8.00
G_M21023_IG03: ; bbWeight=1, gcVars=0000000000000080 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
@@ -53,9 +56,11 @@ G_M21023_IG03: ; bbWeight=1, gcVars=0000000000000080 {V01}, gcrefRegs=000
; gcrRegs +[rcx]
mov rdx, rcx
; gcrRegs +[rdx]
+ mov r11, 0xD1FFAB1E ; Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder
+ mov qword ptr [rbp-0x18], r11
mov edx, dword ptr [rdx+0x10]
; gcrRegs -[rdx]
- ;; size=10 bbWeight=1 PerfScore 4.25
+ ;; size=24 bbWeight=1 PerfScore 5.50
G_M21023_IG04: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rcx+0x10]
mov rdx, gword ptr [rbx+0x20]
@@ -101,7 +106,7 @@ G_M21023_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[r8]
mov rcx, gword ptr [rbx+0x18]
; gcrRegs +[rcx]
- mov r9, gword ptr [rbp-0x18]
+ mov r9, gword ptr [rbp-0x20]
; gcrRegs +[r9]
call [<unknown method>]
; gcrRegs -[rax rcx rdx rbx r9]
@@ -114,7 +119,7 @@ G_M21023_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, gword ptr [rbp-0x18]
+ mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
@@ -123,7 +128,7 @@ G_M21023_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=36 bbWeight=1 PerfScore 6.00
G_M21023_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, gword ptr [rbp-0x18]
+ mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
; GC ptr vars -{V01}
@@ -166,9 +171,9 @@ G_M21023_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=20 bbWeight=0 PerfScore 0.00
G_M21023_IG12: ; bbWeight=0, gcVars=0000000000000080 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01}
- cmp gword ptr [rbp-0x18], 0
+ cmp gword ptr [rbp-0x20], 0
je SHORT G_M21023_IG13
- mov rcx, gword ptr [rbp-0x18]
+ mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
; GC ptr vars -{V01}
@@ -187,7 +192,7 @@ G_M21023_IG14: ; bbWeight=0, funclet epilog, nogc, extend
ret
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 19, PerfScore 54.75, instruction count 86, allocated bytes for code 288 (MethodHash=a7cdade0) for method Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0:<Find>b__0():this (FullOpts)
+; Total bytes of code 308, prolog size 25, PerfScore 57.25, instruction count 90, allocated bytes for code 308 (MethodHash=a7cdade0) for method Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0:<Find>b__0():this (FullOpts)
; ============================================================
Unwind Info:
+10 (+7.35%) : 37123.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:b__1(System.Data.DataRow):ubyte:this (FullOpts)
@@ -8,22 +8,23 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]>
+; V00 this [V00,T02] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]>
; V01 arg1 [V01,T00] ( 6, 5.25) ref -> rbx class-hnd single-def <System.Data.DataRow>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> rsi class-hnd single-def "impAppendStmt" <System.Func`2[ubyte,ubyte]>
-; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Single-def Box Helper" <System.Byte>
-; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
-; V06 tmp4 [V06,T05] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.NotSupportedException>
-; V07 cse0 [V07,T04] ( 4, 3.25) long -> rdi "CSE #01: aggressive"
+;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Byte>
+; V05 tmp3 [V05,T05] ( 2, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
+; V06 tmp4 [V06,T04] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.NotSupportedException>
+; V07 tmp5 [V07 ] ( 4, 4 ) struct (16) [rsp+0x20] do-not-enreg[XSF] addr-exposed "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,ubyte]>
+; V08 cse0 [V08,T03] ( 4, 3.25) long -> rdi "CSE #01: aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 48
G_M17326_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, rdx
; gcrRegs +[rbx]
;; size=10 bbWeight=1 PerfScore 3.50
@@ -47,32 +48,30 @@ G_M17326_IG03: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcr arg pop 0
;; size=12 bbWeight=0.25 PerfScore 0.88
G_M17326_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rdi
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
+ vxorps xmm0, xmm0, xmm0
+ vmovups xmmword ptr [rsp+0x20], xmm0
+ mov qword ptr [rsp+0x20], rdi
movzx rdx, byte ptr [rbx+0x08]
mov rcx, gword ptr [rsi+0x08]
; gcrRegs +[rcx]
call [rsi+0x18]<unknown method>
- ; gcrRegs -[rax rcx rsi]
+ ; gcrRegs -[rcx rsi]
; gcr arg pop 0
- mov byte ptr [rdi+0x08], al
- cmp rbx, rdi
+ mov byte ptr [rsp+0x28], al
+ lea rax, [rsp+0x20]
+ cmp rbx, rax
jne SHORT G_M17326_IG06
mov eax, 1
- ;; size=35 bbWeight=1 PerfScore 11.00
+ ;; size=45 bbWeight=1 PerfScore 12.33
G_M17326_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 48
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
G_M17326_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx rdi]
+ ; gcrRegs -[rbx]
call [<unknown method>]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -98,7 +97,7 @@ G_M17326_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 7, PerfScore 26.38, instruction count 39, allocated bytes for code 136 (MethodHash=632fbc51) for method System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__1(System.Data.DataRow):ubyte:this (FullOpts)
+; Total bytes of code 146, prolog size 7, PerfScore 27.71, instruction count 40, allocated bytes for code 146 (MethodHash=632fbc51) for method System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__1(System.Data.DataRow):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -111,7 +110,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_tests.run.windows.x64.Release.mch
-49 (-25.39%) : 94558.dasm - Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (Tier1)
@@ -9,23 +9,28 @@
; 0 inlinees with PGO data; 19 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 9, 8.01) ref -> rbx class-hnd single-def <Microsoft.Interop.LibraryImportCompilationData>
+; V00 arg0 [V00,T02] ( 9, 8.01) ref -> rbx class-hnd single-def <Microsoft.Interop.LibraryImportCompilationData>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 7, 14 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
-; V03 tmp2 [V03,T02] ( 7, 14 ) ref -> rsi class-hnd exact single-def "dup spill" <Microsoft.Interop.LibraryImportData>
+;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
+; V03 tmp2 [V03,T01] ( 7, 14 ) ref -> rdi class-hnd exact single-def "dup spill" <Microsoft.Interop.LibraryImportData>
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp7 [V08,T06] ( 3, 2 ) ref -> rdx
+; V08 tmp7 [V08,T05] ( 3, 2 ) ref -> rdx
;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp9 [V10,T00] ( 8, 16 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
+; V10 tmp9 [V10,T00] ( 8, 16 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V13 tmp12 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V15 cse0 [V15,T04] ( 3, 3 ) ref -> rbp "CSE #02: aggressive"
-; V16 cse1 [V16,T05] ( 3, 3 ) long -> rsi "CSE #01: aggressive"
+;* V15 tmp14 [V15,T06] ( 0, 0 ) struct (48) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <Microsoft.Interop.LibraryImportData>
+;* V16 tmp15 [V16 ] ( 0, 0 ) long -> zero-ref single-def "V15.[000..008)"
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "V15.[016..020)"
+;* V18 tmp17 [V18 ] ( 0, 0 ) int -> zero-ref "V15.[020..024)"
+;* V19 tmp18 [V19 ] ( 0, 0 ) ubyte -> zero-ref "V15.[024..025)"
+; V20 cse0 [V20,T03] ( 2, 2 ) ref -> rsi "CSE #01: aggressive"
+; V21 cse1 [V21,T04] ( 3, 3 ) ref -> rbp "CSE #02: aggressive"
;
; Lcl frame size = 40
@@ -38,87 +43,66 @@ G_M28281_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rcx
; gcrRegs +[rbx]
;; size=11 bbWeight=1 PerfScore 4.50
-G_M28281_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; Microsoft.Interop.LibraryImportData
- mov rcx, rsi
+G_M28281_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rsi, gword ptr [rbx+0x20]
+ ; gcrRegs +[rsi]
+ mov rcx, 0xD1FFAB1E ; Microsoft.Interop.LibraryImportData
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
- mov rbp, gword ptr [rbx+0x20]
+ xor ecx, ecx
+ mov dword ptr [rdi+0x10], ecx
+ mov byte ptr [rdi+0x18], 0
+ ;; size=31 bbWeight=1 PerfScore 5.75
+G_M28281_IG03: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov dword ptr [rdi+0x14], ecx
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M28281_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ xor rbp, rbp
; gcrRegs +[rbp]
+ mov gword ptr [rdi+0x08], rbp
lea rcx, bword ptr [rdi+0x20]
; byrRegs +[rcx]
- mov rdx, rbp
+ mov rdx, rsi
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rdx rsi]
; byrRegs -[rcx]
- mov rcx, rsi
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- mov ecx, dword ptr [rdi+0x10]
- mov dword ptr [rsi+0x10], ecx
- movzx rcx, byte ptr [rdi+0x18]
- mov byte ptr [rsi+0x18], cl
- mov ecx, dword ptr [rdi+0x14]
- mov dword ptr [rsi+0x14], ecx
- mov rdx, gword ptr [rdi+0x08]
+ mov gword ptr [rdi+0x28], rbp
+ mov rdx, gword ptr [rbx+0x28]
; gcrRegs +[rdx]
- lea rcx, bword ptr [rsi+0x08]
+ lea rcx, bword ptr [rdi+0x28]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
- ; byrRegs -[rcx]
- lea rcx, bword ptr [rsi+0x20]
- ; byrRegs +[rcx]
- mov rdx, rbp
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx rbp]
; byrRegs -[rcx]
- mov rdx, gword ptr [rdi+0x28]
- ; gcrRegs +[rdx]
- lea rcx, bword ptr [rsi+0x28]
- ; byrRegs +[rcx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rdi]
- ; byrRegs -[rcx]
- mov rdx, gword ptr [rbx+0x28]
- ; gcrRegs +[rdx]
- lea rcx, bword ptr [rsi+0x28]
- ; byrRegs +[rcx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
- ; byrRegs -[rcx]
mov ecx, dword ptr [rbx+0x10]
- mov dword ptr [rsi+0x10], ecx
+ mov dword ptr [rdi+0x10], ecx
movzx rcx, byte ptr [rbx+0x18]
- mov byte ptr [rsi+0x18], cl
+ mov byte ptr [rdi+0x18], cl
mov ecx, dword ptr [rbx+0x14]
- mov dword ptr [rsi+0x14], ecx
+ mov dword ptr [rdi+0x14], ecx
cmp gword ptr [rbx+0x08], 0
- jne SHORT G_M28281_IG06
- ;; size=144 bbWeight=1 PerfScore 41.25
-G_M28281_IG03: ; bbWeight=0.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ jne SHORT G_M28281_IG08
+ ;; size=61 bbWeight=1 PerfScore 20.50
+G_M28281_IG05: ; bbWeight=0.99, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
xor rdx, rdx
; gcrRegs +[rdx]
;; size=2 bbWeight=0.99 PerfScore 0.25
-G_M28281_IG04: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
- lea rcx, bword ptr [rsi+0x08]
+G_M28281_IG06: ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
+ lea rcx, bword ptr [rdi+0x08]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- mov rax, rsi
+ mov rax, rdi
; gcrRegs +[rax]
;; size=12 bbWeight=1 PerfScore 1.75
-G_M28281_IG05: ; bbWeight=1, epilog, nogc, extend
+G_M28281_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -126,7 +110,7 @@ G_M28281_IG05: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M28281_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28281_IG08: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx]
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -135,10 +119,10 @@ G_M28281_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=004
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- jmp SHORT G_M28281_IG04
+ jmp SHORT G_M28281_IG06
;; size=15 bbWeight=0.01 PerfScore 0.07
-; Total bytes of code 193, prolog size 8, PerfScore 51.07, instruction count 57, allocated bytes for code 193 (MethodHash=79a39186) for method Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (Tier1)
+; Total bytes of code 144, prolog size 8, PerfScore 37.07, instruction count 45, allocated bytes for code 144 (MethodHash=79a39186) for method Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (Tier1)
; ============================================================
Unwind Info:
-35 (-23.49%) : 62400.dasm - Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (Tier1)
@@ -9,59 +9,55 @@
; 0 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 8, 7 ) ref -> rbx class-hnd single-def <Microsoft.Interop.GeneratedComInterfaceCompilationData>
+; V00 arg0 [V00,T02] ( 8, 7 ) ref -> rbx class-hnd single-def <Microsoft.Interop.GeneratedComInterfaceCompilationData>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 6, 12 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
+;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
; V03 tmp2 [V03,T00] ( 7, 14 ) ref -> rsi class-hnd exact single-def "dup spill" <Microsoft.Interop.GeneratedComInterfaceData>
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp7 [V08,T05] ( 3, 2 ) ref -> rdx
+; V08 tmp7 [V08,T03] ( 3, 2 ) ref -> rdx
; V09 tmp8 [V09,T01] ( 7, 14 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T04] ( 3, 3 ) long -> rsi "CSE #01: aggressive"
+;* V14 tmp13 [V14 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <Microsoft.Interop.GeneratedComInterfaceData>
+;* V15 tmp14 [V15 ] ( 0, 0 ) long -> zero-ref single-def "V14.[000..008)"
+;* V16 tmp15 [V16 ] ( 0, 0 ) int -> zero-ref "V14.[016..020)"
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "V14.[020..024)"
+;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref "V14.[024..025)"
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "V14.[028..032)"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M25584_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
-G_M25584_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; Microsoft.Interop.GeneratedComInterfaceData
- mov rcx, rsi
+ ;; size=9 bbWeight=1 PerfScore 2.50
+G_M25584_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E ; Microsoft.Interop.GeneratedComInterfaceData
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- mov rcx, rsi
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
- mov ecx, dword ptr [rdi+0x10]
+ xor ecx, ecx
mov dword ptr [rsi+0x10], ecx
- movzx rcx, byte ptr [rdi+0x18]
- mov byte ptr [rsi+0x18], cl
- mov ecx, dword ptr [rdi+0x14]
+ mov byte ptr [rsi+0x18], 0
+ ;; size=27 bbWeight=1 PerfScore 3.75
+G_M25584_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov dword ptr [rsi+0x14], ecx
- mov rdx, gword ptr [rdi+0x08]
- ; gcrRegs +[rdx]
- lea rcx, bword ptr [rsi+0x08]
- ; byrRegs +[rcx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
- ; byrRegs -[rcx]
- mov ecx, dword ptr [rdi+0x1C]
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M25584_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov gword ptr [rsi+0x08], rcx
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M25584_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rsi+0x1C], ecx
mov ecx, dword ptr [rbx+0x10]
mov dword ptr [rsi+0x10], ecx
@@ -70,12 +66,11 @@ G_M25584_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov ecx, dword ptr [rbx+0x14]
mov dword ptr [rsi+0x14], ecx
cmp gword ptr [rbx+0x08], 0
- jne SHORT G_M25584_IG05
+ jne SHORT G_M25584_IG08
xor rdx, rdx
; gcrRegs +[rdx]
- ;; size=98 bbWeight=1 PerfScore 32.00
-G_M25584_IG03: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
+ ;; size=31 bbWeight=1 PerfScore 14.25
+G_M25584_IG06: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
@@ -86,14 +81,13 @@ G_M25584_IG03: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000
mov rax, rsi
; gcrRegs +[rax]
;; size=18 bbWeight=1 PerfScore 4.75
-G_M25584_IG04: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+G_M25584_IG07: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
-G_M25584_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M25584_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -102,10 +96,10 @@ G_M25584_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- jmp SHORT G_M25584_IG03
+ jmp SHORT G_M25584_IG06
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 149, prolog size 7, PerfScore 43.00, instruction count 46, allocated bytes for code 149 (MethodHash=ad6f9c0f) for method Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (Tier1)
+; Total bytes of code 114, prolog size 6, PerfScore 29.50, instruction count 35, allocated bytes for code 114 (MethodHash=ad6f9c0f) for method Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (Tier1)
; ============================================================
Unwind Info:
@@ -113,12 +107,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)
-30 (-13.51%) : 359747.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
@@ -16,15 +16,16 @@
; V03 arg3 [V03,T02] ( 6, 2.92) ref -> rdi class-hnd single-def <System.Object>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T10] ( 0, 0 ) int -> zero-ref
-; V07 tmp2 [V07,T07] ( 3, 0.32) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.Decimal>
-; V08 tmp3 [V08,T09] ( 2, 0.22) ref -> rsi class-hnd exact single-def "Single-def Box Helper" <System.Decimal>
-; V09 tmp4 [V09,T08] ( 3, 0.32) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Decimal>
+;* V06 tmp1 [V06,T09] ( 0, 0 ) int -> zero-ref
+; V07 tmp2 [V07,T07] ( 3, 0.32) ref -> rdx class-hnd exact single-def "Single-def Box Helper" <System.Decimal>
+;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Decimal>
+; V09 tmp4 [V09,T08] ( 2, 0.22) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.Decimal>
; V10 tmp5 [V10,T03] ( 2, 3.78) int -> rdx "impAppendStmt"
; V11 tmp6 [V11,T06] ( 3, 1.36) ref -> rax class-hnd "Inline return value spill temp" <System.Action`3[System.Runtime.CompilerServices.CallSite,System.Type,System.Object]>
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Runtime.CompilerServices.CallSite`1[System.Action`3[System.Runtime.CompilerServices.CallSite,System.Type,System.Object]]>
-; V13 rat0 [V13,T04] ( 4, 2.95) ref -> rax "replacement local"
-; V14 rat1 [V14,T05] ( 3, 2.04) long -> rcx "CSE for expectedClsNode"
+;* V13 tmp8 [V13 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Decimal]>
+; V14 rat0 [V14,T04] ( 4, 2.95) ref -> rax "replacement local"
+; V15 rat1 [V15,T05] ( 3, 2.04) long -> rcx "CSE for expectedClsNode"
;
; Lcl frame size = 32
@@ -62,26 +63,17 @@ G_M32564_IG05: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- vmovups xmm0, xmmword ptr [rdi+0x08]
- vmovups xmmword ptr [rbx+0x08], xmm0
- mov rcx, 0xD1FFAB1E ; System.Decimal
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- mov rdx, rbx
+ mov rdx, rax
; gcrRegs +[rdx]
+ vmovups xmm0, xmmword ptr [rdi+0x08]
+ vmovups xmmword ptr [rdx+0x08], xmm0
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rax rcx rdx rdi]
; gcr arg pop 0
- vmovups xmm0, xmmword ptr [rbx+0x08]
- vmovups xmmword ptr [rsi+0x08], xmm0
- ;; size=75 bbWeight=0.05 PerfScore 1.00
+ nop
+ ;; size=45 bbWeight=0.05 PerfScore 0.59
G_M32564_IG06: ; bbWeight=0.05, epilog, nogc, extend
add rsp, 32
pop rbx
@@ -90,7 +82,7 @@ G_M32564_IG06: ; bbWeight=0.05, epilog, nogc, extend
ret
;; size=8 bbWeight=0.05 PerfScore 0.15
G_M32564_IG07: ; bbWeight=0.95, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rdi]
+ ; gcrRegs +[rbx rsi rdi]
movzx rdx, byte ptr [rbx+0x10]
mov byte ptr [rbx+0x10], 0
test edx, edx
@@ -141,7 +133,7 @@ G_M32564_IG12: ; bbWeight=0.45, epilog, nogc, extend
tail.jmp [rax+0x18]<unknown method>
;; size=11 bbWeight=0.45 PerfScore 1.70
-; Total bytes of code 222, prolog size 16, PerfScore 20.93, instruction count 60, allocated bytes for code 222 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
+; Total bytes of code 192, prolog size 16, PerfScore 20.53, instruction count 55, allocated bytes for code 192 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
; ============================================================
Unwind Info:
+27 (+7.09%) : 756432.dasm - Xunit.Assert:NotEqual[System.SequencePosition](System.SequencePosition,System.SequencePosition,System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]) (Tier1)
@@ -9,15 +9,15 @@
; 5 inlinees with PGO data; 14 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 6 ) byref -> [rbp+0x10] ld-addr-op EH-live single-def
-; V01 arg1 [V01,T01] ( 4, 6 ) byref -> [rbp+0x18] ld-addr-op EH-live single-def
+; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op single-def
+; V01 arg1 [V01,T01] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 arg2 [V02,T02] ( 4, 4 ) ref -> r11 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]>
-;* V03 loc0 [V03,T41] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-;* V04 loc1 [V04,T42] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-; V05 loc2 [V05,T03] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[M] class-hnd EH-live <<unknown class>>
+;* V03 loc0 [V03,T45] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+;* V04 loc1 [V04,T46] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+; V05 loc2 [V05,T07] ( 3, 1 ) ref -> [rbp-0x38] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc4 [V07,T15] ( 2, 0 ) ref -> rbx class-hnd exact single-def <System.String>
-; V08 loc5 [V08,T16] ( 2, 0 ) ref -> rdx class-hnd exact single-def <System.String>
+; V07 loc4 [V07,T19] ( 2, 0 ) ref -> rbx class-hnd exact single-def <System.String>
+; V08 loc5 [V08,T20] ( 2, 0 ) ref -> rdx class-hnd exact single-def <System.String>
;* V09 loc6 [V09 ] ( 0, 0 ) ubyte -> zero-ref
;* V10 loc7 [V10 ] ( 0, 0 ) ubyte -> zero-ref
;* V11 loc8 [V11 ] ( 0, 0 ) ubyte -> zero-ref
@@ -26,14 +26,14 @@
;* V14 loc11 [V14 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
;* V15 loc12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.IEqualityComparer>
;* V16 loc13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Xunit.Sdk.AssertEqualityComparer`1[System.SequencePosition]>
-;* V17 loc14 [V17,T06] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
-;* V18 loc15 [V18,T07] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
+;* V17 loc14 [V17,T10] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
+;* V18 loc15 [V18,T11] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
;* V19 loc16 [V19 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
;* V20 loc17 [V20 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
-;* V21 loc18 [V21,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
+;* V21 loc18 [V21,T21] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V22 loc19 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
-;* V23 loc20 [V23,T43] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
-;* V24 loc21 [V24,T44] ( 0, 0 ) ubyte -> zero-ref
+;* V23 loc20 [V23,T47] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
+;* V24 loc21 [V24,T48] ( 0, 0 ) ubyte -> zero-ref
;* V25 loc22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V26 loc23 [V26 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op
;* V27 loc24 [V27 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op
@@ -47,193 +47,191 @@
;* V35 loc32 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 loc33 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
; V37 OutArgs [V37 ] ( 1, 1 ) struct (56) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V38 tmp1 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.SequencePosition>
-;* V39 tmp2 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.SequencePosition>
-;* V40 tmp3 [V40,T04] ( 0, 0 ) int -> zero-ref single-def
-;* V41 tmp4 [V41,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.SequencePosition>
-;* V42 tmp5 [V42,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.SequencePosition>
+;* V38 tmp1 [V38 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.SequencePosition>
+;* V39 tmp2 [V39 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.SequencePosition>
+;* V40 tmp3 [V40,T08] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp4 [V41,T12] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.SequencePosition>
+;* V42 tmp5 [V42,T13] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.SequencePosition>
;* V43 tmp6 [V43 ] ( 0, 0 ) byref -> zero-ref
;* V44 tmp7 [V44 ] ( 0, 0 ) ref -> zero-ref
;* V45 tmp8 [V45 ] ( 0, 0 ) byref -> zero-ref
;* V46 tmp9 [V46 ] ( 0, 0 ) ref -> zero-ref
-;* V47 tmp10 [V47,T18] ( 0, 0 ) ref -> zero-ref
-;* V48 tmp11 [V48,T19] ( 0, 0 ) ref -> zero-ref
+;* V47 tmp10 [V47,T22] ( 0, 0 ) ref -> zero-ref
+;* V48 tmp11 [V48,T23] ( 0, 0 ) ref -> zero-ref
;* V49 tmp12 [V49 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V50 tmp13 [V50 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
;* V51 tmp14 [V51 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V52 tmp15 [V52 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
-;* V53 tmp16 [V53,T20] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;* V53 tmp16 [V53,T24] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V54 tmp17 [V54 ] ( 0, 0 ) ref -> zero-ref
;* V55 tmp18 [V55 ] ( 0, 0 ) ref -> zero-ref
;* V56 tmp19 [V56 ] ( 0, 0 ) ref -> zero-ref
;* V57 tmp20 [V57 ] ( 0, 0 ) ref -> zero-ref
-;* V58 tmp21 [V58,T21] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;* V59 tmp22 [V59,T22] ( 0, 0 ) ref -> zero-ref
-;* V60 tmp23 [V60,T23] ( 0, 0 ) ref -> zero-ref
-;* V61 tmp24 [V61,T24] ( 0, 0 ) ref -> zero-ref
-;* V62 tmp25 [V62,T25] ( 0, 0 ) ref -> zero-ref
+;* V58 tmp21 [V58,T25] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;* V59 tmp22 [V59,T26] ( 0, 0 ) ref -> zero-ref
+;* V60 tmp23 [V60,T27] ( 0, 0 ) ref -> zero-ref
+;* V61 tmp24 [V61,T28] ( 0, 0 ) ref -> zero-ref
+;* V62 tmp25 [V62,T29] ( 0, 0 ) ref -> zero-ref
;* V63 tmp26 [V63 ] ( 0, 0 ) int -> zero-ref
;* V64 tmp27 [V64 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
;* V65 tmp28 [V65 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
-; V66 tmp29 [V66,T26] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V67 tmp30 [V67,T12] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V66 tmp29 [V66,T30] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V67 tmp30 [V67,T16] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V68 tmp31 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V69 tmp32 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.SequencePosition>
+;* V69 tmp32 [V69 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inlining Arg" <System.SequencePosition>
;* V70 tmp33 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
;* V71 tmp34 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V72 tmp35 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.SequencePosition>
+;* V72 tmp35 [V72 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inlining Arg" <System.SequencePosition>
;* V73 tmp36 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V74 tmp37 [V74,T45] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V75 tmp38 [V75,T46] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V76 tmp39 [V76,T47] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V74 tmp37 [V74,T49] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V75 tmp38 [V75,T50] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V76 tmp39 [V76,T51] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V77 tmp40 [V77 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V78 tmp41 [V78 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V79 tmp42 [V79 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[] "field V00._object (fldOffset=0x0)" P-DEP
-;* V80 tmp43 [V80 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V00._integer (fldOffset=0x8)" P-DEP
-;* V81 tmp44 [V81 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[] "field V01._object (fldOffset=0x0)" P-DEP
-;* V82 tmp45 [V82 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V01._integer (fldOffset=0x8)" P-DEP
-;* V83 tmp46 [V83,T08] ( 0, 0 ) ubyte -> zero-ref "field V13.hasValue (fldOffset=0x0)" P-INDEP
-;* V84 tmp47 [V84,T09] ( 0, 0 ) int -> zero-ref "field V13.value (fldOffset=0x4)" P-INDEP
-;* V85 tmp48 [V85 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
-;* V86 tmp49 [V86 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
-;* V87 tmp50 [V87 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V19.hasValue (fldOffset=0x0)" P-DEP
-;* V88 tmp51 [V88 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V19.value (fldOffset=0x4)" P-DEP
-;* V89 tmp52 [V89 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V20.hasValue (fldOffset=0x0)" P-DEP
-;* V90 tmp53 [V90 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V20.value (fldOffset=0x4)" P-DEP
-;* V91 tmp54 [V91 ] ( 0, 0 ) ref -> zero-ref "field V31._object (fldOffset=0x0)" P-INDEP
-;* V92 tmp55 [V92 ] ( 0, 0 ) int -> zero-ref "field V31._integer (fldOffset=0x8)" P-INDEP
-;* V93 tmp56 [V93 ] ( 0, 0 ) ubyte -> zero-ref "field V36.hasValue (fldOffset=0x0)" P-INDEP
-;* V94 tmp57 [V94 ] ( 0, 0 ) int -> zero-ref "field V36.value (fldOffset=0x4)" P-INDEP
-;* V95 tmp58 [V95,T48] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V96 tmp59 [V96,T33] ( 0, 0 ) int -> zero-ref single-def "field V49.value (fldOffset=0x4)" P-INDEP
-;* V97 tmp60 [V97,T34] ( 0, 0 ) ubyte -> zero-ref "field V50.hasValue (fldOffset=0x0)" P-INDEP
-;* V98 tmp61 [V98,T13] ( 0, 0 ) int -> zero-ref "field V50.value (fldOffset=0x4)" P-INDEP
-;* V99 tmp62 [V99,T49] ( 0, 0 ) ubyte -> zero-ref single-def "field V51.hasValue (fldOffset=0x0)" P-INDEP
-;* V100 tmp63 [V100,T35] ( 0, 0 ) int -> zero-ref single-def "field V51.value (fldOffset=0x4)" P-INDEP
-;* V101 tmp64 [V101,T36] ( 0, 0 ) ubyte -> zero-ref "field V52.hasValue (fldOffset=0x0)" P-INDEP
-;* V102 tmp65 [V102,T14] ( 0, 0 ) int -> zero-ref "field V52.value (fldOffset=0x4)" P-INDEP
-;* V103 tmp66 [V103 ] ( 0, 0 ) ubyte -> zero-ref "field V64.hasValue (fldOffset=0x0)" P-INDEP
-;* V104 tmp67 [V104 ] ( 0, 0 ) int -> zero-ref "field V64.value (fldOffset=0x4)" P-INDEP
-;* V105 tmp68 [V105 ] ( 0, 0 ) ubyte -> zero-ref "field V65.hasValue (fldOffset=0x0)" P-INDEP
-;* V106 tmp69 [V106 ] ( 0, 0 ) int -> zero-ref "field V65.value (fldOffset=0x4)" P-INDEP
-;* V107 tmp70 [V107 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" <System.SequencePosition>
-;* V108 tmp71 [V108 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" <System.SequencePosition>
-; V109 tmp72 [V109 ] ( 6, 4 ) struct (16) [rbp-0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.SequencePosition>
-; V110 tmp73 [V110 ] ( 2, 4 ) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.SequencePosition>
-;* V111 tmp74 [V111,T37] ( 0, 0 ) int -> zero-ref "argument with side effect"
-;* V112 tmp75 [V112,T38] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V113 tmp76 [V113 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
-;* V114 tmp77 [V114 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V79 tmp42 [V79 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.SequencePosition]>
+;* V80 tmp43 [V80 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.SequencePosition]>
+; V81 tmp44 [V81,T03] ( 3, 1 ) ref -> [rbp-0x40] EH-live spill-single-def "field V00._object (fldOffset=0x0)" P-INDEP
+; V82 tmp45 [V82,T05] ( 3, 1 ) int -> [rbp-0x0C] EH-live spill-single-def "field V00._integer (fldOffset=0x8)" P-INDEP
+; V83 tmp46 [V83,T04] ( 3, 1 ) ref -> [rbp-0x48] EH-live spill-single-def "field V01._object (fldOffset=0x0)" P-INDEP
+; V84 tmp47 [V84,T06] ( 3, 1 ) int -> [rbp-0x10] EH-live spill-single-def "field V01._integer (fldOffset=0x8)" P-INDEP
+;* V85 tmp48 [V85,T14] ( 0, 0 ) ubyte -> zero-ref "field V13.hasValue (fldOffset=0x0)" P-INDEP
+;* V86 tmp49 [V86,T15] ( 0, 0 ) int -> zero-ref "field V13.value (fldOffset=0x4)" P-INDEP
+;* V87 tmp50 [V87 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
+;* V88 tmp51 [V88 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
+;* V89 tmp52 [V89 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V19.hasValue (fldOffset=0x0)" P-DEP
+;* V90 tmp53 [V90 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V19.value (fldOffset=0x4)" P-DEP
+;* V91 tmp54 [V91 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V20.hasValue (fldOffset=0x0)" P-DEP
+;* V92 tmp55 [V92 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V20.value (fldOffset=0x4)" P-DEP
+;* V93 tmp56 [V93 ] ( 0, 0 ) ref -> zero-ref "field V31._object (fldOffset=0x0)" P-INDEP
+;* V94 tmp57 [V94 ] ( 0, 0 ) int -> zero-ref "field V31._integer (fldOffset=0x8)" P-INDEP
+;* V95 tmp58 [V95 ] ( 0, 0 ) ubyte -> zero-ref "field V36.hasValue (fldOffset=0x0)" P-INDEP
+;* V96 tmp59 [V96 ] ( 0, 0 ) int -> zero-ref "field V36.value (fldOffset=0x4)" P-INDEP
+;* V97 tmp60 [V97,T52] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP
+;* V98 tmp61 [V98,T37] ( 0, 0 ) int -> zero-ref single-def "field V49.value (fldOffset=0x4)" P-INDEP
+;* V99 tmp62 [V99,T38] ( 0, 0 ) ubyte -> zero-ref "field V50.hasValue (fldOffset=0x0)" P-INDEP
+;* V100 tmp63 [V100,T17] ( 0, 0 ) int -> zero-ref "field V50.value (fldOffset=0x4)" P-INDEP
+;* V101 tmp64 [V101,T53] ( 0, 0 ) ubyte -> zero-ref single-def "field V51.hasValue (fldOffset=0x0)" P-INDEP
+;* V102 tmp65 [V102,T39] ( 0, 0 ) int -> zero-ref single-def "field V51.value (fldOffset=0x4)" P-INDEP
+;* V103 tmp66 [V103,T40] ( 0, 0 ) ubyte -> zero-ref "field V52.hasValue (fldOffset=0x0)" P-INDEP
+;* V104 tmp67 [V104,T18] ( 0, 0 ) int -> zero-ref "field V52.value (fldOffset=0x4)" P-INDEP
+;* V105 tmp68 [V105 ] ( 0, 0 ) ubyte -> zero-ref "field V64.hasValue (fldOffset=0x0)" P-INDEP
+;* V106 tmp69 [V106 ] ( 0, 0 ) int -> zero-ref "field V64.value (fldOffset=0x4)" P-INDEP
+;* V107 tmp70 [V107 ] ( 0, 0 ) ubyte -> zero-ref "field V65.hasValue (fldOffset=0x0)" P-INDEP
+;* V108 tmp71 [V108 ] ( 0, 0 ) int -> zero-ref "field V65.value (fldOffset=0x4)" P-INDEP
+;* V109 tmp72 [V109 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.SequencePosition>
+;* V110 tmp73 [V110 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.SequencePosition>
+; V111 tmp74 [V111 ] ( 9, 6 ) struct (16) [rbp-0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.SequencePosition>
+; V112 tmp75 [V112 ] ( 3, 6 ) struct (16) [rbp-0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.SequencePosition>
+;* V113 tmp76 [V113,T41] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V114 tmp77 [V114,T42] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
;* V115 tmp78 [V115 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
;* V116 tmp79 [V116 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
-;* V117 tmp80 [V117,T27] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V118 tmp81 [V118,T28] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V119 tmp82 [V119,T29] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V120 tmp83 [V120,T30] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V121 tmp84 [V121,T39] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V122 tmp85 [V122,T40] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V123 tmp86 [V123 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V124 tmp87 [V124,T31] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V125 tmp88 [V125,T32] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V126 PSPSym [V126,T05] ( 1, 1 ) long -> [rbp-0x38] do-not-enreg[V] "PSPSym"
+;* V117 tmp80 [V117 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V118 tmp81 [V118 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V119 tmp82 [V119,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V120 tmp83 [V120,T32] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V121 tmp84 [V121,T33] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V122 tmp85 [V122,T34] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V123 tmp86 [V123,T43] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;* V124 tmp87 [V124,T44] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;* V125 tmp88 [V125 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+; V126 tmp89 [V126,T35] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V127 tmp90 [V127,T36] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V128 PSPSym [V128,T09] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 104
+; Lcl frame size = 136
G_M65104_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push rbx
- sub rsp, 104
- lea rbp, [rsp+0x70]
- xor eax, eax
- mov qword ptr [rbp-0x28], rax
+ sub rsp, 136
+ lea rbp, [rsp+0x90]
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rbp-0x20], xmm4
- mov qword ptr [rbp-0x10], rax
- mov qword ptr [rbp-0x38], rsp
- mov bword ptr [rbp+0x10], rcx
- ; GC ptr vars +{V00}
- mov bword ptr [rbp+0x18], rdx
- ; GC ptr vars +{V01}
+ vmovdqu ymmword ptr [rbp-0x30], ymm4
+ mov qword ptr [rbp-0x58], rsp
mov r11, r8
; gcrRegs +[r11]
- ;; size=45 bbWeight=1 PerfScore 10.58
-G_M65104_IG02: ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref
+ ;; size=33 bbWeight=1 PerfScore 6.33
+G_M65104_IG02: ; bbWeight=1, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, byref
; byrRegs +[rcx rdx]
- test r11, r11
- je G_M65104_IG13
- xor r8, r8
+ mov r8, gword ptr [rdx]
; gcrRegs +[r8]
- mov gword ptr [rbp-0x30], r8
- ; GC ptr vars +{V05}
- ;; size=16 bbWeight=1 PerfScore 2.50
-G_M65104_IG03: ; bbWeight=1, gcVars=000000000000000B {V00 V01 V05}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref, nogc
- ; gcrRegs -[r8]
- vmovdqu xmm0, xmmword ptr [rcx]
- vmovdqu xmmword ptr [rbp-0x18], xmm0
- ;; size=9 bbWeight=1 PerfScore 5.00
-G_M65104_IG04: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rdx]
- vmovdqu xmmword ptr [rbp-0x28], xmm0
...
+32 (+8.49%) : 614547.dasm - Xunit.Assert:Equal[System.Int128](System.Int128,System.Int128,System.Collections.Generic.IEqualityComparer`1[System.Int128]) (Tier1)
@@ -9,31 +9,31 @@
; 5 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 6 ) byref -> [rbp+0x10] ld-addr-op EH-live single-def
-; V01 arg1 [V01,T01] ( 4, 6 ) byref -> [rbp+0x18] ld-addr-op EH-live single-def
+; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op single-def
+; V01 arg1 [V01,T01] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 arg2 [V02,T02] ( 4, 4 ) ref -> r11 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Int128]>
-;* V03 loc0 [V03,T43] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-;* V04 loc1 [V04,T44] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-; V05 loc2 [V05,T03] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[M] class-hnd EH-live <<unknown class>>
+;* V03 loc0 [V03,T47] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+;* V04 loc1 [V04,T48] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+; V05 loc2 [V05,T07] ( 3, 1 ) ref -> [rbp-0x50] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ubyte -> zero-ref
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V08 loc5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
;* V09 loc6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.IEqualityComparer>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Xunit.Sdk.AssertEqualityComparer`1[System.Int128]>
-;* V11 loc8 [V11,T06] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-;* V12 loc9 [V12,T07] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
+;* V11 loc8 [V11,T10] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
+;* V12 loc9 [V12,T11] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
;* V13 loc10 [V13 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
;* V14 loc11 [V14 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
-;* V15 loc12 [V15,T45] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
-;* V16 loc13 [V16,T46] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
-;* V17 loc14 [V17,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
+;* V15 loc12 [V15,T49] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
+;* V16 loc13 [V16,T50] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
+;* V17 loc14 [V17,T21] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V18 loc15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
-;* V19 loc16 [V19,T47] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
+;* V19 loc16 [V19,T51] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
;* V20 loc17 [V20 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op
;* V21 loc18 [V21 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op
;* V22 loc19 [V22 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op
;* V23 loc20 [V23 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op
-;* V24 loc21 [V24,T48] ( 0, 0 ) ubyte -> zero-ref
+;* V24 loc21 [V24,T52] ( 0, 0 ) ubyte -> zero-ref
;* V25 loc22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V26 loc23 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V27 loc24 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Int128>
@@ -44,126 +44,132 @@
;* V32 loc29 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 loc30 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
; V34 OutArgs [V34 ] ( 1, 1 ) struct (72) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V35 tmp1 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int128>
-;* V36 tmp2 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int128>
-;* V37 tmp3 [V37,T04] ( 0, 0 ) int -> zero-ref single-def
-;* V38 tmp4 [V38,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.Int128>
-;* V39 tmp5 [V39,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.Int128>
+;* V35 tmp1 [V35 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int128>
+;* V36 tmp2 [V36 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Int128>
+;* V37 tmp3 [V37,T08] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp4 [V38,T12] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.Int128>
+;* V39 tmp5 [V39,T13] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.Int128>
;* V40 tmp6 [V40 ] ( 0, 0 ) byref -> zero-ref
;* V41 tmp7 [V41 ] ( 0, 0 ) ref -> zero-ref
;* V42 tmp8 [V42 ] ( 0, 0 ) byref -> zero-ref
;* V43 tmp9 [V43 ] ( 0, 0 ) ref -> zero-ref
-;* V44 tmp10 [V44,T18] ( 0, 0 ) ref -> zero-ref
-;* V45 tmp11 [V45,T19] ( 0, 0 ) ref -> zero-ref
+;* V44 tmp10 [V44,T22] ( 0, 0 ) ref -> zero-ref
+;* V45 tmp11 [V45,T23] ( 0, 0 ) ref -> zero-ref
;* V46 tmp12 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V47 tmp13 [V47 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
;* V48 tmp14 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V49 tmp15 [V49 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
-;* V50 tmp16 [V50,T20] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;* V51 tmp17 [V51,T21] ( 0, 0 ) ref -> zero-ref
-;* V52 tmp18 [V52,T22] ( 0, 0 ) ref -> zero-ref
-;* V53 tmp19 [V53,T23] ( 0, 0 ) ref -> zero-ref
-;* V54 tmp20 [V54,T24] ( 0, 0 ) ref -> zero-ref
-;* V55 tmp21 [V55,T25] ( 0, 0 ) ref -> zero-ref
-;* V56 tmp22 [V56,T26] ( 0, 0 ) ref -> zero-ref
+;* V50 tmp16 [V50,T24] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;* V51 tmp17 [V51,T25] ( 0, 0 ) ref -> zero-ref
+;* V52 tmp18 [V52,T26] ( 0, 0 ) ref -> zero-ref
+;* V53 tmp19 [V53,T27] ( 0, 0 ) ref -> zero-ref
+;* V54 tmp20 [V54,T28] ( 0, 0 ) ref -> zero-ref
+;* V55 tmp21 [V55,T29] ( 0, 0 ) ref -> zero-ref
+;* V56 tmp22 [V56,T30] ( 0, 0 ) ref -> zero-ref
;* V57 tmp23 [V57 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V58 tmp24 [V58 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-;* V59 tmp25 [V59,T27] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V60 tmp26 [V60,T12] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.Int128>
-; V61 tmp27 [V61,T13] ( 3, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int128>
-; V62 tmp28 [V62,T28] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V63 tmp29 [V63,T14] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V59 tmp25 [V59,T31] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V60 tmp26 [V60,T14] ( 4, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.Int128>
+; V61 tmp27 [V61,T15] ( 4, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int128>
+; V62 tmp28 [V62,T32] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V63 tmp29 [V63,T18] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V64 tmp30 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V65 tmp31 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int128>
+;* V65 tmp31 [V65 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inlining Arg" <System.Int128>
;* V66 tmp32 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
;* V67 tmp33 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V68 tmp34 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int128>
+;* V68 tmp34 [V68 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inlining Arg" <System.Int128>
;* V69 tmp35 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V70 tmp36 [V70,T49] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V71 tmp37 [V71,T50] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V72 tmp38 [V72,T51] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V70 tmp36 [V70,T53] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V71 tmp37 [V71,T54] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V72 tmp38 [V72,T55] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V73 tmp39 [V73 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V74 tmp40 [V74 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V75 tmp41 [V75 ] ( 0, 0 ) long -> zero-ref do-not-enreg[] "field V00._lower (fldOffset=0x0)" P-DEP
-;* V76 tmp42 [V76 ] ( 0, 0 ) long -> zero-ref do-not-enreg[] "field V00._upper (fldOffset=0x8)" P-DEP
-;* V77 tmp43 [V77 ] ( 0, 0 ) long -> zero-ref do-not-enreg[] "field V01._lower (fldOffset=0x0)" P-DEP
-;* V78 tmp44 [V78 ] ( 0, 0 ) long -> zero-ref do-not-enreg[] "field V01._upper (fldOffset=0x8)" P-DEP
-;* V79 tmp45 [V79 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V08.hasValue (fldOffset=0x0)" P-DEP
-;* V80 tmp46 [V80 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V08.value (fldOffset=0x4)" P-DEP
-;* V81 tmp47 [V81 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V13.hasValue (fldOffset=0x0)" P-DEP
-;* V82 tmp48 [V82 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V13.value (fldOffset=0x4)" P-DEP
-;* V83 tmp49 [V83 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
-;* V84 tmp50 [V84 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
-;* V85 tmp51 [V85 ] ( 0, 0 ) long -> zero-ref "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V86 tmp52 [V86 ] ( 0, 0 ) long -> zero-ref "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V87 tmp53 [V87,T08] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP
-;* V88 tmp54 [V88,T09] ( 0, 0 ) int -> zero-ref "field V31.value (fldOffset=0x4)" P-INDEP
-;* V89 tmp55 [V89 ] ( 0, 0 ) ubyte -> zero-ref "field V33.hasValue (fldOffset=0x0)" P-INDEP
-;* V90 tmp56 [V90 ] ( 0, 0 ) int -> zero-ref "field V33.value (fldOffset=0x4)" P-INDEP
-;* V91 tmp57 [V91,T52] ( 0, 0 ) ubyte -> zero-ref single-def "field V46.hasValue (fldOffset=0x0)" P-INDEP
-;* V92 tmp58 [V92,T35] ( 0, 0 ) int -> zero-ref single-def "field V46.value (fldOffset=0x4)" P-INDEP
-;* V93 tmp59 [V93,T36] ( 0, 0 ) ubyte -> zero-ref "field V47.hasValue (fldOffset=0x0)" P-INDEP
-;* V94 tmp60 [V94,T15] ( 0, 0 ) int -> zero-ref "field V47.value (fldOffset=0x4)" P-INDEP
-;* V95 tmp61 [V95,T53] ( 0, 0 ) ubyte -> zero-ref single-def "field V48.hasValue (fldOffset=0x0)" P-INDEP
-;* V96 tmp62 [V96,T37] ( 0, 0 ) int -> zero-ref single-def "field V48.value (fldOffset=0x4)" P-INDEP
-;* V97 tmp63 [V97,T38] ( 0, 0 ) ubyte -> zero-ref "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V98 tmp64 [V98,T16] ( 0, 0 ) int -> zero-ref "field V49.value (fldOffset=0x4)" P-INDEP
-;* V99 tmp65 [V99 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" <System.Int128>
-;* V100 tmp66 [V100 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" <System.Int128>
-; V101 tmp67 [V101 ] ( 2, 4 ) struct (16) [rbp-0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Int128>
-; V102 tmp68 [V102 ] ( 2, 4 ) struct (16) [rbp-0x28] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Int128>
-;* V103 tmp69 [V103,T39] ( 0, 0 ) int -> zero-ref "argument with side effect"
-;* V104 tmp70 [V104,T40] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V105 tmp71 [V105 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
-;* V106 tmp72 [V106 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V75 tmp41 [V75 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Int128]>
+;* V76 tmp42 [V76 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Int128]>
+; V77 tmp43 [V77,T03] ( 3, 1 ) long -> [rbp-0x10] EH-live spill-single-def "field V00._lower (fldOffset=0x0)" P-INDEP
+; V78 tmp44 [V78,T04] ( 3, 1 ) long -> [rbp-0x18] EH-live spill-single-def "field V00._upper (fldOffset=0x8)" P-INDEP
+; V79 tmp45 [V79,T05] ( 3, 1 ) long -> [rbp-0x20] EH-live spill-single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+; V80 tmp46 [V80,T06] ( 3, 1 ) long -> [rbp-0x28] EH-live spill-single-def "field V01._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp47 [V81 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V08.hasValue (fldOffset=0x0)" P-DEP
+;* V82 tmp48 [V82 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V08.value (fldOffset=0x4)" P-DEP
+;* V83 tmp49 [V83 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V13.hasValue (fldOffset=0x0)" P-DEP
+;* V84 tmp50 [V84 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V13.value (fldOffset=0x4)" P-DEP
+;* V85 tmp51 [V85 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
+;* V86 tmp52 [V86 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
+;* V87 tmp53 [V87 ] ( 0, 0 ) long -> zero-ref "field V27._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp54 [V88 ] ( 0, 0 ) long -> zero-ref "field V27._upper (fldOffset=0x8)" P-INDEP
+;* V89 tmp55 [V89,T16] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP
+;* V90 tmp56 [V90,T17] ( 0, 0 ) int -> zero-ref "field V31.value (fldOffset=0x4)" P-INDEP
+;* V91 tmp57 [V91 ] ( 0, 0 ) ubyte -> zero-ref "field V33.hasValue (fldOffset=0x0)" P-INDEP
+;* V92 tmp58 [V92 ] ( 0, 0 ) int -> zero-ref "field V33.value (fldOffset=0x4)" P-INDEP
+;* V93 tmp59 [V93,T56] ( 0, 0 ) ubyte -> zero-ref single-def "field V46.hasValue (fldOffset=0x0)" P-INDEP
+;* V94 tmp60 [V94,T39] ( 0, 0 ) int -> zero-ref single-def "field V46.value (fldOffset=0x4)" P-INDEP
+;* V95 tmp61 [V95,T40] ( 0, 0 ) ubyte -> zero-ref "field V47.hasValue (fldOffset=0x0)" P-INDEP
+;* V96 tmp62 [V96,T19] ( 0, 0 ) int -> zero-ref "field V47.value (fldOffset=0x4)" P-INDEP
+;* V97 tmp63 [V97,T57] ( 0, 0 ) ubyte -> zero-ref single-def "field V48.hasValue (fldOffset=0x0)" P-INDEP
+;* V98 tmp64 [V98,T41] ( 0, 0 ) int -> zero-ref single-def "field V48.value (fldOffset=0x4)" P-INDEP
+;* V99 tmp65 [V99,T42] ( 0, 0 ) ubyte -> zero-ref "field V49.hasValue (fldOffset=0x0)" P-INDEP
+;* V100 tmp66 [V100,T20] ( 0, 0 ) int -> zero-ref "field V49.value (fldOffset=0x4)" P-INDEP
+;* V101 tmp67 [V101 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Int128>
+;* V102 tmp68 [V102 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Int128>
+; V103 tmp69 [V103 ] ( 3, 6 ) struct (16) [rbp-0x38] do-not-enreg[XSF] addr-exposed "by-value struct argument" <System.Int128>
+; V104 tmp70 [V104 ] ( 3, 6 ) struct (16) [rbp-0x48] do-not-enreg[XSF] addr-exposed "by-value struct argument" <System.Int128>
+;* V105 tmp71 [V105,T43] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V106 tmp72 [V106,T44] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
;* V107 tmp73 [V107 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
;* V108 tmp74 [V108 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
-;* V109 tmp75 [V109,T29] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V110 tmp76 [V110,T30] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V111 tmp77 [V111,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V112 tmp78 [V112,T32] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V113 tmp79 [V113,T41] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V114 tmp80 [V114,T42] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-; V115 tmp81 [V115,T33] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V116 tmp82 [V116,T34] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V117 PSPSym [V117,T05] ( 1, 1 ) long -> [rbp-0x38] do-not-enreg[V] "PSPSym"
+;* V109 tmp75 [V109 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V110 tmp76 [V110 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V111 tmp77 [V111,T33] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V112 tmp78 [V112,T34] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V113 tmp79 [V113,T35] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V114 tmp80 [V114,T36] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V115 tmp81 [V115,T45] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;* V116 tmp82 [V116,T46] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+; V117 tmp83 [V117,T37] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V118 tmp84 [V118,T38] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V119 PSPSym [V119,T09] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 120
+; Lcl frame size = 152
G_M5157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push rbx
- sub rsp, 120
- lea rbp, [rsp+0x80]
- mov qword ptr [rbp-0x38], rsp
- mov bword ptr [rbp+0x10], rcx
- ; GC ptr vars +{V00}
- mov bword ptr [rbp+0x18], rdx
- ; GC ptr vars +{V01}
+ sub rsp, 152
+ lea rbp, [rsp+0xA0]
+ mov qword ptr [rbp-0x58], rsp
mov r11, r8
; gcrRegs +[r11]
- ;; size=29 bbWeight=1 PerfScore 6.00
-G_M5157_IG02: ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref
+ ;; size=24 bbWeight=1 PerfScore 4.00
+G_M5157_IG02: ; bbWeight=1, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, byref
; byrRegs +[rcx rdx]
+ mov r8, qword ptr [rdx]
+ mov qword ptr [rbp-0x20], r8
+ mov rdx, qword ptr [rdx+0x08]
+ ; byrRegs -[rdx]
+ mov qword ptr [rbp-0x28], rdx
+ mov rax, qword ptr [rcx]
+ mov qword ptr [rbp-0x10], rax
+ mov rcx, qword ptr [rcx+0x08]
+ ; byrRegs -[rcx]
+ mov qword ptr [rbp-0x18], rcx
test r11, r11
je G_M5157_IG08
- xor r8, r8
- ; gcrRegs +[r8]
- mov gword ptr [rbp-0x30], r8
+ xor r10, r10
+ ; gcrRegs +[r10]
+ mov gword ptr [rbp-0x50], r10
; GC ptr vars +{V05}
- ;; size=16 bbWeight=1 PerfScore 2.50
-G_M5157_IG03: ; bbWeight=1, gcVars=000000000000000B {V00 V01 V05}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref, isz
- ; gcrRegs -[r8]
- vmovups xmm0, xmmword ptr [rcx]
- vmovups xmmword ptr [rbp-0x18], xmm0
- vmovups xmm0, xmmword ptr [rdx]
- vmovups xmmword ptr [rbp-0x28], xmm0
- lea r8, [rbp-0x28]
- lea rdx, [rbp-0x18]
...
+32 (+8.49%) : 614559.dasm - Xunit.Assert:Equal[System.UInt128](System.UInt128,System.UInt128,System.Collections.Generic.IEqualityComparer`1[System.UInt128]) (Tier1)
@@ -9,31 +9,31 @@
; 5 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 6 ) byref -> [rbp+0x10] ld-addr-op EH-live single-def
-; V01 arg1 [V01,T01] ( 4, 6 ) byref -> [rbp+0x18] ld-addr-op EH-live single-def
+; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op single-def
+; V01 arg1 [V01,T01] ( 4, 8 ) byref -> rdx ld-addr-op single-def
; V02 arg2 [V02,T02] ( 4, 4 ) ref -> r11 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.UInt128]>
-;* V03 loc0 [V03,T43] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-;* V04 loc1 [V04,T44] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-; V05 loc2 [V05,T03] ( 3, 1 ) ref -> [rbp-0x30] do-not-enreg[M] class-hnd EH-live <<unknown class>>
+;* V03 loc0 [V03,T47] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+;* V04 loc1 [V04,T48] ( 0, 0 ) ref -> zero-ref class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+; V05 loc2 [V05,T07] ( 3, 1 ) ref -> [rbp-0x50] do-not-enreg[M] class-hnd EH-live <<unknown class>>
;* V06 loc3 [V06 ] ( 0, 0 ) ubyte -> zero-ref
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V08 loc5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
;* V09 loc6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.IEqualityComparer>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Xunit.Sdk.AssertEqualityComparer`1[System.UInt128]>
-;* V11 loc8 [V11,T06] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-;* V12 loc9 [V12,T07] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
+;* V11 loc8 [V11,T10] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
+;* V12 loc9 [V12,T11] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
;* V13 loc10 [V13 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
;* V14 loc11 [V14 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
-;* V15 loc12 [V15,T45] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
-;* V16 loc13 [V16,T46] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
-;* V17 loc14 [V17,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
+;* V15 loc12 [V15,T49] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
+;* V16 loc13 [V16,T50] ( 0, 0 ) ref -> zero-ref do-not-enreg[M] class-hnd EH-live <System.String>
+;* V17 loc14 [V17,T21] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V18 loc15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
-;* V19 loc16 [V19,T47] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
+;* V19 loc16 [V19,T51] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type>
;* V20 loc17 [V20 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op
;* V21 loc18 [V21 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op
;* V22 loc19 [V22 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op
;* V23 loc20 [V23 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op
-;* V24 loc21 [V24,T48] ( 0, 0 ) ubyte -> zero-ref
+;* V24 loc21 [V24,T52] ( 0, 0 ) ubyte -> zero-ref
;* V25 loc22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V26 loc23 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;* V27 loc24 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.UInt128>
@@ -44,126 +44,132 @@
;* V32 loc29 [V32 ] ( 0, 0 ) int -> zero-ref
;* V33 loc30 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
; V34 OutArgs [V34 ] ( 1, 1 ) struct (72) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V35 tmp1 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.UInt128>
-;* V36 tmp2 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <System.UInt128>
-;* V37 tmp3 [V37,T04] ( 0, 0 ) int -> zero-ref single-def
-;* V38 tmp4 [V38,T10] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
-;* V39 tmp5 [V39,T11] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
+;* V35 tmp1 [V35 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.UInt128>
+;* V36 tmp2 [V36 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.UInt128>
+;* V37 tmp3 [V37,T08] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp4 [V38,T12] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
+;* V39 tmp5 [V39,T13] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
;* V40 tmp6 [V40 ] ( 0, 0 ) byref -> zero-ref
;* V41 tmp7 [V41 ] ( 0, 0 ) ref -> zero-ref
;* V42 tmp8 [V42 ] ( 0, 0 ) byref -> zero-ref
;* V43 tmp9 [V43 ] ( 0, 0 ) ref -> zero-ref
-;* V44 tmp10 [V44,T18] ( 0, 0 ) ref -> zero-ref
-;* V45 tmp11 [V45,T19] ( 0, 0 ) ref -> zero-ref
+;* V44 tmp10 [V44,T22] ( 0, 0 ) ref -> zero-ref
+;* V45 tmp11 [V45,T23] ( 0, 0 ) ref -> zero-ref
;* V46 tmp12 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V47 tmp13 [V47 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
;* V48 tmp14 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V49 tmp15 [V49 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
-;* V50 tmp16 [V50,T20] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;* V51 tmp17 [V51,T21] ( 0, 0 ) ref -> zero-ref
-;* V52 tmp18 [V52,T22] ( 0, 0 ) ref -> zero-ref
-;* V53 tmp19 [V53,T23] ( 0, 0 ) ref -> zero-ref
-;* V54 tmp20 [V54,T24] ( 0, 0 ) ref -> zero-ref
-;* V55 tmp21 [V55,T25] ( 0, 0 ) ref -> zero-ref
-;* V56 tmp22 [V56,T26] ( 0, 0 ) ref -> zero-ref
+;* V50 tmp16 [V50,T24] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;* V51 tmp17 [V51,T25] ( 0, 0 ) ref -> zero-ref
+;* V52 tmp18 [V52,T26] ( 0, 0 ) ref -> zero-ref
+;* V53 tmp19 [V53,T27] ( 0, 0 ) ref -> zero-ref
+;* V54 tmp20 [V54,T28] ( 0, 0 ) ref -> zero-ref
+;* V55 tmp21 [V55,T29] ( 0, 0 ) ref -> zero-ref
+;* V56 tmp22 [V56,T30] ( 0, 0 ) ref -> zero-ref
;* V57 tmp23 [V57 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V58 tmp24 [V58 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-;* V59 tmp25 [V59,T27] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V60 tmp26 [V60,T12] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
-; V61 tmp27 [V61,T13] ( 3, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
-; V62 tmp28 [V62,T28] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V63 tmp29 [V63,T14] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V59 tmp25 [V59,T31] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V60 tmp26 [V60,T14] ( 4, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
+; V61 tmp27 [V61,T15] ( 4, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
+; V62 tmp28 [V62,T32] ( 2, 0 ) ref -> rdx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V63 tmp29 [V63,T18] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V64 tmp30 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V65 tmp31 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.UInt128>
+;* V65 tmp31 [V65 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inlining Arg" <System.UInt128>
;* V66 tmp32 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
;* V67 tmp33 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V68 tmp34 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.UInt128>
+;* V68 tmp34 [V68 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inlining Arg" <System.UInt128>
;* V69 tmp35 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V70 tmp36 [V70,T49] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V71 tmp37 [V71,T50] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V72 tmp38 [V72,T51] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V70 tmp36 [V70,T53] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V71 tmp37 [V71,T54] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V72 tmp38 [V72,T55] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V73 tmp39 [V73 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V74 tmp40 [V74 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V75 tmp41 [V75 ] ( 0, 0 ) long -> zero-ref do-not-enreg[] "field V00._lower (fldOffset=0x0)" P-DEP
-;* V76 tmp42 [V76 ] ( 0, 0 ) long -> zero-ref do-not-enreg[] "field V00._upper (fldOffset=0x8)" P-DEP
-;* V77 tmp43 [V77 ] ( 0, 0 ) long -> zero-ref do-not-enreg[] "field V01._lower (fldOffset=0x0)" P-DEP
-;* V78 tmp44 [V78 ] ( 0, 0 ) long -> zero-ref do-not-enreg[] "field V01._upper (fldOffset=0x8)" P-DEP
-;* V79 tmp45 [V79 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V08.hasValue (fldOffset=0x0)" P-DEP
-;* V80 tmp46 [V80 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V08.value (fldOffset=0x4)" P-DEP
-;* V81 tmp47 [V81 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V13.hasValue (fldOffset=0x0)" P-DEP
-;* V82 tmp48 [V82 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V13.value (fldOffset=0x4)" P-DEP
-;* V83 tmp49 [V83 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
-;* V84 tmp50 [V84 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
-;* V85 tmp51 [V85 ] ( 0, 0 ) long -> zero-ref "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V86 tmp52 [V86 ] ( 0, 0 ) long -> zero-ref "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V87 tmp53 [V87,T08] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP
-;* V88 tmp54 [V88,T09] ( 0, 0 ) int -> zero-ref "field V31.value (fldOffset=0x4)" P-INDEP
-;* V89 tmp55 [V89 ] ( 0, 0 ) ubyte -> zero-ref "field V33.hasValue (fldOffset=0x0)" P-INDEP
-;* V90 tmp56 [V90 ] ( 0, 0 ) int -> zero-ref "field V33.value (fldOffset=0x4)" P-INDEP
-;* V91 tmp57 [V91,T52] ( 0, 0 ) ubyte -> zero-ref single-def "field V46.hasValue (fldOffset=0x0)" P-INDEP
-;* V92 tmp58 [V92,T35] ( 0, 0 ) int -> zero-ref single-def "field V46.value (fldOffset=0x4)" P-INDEP
-;* V93 tmp59 [V93,T36] ( 0, 0 ) ubyte -> zero-ref "field V47.hasValue (fldOffset=0x0)" P-INDEP
-;* V94 tmp60 [V94,T15] ( 0, 0 ) int -> zero-ref "field V47.value (fldOffset=0x4)" P-INDEP
-;* V95 tmp61 [V95,T53] ( 0, 0 ) ubyte -> zero-ref single-def "field V48.hasValue (fldOffset=0x0)" P-INDEP
-;* V96 tmp62 [V96,T37] ( 0, 0 ) int -> zero-ref single-def "field V48.value (fldOffset=0x4)" P-INDEP
-;* V97 tmp63 [V97,T38] ( 0, 0 ) ubyte -> zero-ref "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V98 tmp64 [V98,T16] ( 0, 0 ) int -> zero-ref "field V49.value (fldOffset=0x4)" P-INDEP
-;* V99 tmp65 [V99 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" <System.UInt128>
-;* V100 tmp66 [V100 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" <System.UInt128>
-; V101 tmp67 [V101 ] ( 2, 4 ) struct (16) [rbp-0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.UInt128>
-; V102 tmp68 [V102 ] ( 2, 4 ) struct (16) [rbp-0x28] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.UInt128>
-;* V103 tmp69 [V103,T39] ( 0, 0 ) int -> zero-ref "argument with side effect"
-;* V104 tmp70 [V104,T40] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V105 tmp71 [V105 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
-;* V106 tmp72 [V106 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V75 tmp41 [V75 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.UInt128]>
+;* V76 tmp42 [V76 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.UInt128]>
+; V77 tmp43 [V77,T03] ( 3, 1 ) long -> [rbp-0x10] EH-live spill-single-def "field V00._lower (fldOffset=0x0)" P-INDEP
+; V78 tmp44 [V78,T04] ( 3, 1 ) long -> [rbp-0x18] EH-live spill-single-def "field V00._upper (fldOffset=0x8)" P-INDEP
+; V79 tmp45 [V79,T05] ( 3, 1 ) long -> [rbp-0x20] EH-live spill-single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+; V80 tmp46 [V80,T06] ( 3, 1 ) long -> [rbp-0x28] EH-live spill-single-def "field V01._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp47 [V81 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V08.hasValue (fldOffset=0x0)" P-DEP
+;* V82 tmp48 [V82 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V08.value (fldOffset=0x4)" P-DEP
+;* V83 tmp49 [V83 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V13.hasValue (fldOffset=0x0)" P-DEP
+;* V84 tmp50 [V84 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V13.value (fldOffset=0x4)" P-DEP
+;* V85 tmp51 [V85 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
+;* V86 tmp52 [V86 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
+;* V87 tmp53 [V87 ] ( 0, 0 ) long -> zero-ref "field V27._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp54 [V88 ] ( 0, 0 ) long -> zero-ref "field V27._upper (fldOffset=0x8)" P-INDEP
+;* V89 tmp55 [V89,T16] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP
+;* V90 tmp56 [V90,T17] ( 0, 0 ) int -> zero-ref "field V31.value (fldOffset=0x4)" P-INDEP
+;* V91 tmp57 [V91 ] ( 0, 0 ) ubyte -> zero-ref "field V33.hasValue (fldOffset=0x0)" P-INDEP
+;* V92 tmp58 [V92 ] ( 0, 0 ) int -> zero-ref "field V33.value (fldOffset=0x4)" P-INDEP
+;* V93 tmp59 [V93,T56] ( 0, 0 ) ubyte -> zero-ref single-def "field V46.hasValue (fldOffset=0x0)" P-INDEP
+;* V94 tmp60 [V94,T39] ( 0, 0 ) int -> zero-ref single-def "field V46.value (fldOffset=0x4)" P-INDEP
+;* V95 tmp61 [V95,T40] ( 0, 0 ) ubyte -> zero-ref "field V47.hasValue (fldOffset=0x0)" P-INDEP
+;* V96 tmp62 [V96,T19] ( 0, 0 ) int -> zero-ref "field V47.value (fldOffset=0x4)" P-INDEP
+;* V97 tmp63 [V97,T57] ( 0, 0 ) ubyte -> zero-ref single-def "field V48.hasValue (fldOffset=0x0)" P-INDEP
+;* V98 tmp64 [V98,T41] ( 0, 0 ) int -> zero-ref single-def "field V48.value (fldOffset=0x4)" P-INDEP
+;* V99 tmp65 [V99,T42] ( 0, 0 ) ubyte -> zero-ref "field V49.hasValue (fldOffset=0x0)" P-INDEP
+;* V100 tmp66 [V100,T20] ( 0, 0 ) int -> zero-ref "field V49.value (fldOffset=0x4)" P-INDEP
+;* V101 tmp67 [V101 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.UInt128>
+;* V102 tmp68 [V102 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.UInt128>
+; V103 tmp69 [V103 ] ( 3, 6 ) struct (16) [rbp-0x38] do-not-enreg[XSF] addr-exposed "by-value struct argument" <System.UInt128>
+; V104 tmp70 [V104 ] ( 3, 6 ) struct (16) [rbp-0x48] do-not-enreg[XSF] addr-exposed "by-value struct argument" <System.UInt128>
+;* V105 tmp71 [V105,T43] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V106 tmp72 [V106,T44] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
;* V107 tmp73 [V107 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
;* V108 tmp74 [V108 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
-;* V109 tmp75 [V109,T29] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V110 tmp76 [V110,T30] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V111 tmp77 [V111,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V112 tmp78 [V112,T32] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V113 tmp79 [V113,T41] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V114 tmp80 [V114,T42] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-; V115 tmp81 [V115,T33] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
-; V116 tmp82 [V116,T34] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V117 PSPSym [V117,T05] ( 1, 1 ) long -> [rbp-0x38] do-not-enreg[V] "PSPSym"
+;* V109 tmp75 [V109 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V110 tmp76 [V110 ] ( 0, 0 ) int -> zero-ref "argument with side effect"
+;* V111 tmp77 [V111,T33] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V112 tmp78 [V112,T34] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V113 tmp79 [V113,T35] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V114 tmp80 [V114,T36] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V115 tmp81 [V115,T45] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;* V116 tmp82 [V116,T46] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+; V117 tmp83 [V117,T37] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
+; V118 tmp84 [V118,T38] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V119 PSPSym [V119,T09] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 120
+; Lcl frame size = 152
G_M20965_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push rbx
- sub rsp, 120
- lea rbp, [rsp+0x80]
- mov qword ptr [rbp-0x38], rsp
- mov bword ptr [rbp+0x10], rcx
- ; GC ptr vars +{V00}
- mov bword ptr [rbp+0x18], rdx
- ; GC ptr vars +{V01}
+ sub rsp, 152
+ lea rbp, [rsp+0xA0]
+ mov qword ptr [rbp-0x58], rsp
mov r11, r8
; gcrRegs +[r11]
- ;; size=29 bbWeight=1 PerfScore 6.00
-G_M20965_IG02: ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref
+ ;; size=24 bbWeight=1 PerfScore 4.00
+G_M20965_IG02: ; bbWeight=1, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, byref
; byrRegs +[rcx rdx]
+ mov r8, qword ptr [rdx]
+ mov qword ptr [rbp-0x20], r8
+ mov rdx, qword ptr [rdx+0x08]
+ ; byrRegs -[rdx]
+ mov qword ptr [rbp-0x28], rdx
+ mov rax, qword ptr [rcx]
+ mov qword ptr [rbp-0x10], rax
+ mov rcx, qword ptr [rcx+0x08]
+ ; byrRegs -[rcx]
+ mov qword ptr [rbp-0x18], rcx
test r11, r11
je G_M20965_IG08
- xor r8, r8
- ; gcrRegs +[r8]
- mov gword ptr [rbp-0x30], r8
+ xor r10, r10
+ ; gcrRegs +[r10]
+ mov gword ptr [rbp-0x50], r10
; GC ptr vars +{V05}
- ;; size=16 bbWeight=1 PerfScore 2.50
-G_M20965_IG03: ; bbWeight=1, gcVars=000000000000000B {V00 V01 V05}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref, isz
- ; gcrRegs -[r8]
- vmovups xmm0, xmmword ptr [rcx]
- vmovups xmmword ptr [rbp-0x18], xmm0
- vmovups xmm0, xmmword ptr [rdx]
- vmovups xmmword ptr [rbp-0x28], xmm0
- lea r8, [rbp-0x28]
- lea rdx, [rbp-0x18]
...
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch
-49 (-25.39%) : 34157.dasm - Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (FullOpts)
@@ -8,23 +8,28 @@
; 0 inlinees with PGO data; 19 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 9, 8.50) ref -> rbx class-hnd single-def <Microsoft.Interop.LibraryImportCompilationData>
+; V00 arg0 [V00,T02] ( 9, 8.50) ref -> rbx class-hnd single-def <Microsoft.Interop.LibraryImportCompilationData>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 7, 14 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
-; V03 tmp2 [V03,T02] ( 7, 14 ) ref -> rsi class-hnd exact single-def "dup spill" <Microsoft.Interop.LibraryImportData>
+;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
+; V03 tmp2 [V03,T01] ( 7, 14 ) ref -> rdi class-hnd exact single-def "dup spill" <Microsoft.Interop.LibraryImportData>
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp7 [V08,T06] ( 3, 2 ) ref -> rdx
+; V08 tmp7 [V08,T05] ( 3, 2 ) ref -> rdx
;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp9 [V10,T00] ( 8, 16 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
+; V10 tmp9 [V10,T00] ( 8, 16 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V13 tmp12 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V15 cse0 [V15,T04] ( 3, 3 ) ref -> rbp "CSE #02: aggressive"
-; V16 cse1 [V16,T05] ( 3, 3 ) long -> rsi "CSE #01: aggressive"
+;* V15 tmp14 [V15,T06] ( 0, 0 ) struct (48) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <Microsoft.Interop.LibraryImportData>
+;* V16 tmp15 [V16 ] ( 0, 0 ) long -> zero-ref single-def "V15.[000..008)"
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "V15.[016..020)"
+;* V18 tmp17 [V18 ] ( 0, 0 ) int -> zero-ref "V15.[020..024)"
+;* V19 tmp18 [V19 ] ( 0, 0 ) ubyte -> zero-ref "V15.[024..025)"
+; V20 cse0 [V20,T03] ( 2, 2 ) ref -> rsi "CSE #01: aggressive"
+; V21 cse1 [V21,T04] ( 3, 3 ) ref -> rbp "CSE #02: aggressive"
;
; Lcl frame size = 40
@@ -37,79 +42,58 @@ G_M28281_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rcx
; gcrRegs +[rbx]
;; size=11 bbWeight=1 PerfScore 4.50
-G_M28281_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; Microsoft.Interop.LibraryImportData
- mov rcx, rsi
+G_M28281_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rsi, gword ptr [rbx+0x20]
+ ; gcrRegs +[rsi]
+ mov rcx, 0xD1FFAB1E ; Microsoft.Interop.LibraryImportData
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
- mov rbp, gword ptr [rbx+0x20]
+ xor ecx, ecx
+ mov dword ptr [rdi+0x10], ecx
+ mov byte ptr [rdi+0x18], 0
+ ;; size=31 bbWeight=1 PerfScore 5.75
+G_M28281_IG03: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov dword ptr [rdi+0x14], ecx
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M28281_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ xor rbp, rbp
; gcrRegs +[rbp]
+ mov gword ptr [rdi+0x08], rbp
lea rcx, bword ptr [rdi+0x20]
; byrRegs +[rcx]
- mov rdx, rbp
+ mov rdx, rsi
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rdx rsi]
; byrRegs -[rcx]
- mov rcx, rsi
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- mov ecx, dword ptr [rdi+0x10]
- mov dword ptr [rsi+0x10], ecx
- movzx rcx, byte ptr [rdi+0x18]
- mov byte ptr [rsi+0x18], cl
- mov ecx, dword ptr [rdi+0x14]
- mov dword ptr [rsi+0x14], ecx
- mov rdx, gword ptr [rdi+0x08]
+ mov gword ptr [rdi+0x28], rbp
+ mov rdx, gword ptr [rbx+0x28]
; gcrRegs +[rdx]
- lea rcx, bword ptr [rsi+0x08]
+ lea rcx, bword ptr [rdi+0x28]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
- ; byrRegs -[rcx]
- lea rcx, bword ptr [rsi+0x20]
- ; byrRegs +[rcx]
- mov rdx, rbp
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx rbp]
; byrRegs -[rcx]
- mov rdx, gword ptr [rdi+0x28]
- ; gcrRegs +[rdx]
- lea rcx, bword ptr [rsi+0x28]
- ; byrRegs +[rcx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rdi]
- ; byrRegs -[rcx]
- mov rdx, gword ptr [rbx+0x28]
- ; gcrRegs +[rdx]
- lea rcx, bword ptr [rsi+0x28]
- ; byrRegs +[rcx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
- ; byrRegs -[rcx]
mov ecx, dword ptr [rbx+0x10]
- mov dword ptr [rsi+0x10], ecx
+ mov dword ptr [rdi+0x10], ecx
movzx rcx, byte ptr [rbx+0x18]
- mov byte ptr [rsi+0x18], cl
+ mov byte ptr [rdi+0x18], cl
mov ecx, dword ptr [rbx+0x14]
- mov dword ptr [rsi+0x14], ecx
+ mov dword ptr [rdi+0x14], ecx
cmp gword ptr [rbx+0x08], 0
- jne SHORT G_M28281_IG04
- ;; size=144 bbWeight=1 PerfScore 41.25
-G_M28281_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M28281_IG06
+ ;; size=61 bbWeight=1 PerfScore 20.50
+G_M28281_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
xor rdx, rdx
; gcrRegs +[rdx]
- jmp SHORT G_M28281_IG05
+ jmp SHORT G_M28281_IG07
;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M28281_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M28281_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] +[rbx]
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
@@ -119,17 +103,17 @@ G_M28281_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
mov rdx, rax
; gcrRegs +[rdx]
;; size=13 bbWeight=0.50 PerfScore 2.62
-G_M28281_IG05: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
+G_M28281_IG07: ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- lea rcx, bword ptr [rsi+0x08]
+ lea rcx, bword ptr [rdi+0x08]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- mov rax, rsi
+ mov rax, rdi
; gcrRegs +[rax]
;; size=12 bbWeight=1 PerfScore 1.75
-G_M28281_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M28281_IG08: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
@@ -138,7 +122,7 @@ G_M28281_IG06: ; bbWeight=1, epilog, nogc, extend
ret
;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 193, prolog size 8, PerfScore 54.50, instruction count 57, allocated bytes for code 193 (MethodHash=79a39186) for method Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (FullOpts)
+; Total bytes of code 144, prolog size 8, PerfScore 40.50, instruction count 45, allocated bytes for code 144 (MethodHash=79a39186) for method Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (FullOpts)
; ============================================================
Unwind Info:
-35 (-23.81%) : 14329.dasm - Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (FullOpts)
@@ -8,60 +8,56 @@
; 0 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 7, 7 ) ref -> rbx class-hnd single-def <Microsoft.Interop.GeneratedComInterfaceCompilationData>
+; V00 arg0 [V00,T02] ( 7, 7 ) ref -> rbx class-hnd single-def <Microsoft.Interop.GeneratedComInterfaceCompilationData>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 6, 12 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
+;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
; V03 tmp2 [V03,T00] ( 7, 14 ) ref -> rsi class-hnd exact single-def "dup spill" <Microsoft.Interop.GeneratedComInterfaceData>
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp7 [V08,T06] ( 3, 2 ) ref -> rdx
+; V08 tmp7 [V08,T04] ( 3, 2 ) ref -> rdx
; V09 tmp8 [V09,T01] ( 7, 14 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
;* V10 tmp9 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V14 cse0 [V14,T05] ( 3, 2.50) ref -> rcx "CSE #02: aggressive"
-; V15 cse1 [V15,T04] ( 3, 3 ) long -> rsi "CSE #01: aggressive"
+;* V14 tmp13 [V14 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <Microsoft.Interop.GeneratedComInterfaceData>
+;* V15 tmp14 [V15 ] ( 0, 0 ) long -> zero-ref single-def "V14.[000..008)"
+;* V16 tmp15 [V16 ] ( 0, 0 ) int -> zero-ref "V14.[016..020)"
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "V14.[020..024)"
+;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref "V14.[024..025)"
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "V14.[028..032)"
+; V20 cse0 [V20,T03] ( 3, 2.50) ref -> rcx "CSE #01: aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M25584_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
-G_M25584_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; Microsoft.Interop.GeneratedComInterfaceData
- mov rcx, rsi
+ ;; size=9 bbWeight=1 PerfScore 2.50
+G_M25584_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E ; Microsoft.Interop.GeneratedComInterfaceData
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- mov rcx, rsi
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
- mov ecx, dword ptr [rdi+0x10]
+ xor ecx, ecx
mov dword ptr [rsi+0x10], ecx
- movzx rcx, byte ptr [rdi+0x18]
- mov byte ptr [rsi+0x18], cl
- mov ecx, dword ptr [rdi+0x14]
+ mov byte ptr [rsi+0x18], 0
+ ;; size=27 bbWeight=1 PerfScore 3.75
+G_M25584_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov dword ptr [rsi+0x14], ecx
- mov rdx, gword ptr [rdi+0x08]
- ; gcrRegs +[rdx]
- lea rcx, bword ptr [rsi+0x08]
- ; byrRegs +[rcx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
- ; byrRegs -[rcx]
- mov ecx, dword ptr [rdi+0x1C]
+ ;; size=3 bbWeight=1 PerfScore 1.00
+G_M25584_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov gword ptr [rsi+0x08], rcx
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M25584_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rsi+0x1C], ecx
mov ecx, dword ptr [rbx+0x10]
mov dword ptr [rsi+0x10], ecx
@@ -72,15 +68,15 @@ G_M25584_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
test rcx, rcx
- jne SHORT G_M25584_IG04
- ;; size=98 bbWeight=1 PerfScore 31.00
-G_M25584_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx rdi]
+ jne SHORT G_M25584_IG07
+ ;; size=31 bbWeight=1 PerfScore 13.25
+G_M25584_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
xor rdx, rdx
; gcrRegs +[rdx]
- jmp SHORT G_M25584_IG05
+ jmp SHORT G_M25584_IG08
;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M25584_IG04: ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
+G_M25584_IG07: ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] +[rcx]
call [<unknown method>]
; gcrRegs -[rcx] +[rax]
@@ -88,7 +84,7 @@ G_M25584_IG04: ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0
mov rdx, rax
; gcrRegs +[rdx]
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M25584_IG05: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
+G_M25584_IG08: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
@@ -100,15 +96,14 @@ G_M25584_IG05: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000
mov rax, rsi
; gcrRegs +[rax]
;; size=18 bbWeight=1 PerfScore 4.75
-G_M25584_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+G_M25584_IG09: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 147, prolog size 7, PerfScore 44.75, instruction count 46, allocated bytes for code 147 (MethodHash=ad6f9c0f) for method Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (FullOpts)
+; Total bytes of code 112, prolog size 6, PerfScore 31.25, instruction count 35, allocated bytes for code 112 (MethodHash=ad6f9c0f) for method Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (FullOpts)
; ============================================================
Unwind Info:
@@ -116,12 +111,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)
-31 (-17.71%) : 95230.dasm - System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_0:b__21():System.Object:this (FullOpts)
@@ -8,91 +8,72 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> rsi this class-hnd single-def <System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_0>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_0>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 2, 4 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[int]>
-;* V03 tmp2 [V03,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[int]>
-; V04 tmp3 [V04,T03] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
-; V05 tmp4 [V05 ] ( 3, 3 ) struct ( 8) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[int]>
-; V06 tmp5 [V06,T04] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.GenericEqualityComparer`1[int]>
-; V07 tmp6 [V07,T01] ( 3, 6 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[int]>
-; V08 tmp7 [V08,T08] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V09 tmp8 [V09 ] ( 3, 3 ) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V05.array (fldOffset=0x0)" P-DEP
-; V10 tmp9 [V10,T09] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V11 cse0 [V11,T05] ( 3, 3 ) byref -> rdx "CSE #01: aggressive"
-; V12 cse1 [V12,T06] ( 3, 3 ) long -> rbx "CSE #02: aggressive"
+;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[int]>
+;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[int]>
+;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V05 tmp4 [V05 ] ( 3, 3 ) struct ( 8) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[int]>
+; V06 tmp5 [V06,T02] ( 2, 4 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.GenericEqualityComparer`1[int]>
+; V07 tmp6 [V07,T00] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[int]>
+; V08 tmp7 [V08,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Collections.Immutable.ImmutableArray`1[int]]>
+; V10 tmp9 [V10 ] ( 3, 3 ) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V05.array (fldOffset=0x0)" P-DEP
+;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref "V09.[000..008)"
+; V12 tmp11 [V12,T03] ( 2, 2 ) ref -> rcx single-def "V09.[008..016)"
+; V13 tmp12 [V13,T05] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M58364_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
push rsi
push rbx
- sub rsp, 48
+ sub rsp, 40
xor eax, eax
- mov qword ptr [rsp+0x28], rax
- mov rsi, rcx
- ; gcrRegs +[rsi]
- ;; size=17 bbWeight=1 PerfScore 4.75
-G_M58364_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rbx, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableArray`1[int]
- mov rcx, rbx
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- add rsi, 80
- ; gcrRegs -[rsi]
- ; byrRegs +[rsi]
- lea rdx, bword ptr [rax+0x08]
- ; byrRegs +[rdx]
- mov rdi, rdx
- ; byrRegs +[rdi]
- call CORINFO_HELP_ASSIGN_BYREF
- ; gcrRegs -[rax]
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rsi, gword ptr [rcx]
- ; gcrRegs +[rsi]
- ; byrRegs -[rsi]
- mov rcx, gword ptr [rdx]
+ mov qword ptr [rsp+0x20], rax
+ ;; size=13 bbWeight=1 PerfScore 3.50
+G_M58364_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x28], rcx
- cmp gword ptr [rsp+0x28], 0
+ mov rcx, gword ptr [rcx+0x50]
+ mov rax, 0xD1FFAB1E ; const ptr
+ mov rbx, gword ptr [rax]
+ ; gcrRegs +[rbx]
+ mov gword ptr [rsp+0x20], rcx
+ cmp gword ptr [rsp+0x20], 0
je SHORT G_M58364_IG04
- mov rcx, rbx
+ mov rcx, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableArray`1[int]
; gcrRegs -[rcx]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- ; byrRegs -[rdx rdi]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- lea rcx, [rsp+0x28]
- mov r8, rsi
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ lea rcx, [rsp+0x20]
+ mov r8, rbx
; gcrRegs +[r8]
xor rdx, rdx
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rdx rsi r8]
+ ; gcrRegs -[rdx rbx r8]
; gcr arg pop 0
- lea rcx, bword ptr [rbx+0x08]
+ lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
- ;; size=105 bbWeight=1 PerfScore 19.25
+ ;; size=79 bbWeight=1 PerfScore 15.75
G_M58364_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 48
+ add rsp, 40
pop rbx
pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=7 bbWeight=1 PerfScore 2.25
G_M58364_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rbx]
+ ; gcrRegs -[rax rsi]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -116,7 +97,7 @@ G_M58364_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=45 bbWeight=0 PerfScore 0.00
-; Total bytes of code 175, prolog size 14, PerfScore 26.75, instruction count 46, allocated bytes for code 175 (MethodHash=ce781c03) for method System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_0:<RemoveRangeEnumerableInvalid>b__21():System.Object:this (FullOpts)
+; Total bytes of code 144, prolog size 13, PerfScore 21.50, instruction count 36, allocated bytes for code 144 (MethodHash=ce781c03) for method System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_0:<RemoveRangeEnumerableInvalid>b__21():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -124,12 +105,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: 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)
+ 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)
+22 (+36.67%) : 277424.dasm - System.Security.Permissions.Tests.PermissionTests:StrongNamePublicKeyBlobTests() (FullOpts)
@@ -10,15 +10,16 @@
;
; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V01 tmp1 [V01,T00] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Security.Permissions.StrongNamePublicKeyBlob>
-;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Object>
+;* V02 tmp2 [V02 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Object>
;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType>
-; V04 tmp4 [V04,T01] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
+; V04 tmp4 [V04 ] ( 2, 2 ) struct ( 8) [rsp+0x28] do-not-enreg[XSF] addr-exposed "stack allocated ref class temp" <System.Object>
+; V05 tmp5 [V05,T01] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
;
-; Lcl frame size = 32
+; Lcl frame size = 48
G_M24101_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 32
+ sub rsp, 48
;; size=5 bbWeight=1 PerfScore 1.25
G_M24101_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Security.Permissions.StrongNamePublicKeyBlob
@@ -27,6 +28,10 @@ G_M24101_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
+ xor ecx, ecx
+ mov qword ptr [rsp+0x28], rcx
+ mov rcx, 0xD1FFAB1E ; System.Object
+ mov qword ptr [rsp+0x28], rcx
mov rcx, rbx
; gcrRegs +[rcx]
call <unknown method>
@@ -44,14 +49,14 @@ G_M24101_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rcx]
; gcr arg pop 0
nop
- ;; size=49 bbWeight=1 PerfScore 7.75
+ ;; size=71 bbWeight=1 PerfScore 10.25
G_M24101_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 60, prolog size 5, PerfScore 10.75, instruction count 16, allocated bytes for code 60 (MethodHash=1724a1da) for method System.Security.Permissions.Tests.PermissionTests:StrongNamePublicKeyBlobTests() (FullOpts)
+; Total bytes of code 82, prolog size 5, PerfScore 13.25, instruction count 20, allocated bytes for code 82 (MethodHash=1724a1da) for method System.Security.Permissions.Tests.PermissionTests:StrongNamePublicKeyBlobTests() (FullOpts)
; ============================================================
Unwind Info:
@@ -64,5 +69,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+22 (+66.67%) : 277482.dasm - System.Security.Permissions.Tests.CodeGroupTests:FileCodeGroupCallMethods() (FullOpts)
@@ -11,9 +11,13 @@
; V00 OutArgs [V00 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V01 tmp1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Security.Policy.GacMembershipCondition>
; V02 tmp2 [V02,T00] ( 2, 4 ) ref -> rcx class-hnd exact single-def "NewObj constructor temp" <System.Security.Policy.FileCodeGroup>
-;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Object>
+;* V03 tmp3 [V03 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Object>
;* V04 tmp4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Security.Policy.Evidence>
;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Security.Policy.Evidence>
+;* V06 tmp6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Security.Policy.GacMembershipCondition>
+; V07 tmp7 [V07 ] ( 2, 2 ) struct ( 8) [rsp+0x20] do-not-enreg[XSF] addr-exposed "stack allocated ref class temp" <System.Object>
+;* V08 tmp8 [V08 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Security.Policy.Evidence>
+;* V09 tmp9 [V09 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Security.Policy.Evidence>
;
; Lcl frame size = 40
@@ -27,17 +31,22 @@ G_M59522_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
+ xor eax, eax
+ ; gcrRegs -[rax]
+ mov qword ptr [rsp+0x20], rax
+ mov rax, 0xD1FFAB1E ; System.Object
+ mov qword ptr [rsp+0x20], rax
call <unknown method>
- ; gcrRegs -[rax rcx]
+ ; gcrRegs -[rcx]
; gcr arg pop 0
nop
- ;; size=24 bbWeight=1 PerfScore 2.75
+ ;; size=46 bbWeight=1 PerfScore 5.25
G_M59522_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 33, prolog size 4, PerfScore 4.25, instruction count 8, allocated bytes for code 33 (MethodHash=7590177d) for method System.Security.Permissions.Tests.CodeGroupTests:FileCodeGroupCallMethods() (FullOpts)
+; Total bytes of code 55, prolog size 4, PerfScore 6.75, instruction count 12, allocated bytes for code 55 (MethodHash=7590177d) for method System.Security.Permissions.Tests.CodeGroupTests:FileCodeGroupCallMethods() (FullOpts)
; ============================================================
Unwind Info:
+25 (+2500.00%) : 110098.dasm - System.ComponentModel.Composition.ComposablePartDefinitionTests:Constructor1_ShouldNotThrow():this (FullOpts)
@@ -10,17 +10,26 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.ComponentModel.Composition.ComposablePartDefinitionTests>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.ComponentModel.Composition.Factories.PartDefinitionFactory+NoOverridesComposablePartDefinition>
+;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.ComponentModel.Composition.Factories.PartDefinitionFactory+NoOverridesComposablePartDefinition>
+; V03 tmp2 [V03 ] ( 2, 2 ) struct ( 8) [rsp+0x00] do-not-enreg[XSF] addr-exposed "stack allocated ref class temp" <System.ComponentModel.Composition.Factories.PartDefinitionFactory+NoOverridesComposablePartDefinition>
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M40482_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
-G_M40482_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ret
+ push rax
;; size=1 bbWeight=1 PerfScore 1.00
+G_M40482_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor eax, eax
+ mov qword ptr [rsp], rax
+ mov rax, 0xD1FFAB1E ; System.ComponentModel.Composition.Factories.PartDefinitionFactory+NoOverridesComposablePartDefinition
+ mov qword ptr [rsp], rax
+ ;; size=20 bbWeight=1 PerfScore 2.50
+G_M40482_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 1, prolog size 0, PerfScore 1.00, instruction count 1, allocated bytes for code 1 (MethodHash=580e61dd) for method System.ComponentModel.Composition.ComposablePartDefinitionTests:Constructor1_ShouldNotThrow():this (FullOpts)
+; Total bytes of code 26, prolog size 1, PerfScore 4.75, instruction count 7, allocated bytes for code 26 (MethodHash=580e61dd) for method System.ComponentModel.Composition.ComposablePartDefinitionTests:Constructor1_ShouldNotThrow():this (FullOpts)
; ============================================================
Unwind Info:
@@ -28,8 +37,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
realworld.run.windows.x64.checked.mch
-48 (-15.05%) : 8934.dasm - FSharp.Compiler.PatternMatchCompilation:GetSubExprOfInput[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):FSharp.Compiler.TypedTree+Expr (FullOpts)
@@ -12,32 +12,32 @@
; V01 arg0 [V01,T01] ( 3, 2.50) ref -> rbx class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>
; V02 arg1 [V02,T00] ( 3, 3 ) ref -> r8 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
; V03 arg2 [V03,T02] ( 3, 2.50) ref -> rsi class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]>
-; V04 arg3 [V04,T18] ( 1, 0.50) ref -> [rsp+0xB0] class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]]>
-; V05 arg4 [V05,T10] ( 2, 2 ) ref -> r9 class-hnd single-def <FSharp.Compiler.PatternMatchCompilation+SubExprOfInput>
-; V06 loc0 [V06,T07] ( 3, 2 ) ref -> rbp class-hnd single-def <FSharp.Compiler.TypedTree+Expr>
-; V07 loc1 [V07,T08] ( 3, 2 ) ref -> r14 class-hnd exact single-def <FSharp.Compiler.TypedTree+Val>
-; V08 loc2 [V08,T09] ( 3, 2 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Expr]]>
+; V04 arg3 [V04,T16] ( 1, 0.50) ref -> [rsp+0xB0] class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]]>
+; V05 arg4 [V05,T09] ( 2, 2 ) ref -> r9 class-hnd single-def <FSharp.Compiler.PatternMatchCompilation+SubExprOfInput>
+; V06 loc0 [V06,T06] ( 2, 1.50) ref -> rcx class-hnd single-def <FSharp.Compiler.TypedTree+Expr>
+; V07 loc1 [V07,T07] ( 3, 2 ) ref -> rbp class-hnd exact single-def <FSharp.Compiler.TypedTree+Val>
+; V08 loc2 [V08,T08] ( 3, 2 ) ref -> r14 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Expr]]>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T04] ( 3, 3 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType]>
+;* V10 tmp1 [V10 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType]>
;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]>
;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Val]>
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Val]>
-; V14 tmp5 [V14,T11] ( 2, 2 ) ref -> [rsp+0x30] class-hnd spill-single-def "Inlining Arg" <FSharp.Compiler.TypedTree+TType>
-; V15 tmp6 [V15,T12] ( 2, 2 ) ref -> rbp class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]>
-; V16 tmp7 [V16,T03] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]>
+;* V14 tmp5 [V14,T10] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <FSharp.Compiler.TypedTree+TType>
+; V15 tmp6 [V15,T11] ( 2, 2 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]>
+; V16 tmp7 [V16,T03] ( 4, 4 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]>
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <FSharp.Compiler.TypedTree+Expr>
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]>
;* V19 tmp10 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <FSharp.Compiler.Text.Range>
-;* V20 tmp11 [V20 ] ( 0, 0 ) long -> zero-ref "field V19.code1 (fldOffset=0x0)" P-INDEP
-;* V21 tmp12 [V21 ] ( 0, 0 ) long -> zero-ref "field V19.code2 (fldOffset=0x8)" P-INDEP
-; V22 tmp13 [V22 ] ( 2, 2 ) struct (16) [rsp+0x38] do-not-enreg[XS] addr-exposed "by-value struct argument" <FSharp.Compiler.Text.Range>
-; V23 tmp14 [V23,T13] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; V24 tmp15 [V24,T14] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V25 tmp16 [V25,T15] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V26 tmp17 [V26,T16] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
-; V27 cse0 [V27,T06] ( 3, 2.50) ref -> rdi "CSE #02: moderate"
-; V28 cse1 [V28,T17] ( 3, 1.50) ref -> r12 "CSE #03: moderate"
-; V29 cse2 [V29,T05] ( 3, 3 ) ref -> rdx "CSE #01: aggressive"
+;* V20 tmp11 [V20,T15] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] "stack allocated ref class temp" <System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType]>
+;* V21 tmp12 [V21 ] ( 0, 0 ) long -> zero-ref "field V19.code1 (fldOffset=0x0)" P-INDEP
+;* V22 tmp13 [V22 ] ( 0, 0 ) long -> zero-ref "field V19.code2 (fldOffset=0x8)" P-INDEP
+;* V23 tmp14 [V23 ] ( 0, 0 ) long -> zero-ref single-def "V20.[000..008)"
+; V24 tmp15 [V24 ] ( 2, 2 ) struct (16) [rsp+0x38] do-not-enreg[XS] addr-exposed "by-value struct argument" <FSharp.Compiler.Text.Range>
+; V25 tmp16 [V25,T12] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
+; V26 tmp17 [V26,T13] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
+; V27 cse0 [V27,T05] ( 3, 2.50) ref -> rdi "CSE #03: aggressive"
+; V28 cse1 [V28,T14] ( 2, 1 ) ref -> r15 "CSE #02: moderate"
+; V29 cse2 [V29,T04] ( 3, 3 ) ref -> rdx "CSE #01: aggressive"
;
; Lcl frame size = 72
@@ -64,25 +64,26 @@ G_M52294_IG02: ; bbWeight=1, gcrefRegs=0348 {rbx rsi r8 r9}, byrefRegs=00
; gcrRegs +[rdx]
mov rdi, gword ptr [rdx+0x08]
; gcrRegs +[rdi]
- mov rbp, rdi
+ mov rcx, rdi
+ ; gcrRegs +[rcx]
+ mov rbp, gword ptr [rdx+0x10]
; gcrRegs +[rbp]
- mov r14, gword ptr [rdx+0x10]
+ mov r14, gword ptr [r9+0x08]
; gcrRegs +[r14]
- mov r15, gword ptr [r9+0x08]
- ; gcrRegs +[r15]
cmp gword ptr [r8+0x10], 0
jne SHORT G_M52294_IG05
;; size=26 bbWeight=1 PerfScore 12.25
-G_M52294_IG03: ; bbWeight=0.50, gcrefRegs=8020 {rbp r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx rbx rsi rdi r8-r9 r14]
+G_M52294_IG03: ; bbWeight=0.50, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx rbx rbp rsi rdi r8-r9]
mov r8, 0xD1FFAB1E ; const ptr
mov r8, gword ptr [r8]
; gcrRegs +[r8]
- mov r9, rbp
+ mov r9, rcx
; gcrRegs +[r9]
- mov rdx, r15
+ mov rdx, r14
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown method>
+ ; gcrRegs -[rcx]
;; size=29 bbWeight=0.50 PerfScore 1.50
G_M52294_IG04: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
@@ -96,85 +97,62 @@ G_M52294_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop r15
tail.jmp [<unknown method>]
;; size=22 bbWeight=0.50 PerfScore 3.12
-G_M52294_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdx r8-r9] +[rbx rsi rdi r14]
- mov rcx, 0xD1FFAB1E ; System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType]
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
- mov r12, gword ptr [r14+0x10]
- ; gcrRegs +[r12]
- mov gword ptr [rsp+0x30], r12
- ; GC ptr vars +{V14}
- lea rcx, bword ptr [r13+0x08]
- ; byrRegs +[rcx]
- mov rdx, rbp
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rbp]
- ; byrRegs -[rcx]
- lea rcx, bword ptr [r13+0x10]
- ; byrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x30]
- ; gcrRegs +[rdx]
- ; GC ptr vars -{V14}
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx r13]
- ; byrRegs -[rcx]
+G_M52294_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rdx r8-r9] +[rbx rbp rsi rdi]
+ mov r15, gword ptr [rbp+0x10]
+ ; gcrRegs +[r15]
mov rcx, 0xD1FFAB1E ; const ptr
- mov rbp, gword ptr [rcx]
- ; gcrRegs +[rbp]
+ mov r13, gword ptr [rcx]
+ ; gcrRegs +[r13]
mov rcx, 0xD1FFAB1E ; Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
- lea rcx, bword ptr [r13+0x08]
+ mov r12, rax
+ ; gcrRegs +[r12]
+ lea rcx, bword ptr [r12+0x08]
; byrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx rsi]
; byrRegs -[rcx]
- lea rcx, bword ptr [r13+0x10]
+ lea rcx, bword ptr [r12+0x10]
; byrRegs +[rcx]
- mov rdx, rbp
+ mov rdx, r13
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rbp]
+ ; gcrRegs -[rdx r13]
; byrRegs -[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- mov r8, r12
+ mov r8, 0xD1FFAB1E ; const ptr
+ mov r8, gword ptr [r8]
; gcrRegs +[r8]
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- vmovups xmm0, xmmword ptr [r14+0x28]
+ vmovups xmm0, xmmword ptr [rbp+0x28]
vmovups xmmword ptr [rsp+0x38], xmm0
- mov gword ptr [rsp+0x20], rcx
+ mov gword ptr [rsp+0x20], r8
; gcr arg write
- lea rcx, [rsp+0x38]
- ; gcrRegs -[rcx]
- mov qword ptr [rsp+0x28], rcx
+ lea r8, [rsp+0x38]
+ ; gcrRegs -[r8]
+ mov qword ptr [rsp+0x28], r8
+ mov r8, r15
+ ; gcrRegs +[r8]
+ mov r9, r12
+ ; gcrRegs +[r9]
mov rcx, rbx
; gcrRegs +[rcx]
- mov r9, r13
- ; gcrRegs +[r9]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
call [FSharp.Compiler.TypedTreeOps:mkAppsAux(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range):FSharp.Compiler.TypedTree+Expr]
- ; gcrRegs -[rcx rdx rbx rdi r8-r9 r12-r14] +[rax]
+ ; gcrRegs -[rcx rdx rbx rbp rdi r8-r9 r12 r15] +[rax]
; gcr arg pop 0
mov r9, rax
; gcrRegs +[r9]
- mov rdx, r15
+ mov rdx, r14
; gcrRegs +[rdx]
mov r8, gword ptr [rsp+0xB0]
; gcrRegs +[r8]
mov rcx, 0xD1FFAB1E ; <unknown method>
- ;; size=190 bbWeight=0.50 PerfScore 15.75
+ ;; size=142 bbWeight=0.50 PerfScore 12.38
G_M52294_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
@@ -188,7 +166,7 @@ G_M52294_IG06: ; bbWeight=0.50, epilog, nogc, extend
tail.jmp [<unknown method>]
;; size=22 bbWeight=0.50 PerfScore 3.12
-; Total bytes of code 319, prolog size 30, PerfScore 45.50, instruction count 82, allocated bytes for code 319 (MethodHash=9cd633b9) for method FSharp.Compiler.PatternMatchCompilation:GetSubExprOfInput[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):FSharp.Compiler.TypedTree+Expr (FullOpts)
+; Total bytes of code 271, prolog size 30, PerfScore 42.12, instruction count 72, allocated bytes for code 271 (MethodHash=9cd633b9) for method FSharp.Compiler.PatternMatchCompilation:GetSubExprOfInput[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):FSharp.Compiler.TypedTree+Expr (FullOpts)
; ============================================================
Unwind Info:
-48 (-7.14%) : 8584.dasm - FSharp.Compiler.CheckExpressions+TcAttrs@10772:Invoke(int,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
@@ -8,65 +8,71 @@
; 0 inlinees with PGO data; 41 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 7, 6 ) ref -> rbx this class-hnd single-def <FSharp.Compiler.CheckExpressions+TcAttrs@10772>
-; V01 arg1 [V01,T15] ( 3, 3 ) int -> rdi single-def
-; V02 arg2 [V02,T16] ( 3, 3 ) ubyte -> r8 single-def
-; V03 arg3 [V03,T14] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]>
+; V00 this [V00,T07] ( 7, 6 ) ref -> rbx this class-hnd single-def <FSharp.Compiler.CheckExpressions+TcAttrs@10772>
+; V01 arg1 [V01,T13] ( 3, 3 ) int -> rdi single-def
+; V02 arg2 [V02,T14] ( 3, 3 ) ubyte -> r8 single-def
+; V03 arg3 [V03,T12] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]>
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref single-def
-;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-; V06 loc2 [V06,T26] ( 3, 2.50) ref -> rsi class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+; V06 loc2 [V06,T23] ( 3, 2.50) ref -> rsi class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.DiagnosticsLogger+DiagnosticWithText>
-; V08 loc4 [V08,T39] ( 3, 1.50) ref -> rdi class-hnd single-def <System.Tuple`2[int,System.String]>
+; V08 loc4 [V08,T36] ( 3, 1.50) ref -> rdi class-hnd single-def <System.Tuple`2[int,System.String]>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T35] ( 2, 2 ) int -> rbp
-; V11 tmp2 [V11,T36] ( 2, 2 ) int -> rbp "impAppendStmt"
-; V12 tmp3 [V12,T11] ( 7, 7 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.DiagnosticsLogger+DiagnosticWithText>
-;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-; V14 tmp5 [V14,T13] ( 3, 6 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckBasics+TcFileState>
-; V15 tmp6 [V15,T19] ( 2, 4 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckBasics+TcEnv>
-;* V16 tmp7 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-; V17 tmp8 [V17,T37] ( 2, 2 ) ubyte -> rsi single-def "Inline stloc first use temp"
-; V18 tmp9 [V18,T21] ( 4, 3 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-; V19 tmp10 [V19,T09] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-;* V20 tmp11 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-; V21 tmp12 [V21,T28] ( 2, 2 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" <FSharp.Compiler.TcGlobals+TcGlobals>
+; V10 tmp1 [V10,T32] ( 2, 2 ) int -> rbp
+; V11 tmp2 [V11,T33] ( 2, 2 ) int -> rbp "impAppendStmt"
+; V12 tmp3 [V12,T09] ( 7, 7 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.DiagnosticsLogger+DiagnosticWithText>
+;* V13 tmp4 [V13 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+; V14 tmp5 [V14,T11] ( 3, 6 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckBasics+TcFileState>
+; V15 tmp6 [V15,T17] ( 2, 4 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckBasics+TcEnv>
+;* V16 tmp7 [V16 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V18 tmp9 [V18,T18] ( 4, 3 ) ref -> rsi class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+;* V19 tmp10 [V19 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;* V20 tmp11 [V20 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+; V21 tmp12 [V21,T25] ( 2, 2 ) ref -> r13 class-hnd single-def "Inline stloc first use temp" <FSharp.Compiler.TcGlobals+TcGlobals>
; V22 tmp13 [V22,T04] ( 8, 16 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CheckExpressions+TcAttributesWithPossibleTargetsEx@11261>
-;* V23 tmp14 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-; V24 tmp15 [V24,T23] ( 3, 3 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V25 tmp16 [V25,T38] ( 2, 2 ) ubyte -> rsi single-def "Inline stloc first use temp"
-; V26 tmp17 [V26,T29] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V27 tmp18 [V27,T07] ( 5, 10 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-; V28 tmp19 [V28,T20] ( 2, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V29 tmp20 [V29,T24] ( 2, 3 ) ref -> rbp class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckExpressions+TcAttributesMaybeFailEx@11281>
-; V30 tmp21 [V30,T25] ( 4, 2.50) ref -> r15 class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;* V23 tmp14 [V23 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+; V24 tmp15 [V24,T20] ( 3, 3 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;* V25 tmp16 [V25 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V26 tmp17 [V26,T26] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V27 tmp18 [V27 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;* V28 tmp19 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V29 tmp20 [V29,T21] ( 2, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckExpressions+TcAttributesMaybeFailEx@11281>
+; V30 tmp21 [V30,T22] ( 4, 2.50) ref -> r14 class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
;* V31 tmp22 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-; V32 tmp23 [V32,T41] ( 2, 1 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-; V33 tmp24 [V33,T27] ( 4, 2 ) ref -> registers class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
-; V34 tmp25 [V34,T40] ( 3, 1.50) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-; V35 tmp26 [V35,T30] ( 2, 2 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.TypedTree+Attrib>
-; V36 tmp27 [V36,T31] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-; V37 tmp28 [V37,T17] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-; V38 tmp29 [V38,T32] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.__Canon>
-; V39 tmp30 [V39,T18] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-; V40 tmp31 [V40,T01] ( 4, 25 ) ref -> registers class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-; V41 tmp32 [V41,T02] ( 4, 18 ) ref -> r13 class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+; V32 tmp23 [V32,T38] ( 2, 1 ) ref -> rbp class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+; V33 tmp24 [V33,T24] ( 4, 2 ) ref -> registers class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
+; V34 tmp25 [V34,T37] ( 3, 1.50) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+; V35 tmp26 [V35,T27] ( 2, 2 ) ref -> rbp class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.TypedTree+Attrib>
+; V36 tmp27 [V36,T28] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+; V37 tmp28 [V37,T15] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+; V38 tmp29 [V38,T29] ( 2, 2 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V39 tmp30 [V39,T16] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+; V40 tmp31 [V40,T01] ( 4, 25 ) ref -> rbp class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+; V41 tmp32 [V41,T02] ( 4, 18 ) ref -> r15 class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-; V43 tmp34 [V43,T10] ( 2, 8 ) ref -> r12 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+; V43 tmp34 [V43,T08] ( 2, 8 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
;* V44 tmp35 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
-; V45 tmp36 [V45,T03] ( 3, 17 ) ref -> rbp class-hnd single-def "Inlining Arg" <<unknown class>>
+; V45 tmp36 [V45,T03] ( 3, 17 ) ref -> rdi class-hnd single-def "Inlining Arg" <<unknown class>>
;* V46 tmp37 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-; V47 tmp38 [V47,T05] ( 2, 16 ) ref -> r14 class-hnd "Inlining Arg" <System.__Canon>
-; V48 tmp39 [V48,T00] ( 5, 40 ) ref -> [rsp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-; V49 tmp40 [V49,T33] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.__Canon>
+; V47 tmp38 [V47,T05] ( 2, 16 ) ref -> rbp class-hnd "Inlining Arg" <System.__Canon>
+; V48 tmp39 [V48,T00] ( 5, 40 ) ref -> r12 class-hnd exact "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+; V49 tmp40 [V49,T30] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.__Canon>
;* V50 tmp41 [V50 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <FSharp.Compiler.Text.Range>
-; V51 tmp42 [V51,T42] ( 2, 1 ) long -> rdi single-def "field V50.code1 (fldOffset=0x0)" P-INDEP
-; V52 tmp43 [V52,T43] ( 2, 1 ) long -> rbx single-def "field V50.code2 (fldOffset=0x8)" P-INDEP
-; V53 tmp44 [V53,T34] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V54 cse0 [V54,T06] ( 3, 12 ) ref -> r12 "CSE #06: aggressive"
-; V55 cse1 [V55,T22] ( 4, 3 ) ref -> r14 "CSE #01: moderate"
-; V56 cse2 [V56,T12] ( 5, 6 ) long -> registers multi-def "CSE #05: aggressive"
+; V51 tmp42 [V51,T34] ( 2, 2 ) struct (24) [rsp+0x40] do-not-enreg[SF] must-init "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+; V52 tmp43 [V52,T35] ( 2, 2 ) struct (24) [rsp+0x28] do-not-enreg[SF] must-init "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+; V53 tmp44 [V53,T39] ( 2, 1 ) long -> rdi single-def "field V50.code1 (fldOffset=0x0)" P-INDEP
+; V54 tmp45 [V54,T40] ( 2, 1 ) long -> rbx single-def "field V50.code2 (fldOffset=0x8)" P-INDEP
+;* V55 tmp46 [V55 ] ( 0, 0 ) long -> zero-ref single-def "V51.[000..008)"
+;* V56 tmp47 [V56 ] ( 0, 0 ) ubyte -> zero-ref "V51.[016..017)"
+;* V57 tmp48 [V57 ] ( 0, 0 ) long -> zero-ref single-def "V52.[000..008)"
+;* V58 tmp49 [V58 ] ( 0, 0 ) ubyte -> zero-ref single-def "V52.[016..017)"
+; V59 tmp50 [V59,T31] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V60 cse0 [V60,T06] ( 3, 12 ) ref -> r13 "CSE #06: aggressive"
+; V61 cse1 [V61,T19] ( 4, 3 ) ref -> rbp "CSE #01: moderate"
+; V62 cse2 [V62,T10] ( 5, 6 ) long -> registers multi-def "CSE #05: aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 88
G_M61336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -77,13 +83,18 @@ G_M61336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 88
+ xor eax, eax
+ mov qword ptr [rsp+0x28], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqu ymmword ptr [rsp+0x30], ymm4
+ mov qword ptr [rsp+0x50], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov edi, edx
mov rsi, r9
; gcrRegs +[rsi]
- ;; size=24 bbWeight=1 PerfScore 9.00
+ ;; size=46 bbWeight=1 PerfScore 13.58
G_M61336_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov ebp, 0x2000
xor ecx, ecx
@@ -134,49 +145,74 @@ G_M61336_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
call [<unknown method>]
; gcrRegs -[rdx rsi r9 r12] +[rax]
; gcr arg pop 0
- movzx rsi, byte ptr [rax+0x10]
- mov rdi, gword ptr [rax+0x08]
- ; gcrRegs +[rdi]
- mov rcx, 0xD1FFAB1E ; System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
- mov rbp, rax
- ; gcrRegs +[rbp]
- mov rdx, rdi
+ movsx rdx, byte ptr [rax+0x10]
+ mov rdx, gword ptr [rax+0x08]
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown method>
call [<unknown method>]
- ; gcrRegs -[rdx rdi]
+ ; gcrRegs -[rdx]
; gcr arg pop 0
- lea rcx, bword ptr [rbp+0x08]
- ; byrRegs +[rcx]
- mov rdx, rax
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
- ; byrRegs -[rcx]
- mov byte ptr [rbp+0x10], sil
- movzx rsi, byte ptr [rbp+0x10]
- mov rdi, gword ptr [rbp+0x08]
- ; gcrRegs +[rdi]
- mov rcx, 0xD1FFAB1E ; const ptr
- mov rbp, gword ptr [rcx]
- mov r14, gword ptr [rdi+0x10]
- ; gcrRegs +[r14]
- test r14, r14
- je SHORT G_M61336_IG04
- ;; size=216 bbWeight=1 PerfScore 42.00
-G_M61336_IG03: ; bbWeight=0.50, gcrefRegs=40A8 {rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
- cmp gword ptr [r14+0x10], 0
- jne SHORT G_M61336_IG05
- mov rbp, gword ptr [rdi+0x08]
- mov r14, gword ptr [rbp+0x08]
+ mov gword ptr [rsp+0x48], rax
+ mov rsi, gword ptr [rsp+0x48]
+ ; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rcx]
- mov r15, 0xD1FFAB1E ; Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]
- mov rcx, r15
+ ; gcrRegs +[rdi]
+ mov rbp, gword ptr [rsi+0x10]
+ ; gcrRegs +[rbp]
+ test rbp, rbp
+ je SHORT G_M61336_IG04
+ ;; size=180 bbWeight=1 PerfScore 37.50
+G_M61336_IG03: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ cmp gword ptr [rbp+0x10], 0
+ jne SHORT G_M61336_IG05
+ mov rdi, gword ptr [rsi+0x08]
+ mov rbp, gword ptr [rdi+0x08]
+ mov rcx, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rcx]
+ mov r14, 0xD1FFAB1E ; Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]
+ mov rcx, r14
call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[rbp] +[rax]
+ ; gcrRegs -[rdi] +[rax]
+ ; gcr arg pop 0
+ mov r14, rax
+ ; gcrRegs +[r14]
+ lea rcx, bword ptr [r14+0x08]
+ ; byrRegs +[rcx]
+ mov rdx, rbp
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rdx rbp]
+ ; byrRegs -[rcx]
+ lea rcx, bword ptr [r14+0x10]
+ ; byrRegs +[rcx]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rdx rsi]
+ ; byrRegs -[rcx]
+ jmp G_M61336_IG09
+ ;; size=78 bbWeight=0.50 PerfScore 8.75
+G_M61336_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
+ mov rcx, 0xD1FFAB1E ; const ptr
+ mov r14, gword ptr [rcx]
+ ; gcrRegs +[r14]
+ jmp G_M61336_IG09
+ ;; size=18 bbWeight=0.50 PerfScore 2.12
+G_M61336_IG05: ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14] +[rbp rsi rdi]
+ mov rcx, gword ptr [rsi+0x08]
+ ; gcrRegs +[rcx]
+ mov r14, gword ptr [rcx+0x08]
+ ; gcrRegs +[r14]
+ mov rcx, 0xD1FFAB1E ; Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]
+ ; gcrRegs -[rcx]
+ mov rsi, rcx
+ ; gcrRegs -[rsi]
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
...
-47 (-6.70%) : 10516.dasm - FSharp.Compiler.CheckExpressions:TcAttributesCanFail(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]] (FullOpts)
@@ -8,55 +8,61 @@
; 0 inlinees with PGO data; 41 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T12] ( 5, 5 ) ref -> rbx class-hnd single-def <FSharp.Compiler.CheckBasics+TcFileState>
-; V01 arg1 [V01,T14] ( 4, 4 ) ref -> rsi class-hnd single-def <FSharp.Compiler.CheckBasics+TcEnv>
-; V02 arg2 [V02,T16] ( 4, 4 ) int -> rbp single-def
-; V03 arg3 [V03,T15] ( 4, 4 ) ref -> rdi class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]>
-;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-; V05 loc1 [V05,T32] ( 2, 2 ) ubyte -> r14 single-def
-; V06 loc2 [V06,T22] ( 3, 3 ) ref -> r15 class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+; V00 arg0 [V00,T10] ( 5, 5 ) ref -> rbx class-hnd single-def <FSharp.Compiler.CheckBasics+TcFileState>
+; V01 arg1 [V01,T12] ( 4, 4 ) ref -> rsi class-hnd single-def <FSharp.Compiler.CheckBasics+TcEnv>
+; V02 arg2 [V02,T14] ( 4, 4 ) int -> rbp single-def
+; V03 arg3 [V03,T13] ( 4, 4 ) ref -> rdi class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]>
+;* V04 loc0 [V04 ] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;* V05 loc1 [V05 ] ( 0, 0 ) ubyte -> zero-ref single-def
+; V06 loc2 [V06,T19] ( 3, 3 ) ref -> r15 class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T04] ( 8, 16 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CheckExpressions+TcAttributesCanFail@11291>
-; V09 tmp2 [V09,T10] ( 4, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]]>
-;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-; V12 tmp5 [V12,T33] ( 2, 2 ) ubyte -> r14 single-def "Inline stloc first use temp"
-; V13 tmp6 [V13,T20] ( 4, 3 ) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-; V14 tmp7 [V14,T08] ( 5, 10 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-; V16 tmp9 [V16,T27] ( 2, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" <FSharp.Compiler.TcGlobals+TcGlobals>
+; V09 tmp2 [V09,T08] ( 4, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]]>
+;* V10 tmp3 [V10 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;* V11 tmp4 [V11 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+; V12 tmp5 [V12,T29] ( 2, 2 ) ubyte -> r14 single-def "Inline stloc first use temp"
+; V13 tmp6 [V13,T17] ( 4, 3 ) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;* V15 tmp8 [V15 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+; V16 tmp9 [V16,T24] ( 2, 2 ) ref -> r14 class-hnd single-def "Inline stloc first use temp" <FSharp.Compiler.TcGlobals+TcGlobals>
; V17 tmp10 [V17,T05] ( 8, 16 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CheckExpressions+TcAttributesWithPossibleTargetsEx@11261>
-;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-; V19 tmp12 [V19,T23] ( 3, 3 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V20 tmp13 [V20,T34] ( 2, 2 ) ubyte -> r14 single-def "Inline stloc first use temp"
-; V21 tmp14 [V21,T28] ( 2, 2 ) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-; V22 tmp15 [V22,T09] ( 5, 10 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-; V23 tmp16 [V23,T19] ( 2, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-; V24 tmp17 [V24,T24] ( 2, 3 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckExpressions+TcAttributesMaybeFailEx@11281>
-; V25 tmp18 [V25,T25] ( 4, 2.50) ref -> r13 class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;* V18 tmp11 [V18 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+; V19 tmp12 [V19,T20] ( 3, 3 ) ref -> rax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V20 tmp13 [V20,T30] ( 2, 2 ) ubyte -> r14 single-def "Inline stloc first use temp"
+; V21 tmp14 [V21,T25] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V22 tmp15 [V22 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V24 tmp17 [V24,T21] ( 2, 3 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckExpressions+TcAttributesMaybeFailEx@11281>
+; V25 tmp18 [V25,T22] ( 4, 2.50) ref -> r13 class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-; V27 tmp20 [V27,T36] ( 2, 1 ) ref -> r12 class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-; V28 tmp21 [V28,T26] ( 4, 2 ) ref -> registers class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
-; V29 tmp22 [V29,T35] ( 3, 1.50) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-; V30 tmp23 [V30,T29] ( 2, 2 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.TypedTree+Attrib>
-; V31 tmp24 [V31,T30] ( 2, 2 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-; V32 tmp25 [V32,T17] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-; V33 tmp26 [V33,T31] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.__Canon>
-; V34 tmp27 [V34,T18] ( 4, 4 ) ref -> [rsp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+; V27 tmp20 [V27,T34] ( 2, 1 ) ref -> r12 class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+; V28 tmp21 [V28,T23] ( 4, 2 ) ref -> registers class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
+; V29 tmp22 [V29,T33] ( 3, 1.50) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+; V30 tmp23 [V30,T26] ( 2, 2 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.TypedTree+Attrib>
+; V31 tmp24 [V31,T27] ( 2, 2 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+; V32 tmp25 [V32,T15] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+; V33 tmp26 [V33,T28] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.__Canon>
+; V34 tmp27 [V34,T16] ( 4, 4 ) ref -> [rsp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
; V35 tmp28 [V35,T01] ( 4, 25 ) ref -> registers class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
; V36 tmp29 [V36,T02] ( 4, 18 ) ref -> [rsp+0x30] class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
;* V37 tmp30 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-; V38 tmp31 [V38,T11] ( 2, 8 ) ref -> [rsp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+; V38 tmp31 [V38,T09] ( 2, 8 ) ref -> [rsp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
;* V39 tmp32 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
; V40 tmp33 [V40,T03] ( 3, 17 ) ref -> r13 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V41 tmp34 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
; V42 tmp35 [V42,T06] ( 2, 16 ) ref -> r12 class-hnd "Inlining Arg" <System.__Canon>
; V43 tmp36 [V43,T00] ( 5, 40 ) ref -> [rsp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-; V44 cse0 [V44,T07] ( 3, 12 ) ref -> r8 "CSE #06: aggressive"
-; V45 cse1 [V45,T21] ( 4, 3 ) ref -> r12 "CSE #01: moderate"
-; V46 cse2 [V46,T13] ( 5, 6 ) long -> [rsp+0x40] multi-def "CSE #05: aggressive"
+; V44 tmp37 [V44,T31] ( 2, 2 ) struct (24) [rsp+0x60] do-not-enreg[SF] must-init "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+; V45 tmp38 [V45,T32] ( 2, 2 ) struct (24) [rsp+0x48] do-not-enreg[SF] must-init "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;* V46 tmp39 [V46 ] ( 0, 0 ) long -> zero-ref single-def "V44.[000..008)"
+;* V47 tmp40 [V47 ] ( 0, 0 ) ubyte -> zero-ref "V44.[016..017)"
+;* V48 tmp41 [V48 ] ( 0, 0 ) long -> zero-ref single-def "V45.[000..008)"
+;* V49 tmp42 [V49 ] ( 0, 0 ) ubyte -> zero-ref "V45.[016..017)"
+; V50 cse0 [V50,T07] ( 3, 12 ) ref -> r8 "CSE #06: aggressive"
+; V51 cse1 [V51,T18] ( 4, 3 ) ref -> r12 "CSE #01: moderate"
+; V52 cse2 [V52,T11] ( 5, 6 ) long -> [rsp+0x40] multi-def "CSE #05: aggressive"
;
-; Lcl frame size = 72
+; Lcl frame size = 120
G_M3481_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -67,7 +73,12 @@ G_M3481_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 72
+ sub rsp, 120
+ xor eax, eax
+ mov qword ptr [rsp+0x48], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqu ymmword ptr [rsp+0x50], ymm4
+ mov qword ptr [rsp+0x70], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
@@ -75,7 +86,7 @@ G_M3481_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov ebp, r8d
mov rdi, r9
; gcrRegs +[rdi]
- ;; size=28 bbWeight=1 PerfScore 9.25
+ ;; size=50 bbWeight=1 PerfScore 13.83
G_M3481_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r14, gword ptr [rbx+0x08]
; gcrRegs +[r14]
@@ -120,38 +131,25 @@ G_M3481_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rdx r9 r15] +[rax]
; gcr arg pop 0
movzx r14, byte ptr [rax+0x10]
- mov r15, gword ptr [rax+0x08]
- ; gcrRegs +[r15]
- mov rcx, 0xD1FFAB1E ; System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
- mov rdx, r15
+ mov rdx, gword ptr [rax+0x08]
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown method>
call [<unknown method>]
- ; gcrRegs -[rdx r15]
+ ; gcrRegs -[rdx]
; gcr arg pop 0
- lea rcx, bword ptr [r13+0x08]
- ; byrRegs +[rcx]
- mov rdx, rax
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
- ; byrRegs -[rcx]
- mov byte ptr [r13+0x10], r14b
- movzx r14, byte ptr [r13+0x10]
- mov r15, gword ptr [r13+0x08]
+ mov gword ptr [rsp+0x68], rax
+ mov r15, gword ptr [rsp+0x68]
; gcrRegs +[r15]
mov rcx, 0xD1FFAB1E ; const ptr
mov r13, gword ptr [rcx]
+ ; gcrRegs +[r13]
mov r12, gword ptr [r15+0x10]
; gcrRegs +[r12]
test r12, r12
je SHORT G_M3481_IG04
- ;; size=191 bbWeight=1 PerfScore 37.25
+ ;; size=155 bbWeight=1 PerfScore 30.75
G_M3481_IG03: ; bbWeight=0.50, gcrefRegs=B0C8 {rbx rsi rdi r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
cmp gword ptr [r12+0x10], 0
jne SHORT G_M3481_IG05
mov r13, gword ptr [r15+0x08]
@@ -296,25 +294,12 @@ G_M3481_IG08: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg
;; size=30 bbWeight=0.50 PerfScore 2.50
G_M3481_IG09: ; bbWeight=1, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- mov rcx, 0xD1FFAB1E ; System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov r15, rax
+ mov gword ptr [rsp+0x50], r13
+ mov r15, gword ptr [rsp+0x50]
; gcrRegs +[r15]
- lea rcx, bword ptr [r15+0x08]
- ; byrRegs +[rcx]
- mov rdx, r13
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx r13]
- ; byrRegs -[rcx]
- mov byte ptr [r15+0x10], r14b
- movzx r14, byte ptr [r15+0x10]
- mov r15, gword ptr [r15+0x08]
mov rcx, 0xD1FFAB1E ; FSharp.Compiler.CheckExpressions+TcAttributesCanFail@11291
call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
+ ; gcrRegs -[r13] +[rax]
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
@@ -370,9 +355,9 @@ G_M3481_IG09: ; bbWeight=1, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0
; byrRegs -[rcx]
mov rax, rbx
; gcrRegs +[rax]
- ;; size=162 bbWeight=1 PerfScore 24.00
+ ;; size=129 bbWeight=1 PerfScore 17.75
G_M3481_IG10: ; bbWeight=1, epilog, nogc, extend
- add rsp, 72
+ add rsp, 120
pop rbx
pop rbp
pop rsi
@@ -384,7 +369,7 @@ G_M3481_IG10: ; bbWeight=1, epilog, nogc, extend
ret
;; size=17 bbWeight=1 PerfScore 5.25
-; Total bytes of code 701, prolog size 16, PerfScore 199.50, instruction count 168, allocated bytes for code 701 (MethodHash=0776f266) for method FSharp.Compiler.CheckExpressions:TcAttributesCanFail(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]] (FullOpts)
+; Total bytes of code 654, prolog size 38, PerfScore 191.33, instruction count 158, allocated bytes for code 654 (MethodHash=0776f266) for method FSharp.Compiler.CheckExpressions:TcAttributesCanFail(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]] (FullOpts)
; ============================================================
Unwind Info:
@@ -397,7 +382,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 14 * 8 + 8 = 120 = 0x78
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+7 (+3.23%) : 10582.dasm - FSharp.Compiler.SyntaxTreeOps:|TyparsAndConstraints|(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]] (FullOpts)
@@ -9,29 +9,33 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 4, 3.50) ref -> rcx class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]>
-;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]>
+;* V01 loc0 [V01 ] ( 0, 0 ) byref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]>
-; V03 loc2 [V03,T09] ( 3, 1.50) ref -> rbx class-hnd single-def <FSharp.Compiler.Syntax.SynTyparDecls>
-; V04 loc3 [V04,T05] ( 2, 2 ) ref -> rsi class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl]>
-; V05 loc4 [V05,T06] ( 2, 2 ) ref -> rdi class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]>
+; V03 loc2 [V03,T08] ( 3, 1.50) ref -> rbx class-hnd single-def <FSharp.Compiler.Syntax.SynTyparDecls>
+; V04 loc3 [V04,T04] ( 2, 2 ) ref -> rsi class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl]>
+; V05 loc4 [V05,T05] ( 2, 2 ) ref -> rdi class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 4, 2.50) ref -> rbx
+; V08 tmp1 [V08,T03] ( 4, 2.50) byref -> rbx
; V09 tmp2 [V09,T00] ( 4, 7 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]>
-; V10 tmp3 [V10,T07] ( 2, 2 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl]>
+; V10 tmp3 [V10,T06] ( 2, 2 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl]>
; V11 tmp4 [V11,T02] ( 4, 4 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]>
-; V12 tmp5 [V12,T08] ( 2, 2 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]>
-; V13 tmp6 [V13,T03] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]>
+; V12 tmp5 [V12,T07] ( 2, 2 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]>
+;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]>
+; V14 tmp7 [V14 ] ( 3, 1.50) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]>
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M46571_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbp
push rbx
- sub rsp, 40
- ;; size=8 bbWeight=1 PerfScore 4.25
+ sub rsp, 56
+ xor eax, eax
+ mov qword ptr [rsp+0x28], rax
+ mov qword ptr [rsp+0x30], rax
+ ;; size=20 bbWeight=1 PerfScore 6.50
G_M46571_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
test rcx, rcx
@@ -81,20 +85,13 @@ G_M46571_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
; gcrRegs -[rdx rbx]
; byrRegs -[rcx]
mov rcx, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- lea rcx, bword ptr [rbx+0x08]
- ; byrRegs +[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rdi]
- ; byrRegs -[rcx]
- ;; size=102 bbWeight=0.50 PerfScore 10.12
-G_M46571_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov qword ptr [rsp+0x28], rcx
+ mov gword ptr [rsp+0x30], rdi
+ lea rbx, [rsp+0x28]
+ ;; size=97 bbWeight=0.50 PerfScore 9.88
+G_M46571_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[rdi]
+ ; byrRegs +[rbx]
mov rcx, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rcx]
; gcrRegs +[rsi]
@@ -125,25 +122,26 @@ G_M46571_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
jne SHORT G_M46571_IG08
;; size=73 bbWeight=1 PerfScore 10.75
G_M46571_IG06: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+ ; byrRegs -[rbx]
mov rax, rbp
; gcrRegs +[rax]
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M46571_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 56
pop rbx
pop rbp
pop rsi
pop rdi
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M46571_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rbp] +[rbx]
+G_M46571_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs -[rax rbp]
+ ; byrRegs +[rbx]
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M46571_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 56
pop rbx
pop rbp
pop rsi
@@ -151,7 +149,7 @@ G_M46571_IG09: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=9 bbWeight=0.50 PerfScore 1.62
-; Total bytes of code 217, prolog size 8, PerfScore 31.88, instruction count 61, allocated bytes for code 217 (MethodHash=7f4a4a14) for method FSharp.Compiler.SyntaxTreeOps:|TyparsAndConstraints|(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]] (FullOpts)
+; Total bytes of code 224, prolog size 20, PerfScore 33.88, instruction count 62, allocated bytes for code 224 (MethodHash=7f4a4a14) for method FSharp.Compiler.SyntaxTreeOps:|TyparsAndConstraints|(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]] (FullOpts)
; ============================================================
Unwind Info:
@@ -164,7 +162,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
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)
+48 (+3.58%) : 6950.dasm - FSharp.Compiler.CodeAnalysis.BoundModel+clo@334-584:Invoke(System.Tuple`5[FSharp.Compiler.CodeAnalysis.TcInfo,FSharp.Compiler.NameResolution+TcResultsSinkImpl,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile],System.String,System.Tuple`2[FSharp.Compiler.DiagnosticsLogger+PhasedDiagnostic,FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity][]]):Microsoft.FSharp.Control.FSharpAsync`1[FSharp.Compiler.CodeAnalysis.TcInfoExtras]:this (FullOpts)
@@ -11,73 +11,75 @@
; V00 this [V00,T02] ( 7, 6 ) ref -> rbx this class-hnd single-def <FSharp.Compiler.CodeAnalysis.BoundModel+clo@334-584>
; V01 arg1 [V01,T05] ( 5, 5 ) ref -> rdx class-hnd single-def <System.Tuple`5[FSharp.Compiler.CodeAnalysis.TcInfo,FSharp.Compiler.NameResolution+TcResultsSinkImpl,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile],System.String,System.Tuple`2[FSharp.Compiler.DiagnosticsLogger+PhasedDiagnostic,FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity][]]>
; V02 loc0 [V02,T01] ( 14, 8 ) ref -> rsi class-hnd single-def <FSharp.Compiler.NameResolution+TcResultsSinkImpl>
-; V03 loc1 [V03,T23] ( 2, 2 ) ref -> rdi class-hnd exact single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile]>
-; V04 loc2 [V04,T48] ( 2, 1.50) ref -> r14 class-hnd exact single-def <System.String>
-;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
-; V06 loc4 [V06,T49] ( 5, 1 ) ref -> [rbp-0x60] class-hnd EH-live spill-single-def <<unknown class>>
-;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+; V03 loc1 [V03,T21] ( 2, 2 ) ref -> rdi class-hnd exact single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile]>
+; V04 loc2 [V04,T46] ( 2, 1.50) ref -> r14 class-hnd exact single-def <System.String>
+;* V05 loc3 [V05 ] ( 0, 0 ) byref -> zero-ref class-hnd single-def <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+; V06 loc4 [V06,T47] ( 5, 1 ) ref -> [rbp-0x90] class-hnd EH-live spill-single-def <<unknown class>>
+;* V07 loc5 [V07 ] ( 0, 0 ) long -> zero-ref class-hnd exact <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
;* V08 loc6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <FSharp.Compiler.NameResolution+TcResolutions>
;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder>
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Collections.Generic.HashSet`1[System.ValueTuple`2[FSharp.Compiler.Text.Position,FSharp.Compiler.Text.Position]]>
-; V11 loc9 [V11,T50] ( 2, 1 ) ref -> r13 class-hnd single-def <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-; V12 loc10 [V12,T51] ( 2, 1 ) ref -> r14 class-hnd exact single-def <FSharp.Compiler.EditorServices.SemanticClassificationItem[]>
+; V11 loc9 [V11,T48] ( 2, 1 ) ref -> r13 class-hnd single-def <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+; V12 loc10 [V12,T49] ( 2, 1 ) ref -> r14 class-hnd exact single-def <FSharp.Compiler.EditorServices.SemanticClassificationItem[]>
;* V13 loc11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder>
;* V14 loc12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V15 loc13 [V15,T24] ( 2, 2 ) ref -> r14 class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]>
-; V16 loc14 [V16,T25] ( 2, 2 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore]>
+; V15 loc13 [V15,T22] ( 2, 2 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]>
+; V16 loc14 [V16,T23] ( 2, 2 ) ref -> r14 class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore]>
;* V17 loc15 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <FSharp.Compiler.CodeAnalysis.TcInfoExtras>
;* V18 loc16 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile]>
; V19 OutArgs [V19 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V20 tmp1 [V20,T09] ( 4, 4 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
-; V21 tmp2 [V21,T16] ( 4, 3 ) ref -> rax
-; V22 tmp3 [V22,T26] ( 2, 2 ) ref -> r13
-; V23 tmp4 [V23,T21] ( 3, 2 ) ref -> rdi
+;* V20 tmp1 [V20 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+; V21 tmp2 [V21,T14] ( 4, 3 ) byref -> r14
+; V22 tmp3 [V22,T24] ( 2, 2 ) ref -> r13
+; V23 tmp4 [V23,T19] ( 3, 2 ) ref -> rdi
;* V24 tmp5 [V24 ] ( 0, 0 ) ref -> zero-ref single-def
;* V25 tmp6 [V25 ] ( 0, 0 ) ref -> zero-ref
-; V26 tmp7 [V26,T22] ( 3, 2 ) ref -> rbx
+; V26 tmp7 [V26,T20] ( 3, 2 ) ref -> rbx
; V27 tmp8 [V27,T00] ( 8, 16 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.TcInfoExtras>
; V28 tmp9 [V28,T07] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.BoundModel+clo@357-586>
-; V29 tmp10 [V29,T17] ( 3, 3 ) ref -> r15 class-hnd exact single-def "dup spill" <<unknown class>>
-; V30 tmp11 [V30,T10] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V31 tmp12 [V31,T11] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder>
-; V32 tmp13 [V32,T27] ( 2, 2 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.BoundModel+preventDuplicates@339>
-; V33 tmp14 [V33,T18] ( 3, 3 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.ValueTuple`2[FSharp.Compiler.Text.Position,FSharp.Compiler.Text.Position]]>
-; V34 tmp15 [V34,T12] ( 4, 4 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.BoundModel+clo@343-585>
-; V35 tmp16 [V35,T28] ( 2, 2 ) ref -> r13 class-hnd single-def "impAppendStmt" <FSharp.Compiler.TcGlobals+TcGlobals>
-; V36 tmp17 [V36,T29] ( 2, 2 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.Import+ImportMap>
-; V37 tmp18 [V37,T13] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder>
-; V38 tmp19 [V38,T30] ( 2, 2 ) ref -> r15 class-hnd exact single-def "non-inline candidate call" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore]>
-; V39 tmp20 [V39,T14] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+; V29 tmp10 [V29,T15] ( 3, 3 ) ref -> r15 class-hnd exact single-def "dup spill" <<unknown class>>
+; V30 tmp11 [V30,T09] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V31 tmp12 [V31,T10] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder>
+; V32 tmp13 [V32,T25] ( 2, 2 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.BoundModel+preventDuplicates@339>
+; V33 tmp14 [V33,T16] ( 3, 3 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.ValueTuple`2[FSharp.Compiler.Text.Position,FSharp.Compiler.Text.Position]]>
+; V34 tmp15 [V34,T11] ( 4, 4 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.BoundModel+clo@343-585>
+; V35 tmp16 [V35,T26] ( 2, 2 ) ref -> r13 class-hnd single-def "impAppendStmt" <FSharp.Compiler.TcGlobals+TcGlobals>
+; V36 tmp17 [V36,T27] ( 2, 2 ) ref -> r12 class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.Import+ImportMap>
+; V37 tmp18 [V37,T12] ( 4, 4 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder>
+; V38 tmp19 [V38,T28] ( 2, 2 ) ref -> r15 class-hnd exact single-def "non-inline candidate call" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore]>
+;* V39 tmp20 [V39 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
; V40 tmp21 [V40,T03] ( 7, 7 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.NameResolution+TcResolutions>
-; V41 tmp22 [V41,T31] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`3[FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain]]>
-; V42 tmp23 [V42,T32] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`4[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.Text.Range]]>
-; V43 tmp24 [V43,T33] ( 2, 2 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-; V44 tmp25 [V44,T34] ( 2, 2 ) ref -> r12 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-; V45 tmp26 [V45,T35] ( 2, 2 ) ref -> [rbp-0x70] class-hnd spill-single-def "Inlining Arg" <System.__Canon[]>
-; V46 tmp27 [V46,T04] ( 7, 7 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.EditorServices.TcResolutionsExtensions+TcResolutions-GetSemanticClassification@147>
+; V41 tmp22 [V41,T29] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`3[FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain]]>
+; V42 tmp23 [V42,T30] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`4[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.Text.Range]]>
+; V43 tmp24 [V43,T31] ( 2, 2 ) ref -> r13 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+; V44 tmp25 [V44,T32] ( 2, 2 ) ref -> r12 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+; V45 tmp26 [V45,T33] ( 2, 2 ) ref -> [rbp-0xA0] class-hnd spill-single-def "Inlining Arg" <System.__Canon[]>
+; V46 tmp27 [V46,T04] ( 7, 7 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.EditorServices.TcResolutionsExtensions+TcResolutions-GetSemanticClassification@147>
; V47 tmp28 [V47 ] ( 2, 2 ) struct (16) [rbp-0x48] do-not-enreg[HS] hidden-struct-arg "impAppendStmt" <FSharp.Compiler.Text.Range>
; V48 tmp29 [V48,T08] ( 5, 5 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Metadata.BlobBuilder>
;* V49 tmp30 [V49 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V50 tmp31 [V50,T36] ( 2, 2 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]>
+; V50 tmp31 [V50,T34] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]>
; V51 tmp32 [V51,T06] ( 6, 6 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.NameResolution+TcResolutions>
-; V52 tmp33 [V52,T37] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`3[FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain]]>
-; V53 tmp34 [V53,T38] ( 2, 2 ) ref -> r12 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`4[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.Text.Range]]>
-; V54 tmp35 [V54,T39] ( 2, 2 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-; V55 tmp36 [V55,T40] ( 2, 2 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-; V56 tmp37 [V56,T41] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <FSharp.Compiler.TcGlobals+TcGlobals>
-; V57 tmp38 [V57,T42] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-; V58 tmp39 [V58,T19] ( 3, 3 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.NameResolution+TcSymbolUses>
-; V59 tmp40 [V59,T15] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.TypedTree+OpenDeclaration[]>
-; V60 tmp41 [V60,T45] ( 2, 2 ) long -> [rbp-0x48] do-not-enreg[H] hidden-struct-arg "field V47.code1 (fldOffset=0x0)" P-DEP
-; V61 tmp42 [V61,T46] ( 2, 2 ) long -> [rbp-0x40] do-not-enreg[H] hidden-struct-arg "field V47.code2 (fldOffset=0x8)" P-DEP
-; V62 tmp43 [V62 ] ( 2, 2 ) struct (16) [rbp-0x58] do-not-enreg[XS] addr-exposed "by-value struct argument" <FSharp.Compiler.Text.Range>
-; V63 tmp44 [V63,T43] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
-; V64 tmp45 [V64,T44] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
-; V65 PSPSym [V65,T52] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
-; V66 cse0 [V66,T20] ( 3, 3 ) ref -> rcx "CSE #03: moderate"
-; V67 cse1 [V67,T47] ( 3, 1.50) ref -> rcx "CSE #01: conservative"
+; V52 tmp33 [V52,T35] ( 2, 2 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`3[FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain]]>
+; V53 tmp34 [V53,T36] ( 2, 2 ) ref -> r12 class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`4[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.Text.Range]]>
+; V54 tmp35 [V54,T37] ( 2, 2 ) ref -> [rbp-0xB0] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+; V55 tmp36 [V55,T38] ( 2, 2 ) ref -> [rbp-0xB8] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+; V56 tmp37 [V56,T39] ( 2, 2 ) ref -> rbx class-hnd single-def "impAppendStmt" <FSharp.Compiler.TcGlobals+TcGlobals>
+; V57 tmp38 [V57,T40] ( 2, 2 ) ref -> r12 class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+; V58 tmp39 [V58,T17] ( 3, 3 ) ref -> [rbp-0xC0] class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.NameResolution+TcSymbolUses>
+; V59 tmp40 [V59,T13] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.TypedTree+OpenDeclaration[]>
+; V60 tmp41 [V60 ] ( 4, 2 ) struct (24) [rbp-0x60] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+; V61 tmp42 [V61 ] ( 4, 2 ) struct (24) [rbp-0x78] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+; V62 tmp43 [V62,T43] ( 2, 2 ) long -> [rbp-0x48] do-not-enreg[H] hidden-struct-arg "field V47.code1 (fldOffset=0x0)" P-DEP
+; V63 tmp44 [V63,T44] ( 2, 2 ) long -> [rbp-0x40] do-not-enreg[H] hidden-struct-arg "field V47.code2 (fldOffset=0x8)" P-DEP
+; V64 tmp45 [V64 ] ( 2, 2 ) struct (16) [rbp-0x88] do-not-enreg[XS] addr-exposed "by-value struct argument" <FSharp.Compiler.Text.Range>
+; V65 tmp46 [V65,T41] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
+; V66 tmp47 [V66,T42] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
+; V67 PSPSym [V67,T50] ( 1, 1 ) long -> [rbp-0xD0] do-not-enreg[V] "PSPSym"
+; V68 cse0 [V68,T18] ( 3, 3 ) ref -> rcx "CSE #03: moderate"
+; V69 cse1 [V69,T45] ( 3, 1.50) ref -> rcx "CSE #01: conservative"
;
-; Lcl frame size = 136
+; Lcl frame size = 184
G_M32537_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
@@ -88,12 +90,17 @@ G_M32537_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
push rdi
push rsi
push rbx
- sub rsp, 136
- lea rbp, [rsp+0xC0]
- mov qword ptr [rbp-0xA0], rsp
+ sub rsp, 184
+ lea rbp, [rsp+0xF0]
+ xor eax, eax
+ mov qword ptr [rbp-0x78], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqu ymmword ptr [rbp-0x70], ymm4
+ mov qword ptr [rbp-0x50], rax
+ mov qword ptr [rbp-0xD0], rsp
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=37 bbWeight=1 PerfScore 10.00
+ ;; size=56 bbWeight=1 PerfScore 14.58
G_M32537_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
mov rsi, gword ptr [rdx+0x10]
@@ -146,28 +153,26 @@ G_M32537_IG03: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
call [<unknown method>]
; gcrRegs -[rcx rdx r15] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x60], rax
+ mov gword ptr [rbp-0x90], rax
; GC ptr vars +{V06}
jmp SHORT G_M32537_IG06
- ;; size=104 bbWeight=0.50 PerfScore 7.25
+ ;; size=107 bbWeight=0.50 PerfScore 7.25
G_M32537_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
; GC ptr vars -{V06}
mov rcx, 0xD1FFAB1E ; System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
+ mov qword ptr [rbp-0x78], rcx
xor rcx, rcx
; gcrRegs +[rcx]
- mov gword ptr [rax+0x08], rcx
- ;; size=21 bbWeight=0.50 PerfScore 1.25
-G_M32537_IG05: ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref
+ mov gword ptr [rbp-0x70], rcx
+ ;; size=20 bbWeight=0.50 PerfScore 1.25
+G_M32537_IG05: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov gword ptr [rax+0x10], rcx
- jmp G_M32537_IG14
- ;; size=9 bbWeight=0.50 PerfScore 1.50
-G_M32537_IG06: ; bbWeight=0.50, gcVars=0002000000000000 {V06}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
+ mov gword ptr [rbp-0x68], rcx
+ lea r14, [rbp-0x78]
+ jmp G_M32537_IG13
+ ;; size=13 bbWeight=0.50 PerfScore 1.75
+G_M32537_IG06: ; bbWeight=0.50, gcVars=0000800000000000 {V06}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V06}
mov rcx, 0xD1FFAB1E ; FSharp.Compiler.NameResolution+TcResolutions
call CORINFO_HELP_NEWSFAST
@@ -247,7 +252,7 @@ G_M32537_IG06: ; bbWeight=0.50, gcVars=0002000000000000 {V06}, gcrefRegs=
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x68], rax
+ mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V34}
lea rcx, bword ptr [rax+0x08]
; byrRegs +[rcx]
@@ -256,9 +261,9 @@ G_M32537_IG06: ; bbWeight=0.50, gcVars=0002000000000000 {V06}, gcrefRegs=
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- ;; size=197 bbWeight=0.50 PerfScore 18.75
+ ;; size=200 bbWeight=0.50 PerfScore 18.75
G_M32537_IG07: ; bbWeight=0.50, extend
- mov rax, gword ptr [rbp-0x68]
+ mov rax, gword ptr [rbp-0x98]
; gcrRegs +[rax]
lea rcx, bword ptr [rax+0x10]
; byrRegs +[rcx]
@@ -269,7 +274,7 @@ G_M32537_IG07: ; bbWeight=0.50, extend
; byrRegs -[rcx]
mov r8, r13
; gcrRegs +[r8]
- mov rdx, gword ptr [rbp-0x68]
+ mov rdx, gword ptr [rbp-0x98]
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown method>
; GC ptr vars -{V34}
@@ -293,18 +298,18 @@ G_M32537_IG07: ; bbWeight=0.50, extend
call [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov gword ptr [rbp-0x70], rax
+ mov gword ptr [rbp-0xA0], rax
; GC ptr vars +{V45}
mov rcx, 0xD1FFAB1E ; FSharp.Compiler.EditorServices.TcResolutionsExtensions+TcResolutions-GetSemanticClassification@147
call CORINFO_HELP_NEWSFAST
; gcr arg pop 0
- mov gword ptr [rbp-0x78], rax
+ mov gword ptr [rbp-0xA8], rax
; GC ptr vars +{V46}
lea rcx, [rbp-0x48]
call [<unknown method>]
; gcrRegs -[rax]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x78]
+ mov rax, gword ptr [rbp-0xA8]
; gcrRegs +[rax]
lea rcx, bword ptr [rax+0x08]
; byrRegs +[rcx]
@@ -313,7 +318,7 @@ G_M32537_IG07: ; bbWeight=0.50, extend
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx r14]
; byrRegs -[rcx]
- mov r14, gword ptr [rbp-0x78]
+ mov r14, gword ptr [rbp-0xA8]
; gcrRegs +[r14]
lea rcx, bword ptr [r14+0x10]
; byrRegs +[rcx]
@@ -331,7 +336,7 @@ G_M32537_IG07: ; bbWeight=0.50, extend
; byrRegs -[rcx]
...
+23 (+13.14%) : 2162.dasm - FSharp.Compiler.DependencyManager.NativeDllResolveHandler:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]):this (FullOpts)
@@ -15,7 +15,7 @@
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref
-;* V07 tmp3 [V07,T07] ( 0, 0 ) ref -> zero-ref
+; V07 tmp3 [V07,T04] ( 3, 2 ) byref -> rcx
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref
; V10 tmp6 [V10,T05] ( 3, 2 ) ref -> rdx
@@ -23,46 +23,65 @@
; V12 tmp8 [V12,T02] ( 3, 3 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
-; V15 tmp11 [V15,T03] ( 2, 2 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]>
-; V16 tmp12 [V16,T04] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V15 tmp11 [V15 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]>
+; V16 tmp12 [V16,T03] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp13 [V17 ] ( 3, 1.50) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]>
;
-; Lcl frame size = 32
+; Lcl frame size = 48
G_M33216_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 32
+ sub rsp, 48
+ xor eax, eax
+ mov qword ptr [rsp+0x20], rax
+ mov qword ptr [rsp+0x28], rax
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=25 bbWeight=1 PerfScore 6.00
G_M33216_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rsi], sil
test rbx, rbx
je SHORT G_M33216_IG05
;; size=8 bbWeight=1 PerfScore 4.25
-G_M33216_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M33216_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
test byte ptr [(reloc)], 1 ; global ptr
- je SHORT G_M33216_IG08
- ;; size=13 bbWeight=0.50 PerfScore 3.00
+ je G_M33216_IG11
+ ;; size=17 bbWeight=0.50 PerfScore 3.00
G_M33216_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
je SHORT G_M33216_IG05
mov rcx, 0xD1FFAB1E ; Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- lea rcx, bword ptr [rax+0x08]
+ mov qword ptr [rsp+0x20], rcx
+ mov gword ptr [rsp+0x28], rdi
+ lea rcx, [rsp+0x20]
+ jmp SHORT G_M33216_IG06
+ ;; size=36 bbWeight=0.50 PerfScore 4.38
+G_M33216_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
+ xor rcx, rcx
+ ; gcrRegs +[rcx]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M33216_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, byref, isz
+ ; gcrRegs -[rcx]
; byrRegs +[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rdi]
+ test rcx, rcx
+ jne SHORT G_M33216_IG08
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M33216_IG07: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx]
; byrRegs -[rcx]
+ xor rdx, rdx
+ ; gcrRegs +[rdx]
+ jmp SHORT G_M33216_IG09
+ ;; size=4 bbWeight=0.50 PerfScore 1.12
+G_M33216_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx] +[rbx]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -91,14 +110,9 @@ G_M33216_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; byrRegs -[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
- jmp SHORT G_M33216_IG06
- ;; size=101 bbWeight=0.50 PerfScore 8.75
-G_M33216_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx rbx]
- xor rdx, rdx
- ; gcrRegs +[rdx]
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33216_IG06: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
+ ;; size=63 bbWeight=0.50 PerfScore 4.25
+G_M33216_IG09: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx]
lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
@@ -106,14 +120,14 @@ G_M33216_IG06: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {},
; byrRegs -[rcx]
nop
;; size=10 bbWeight=1 PerfScore 1.75
-G_M33216_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+G_M33216_IG10: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 48
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M33216_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M33216_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rsi rdi]
mov rcx, 0xD1FFAB1E ; Internal.Utilities.FSharpEnvironment
call CORINFO_HELP_GET_NONGCSTATIC_BASE
@@ -121,7 +135,7 @@ G_M33216_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C8 {
jmp G_M33216_IG04
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 175, prolog size 7, PerfScore 24.38, instruction count 45, allocated bytes for code 175 (MethodHash=03367e3f) for method FSharp.Compiler.DependencyManager.NativeDllResolveHandler:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]):this (FullOpts)
+; Total bytes of code 198, prolog size 19, PerfScore 28.88, instruction count 51, allocated bytes for code 198 (MethodHash=03367e3f) for method FSharp.Compiler.DependencyManager.NativeDllResolveHandler:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -134,7 +148,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)
Details
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 8 | 4 | 4 | 0 | -205 | +60 |
benchmarks.run.windows.x64.checked.mch | 8 | 2 | 0 | 6 | -208 | +0 |
benchmarks.run_pgo.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
benchmarks.run_tiered.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
libraries.crossgen2.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
libraries.pmi.windows.x64.checked.mch | 241 | 115 | 16 | 110 | -4,568 | +266 |
libraries_tests.run.windows.x64.Release.mch | 613 | 97 | 265 | 251 | -3,206 | +2,516 |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 430 | 228 | 99 | 103 | -16,476 | +4,652 |
realworld.run.windows.x64.checked.mch | 94 | 46 | 44 | 4 | -1,670 | +627 |
smoke_tests.nativeaot.windows.x64.checked.mch | 0 | 0 | 0 | 0 | -0 | +0 |
1,394 | 492 | 428 | 474 | -26,333 | +8,121 |
Collection | Contexts with diffs | Improvements | Regressions | Same PerfScore | Improvements (PerfScore) | Regressions (PerfScore) | PerfScore Overall in FullOpts |
---|---|---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 8 | 4 | 4 | 0 | -5.41% | +5.56% | -0.0000% |
benchmarks.run.windows.x64.checked.mch | 8 | 2 | 0 | 6 | -8.35% | 0.00% | -0.0006% |
benchmarks.run_pgo.windows.x64.checked.mch | 0 | 0 | 0 | 0 | 0.00% | 0.00% | 0.0000% |
benchmarks.run_tiered.windows.x64.checked.mch | 0 | 0 | 0 | 0 | 0.00% | 0.00% | 0.0000% |
libraries.crossgen2.windows.x64.checked.mch | 0 | 0 | 0 | 0 | 0.00% | 0.00% | 0.0000% |
libraries.pmi.windows.x64.checked.mch | 241 | 96 | 29 | 116 | -12.41% | +2.32% | -0.0037% |
libraries_tests.run.windows.x64.Release.mch | 613 | 348 | 29 | 236 | -8.42% | +12.62% | -0.0105% |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 430 | 225 | 101 | 104 | -8.84% | +4.68% | -0.0047% |
realworld.run.windows.x64.checked.mch | 94 | 46 | 46 | 2 | -1.72% | +2.44% | +0.0009% |
smoke_tests.nativeaot.windows.x64.checked.mch | 0 | 0 | 0 | 0 | 0.00% | 0.00% | 0.0000% |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
aspnet.run.windows.x64.checked.mch | 180,991 | 95,458 | 85,533 | 49 (0.03%) | 1 (0.00%) |
benchmarks.run.windows.x64.checked.mch | 28,313 | 4 | 28,309 | 38 (0.13%) | 0 (0.00%) |
benchmarks.run_pgo.windows.x64.checked.mch | 103,671 | 52,070 | 51,601 | 18 (0.02%) | 13 (0.01%) |
benchmarks.run_tiered.windows.x64.checked.mch | 54,678 | 37,922 | 16,756 | 3 (0.01%) | 0 (0.00%) |
libraries.crossgen2.windows.x64.checked.mch | 241,901 | 15 | 241,886 | 56 (0.02%) | 56 (0.02%) |
libraries.pmi.windows.x64.checked.mch | 322,192 | 6 | 322,186 | 588 (0.18%) | 66 (0.02%) |
libraries_tests.run.windows.x64.Release.mch | 857,705 | 599,532 | 258,173 | 539 (0.06%) | 42 (0.00%) |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 364,447 | 22,427 | 342,020 | 3,034 (0.83%) | 403 (0.11%) |
realworld.run.windows.x64.checked.mch | 34,490 | 3 | 34,487 | 135 (0.39%) | 0 (0.00%) |
smoke_tests.nativeaot.windows.x64.checked.mch | 31,208 | 10 | 31,198 | 8 (0.03%) | 8 (0.03%) |
2,219,596 | 807,447 | 1,412,149 | 4,468 (0.20%) | 589 (0.03%) |
aspnet.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 65934970 (overridden on cmd)
Total bytes of diff: 65934825 (overridden on cmd)
Total bytes of delta: -145 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
41 : 68108.dasm (0.86% of base)
13 : 111186.dasm (13.27% of base)
3 : 110807.dasm (0.50% of base)
3 : 57433.dasm (0.50% of base)
Top file improvements (bytes):
-104 : 111185.dasm (-4.68% of base)
-60 : 55150.dasm (-18.58% of base)
-25 : 60921.dasm (-4.89% of base)
-16 : 58694.dasm (-1.19% of base)
8 total files with Code Size differences (4 improved, 4 regressed), 0 unchanged.
Top method regressions (bytes):
41 ( 0.86% of base) : 68108.dasm - Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator:ValidateNoCycles(Microsoft.EntityFrameworkCore.Metadata.IModel,Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1[Microsoft.EntityFrameworkCore.DbLoggerCategory+Model+Validation]):this (Tier1-OSR)
13 (13.27% of base) : 111186.dasm - System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (FullOpts)
3 ( 0.50% of base) : 110807.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
3 ( 0.50% of base) : 57433.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
Top method improvements (bytes):
-104 (-4.68% of base) : 111185.dasm - Microsoft.EntityFrameworkCore.Metadata.Internal.RelationalModel:CreateTableMapping(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMappingSource,Microsoft.EntityFrameworkCore.Metadata.ITypeBase,Microsoft.EntityFrameworkCore.Metadata.ITypeBase,Microsoft.EntityFrameworkCore.Metadata.StoreObjectIdentifier,Microsoft.EntityFrameworkCore.Metadata.Internal.RelationalModel,System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.Internal.TableMapping],ubyte,System.Nullable`1[ubyte]) (FullOpts)
-60 (-18.58% of base) : 55150.dasm - BenchmarkDotNet.Toolchains.InProcess.Emit.InProcessEmitBuilder:Build(BenchmarkDotNet.Toolchains.Results.GenerateResult,BenchmarkDotNet.Running.BuildPartition,BenchmarkDotNet.Loggers.ILogger):BenchmarkDotNet.Toolchains.Results.BuildResult:this (FullOpts)
-25 (-4.89% of base) : 60921.dasm - System.Management.ManagementObjectCollection:GetEnumerator():System.Management.ManagementObjectCollection+ManagementObjectEnumerator:this (FullOpts)
-16 (-1.19% of base) : 58694.dasm - Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor:VisitMethodCall(System.Linq.Expressions.MethodCallExpression):System.Linq.Expressions.Expression:this (FullOpts)
Top method regressions (percentages):
13 (13.27% of base) : 111186.dasm - System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (FullOpts)
41 ( 0.86% of base) : 68108.dasm - Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator:ValidateNoCycles(Microsoft.EntityFrameworkCore.Metadata.IModel,Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1[Microsoft.EntityFrameworkCore.DbLoggerCategory+Model+Validation]):this (Tier1-OSR)
3 ( 0.50% of base) : 57433.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
3 ( 0.50% of base) : 110807.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
Top method improvements (percentages):
-60 (-18.58% of base) : 55150.dasm - BenchmarkDotNet.Toolchains.InProcess.Emit.InProcessEmitBuilder:Build(BenchmarkDotNet.Toolchains.Results.GenerateResult,BenchmarkDotNet.Running.BuildPartition,BenchmarkDotNet.Loggers.ILogger):BenchmarkDotNet.Toolchains.Results.BuildResult:this (FullOpts)
-25 (-4.89% of base) : 60921.dasm - System.Management.ManagementObjectCollection:GetEnumerator():System.Management.ManagementObjectCollection+ManagementObjectEnumerator:this (FullOpts)
-104 (-4.68% of base) : 111185.dasm - Microsoft.EntityFrameworkCore.Metadata.Internal.RelationalModel:CreateTableMapping(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMappingSource,Microsoft.EntityFrameworkCore.Metadata.ITypeBase,Microsoft.EntityFrameworkCore.Metadata.ITypeBase,Microsoft.EntityFrameworkCore.Metadata.StoreObjectIdentifier,Microsoft.EntityFrameworkCore.Metadata.Internal.RelationalModel,System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.Internal.TableMapping],ubyte,System.Nullable`1[ubyte]) (FullOpts)
-16 (-1.19% of base) : 58694.dasm - Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor:VisitMethodCall(System.Linq.Expressions.MethodCallExpression):System.Linq.Expressions.Expression:this (FullOpts)
8 total methods with Code Size differences (4 improved, 4 regressed).
benchmarks.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8749298 (overridden on cmd)
Total bytes of diff: 8749090 (overridden on cmd)
Total bytes of delta: -208 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-194 : 13383.dasm (-12.61% of base)
-14 : 6664.dasm (-0.71% of base)
2 total files with Code Size differences (2 improved, 0 regressed), 6 unchanged.
Top method improvements (bytes):
-194 (-12.61% of base) : 13383.dasm - System.Text.Tests.Perf_StringBuilder:Append_ValueTypes():System.Text.StringBuilder:this (FullOpts)
-14 (-0.71% of base) : 6664.dasm - Sigil.Impl.ReturnTracer:TraceFrom(int,Sigil.Impl.LinqList`1[Sigil.Label],Sigil.Impl.LinqHashSet`1[Sigil.Label]):Sigil.Impl.ReturnTracerResult:this (FullOpts)
Top method improvements (percentages):
-194 (-12.61% of base) : 13383.dasm - System.Text.Tests.Perf_StringBuilder:Append_ValueTypes():System.Text.StringBuilder:this (FullOpts)
-14 (-0.71% of base) : 6664.dasm - Sigil.Impl.ReturnTracer:TraceFrom(int,Sigil.Impl.LinqList`1[Sigil.Label],Sigil.Impl.LinqHashSet`1[Sigil.Label]):Sigil.Impl.ReturnTracerResult:this (FullOpts)
2 total methods with Code Size differences (2 improved, 0 regressed).
libraries.pmi.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 63723297 (overridden on cmd)
Total bytes of diff: 63718995 (overridden on cmd)
Total bytes of delta: -4302 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
82 : 7557.dasm (4.67% of base)
45 : 170263.dasm (3.81% of base)
24 : 319370.dasm (1.94% of base)
20 : 321387.dasm (3.70% of base)
20 : 321388.dasm (6.94% of base)
10 : 37123.dasm (7.35% of base)
10 : 319369.dasm (0.82% of base)
9 : 37122.dasm (3.26% of base)
8 : 319371.dasm (0.66% of base)
7 : 319368.dasm (0.59% of base)
7 : 319366.dasm (0.58% of base)
7 : 319367.dasm (0.58% of base)
6 : 5207.dasm (0.68% of base)
5 : 2990.dasm (0.50% of base)
4 : 3900.dasm (2.20% of base)
2 : 7658.dasm (0.13% of base)
Top file improvements (bytes):
-158 : 146780.dasm (-3.62% of base)
-154 : 181068.dasm (-3.60% of base)
-133 : 92815.dasm (-7.54% of base)
-121 : 319008.dasm (-13.10% of base)
-113 : 319041.dasm (-12.00% of base)
-95 : 319011.dasm (-10.60% of base)
-92 : 319044.dasm (-10.01% of base)
-88 : 232545.dasm (-47.83% of base)
-87 : 112861.dasm (-1.62% of base)
-82 : 191768.dasm (-3.99% of base)
-67 : 232546.dasm (-16.46% of base)
-61 : 232565.dasm (-16.62% of base)
-60 : 15851.dasm (-48.39% of base)
-58 : 232547.dasm (-42.34% of base)
-57 : 104591.dasm (-4.81% of base)
-56 : 272936.dasm (-11.38% of base)
-56 : 172662.dasm (-11.38% of base)
-56 : 232543.dasm (-40.88% of base)
-55 : 232544.dasm (-41.98% of base)
-54 : 40276.dasm (-8.91% of base)
49 total files with Code Size differences (33 improved, 16 regressed), 23 unchanged.
Top method regressions (bytes):
82 ( 4.67% of base) : 7557.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display:fit@665(int,Microsoft.FSharp.Core.FSharpFunc`2[System.Object,Microsoft.FSharp.Text.StructuredPrintfImpl.TaggedText],Microsoft.FSharp.Text.StructuredPrintfImpl.Display+Breaks,int,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout):System.Tuple`4[Microsoft.FSharp.Text.StructuredPrintfImpl.Display+Breaks,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,int,int] (FullOpts)
45 ( 3.81% of base) : 170263.dasm - Microsoft.Build.BackEnd.TargetEntry+<ProcessBucket>d__51:MoveNext():this (FullOpts)
24 ( 1.94% of base) : 319370.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[System.Numerics.Vector`1[float],System.Nullable`1[int]](System.Numerics.Vector`1[float],System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
20 ( 3.70% of base) : 321387.dasm - Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass26_0:<Find>b__0():this (FullOpts)
20 ( 6.94% of base) : 321388.dasm - Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0:<Find>b__0():this (FullOpts)
10 ( 7.35% of base) : 37123.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__1(System.Data.DataRow):ubyte:this (FullOpts)
10 ( 0.82% of base) : 319369.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[double,System.Nullable`1[int]](double,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
9 ( 3.26% of base) : 37122.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__0(System.Data.DataRow):ubyte:this (FullOpts)
8 ( 0.66% of base) : 319371.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[long,System.Nullable`1[int]](long,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
7 ( 0.59% of base) : 319368.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[int,System.Nullable`1[int]](int,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
7 ( 0.58% of base) : 319367.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[short,System.Nullable`1[int]](short,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
7 ( 0.58% of base) : 319366.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[ubyte,System.Nullable`1[int]](ubyte,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
6 ( 0.68% of base) : 5207.dasm - Microsoft.FSharp.Control.AsyncPrimitives:QueueAsyncAndWaitForResultSynchronously[System.Numerics.Vector`1[float]](System.Threading.CancellationToken,Microsoft.FSharp.Control.FSharpAsync`1[System.Numerics.Vector`1[float]],Microsoft.FSharp.Core.FSharpOption`1[int]):System.Numerics.Vector`1[float] (FullOpts)
5 ( 0.50% of base) : 2990.dasm - Microsoft.FSharp.Linq.QueryModule:|MacroReduction|_|(Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] (FullOpts)
4 ( 2.20% of base) : 3900.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+SubstHelperRaw@64:Invoke(Microsoft.FSharp.Quotations.FSharpVar):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]:this (FullOpts)
2 ( 0.13% of base) : 7658.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:sequenceValueL(Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ShowMode,int,int,System.Collections.IEnumerable):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
Top method improvements (bytes):
-158 (-3.62% of base) : 146780.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver:GetAllDiagnosticDescriptorsWithInfo(System.Threading.CancellationToken,byref):System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.DiagnosticDescriptor,Microsoft.CodeAnalysis.DiagnosticDescriptorErrorLoggerInfo]]:this (FullOpts)
-154 (-3.60% of base) : 181068.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver:GetAllDiagnosticDescriptorsWithInfo(System.Threading.CancellationToken,byref):System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.DiagnosticDescriptor,Microsoft.CodeAnalysis.DiagnosticDescriptorErrorLoggerInfo]]:this (FullOpts)
-133 (-7.54% of base) : 92815.dasm - Microsoft.Diagnostics.Tracing.Parsers.IIS_Trace.W3CacheFileCacheAccessEnd:ToXml(System.Text.StringBuilder):System.Text.StringBuilder:this (FullOpts)
-121 (-13.10% of base) : 319008.dasm - Xunit.Assert:Equal(double,double,int,int) (FullOpts)
-113 (-12.00% of base) : 319041.dasm - Xunit.Assert:NotEqual(double,double,int,int) (FullOpts)
-95 (-10.60% of base) : 319011.dasm - Xunit.Assert:Equal(float,float,int,int) (FullOpts)
-92 (-10.01% of base) : 319044.dasm - Xunit.Assert:NotEqual(float,float,int,int) (FullOpts)
-88 (-47.83% of base) : 232545.dasm - CSharpx.Maybe:Return[double](double):CSharpx.Maybe`1[double] (FullOpts)
-87 (-1.62% of base) : 112861.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbol:ValidateAttributeUsage(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData,Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,int,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]):ubyte:this (FullOpts)
-82 (-3.99% of base) : 191768.dasm - System.Data.OleDb.ColumnBinding:Value(System.Object):this (FullOpts)
-67 (-16.46% of base) : 232546.dasm - CSharpx.Maybe:Return[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):CSharpx.Maybe`1[System.Numerics.Vector`1[float]] (FullOpts)
-61 (-16.62% of base) : 232565.dasm - CSharpx.MaybeExtensions:ToMaybe[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):CSharpx.Maybe`1[System.Numerics.Vector`1[float]] (FullOpts)
-60 (-48.39% of base) : 15851.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[double]:Equals(double,double):ubyte:this (FullOpts)
-58 (-42.34% of base) : 232547.dasm - CSharpx.Maybe:Return[long](long):CSharpx.Maybe`1[long] (FullOpts)
-57 (-4.81% of base) : 104591.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindForLoopBodyAndNextControlVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachBlockSyntax,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
-56 (-40.88% of base) : 232543.dasm - CSharpx.Maybe:Return[short](short):CSharpx.Maybe`1[short] (FullOpts)
-56 (-11.38% of base) : 272936.dasm - System.Configuration.ValidatorUtils:ValidateRangeImpl[double](double,double,double,ubyte) (FullOpts)
-56 (-11.38% of base) : 172662.dasm - System.Configuration.ValidatorUtils:ValidateRangeImpl[double](double,double,double,ubyte) (FullOpts)
-55 (-41.98% of base) : 232544.dasm - CSharpx.Maybe:Return[int](int):CSharpx.Maybe`1[int] (FullOpts)
-54 (-8.91% of base) : 40276.dasm - System.Data.Common.SqlCharsStorage:ConvertXmlToObject(System.String):System.Object:this (FullOpts)
Top method regressions (percentages):
10 ( 7.35% of base) : 37123.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__1(System.Data.DataRow):ubyte:this (FullOpts)
20 ( 6.94% of base) : 321388.dasm - Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0:<Find>b__0():this (FullOpts)
82 ( 4.67% of base) : 7557.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display:fit@665(int,Microsoft.FSharp.Core.FSharpFunc`2[System.Object,Microsoft.FSharp.Text.StructuredPrintfImpl.TaggedText],Microsoft.FSharp.Text.StructuredPrintfImpl.Display+Breaks,int,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout):System.Tuple`4[Microsoft.FSharp.Text.StructuredPrintfImpl.Display+Breaks,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,int,int] (FullOpts)
45 ( 3.81% of base) : 170263.dasm - Microsoft.Build.BackEnd.TargetEntry+<ProcessBucket>d__51:MoveNext():this (FullOpts)
20 ( 3.70% of base) : 321387.dasm - Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass26_0:<Find>b__0():this (FullOpts)
9 ( 3.26% of base) : 37122.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__0(System.Data.DataRow):ubyte:this (FullOpts)
4 ( 2.20% of base) : 3900.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+SubstHelperRaw@64:Invoke(Microsoft.FSharp.Quotations.FSharpVar):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]:this (FullOpts)
24 ( 1.94% of base) : 319370.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[System.Numerics.Vector`1[float],System.Nullable`1[int]](System.Numerics.Vector`1[float],System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
10 ( 0.82% of base) : 319369.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[double,System.Nullable`1[int]](double,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
6 ( 0.68% of base) : 5207.dasm - Microsoft.FSharp.Control.AsyncPrimitives:QueueAsyncAndWaitForResultSynchronously[System.Numerics.Vector`1[float]](System.Threading.CancellationToken,Microsoft.FSharp.Control.FSharpAsync`1[System.Numerics.Vector`1[float]],Microsoft.FSharp.Core.FSharpOption`1[int]):System.Numerics.Vector`1[float] (FullOpts)
8 ( 0.66% of base) : 319371.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[long,System.Nullable`1[int]](long,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
7 ( 0.59% of base) : 319368.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[int,System.Nullable`1[int]](int,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
7 ( 0.58% of base) : 319366.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[ubyte,System.Nullable`1[int]](ubyte,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
7 ( 0.58% of base) : 319367.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[short,System.Nullable`1[int]](short,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
5 ( 0.50% of base) : 2990.dasm - Microsoft.FSharp.Linq.QueryModule:|MacroReduction|_|(Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] (FullOpts)
2 ( 0.13% of base) : 7658.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:sequenceValueL(Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ShowMode,int,int,System.Collections.IEnumerable):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
Top method improvements (percentages):
-60 (-48.39% of base) : 15851.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[double]:Equals(double,double):ubyte:this (FullOpts)
-88 (-47.83% of base) : 232545.dasm - CSharpx.Maybe:Return[double](double):CSharpx.Maybe`1[double] (FullOpts)
-52 (-44.83% of base) : 15853.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[System.Numerics.Vector`1[float]]:Equals(System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
-58 (-42.34% of base) : 232547.dasm - CSharpx.Maybe:Return[long](long):CSharpx.Maybe`1[long] (FullOpts)
-55 (-41.98% of base) : 232544.dasm - CSharpx.Maybe:Return[int](int):CSharpx.Maybe`1[int] (FullOpts)
-56 (-40.88% of base) : 232543.dasm - CSharpx.Maybe:Return[short](short):CSharpx.Maybe`1[short] (FullOpts)
-52 (-39.69% of base) : 232542.dasm - CSharpx.Maybe:Return[ubyte](ubyte):CSharpx.Maybe`1[ubyte] (FullOpts)
-42 (-39.62% of base) : 15855.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[long]:Equals(long,long):ubyte:this (FullOpts)
-41 (-39.05% of base) : 15847.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[short]:Equals(short,short):ubyte:this (FullOpts)
-40 (-38.46% of base) : 15844.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[ubyte]:Equals(ubyte,ubyte):ubyte:this (FullOpts)
-39 (-37.86% of base) : 15849.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[int]:Equals(int,int):ubyte:this (FullOpts)
-24 (-20.51% of base) : 225346.dasm - System.Speech.Recognition.GrammarBuilder:AppendWildcard():this (FullOpts)
-27 (-17.53% of base) : 196871.dasm - System.Dynamic.Utils.CacheDict`2[ubyte,System.Nullable`1[int]]:Add(ubyte,System.Nullable`1[int]):this (FullOpts)
-27 (-17.31% of base) : 196875.dasm - System.Dynamic.Utils.CacheDict`2[short,System.Nullable`1[int]]:Add(short,System.Nullable`1[int]):this (FullOpts)
-52 (-16.83% of base) : 272937.dasm - System.Configuration.ValidatorUtils:ValidateRangeImpl[long](long,long,long,ubyte) (FullOpts)
-52 (-16.83% of base) : 172663.dasm - System.Configuration.ValidatorUtils:ValidateRangeImpl[long](long,long,long,ubyte) (FullOpts)
-61 (-16.62% of base) : 232565.dasm - CSharpx.MaybeExtensions:ToMaybe[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):CSharpx.Maybe`1[System.Numerics.Vector`1[float]] (FullOpts)
-31 (-16.49% of base) : 278825.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:BoolToLdapConverter(System.DirectoryServices.AccountManagement.Principal,System.String,System.DirectoryServices.DirectoryEntry,System.String) (FullOpts)
-67 (-16.46% of base) : 232546.dasm - CSharpx.Maybe:Return[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):CSharpx.Maybe`1[System.Numerics.Vector`1[float]] (FullOpts)
-49 (-16.33% of base) : 172661.dasm - System.Configuration.ValidatorUtils:ValidateRangeImpl[int](int,int,int,ubyte) (FullOpts)
libraries_tests.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 349428109 (overridden on cmd)
Total bytes of diff: 349427419 (overridden on cmd)
Total bytes of delta: -690 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
738 : 751410.dasm (15.27% of base)
182 : 160428.dasm (10.42% of base)
68 : 584228.dasm (18.04% of base)
68 : 426791.dasm (18.04% of base)
68 : 547448.dasm (18.04% of base)
68 : 417449.dasm (18.04% of base)
68 : 711990.dasm (18.04% of base)
68 : 723117.dasm (18.04% of base)
68 : 615397.dasm (18.04% of base)
50 : 329627.dasm (1.85% of base)
32 : 614547.dasm (8.49% of base)
32 : 614559.dasm (8.49% of base)
27 : 756432.dasm (7.09% of base)
27 : 584615.dasm (7.09% of base)
24 : 540975.dasm (3.96% of base)
24 : 540991.dasm (3.93% of base)
23 : 335712.dasm (4.21% of base)
23 : 726095.dasm (0.45% of base)
21 : 152469.dasm (4.75% of base)
20 : 641618.dasm (4.77% of base)
Top file improvements (bytes):
-156 : 552937.dasm (-1.80% of base)
-108 : 397908.dasm (-4.16% of base)
-80 : 487012.dasm (-11.36% of base)
-75 : 466738.dasm (-6.79% of base)
-73 : 307728.dasm (-14.60% of base)
-71 : 484847.dasm (-2.75% of base)
-68 : 397840.dasm (-3.33% of base)
-67 : 429189.dasm (-12.05% of base)
-61 : 571631.dasm (-14.42% of base)
-61 : 384325.dasm (-14.42% of base)
-61 : 388881.dasm (-14.42% of base)
-61 : 336491.dasm (-14.42% of base)
-60 : 335945.dasm (-2.56% of base)
-59 : 391494.dasm (-12.80% of base)
-56 : 336335.dasm (-13.79% of base)
-54 : 397830.dasm (-12.77% of base)
-53 : 263034.dasm (-12.44% of base)
-52 : 484252.dasm (-12.81% of base)
-52 : 263072.dasm (-12.81% of base)
-52 : 413080.dasm (-12.81% of base)
52 total files with Code Size differences (29 improved, 23 regressed), 20 unchanged.
Top method regressions (bytes):
738 (15.27% of base) : 751410.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<TestNonGenericDictionaryKeyObject>d__152:MoveNext():this (Tier1)
182 (10.42% of base) : 160428.dasm - (dynamicClass):lambda_method158(System.Runtime.CompilerServices.Closure,System.IServiceProvider,System.Object[]):System.Object (FullOpts)
68 (18.04% of base) : 584228.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 426791.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 547448.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 417449.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 711990.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 723117.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 615397.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
50 ( 1.85% of base) : 329627.dasm - Xunit.Assert:Equal[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]) (Tier1)
32 ( 8.49% of base) : 614547.dasm - Xunit.Assert:Equal[System.Int128](System.Int128,System.Int128,System.Collections.Generic.IEqualityComparer`1[System.Int128]) (Tier1)
32 ( 8.49% of base) : 614559.dasm - Xunit.Assert:Equal[System.UInt128](System.UInt128,System.UInt128,System.Collections.Generic.IEqualityComparer`1[System.UInt128]) (Tier1)
27 ( 7.09% of base) : 584615.dasm - Xunit.Assert:NotEqual[System.Numerics.BigInteger](System.Numerics.BigInteger,System.Numerics.BigInteger,System.Collections.Generic.IEqualityComparer`1[System.Numerics.BigInteger]) (Tier1)
27 ( 7.09% of base) : 756432.dasm - Xunit.Assert:NotEqual[System.SequencePosition](System.SequencePosition,System.SequencePosition,System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]) (Tier1)
24 ( 3.93% of base) : 540991.dasm - System.Xml.XslCompiledTransformApiTests.CTransformResolverTest:XmlResolver2(System.Object,int,int,int,int):this (Tier1)
24 ( 3.96% of base) : 540975.dasm - System.Xml.XslCompiledTransformApiTests.CTransformResolverTest:XmlResolver3(System.Object,int,int,int,int):this (Tier1)
23 ( 4.21% of base) : 335712.dasm - System.Diagnostics.Tests.ProcessTests:TestProcessorTime():this (Tier1-OSR)
23 ( 0.45% of base) : 726095.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[int,int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
21 ( 4.75% of base) : 152469.dasm - Microsoft.CodeAnalysis.ParseOptions:EqualsHelper(Microsoft.CodeAnalysis.ParseOptions):ubyte:this (Tier1)
20 ( 4.77% of base) : 641618.dasm - Xunit.Assert:Equal[System.Numerics.BigInteger](System.Numerics.BigInteger,System.Numerics.BigInteger,System.Collections.Generic.IEqualityComparer`1[System.Numerics.BigInteger]) (Tier1)
Top method improvements (bytes):
-156 (-1.80% of base) : 552937.dasm - System.Xml.Tests.TCReadContentAsBase64:ReadBase64BufferOverflowWorksProperly():int:this (Tier1)
-108 (-4.16% of base) : 397908.dasm - System.IO.MemoryMappedFiles.Tests.MemoryMappedFilesTestBase:ValidateMemoryMappedViewStream(System.IO.MemoryMappedFiles.MemoryMappedViewStream,long,int) (Tier1)
-80 (-11.36% of base) : 487012.dasm - System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:BuildPublicKey(System.Security.Cryptography.RSA):System.Security.Cryptography.X509Certificates.PublicKey (Tier1)
-75 (-6.79% of base) : 466738.dasm - System.Net.Mime.MimePart:GetEncodedStream(System.IO.Stream):System.IO.Stream:this (Tier1)
-73 (-14.60% of base) : 307728.dasm - Xunit.Assert:RecordException(System.Action):System.Exception (Tier1)
-71 (-2.75% of base) : 484847.dasm - System.IO.Tests.ConnectedStreamConformanceTests+<>c__DisplayClass43_1+<<ConcurrentBidirectionalReadsWrites_Success>b__3>d:MoveNext():this (Tier1)
-68 (-3.33% of base) : 397840.dasm - System.IO.MemoryMappedFiles.Tests.MemoryMappedFilesTestBase:ValidateMemoryMappedViewAccessor(System.IO.MemoryMappedFiles.MemoryMappedViewAccessor,long,int) (Tier1)
-67 (-12.05% of base) : 429189.dasm - Xunit.Assert:Equal[System.ValueTuple`2[System.__Canon,int]](System.ValueTuple`2[System.__Canon,int],System.ValueTuple`2[System.__Canon,int],System.Collections.Generic.IEqualityComparer`1[System.ValueTuple`2[System.__Canon,int]]) (Tier1)
-61 (-14.42% of base) : 571631.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-61 (-14.42% of base) : 384325.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-61 (-14.42% of base) : 388881.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-61 (-14.42% of base) : 336491.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-60 (-2.56% of base) : 335945.dasm - System.Diagnostics.Tests.ProcessTests:TotalProcessorTime_PerformLoop_TotalProcessorTimeValid():this (Tier1-OSR)
-59 (-12.80% of base) : 391494.dasm - Xunit.Assert:InRange[System.DateTime](System.DateTime,System.DateTime,System.DateTime,System.Collections.Generic.IComparer`1[System.DateTime]) (Tier1)
-56 (-13.79% of base) : 336335.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-54 (-12.77% of base) : 397830.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-53 (-12.44% of base) : 263034.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-52 (-12.81% of base) : 484252.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-52 (-12.81% of base) : 263072.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-52 (-12.81% of base) : 413080.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
Top method regressions (percentages):
68 (18.04% of base) : 584228.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 426791.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 547448.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 417449.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 711990.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 723117.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
68 (18.04% of base) : 615397.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
738 (15.27% of base) : 751410.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<TestNonGenericDictionaryKeyObject>d__152:MoveNext():this (Tier1)
182 (10.42% of base) : 160428.dasm - (dynamicClass):lambda_method158(System.Runtime.CompilerServices.Closure,System.IServiceProvider,System.Object[]):System.Object (FullOpts)
32 ( 8.49% of base) : 614547.dasm - Xunit.Assert:Equal[System.Int128](System.Int128,System.Int128,System.Collections.Generic.IEqualityComparer`1[System.Int128]) (Tier1)
32 ( 8.49% of base) : 614559.dasm - Xunit.Assert:Equal[System.UInt128](System.UInt128,System.UInt128,System.Collections.Generic.IEqualityComparer`1[System.UInt128]) (Tier1)
27 ( 7.09% of base) : 584615.dasm - Xunit.Assert:NotEqual[System.Numerics.BigInteger](System.Numerics.BigInteger,System.Numerics.BigInteger,System.Collections.Generic.IEqualityComparer`1[System.Numerics.BigInteger]) (Tier1)
27 ( 7.09% of base) : 756432.dasm - Xunit.Assert:NotEqual[System.SequencePosition](System.SequencePosition,System.SequencePosition,System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]) (Tier1)
20 ( 4.77% of base) : 641618.dasm - Xunit.Assert:Equal[System.Numerics.BigInteger](System.Numerics.BigInteger,System.Numerics.BigInteger,System.Collections.Generic.IEqualityComparer`1[System.Numerics.BigInteger]) (Tier1)
20 ( 4.77% of base) : 583070.dasm - Xunit.Assert:Equal[System.Numerics.BigInteger](System.Numerics.BigInteger,System.Numerics.BigInteger,System.Collections.Generic.IEqualityComparer`1[System.Numerics.BigInteger]) (Tier1)
20 ( 4.77% of base) : 439594.dasm - Xunit.Assert:Equal[System.SequencePosition](System.SequencePosition,System.SequencePosition,System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]) (Tier1)
20 ( 4.77% of base) : 755350.dasm - Xunit.Assert:Equal[System.SequencePosition](System.SequencePosition,System.SequencePosition,System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]) (Tier1)
21 ( 4.75% of base) : 152469.dasm - Microsoft.CodeAnalysis.ParseOptions:EqualsHelper(Microsoft.CodeAnalysis.ParseOptions):ubyte:this (Tier1)
23 ( 4.21% of base) : 335712.dasm - System.Diagnostics.Tests.ProcessTests:TestProcessorTime():this (Tier1-OSR)
24 ( 3.96% of base) : 540975.dasm - System.Xml.XslCompiledTransformApiTests.CTransformResolverTest:XmlResolver3(System.Object,int,int,int,int):this (Tier1)
Top method improvements (percentages):
-49 (-25.39% of base) : 94558.dasm - Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (Tier1)
-35 (-23.49% of base) : 62400.dasm - Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (Tier1)
-73 (-14.60% of base) : 307728.dasm - Xunit.Assert:RecordException(System.Action):System.Exception (Tier1)
-61 (-14.42% of base) : 571631.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-61 (-14.42% of base) : 384325.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-61 (-14.42% of base) : 388881.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-61 (-14.42% of base) : 336491.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-56 (-13.79% of base) : 336335.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-30 (-13.51% of base) : 359747.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
-52 (-12.81% of base) : 484252.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-52 (-12.81% of base) : 263072.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-52 (-12.81% of base) : 413080.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-52 (-12.81% of base) : 392648.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-52 (-12.81% of base) : 286161.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-52 (-12.81% of base) : 381866.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-52 (-12.81% of base) : 79599.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-52 (-12.81% of base) : 663327.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-52 (-12.81% of base) : 617382.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
-59 (-12.80% of base) : 391494.dasm - Xunit.Assert:InRange[System.DateTime](System.DateTime,System.DateTime,System.DateTime,System.Collections.Generic.IComparer`1[System.DateTime]) (Tier1)
-54 (-12.77% of base) : 397830.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 154364655 (overridden on cmd)
Total bytes of diff: 154352831 (overridden on cmd)
Total bytes of delta: -11824 (-0.01 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
440 : 45946.dasm (9.05% of base)
433 : 203847.dasm (36.91% of base)
363 : 202678.dasm (34.67% of base)
212 : 49299.dasm (12.28% of base)
171 : 202543.dasm (19.26% of base)
152 : 194825.dasm (11.74% of base)
149 : 202838.dasm (17.11% of base)
144 : 202734.dasm (16.74% of base)
131 : 202551.dasm (15.04% of base)
131 : 203025.dasm (15.04% of base)
118 : 261986.dasm (4.90% of base)
118 : 261983.dasm (4.83% of base)
94 : 206779.dasm (7.01% of base)
90 : 364046.dasm (1.81% of base)
79 : 251604.dasm (1.68% of base)
78 : 184861.dasm (4.66% of base)
71 : 184858.dasm (5.41% of base)
63 : 97992.dasm (3.49% of base)
62 : 261974.dasm (3.22% of base)
58 : 261987.dasm (3.08% of base)
Top file improvements (bytes):
-927 : 147323.dasm (-19.68% of base)
-866 : 183771.dasm (-37.77% of base)
-757 : 97993.dasm (-12.37% of base)
-419 : 76049.dasm (-24.25% of base)
-407 : 68649.dasm (-29.80% of base)
-407 : 57680.dasm (-29.80% of base)
-407 : 75188.dasm (-29.80% of base)
-393 : 57828.dasm (-27.62% of base)
-393 : 68452.dasm (-27.62% of base)
-393 : 75336.dasm (-27.62% of base)
-378 : 57603.dasm (-27.71% of base)
-378 : 75174.dasm (-27.71% of base)
-378 : 68410.dasm (-27.71% of base)
-309 : 178660.dasm (-25.54% of base)
-264 : 281128.dasm (-11.68% of base)
-238 : 363788.dasm (-11.39% of base)
-187 : 185408.dasm (-11.57% of base)
-181 : 363916.dasm (-15.82% of base)
-158 : 185719.dasm (-10.67% of base)
-156 : 356670.dasm (-29.89% of base)
58 total files with Code Size differences (29 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
440 ( 9.05% of base) : 45946.dasm - Microsoft.Extensions.Configuration.Binder.Tests.ConfigurationBinderTests:GetNullValue():this (FullOpts)
433 (36.91% of base) : 203847.dasm - System.Numerics.Tests.Matrix4x4Tests:Matrix4x4EqualsTest():this (FullOpts)
363 (34.67% of base) : 202678.dasm - System.Numerics.Tests.Matrix3x2Tests:Matrix3x2EqualsTest():this (FullOpts)
212 (12.28% of base) : 49299.dasm - (dynamicClass):lambda_method10(System.Runtime.CompilerServices.Closure,System.IServiceProvider,System.Object[]):System.Object (FullOpts)
171 (19.26% of base) : 202543.dasm - System.Numerics.Tests.Vector3Tests:Vector3EqualsTest():this (FullOpts)
152 (11.74% of base) : 194825.dasm - System.Net.Tests.GlobalProxySelectionTest+<>c:<Select_Success>b__1_0():this (FullOpts)
149 (17.11% of base) : 202838.dasm - System.Numerics.Tests.PlaneTests:PlaneEqualsTest():this (FullOpts)
144 (16.74% of base) : 202734.dasm - System.Numerics.Tests.Vector2Tests:Vector2EqualsTest():this (FullOpts)
131 (15.04% of base) : 202551.dasm - System.Numerics.Tests.QuaternionTests:QuaternionEqualsTest():this (FullOpts)
131 (15.04% of base) : 203025.dasm - System.Numerics.Tests.Vector4Tests:Vector4EqualsTest():this (FullOpts)
118 ( 4.90% of base) : 261986.dasm - System.Security.Claims.ClaimsIdentityTests:Ctor_IdentityEnumerableClaimAuthNameRoleType_ClaimsIdentityClaim():this (FullOpts)
118 ( 4.83% of base) : 261983.dasm - System.Security.Claims.ClaimsIdentityTests:Ctor_IdentityEnumerableClaimAuthNameRoleType_ClaimsIdentityRestFilled():this (FullOpts)
94 ( 7.01% of base) : 206779.dasm - System.PrivateUri.Tests.IriTest:VerifyUriNormalizationForEscapedCharacters(System.String):this (FullOpts)
90 ( 1.81% of base) : 364046.dasm - System.Tests.ValueTupleTests+ValueTupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.ValueTuple`2[ubyte,System.__Canon],System.TimeSpan]:TestConstructor(System.Object[]):this (FullOpts)
79 ( 1.68% of base) : 251604.dasm - System.Tests.TupleTests+TupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.__Canon,System.TimeSpan]:Ctor(System.Object[]):this (FullOpts)
78 ( 4.66% of base) : 184861.dasm - System.Net.Http.Tests.RetryConditionHeaderValueTest:GetHashCode_UseSameAndDifferentRetryConditions_SameOrDifferentHashCodes():this (FullOpts)
71 ( 5.41% of base) : 184858.dasm - System.Net.Http.Tests.RetryConditionHeaderValueTest:Equals_UseSameAndDifferentRetrys_EqualOrNotEqualNoExceptions():this (FullOpts)
63 ( 3.49% of base) : 97992.dasm - System.Collections.Immutable.Tests.ImmutableHashSetTest:ChangeUnorderedEqualityComparer():this (FullOpts)
62 ( 3.22% of base) : 261974.dasm - System.Security.Claims.ClaimsIdentityTests:Ctor_IdentityEnumerableClaimAuthNameRoleType_NonClaimsIdentityClaims():this (FullOpts)
58 ( 3.08% of base) : 261987.dasm - System.Security.Claims.ClaimsIdentityTests:Ctor_IdentityEnumerableClaimAuthNameRoleType_NonClaimsIdentityRestEmptyWorks():this (FullOpts)
Top method improvements (bytes):
-927 (-19.68% of base) : 147323.dasm - System.Formats.Asn1.Tests.Reader.ReadEnumerated:ExpectedTag_IgnoresConstructed(int,System.String,int,int) (FullOpts)
-866 (-37.77% of base) : 183771.dasm - System.Net.Http.Tests.WarningHeaderValueTest:Equals_UseSameAndDifferentRanges_EqualOrNotEqualNoExceptions():this (FullOpts)
-757 (-12.37% of base) : 97993.dasm - System.Collections.Immutable.Tests.ImmutableHashSetTest:Create():this (FullOpts)
-419 (-24.25% of base) : 76049.dasm - Microsoft.Extensions.Logging.Test.LoggerMessageTest:get_LogMessagesDataSkipEnabledCheck():System.Collections.Generic.IEnumerable`1[System.Object[]] (FullOpts)
-407 (-29.80% of base) : 68649.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
-407 (-29.80% of base) : 57680.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
-407 (-29.80% of base) : 75188.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
-393 (-27.62% of base) : 57828.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
-393 (-27.62% of base) : 68452.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
-393 (-27.62% of base) : 75336.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
-378 (-27.71% of base) : 57603.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
-378 (-27.71% of base) : 75174.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
-378 (-27.71% of base) : 68410.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
-309 (-25.54% of base) : 178660.dasm - System.Buffers.Tests.ArrayBufferWriterTests`1[ubyte]:ArrayBufferWriter_Ctor():this (FullOpts)
-264 (-11.68% of base) : 281128.dasm - SampleSynthesisTests.GrammarTests:CreateMoreElaborateGrammar():this (FullOpts)
-238 (-11.39% of base) : 363788.dasm - System.Tests.ValueTupleTests:OneTuples() (FullOpts)
-187 (-11.57% of base) : 185408.dasm - System.Net.Http.Tests.ContentDispositionHeaderValueTest:Equals_UseContentDispositionWithAndWithoutParameters_EqualOrNotEqualNoExceptions():this (FullOpts)
-181 (-15.82% of base) : 363916.dasm - System.Tests.ValueTupleTests:TestCustomTypeParameter2() (FullOpts)
-158 (-10.67% of base) : 185719.dasm - System.Net.Http.Tests.TransferCodingHeaderValueTest:Equals_UseTransferCodingWithAndWithoutParameters_EqualOrNotEqualNoExceptions():this (FullOpts)
-156 (-29.89% of base) : 356670.dasm - System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests:TestDataflowMessageHeader():this (FullOpts)
Top method regressions (percentages):
25 (2,500.00% of base) : 110098.dasm - System.ComponentModel.Composition.ComposablePartDefinitionTests:Constructor1_ShouldNotThrow():this (FullOpts)
22 (66.67% of base) : 277482.dasm - System.Security.Permissions.Tests.CodeGroupTests:FileCodeGroupCallMethods() (FullOpts)
433 (36.91% of base) : 203847.dasm - System.Numerics.Tests.Matrix4x4Tests:Matrix4x4EqualsTest():this (FullOpts)
22 (36.67% of base) : 277487.dasm - System.Security.Permissions.Tests.EvidenceBaseTests:ApplicationDirectoryCallMethods() (FullOpts)
22 (36.67% of base) : 277486.dasm - System.Security.Permissions.Tests.EvidenceBaseTests:GacInstalledCallMethods() (FullOpts)
22 (36.67% of base) : 277424.dasm - System.Security.Permissions.Tests.PermissionTests:StrongNamePublicKeyBlobTests() (FullOpts)
363 (34.67% of base) : 202678.dasm - System.Numerics.Tests.Matrix3x2Tests:Matrix3x2EqualsTest():this (FullOpts)
171 (19.26% of base) : 202543.dasm - System.Numerics.Tests.Vector3Tests:Vector3EqualsTest():this (FullOpts)
149 (17.11% of base) : 202838.dasm - System.Numerics.Tests.PlaneTests:PlaneEqualsTest():this (FullOpts)
144 (16.74% of base) : 202734.dasm - System.Numerics.Tests.Vector2Tests:Vector2EqualsTest():this (FullOpts)
131 (15.04% of base) : 202551.dasm - System.Numerics.Tests.QuaternionTests:QuaternionEqualsTest():this (FullOpts)
131 (15.04% of base) : 203025.dasm - System.Numerics.Tests.Vector4Tests:Vector4EqualsTest():this (FullOpts)
212 (12.28% of base) : 49299.dasm - (dynamicClass):lambda_method10(System.Runtime.CompilerServices.Closure,System.IServiceProvider,System.Object[]):System.Object (FullOpts)
152 (11.74% of base) : 194825.dasm - System.Net.Tests.GlobalProxySelectionTest+<>c:<Select_Success>b__1_0():this (FullOpts)
440 ( 9.05% of base) : 45946.dasm - Microsoft.Extensions.Configuration.Binder.Tests.ConfigurationBinderTests:GetNullValue():this (FullOpts)
36 ( 7.59% of base) : 88271.dasm - System.CodeDom.Tests.CodeAttachEventStatementTests:Event_Set_Get_ReturnsExpected(System.CodeDom.CodeEventReferenceExpression,System.CodeDom.CodeExpression):this (FullOpts)
36 ( 7.59% of base) : 90742.dasm - System.CodeDom.Tests.CodeRemoveEventStatementTests:Event_Set_Get_ReturnsExpected(System.CodeDom.CodeEventReferenceExpression,System.CodeDom.CodeExpression):this (FullOpts)
94 ( 7.01% of base) : 206779.dasm - System.PrivateUri.Tests.IriTest:VerifyUriNormalizationForEscapedCharacters(System.String):this (FullOpts)
54 ( 5.73% of base) : 365283.dasm - XDocumentTests.SDMSample.SDM__PI:ProcessingInstructionEquals():this (FullOpts)
45 ( 5.63% of base) : 89207.dasm - System.CodeDom.Tests.CodeMethodInvokeExpressionTests:Ctor_Method_Parameters(System.CodeDom.CodeMethodReferenceExpression,System.CodeDom.CodeExpression[]):this (FullOpts)
Top method improvements (percentages):
-50 (-41.32% of base) : 140822.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.conversions.dynamicobj002.dynamicobj002.Test:MainMethod():int (FullOpts)
-866 (-37.77% of base) : 183771.dasm - System.Net.Http.Tests.WarningHeaderValueTest:Equals_UseSameAndDifferentRanges_EqualOrNotEqualNoExceptions():this (FullOpts)
-156 (-29.89% of base) : 356670.dasm - System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests:TestDataflowMessageHeader():this (FullOpts)
-407 (-29.80% of base) : 68649.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
-407 (-29.80% of base) : 57680.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
-407 (-29.80% of base) : 75188.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
-378 (-27.71% of base) : 57603.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
-378 (-27.71% of base) : 75174.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
-378 (-27.71% of base) : 68410.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
-393 (-27.62% of base) : 57828.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
-393 (-27.62% of base) : 68452.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
-393 (-27.62% of base) : 75336.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
-309 (-25.54% of base) : 178660.dasm - System.Buffers.Tests.ArrayBufferWriterTests`1[ubyte]:ArrayBufferWriter_Ctor():this (FullOpts)
-64 (-25.40% of base) : 48559.dasm - Stashbox.Utils.Data.ExpandableArray`1[int]:Contains(int):ubyte:this (FullOpts)
-49 (-25.39% of base) : 34157.dasm - Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (FullOpts)
-55 (-24.55% of base) : 365203.dasm - XDocumentTests.SDMSample.SDM_Document:DocumentXmlDeclaration():this (FullOpts)
-419 (-24.25% of base) : 76049.dasm - Microsoft.Extensions.Logging.Test.LoggerMessageTest:get_LogMessagesDataSkipEnabledCheck():System.Collections.Generic.IEnumerable`1[System.Object[]] (FullOpts)
-35 (-23.81% of base) : 14329.dasm - Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (FullOpts)
-84 (-20.90% of base) : 365479.dasm - XDocumentTests.SDMSample.SDM_Element:ElementIsEmpty():this (FullOpts)
-73 (-20.39% of base) : 183710.dasm - System.Net.Http.Tests.NameValueHeaderValueTest:Clone_Call_CloneFieldsMatchSourceFields():this (FullOpts)
realworld.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13613198 (overridden on cmd)
Total bytes of diff: 13612155 (overridden on cmd)
Total bytes of delta: -1043 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
53 : 12003.dasm (1.91% of base)
48 : 6950.dasm (3.58% of base)
42 : 3214.dasm (0.64% of base)
42 : 10643.dasm (0.81% of base)
40 : 8472.dasm (0.86% of base)
37 : 2947.dasm (0.28% of base)
35 : 8797.dasm (0.92% of base)
25 : 11019.dasm (2.30% of base)
23 : 2162.dasm (13.14% of base)
20 : 10743.dasm (1.62% of base)
18 : 10653.dasm (0.51% of base)
18 : 8293.dasm (0.80% of base)
18 : 9248.dasm (0.70% of base)
17 : 5515.dasm (0.57% of base)
15 : 8944.dasm (0.96% of base)
14 : 10015.dasm (0.41% of base)
13 : 6918.dasm (0.73% of base)
12 : 3339.dasm (0.40% of base)
10 : 10795.dasm (1.29% of base)
9 : 10710.dasm (2.15% of base)
Top file improvements (bytes):
-144 : 8286.dasm (-1.55% of base)
-126 : 10108.dasm (-4.24% of base)
-108 : 9407.dasm (-6.25% of base)
-99 : 11558.dasm (-2.94% of base)
-89 : 8960.dasm (-8.31% of base)
-70 : 11537.dasm (-9.31% of base)
-52 : 10726.dasm (-9.37% of base)
-50 : 10691.dasm (-9.58% of base)
-50 : 10671.dasm (-9.58% of base)
-50 : 9239.dasm (-9.58% of base)
-50 : 10648.dasm (-1.48% of base)
-50 : 8609.dasm (-9.58% of base)
-48 : 8584.dasm (-7.14% of base)
-48 : 8934.dasm (-15.05% of base)
-47 : 10516.dasm (-6.70% of base)
-45 : 8339.dasm (-1.11% of base)
-41 : 10767.dasm (-5.76% of base)
-41 : 7446.dasm (-1.93% of base)
-41 : 7598.dasm (-1.47% of base)
-40 : 8798.dasm (-1.74% of base)
62 total files with Code Size differences (28 improved, 34 regressed), 4 unchanged.
Top method regressions (bytes):
53 ( 1.91% of base) : 12003.dasm - FSharp.Compiler.CodeAnalysis.IncrementalBuilderHelpers+FinalizeTypeCheckTask@762-13:Invoke(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile][]):Microsoft.FSharp.Control.FSharpAsync`1[System.Tuple`4[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef,FSharp.Compiler.CompilerConfig+ProjectAssemblyDataResult,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CheckedImplFile]],FSharp.Compiler.CodeAnalysis.BoundModel]]:this (FullOpts)
48 ( 3.58% of base) : 6950.dasm - FSharp.Compiler.CodeAnalysis.BoundModel+clo@334-584:Invoke(System.Tuple`5[FSharp.Compiler.CodeAnalysis.TcInfo,FSharp.Compiler.NameResolution+TcResultsSinkImpl,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile],System.String,System.Tuple`2[FSharp.Compiler.DiagnosticsLogger+PhasedDiagnostic,FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity][]]):Microsoft.FSharp.Control.FSharpAsync`1[FSharp.Compiler.CodeAnalysis.TcInfoExtras]:this (FullOpts)
42 ( 0.81% of base) : 10643.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecDefns_Phase2_Bindings(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Entity],Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType]]],FSharp.Compiler.CheckBasics+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2InfoForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+RecDefnBindingInfo],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Entity],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],FSharp.Compiler.CheckBasics+TcEnv] (FullOpts)
42 ( 0.64% of base) : 3214.dasm - FSharp.Compiler.CompilerConfig+TcConfig:.ctor(FSharp.Compiler.CompilerConfig+TcConfigBuilder,ubyte):this (FullOpts)
40 ( 0.86% of base) : 8472.dasm - FSharp.Compiler.CheckExpressions:TcVal(ubyte,FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.TypedTree+ValRef,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckBasics+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TyparKind],System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckBasics+UnscopedTyparEnv]]]]],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.NameResolution+AfterResolution],FSharp.Compiler.Text.Range):System.Tuple`6[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.TypedTree+Expr,ubyte,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
37 ( 0.28% of base) : 2947.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
35 ( 0.92% of base) : 8797.dasm - FSharp.Compiler.CheckExpressions:TcValueItemThen(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+AfterResolution,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
25 ( 2.30% of base) : 11019.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2C_FixupRecursiveReferences(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2B,Microsoft.FSharp.Collections.FSharpList`1[int],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.Text.Range):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2C,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreInitializationGraphEliminationBinding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]] (FullOpts)
23 (13.14% of base) : 2162.dasm - FSharp.Compiler.DependencyManager.NativeDllResolveHandler:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]):this (FullOpts)
20 ( 1.62% of base) : 10743.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2B_TypeCheckAndIncrementalGeneralization(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2A,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2B,Microsoft.FSharp.Collections.FSharpList`1[int],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
18 ( 0.51% of base) : 10653.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TcMutRecBindings_Phase2A_CreateRecursiveValuesAndCheckArgumentPatterns@1038-4:Invoke(System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckIncrementalClasses+IncrClassCtorInfo],FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]],FSharp.Compiler.CheckDeclarations+TyconBindingDefn):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2A],System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckIncrementalClasses+IncrClassCtorInfo],FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]]]:this (FullOpts)
18 ( 0.80% of base) : 8293.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication_SplitSynArguments[System.__Canon](FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,System.__Canon,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Infos+MethInfo],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]],Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`5[FSharp.Compiler.Syntax.Ident,ubyte,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy] (FullOpts)
18 ( 0.70% of base) : 9248.dasm - FSharp.Compiler.Infos:CrackParamAttribsInfo(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+ArgReprInfo):FSharp.Compiler.Infos+ParamAttribs (FullOpts)
17 ( 0.57% of base) : 5515.dasm - FSharp.Compiler.CompilerImports+TcImports:ImportTypeProviderExtensions(Internal.Utilities.Library.CompilationThreadToken,FSharp.Compiler.CompilerConfig+TcConfig,System.String,FSharp.Compiler.AbstractIL.IL+ILScopeRef,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAttribute],FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Control.FSharpEvent`1[System.String],FSharp.Compiler.Text.Range):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Tainted`1[Microsoft.FSharp.Core.CompilerServices.ITypeProvider]]:this (FullOpts)
15 ( 0.96% of base) : 8944.dasm - FSharp.Compiler.PatternMatchCompilation+CompileSimultaneousSet@1276-1:Invoke(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest],FSharp.Compiler.PatternMatchCompilation+EdgeDiscrim):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeCase],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest]]:this (FullOpts)
14 ( 0.41% of base) : 10015.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks+CheckModuleBinding@2131-2:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.Unit:this (FullOpts)
13 ( 0.73% of base) : 6918.dasm - FSharp.Compiler.CodeAnalysis.BoundModel:.ctor(FSharp.Compiler.CompilerConfig+TcConfig,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CompilerImports+TcImports,ubyte,ubyte,ubyte,ubyte,Microsoft.FSharp.Control.FSharpEvent`1[System.String],Microsoft.FSharp.Control.FSharpEvent`1[System.String],FSharp.Compiler.CodeAnalysis.TcInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.IncrementalBuildSyntaxTree+SyntaxTree],Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.BuildGraph+GraphNode`1[FSharp.Compiler.CodeAnalysis.TcInfo],FSharp.Compiler.BuildGraph+GraphNode`1[FSharp.Compiler.CodeAnalysis.TcInfoExtras]]]):this (FullOpts)
12 ( 0.40% of base) : 3339.dasm - FSharp.Compiler.ScriptClosure+ScriptPreprocessClosure+processClosureSource@447:Invoke(FSharp.Compiler.ScriptClosure+ScriptPreprocessClosure+ClosureSource):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.ScriptClosure+ScriptPreprocessClosure+ClosureFile]:this (FullOpts)
10 ( 1.29% of base) : 10795.dasm - FSharp.Compiler.NameResolution+SelectMethInfosFromExtMembers@701:Invoke(Microsoft.FSharp.Core.Unit):System.Collections.Generic.IEnumerable`1[FSharp.Compiler.Infos+MethInfo]:this (FullOpts)
9 ( 1.02% of base) : 10556.dasm - FSharp.Compiler.CheckDeclarations+EstablishTypeDefinitionCores+TcTyconDefnCore_Phase1D_Phase1F_EstablishSuperTypesAndInterfaceTypes@3269-1:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.Unit:this (FullOpts)
Top method improvements (bytes):
-144 (-1.55% of base) : 8286.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication(ubyte,FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[System.Tuple`3[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CallerNamedArg`1[FSharp.Compiler.TypedTree+Expr]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]],FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
-126 (-4.24% of base) : 10108.dasm - FSharp.Compiler.TypedTreeOps:AdjustPossibleSubsumptionExpr(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]]] (FullOpts)
-108 (-6.25% of base) : 9407.dasm - FSharp.Compiler.CheckExpressions:TcTyparDecl(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.Syntax.SynTyparDecl):FSharp.Compiler.TypedTree+Typar (FullOpts)
-99 (-2.94% of base) : 11558.dasm - FSharp.Compiler.CheckComputationExpressions:TcArrayOrListComputedExpression(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,ubyte,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
-89 (-8.31% of base) : 8960.dasm - FSharp.Compiler.PatternMatchCompilation:BindSubExprOfInput(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.PatternMatchCompilation+PatternValBinding,FSharp.Compiler.Text.Range,FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):System.Tuple`2[FSharp.Compiler.TypedTree+Val,FSharp.Compiler.TypedTree+Expr] (FullOpts)
-70 (-9.31% of base) : 11537.dasm - FSharp.Compiler.CheckDeclarations+EstablishTypeDefinitionCores+TyparsAllHaveMeasureDeclEarlyCheck@2681-1:Invoke(FSharp.Compiler.Syntax.SynTyparDecl):ubyte:this (FullOpts)
-52 (-9.37% of base) : 10726.dasm - FSharp.Compiler.CheckExpressions+TcAttributesCanFail@11291:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-50 (-1.48% of base) : 10648.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TcMutRecBindings_Phase2A_CreateRecursiveValuesAndCheckArgumentPatterns@1019-3:Invoke(Microsoft.FSharp.Core.Unit):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2A,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]],System.Tuple`3[FSharp.Compiler.CheckBasics+UnscopedTyparEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]]]:this (FullOpts)
-50 (-9.58% of base) : 8609.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@10876-2:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-50 (-9.58% of base) : 10691.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@12022-3:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-50 (-9.58% of base) : 9239.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@4257:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-50 (-9.58% of base) : 10671.dasm - FSharp.Compiler.CheckIncrementalClasses+prelimValReprInfo@192-5:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-48 (-7.14% of base) : 8584.dasm - FSharp.Compiler.CheckExpressions+TcAttrs@10772:Invoke(int,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-48 (-15.05% of base) : 8934.dasm - FSharp.Compiler.PatternMatchCompilation:GetSubExprOfInput[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):FSharp.Compiler.TypedTree+Expr (FullOpts)
-47 (-6.70% of base) : 10516.dasm - FSharp.Compiler.CheckExpressions:TcAttributesCanFail(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]] (FullOpts)
-45 (-1.11% of base) : 8339.dasm - FSharp.Compiler.MethodCalls+CalledMeth`1+argSetInfos@538-1[System.__Canon]:Invoke(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CalledArg]):System.Tuple`6[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:this (FullOpts)
-41 (-5.76% of base) : 10767.dasm - FSharp.Compiler.CheckExpressions+loop@12231-67:Invoke(FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding):ubyte:this (FullOpts)
-41 (-1.47% of base) : 7598.dasm - FSharp.Compiler.TypeHierarchy+loop@227-40[System.__Canon]:Invoke(int,FSharp.Compiler.TypedTree+TType,System.Tuple`3[System.__Canon,FSharp.Compiler.TypedTreeOps+TyconRefMultiMap`1[System.__Canon],System.__Canon]):System.Tuple`3[System.__Canon,FSharp.Compiler.TypedTreeOps+TyconRefMultiMap`1[System.__Canon],System.__Canon]:this (FullOpts)
-41 (-1.93% of base) : 7446.dasm - FSharp.Compiler.TypeHierarchy+loop@227-40[ubyte]:Invoke(int,FSharp.Compiler.TypedTree+TType,System.Tuple`3[Microsoft.FSharp.Collections.FSharpSet`1[long],FSharp.Compiler.TypedTreeOps+TyconRefMultiMap`1[FSharp.Compiler.TypedTree+TType],ubyte]):System.Tuple`3[Microsoft.FSharp.Collections.FSharpSet`1[long],FSharp.Compiler.TypedTreeOps+TyconRefMultiMap`1[FSharp.Compiler.TypedTree+TType],ubyte]:this (FullOpts)
-40 (-1.74% of base) : 8798.dasm - FSharp.Compiler.CheckExpressions:MakeApplicableExprWithFlex(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.CheckExpressions+ApplicableExpr (FullOpts)
Top method regressions (percentages):
23 (13.14% of base) : 2162.dasm - FSharp.Compiler.DependencyManager.NativeDllResolveHandler:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]):this (FullOpts)
48 ( 3.58% of base) : 6950.dasm - FSharp.Compiler.CodeAnalysis.BoundModel+clo@334-584:Invoke(System.Tuple`5[FSharp.Compiler.CodeAnalysis.TcInfo,FSharp.Compiler.NameResolution+TcResultsSinkImpl,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile],System.String,System.Tuple`2[FSharp.Compiler.DiagnosticsLogger+PhasedDiagnostic,FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity][]]):Microsoft.FSharp.Control.FSharpAsync`1[FSharp.Compiler.CodeAnalysis.TcInfoExtras]:this (FullOpts)
7 ( 3.23% of base) : 10582.dasm - FSharp.Compiler.SyntaxTreeOps:|TyparsAndConstraints|(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]] (FullOpts)
5 ( 2.98% of base) : 8253.dasm - FSharp.Compiler.TypedTreeOps:destTopForallTy(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.TypedTree+ValReprInfo,FSharp.Compiler.TypedTree+TType):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.TypedTree+TType] (FullOpts)
7 ( 2.94% of base) : 8578.dasm - FSharp.Compiler.SyntaxTreeOps:|ValTyparDecls|(FSharp.Compiler.Syntax.SynValTyparDecls):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint],ubyte] (FullOpts)
25 ( 2.30% of base) : 11019.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2C_FixupRecursiveReferences(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2B,Microsoft.FSharp.Collections.FSharpList`1[int],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.Text.Range):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2C,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreInitializationGraphEliminationBinding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]] (FullOpts)
9 ( 2.15% of base) : 10710.dasm - FSharp.Compiler.TypedTreeOps:tryAddExtensionAttributeIfNotAlreadyPresentForType(FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Attrib]],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Attrib]],Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+Entity):FSharp.Compiler.TypedTree+Entity (FullOpts)
53 ( 1.91% of base) : 12003.dasm - FSharp.Compiler.CodeAnalysis.IncrementalBuilderHelpers+FinalizeTypeCheckTask@762-13:Invoke(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile][]):Microsoft.FSharp.Control.FSharpAsync`1[System.Tuple`4[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef,FSharp.Compiler.CompilerConfig+ProjectAssemblyDataResult,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CheckedImplFile]],FSharp.Compiler.CodeAnalysis.BoundModel]]:this (FullOpts)
9 ( 1.82% of base) : 6136.dasm - FSharp.Compiler.TypedTreeOps:updateSeqTypeIsPrefix(FSharp.Compiler.TypedTree+Entity) (FullOpts)
20 ( 1.62% of base) : 10743.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2B_TypeCheckAndIncrementalGeneralization(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2A,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2B,Microsoft.FSharp.Collections.FSharpList`1[int],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
4 ( 1.59% of base) : 6936.dasm - FSharp.Compiler.CodeAnalysis.IncrementalBuilder+getFSharpSource@1593:Invoke(System.String):FSharp.Compiler.CodeAnalysis.FSharpSource:this (FullOpts)
8 ( 1.48% of base) : 9864.dasm - FSharp.Compiler.TypedTreeOps:tryAddExtensionAttributeIfNotAlreadyPresentForModule(FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Attrib]],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.TypedTree+Entity):FSharp.Compiler.TypedTree+Entity (FullOpts)
10 ( 1.29% of base) : 10795.dasm - FSharp.Compiler.NameResolution+SelectMethInfosFromExtMembers@701:Invoke(Microsoft.FSharp.Core.Unit):System.Collections.Generic.IEnumerable`1[FSharp.Compiler.Infos+MethInfo]:this (FullOpts)
5 ( 1.03% of base) : 6252.dasm - FSharp.Compiler.CompilerImports+TcImports:ccuHasType(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Collections.FSharpList`1[System.String],System.String,ubyte):ubyte (FullOpts)
9 ( 1.02% of base) : 10556.dasm - FSharp.Compiler.CheckDeclarations+EstablishTypeDefinitionCores+TcTyconDefnCore_Phase1D_Phase1F_EstablishSuperTypesAndInterfaceTypes@3269-1:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.Unit:this (FullOpts)
15 ( 0.96% of base) : 8944.dasm - FSharp.Compiler.PatternMatchCompilation+CompileSimultaneousSet@1276-1:Invoke(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest],FSharp.Compiler.PatternMatchCompilation+EdgeDiscrim):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeCase],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest]]:this (FullOpts)
35 ( 0.92% of base) : 8797.dasm - FSharp.Compiler.CheckExpressions:TcValueItemThen(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+AfterResolution,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
40 ( 0.86% of base) : 8472.dasm - FSharp.Compiler.CheckExpressions:TcVal(ubyte,FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.TypedTree+ValRef,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckBasics+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TyparKind],System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckBasics+UnscopedTyparEnv]]]]],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.NameResolution+AfterResolution],FSharp.Compiler.Text.Range):System.Tuple`6[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.TypedTree+Expr,ubyte,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
6 ( 0.83% of base) : 11218.dasm - FSharp.Compiler.TypedTreeOps:remapLambaExpr(FSharp.Compiler.TypedTreeOps+RemapContext,FSharp.Compiler.TypedTreeOps+ValCopyFlag,FSharp.Compiler.TypedTreeOps+Remap,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Val],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Val],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Val],FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.TypedTree+Expr (FullOpts)
42 ( 0.81% of base) : 10643.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecDefns_Phase2_Bindings(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Entity],Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType]]],FSharp.Compiler.CheckBasics+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2InfoForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+RecDefnBindingInfo],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Entity],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],FSharp.Compiler.CheckBasics+TcEnv] (FullOpts)
Top method improvements (percentages):
-48 (-15.05% of base) : 8934.dasm - FSharp.Compiler.PatternMatchCompilation:GetSubExprOfInput[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):FSharp.Compiler.TypedTree+Expr (FullOpts)
-50 (-9.58% of base) : 8609.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@10876-2:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-50 (-9.58% of base) : 10691.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@12022-3:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-50 (-9.58% of base) : 9239.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@4257:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-50 (-9.58% of base) : 10671.dasm - FSharp.Compiler.CheckIncrementalClasses+prelimValReprInfo@192-5:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-52 (-9.37% of base) : 10726.dasm - FSharp.Compiler.CheckExpressions+TcAttributesCanFail@11291:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-70 (-9.31% of base) : 11537.dasm - FSharp.Compiler.CheckDeclarations+EstablishTypeDefinitionCores+TyparsAllHaveMeasureDeclEarlyCheck@2681-1:Invoke(FSharp.Compiler.Syntax.SynTyparDecl):ubyte:this (FullOpts)
-89 (-8.31% of base) : 8960.dasm - FSharp.Compiler.PatternMatchCompilation:BindSubExprOfInput(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.PatternMatchCompilation+PatternValBinding,FSharp.Compiler.Text.Range,FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):System.Tuple`2[FSharp.Compiler.TypedTree+Val,FSharp.Compiler.TypedTree+Expr] (FullOpts)
-48 (-7.14% of base) : 8584.dasm - FSharp.Compiler.CheckExpressions+TcAttrs@10772:Invoke(int,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
-47 (-6.70% of base) : 10516.dasm - FSharp.Compiler.CheckExpressions:TcAttributesCanFail(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]] (FullOpts)
-108 (-6.25% of base) : 9407.dasm - FSharp.Compiler.CheckExpressions:TcTyparDecl(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.Syntax.SynTyparDecl):FSharp.Compiler.TypedTree+Typar (FullOpts)
-41 (-5.76% of base) : 10767.dasm - FSharp.Compiler.CheckExpressions+loop@12231-67:Invoke(FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding):ubyte:this (FullOpts)
-21 (-5.20% of base) : 11805.dasm - FSharp.Compiler.NicePrint+PrintTypes:layoutTyparRef(FSharp.Compiler.TypedTreeOps+DisplayEnv,FSharp.Compiler.TypedTree+Typar):FSharp.Compiler.Text.Layout (FullOpts)
-35 (-4.97% of base) : 9113.dasm - FSharp.Compiler.CheckExpressions:UpdateAccModuleOrNamespaceType(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.TypedTree+ModuleOrNamespaceType]]) (FullOpts)
-126 (-4.24% of base) : 10108.dasm - FSharp.Compiler.TypedTreeOps:AdjustPossibleSubsumptionExpr(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]]] (FullOpts)
-17 (-3.22% of base) : 10664.dasm - FSharp.Compiler.CheckExpressions:TcAttributesMaybeFailEx(ubyte,FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte] (FullOpts)
-12 (-3.17% of base) : 2141.dasm - FSharp.Compiler.Driver:getParallelReferenceResolutionFromEnvironment():Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CompilerConfig+ParallelReferenceResolution] (FullOpts)
-99 (-2.94% of base) : 11558.dasm - FSharp.Compiler.CheckComputationExpressions:TcArrayOrListComputedExpression(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,ubyte,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
-20 (-2.50% of base) : 11397.dasm - FSharp.Compiler.TypedTree+ModuleOrNamespaceType:get_TypesByDemangledNameAndArity():Microsoft.FSharp.Collections.FSharpMap`2[FSharp.Compiler.Syntax.PrettyNaming+NameArityPair,FSharp.Compiler.TypedTree+Entity]:this (FullOpts)
-12 (-2.40% of base) : 10901.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:readBlobHeapAsPropertySigUncached(Microsoft.FSharp.Core.FSharpRef`1[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader]],FSharp.Compiler.AbstractIL.ILBinaryReader+BlobAsPropSigIdx):System.Tuple`3[FSharp.Compiler.AbstractIL.IL+ILThisConvention,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]] (FullOpts)