forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JitDiff X64] [MichalPetryka] Avoid spilling loads of static readonly variables #698
Comments
Top method regressions213 (22.26 % of base) - System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+d__1[System.Nullable`1[int]]:MoveNext():this ; Assembly listing for method System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.Nullable`1[int]]:MoveNext():this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
-; 0 inlinees with PGO data; 14 single block inlinees; 9 inlinees without PGO data
+; 0 inlinees with PGO data; 18 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 20, 18 ) byref -> [rbp-0x50] this EH-live single-def
-; V01 loc0 [V01,T06] ( 7, 7 ) int -> [rbp-0x2C] do-not-enreg[Z] EH-live
-; V02 loc1 [V02,T19] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Threading.Tasks.TaskCompletionSourceWithCancellation`1[System.Nullable`1[int]]>
+; V01 loc0 [V01,T07] ( 7, 7 ) int -> [rbp-0x2C] do-not-enreg[Z] EH-live
+; V02 loc1 [V02,T20] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Threading.Tasks.TaskCompletionSourceWithCancellation`1[System.Nullable`1[int]]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
; V04 loc3 [V04 ] ( 10, 10 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Nullable`1[int]]>
;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Nullable`1[int]]>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Exception>
-;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V07 OutArgs [V07 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V09 tmp2 [V09,T13] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-; V10 tmp3 [V10,T14] ( 2, 4 ) byref -> r15 single-def "impSpillLclRefs"
+; V09 tmp2 [V09,T15] ( 2, 4 ) ref -> rsi class-hnd single-def "dup spill" <System.Action`2[System.Object,System.Threading.CancellationToken]>
+; V10 tmp3 [V10,T16] ( 2, 4 ) byref -> r15 single-def "impSpillLclRefs"
;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref single-def
;* V12 tmp5 [V12 ] ( 0, 0 ) byref -> zero-ref single-def
-; V13 tmp6 [V13,T12] ( 5, 5 ) ref -> rsi
-; V14 tmp7 [V14,T03] ( 5, 10 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
-; V15 tmp8 [V15,T31] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-; V16 tmp9 [V16,T15] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<>c[System.Nullable`1[int]]>
-;* V17 tmp10 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline return value spill temp" <System.Threading.CancellationTokenRegistration>
-; V18 tmp11 [V18,T20] ( 3, 3 ) ref -> rdx class-hnd single-def "Inline stloc first use temp" <System.Threading.CancellationTokenSource>
+; V13 tmp6 [V13,T14] ( 5, 5 ) ref -> rsi
+; V14 tmp7 [V14,T04] ( 5, 10 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Action`2[System.Object,System.Threading.CancellationToken]>
+; V15 tmp8 [V15,T34] ( 2, 0 ) ref -> rsi class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline return value spill temp" <System.Threading.CancellationTokenRegistration>
+; V17 tmp10 [V17,T21] ( 3, 3 ) ref -> rdx class-hnd single-def "Inline stloc first use temp" <System.Threading.CancellationTokenSource>
+;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref
;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref
;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref
;* V22 tmp15 [V22 ] ( 0, 0 ) ref -> zero-ref
;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref
;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref
;* V28 tmp21 [V28 ] ( 0, 0 ) ref -> zero-ref
;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref
;* V30 tmp23 [V30 ] ( 0, 0 ) ref -> zero-ref
;* V31 tmp24 [V31 ] ( 0, 0 ) ref -> zero-ref
;* V32 tmp25 [V32 ] ( 0, 0 ) ref -> zero-ref
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref
-;* V34 tmp27 [V34 ] ( 0, 0 ) ref -> zero-ref
-;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
-;* V36 tmp29 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationTokenRegistration>
-; V37 tmp30 [V37,T08] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
-;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref
-;* V39 tmp32 [V39 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V40 tmp33 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Nullable`1[int]]>
-;* V42 tmp35 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Nullable`1[int]]>
-;* V43 tmp36 [V43,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V44 tmp37 [V44,T16] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
-;* V45 tmp38 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V34 tmp27 [V34 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Threading.CancellationTokenRegistration>
+;* V35 tmp28 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationTokenRegistration>
+; V36 tmp29 [V36,T09] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
+;* V37 tmp30 [V37 ] ( 0, 0 ) ref -> zero-ref
+;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref
+;* V40 tmp33 [V40 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1[System.Nullable`1[int]]>
+;* V41 tmp34 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Nullable`1[int]]>
+;* V42 tmp35 [V42,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V43 tmp36 [V43,T17] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
+;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V45 tmp38 [V45 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V46 tmp39 [V46 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V47 tmp40 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V48 tmp41 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V49 tmp42 [V49,T09] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
-; V50 tmp43 [V50,T10] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
-; V51 tmp44 [V51,T01] ( 8, 16 ) byref -> r14 "Inlining Arg"
-; V52 tmp45 [V52,T02] ( 14, 14 ) ref -> registers class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
-; V53 tmp46 [V53,T07] ( 6, 6 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.CancellationTokenSource>
-;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V55 tmp48 [V55,T05] ( 4, 8 ) long -> r12 "Inlining Arg"
-; V56 tmp49 [V56,T04] ( 5, 10 ) byref -> r13 single-def "Inlining Arg"
-; V57 tmp50 [V57,T24] ( 3, 3 ) ubyte -> rbx "field V03.hasValue (fldOffset=0x0)" P-INDEP
-; V58 tmp51 [V58,T25] ( 3, 3 ) int -> r15 "field V03.value (fldOffset=0x4)" P-INDEP
-; V59 tmp52 [V59 ] ( 7, 7 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP
-; V60 tmp53 [V60 ] ( 5, 5 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
-; V61 tmp54 [V61,T21] ( 3, 3 ) ref -> rax single-def "field V17._node (fldOffset=0x0)" P-INDEP
-; V62 tmp55 [V62,T26] ( 3, 3 ) long -> r15 "field V17._id (fldOffset=0x8)" P-INDEP
-;* V63 tmp56 [V63 ] ( 0, 0 ) ref -> zero-ref "field V35._node (fldOffset=0x0)" P-DEP
-;* V64 tmp57 [V64 ] ( 0, 0 ) long -> zero-ref "field V35._id (fldOffset=0x8)" P-DEP
-;* V65 tmp58 [V65 ] ( 0, 0 ) ref -> zero-ref single-def "field V36._node (fldOffset=0x0)" P-INDEP
-;* V66 tmp59 [V66 ] ( 0, 0 ) long -> zero-ref "field V36._id (fldOffset=0x8)" P-INDEP
-; V67 tmp60 [V67,T27] ( 2, 2 ) ref -> rsi single-def "field V42.m_task (fldOffset=0x0)" P-INDEP
-;* V68 tmp61 [V68,T29] ( 0, 0 ) int -> zero-ref "field V42.m_options (fldOffset=0x8)" P-INDEP
-; V69 tmp62 [V69,T11] ( 3, 6 ) struct ( 8) [rbp-0x48] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V70 tmp63 [V70,T17] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V71 tmp64 [V71,T18] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V72 PSPSym [V72,T30] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
-; V73 cse0 [V73,T22] ( 3, 3 ) byref -> rsi "CSE #02: moderate"
-; V74 cse1 [V74,T23] ( 3, 3 ) ref -> rdi "CSE #05: moderate"
+;* V47 tmp40 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
+; V48 tmp41 [V48,T10] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
+; V49 tmp42 [V49,T11] ( 3, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
+; V50 tmp43 [V50,T01] ( 8, 16 ) byref -> r14 "Inlining Arg"
+; V51 tmp44 [V51,T02] ( 14, 14 ) ref -> registers class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
+; V52 tmp45 [V52,T08] ( 6, 6 ) ref -> rax class-hnd "Inline stloc first use temp" <System.Threading.CancellationTokenSource>
+;* V53 tmp46 [V53 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
+; V54 tmp47 [V54,T06] ( 4, 8 ) long -> r12 "Inlining Arg"
+; V55 tmp48 [V55,T05] ( 5, 10 ) byref -> r13 single-def "Inlining Arg"
+; V56 tmp49 [V56,T12] ( 3, 6 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
+; V57 tmp50 [V57,T03] ( 6, 12 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
+;* V58 tmp51 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
+; V59 tmp52 [V59,T19] ( 2, 4 ) int -> r12 "Inlining Arg"
+;* V60 tmp53 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V61 tmp54 [V61,T26] ( 3, 3 ) ubyte -> rbx "field V03.hasValue (fldOffset=0x0)" P-INDEP
+; V62 tmp55 [V62,T27] ( 3, 3 ) int -> r15 "field V03.value (fldOffset=0x4)" P-INDEP
+; V63 tmp56 [V63 ] ( 7, 7 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V04.m_task (fldOffset=0x0)" P-DEP
+; V64 tmp57 [V64 ] ( 5, 5 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V04.m_options (fldOffset=0x8)" P-DEP
+; V65 tmp58 [V65,T22] ( 3, 3 ) ref -> rax single-def "field V16._node (fldOffset=0x0)" P-INDEP
+; V66 tmp59 [V66,T28] ( 3, 3 ) long -> r15 "field V16._id (fldOffset=0x8)" P-INDEP
+;* V67 tmp60 [V67 ] ( 0, 0 ) ref -> zero-ref "field V34._node (fldOffset=0x0)" P-DEP
+;* V68 tmp61 [V68 ] ( 0, 0 ) long -> zero-ref "field V34._id (fldOffset=0x8)" P-DEP
+;* V69 tmp62 [V69 ] ( 0, 0 ) ref -> zero-ref single-def "field V35._node (fldOffset=0x0)" P-INDEP
+;* V70 tmp63 [V70 ] ( 0, 0 ) long -> zero-ref "field V35._id (fldOffset=0x8)" P-INDEP
+; V71 tmp64 [V71,T30] ( 2, 2 ) ref -> rsi single-def "field V41.m_task (fldOffset=0x0)" P-INDEP
+;* V72 tmp65 [V72,T32] ( 0, 0 ) int -> zero-ref "field V41.m_options (fldOffset=0x8)" P-INDEP
+; V73 tmp66 [V73,T13] ( 3, 6 ) struct ( 8) [rbp-0x48] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+; V74 tmp67 [V74,T18] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
+; V75 PSPSym [V75,T33] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[V] "PSPSym"
+; V76 cse0 [V76,T23] ( 3, 3 ) ref -> r13 "CSE #10: moderate"
+; V77 cse1 [V77,T29] ( 3, 3 ) int -> rsi "CSE #11: moderate"
+; V78 cse2 [V78,T24] ( 3, 3 ) byref -> rsi "CSE #02: moderate"
+; V79 cse3 [V79,T25] ( 3, 3 ) ref -> r14 "CSE #05: moderate"
;
; Lcl frame size = 56
G_M38844_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 56
lea rbp, [rsp+0x60]
xor eax, eax
mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0x60], rsp
+ mov qword ptr [rbp-0x58], rsp
mov bword ptr [rbp-0x50], rdi
;; size=33 bbWeight=1 PerfScore 10.00
G_M38844_IG02:
mov eax, dword ptr [rdi+0x08]
mov dword ptr [rbp-0x2C], eax
mov rbx, gword ptr [rdi]
;; size=9 bbWeight=1 PerfScore 5.00
G_M38844_IG03:
cmp dword ptr [rbp-0x2C], 0
je G_M38844_IG07
lea r15, bword ptr [rdi+0x20]
mov rax, 0xD1FFAB1E ; data for System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<>c[System.Nullable`1[int]]:<>9__1_0
mov rsi, gword ptr [rax]
test rsi, rsi
jne SHORT G_M38844_IG04
mov rdi, 0xD1FFAB1E ; System.Action`2[System.Object,System.Threading.CancellationToken]
call CORINFO_HELP_NEWSFAST
mov r14, rax
mov rdi, 0xD1FFAB1E ; const ptr
mov rsi, gword ptr [rdi]
lea rdi, bword ptr [r14+0x08]
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; code for System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<>c[System.Nullable`1[int]]:<WaitWithCancellationAsync>b__1_0(System.Object,System.Threading.CancellationToken):this
mov qword ptr [r14+0x18], rdi
mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<>c[System.Nullable`1[int]]:<>9__1_0
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
mov rsi, r14
;; size=107 bbWeight=1 PerfScore 15.25
G_M38844_IG04:
test rsi, rsi
je G_M38844_IG19
mov rdx, gword ptr [r15]
test rdx, rdx
je SHORT G_M38844_IG05
mov rdi, rdx
mov rdx, rbx
xor rcx, rcx
xor r8, r8
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this
call [rax]System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this
mov r15, rdx
jmp SHORT G_M38844_IG06
;; size=45 bbWeight=1 PerfScore 11.00
G_M38844_IG05:
xor rax, rax
xor r15d, r15d
;; size=5 bbWeight=1 PerfScore 0.50
G_M38844_IG06:
mov rdi, bword ptr [rbp-0x50]
lea rdi, bword ptr [rdi+0x28]
mov rsi, rax
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov rdi, bword ptr [rbp-0x50]
mov qword ptr [rdi+0x30], r15
;; size=24 bbWeight=1 PerfScore 4.75
G_M38844_IG07:
cmp dword ptr [rbp-0x2C], 0
jne SHORT G_M38844_IG12
lea rsi, bword ptr [rdi+0x38]
;; size=10 bbWeight=1 PerfScore 3.50
G_M38844_IG08:
vmovdqu xmm0, xmmword ptr [rsi]
vmovdqu xmmword ptr [rbp-0x40], xmm0
;; size=9 bbWeight=1 PerfScore 5.00
G_M38844_IG09:
xor eax, eax
mov qword ptr [rsi], rax
mov qword ptr [rsi+0x08], rax
mov dword ptr [rbp-0x2C], -1
mov dword ptr [rdi+0x08], -1
;; size=23 bbWeight=1 PerfScore 4.25
G_M38844_IG10:
mov rsi, gword ptr [rbp-0x40]
mov eax, dword ptr [rsi+0x34]
and eax, 0xD1FFAB1E
cmp eax, 0xD1FFAB1E
je SHORT G_M38844_IG11
mov rdi, rsi
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
call [rax]System.Runtime.CompilerServices.TaskAwaiter:HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task,int)
;; size=36 bbWeight=1 PerfScore 8.25
G_M38844_IG11:
mov rsi, gword ptr [rbp-0x40]
movzx rbx, byte ptr [rsi+0x38]
mov r15d, dword ptr [rsi+0x3C]
jmp SHORT G_M38844_IG16
;; size=14 bbWeight=1 PerfScore 7.00
G_M38844_IG12:
mov rsi, gword ptr [rbx+0x08]
cmp byte ptr [rsi], sil
mov gword ptr [rbp-0x40], rsi
xor esi, esi
mov dword ptr [rbp-0x38], esi
test byte ptr [rbp-0x38], 4
je SHORT G_M38844_IG15
;; size=22 bbWeight=1 PerfScore 10.25
G_M38844_IG13:
xor esi, esi
mov dword ptr [rbp-0x2C], esi
;; size=5 bbWeight=1 PerfScore 1.25
G_M38844_IG14:
mov dword ptr [rdi+0x08], esi
lea rdi, bword ptr [rdi+0x38]
mov rsi, gword ptr [rbp-0x40]
call CORINFO_HELP_CHECKED_ASSIGN_REF
mov esi, dword ptr [rbp-0x38]
mov r13, bword ptr [rbp-0x50]
mov dword ptr [r13+0x40], esi
lea rsi, bword ptr [r13+0x10]
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Nullable`1[int]]:GetStateMachineBox[System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.Nullable`1[int]]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Nullable`1[int]]:GetStateMachineBox[System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.Nullable`1[int]]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox
mov rsi, rax
lea rdi, [rbp-0x40]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Nullable`1[int]]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Nullable`1[int]]](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Nullable`1[int]]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.Nullable`1[int]]](byref,System.Runtime.CompilerServices.IAsyncStateMachineBox)
jmp G_M38844_IG17
;; size=70 bbWeight=1 PerfScore 16.50
G_M38844_IG15:
mov rsi, gword ptr [rbp-0x40]
test dword ptr [rsi+0x34], 0xD1FFAB1E
jne G_M38844_IG10
jmp SHORT G_M38844_IG13
;; size=19 bbWeight=1 PerfScore 7.00
G_M38844_IG16:
cmp dword ptr [rbp-0x2C], 0
jge G_M38844_IG20
mov rdi, bword ptr [rbp-0x50]
lea r14, bword ptr [rdi+0x28]
mov r13, gword ptr [r14]
test r13, r13
je G_M38844_IG20
mov rdi, gword ptr [r13+0x08]
mov rsi, qword ptr [r14+0x08]
mov rdx, r13
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this
test eax, eax
jne SHORT G_M38844_IG20
mov r12, qword ptr [r14+0x08]
mov rax, gword ptr [r13+0x08]
mov rax, gword ptr [rax+0x08]
cmp dword ptr [rax+0x20], 0
je SHORT G_M38844_IG20
cmp dword ptr [rax+0x20], 2
je SHORT G_M38844_IG20
mov rax, gword ptr [r13+0x08]
mov r14d, dword ptr [rax+0x30]
call System.Environment:get_CurrentManagedThreadId():int
cmp r14d, eax
je SHORT G_M38844_IG20
mov rdi, gword ptr [r13+0x08]
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource+Registrations:WaitForCallbackToComplete(long):this
cmp dword ptr [rdi], edi
call [rax]System.Threading.CancellationTokenSource+Registrations:WaitForCallbackToComplete(long):this
jmp SHORT G_M38844_IG20
;; size=124 bbWeight=1 PerfScore 50.25
G_M38844_IG17:
mov rdi, rsp
;; size=3 bbWeight=1 PerfScore 0.25
G_M38844_IG18:
- call G_M38844_IG26
- jmp G_M38844_IG23
+ call G_M38844_IG30
+ jmp G_M38844_IG25
;; size=10 bbWeight=1 PerfScore 3.00
G_M38844_IG19:
mov edi, 0x9D7
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
G_M38844_IG20:
mov rdi, bword ptr [rbp-0x50]
mov dword ptr [rdi+0x08], -2
lea r13, bword ptr [rdi+0x10]
- mov rdi, gword ptr [r13]
- test rdi, rdi
- je SHORT G_M38844_IG21
+ mov r14, gword ptr [r13]
+ test r14, r14
+ je G_M38844_IG23
+ mov rdi, 0xD1FFAB1E ; global ptr
+ test byte ptr [rdi], 1
+ je G_M38844_IG27
+ ;; size=47 bbWeight=1 PerfScore 10.00
+G_M38844_IG21:
+ mov rdi, 0xD1FFAB1E ; data for System.Threading.Tasks.TplEventSource:Log
+ mov r13, gword ptr [rdi]
+ cmp byte ptr [r13+0x9D], 0
+ je SHORT G_M38844_IG22
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task:get_Id():int:this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Threading.Tasks.Task:get_Id():int:this
+ mov r12d, eax
+ movzx rsi, byte ptr [r13+0x9D]
+ test esi, esi
+ je SHORT G_M38844_IG22
+ xor ecx, ecx
+ mov dword ptr [rsp], ecx
+ mov rcx, qword ptr [r13+0x80]
+ mov edx, dword ptr [r13+0x98]
+ mov rdi, r13
+ mov r8d, 4
+ mov r9d, 8
+ mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
+ call [rax]System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
+ test eax, eax
+ je SHORT G_M38844_IG22
+ mov rdi, r13
+ mov edx, r12d
+ mov esi, 15
+ mov ecx, 1
+ mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int):this
+ call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int):this
+ ;; size=133 bbWeight=1 PerfScore 31.00
+G_M38844_IG22:
mov byte ptr [rbp-0x48], bl
mov dword ptr [rbp-0x44], r15d
mov rsi, qword ptr [rbp-0x48]
- mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Nullable`1[int]]:SetExistingTaskResult(System.Threading.Tasks.Task`1[System.Nullable`1[int]],System.Nullable`1[int])
- call [rax]System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.Nullable`1[int]]:SetExistingTaskResult(System.Threading.Tasks.Task`1[System.Nullable`1[int]],System.Nullable`1[int])
- jmp SHORT G_M38844_IG23
- ;; size=49 bbWeight=1 PerfScore 14.00
-G_M38844_IG21:
+ mov rdi, r14
+ mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task`1[System.Nullable`1[int]]:TrySetResult(System.Nullable`1[int]):ubyte:this
+ cmp dword ptr [rdi], edi
+ call [rax]System.Threading.Tasks.Task`1[System.Nullable`1[int]]:TrySetResult(System.Nullable`1[int]):ubyte:this
+ test eax, eax
+ jne SHORT G_M38844_IG25
+ jmp SHORT G_M38844_IG28
+ ;; size=34 bbWeight=1 PerfScore 12.75
+G_M38844_IG23:
mov byte ptr [r13+0x08], bl
mov dword ptr [r13+0x0C], r15d
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je SHORT G_M38844_IG25
+ je SHORT G_M38844_IG29
;; size=23 bbWeight=1 PerfScore 6.25
-G_M38844_IG22:
+G_M38844_IG24:
mov rdi, 0xD1FFAB1E ; data for System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1[System.Nullable`1[int]]:s_syncSuccessSentinel
mov rsi, gword ptr [rdi]
mov rdi, r13
call CORINFO_HELP_CHECKED_ASSIGN_REF
;; size=21 bbWeight=1 PerfScore 3.50
-G_M38844_IG23:
+G_M38844_IG25:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M38844_IG24:
+G_M38844_IG26:
add rsp, 56
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M38844_IG25:
+G_M38844_IG27:
+ mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.TplEventSource
+ call CORINFO_HELP_GET_GCSTATIC_BASE
+ jmp G_M38844_IG21
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M38844_IG28:
+ mov edi, 24
+ mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowInvalidOperationException(int)
+ call [rax]System.ThrowHelper:ThrowInvalidOperationException(int)
+ int3
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M38844_IG29:
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1[System.Nullable`1[int]]
call CORINFO_HELP_GET_GCSTATIC_BASE
- jmp SHORT G_M38844_IG22
+ jmp SHORT G_M38844_IG24
;; size=17 bbWeight=0 PerfScore 0.00
-G_M38844_IG26:
+G_M38844_IG30:
push rbp
push r15
push r14
push r13
push r12
push rbx
- push rax
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
+ sub rsp, 24
+ mov rbp, qword ptr [rdi+0x08]
+ mov qword ptr [rsp+0x08], rbp
lea rbp, [rbp+0x60]
- ;; size=22 bbWeight=1 PerfScore 10.50
-G_M38844_IG27:
+ ;; size=27 bbWeight=1 PerfScore 9.75
+G_M38844_IG31:
cmp dword ptr [rbp-0x2C], 0
- jge SHORT G_M38844_IG28
+ jge SHORT G_M38844_IG32
mov r13, bword ptr [rbp-0x50]
lea r14, bword ptr [r13+0x28]
mov rdi, gword ptr [r14]
mov rbx, rdi
test rbx, rbx
- je SHORT G_M38844_IG28
+ je SHORT G_M38844_IG32
mov rdi, gword ptr [rbx+0x08]
mov rsi, qword ptr [r14+0x08]
mov rdx, rbx
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this
cmp dword ptr [rdi], edi
call [rax]System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this
test eax, eax
- jne SHORT G_M38844_IG28
+ jne SHORT G_M38844_IG32
mov r12, qword ptr [r14+0x08]
mov rax, gword ptr [rbx+0x08]
mov rax, gword ptr [rax+0x08]
cmp dword ptr [rax+0x20], 0
- je SHORT G_M38844_IG28
+ je SHORT G_M38844_IG32
cmp dword ptr [rax+0x20], 2
- je SHORT G_M38844_IG28
+ je SHORT G_M38844_IG32
mov rax, gword ptr [rbx+0x08]
mov r15d, dword ptr [rax+0x30]
call System.Environment:get_CurrentManagedThreadId():int
cmp r15d, eax
- je SHORT G_M38844_IG28
+ je SHORT G_M38844_IG32
mov rdi, gword ptr [rbx+0x08]
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.Threading.CancellationTokenSource+Registrations:WaitForCallbackToComplete(long):this
cmp dword ptr [rdi], edi
call [rax]System.Threading.CancellationTokenSource+Registrations:WaitForCallbackToComplete(long):this
;; size=117 bbWeight=1 PerfScore 48.50
-G_M38844_IG28:
+G_M38844_IG32:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M38844_IG29:
- add rsp, 8
+G_M38844_IG33:
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-G_M38844_IG30:
+G_M38844_IG34:
push rbp
push r15
push r14
push r13
push r12
push rbx
- push rax
- mov rbp, qword ptr [rdi]
- mov qword ptr [rsp], rbp
+ sub rsp, 24
+ mov rbp, qword ptr [rdi+0x08]
+ mov qword ptr [rsp+0x08], rbp
lea rbp, [rbp+0x60]
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M38844_IG31:
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M38844_IG35:
mov r13, bword ptr [rbp-0x50]
mov dword ptr [r13+0x08], -2
lea rdi, bword ptr [r13+0x10]
mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1[System.Nullable`1[int]]:SetException(System.Exception):this
call [rax]System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1[System.Nullable`1[int]]:SetException(System.Exception):this
- lea rax, G_M38844_IG23
+ lea rax, G_M38844_IG25
;; size=35 bbWeight=0 PerfScore 0.00
-G_M38844_IG32:
- add rsp, 8
+G_M38844_IG36:
+ add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 957, prolog size 33, PerfScore 254.75, instruction count 260, allocated bytes for code 957 (MethodHash=77d76843) for method System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.Nullable`1[int]]:MoveNext():this (FullOpts)
+; Total bytes of code 1170, prolog size 33, PerfScore 293.75, instruction count 303, allocated bytes for code 1170 (MethodHash=77d76843) for method System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.Nullable`1[int]]:MoveNext():this (FullOpts)
; ============================================================ 76 (11.50 % of base) - System.Linq.Expressions.Interpreter.LightCompiler:CompileThrowUnaryExpression(System.Linq.Expressions.Expression,ubyte):this ; Assembly listing for method System.Linq.Expressions.Interpreter.LightCompiler:CompileThrowUnaryExpression(System.Linq.Expressions.Expression,ubyte):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 12 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 13, 7.50) ref -> rbx this class-hnd single-def <System.Linq.Expressions.Interpreter.LightCompiler>
; V01 arg1 [V01,T06] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Linq.Expressions.Expression>
; V02 arg2 [V02,T07] ( 4, 3 ) ubyte -> r15 single-def
-; V03 loc0 [V03,T24] ( 2, 2 ) ref -> rdi class-hnd exact single-def <System.Linq.Expressions.UnaryExpression>
+; V03 loc0 [V03,T20] ( 2, 2 ) ref -> rdi class-hnd exact single-def <System.Linq.Expressions.UnaryExpression>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Linq.Expressions.ParameterExpression>
-; V06 tmp2 [V06,T12] ( 4, 3 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Stack`1[System.Linq.Expressions.ParameterExpression]>
-; V07 tmp3 [V07,T32] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
-; V08 tmp4 [V08,T26] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Linq.Expressions.ParameterExpression[]>
+; V06 tmp2 [V06,T08] ( 4, 3 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Stack`1[System.Linq.Expressions.ParameterExpression]>
+; V07 tmp3 [V07,T28] ( 3, 1.50) int -> rsi "Inline stloc first use temp"
+; V08 tmp4 [V08,T22] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Linq.Expressions.ParameterExpression[]>
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Linq.Expressions.ParameterExpression>
-; V10 tmp6 [V10,T13] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.InstructionList>
-; V11 tmp7 [V11,T08] ( 4, 4 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.ThrowInstruction>
-; V12 tmp8 [V12,T01] ( 7, 7 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.Instruction]>
-; V13 tmp9 [V13,T27] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Linq.Expressions.Interpreter.Instruction[]>
-; V14 tmp10 [V14,T19] ( 4, 2 ) int -> r14 "Inline stloc first use temp"
-; V15 tmp11 [V15,T14] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.InstructionList>
-; V16 tmp12 [V16,T09] ( 4, 4 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.ThrowInstruction>
-; V17 tmp13 [V17,T02] ( 7, 7 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.Instruction]>
-; V18 tmp14 [V18,T28] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Linq.Expressions.Interpreter.Instruction[]>
-; V19 tmp15 [V19,T20] ( 4, 2 ) int -> r14 "Inline stloc first use temp"
-; V20 tmp16 [V20,T15] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
-; V21 tmp17 [V21,T25] ( 2, 2 ) int -> r13 "impAppendStmt"
-; V22 tmp18 [V22,T16] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.InstructionList>
-; V23 tmp19 [V23,T10] ( 4, 4 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.ThrowInstruction>
-; V24 tmp20 [V24,T03] ( 7, 7 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.Instruction]>
-; V25 tmp21 [V25,T29] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Linq.Expressions.Interpreter.Instruction[]>
-; V26 tmp22 [V26,T21] ( 4, 2 ) int -> r14 "Inline stloc first use temp"
-; V27 tmp23 [V27,T17] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.InstructionList>
-; V28 tmp24 [V28,T11] ( 4, 4 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.ThrowInstruction>
-; V29 tmp25 [V29,T04] ( 7, 7 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.Instruction]>
-; V30 tmp26 [V30,T30] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Linq.Expressions.Interpreter.Instruction[]>
-; V31 tmp27 [V31,T22] ( 4, 2 ) int -> r14 "Inline stloc first use temp"
-; V32 cse0 [V32,T18] ( 3, 2.50) ref -> r14 "CSE #11: moderate"
-; V33 cse1 [V33,T33] ( 2, 1 ) int -> rcx "CSE #01: moderate"
-; V34 cse2 [V34,T31] ( 3, 1.50) ref -> rdi "CSE #12: moderate"
-; V35 rat0 [V35,T05] ( 4, 7 ) ref -> rdi "replacement local"
-; V36 rat1 [V36,T23] ( 3, 2 ) long -> rax "CSE for expectedClsNode"
+; V10 tmp6 [V10,T09] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.InstructionList>
+; V11 tmp7 [V11,T01] ( 7, 7 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.Instruction]>
+; V12 tmp8 [V12,T23] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Linq.Expressions.Interpreter.Instruction[]>
+; V13 tmp9 [V13,T15] ( 4, 2 ) int -> r15 "Inline stloc first use temp"
+; V14 tmp10 [V14,T10] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.InstructionList>
+; V15 tmp11 [V15,T02] ( 7, 7 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.Instruction]>
+; V16 tmp12 [V16,T24] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Linq.Expressions.Interpreter.Instruction[]>
+; V17 tmp13 [V17,T16] ( 4, 2 ) int -> r15 "Inline stloc first use temp"
+; V18 tmp14 [V18,T11] ( 3, 3 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
+; V19 tmp15 [V19,T21] ( 2, 2 ) int -> r13 "impAppendStmt"
+; V20 tmp16 [V20,T12] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.InstructionList>
+; V21 tmp17 [V21,T03] ( 7, 7 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.Instruction]>
+; V22 tmp18 [V22,T25] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Linq.Expressions.Interpreter.Instruction[]>
+; V23 tmp19 [V23,T17] ( 4, 2 ) int -> r15 "Inline stloc first use temp"
+; V24 tmp20 [V24,T13] ( 3, 3 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.Linq.Expressions.Interpreter.InstructionList>
+; V25 tmp21 [V25,T04] ( 7, 7 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Linq.Expressions.Interpreter.Instruction]>
+; V26 tmp22 [V26,T26] ( 3, 1.50) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Linq.Expressions.Interpreter.Instruction[]>
+; V27 tmp23 [V27,T18] ( 4, 2 ) int -> r15 "Inline stloc first use temp"
+; V28 cse0 [V28,T14] ( 3, 2.50) ref -> r14 "CSE #13: moderate"
+; V29 cse1 [V29,T29] ( 2, 1 ) int -> rcx "CSE #01: moderate"
+; V30 cse2 [V30,T27] ( 3, 1.50) ref -> rdi "CSE #14: moderate"
+; V31 rat0 [V31,T05] ( 4, 7 ) ref -> rdi "replacement local"
+; V32 rat1 [V32,T19] ( 3, 2 ) long -> rax "CSE for expectedClsNode"
;
; Lcl frame size = 0
G_M35787_IG01:
push rbp
push r15
push r14
push r13
push rbx
lea rbp, [rsp+0x20]
mov rbx, rdi
mov r15d, edx
;; size=19 bbWeight=1 PerfScore 6.00
G_M35787_IG02:
mov rdi, rsi
test rdi, rdi
je SHORT G_M35787_IG04
;; size=8 bbWeight=1 PerfScore 1.50
G_M35787_IG03:
mov rax, 0xD1FFAB1E ; System.Linq.Expressions.UnaryExpression
cmp qword ptr [rdi], rax
jne G_M35787_IG23
;; size=19 bbWeight=0.50 PerfScore 2.12
G_M35787_IG04:
mov r14, gword ptr [rdi+0x10]
test r14, r14
je G_M35787_IG14
;; size=13 bbWeight=1 PerfScore 3.25
G_M35787_IG05:
mov rdi, rbx
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Interpreter.LightCompiler:TryPushLabelBlock(System.Linq.Expressions.Expression):ubyte:this
call [rax]System.Linq.Expressions.Interpreter.LightCompiler:TryPushLabelBlock(System.Linq.Expressions.Expression):ubyte:this
mov r13d, eax
mov rdi, rbx
mov rsi, r14
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Interpreter.LightCompiler:CompileNoLabelPush(System.Linq.Expressions.Expression):this
call [rax]System.Linq.Expressions.Interpreter.LightCompiler:CompileNoLabelPush(System.Linq.Expressions.Expression):this
test r13d, r13d
je SHORT G_M35787_IG06
mov rdi, gword ptr [rbx+0x28]
mov esi, dword ptr [rdi+0x18]
mov rsi, gword ptr [rdi+0x10]
lea rdi, bword ptr [rbx+0x28]
call CORINFO_HELP_ASSIGN_REF
;; size=64 bbWeight=0.50 PerfScore 8.25
G_M35787_IG06:
test r15b, r15b
- jne SHORT G_M35787_IG10
+ jne G_M35787_IG10
mov rbx, gword ptr [rbx+0x08]
- mov rdi, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rdi]
mov rdi, gword ptr [rbx+0x08]
inc dword ptr [rdi+0x14]
mov rax, gword ptr [rdi+0x08]
- mov r14d, dword ptr [rdi+0x10]
- cmp dword ptr [rax+0x08], r14d
+ mov r15d, dword ptr [rdi+0x10]
+ cmp dword ptr [rax+0x08], r15d
ja SHORT G_M35787_IG07
- mov rsi, r15
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
call [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
jmp SHORT G_M35787_IG08
- ;; size=60 bbWeight=0.50 PerfScore 12.00
+ ;; size=61 bbWeight=0.50 PerfScore 11.88
G_M35787_IG07:
- lea esi, [r14+0x01]
- mov dword ptr [rdi+0x10], esi
- movsxd rsi, r14d
+ lea edx, [r15+0x01]
+ mov dword ptr [rdi+0x10], edx
+ mov rdx, 0xD1FFAB1E ; const ptr
+ mov rdx, gword ptr [rdx]
+ movsxd rsi, r15d
mov rdi, rax
- mov rdx, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
- ;; size=28 bbWeight=0.50 PerfScore 2.75
+ ;; size=38 bbWeight=0.50 PerfScore 3.75
G_M35787_IG08:
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
mov rdi, rbx
- mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Interpreter.InstructionList:UpdateStackDepth(System.Linq.Expressions.Interpreter.Instruction):this
- ;; size=16 bbWeight=0.50 PerfScore 0.38
+ ;; size=26 bbWeight=0.50 PerfScore 1.38
G_M35787_IG09:
pop rbx
pop r13
pop r14
pop r15
pop rbp
tail.jmp [rax]System.Linq.Expressions.Interpreter.InstructionList:UpdateStackDepth(System.Linq.Expressions.Interpreter.Instruction):this
;; size=11 bbWeight=0.50 PerfScore 2.25
G_M35787_IG10:
mov rbx, gword ptr [rbx+0x08]
- mov rdi, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rdi]
mov rdi, gword ptr [rbx+0x08]
inc dword ptr [rdi+0x14]
mov rax, gword ptr [rdi+0x08]
- mov r14d, dword ptr [rdi+0x10]
- cmp dword ptr [rax+0x08], r14d
+ mov r15d, dword ptr [rdi+0x10]
+ cmp dword ptr [rax+0x08], r15d
ja SHORT G_M35787_IG11
- mov rsi, r15
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
call [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
jmp SHORT G_M35787_IG12
- ;; size=55 bbWeight=0.50 PerfScore 11.38
+ ;; size=52 bbWeight=0.50 PerfScore 11.25
G_M35787_IG11:
- lea esi, [r14+0x01]
- mov dword ptr [rdi+0x10], esi
- movsxd rsi, r14d
+ lea edx, [r15+0x01]
+ mov dword ptr [rdi+0x10], edx
+ mov rdx, 0xD1FFAB1E ; const ptr
+ mov rdx, gword ptr [rdx]
+ movsxd rsi, r15d
mov rdi, rax
- mov rdx, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
- ;; size=28 bbWeight=0.50 PerfScore 2.75
+ ;; size=38 bbWeight=0.50 PerfScore 3.75
G_M35787_IG12:
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
mov rdi, rbx
- mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Interpreter.InstructionList:UpdateStackDepth(System.Linq.Expressions.Interpreter.Instruction):this
- ;; size=16 bbWeight=0.50 PerfScore 0.38
+ ;; size=26 bbWeight=0.50 PerfScore 1.38
G_M35787_IG13:
pop rbx
pop r13
pop r14
pop r15
pop rbp
tail.jmp [rax]System.Linq.Expressions.Interpreter.InstructionList:UpdateStackDepth(System.Linq.Expressions.Interpreter.Instruction):this
;; size=11 bbWeight=0.50 PerfScore 2.25
G_M35787_IG14:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Interpreter.LightCompiler:CheckRethrow():this
call [rax]System.Linq.Expressions.Interpreter.LightCompiler:CheckRethrow():this
mov rdi, gword ptr [rbx+0x30]
mov esi, dword ptr [rdi+0x10]
dec esi
mov rax, gword ptr [rdi+0x08]
mov ecx, dword ptr [rax+0x08]
cmp ecx, esi
jbe G_M35787_IG22
mov rsi, gword ptr [rax+8*rsi+0x10]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Interpreter.LightCompiler:CompileGetVariable(System.Linq.Expressions.ParameterExpression):this
call [rax]System.Linq.Expressions.Interpreter.LightCompiler:CompileGetVariable(System.Linq.Expressions.ParameterExpression):this
test r15b, r15b
- jne SHORT G_M35787_IG18
+ jne G_M35787_IG18
mov rbx, gword ptr [rbx+0x08]
- mov rdi, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rdi]
mov rdi, gword ptr [rbx+0x08]
inc dword ptr [rdi+0x14]
mov rax, gword ptr [rdi+0x08]
- mov r14d, dword ptr [rdi+0x10]
- cmp dword ptr [rax+0x08], r14d
+ mov r15d, dword ptr [rdi+0x10]
+ cmp dword ptr [rax+0x08], r15d
ja SHORT G_M35787_IG15
- mov rsi, r15
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
call [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
jmp SHORT G_M35787_IG16
- ;; size=119 bbWeight=0.50 PerfScore 21.25
+ ;; size=120 bbWeight=0.50 PerfScore 21.12
G_M35787_IG15:
- lea esi, [r14+0x01]
- mov dword ptr [rdi+0x10], esi
- movsxd rsi, r14d
+ lea edx, [r15+0x01]
+ mov dword ptr [rdi+0x10], edx
+ mov rdx, 0xD1FFAB1E ; const ptr
+ mov rdx, gword ptr [rdx]
+ movsxd rsi, r15d
mov rdi, rax
- mov rdx, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
- ;; size=28 bbWeight=0.50 PerfScore 2.75
+ ;; size=38 bbWeight=0.50 PerfScore 3.75
G_M35787_IG16:
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
mov rdi, rbx
- mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Interpreter.InstructionList:UpdateStackDepth(System.Linq.Expressions.Interpreter.Instruction):this
- ;; size=16 bbWeight=0.50 PerfScore 0.38
+ ;; size=26 bbWeight=0.50 PerfScore 1.38
G_M35787_IG17:
pop rbx
pop r13
pop r14
pop r15
pop rbp
tail.jmp [rax]System.Linq.Expressions.Interpreter.InstructionList:UpdateStackDepth(System.Linq.Expressions.Interpreter.Instruction):this
;; size=11 bbWeight=0.50 PerfScore 2.25
G_M35787_IG18:
mov rbx, gword ptr [rbx+0x08]
- mov rdi, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rdi]
mov rdi, gword ptr [rbx+0x08]
inc dword ptr [rdi+0x14]
mov rax, gword ptr [rdi+0x08]
- mov r14d, dword ptr [rdi+0x10]
- cmp dword ptr [rax+0x08], r14d
+ mov r15d, dword ptr [rdi+0x10]
+ cmp dword ptr [rax+0x08], r15d
ja SHORT G_M35787_IG19
- mov rsi, r15
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
call [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
jmp SHORT G_M35787_IG20
- ;; size=55 bbWeight=0.50 PerfScore 11.38
+ ;; size=52 bbWeight=0.50 PerfScore 11.25
G_M35787_IG19:
- lea esi, [r14+0x01]
- mov dword ptr [rdi+0x10], esi
- movsxd rsi, r14d
+ lea edx, [r15+0x01]
+ mov dword ptr [rdi+0x10], edx
+ mov rdx, 0xD1FFAB1E ; const ptr
+ mov rdx, gword ptr [rdx]
+ movsxd rsi, r15d
mov rdi, rax
- mov rdx, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST
call [rax]CORINFO_HELP_ARRADDR_ST
- ;; size=28 bbWeight=0.50 PerfScore 2.75
+ ;; size=38 bbWeight=0.50 PerfScore 3.75
G_M35787_IG20:
+ mov rsi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rsi]
mov rdi, rbx
- mov rsi, r15
mov rax, 0xD1FFAB1E ; code for System.Linq.Expressions.Interpreter.InstructionList:UpdateStackDepth(System.Linq.Expressions.Interpreter.Instruction):this
- ;; size=16 bbWeight=0.50 PerfScore 0.38
+ ;; size=26 bbWeight=0.50 PerfScore 1.38
G_M35787_IG21:
pop rbx
pop r13
pop r14
pop r15
pop rbp
tail.jmp [rax]System.Linq.Expressions.Interpreter.InstructionList:UpdateStackDepth(System.Linq.Expressions.Interpreter.Instruction):this
;; size=11 bbWeight=0.50 PerfScore 2.25
G_M35787_IG22:
mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Stack`1[System.__Canon]:ThrowForEmptyStack():this
call [rax]System.Collections.Generic.Stack`1[System.__Canon]:ThrowForEmptyStack():this
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M35787_IG23:
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 661, prolog size 13, PerfScore 98.62, instruction count 174, allocated bytes for code 661 (MethodHash=e8f37434) for method System.Linq.Expressions.Interpreter.LightCompiler:CompileThrowUnaryExpression(System.Linq.Expressions.Expression,ubyte):this (FullOpts)
+; Total bytes of code 737, prolog size 13, PerfScore 106.12, instruction count 178, allocated bytes for code 737 (MethodHash=e8f37434) for method System.Linq.Expressions.Interpreter.LightCompiler:CompileThrowUnaryExpression(System.Linq.Expressions.Expression,ubyte):this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/e0f8f9250192af8fb0966e323bf18f08 |
Top method improvements-166 (-21.28 % of base) - System.Net.Security.SslSessionsCache:g__ShrinkCredentialCache|5_0() ; Assembly listing for method System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0() (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 15 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T06] ( 6, 11 ) ref -> r15 class-hnd single-def <System.Collections.Generic.KeyValuePair`2[System.Net.Security.SslSessionsCache+SslCredKey,System.Net.Security.SafeCredentialReference][]>
-;* V01 loc1 [V01,T30] ( 0, 0 ) int -> zero-ref
-; V02 loc2 [V02,T00] ( 8, 20 ) ref -> [rbp-0x90] class-hnd <System.Net.Security.SafeCredentialReference>
-; V03 loc3 [V03,T07] ( 3, 10 ) ref -> [rbp-0x98] class-hnd spill-single-def <System.Net.Security.SafeFreeCredentials>
-; V04 loc4 [V04 ] ( 2, 4 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Net.Security.SafeCredentialReference>
+; V00 loc0 [V00,T08] ( 5, 9 ) ref -> r15 class-hnd single-def <System.Collections.Generic.KeyValuePair`2[System.Net.Security.SslSessionsCache+SslCredKey,System.Net.Security.SafeCredentialReference][]>
+;* V01 loc1 [V01,T27] ( 0, 0 ) int -> zero-ref
+; V02 loc2 [V02,T00] ( 7, 18 ) ref -> [rbp-0x60] class-hnd <System.Net.Security.SafeCredentialReference>
+; V03 loc3 [V03,T05] ( 3, 10 ) ref -> [rbp-0x68] class-hnd spill-single-def <System.Net.Security.SafeFreeCredentials>
+; V04 loc4 [V04 ] ( 1, 2 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Net.Security.SafeCredentialReference>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 2, 8 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "impAppendStmt" <System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.Net.Security.SafeCredentialReference]>
-; V07 tmp2 [V07,T13] ( 2, 8 ) struct (24) [rbp-0x48] do-not-enreg[S] must-init "spilled call-like call argument" <System.Net.Security.SslSessionsCache+SslCredKey>
-; V08 tmp3 [V08,T04] ( 3, 12 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "impAppendStmt" <System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.Net.Security.SafeCredentialReference]>
-; V09 tmp4 [V09,T14] ( 2, 8 ) struct (24) [rbp-0x60] do-not-enreg[S] must-init "spilled call-like call argument" <System.Net.Security.SslSessionsCache+SslCredKey>
-; V10 tmp5 [V10,T10] ( 2, 8 ) ref -> [rbp-0xB0] class-hnd exact spill-single-def "impAppendStmt" <System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.Net.Security.SafeCredentialReference]>
-; V11 tmp6 [V11,T15] ( 2, 8 ) struct (24) [rbp-0x78] do-not-enreg[S] must-init "spilled call-like call argument" <System.Net.Security.SslSessionsCache+SslCredKey>
-; V12 tmp7 [V12,T17] ( 3, 3 ) ref -> r14 class-hnd exact single-def "dup spill" <System.Object[]>
-; V13 tmp8 [V13,T18] ( 3, 3 ) ref -> r13 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-;* V14 tmp9 [V14 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V17 tmp12 [V17 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Net.Security.SafeCredentialReference>
-; V18 tmp13 [V18,T11] ( 2, 8 ) ref -> rdi class-hnd "dup spill" <System.Net.Security.SafeFreeCredentials>
-;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref
-;* V20 tmp15 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V21 tmp16 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[int]>
-; V22 tmp17 [V22,T12] ( 2, 8 ) ref -> [rbp-0xB8] class-hnd exact spill-single-def "impAppendStmt" <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]>
-; V23 tmp18 [V23 ] ( 2, 4 ) ref -> [rbp-0x80] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Net.Security.SafeCredentialReference>
-;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Net.Security.SafeCredentialReference>
-;* V27 tmp22 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource>
-; V28 tmp23 [V28,T16] ( 4, 4 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.FormattableStringFactory+ConcreteFormattableString>
-;* V29 tmp24 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Net.NetEventSource>
-; V30 tmp25 [V30,T23] ( 2, 1 ) ref -> r15 single-def
-; V31 tmp26 [V31,T24] ( 2, 1 ) ref -> r14 single-def
+;* V06 tmp1 [V06 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "spilled call-like call argument" <System.Net.Security.SslSessionsCache+SslCredKey>
+; V07 tmp2 [V07,T12] ( 2, 8 ) struct (24) [rbp-0x48] do-not-enreg[S] must-init "spilled call-like call argument" <System.Net.Security.SslSessionsCache+SslCredKey>
+;* V08 tmp3 [V08 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "spilled call-like call argument" <System.Net.Security.SslSessionsCache+SslCredKey>
+; V09 tmp4 [V09,T14] ( 3, 3 ) ref -> r14 class-hnd exact single-def "dup spill" <System.Object[]>
+; V10 tmp5 [V10,T15] ( 3, 3 ) ref -> r13 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
+;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Net.Security.SafeCredentialReference>
+; V15 tmp10 [V15,T09] ( 2, 8 ) ref -> rdi class-hnd "dup spill" <System.Net.Security.SafeFreeCredentials>
+;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref
+;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[int]>
+; V19 tmp14 [V19,T10] ( 2, 8 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "impAppendStmt" <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]>
+; V20 tmp15 [V20 ] ( 2, 4 ) ref -> [rbp-0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Net.Security.SafeCredentialReference>
+;* V21 tmp16 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V22 tmp17 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Net.Security.SafeCredentialReference>
+; V24 tmp19 [V24,T13] ( 4, 4 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.FormattableStringFactory+ConcreteFormattableString>
+; V25 tmp20 [V25,T20] ( 2, 1 ) ref -> r15 single-def
+; V26 tmp21 [V26,T21] ( 2, 1 ) ref -> r14 single-def
+;* V27 tmp22 [V27 ] ( 0, 0 ) ref -> zero-ref single-def
+; V28 tmp23 [V28,T22] ( 2, 1 ) ref -> r15 single-def
+; V29 tmp24 [V29,T23] ( 2, 1 ) ref -> r14 single-def
+;* V30 tmp25 [V30,T25] ( 0, 0 ) ref -> zero-ref single-def
+; V31 tmp26 [V31,T24] ( 2, 1 ) ref -> r8 single-def
;* V32 tmp27 [V32 ] ( 0, 0 ) ref -> zero-ref single-def
-; V33 tmp28 [V33,T25] ( 2, 1 ) ref -> r15 single-def
-; V34 tmp29 [V34,T26] ( 2, 1 ) ref -> r14 single-def
-;* V35 tmp30 [V35,T28] ( 0, 0 ) ref -> zero-ref single-def
-; V36 tmp31 [V36,T27] ( 2, 1 ) ref -> r8 single-def
-;* V37 tmp32 [V37 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref
-;* V39 tmp34 [V39 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V40 tmp35 [V40,T29] ( 0, 0 ) ref -> zero-ref
-;* V41 tmp36 [V41,T19] ( 0, 0 ) ubyte -> zero-ref "field V21.hasValue (fldOffset=0x0)" P-INDEP
-;* V42 tmp37 [V42,T20] ( 0, 0 ) int -> zero-ref "field V21.value (fldOffset=0x4)" P-INDEP
-; V43 tmp38 [V43,T05] ( 3, 12 ) struct ( 8) [rbp-0x88] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V44 cse0 [V44,T08] ( 7, 9 ) ref -> rbx "CSE #01: moderate"
-; V45 cse1 [V45,T21] ( 3, 1.50) ref -> r15 "CSE #07: moderate"
-; V46 cse2 [V46,T01] ( 5, 14 ) long -> r12 "CSE #03: aggressive"
-; V47 cse3 [V47,T22] ( 3, 1.25) int -> r14 "CSE #06: moderate"
-; V48 rat0 [V48,T02] ( 4, 12.25) long -> r13 "Strength reduced derived IV"
-; V49 rat1 [V49,T03] ( 4, 12.25) int -> r14 "Trip count IV"
+;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref
+;* V34 tmp29 [V34 ] ( 0, 0 ) ref -> zero-ref single-def
+;* V35 tmp30 [V35,T26] ( 0, 0 ) ref -> zero-ref
+;* V36 tmp31 [V36,T16] ( 0, 0 ) ubyte -> zero-ref "field V18.hasValue (fldOffset=0x0)" P-INDEP
+;* V37 tmp32 [V37,T17] ( 0, 0 ) int -> zero-ref "field V18.value (fldOffset=0x4)" P-INDEP
+; V38 tmp33 [V38,T04] ( 3, 12 ) struct ( 8) [rbp-0x58] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+; V39 tmp34 [V39,T11] ( 2, 8 ) ref -> [rbp-0x78] spill-single-def "argument with side effect"
+; V40 cse0 [V40,T07] ( 7, 9 ) ref -> rbx "CSE #01: aggressive"
+; V41 cse1 [V41,T18] ( 3, 1.50) ref -> r15 "CSE #07: moderate"
+; V42 cse2 [V42,T03] ( 4, 12 ) long -> r12 "CSE #04: aggressive"
+; V43 cse3 [V43,T06] ( 3, 10 ) ref -> rdi "CSE #02: aggressive"
+; V44 cse4 [V44,T19] ( 3, 1.25) int -> r14 "CSE #06: moderate"
+; V45 rat0 [V45,T01] ( 4, 12.25) long -> r13 "Strength reduced derived IV"
+; V46 rat1 [V46,T02] ( 4, 12.25) int -> r14 "Trip count IV"
;
-; Lcl frame size = 184
+; Lcl frame size = 120
G_M28232_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 184
- lea rbp, [rsp+0xE0]
+ sub rsp, 120
+ lea rbp, [rsp+0xA0]
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x80], ymm8
- vmovdqu ymmword ptr [rbp-0x60], ymm8
- vmovdqa xmmword ptr [rbp-0x40], xmm8
+ vmovdqu ymmword ptr [rbp-0x50], ymm8
xor eax, eax
mov qword ptr [rbp-0x30], rax
- ;; size=51 bbWeight=1 PerfScore 14.33
+ ;; size=38 bbWeight=1 PerfScore 10.33
G_M28232_IG02:
mov rdi, 0xD1FFAB1E ; const ptr
mov rbx, gword ptr [rdi]
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:get_Count():int:this
call [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:get_Count():int:this
test al, 31
- jne G_M28232_IG17
+ jne G_M28232_IG12
;; size=36 bbWeight=1 PerfScore 7.00
G_M28232_IG03:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:ToArray():System.Collections.Generic.KeyValuePair`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon][]:this
call [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:ToArray():System.Collections.Generic.KeyValuePair`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon][]:this
mov r15, rax
mov r14d, dword ptr [r15+0x08]
test r14d, r14d
- jle G_M28232_IG16
+ jle G_M28232_IG11
;; size=31 bbWeight=0.50 PerfScore 3.50
G_M28232_IG04:
xor r13d, r13d
;; size=3 bbWeight=0.25 PerfScore 0.06
G_M28232_IG05:
mov r12, r13
mov rax, gword ptr [r15+r12+0x10]
- mov rcx, gword ptr [rax+0x08]
- mov gword ptr [rbp-0x98], rcx
- test rcx, rcx
- je G_M28232_IG12
- ;; size=28 bbWeight=4 PerfScore 26.00
-G_M28232_IG06:
- mov gword ptr [rbp-0x90], rax
+ mov gword ptr [rbp-0x60], rax
mov rdi, gword ptr [rax+0x08]
+ mov rcx, rdi
+ mov gword ptr [rbp-0x68], rcx
+ test rcx, rcx
+ je SHORT G_M28232_IG07
+ ;; size=28 bbWeight=4 PerfScore 31.00
+G_M28232_IG06:
xor esi, esi
mov rdx, 0xD1FFAB1E ; code for System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this
call [rdx]System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this
xor rdi, rdi
- mov rax, gword ptr [rbp-0x90]
+ mov rax, gword ptr [rbp-0x60]
mov gword ptr [rax+0x08], rdi
mov rdi, rax
call System.GC:_SuppressFinalize(System.Object)
- mov rdi, gword ptr [rbp-0x98]
+ mov rdi, gword ptr [rbp-0x68]
mov rax, 0xD1FFAB1E ; code for System.Net.Security.SafeCredentialReference:CreateReference(System.Net.Security.SafeFreeCredentials):System.Net.Security.SafeCredentialReference
call [rax]System.Net.Security.SafeCredentialReference:CreateReference(System.Net.Security.SafeFreeCredentials):System.Net.Security.SafeCredentialReference
test rax, rax
- jne SHORT G_M28232_IG09
- mov gword ptr [rbp-0xA0], rbx
- ;; size=77 bbWeight=2 PerfScore 33.00
+ jne SHORT G_M28232_IG08
+ ;; size=53 bbWeight=2 PerfScore 25.00
G_M28232_IG07:
+ add r12, 16
+ add r12, r15
+ add r12, 8
+ lea rdi, [rsp]
+ mov rsi, r12
+ mov rcx, gword ptr [rsi]
+ mov gword ptr [rsp], rcx
+ add rsi, 8
+ add rdi, 8
+ movsq
+ movsq
+ mov rdi, rbx
+ lea rsi, [rbp-0x30]
+ xor edx, edx
+ xor rcx, rcx
+ mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:TryRemoveInternal(System.Net.Security.SslSessionsCache+SslCredKey,byref,ubyte,System.__Canon):ubyte:this
+ call [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:TryRemoveInternal(System.Net.Security.SslSessionsCache+SslCredKey,byref,ubyte,System.__Canon):ubyte:this
+ jmp SHORT G_M28232_IG10
+ ;; size=62 bbWeight=2 PerfScore 27.00
+G_M28232_IG08:
vmovdqu xmm0, xmmword ptr [r15+r12+0x18]
vmovdqu xmmword ptr [rbp-0x48], xmm0
mov rcx, qword ptr [r15+r12+0x28]
mov qword ptr [rbp-0x38], rcx
;; size=21 bbWeight=2 PerfScore 16.00
-G_M28232_IG08:
+G_M28232_IG09:
+ mov rsi, gword ptr [rbx+0x08]
+ mov gword ptr [rbp-0x70], rsi
+ mov gword ptr [rbp-0x78], rbx
lea rdi, [rsp]
lea rsi, [rbp-0x48]
mov rcx, gword ptr [rsi]
mov gword ptr [rsp], rcx
add rsi, 8
add rdi, 8
movsq
movsq
- lea rsi, [rbp-0x30]
- mov rdi, gword ptr [rbp-0xA0]
- xor edx, edx
- xor rcx, rcx
- mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:TryRemoveInternal(System.Net.Security.SslSessionsCache+SslCredKey,byref,ubyte,System.__Canon):ubyte:this
- call [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:TryRemoveInternal(System.Net.Security.SslSessionsCache+SslCredKey,byref,ubyte,System.__Canon):ubyte:this
- jmp G_M28232_IG15
- ;; size=59 bbWeight=2 PerfScore 27.50
-G_M28232_IG09:
- mov rdi, rbx
- mov gword ptr [rbp-0xA8], rdi
- ;; size=10 bbWeight=2 PerfScore 2.50
-G_M28232_IG10:
- vmovdqu xmm0, xmmword ptr [r15+r12+0x18]
- vmovdqu xmmword ptr [rbp-0x60], xmm0
- mov rcx, qword ptr [r15+r12+0x28]
- mov qword ptr [rbp-0x50], rcx
- ;; size=21 bbWeight=2 PerfScore 16.00
-G_M28232_IG11:
- mov rsi, gword ptr [rdi+0x08]
- mov gword ptr [rbp-0xB8], rsi
- lea rdi, [rsp]
- lea rsi, [rbp-0x60]
- mov rcx, gword ptr [rsi]
- mov gword ptr [rsp], rcx
- add rsi, 8
- add rdi, 8
- movsq
- movsq
- mov byte ptr [rbp-0x88], 0
- xor edx, edx
- mov dword ptr [rbp-0x84], edx
- lea rdx, [rbp-0x80]
- mov qword ptr [rsp+0x18], rdx
- mov rdx, qword ptr [rbp-0x88]
- mov rsi, gword ptr [rbp-0xB8]
- mov rdi, gword ptr [rbp-0xA8]
+ mov byte ptr [rbp-0x58], 0
+ xor edi, edi
+ mov dword ptr [rbp-0x54], edi
+ lea rdi, [rbp-0x50]
+ mov qword ptr [rsp+0x18], rdi
+ mov rdi, gword ptr [rbp-0x78]
+ mov rdx, qword ptr [rbp-0x58]
+ mov rsi, gword ptr [rbp-0x70]
mov rcx, rax
mov r8d, 1
mov r9d, 1
mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon],System.Net.Security.SslSessionsCache+SslCredKey,System.Nullable`1[int],System.__Canon,ubyte,ubyte,byref):ubyte:this
call [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon],System.Net.Security.SslSessionsCache+SslCredKey,System.Nullable`1[int],System.__Canon,ubyte,ubyte,byref):ubyte:this
- xor rcx, rcx
- mov gword ptr [rbp-0x80], rcx
- jmp SHORT G_M28232_IG15
- ;; size=118 bbWeight=2 PerfScore 47.00
-G_M28232_IG12:
- mov gword ptr [rbp-0xB0], rbx
- ;; size=7 bbWeight=2 PerfScore 2.00
-G_M28232_IG13:
- vmovdqu xmm0, xmmword ptr [r15+r12+0x18]
- vmovdqu xmmword ptr [rbp-0x78], xmm0
- mov rcx, qword ptr [r15+r12+0x28]
- mov qword ptr [rbp-0x68], rcx
- ;; size=21 bbWeight=2 PerfScore 16.00
-G_M28232_IG14:
- lea rdi, [rsp]
- lea rsi, [rbp-0x78]
- mov rcx, gword ptr [rsi]
- mov gword ptr [rsp], rcx
- add rsi, 8
- add rdi, 8
- movsq
- movsq
- lea rsi, [rbp-0x30]
- mov rdi, gword ptr [rbp-0xB0]
- xor edx, edx
- xor rcx, rcx
- mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:TryRemoveInternal(System.Net.Security.SslSessionsCache+SslCredKey,byref,ubyte,System.__Canon):ubyte:this
- call [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:TryRemoveInternal(System.Net.Security.SslSessionsCache+SslCredKey,byref,ubyte,System.__Canon):ubyte:this
- ;; size=54 bbWeight=2 PerfScore 23.50
-G_M28232_IG15:
+ xor rdi, rdi
+ mov gword ptr [rbp-0x50], rdi
+ ;; size=102 bbWeight=2 PerfScore 45.00
+G_M28232_IG10:
add r13, 32
dec r14d
jne G_M28232_IG05
;; size=13 bbWeight=4 PerfScore 6.00
-G_M28232_IG16:
+G_M28232_IG11:
mov rdi, 0xD1FFAB1E ; const ptr
mov r15, gword ptr [rdi]
cmp byte ptr [r15+0x9D], 0
- je G_M28232_IG17
+ je G_M28232_IG12
mov rdi, 0xD1FFAB1E ; System.Object[]
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
mov r14, rax
mov rdi, 0xD1FFAB1E ; System.Int32
call CORINFO_HELP_NEWSFAST
mov r13, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:get_Count():int:this
call [rax]System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Security.SslSessionsCache+SslCredKey,System.__Canon]:get_Count():int:this
mov dword ptr [r13+0x08], eax
lea rdi, bword ptr [r14+0x10]
mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; System.Runtime.CompilerServices.FormattableStringFactory+ConcreteFormattableString
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rdi, 0xD1FFAB1E ; 'Scavenged cache, New Cache Count = {0}'
mov gword ptr [rbx+0x08], rdi
lea rdi, bword ptr [rbx+0x10]
mov rsi, r14
call CORINFO_HELP_ASSIGN_REF
xor rdi, rdi
mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:IdOf(System.Object):System.String
call [rax]System.Net.NetEventSource:IdOf(System.Object):System.String
mov r14, rax
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Net.NetEventSource:Format(System.FormattableString):System.String
call [rax]System.Net.NetEventSource:Format(System.FormattableString):System.String
mov r8, rax
mov rdi, r15
mov rdx, r14
mov rcx, 0xD1FFAB1E ; 'CacheCredential'
mov esi, 1
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
call [rax]System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this
;; size=211 bbWeight=0.50 PerfScore 16.00
-G_M28232_IG17:
+G_M28232_IG12:
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M28232_IG18:
- add rsp, 184
+G_M28232_IG13:
+ add rsp, 120
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 4.25
+ ;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 780, prolog size 51, PerfScore 260.90, instruction count 173, allocated bytes for code 780 (MethodHash=c18491b7) for method System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0() (FullOpts)
+; Total bytes of code 614, prolog size 38, PerfScore 191.40, instruction count 148, allocated bytes for code 614 (MethodHash=c18491b7) for method System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0() (FullOpts)
; ============================================================ -123 (-10.78 % of base) - System.Runtime.Serialization.Json.JsonXmlDataContract:WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.RuntimeTypeHandle):this ; Assembly listing for method System.Runtime.Serialization.Json.JsonXmlDataContract:WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.RuntimeTypeHandle):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 36 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Runtime.Serialization.Json.JsonXmlDataContract>
; V01 arg1 [V01,T16] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Runtime.Serialization.XmlWriterDelegator>
; V02 arg2 [V02,T17] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Object>
-; V03 arg3 [V03,T08] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson>
+; V03 arg3 [V03,T09] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson>
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.RuntimeTypeHandle>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.IO.MemoryStream>
-; V06 loc1 [V06,T25] ( 2, 2 ) ref -> rsi class-hnd exact single-def <System.String>
+; V06 loc1 [V06,T24] ( 2, 2 ) ref -> rsi class-hnd exact single-def <System.String>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;* V09 tmp2 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
-; V12 tmp5 [V12,T24] ( 3, 2 ) ref -> r12
-; V13 tmp6 [V13,T10] ( 3, 6 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Runtime.Serialization.DataContractSerializer>
+; V12 tmp5 [V12,T23] ( 3, 2 ) ref -> r12
+; V13 tmp6 [V13,T11] ( 3, 6 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Runtime.Serialization.DataContractSerializer>
; V14 tmp7 [V14,T02] ( 6, 11 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.IO.MemoryStream>
-; V15 tmp8 [V15,T11] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.IO.StreamReader>
+; V15 tmp8 [V15,T12] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.IO.StreamReader>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Type]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Xml.XmlDictionaryAsyncCheckWriter>
-; V19 tmp12 [V19,T00] ( 22, 40 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Xml.XmlUTF8TextWriter>
-; V20 tmp13 [V20,T03] ( 7, 10 ) ref -> r12 class-hnd exact single-def "Inlining Arg" <System.Text.UTF8Encoding+UTF8EncodingSealed>
-; V21 tmp14 [V21,T04] ( 5, 10 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Xml.XmlDictionaryAsyncCheckWriter>
-; V22 tmp15 [V22,T12] ( 3, 6 ) ref -> [rbp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Xml.XmlBaseWriter+NamespaceManager>
-; V23 tmp16 [V23,T18] ( 3, 5 ) ref -> [rbp-0x50] class-hnd "Inlining Arg" <System.IO.Stream>
-; V24 tmp17 [V24,T05] ( 6, 8 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "impAppendStmt" <System.String>
-; V25 tmp18 [V25,T09] ( 6, 6 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <System.Xml.XmlUTF8NodeWriter>
-; V26 tmp19 [V26,T22] ( 3, 3 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <System.Xml.EncodingStreamWrapper>
-;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.CodePageDataItem>
-; V28 tmp21 [V28,T07] ( 5, 7 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V29 tmp22 [V29,T29] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
-; V30 tmp23 [V30,T26] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
-; V31 tmp24 [V31,T27] ( 2, 2 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inlining Arg" <ubyte[]>
-; V32 tmp25 [V32,T28] ( 2, 2 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inlining Arg" <ubyte[]>
-; V33 tmp26 [V33,T23] ( 4, 2.50) ref -> [rbp-0x80] class-hnd "Inline stloc first use temp" <System.Text.Encoding>
-; V34 tmp27 [V34,T15] ( 4, 5 ) ref -> [rbp-0x88] class-hnd "Inlining Arg" <System.Text.Encoding>
-; V35 tmp28 [V35,T01] ( 8, 13 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inlining Arg" <System.Xml.XmlUTF8NodeWriter>
-;* V36 tmp29 [V36 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V37 tmp30 [V37,T13] ( 3, 6 ) ref -> [rbp-0x98] class-hnd spill-single-def "Inlining Arg" <System.Xml.XmlUTF8NodeWriter>
-; V38 tmp31 [V38,T06] ( 4, 8 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Runtime.Serialization.XmlWriterDelegator>
-; V39 tmp32 [V39,T20] ( 2, 2 ) ref -> r13 single-def "field V04.m_type (fldOffset=0x0)" P-INDEP
-;* V40 tmp33 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "field V16.m_type (fldOffset=0x0)" P-INDEP
-; V41 tmp34 [V41,T21] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V42 tmp35 [V42,T14] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
-; V43 cse0 [V43,T19] ( 5, 4.50) ref -> r13 "CSE #01: moderate"
-; TEMP_01 int -> [rbp-0x9C]
+; V19 tmp12 [V19,T00] ( 22, 40 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlUTF8TextWriter>
+; V20 tmp13 [V20,T03] ( 5, 10 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlDictionaryAsyncCheckWriter>
+; V21 tmp14 [V21,T13] ( 3, 6 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlBaseWriter+NamespaceManager>
+; V22 tmp15 [V22,T18] ( 3, 5 ) ref -> r12 class-hnd "Inlining Arg" <System.IO.Stream>
+; V23 tmp16 [V23,T07] ( 5, 7 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "impAppendStmt" <System.String>
+; V24 tmp17 [V24,T10] ( 6, 6 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Xml.XmlUTF8NodeWriter>
+; V25 tmp18 [V25,T21] ( 3, 3 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Xml.EncodingStreamWrapper>
+;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.CodePageDataItem>
+; V27 tmp20 [V27,T08] ( 5, 7 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V28 tmp21 [V28,T27] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V29 tmp22 [V29,T25] ( 2, 2 ) byref -> rdi single-def "impAppendStmt"
+; V30 tmp23 [V30,T22] ( 4, 2.50) ref -> [rbp-0x48] class-hnd "Inline stloc first use temp" <System.Text.Encoding>
+; V31 tmp24 [V31,T06] ( 6, 7 ) ref -> [rbp-0x50] class-hnd "Inlining Arg" <System.Text.Encoding>
+; V32 tmp25 [V32,T01] ( 8, 13 ) ref -> [rbp-0x58] class-hnd spill-single-def "Inlining Arg" <System.Xml.XmlUTF8NodeWriter>
+;* V33 tmp26 [V33 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V34 tmp27 [V34,T14] ( 3, 6 ) ref -> r12 class-hnd single-def "Inlining Arg" <System.Xml.XmlUTF8NodeWriter>
+; V35 tmp28 [V35,T04] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Runtime.Serialization.XmlWriterDelegator>
+; V36 tmp29 [V36,T19] ( 2, 2 ) ref -> r13 single-def "field V04.m_type (fldOffset=0x0)" P-INDEP
+;* V37 tmp30 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "field V16.m_type (fldOffset=0x0)" P-INDEP
+; V38 tmp31 [V38,T20] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V39 tmp32 [V39,T15] ( 3, 6 ) ref -> rdi single-def "argument with side effect"
+; V40 cse0 [V40,T05] ( 9, 7 ) ref -> [rbp-0x60] spill-single-def "CSE #01: moderate"
+; V41 cse1 [V41,T26] ( 3, 1.50) int -> rdx "CSE #02: moderate"
+; TEMP_01 int -> [rbp-0x64]
;
-; Lcl frame size = 136
+; Lcl frame size = 88
G_M13414_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 136
- lea rbp, [rsp+0xB0]
+ sub rsp, 88
+ lea rbp, [rsp+0x80]
mov r15, rsi
mov r14, rdx
mov rbx, rcx
mov r13, r8
- ;; size=37 bbWeight=1 PerfScore 7.75
+ ;; size=34 bbWeight=1 PerfScore 7.75
G_M13414_IG02:
test rbx, rbx
je SHORT G_M13414_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M13414_IG03:
mov r12, gword ptr [rbx+0x20]
jmp SHORT G_M13414_IG05
;; size=6 bbWeight=0.50 PerfScore 2.00
G_M13414_IG04:
xor r12, r12
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M13414_IG05:
mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.DataContractSerializer
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x30], rax
mov rdi, rbx
mov rsi, r12
mov rcx, 0xD1FFAB1E ; code for System.Runtime.Serialization.Json.JsonXmlDataContract:GetKnownTypesFromContext(System.Runtime.Serialization.XmlObjectSerializerContext,System.Collections.Generic.IList`1[System.Type]):System.Collections.Generic.List`1[System.Type]
call [rcx]System.Runtime.Serialization.Json.JsonXmlDataContract:GetKnownTypesFromContext(System.Runtime.Serialization.XmlObjectSerializerContext,System.Collections.Generic.IList`1[System.Type]):System.Collections.Generic.List`1[System.Type]
mov rdx, rax
xor rsi, rsi
mov gword ptr [rsp], rsi
;; size=46 bbWeight=1 PerfScore 7.50
G_M13414_IG06:
mov dword ptr [rsp+0x08], esi
mov rsi, r13
mov rdi, gword ptr [rbp-0x30]
mov ecx, 1
xor r8d, r8d
xor r9d, r9d
mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContractSerializer:Initialize(System.Type,System.Collections.Generic.IEnumerable`1[System.Type],int,ubyte,ubyte,System.Runtime.Serialization.DataContractResolver,ubyte):this
call [rax]System.Runtime.Serialization.DataContractSerializer:Initialize(System.Type,System.Collections.Generic.IEnumerable`1[System.Type],int,ubyte,ubyte,System.Runtime.Serialization.DataContractResolver,ubyte):this
mov rdi, 0xD1FFAB1E ; System.IO.MemoryStream
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rdi, rbx
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.IO.MemoryStream:.ctor(int):this
call [rax]System.IO.MemoryStream:.ctor(int):this
- mov rdi, 0xD1FFAB1E ; const ptr
- mov r13, gword ptr [rdi]
- mov r12, r13
mov rdi, 0xD1FFAB1E ; System.Xml.XmlUTF8TextWriter
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x38], rax
+ mov r13, rax
mov rdi, 0xD1FFAB1E ; System.Xml.XmlBaseWriter+NamespaceManager
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x48], rax
- mov rdi, rax
- mov rcx, 0xD1FFAB1E ; code for System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this
- call [rcx]System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this
- mov rax, gword ptr [rbp-0x38]
- lea rdi, bword ptr [rax+0x18]
- mov rsi, gword ptr [rbp-0x48]
+ mov r12, rax
+ mov rdi, r12
+ mov rax, 0xD1FFAB1E ; code for System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this
+ call [rax]System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this
+ lea rdi, bword ptr [r13+0x18]
+ mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
- mov rax, gword ptr [rbp-0x38]
- mov dword ptr [rax+0x6C], edi
- mov byte ptr [rax+0x7A], 0
- mov gword ptr [rbp-0x50], rbx
- cmp gword ptr [r12+0x08], 0
+ mov dword ptr [r13+0x6C], edi
+ mov byte ptr [r13+0x7A], 0
+ mov r12, rbx
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rax, gword ptr [rdi]
+ mov gword ptr [rbp-0x60], rax
+ cmp gword ptr [rax+0x08], 0
jne SHORT G_M13414_IG08
- ;; size=180 bbWeight=1 PerfScore 33.75
+ ;; size=170 bbWeight=1 PerfScore 29.50
G_M13414_IG07:
- mov rdi, r12
- mov rdx, 0xD1FFAB1E ; code for System.Text.Encoding:GetDataItem():this
- call [rdx]System.Text.Encoding:GetDataItem():this
- ;; size=15 bbWeight=0.50 PerfScore 1.75
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Text.Encoding:GetDataItem():this
+ call [rcx]System.Text.Encoding:GetDataItem():this
+ mov rax, gword ptr [rbp-0x60]
+ ;; size=19 bbWeight=0.50 PerfScore 2.25
G_M13414_IG08:
- mov rdi, gword ptr [r12+0x08]
- mov rdx, gword ptr [rdi+0x08]
- mov gword ptr [rbp-0x58], rdx
- mov rdi, r13
- mov rsi, 0xD1FFAB1E ; code for System.Text.Encoding:get_WebName():System.String:this
- call [rsi]System.Text.Encoding:get_WebName():System.String:this
+ mov rdi, gword ptr [rax+0x08]
+ mov rcx, gword ptr [rdi+0x08]
+ mov gword ptr [rbp-0x38], rcx
+ mov rdi, rax
+ mov rcx, 0xD1FFAB1E ; code for System.Text.Encoding:get_WebName():System.String:this
+ call [rcx]System.Text.Encoding:get_WebName():System.String:this
mov rsi, rax
- mov rdx, gword ptr [rbp-0x58]
- cmp rdx, rsi
+ mov rdi, gword ptr [rbp-0x38]
+ cmp rdi, rsi
je SHORT G_M13414_IG11
- ;; size=40 bbWeight=1 PerfScore 11.00
+ ;; size=39 bbWeight=1 PerfScore 11.00
G_M13414_IG09:
- test rdx, rdx
+ test rdi, rdi
je SHORT G_M13414_IG10
test rsi, rsi
je SHORT G_M13414_IG10
- mov edi, dword ptr [rdx+0x08]
- cmp edi, dword ptr [rsi+0x08]
+ mov edx, dword ptr [rdi+0x08]
+ cmp edx, dword ptr [rsi+0x08]
jne SHORT G_M13414_IG10
- lea rdi, bword ptr [rdx+0x0C]
- mov edx, dword ptr [rdx+0x08]
+ add rdi, 12
add edx, edx
add rsi, 12
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
test eax, eax
jne SHORT G_M13414_IG11
- ;; size=47 bbWeight=0.50 PerfScore 8.00
+ ;; size=44 bbWeight=0.50 PerfScore 6.88
G_M13414_IG10:
mov rdi, 0xD1FFAB1E ; System.Xml.EncodingStreamWrapper
call CORINFO_HELP_NEWSFAST
- mov rcx, rax
- mov gword ptr [rbp-0x68], rcx
- mov rdi, rcx
+ mov r12, rax
+ mov rdx, gword ptr [rbp-0x60]
+ mov rdi, r12
mov rsi, rbx
- mov rdx, r12
mov ecx, 1
mov rax, 0xD1FFAB1E ; code for System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding,ubyte):this
call [rax]System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding,ubyte):this
- mov rcx, gword ptr [rbp-0x68]
- mov gword ptr [rbp-0x50], rcx
- ;; size=56 bbWeight=0.50 PerfScore 4.38
+ ;; size=45 bbWeight=0.50 PerfScore 3.25
G_M13414_IG11:
- mov rcx, gword ptr [rbp-0x38]
- cmp gword ptr [rcx+0x80], 0
- jne G_M13414_IG13
- ;; size=18 bbWeight=1 PerfScore 5.00
+ cmp gword ptr [r13+0x80], 0
+ jne SHORT G_M13414_IG13
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M13414_IG12:
mov rdi, 0xD1FFAB1E ; System.Xml.XmlUTF8NodeWriter
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x60], rax
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rdi]
- mov gword ptr [rbp-0x70], rcx
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdx, gword ptr [rdi]
- mov gword ptr [rbp-0x78], rdx
+ mov gword ptr [rbp-0x40], rax
mov rdi, rax
- mov rsi, 0xD1FFAB1E ; code for System.Xml.XmlStreamNodeWriter:.ctor():this
- call [rsi]System.Xml.XmlStreamNodeWriter:.ctor():this
- mov rax, gword ptr [rbp-0x60]
+ mov rcx, 0xD1FFAB1E ; code for System.Xml.XmlStreamNodeWriter:.ctor():this
+ call [rcx]System.Xml.XmlStreamNodeWriter:.ctor():this
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ mov rax, gword ptr [rbp-0x40]
lea rdi, bword ptr [rax+0x30]
- mov rsi, gword ptr [rbp-0x70]
call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x60]
+ mov rdi, 0xD1FFAB1E ; const ptr
+ mov rsi, gword ptr [rdi]
+ mov rax, gword ptr [rbp-0x40]
lea rdi, bword ptr [rax+0x38]
- mov rsi, gword ptr [rbp-0x78]
call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x60]
+ mov rax, gword ptr [rbp-0x40]
mov byte ptr [rax+0x25], 0
- mov rcx, gword ptr [rbp-0x38]
- lea rdi, bword ptr [rcx+0x80]
+ lea rdi, bword ptr [r13+0x80]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
- ;; size=129 bbWeight=0.50 PerfScore 12.00
+ ;; size=109 bbWeight=0.50 PerfScore 9.50
G_M13414_IG13:
- mov rcx, gword ptr [rbp-0x38]
- mov rdx, gword ptr [rcx+0x80]
- mov gword ptr [rbp-0x90], rdx
- mov rsi, r12
- cmp byte ptr [rdx], dl
- xor r8, r8
- mov gword ptr [rbp-0x80], r8
- mov gword ptr [rbp-0x88], rsi
- mov rdi, rsi
- mov r9, 0xD1FFAB1E
- mov r9, qword ptr [r9]
- call [r9+0x08]System.Text.Encoding:get_CodePage():int:this
- mov dword ptr [rbp-0x9C], eax
- mov rdi, r13
+ mov rax, gword ptr [r13+0x80]
+ mov gword ptr [rbp-0x58], rax
+ mov rcx, gword ptr [rbp-0x60]
+ mov rdx, rcx
+ cmp byte ptr [rax], al
+ xor rsi, rsi
+ mov gword ptr [rbp-0x48], rsi
+ mov rdi, rdx
+ mov gword ptr [rbp-0x50], rdx
+ mov r8, qword ptr [rdx]
+ mov r8, qword ptr [r8+0x68]
+ call [r8+0x08]System.Text.Encoding:get_CodePage():int:this
+ mov dword ptr [rbp-0x64], eax
+ mov rdi, gword ptr [rbp-0x60]
mov rcx, 0xD1FFAB1E ; code for System.Text.Encoding:get_CodePage():int:this
call [rcx]System.Text.Encoding:get_CodePage():int:this
- cmp dword ptr [rbp-0x9C], eax
+ cmp dword ptr [rbp-0x64], eax
jne SHORT G_M13414_IG14
- xor rsi, rsi
- mov gword ptr [rbp-0x88], rsi
- mov gword ptr [rbp-0x80], r12
- ;; size=99 bbWeight=0.50 PerfScore 12.38
-G_M13414_IG14:
- mov rcx, gword ptr [rbp-0x90]
- lea rdi, bword ptr [rcx+0x18]
mov rsi, gword ptr [rbp-0x50]
- call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x90]
- mov byte ptr [rax+0x24], 0
- xor edi, edi
- mov dword ptr [rax+0x20], edi
- mov r12, gword ptr [rbp-0x80]
- test r12, r12
- je SHORT G_M13414_IG16
- ;; size=45 bbWeight=1 PerfScore 9.00
-G_M13414_IG15:
- lea rdi, bword ptr [rax+0x10]
+ mov gword ptr [rbp-0x48], rsi
+ xor rsi, rsi
+ mov gword ptr [rbp-0x50], rsi
+ ;; size=82 bbWeight=0.50 PerfScore 14.12
+G_M13414_IG14:
+ mov rdx, gword ptr [rbp-0x58]
+ lea rdi, bword ptr [rdx+0x18]
mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
- mov rax, gword ptr [rbp-0x90]
- ;; size=19 bbWeight=0.50 PerfScore 1.38
-G_M13414_IG16:
- lea rdi, bword ptr [rax+0x40]
- mov rsi, gword ptr [rbp-0x88]
- call CORINFO_HELP_ASSIGN_REF
- mov r12, gword ptr [rbp-0x90]
- mov byte ptr [r12+0x25], 0
- mov r12, gword ptr [rbp-0x38]
- mov rax, gword ptr [r12+0x80]
- mov gword ptr [rbp-0x98], rax
- mov byte ptr [r12+0x7B], 0
+ mov r12, gword ptr [rbp-0x58]
+ mov byte ptr [r12+0x24], 0
+ xor edi, edi
+ mov dword ptr [r12+0x20], edi
+ mov rax, gword ptr [rbp-0x48]
+ test rax, rax
+ je SHORT G_M13414_IG16
+ ;; size=42 bbWeight=1 PerfScore 8.25
+G_M13414_IG15:
lea rdi, bword ptr [r12+0x10]
mov rsi, rax
call CORINFO_HELP_ASSIGN_REF
+ ;; size=13 bbWeight=0.50 PerfScore 0.88
+G_M13414_IG16:
lea rdi, bword ptr [r12+0x40]
- mov rsi, gword ptr [rbp-0x98]
+ mov rsi, gword ptr [rbp-0x50]
+ call CORINFO_HELP_ASSIGN_REF
+ mov byte ptr [r12+0x25], 0
+ mov r12, gword ptr [r13+0x80]
+ mov byte ptr [r13+0x7B], 0
+ lea rdi, bword ptr [r13+0x10]
+ mov rsi, r12
+ call CORINFO_HELP_ASSIGN_REF
+ lea rdi, bword ptr [r13+0x40]
+ mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
xor edi, edi
- mov dword ptr [r12+0x6C], edi
- mov byte ptr [r12+0x7A], 0
- mov rdi, gword ptr [r12+0x18]
+ mov dword ptr [r13+0x6C], edi
+ mov byte ptr [r13+0x7A], 0
+ mov rdi, gword ptr [r13+0x18]
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlBaseWriter+NamespaceManager:Clear():this
cmp dword ptr [rdi], edi
call [rax]System.Xml.XmlBaseWriter+NamespaceManager:Clear():this
- cmp dword ptr [r12+0x68], 0
+ cmp dword ptr [r13+0x68], 0
je SHORT G_M13414_IG19
- ;; size=124 bbWeight=1 PerfScore 28.25
+ ;; size=92 bbWeight=1 PerfScore 24.50
G_M13414_IG17:
xor rdi, rdi
- mov gword ptr [r12+0x20], rdi
- ;; size=7 bbWeight=0.50 PerfScore 0.62
+ mov gword ptr [r13+0x20], rdi
+ ;; size=6 bbWeight=0.50 PerfScore 0.62
G_M13414_IG18:
- mov dword ptr [r12+0x68], edi
- ;; size=5 bbWeight=0.50 PerfScore 0.50
+ mov dword ptr [r13+0x68], edi
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M13414_IG19:
xor rdi, rdi
- mov gword ptr [r12+0x28], rdi
- ;; size=7 bbWeight=1 PerfScore 1.25
+ mov gword ptr [r13+0x28], rdi
+ ;; size=6 bbWeight=1 PerfScore 1.25
G_M13414_IG20:
- mov gword ptr [r12+0x30], rdi
- ;; size=5 bbWeight=1 PerfScore 1.00
+ mov gword ptr [r13+0x30], rdi
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M13414_IG21:
- mov gword ptr [r12+0x58], rdi
- ;; size=5 bbWeight=1 PerfScore 1.00
+ mov gword ptr [r13+0x58], rdi
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M13414_IG22:
- mov gword ptr [r12+0x60], rdi
+ mov gword ptr [r13+0x60], rdi
mov rdi, 0xD1FFAB1E ; System.Xml.XmlDictionaryAsyncCheckWriter
call CORINFO_HELP_NEWSFAST
- mov gword ptr [rbp-0x40], rax
- lea rdi, bword ptr [rax+0x10]
- mov rsi, r12
+ mov r12, rax
+ lea rdi, bword ptr [r12+0x10]
+ mov rsi, r13
call CORINFO_HELP_ASSIGN_REF
mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.XmlWriterDelegator
call CORINFO_HELP_NEWSFAST
- mov r12, rax
- lea rdi, bword ptr [r12+0x08]
- mov rsi, gword ptr [rbp-0x40]
+ mov r13, rax
+ lea rdi, bword ptr [r13+0x08]
+ mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
- lea rdi, bword ptr [r12+0x10]
- mov rsi, gword ptr [rbp-0x40]
+ lea rdi, bword ptr [r13+0x10]
+ mov rsi, r12
call CORINFO_HELP_ASSIGN_REF
mov rdi, gword ptr [rbp-0x30]
- mov rsi, r12
+ mov rsi, r13
mov rdx, r14
xor rcx, rcx
mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.XmlObjectSerializer:WriteObjectHandleExceptions(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.DataContractResolver):this
call [rax]System.Runtime.Serialization.XmlObjectSerializer:WriteObjectHandleExceptions(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.DataContractResolver):this
- mov rdi, gword ptr [rbp-0x40]
+ mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlDictionaryAsyncCheckWriter:Flush():this
call [rax]System.Xml.XmlDictionaryAsyncCheckWriter:Flush():this
mov rdi, rbx
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.IO.MemoryStream:set_Position(long):this
call [rax]System.IO.MemoryStream:set_Position(long):this
mov rdi, 0xD1FFAB1E ; System.IO.StreamReader
call CORINFO_HELP_NEWSFAST
mov r14, rax
- mov rdx, r13
+ mov rdx, gword ptr [rbp-0x60]
mov rdi, r14
mov rsi, rbx
mov ecx, 1
mov r8d, 0x400
xor r9d, r9d
mov rax, 0xD1FFAB1E ; code for System.IO.StreamReader:.ctor(System.IO.Stream,System.Text.Encoding,ubyte,int,ubyte):this
call [rax]System.IO.StreamReader:.ctor(System.IO.Stream,System.Text.Encoding,ubyte,int,ubyte):this
mov rdi, r14
mov rax, 0xD1FFAB1E ; code for System.IO.StreamReader:ReadToEnd():System.String:this
call [rax]System.IO.StreamReader:ReadToEnd():System.String:this
mov rsi, rax
mov rdi, gword ptr [r15+0x08]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
+ ;; size=216 bbWeight=1 PerfScore 38.25
+G_M13414_IG23:
call [rax+0x28]System.Xml.XmlWriter:WriteValue(System.String):this
nop
- ;; size=225 bbWeight=1 PerfScore 43.75
-G_M13414_IG23:
- add rsp, 136
+ ;; size=4 bbWeight=1 PerfScore 3.25
+G_M13414_IG24:
+ add rsp, 88
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 4.25
+ ;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 1141, prolog size 25, PerfScore 197.88, instruction count 258, allocated bytes for code 1141 (MethodHash=f677cb99) for method System.Runtime.Serialization.Json.JsonXmlDataContract:WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.RuntimeTypeHandle):this (FullOpts)
+; Total bytes of code 1018, prolog size 22, PerfScore 182.88, instruction count 244, allocated bytes for code 1018 (MethodHash=f677cb99) for method System.Runtime.Serialization.Json.JsonXmlDataContract:WriteJsonValueCore(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson,System.RuntimeTypeHandle):this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/825774cb9810560e4fbbd18dfdd6b6a0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 19 minutes 52 seconds.
dotnet/runtime#108579
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: